C--大作业图书管理系统实验报告
C大作业图书管理系统实验报告
![C大作业图书管理系统实验报告](https://img.taocdn.com/s3/m/de5a3ea48e9951e79b8927fe.png)
附件1:学号:00126《面向对象程序设计》大作业题目学生成绩管理系统学院文法学院专业教育学班级教育学1201姓名杨欣指导教师鄢红国2013 年12 月20 日目录一设计目的 (1)二大作业的内容 (2)三大作业的要求与数据 (3)四大作业应完成的工作 (4)五总体设计(包含几大功能模块) (5)六详细设计(各功能模块的具体实现算法——流程图) (6)七调试分析(包含各模块的测试用例,及测试结果) (7)八总结 (8)十参考资料 (9)一大作业的目的《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。
更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。
二大作业的内容对图书信息(包括编号、书名、总入库数量、当前库存量、已借出本数等)进行管理,包括图书信息的输入、输出、查询、删除、排序、统计、退出.将图书的信息进行记录,信息内容包含:(1)图书的编号(2)图书的书名(3)图书的库存量。
假设,现收集到了一个图书馆的所有图书信息,要求用C语言编写一个简单的图书管理系统,可进行录入、查询、修改和浏览等功能。
学习相关开发工具和应用软件,熟悉系统建设过程。
三大作业的要求与数据1、用C语言实现系统;2、对图书信息(包括编号、书名、总入库数量、当前库存量、已借出本数)进行管理,包括图书信息的输入、输出、查询、删除、排序、统计、退出.3、图书信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能:(1) 每一条记录包括一本图书的编号、书名、库存量(2) 图书信息录入功能:(图书信息用文件保存,可以一次完成若干条记录的输入。
)(3) 图书信息显示浏览功能:完成全部图书记录的显示。
(4) 查询功能:完成按书名查找图书记录,并显示。
c图书管理系统实验报告
![c图书管理系统实验报告](https://img.taocdn.com/s3/m/d465227182c4bb4cf7ec4afe04a1b0717ed5b35f.png)
c图书管理系统实验报告C图书管理系统实验报告摘要:本实验报告通过对C图书管理系统的设计、实现和测试,展示了该系统的功能和性能。
实验结果表明,C图书管理系统具有良好的稳定性和高效性,能够满足图书管理的需求。
1. 引言图书管理系统是一个用于管理图书信息、借阅记录和读者信息的软件系统。
随着图书馆规模的扩大和信息化的发展,图书管理系统的重要性日益凸显。
C图书管理系统是一个基于C语言开发的图书管理软件,具有良好的稳定性和高效性。
2. 设计与实现C图书管理系统的设计和实现主要包括以下几个方面:(1)数据库设计:设计图书信息、读者信息和借阅记录等数据库表结构,确保数据存储的有效性和完整性。
(2)功能实现:实现图书信息的录入、查询和修改功能,实现读者信息的管理和借阅记录的管理功能。
(3)界面设计:设计用户友好的界面,方便用户进行操作和查询。
3. 功能测试在实验中,我们对C图书管理系统进行了功能测试,主要包括以下几个方面:(1)图书信息管理:测试图书信息的录入、查询和修改功能,确保信息的准确性和完整性。
(2)读者信息管理:测试读者信息的录入、查询和修改功能,确保信息的准确性和完整性。
(3)借阅记录管理:测试借阅记录的录入、查询和修改功能,确保记录的准确性和完整性。
4. 性能测试在实验中,我们对C图书管理系统进行了性能测试,主要包括以下几个方面:(1)系统稳定性:测试系统在长时间运行中是否会出现崩溃或卡顿现象,确保系统的稳定性。
(2)响应速度:测试系统在查询和操作时的响应速度,确保系统的高效性。
5. 实验结果经过功能测试和性能测试,我们得出了以下实验结果:(1)C图书管理系统具有良好的稳定性,长时间运行中未出现崩溃或卡顿现象。
(2)C图书管理系统具有较快的响应速度,在查询和操作时能够快速响应用户的需求。
6. 结论C图书管理系统在设计、实现和测试中表现出良好的功能和性能,能够满足图书管理的需求。
通过本实验报告的展示,我们相信C图书管理系统将会成为图书馆管理的重要工具,为图书馆的信息化建设提供有力支持。
C语言图书管理系统实验报告
![C语言图书管理系统实验报告](https://img.taocdn.com/s3/m/b8e3051dbc64783e0912a21614791711cc797924.png)
程序设计实践信息类 1110开辟一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)(1)图书信息录入功能(图书信息用文件保存)--输入(2)图书信息浏览功能--输出(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):①按书名查询②按作者名查询③ 按照价钱排序④按出版时间排序等等(4)图书信息的删除与修改(1)简单的权限处理 (2)报表打印功能(3)甚至根据自己情况,可以加之学生信息,并扩充为图书借阅系统。
(4) 含糊查询 (5)综合查询 (6)统计功能比如统计处某一类别的图书信息或者筛选出小于指定数量库存的图书信息等等,总之,可以根据自己需求进行分析功能。
一、提交材料应包括: (1)系统源代码 (2)课程报告二、整个设计过程具体要求(1要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;(2要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)(3要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;(4按照要求完成系统设计和实现报告,并进行总结、答辩。
1 需求分析这是一个能简单管理图书的小型图书管理系统,其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。
通过这些信息使之提供以下功能:(1)图书信息创建功能。
其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。
(图书信息用文件保存)。
(2)图书信息查看功能。
用来查看各项图书信息。
(3)图书信息查找功能。
通过已知信息来查找想要的图书。
(4)图书信息的删除。
可以删除特定图书。
(5)图书信息的修改。
可以修改图书的各项信息。
(6)图书信息的排序功能。
按图书信息对录入的图书进行排序。
(7)菜单选择功能,此功能也是图书信息信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能2 概要设计图书管理系统中主要的数据结构包含书名、图书书号、作者名、分类、出版社、出版时间、价格等;在处理过程中各项可以作为一本图书的不同属性来进行处理。
c语言图书管理系统实践报告
![c语言图书管理系统实践报告](https://img.taocdn.com/s3/m/f2038f8c9ec3d5bbfd0a7455.png)
北京师大学分校C程序设计实践报告题目:图书管理系统学院信息技术学院专业计算机科学与技术学生姓名龙海恩,少彬,鑫,麦淑玲指导教师姓名肖红玉指导教师单位信息技术学院2013 年 4 月11 日1、题目与要求编写一个图书管理系统,除了书上的功能之外,还要能做到读者借书还书,查看书籍排行榜,看到书籍的借阅记录和分类状况。
2、系统总体设计(要给出必要的文字说明及图示)本报告中蓝色字体为我们小组新增的图书信息。
2.1功能需求分析(明确系统的功能需求)(1)用户登录(2)系统主控平台(3)新增图书信息处理(4)浏览图书信息处理(5)查询图书信息处理(6)删除图书信息(7)保存图书信息处理(8)普通用户借书信息处理(9)普通用户还书信息处理(10)普通用户可查看已借书籍(11)查看排行榜(12)新增用户信息(13)查找用户(14)查看所有用户(15)保存用户信息(16)退出2.2系统功能模块划分(要给出系统功能模块图)(1)登录系统(2)增加图书信息(3)浏览图书信息(4)查找图书信息((1))按书名查找((2))按作者查找((3))按出版社查找((4))按出版日期查找((5))按ISBN查找((6))按图书类型查找(5)删除图书信息保存图书信息(6)图书排行榜(7)新增用户信息(8)查找用户信息(9)更新用户信息(10)删除用户信息(11)保存用户信息(12)退出系统((1))管理员退出系统((2))普通用户退出系统3、详细设计本系统包括图书信息管理和用户管理两大面,程序有三大模块,有三个源程序文件(management.c、book.c、user.c)和三个头文件(management.h、book.h、user.h)。
其中book.c完成的是图书信息的管理,包括新增图书、浏览图书、查询图书、删除图书、保存图书功能。
user.c完成的是用户信息的管理,包括新增用户、用户查询、保存用户等功能。
management.c完成的是用户登录,用户退出等功能。
C++大作业 图书管理系统 实验报告
![C++大作业 图书管理系统 实验报告](https://img.taocdn.com/s3/m/1691eb25453610661ed9f4ba.png)
附件1:学号:0121213640126《面向对象程序设计》大作业题目学生成绩管理系统学院文法学院专业教育学班级教育学1201姓名杨欣指导教师鄢红国2013 年12 月20 日目录一设计目的 (1)二大作业的内容 (2)三大作业的要求与数据 (3)四大作业应完成的工作 (4)五总体设计(包含几大功能模块) (5)六详细设计(各功能模块的具体实现算法——流程图) (6)七调试分析(包含各模块的测试用例,及测试结果) (7)八总结 (8)十参考资料 (9)一大作业的目的《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。
更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。
二大作业的内容对图书信息(包括编号、书名、总入库数量、当前库存量、已借出本数等)进行管理,包括图书信息的输入、输出、查询、删除、排序、统计、退出.将图书的信息进行记录,信息内容包含:(1)图书的编号(2)图书的书名(3)图书的库存量。
假设,现收集到了一个图书馆的所有图书信息,要求用C语言编写一个简单的图书管理系统,可进行录入、查询、修改和浏览等功能。
学习相关开发工具和应用软件,熟悉系统建设过程。
三大作业的要求与数据1、用C语言实现系统;2、对图书信息(包括编号、书名、总入库数量、当前库存量、已借出本数)进行管理,包括图书信息的输入、输出、查询、删除、排序、统计、退出.3、图书信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能:(1) 每一条记录包括一本图书的编号、书名、库存量(2) 图书信息录入功能:(图书信息用文件保存,可以一次完成若干条记录的输入。
)(3) 图书信息显示浏览功能:完成全部图书记录的显示。
(4) 查询功能:完成按书名查找图书记录,并显示。
C语言程序设计--图书管理系统--实训报告
![C语言程序设计--图书管理系统--实训报告](https://img.taocdn.com/s3/m/5494f59c51e79b89680226e2.png)
目录1 前言 (2)2 系统需求分析 (3)2.1 问题定义 (3)2.2 需求分析 (3)3 系统设计 (3)3.1 系统总体设计 (3)3.2 功能模块设计 (4)4 系统实现 (10)4.1 系统硬件环境 (10)4.2 系统软件环境 (10)4.3 开发工具 (10)4.4 系统详细设计与实现 (10)4.4.1 系统菜单设计 (10)4.4.2 数据结构设计 (13)4.4.3 系统功能模块 (14)5 主要技术 (27)6 系统测试 (27)6.1 测试用例设计 (27)6.2 测试结果分析 (27)实训体会 (28)1 前言近年来,随着图书馆规模的不断扩大,图书数量也相应的增加,有关图书的各种信息量也成倍增加,面对庞大的信息量,传统的人工管理方式会导致图书管理上的混乱,人力与物力过多浪费,图书管理费用的增加,从而使图书馆的负担过重,影响整个图书馆的运作和控制管理,因此,必须制定一套合理、有效、规范和实用的图书管理系统,对图书资料进行集中统一管理。
另一方面IT产业和Internet获得了飞速发展,计算机应用已渗透到了各个领域,引起信息管理革命,实现信息的自动化处理,提高了处理的及时性和正确性。
图书馆里工作面对大量的可模块化处理的信息,是当今信息革命的一个重要阵地。
图书管理系统采用现代化的信息管理方式代替手工管理方式,提高图书管理工作效率,做到信息的规范管理,科学统计和快速查询,让图书馆更好的为学校,社会服务。
2 系统需求分析2.1 问题定义此图书管理系统用于增加、删除图书,管理借阅者信息,方便检索书籍,及查找借阅者信息,适用于图书管理员使用。
2.2 需求分析本图书管理系统的主要功能包括如下:一图书管理:新书入库、删除图书;二借阅管理:借阅图书、归还图书;三查找管理:按书号查找、按书名查找、按作者查找;四信息管理:查看借阅者借阅的全部图书、查看全部超期未还的图书。
3 系统设计3.1 系统总体设计3.2 功能模块设计一 新书入库模块新书入库模块由函数Buy(ook &boo, char BuyNum[])来实现,形参为:初始化的包括书号、书名、作者、总库存量、现库存量的结构体和一个书号。
C语言程序设计大作业--图书管理系统
![C语言程序设计大作业--图书管理系统](https://img.taocdn.com/s3/m/928efacb58fb770bf68a55aa.png)
C语言程序设计大作业设计报告一.设计方案本程序旨在用一个C语言程序实现简单的图书馆图书管理系统,程序包含平时的借书,还书,新书录入,查询功能,用简单明了的人机交互界面快速实现图书管理的目的。
二.模块说明及代码分析1.主函数:源代码:void main(){int a;printf("\n");printf("\n");printf(" ( ^_^ ) WELCOME!\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\t〉〉-------------BJTU图书管理系统--------------〈〈");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");do {printf("1.借书 2.还书 3.新书录入4.查询 0.退出");printf("\n");printf("\n");printf("\n");printf("\n");printf("请选择序号:");scanf("%d",&a);switch(a){case 1:jieshu();break;case 2:huanshu();break;case 3:xinshu();break;case 4:chaxun();break;case 0:break;default:printf("请选择正确的序号!\n");printf("\n");}}while(a!=0);printf("谢谢使用图书管理系统!\n");}主函数提供人机交互界面,让操作者选择所需的操作项目,并有退出选项。
C语言—图书管理系统设计实践报告
![C语言—图书管理系统设计实践报告](https://img.taocdn.com/s3/m/72943674168884868762d69f.png)
工程实践1项目报告设计题目C语言图书管理系统学生姓名杨伟学号2013051243所在学院计算机学院年级班级13级6班指导教师李莉丽2014年 6 月成都信息工程学院计算机学院目录1 问题描述 (1)2 开发环境 (1)3 功能分析 (1)4 项目设计 (1)4.1 程序结构设计 (1)4.2 数据结构设计 (2)4.3 主要算法 (3)5 程序运行及调试 (6)6 总结 (12)7 主要源代码 (13)参考文献 (58)1问题描述图书管理系统作为一个应用软件将为学校的老师和学生提供一个与学校图书馆图书以及个人信息进行交互的平台。
根据系统界面的提示信息,操作者就可以对图书信息进行查询,借阅,还书,登陆个人账户则可以个人账户信息,管理员通过登陆管理员账户可以整理和修改书籍和学生信息。
2开发环境visual C++ 6.03功能分析角色1: 管理员序号功能描述备注1书籍借阅——2 书籍归还账户状态有提示3 查询书籍信息能按书名、作者、编号查找4 修改账户密码——5 修改学生数据仅管理员有此权限6 修改图书数据仅管理员有此权限7 查询账户状态会提示还书角色2: 学生序号功能描述备注1书籍借阅——2 书籍归还账户状态有提示3 查询书籍信息能按书名、作者、编号查找4 修改账户密码——7 查询账户状态会提示还书4项目设计4.1 程序结构设计4.2 数据结构设计程序中用到的特殊数据结构(非标准C 的基本数据类型)。
存储学生数据的结构体: typedef struct information借书 基本信息 借阅状态 还书 查询账户 普通账户 进入退出系 统 管理员 作者 编号全部显示书名 查询书籍修改密码 修改账户 图书信息 学生信息修改数据库 借还书 管理权限{char bookNum[10]; char bookNam[50]; char bookAut[20]; float bookPri; int status;struct information *next; }info;存储图书数据的结构体:typedef struct student {char stuNam[20]; char number[10]; char passKey[20]; int borrowSta; char key;struct student *next; }studentDat;4.3 主要算法(1)查询书籍函数:findBo1 2 3 4 0按编号choise开始choise ?显示所有 按书名 按作者 返回结束(2)登录函数: checkAccYN登录结束输入数据检查账户 有无数据 账号密码帐号、密码开始存入文件(3)更改书籍函数: changeBo1 2 3 4 0(4)删除书籍函数: delBookYN增添书籍choise开始choise ?更改编号 更改状态 删除书籍 返回结束结束继续?编号删除开始存入文件(5)添加书籍信息函数: addBookYN5 程序运行及调试(1)进入系统开始结束 继续?输入书信息排序插入链表 存入文件(2)创建数据(3)主菜单(4)实现的主要功能6总结首先说说系统运用的原理,主要是是图书数据和学生数据的动态存储与调用,通过函数之间的相互调用实现系统各级菜单的层次递进。
C++大型实验报告--图书管理系统
![C++大型实验报告--图书管理系统](https://img.taocdn.com/s3/m/d237c7c60b4c2e3f5627631d.png)
C/C++语言程序设计大型实验报告--图书管理系统浙江工业大学软件学院二零零九年五月目录第一章概述1.1 实验意义1.2 说明1.3 实验内容第二章简单的LMS功能及设计思路2。
1 功能描述2。
1。
1 读者管理模式功能2.1。
2 工作人员管理模式功能2.1。
3 管理员管理模式功能2.2 基本设计思路第三章用户类3.1 用户类的定义3.2 用户的登陆3.3 修改用户信息3。
4 查询图书信息第四章读者管理模式4。
1查看个人信息4。
2查找馆藏图书信息第五章工作人员管理模式5.1查询读者信息(个人信息和读者借书情况)5。
2还书5。
3借书5.4查询图书信息第六章管理员管理模式6.1添加、删除图书信息6.1.1 添加图书信息6。
1.2 删除图书信息6。
2添加、删除用户信息6。
3查询图书信息第七章图书类第八章建立数据库8.1 数据储存文件说明8.2 数据库操作说明第九章主程序结构附:在VC6环境下的测试截图第一章概述1。
1 实验意义本实验通过分析并实现一个简单的系统—-以图书管理系统,让学生从一个参与项目开发的角度全新的体验项目开发的全过程.学生在独立完成一个简单的系统的开发的过程中,不但真正的学到程序设计的实战知识,更为重要的是能够体验开发的乐趣并培养程序开发的兴趣。
选择图书管理系统作为实验的目的是因为图书管理系统学生能经常接触到,对其功能有一定的了解,能够在使用中提出自己的一些需求的系统。
图书管理系统虽然简单,但是随着需求功能的不断增加,开发的难度也不断增加,不仅能满足初学编程的需求,也能让更高年级的学生通过将学到的知识直接用于该系统的开发而巩固和提高编程水平。
1。
2 说明本实验报告分为三个部分,第一部分为概述,介绍图书管理系统的实验基本内容以及对图书管理系统的功能描述,以及基本设计思路;第二部分为具体的类定义及实现的介绍,是本实验报告的重点部分;第三部分为主程序设计部分,包括对数据库的操作以及主程序登录界面的说明。
c图书管理系统实验报告和源代码
![c图书管理系统实验报告和源代码](https://img.taocdn.com/s3/m/b68de3600b4c2e3f572763ed.png)
课程名称:程序设计综合实训设计题目:图书管理系统姓名:学号:专业班级:指导老师:完成日期:1 设计任务设计目的运用所学知识,完成图书馆管理系统,通过实践加强对所学知识的理解和巩固设计内容建立图书馆管理系统,用户分为图书管理人员,读者。
管理人员可以增加删除查看图书、读者。
读者只能查看自身信息,和借还书设计指标或者要求管理人员可以访问任意图书和读者,而读者只能借还图书馆存在的图书和查看自己的信息。
2 设计过程分析:由于管理系统用户有图书管理员和读者,但两者的权限不同,管理员有权访问所有图书信息和管理员信息,而读者只能访问所有图书信息和自身的信息。
所以他们的相同点:都能访问所有图书信息不同点:管理员能访问所有读者信息而管理员只能访问自身信息而不能访问其它读者信息;故此设计了三个类程序包含三个类:图书类(books),管理员类(manager),读者类reader,books类为抽象类,manager,和reader类为books类的派生类。
为了能让管理员和读者访问所有图书信息,所有都继承了books类;而为了分出两者的权限的不同,所以把所有读者的信息做为一个链表作为管理员的一个私有成员,而读者却只能放一个自身节点作为读者的私有成员,然后分别设计各个类的成员函数。
程序功能Class booksorrow_books_name<<" "<<"书的编号:"<<r->reader_borrow_book[i].borrow_books_no;}break;}else r=r->next;}if(!r)cout<<"没有此人"<<endl;}manager::print_readers(){readers_node printL;printL=new readers_node;printL=rroot->next;while(printL){cout<<"姓名编号借书总数"<<endl;cout<<printL->reader_name<<" "<<printL->reader_no<<" "<<printL->reader_borrow_num<<endl;for(int i=0;i<printL->reader_borrow_num;i++){cout<<"书名:"<<printL->reader_borrow_book[i].borrow_books_name<<" "<<"书的编号:"<<printL->reader_borrow_book[i].borrow_books_no;}printL=printL->next;}delete printL;}reader::reader(readers_node*node) {(personnel)==new readers_node;personnel=node;}reader::add_book(){books_node*node;node=new books_node;node=broot->next;char returned[15];cout<<"输入要还书的名子:";cin>>returned;for(int i=0;i=personnel->reader_borrow_num;i++){if((strcmp(returned,personnel->reader_borrow_book[i].borrow_books_name))== 0)break;}if(i==personnel->reader_borrow_num+1){printf("不好意思,你没有此书");system("pause");}else{while(node){if((strcmp(node->book_name,returned)==0))break;else node=node->next;}if(node){personnel->reader_borrow_num--;node->borrow_num--;savebooks();}else cout<<"对不起,没有你要还的书或者所还书被删除"<<endl;}}reader::delet_book(){if(personnel->readerborrow_num<max){books_node*node;node=new books_node;node=broot->next;char borrowed[15];cout<<"输入要借书的名子:";cin>>borrowed;while(node){if((strcmp(node->book_name,borrowed)==0))break;else node=node->next;}if(node&&(node->total_num-node->borrow_num)>0){strcpy(personnel->reader_borrow_book[personnel->reader_borrow_num].borrow_ books_name,node->book_name);strcpy(personel->reader_borrow_book[personnel->reader_borrw_num++].borrow_ books_no,node->book_num);node->borrow_num++;savebooks();}else cout<<"对不起,没有你要借的书或者所要借的书已经借完!"<<endl;}else cout<<"对不起,你借书的数量已经超过最大借数量"<<endl;}reader::print_me(){cout<<"姓名"<<personnel->reader_name<<" 编号:"<<personnel->reader_no<<" 借书总数:"<<personnel->reader_borrow_num<<endl;for(int i=0;i<personnel->reader_borrow_num;i++){printf("书名:%s,书的编号:%s",personnel->reader_borrow_book[i].borrow_books_name,personnel->reader_bo rrow_book[i].borrow_books_no)}}void Pause(){getch();fflush(stdin);}reader::reader_borrow(){delet_book();}reader::reader_return(){add_book();}reader::save_readers(readers_node *L) {readers_node *root;root=new readers_node;root=L->next;ofstream outFile;("c:\\",ios::binary);while(root){((char)root,sizeof(readers_node));root=root->next;}();}readers_node* read_readers(){readers_node *r;r=new readers_node;r->next=NULL;int flag=0;ifstream inFile;("c:\\",ios::binary);if()==-1){cout<<"con't open "<<endl;return r;}else{while(1){flag++;readers_node *node;node=new readers_node;((char*)node,sizeof(readers_node));if()) break;node->next=r->next;r->next=node;}if(flag<2){cout<<"暂无读者 "<<endl; return r;}elsereturn r;}}password(){system("cls");char a[]="111111",b[10],c;int n=0,k;cerr<<"\n\n\n\n\t\t\t请输入密码,你将拥有3次机会:\n";while(1){k=0;cout<<"\t\t\t输入密码:";while(1){c=getch();if(c==13)break;b[k]=c;k++;cerr<<"*";}b[k]='\0';cout<<"\n";if(n>2){printf("你已经超过输入次数,系统将退出\n");getch();}if(strcmp(a,b)==0)break;else cout<<"密码错误,请重新输入\n";cerr<<"\n";}}void manager_menu_1(manager M){int N;while(1){cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";cout<<"┃图书管图书管理系统┃\n";cout<<"┃菜单┃\n";cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n";cout<<"┃①增加图书┃\n";cout<<"┃②.删除图书┃\n";cout<<"┃③.查找图书┃\n";cout<<"┃④.输出所有┃\n";cout<<"┃退出请按0 ┃\n";cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";cout<<"请输入您的选择(0--4):( )\b\b";cin>>N;switch (N){case 1: ();getch();break;case 2: ();getch();break;case 3: ();getch();break;case 4: ();getch();break;case 0: return;}system("cls");}}void manager_menu_2(manager M){int N;while(1){cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";cout<<"┃图书管图书管理系统┃\n";cout<<"┃菜单┃\n";cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n";cout<<"┃①增加读者┃\n";cout<<"┃②删除读者┃\n";cout<<"┃③查找读者┃\n";cout<<"┃④输出所有┃\n";cout<<"┃退出请按0 ┃\n";cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";cout<<"请输入您的选择(0--4):( )\b\b";cin>>N;switch (N)case 1: ();getch();break;case 2: ();getch();break;case 3: ();getch();break;case 4: ();getch();break;case 0: return;}system("cls");}}void manager_menu(readers_node*L){system("cls");password();manager manager(L);int N;{cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";cout<<"┃图书管图书管理系统┃\n";cout<<"┃菜单┃\n";cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n";cout<<"┃①图书维护┃\n";cout<<"┃②读者维护┃\n";cout<<"┃退出请按0 ┃\n";cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";cout<<"请输入您的选择(0--2):( )\b\b";cin>>N;switch (N){case 1: system("cls"); manager_menu_1(Manager); break;case 2: system("cls"); manager_menu_2(Manager);break;case 0: return;}system("cls");}}reader_menu(readers_node*L){char name[15];cout<<"输入用户名:";cin>>name;readers_node* node;node=new readers_node;node=L->next;while(node){if((strcmp(nome,node->reader_name))==0)break;elsenode=node->next;}if(node){reader Reader(node);int N;while(1){cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";cout<<"┃图书管图书管理系统┃\n";cout<<"┃菜单┃\n";cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n";cout<<"┃①借书┃\n";cout<<"┃②还书┃\n";cout<<"┃③查找书┃\n";cout<<"┃④.输出所有┃\n";cout<<"┃⑤自身信息┃\n";cout<<"┃退出请按0 ┃\n";cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";cout<<"请输入您的选择(0--5):( )\b\b";cin>>N;switch (N){case 1: system("cls") ;();(L);break;case 2: system("cls"); ();(L);break;case 3: system("cls");();system("pls");break;case 4: system("cls");();getch();break;case 5: system("cls");(); Pause();break;case 0: return;}system("cls");}}else{printf("没有这个用户!按任意键继续");getch();return;}}main(){readers_node* Reader_root;Reader_root=new readers_node;Reader_root=read_readers();int N;while(1){ system("cls");cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";cout<<"┃图书管图书管理系统┃\n";cout<<"┃菜单┃\n";cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n";cout<<"┃①图书管理员┃\n";cout<<"┃②.读者┃\n";cout<<"┃推出请按0 ┃\n";cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";cout<<"请输入您的选择(0--2):( )\b\b";cin>>N;switch (N){case 1: manager_menu(Reader_root);break;case 2: reader_menu(Reader_root);break;case 0:exit(0);break;}}}}。
C语言图书管理系统实验报告完整版
![C语言图书管理系统实验报告完整版](https://img.taocdn.com/s3/m/81a299a1910ef12d2af9e785.png)
C语言图书管理系统实验报告HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】课程报告课程名称:程序设计实践专业班级:信息类1110 学生姓名:学号:任课教师:学期:20101-2012学年第二学期课程报告任务书成绩评定教师:1 需求分析这是一个能简单管理图书的小型图书管理系统,其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。
通过这些信息使之提供以下功能:(1)图书信息创建功能。
其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。
(图书信息用文件保存)。
(2)图书信息查看功能。
用来查看各项图书信息。
(3)图书信息查找功能。
通过已知信息来查找想要的图书。
(4)图书信息的删除。
可以删除特定图书。
(5)图书信息的修改。
可以修改图书的各项信息。
(6)图书信息的排序功能。
按图书信息对录入的图书进行排序。
(7)菜单选择功能,此功能也是图书信息信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能2 概要设计⑴数据结构图书管理系统中主要的数据结构包含书名、图书书号、作者名、分类、出版社、出版时间、价格等;在处理过程中各项可以作为一本图书的不同属性来进行处理。
菜单函数的原型:void menu()函数的功能:调用菜单,使用各项功能 程序: void menu(){printf("\n\n*******************************<图书信息管理系统>*******************************\n");printf("-------------------------------------主菜单------------------------------------- \n");printf("\t\t\t <1;创建图书信息 > \n");printf("\t\t\t <2;查找图书信息 > \n");printf("\t\t\t <3;删除图书信息 > \n");printf("\t\t\t <4;修改图书信息 > \n");printf("\t\t\t <5;显示图书信息 > \n");printf("\t\t\t <6;按出版时间排序> \n");printf("\t\t\t <0;退出 > \n");printf("-------------------------------------------------------------------------------- \n");}2.新建文件函数的原型:int ReadinfoFromFile()函数的功能:建立文件储存数据程序int ReadinfoFromFile() f",&p->price);fscanf(fp,"%d",&p->type);if(p->type==1){if(head==NULL){head=p;p->next=NULL;}else{p->next=head;head=p;}}else{if(head_==NULL){head_=p;p->next=NULL;}else{p->next=head_;head_=p;}}}fclose(fp);return 0;}3.创建图书信息函数的原型:int chuangjian()函数的功能:记录图书的各项信息程序:int chuangjian() 找图书信息函数的原型:void chazhao()函数的功能:通过书名查找、作者查找、组合查找三种方式查找图书信息。
图书管理系统C语言程序设计实验报告
![图书管理系统C语言程序设计实验报告](https://img.taocdn.com/s3/m/e663008a70fe910ef12d2af90242a8956becaa45.png)
books[i].price=f;
i++;
flushall();
printf("is Continue(y/n)?:");
scanf("%c",&isCon);
}
printf("\n --%d种图书信息输入完毕!--\n",i);
printf("\n按任意键返回主菜单!");
{
FILE*fp;
int i;
char filename[40];
//clrscr();
printf("\n input SAVE filename=");
scanf("%s",filename);
if ( (fp=fopen(filename, "w")) == NULL)
{
printf("\n %s file NOT open! press any key exit system.");
printf("\n input READ filename=");
scanf("%s",filename);
if ( (fp=fopen(filename, "r")) == NULL)
{
printf("\n %s file NOT open! press any key exit system.");
〔2〕执行编译操作,并根据提示调试此程序,排除所有的错误和警告。直到编译成功为止。
〔3〕执行运行操作,逐一对每个模块进行调试,直到全部程序运行成功为止。
c语言图书管理系统实验报告
![c语言图书管理系统实验报告](https://img.taocdn.com/s3/m/4c0523bcf605cc1755270722192e453611665b46.png)
c语言图书管理系统实验报告《C语言图书管理系统实验报告》摘要:本实验报告旨在介绍C语言图书管理系统的设计与实现过程。
通过对图书管理系统的需求分析、系统设计、程序编码以及系统测试等环节的详细介绍,展示了C语言图书管理系统的完整实现过程。
通过本次实验,我们深入理解了C语言在实际项目中的应用,同时也提升了我们的编程能力和系统设计能力。
一、引言图书管理系统是一种常见的信息管理系统,它能够方便图书馆工作人员对图书进行分类、存储、借阅等管理操作,也能够为读者提供快捷的图书查询和借阅服务。
本次实验旨在使用C语言设计并实现一个简单的图书管理系统,通过这一实践项目,我们将学习到C语言在实际项目中的应用,同时也能够提升我们的编程能力和系统设计能力。
二、需求分析在设计图书管理系统之前,我们首先需要对系统的需求进行分析。
在本次实验中,我们将设计一个简单的图书管理系统,系统需要具备以下功能:1. 图书信息的录入:包括图书的名称、作者、出版社、出版日期等信息;2. 图书信息的修改与删除:允许管理员对系统中已有的图书信息进行修改和删除操作;3. 图书信息的查询:允许管理员和读者通过关键字查询图书信息;4. 图书的借阅和归还:允许读者进行图书的借阅和归还操作;5. 用户权限管理:系统需要具备管理员和读者两种角色,管理员具有对图书信息进行增删改查的权限,读者只具有查询和借阅权限。
三、系统设计在需求分析的基础上,我们进行了系统设计。
我们将系统设计分为以下几个模块:1. 图书信息管理模块:包括图书信息的录入、修改、删除和查询功能;2. 用户管理模块:包括用户登录、权限管理等功能;3. 借阅管理模块:包括图书的借阅和归还功能;4. 界面设计:设计系统的用户界面,使用户能够方便地进行操作。
四、程序编码在系统设计完成后,我们开始进行程序编码。
我们使用C语言进行程序编码,使用文件操作实现数据的读写和存储,使用结构体和指针等数据结构进行数据的组织和管理。
c语言图书管理系统实验报告
![c语言图书管理系统实验报告](https://img.taocdn.com/s3/m/086711fdc67da26925c52cc58bd63186bceb92b2.png)
c语言图书管理系统实验报告C语言图书管理系统实验报告引言:图书管理系统是现代图书馆必备的管理工具,它通过计算机技术的应用,实现了图书的借阅、归还、查询等功能,提高了图书馆的管理效率。
本实验旨在通过使用C语言编写一个简单的图书管理系统,掌握C语言的基本语法和数据结构的应用。
一、系统需求分析在开始编写图书管理系统之前,我们首先需要明确系统的需求。
根据实际情况,我们确定了以下几个主要功能模块:1. 图书信息管理:包括图书的录入、修改、删除等操作。
2. 学生信息管理:包括学生的注册、借书、还书等操作。
3. 借阅记录管理:记录学生借阅图书的时间、归还时间等信息。
4. 查询功能:可以根据图书名称、作者、学生姓名等信息进行查询。
二、系统设计与实现1. 数据结构设计:为了实现图书管理系统的各项功能,我们需要定义一些数据结构,如图书信息结构体、学生信息结构体、借阅记录结构体等。
通过定义这些结构体,我们可以方便地对图书信息、学生信息进行管理和操作。
2. 主菜单设计:系统启动后,会显示一个主菜单,用户可以通过输入相应的数字选择不同的功能模块。
我们使用switch语句来实现主菜单的功能选择,确保用户可以根据自己的需求进行操作。
3. 功能实现:根据需求分析中确定的功能模块,我们逐一实现了相应的功能。
例如,对于图书信息管理模块,我们实现了图书的录入、修改、删除等功能。
对于学生信息管理模块,我们实现了学生的注册、借书、还书等功能。
通过合理的函数设计和调用,我们保证了系统的正常运行。
三、系统测试与优化在完成系统的设计与实现后,我们进行了一系列的测试。
通过输入不同的数据,测试系统的各项功能是否正常运行。
我们发现了一些问题,如输入错误时系统的错误提示不够友好、系统的响应速度较慢等。
为了解决这些问题,我们进行了相应的优化。
通过增加错误提示信息、优化算法等方式,提高了系统的用户体验。
四、总结与展望通过本次实验,我们掌握了C语言的基本语法和数据结构的应用。
图书管理系统 C语言实训报告 -
![图书管理系统 C语言实训报告 -](https://img.taocdn.com/s3/m/2b19adf4770bf78a65295448.png)
基础编程能力实训报告题目: 图书管理系统专业年级:计算机科学与技术2013级姓名:学号:2014年06月20日1 实训题目与要求1.1 问题描述此系统可以完成对书籍信息的输入、删除、修改、排序等功能,提高图书管理效率,对图书进行合理规划与安排。
1.2 功能要求程序输出主菜单(如下),提示用户选择操作表1 主菜单在主菜单中选择1,要求输入图书信息,包括书本序号,书本名字,作者名字,书的价格;在主菜单中选择2,可查询已输入的图书信息;在主菜单中选择3,可通过查找书本的序号,来选择所要删除的图书信息;在主菜单中选择4,对已输入的图书信息,按照图书序号进行排序;在主菜单中选择5,显示图书信息;在主菜单中选择6,可通过查找书本的序号,来选择所要修改的图书,并对图书进行修改;在主菜单中选择7,建立一个名为asd.txt的文件,并将图书信息录入;在主菜单中选择8,退出图书管理系统。
2 图书管理系统的设计与功能实现2.1图1 系统模块图输入模块完成用户从界面输入图书的信息的功能;查询书籍信息模块完成用户从界面输入查询条件,在系统查询符合条件的图书信息,并在界面上显示的功能;删除书本信息模块完成用户从界面输入需要的图书序号,并将其从系统中删除的功能;书本信息排序模块完成对书本信息的排序的功能;显示书籍信息模块完成显示书本信息的功能;修改书籍信息模块完成用户从界面输入,在系统中查询定位,并将修改过的信息数据保存入系统的功能;录入图书信息模块完成用户从界面输入需要导入的文件路径名称,将信息输入系统的功能;2.2 数据结构在程序中,定义了如下结构体:typedef struct{int num;char Bname[50];char Wname[50];float score;}Book;其中Book.num是存储书本序号信息,Book.Bname存储书本名字信息,Book.Wname是存储书本作者名信息,Book.score存储书本价格信息。
c图书管理系统实验报告
![c图书管理系统实验报告](https://img.taocdn.com/s3/m/1b5c234002d8ce2f0066f5335a8102d277a26146.png)
c图书管理系统实验报告C图书管理系统实验报告一、引言随着科技的不断发展,图书管理系统的应用越来越广泛。
C图书管理系统是一种基于C语言开发的软件,旨在帮助图书馆更好地管理图书资源,提高图书馆服务的效率和质量。
本实验报告将介绍C图书管理系统的设计与实现过程,以及实验结果与分析。
二、系统设计与实现1. 系统需求分析在设计C图书管理系统之前,我们首先进行了系统需求分析。
通过与图书馆管理员的沟通和调研,我们了解到他们最关心的问题是图书的分类、借还管理和读者信息的管理。
因此,我们确定了系统的主要功能模块:图书管理、借还管理和读者管理。
2. 系统架构设计基于系统需求分析的结果,我们设计了C图书管理系统的架构。
系统采用了三层架构,包括表示层、业务逻辑层和数据访问层。
表示层负责与用户交互,接收用户的输入和显示系统的输出;业务逻辑层负责处理用户的请求,进行相应的业务逻辑处理;数据访问层负责与数据库进行交互,实现数据的增删改查操作。
3. 数据库设计为了存储图书信息、读者信息和借还记录等数据,我们设计了一个简单的关系型数据库。
数据库包括三个表:图书表、读者表和借还记录表。
图书表用于存储图书的基本信息,包括书名、作者、出版社等;读者表用于存储读者的基本信息,包括姓名、性别、年龄等;借还记录表用于存储图书的借还记录,包括借书日期、还书日期等。
4. 系统实现在系统实现过程中,我们采用了C语言作为开发语言,并使用了MySQL作为数据库管理系统。
通过使用C语言提供的文件操作和数据库访问接口,我们成功地实现了C图书管理系统的各个功能模块。
用户可以通过系统界面进行图书的查询、借阅和归还操作,同时系统也提供了管理员的登录和权限管理功能。
三、实验结果与分析1. 功能测试在完成系统实现后,我们对C图书管理系统进行了功能测试。
测试结果表明,系统能够正常地实现图书的查询、借阅和归还功能,读者信息的管理以及管理员的登录和权限管理功能。
系统的操作界面简洁明了,用户友好性较好。
c语言实现图书管理系统实训报告
![c语言实现图书管理系统实训报告](https://img.taocdn.com/s3/m/954ce125d5bbfd0a78567375.png)
c语言实现图书管理系统实训报告实训课程设计报告题目:图书信息管理系统学院:信息学院系别:电子系年级:2012级专业:电子信息科学与技术组长:**组员:******指导老师:***2014年1月1日目录题目简介图书管理系统,本系统能具体化、合理化的管理图书馆中的图书信息、图书流通信息,用结构化的思维方式去了解图书馆的运做。
本次实训,要求我们用C语言来完成一个简单的系统,实现一些简单的功能,我们组在讨论之后,决定使用老师给的参考题目——图书管理系统,因为我们对这个流程比较熟悉,并且更清楚使用者的需求,我们将在这个方面发挥得更好。
由于时间以及我们所掌握的知识有限,我们决定只实现由管理员登陆来管理图书信息功能的系统,包括新书信息的录入,浏览,查询,修改和删除的功能,同时,在第一界面处,有管理员身份认证,防止信息被恶意篡改或删除。
小组分工情况:姓名学号分工** 2012080321082 编程及测试*** 2012080321081 需求分析、测试、后期文档完成*** 2012080321064 系统设计、辅助编程、测试需求分析1. 编写目的对于有一定规模的图书馆来说,存书数量大,存书的标识信息更大,而且图书馆也需要对读者及其管理员的信息作记录,以及读者借阅,归还图书的情况,这些汇总起来信息量非常大,如果采用手工管理,效率低,易出错,统计工作量大。
鉴于这种情况,一个操作方便,简单实用的图书信息管理系统的开发就成为必要。
2. 项目实施背景出于我们的学术水平的限制,我们不可能完成功能全面,实用性强的系统程序,在短期内就更不用说了,所以我们的编程定位是实现一些最基础的的功能。
主要是实现对图书馆中各种信息的管理,使得图书信息存储及时,检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高图书馆管理的效率,也是图书馆正规化管理的重要途径,故设计此系统。
购到书录入书查询书借出或查看库存修改书删除书书发生变化,例如借出,丢失,损坏5. 系统运行环境系统可以在MicrosoftVisualC++6.0软件运行,硬件基本无要求,现在的计算机基本可以运行该系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
附件1:《面向对象程序设计》大作业题学专班姓目院业级名学生成绩管理系统文法学院教育学教育学1201杨欣指导教师鄢红国2013 年12 月20 日学号:0121213640126目录一二三四五六七八十设计目的 (1)大作业的内容 (2)大作业的要求与数据 (3)大作业应完成的工作 (4)总体设计(包含几大功能模块) (5)详细设计(各功能模块的具体实现算法——流程图) (6)调试分析(包含各模块的测试用例,及测试结果) (7)总结 (8)参考资料 (9)一二大作业的目的《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。
更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。
大作业的内容对图书信息(包括编号、书名、总入库数量、当前库存量、已借出本数等)进行管理,包括图书信息的输入、输出、查询、删除、排序、统计、退出.将图书的信息进行记录,信息内容包含:(1)图书的编号(2)图书的书名(3)图书的库存量。
假设,现收集到了一个图书馆的所有图书信息,要求用C语言编写一个简单的图书管理系统,可进行录入、查询、修改和浏览等功能。
学习相关开发工具和应用软件,熟悉系统建设过程。
三大作业的要求与数据1、用C语言实现系统;2、对图书信息(包括编号、书名、总入库数量、当前库存量、已借出本数)进行管理,包括图书信息的输入、输出、查询、删除、排序、统计、退出.3、图书信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够完成以下功能:(1)每一条记录包括一本图书的编号、书名、库存量(2)图书信息录入功能:(图书信息用文件保存,可以一次完成若干条记录的输入。
)(3)图书信息显示浏览功能:完成全部图书记录的显示。
(4)查询功能:完成按书名查找图书记录,并显示。
(5)图书信息的删除:按编号进行图书某图书的库存量.(6)借书登记系统:可以输入读者编号和所借书号来借书。
(7)还书管理系统:可以输入读者编号和所借书号来还书。
(8)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!四大作业应完成的工作(1)编写算法;(2)算法测试,并有具体的测试结果和结果分析;(3)撰写大作业报告。
内容包括:1)封面扉页2)设计任务书3)目录4)总体设计方案(包括流程图)5)使用说明及运行实例(包括界面)6)成员设计内容简介7)项目源程序代码(注意注释的使用)8)指导教师评语五总体设计(包含几大功能模块)1、新书入库模块;2、查询模块;3、借阅管理模块;4、借书登记模块;5、还书管理模块;6、输出信息模块;7、退出系统模块;六详细设计(各功能模块的具体实现算法——流程图)6.1各函数的功能和实现1、新书入库模块:形参分别为:书名, 书号,以及有多少本书要入库,再根据要求将信息写入文件boot.dat中。
又由于最开始要输入三本新书,故可以加一个初始化函数init_book(),但是初始化函数只执行一次,也就是在系统第一次运行的时候执行,此时可以根据判断是否存在boot.dat这个文件来决定是否执行初始化函数。
开始根据数量修改库存Yif(还有新书)Y已存在此新书N结束Nbook.dat 中增加此新 书,根据数量设置库存2、查询模块:可用一个函数 void find_book(char book_num[])来实现。
找到就输出此书 全部信息,找不到就输出查找失败信息。
3、成绩查询功能开始书号是否存在此书NY部信息不存在NY结束是否继续查询3、借阅管理模块:用初始化函数 init_reader()来实现对读者的初始化。
因为读者初始化函数输入新书名、新书号和新书数量输入要查询的 输入此书的全 输入信息:此书也只是在系统第一次运行的时候执行一次,故也可以根据是否存在 reader.dat 文件来确定是否执行此函数。
(到现在可以发现在系统初始化函数里,至少已经 需要调用两个初始化函数了) 4、借书登记模块:可用一个函数 borrow_book(char reader_num[],char book_num[])来实现。
在函数中要分别判断A 该读者的编号是否已经存在,如果不存在,则提示错误。
B 该读者的借阅书是否已满(即最多只能借 1 本书)如果是,则提醒该用 户先去还书C 输出的书号对应的书是否存在,如果不存在,则提醒读者不存在此书。
借书过程完成后,则对读者信息里的借书信息写上所借书号,并修改库存 量。
YNN是否存在编号是否重输 信息否满Y借书卡是否满Y是否还书N借书NY书号模块书号存在否N结束YN借书登记,修改 book.dat 中的现存信息,reader.dat 还有读者借书中的借书卡信息Y5、还书管理模块:输入读者编号输出出错 提示不能 进入还书 输入需要借的可用一个函数return_book(char reader_num[],char book_num[])来实现。
在实现此函数时要判断:A该读者的姓名是否已经存在,如果不存在,则提示错误。
B该读者是否已经借阅此书。
如果没有,则提示错误。
C还书过程完成后,则对读者信息里的借书信息清零,并修改库存量。
开始YN是否存在编号是否重输信息否满Y的编号核对书号错误是否重输N正确还书将读者信息借书卡清0修改book.dat现存信息模块N还有读者还书Y结束6、输出信息模块:可分别用模块print_book()和print_reader()来实现直接从book.dat文件和reader.dat文件中读取信息并输出。
选择输出图书还是读者信息图书图书输入读者编号输出出错进入查询输入还书的书输出全部读者信息结束7、退出系统模块:可用一个函数 exit()来实现。
首先将信息保存到文件,释放动态创建的内存 空间,再退出此程序。
如图 6.1七调试分析(包含各模块的测试用例,及测试结果)7.1 源程序#include <stdio.h> #include <math.h> #include <string.h> typedef struct bk { char book_num[11]; char book_name[41]; int book_kc; int book_xc;struct bk * next;}book; /* 图书信息*/ typedef struct rd { char reader_num[11]; char reader_name[11];char reader_book_num[11]; struct rd * next ;}reader;/*读者信息*/struct bk * h_book,* h_reader; /*全局变量,分别为指向图书信息链表和读 者信息链表的头指针*/新书 入库 图书 查询 借书 登记 还书 登记输出 图书 信息 输出 读者 信息退出 系统图书管理系统void Form_Insert_New_Book(); /*新书入库菜单*/void Form_Find_Book(); /*查询图书菜单 */void Form_Borrow_Book();/*借书菜单*/void Form_Return_Book();/*还书菜单*/void Find_Book(char *); /*查询图书*/void Insert_New_Book(char *,char * ,int ); /*新书入库,即在链表中插入一个新节点*/void Borrow_Book(char *,char *);/*借书,修改读者借阅信息和图书的现存信息*/void Return_Book(char *,char *);/*还书,修改读者借阅信息和图书的现存信息*/void print_book(struct bk*);/*输出全部图书信息*/void print_reader(struct rd *);/*输出全部读者信息*/void load_data();/*从文件中读取数据,链表头指针指向第一个节点*/void init_reader();/*第一次运行程序时对三个读者的初始化*/void init_book();/*第一次运行程序时对三本图书的初始化*/void save();/*将链表中的信息保存到文件中*/void M_Form()/*主菜单*/{ char ch;printf("\n图书管理系统主窗口");printf("\n 0:退出系统");printf("\n 1:新书入库");printf("\n 2:图书查询");printf("\n 3:借书登记");printf("\n 4:还书管理");printf("\n 5:输出全部信息");do{ /*此循环用来保证选择正确的数字键执行相应的功能*/printf("\n\n请选择相应的功能代码:");scanf("%c",&ch);fflush(stdin);/*用于清除键盘缓冲区中的多余字符*/ }while(ch!='0'&&ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'&&ch!='5');switch(ch)/*根据输入的字符进行选择执行相应的模块*/{ case '0':exit(0);case '1':Form_Insert_New_Book();break;case '2':Form_Find_Book();break;case '3':Form_Borrow_Book();break;case '4':Form_Return_Book();break;case'5':load_data();print_book(h_book);print_reader(h_reader);M_Form();default:printf("error\n");exit(0);}}void Form_Find_Book(){ char ch;char book_num[11];printf("\n\n");图书查询功能模块,请选择相应的功能代码:printf(" 0:返回到主菜单\n");printf(" 1:图书查询");do{printf("\n\nscanf("%c",&ch);fflush(stdin);}while(ch!='0'&&ch!='1');请选择相应的功能代码:");switch(ch){ case '0':M_Form();break; /*选择0,则返回到上一级目录,即主菜单*/case '1':{ printf(" \n请输入需要需要查询的书的编号:");scanf("%s",book_num);fflush(stdin);Find_Book(book_num); /*执行查询*/Form_Find_Book();/*查询完毕后继续返回到查询窗口,执行下一个查询*/}default:printf("error\n");exit(0);}}void Find_Book(char book_num[]) /*查询图书模块,根据图书编号查询*/ { struct bk*p;p=h_book;while(p!=NULL&&strcmp(p->book_num,book_num)!=0)p=p->next;/*此循环用于查找,如果在中间找到,则p就不可能到末尾指向空*/if(p==NULL)printf("\n\t此编号对应的图书不存在!\n");else { printf("\n\t图书编号\t图书名\t库存量\t现存量\n");printf(" %10s\t %10s\t %d\t %d\t\n",p->book_num,p->book_name,p->book_kc,p->book_xc);}getch();}void init_book() /*初始化图书模块*/{ book ba[3];FILE *fp;int i;printf("\n printf("\n ");系统即将进行初始化,图书初始化模块:\n");请分别输入三本书的书号,书名,数量(以空格隔开):\nfor(i=0;i<3;i++)/*输入3本图书进行初始化*/scanf("%s%s%d",ba[i].book_num,ba[i].book_name,&ba[i].book_kc);for(i=0;i<3;i++){ba[i].book_xc=ba[i].book_kc;} /*开始时库存=现存*/ if((fp=fopen("book.dat","wb"))==NULL)/*建立新文件book.dat准备写入数据*/{ printf("不能建立图书文件,初始化失败!请重新启动系统!\n"); return; }for(i=0;i<3;i++)/*将初始化的3本图书写入文件book.dat中*/{ if(fwrite(&ba[i],sizeof(struct bk),1,fp)!=1){ printf("\写数据错误!\n"); exit(0); }}fclose(fp);}void init(){ int drive=DETECT,mode=0;initgraph(&drive,&mode,"");init_book();init_reader();}void Insert_New_Book(char book_num[],char book_name[],int number)/*增加1本新书,读入新书的名称、编号和数量*/{ struct bk*book_fp;struct bk*p,*q,*t;q=p=h_book;while(p!=NULL&&strcmp(p->book_num,book_num)!=0){q=p;p=p->next;}if(strcmp(p->book_num,book_num)==0){ printf("\n\t\t此编号已经存在,请重新输入!\n");return;}t=(struct bk*)malloc(sizeof(struct bk));strcpy(t->book_num,book_num);strcpy(t->book_name,book_name);t->book_kc=t->book_xc=number;q->next=t;t->next=NULL;if((book_fp=fopen("book.dat","ab"))==NULL){ printf("不能建立图书文件,初始化失败!请重新启动系统!\n"); return; }/*将新书信息添加到文件中*/fwrite(t,sizeof(struct bk),1,book_fp);fclose(book_fp);}void print_book(struct bk*h)/*输出图书信息*/{ struct bk*p;p=h;printf("\n\t图书编号\t图书名\t库存量\t现存量\n");while(p!=NULL){ printf(" %10s\t %10s %10d\t%10d\n",p->book_num,p->book_name,p->book_kc,p->book_xc);p=p->next;}}void print_reader(struct rd *h)/*输出读者信息*/{ struct rd*p;p=h;printf("\n\t读者编号\t读者姓名\t所借书号\n");while(p!=NULL){ printf(" %10s\t %10s %10s\n",p->reader_num,p->reader_name,p->reader_book_num);p=p->next;}getch();}void Form_Borrow_Book()/*借书菜单界面*/{ char ch;char book_num[11],reader_num[11];图书借阅功能模块,请选择相应的功能代码:printf("\n\n");printf(" 0:返回到主菜单\n");printf(" 1:图书借阅\n");do{请选择相应的功能代码:");printf("\n\nscanf("%c",&ch);fflush(stdin);}while(ch!='0'&&ch!='1');switch(ch){ case '0':M_Form();break;case '1':{ printf(" \n请输入读者编号与所借书编号:(以空格分隔)");scanf("%s%s",reader_num,book_num);fflush(stdin);Borrow_Book(reader_num,book_num);/*调用借书函数,执行借书功能*/Form_Borrow_Book();/*借书完成后,程序返回到借书菜单*/ }default:printf("error\n");exit(0);}}void Borrow_Book(char reader_num[],char book_num[])/*输入读者编号,和需要借阅的书的编号,执行借书功能*/{ struct bk *book_p;struct rd*reader_p;book_p=h_book;while(book_p!=NULL&&strcmp(book_p->book_num,book_num)!=0) book_p=book_p->next;if(book_p==NULL){ printf("\n\t此编号对应的图书不存在!\n");Form_Borrow_Book();}reader_p=h_reader;while(reader_p!=NULL&&(strcmp(reader_p->reader_num,reader_num)!=0)) reader_p=reader_p->next;if(reader_p==NULL){ printf("\n\t此编号对应的读者不存在!\n");Form_Borrow_Book();}else if(strcmp(reader_p->reader_book_num,"0")!=0){ printf("\n\t已达到最大借阅数,不能再借书!\n");Form_Borrow_Book();}else {book_p->book_xc=book_p->book_xc-1;/*借书完成后,修改现存量*/strcpy(reader_p->reader_book_num,book_p->book_num);/*修改读者的借阅信息*/save();/*将修改后的信息保存到文件中*/load_data();/*读入新文件中的数据*/}Form_Borrow_Book();/*程序执行完毕后,返回到借书菜单界面*/}void Form_Return_Book()/*还书菜单*/{ char ch;char book_num[11],reader_num[11];归还图书功能模块,请选择相应的功能代码:printf("\n\n");printf(" 0:返回到主菜单\n");printf(" 1:归还图书\n");do{请选择相应的功能代码:");printf("\n\nscanf("%c",&ch);fflush(stdin);}while(ch!='0'&&ch!='1');switch(ch){ case '0':M_Form();break;case '1':{ printf(" \n请输入读者编号与所还书编号:(以空格分隔)");scanf("%s%s",reader_num,book_num);fflush(stdin);Return_Book(reader_num,book_num);/*调用还书函数*/Form_Return_Book();}default:printf("error\n");exit(0);}}void Return_Book(char reader_num[],char book_num[])/*输入读者编号和所还书编号执行还书*/{ struct bk *book_p;struct rd*reader_p;book_p=h_book;while(book_p!=NULL&&strcmp(book_p->book_num,book_num)!=0) book_p=book_p->next;if(book_p==NULL){ printf("\n\t此编号对应的图书不存在!\n");Form_Return_Book();}reader_p=h_reader;while(reader_p!=NULL&&(strcmp(reader_p->reader_num,reader_num)!=0)) reader_p=reader_p->next;if(reader_p==NULL){ printf("\n\t此编号对应的读者不存在!\n");Form_Return_Book();}else if(strcmp(reader_p->reader_book_num,book_num)!=0){ printf("\n\t读者没有借阅此书\n");Form_Return_Book();}else {book_p->book_xc=book_p->book_xc+1;/*还书后,修改图书库存量*/strcpy(reader_p->reader_book_num,"0");/*还书后,修改读者借阅信息*/ save();/*保存到文件*/load_data();/*读入文件中的数据*/}Form_Return_Book();}void init_reader()/*系统第一次运行时,初始化3位读者信息,从键盘读入*/ { FILE *fp;reader ra[3];int i;printf("\n printf("\n ");系统即将进行读者初始化:\n");请分别输入三位读者的编号和姓名(以空格隔开):\nfor(i=0;i<3;i++)scanf("%s%s",ra[i].reader_num,ra[i].reader_name);for(i=0;i<3;i++)strcpy(ra[i].reader_book_num,"0");if((fp=fopen("reader.dat","wb"))==NULL){ printf("不能建立读者文件,初始化失败!请重新启动系统!\n"); return; }for(i=0;i<3;i++)/*将3位读者信息写入文件*/{ if(fwrite(&ra[i],sizeof(struct rd),1,fp)!=1){ printf("\写数据错误!\n"); exit(0); }}}void Form_Insert_New_Book()/*添加新书菜单*/{ char ch;struct bk t;printf("\n\n");新书入库功能模块,请选择相应的功能代码:printf(" 0:返回到主菜单\n");printf(" 1:新书入库");do{printf("\n\nscanf("%c",&ch);fflush(stdin);请选择相应的功能代码:");}while(ch!='0'&&ch!='1'&&ch!='2'&&ch!='3'&&ch!='4'&&ch!='5'); switch(ch){ case '0':M_Form();break;case '1':{ printf(" \n请按顺序输入新书的编号、名称、数量(以空格隔开):");scanf("%s%s%d",t.book_num,t.book_name,&t.book_kc);fflush(stdin);Insert_New_Book(t.book_num,t.book_name,t.book_kc);Form_Insert_New_Book();}default:printf("error\n");exit(0);}}void load_data()/*从文件book.dat和文件reader.dat中读取数据到内存*//*将读取的数据存放到2个链表中*/{ struct bk*book_p1,*book_p2,*book_p3;struct rd*reader_p1,*reader_p2,*reader_p3;FILE *fp_book,*fp_reader;fp_book=fopen("book.dat","rb");book_p1=(struct bk*)malloc(sizeof(struct bk));fread(book_p1,sizeof(struct bk),1,fp_book);h_book=book_p3=book_p2=book_p1;while(! feof(fp_book)){ book_p1=(struct bk *)malloc(sizeof(struct bk));fread(book_p1,sizeof(struct bk),1,fp_book);book_p2->next=book_p1;book_p3=book_p2;book_p2=book_p1;}book_p3->next=NULL;free(book_p1);fclose(fp_book);fp_reader=fopen("reader.dat","rb");reader_p1=(struct rd *)malloc(sizeof(struct rd));fread(reader_p1,sizeof(struct rd),1,fp_reader);h_reader=reader_p3=reader_p2=reader_p1;while(! feof(fp_reader)){ reader_p1=(struct rd *)malloc(sizeof(struct rd));fread(reader_p1,sizeof(struct rd),1,fp_reader);reader_p2->next=reader_p1;reader_p3=reader_p2;reader_p2=reader_p1;}reader_p3->next=NULL;free(reader_p1);fclose(fp_reader);}void save()/*将链表中的数据保存到内存中*/{ FILE *book_fp,*reader_fp;struct bk *book_p;struct rd*reader_p;book_p=h_book;reader_p=h_reader;if((book_fp=fopen("book.dat","wb"))==NULL){ printf("不能建立图书文件,初始化失败!请重新启动系统!\n"); return; }while(book_p!=NULL){ if(fwrite(book_p,sizeof(struct bk),1,book_fp)!=1){ printf("\写数据错误!\n"); exit(0); }book_p=book_p->next;}fclose(book_fp);if((reader_fp=fopen("reader.dat","wb"))==NULL){ printf("不能建立图书文件,初始化失败!请重新启动系统!\n"); return; }while(reader_p!=NULL){ if(fwrite(reader_p,sizeof(struct rd),1,reader_fp)!=1) { printf("\写数据错误!\n"); exit(0); }reader_p=reader_p->next;}fclose(reader_fp);}main(){ FILE * fp;struct bk temp;clrscr();h_book=NULL;h_reader=NULL;if((fp=fopen("book.dat","r"))==NULL)init();/*第1次运行系统时的初始化*/fclose(fp);load_data();/*从文件中读入数据*/M_Form();/*显示主菜单*/save();/*保存内存中的数据(即链表中的数据)到文件*/getch();}7.2.1算法调试、测试过程中出现的问题及解决方法本系统调试过程中遇到问题、原因和解决方法如下:(1)程序在储存图书信息时只能一次存入,并且读取。