C大作业图书管理系统实验报告
c图书管理系统实验报告
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语言图书管理系统实验报告
程序设计实践信息类 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 概要设计图书管理系统中主要的数据结构包含书名、图书书号、作者名、分类、出版社、出版时间、价格等;在处理过程中各项可以作为一本图书的不同属性来进行处理。
图书管理系统 实验报告
需求分析、本图书管理系统就是将传统图书馆业务的手工操作转变成由计算机馆理,即图书馆的图书期刊、音像资料等各种载体文献的采编、典藏、流通、检索及常规业务管理等工作,利用计算机技术,使得图书馆的管理更智能、更有效的进行,最终的目的以方便图书借阅者方便借阅及管理者高效、方便管理为目的。
1、图书馆管理系统需求,通过调查,要求系统需要有以下功能:⑴ 由于操作人员的计算机知识普遍较差,要求有良好的人机界面;⑵ 由于该系统的使用对象多,要求有较好的权限管理;⑶ 原始数据修改简单方便,支持多条件修改⑷ 方便的数据查询,支持多条件查询;⑸ 在相应的权限下,删除数据方便简单,数据稳定性好;⑹ 数据计算自动完成,尽量减少人工干预;2、开发环境本系统的设计是在Windows 2003以上中文版操作系统环境下,用C#语言实现功能,使用Microsoft Visual Studio 2010平台下开发设计的。
数据库是使用SQL server 2000中文版,它是基于客户机/服务器体系结构的多线程、高性能的数据库管理系统。
由于它具有对数据集中进行管理,保证数据的安全性和完整性,可以优化系统性能,支持开放性等优点,在各个行业中都得到了广泛的应用。
3、系统设计目标系统功能依据用户需求而设计,主要包括信息管理对象的特征、事物流程的内容和数据流量,根据用户需求和方便用户使用的原则确定相应的功能模块。
本系统为学校的图书馆信息而设计,实现信息处理的自动化、规范化,主要用于处理图书日常借阅和还书、图书入库、各种查询操作,系统具有以下功能。
1)图书借阅处理2)图书与读者信息查询与修改、删除3)图书入库与图书的信息修改、删除4)员工信息的修改、删除4、系统功能设计要求系统实现图书馆日常管理事务最主要的功能,包括图书的借出于还回,图书信息的录入、修改和查询,读者信息的录入、修改和查询,员工信息的录入、修改和查询。
实现这些基本功能,组建了图书管理系统的基本框架,根据功能的关联关系和集中分组的原则,将系统细化的结构图。
C++大作业 图书管理系统 实验报告
附件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) 查询功能:完成按书名查找图书记录,并显示。
图书管理信息系统实训报告范文(通用8篇)
图书管理信息系统实训报告图书管理信息系统实训报告范文(通用8篇)在经济发展迅速的今天,报告有着举足轻重的地位,不同种类的报告具有不同的用途。
一起来参考报告是怎么写的吧,下面是小编精心整理的图书管理信息系统实训报告范文(通用8篇),仅供参考,大家一起来看看吧。
图书管理信息系统实训报告1图书室是校园文化建设的主阵地之一,围绕建设书香校园的目标,在学校领导的重视下,文新小学多年来一直努力营造书香校园氛围,建设适合学校发展,符合师生需求的图书室,开展丰富的读书活动,图书室努力为学生成长,教师发展提供服务。
根据区图书工作要求,现自查如下:一、制度建设图书室各项管理制度《图书室工作人员守则》、《书刊借阅制度》、《书刊赔偿制度》、《图书剔旧、报废规定》上墙,摆放在明显的位置,供师生学习。
二、人员配备图书管理人员配备为兼职1人。
三、台账记录1.图书室每年新购图书生均2册以上,能及时在财产本上登记图书入库情况,记录规范、清楚。
2.目前,图书全部输入电脑,用专业的蓝博图书管理系统进行信息化管理,使图书管理更规范、更科学。
新书到库后,能按“中图法”分类、编目、排架。
书柜及图书摆放整洁有序,方便师生查找借阅。
3.图书室总藏书量28454册,生均28.7册。
四、卫生情况阅览室、书库清洁、书架、期刊架、图书及期刊摆放整洁有序。
图书室一周一打扫,保持清洁,理想中的图书室希望能做到一尘不染。
因此,有时间我就经常打扫,尽可能保持干净,晴天多开窗通风。
五、消防配备阅览室工配有四个消防灭火器,严格管理灭火器材,并按要求在指定地点存放。
由学校安保处定期检查其有效性,及时更换。
六、新书存放新书能及时上架、分类摆放,书柜及图书整洁有序。
七、图书借阅1.图书流通方式多样按照书刊借阅制度,图书借阅大多按班级集体通过电脑借阅,一般各班每两周借一次,一次借2—4种书,同学间可以交换阅读,这样借一次书,读得快的每位学生可以读2—4本图书,大大提高了学生的阅读量。
图书管理系统实验报告范文(精选5篇)
图书管理系统实验报告图书管理系统实验报告范文(精选5篇)随着人们自身素质提升,报告有着举足轻重的地位,不同的报告内容同样也是不同的。
其实写报告并没有想象中那么难,下面是小编整理的图书管理系统实验报告范文(精选5篇),欢迎大家借鉴与参考,希望对大家有所帮助。
图书管理系统实验报告1一学期来我担任图书管理员工作,以前总以为图书室的工作只是简单的“借借还还”,其实他是一种学术性、技术性、创造性极强的工作,同时也是一种复杂、细致而繁琐的体脑结合的艰苦工作。
需要耐心、细致、周到的服务态度。
一、重视学习,不断提高自身业务素质。
图书室的工作看似简单的"借借还还",但却是一种学术性、技术性、创造性很强的的工作,同时也是一种复杂、细致而繁琐的、体脑结合的艰苦工作,既需要有耐心、细致、周到的服务态度,也需要有良好的专业水平。
所以,我除了勤奋踏实地工作外,平时还不断地注重提高自身素质,包括政治素质和业务素质,业务技能得到大大的提高。
二、充分发挥图书室的教育教学服务功能。
科学管理是图书室工作的手段,而图书室的服务工作是它的最终目的。
图书室服务的实质是“为人找书”、“为书找人”,为将图书收室藏的各种书刊推荐给最需要的教师和学生,为尽量发挥藏书的资料作用,图书室对师生实行开放服务,给师生供给更多、更自由地选书机会。
我平时注意倾听师生的意见,在此基础上,针对不一样年级、不一样学科、不一样爱好的教师和学生主动推荐和供给他们最感兴趣的书刊。
这些材料是教师备课、教育科研的良书益友,是他们更新知识、开阔视野的有力助手。
三、每周的读书活动顺利开展。
读书活动是全面提高学生素质的一个极其重要的载体,养成读好书的习惯将对一个人的发展产生终身影响。
由于学生认知水平、个性特点、兴趣爱好的不一样,我们在日常读书活动中,从实际出发,贴近学生的实际,根据其不一样年龄层次、心理特点和理解本事进行分层指导,由浅入深,循序渐进,逐步深化。
c图书管理系统实验报告和源代码
课程名称:程序设计综合实训设计题目:图书管理系统姓名:学号:专业班级:指导老师:完成日期: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;}}}}。
图书管理系统-实验报告
图书管理系统实验报告班级:软件工程0807程序员:赵博聪0726傅钦聪0708成金诚07042009.6报告目录1总体说明..........................................................................................................................................1.1需求说明...............................................................................................................................1.11需求分析.....................................................................................................................1.12系统性能.....................................................................................................................1.2功能介绍...............................................................................................................................登录.............................................................................................................................读者模块.....................................................................................................................工作人员模块.............................................................................................................管理员模块.................................................................................................................1.3设计思路............................................................................................................................... 2数据设计与程序实现:..................................................................................................................2.1数据设计...............................................................................................................................2.2类的作用...............................................................................................................................2.2.1 people类....................................................................................................................2.2.2 reader类.....................................................................................................................2.2.3 workers类..................................................................................................................2.2.4 manger类...................................................................................................................2.2.5 book类.......................................................................................................................2.2.6 DBFile类3数据测试3.1选择登录类型……………………………………………………………………………....4 总结:........................................................................................................... 错误!未定义书签。
图书管理系统 程序实验报告
课程设计报告书图书管理系统程序实践报告1.概述1)程序实践题目:图书管理系统1、具有新进图书基本信息的录入、已有信息的修改、撤销图书信息的删除功能。
2、图书信息的查询(按作者名、专业领域检索,找出某读者的借阅信息、某本书的流通情况等)3、为借书人办理注册。
4、办理借、还书手续5、有关信息保存在文件中。
6、要有信息描述,如图书名称、专业领域、图书编号、单价、作者、出版社、存在状态、借书人姓名、性别、学号等7、借书数量不超过10本。
2)程序实践目的:更深入地理解和掌握课程大一上学期c语言教学中的有关基本概念,运用学过的知识进行实际编程,应用基本技术解决实际问题从而进一步提高分析问题和解决问题的能力。
3)程序实践具体要就:本程序使用codeblocks 软件进行编译;需要灵活运用C语言的链表知识和文件知识;在编程前,我对文件方面的知识尚不了解,同时对如atoi(),Sleep(),等函数不了解。
2.软件需求分析1)软件功能:1.初始化图书链表,学生链表(即清空当前内存中图书信息,学生信息)2.创建新的图书链表,学生链表3.查找图书信息,学生信息4.查看当前图书链表上所有图书的信息,当前学生链表上所有学生的信息5.添加修改删除图书信息6.查看图书借阅信息7.被删除的书先被放在回收站,管理员可以查看回收站,并决定彻底删除图书信息或是恢复已删图书8.学生借书还书9.读取文件上的链表保存链表到文件2)性能需求3)约束条件:本程序代码使用codeblocks编译没有错误出现,并且程序运行良好若使用vc6.0编译,部分函数会报错,具体原因未知其他编程软件没有尝试对内存和硬件要求不高,现有电脑一般都可运行3.总体设计1)设计思路:为方便数据的插入和删除,使用链表俩实现上述基本操作。
为此构建3个数据链表,分别是图书信息链表,学生信息链表,回收站信息链表。
每个链表中的数据部分即为需要表达的基本数据信息。
在功能模块的信息的录入,浏览,查询,删除和修改等操作均由相应的函数来实现,另外提供选择菜单实现功能,以执行相应的功能。
C语言图书管理系统实验报告完整版
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语言程序设计实验报告
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/C++程序设计》指导教师:郭栋梁2016年5月目录1 程序流程图 (4)2 类的设计 (4)Book类 (5)字段 (5)方法 (5)Interface类 (6)&theBookList) (6)sell(vector<Book>&theBookList) (7)manage(vector<Book>&theBookList) (9) (9)ReadDate类 (10)getRowNum() (10)readISBN() (10)saveDate() (10)ManageBook类 (11)addBook() (11)deleteBook() (12)updateBook() (12)searchBook() (15)Sort类 (17)sortAuthor() (17)sortPrice() (17)3 程序操作流程 (18)4 项目测试 (18)图书销售 (19)图书管理 (19)图书统计 (23)5 附录本程序所用到的头文件 (23)6 参考资料 (24)项目名称图书管理系统设计黄为涛(燕山大学信息科学与工程学院)摘要:本系统主要为了实现图书的管理如:增删改查及图书的销售和统计功能。
主要运用了类的设计编程思想进行设计,并且运用动态数组vector和引用类型参数进行成程序的设计,函数的重载。
程序的进行利用交互式利用到if....else,switch,while,for等结构的搭配使用。
利用C++中的IO流进行文件的读写操作,从而实现书数据的读入等功能.在程序设计初期通过UML类图进行类的功能设计,从而通过类之间的一系列关系进行整个程序的搭建1程序流程图2类的设计一共设计了5个类Book类:设计图书的属性及行为Interface类:进行界面的设计及操作交互的重要设计,是本程序的主干框架ReadDate类:主要负责程序启动时读取本地数据,程序结束时保存数据的功能ManageBook类:负责对图书的增,删,改,查.使用时要利用对象Sort类:根据各种数据为图书排序显示接下来将详细介绍这几个类的构成.2.1Book类1.1.1字段设计了author(string),ISBN(string),name(string) ,price(double),pulisher(string),s tock(int)共六个成员数据表示图书的作者,ISBN,名称,价格,出版社,库存1.1.2方法进行了构造函数的重载并且设计了三大类方法,主要包括set 类,get类Show类分别进行对图书的数据的设置,获取,显示2.2Interface类利用字符进行界面的设计和在该界面下的交互并将其方法都设计成static方法,这样可以在没有对象的时候都可以调用,达到使用方便的效果。
图书管理系统实验报告(共10篇)
图书管理系统实验报告(共10篇)图书馆管理系统课程设计报告书图书馆管理系统班级:软件0801班小组成员:刘静蒋玲李辉姚华真日期:2011年1月10日第一章系统概述1.1系统背景当今时代是飞速发展的信息时代。
在各行各业中离不开信息处理,这正是计算机网被广泛应用于管理信息系统的外部环境。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息处理,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
计算机进行信息管理与管理信息系统的开发密切相关,系统的开发是系统管理的前提。
本系统就是为了管理好图书馆信息而设计的。
图书馆作为一种信息资源的集聚地,图书和用户借阅资料繁多,包含很多的信息数据的管理。
本案例的问题定义是:为了减轻新生入学(或新员工入公司)、不断增加、修改图书给图书馆带来的不便而设计的。
图书馆管理系统是办公自动化不可缺少的一部分,是适应现代管理制度要求、推动学生学籍管理走向科学化、规范化的必要条件。
该软件最终的使用者是学校,公司,图书馆管理者,并提供以下的功能: 1. 默认页提供关于图书馆的基本信息;2. 图书馆管理者可以根据读者信息创建读者的帐户;3. 如果读者输入的电子邮件ID 在数据库中已存在,系统将显示错误页;4. 图书馆管理者必须先登录才能在了解图书馆的详细信息和自己的基本信息,并可以对图书进行添加、查找、修改、注销等的操作,还可对读者进行管理与归类;5. 读者必须先登录才能对图书进行借阅、归还、续借等操作。
1.2 可行性研究1.2.1 [技术条件方面的可能性]技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,硬件、软件配置能否满足开发者的需要,各类技术人员的数量,水平,来源等。
图书馆管理系统的工作主要是在读者和图书馆之间架起一座桥梁,能相互沟通信息和处理信息。
所使用的语言是C#和SQL之间连接,这是大家还比较熟悉的内容,可行性绝对可行。
c语言图书管理系统实验报告
c语言图书管理系统实验报告《C语言图书管理系统实验报告》摘要:本实验报告旨在介绍C语言图书管理系统的设计与实现过程。
通过对图书管理系统的需求分析、系统设计、程序编码以及系统测试等环节的详细介绍,展示了C语言图书管理系统的完整实现过程。
通过本次实验,我们深入理解了C语言在实际项目中的应用,同时也提升了我们的编程能力和系统设计能力。
一、引言图书管理系统是一种常见的信息管理系统,它能够方便图书馆工作人员对图书进行分类、存储、借阅等管理操作,也能够为读者提供快捷的图书查询和借阅服务。
本次实验旨在使用C语言设计并实现一个简单的图书管理系统,通过这一实践项目,我们将学习到C语言在实际项目中的应用,同时也能够提升我们的编程能力和系统设计能力。
二、需求分析在设计图书管理系统之前,我们首先需要对系统的需求进行分析。
在本次实验中,我们将设计一个简单的图书管理系统,系统需要具备以下功能:1. 图书信息的录入:包括图书的名称、作者、出版社、出版日期等信息;2. 图书信息的修改与删除:允许管理员对系统中已有的图书信息进行修改和删除操作;3. 图书信息的查询:允许管理员和读者通过关键字查询图书信息;4. 图书的借阅和归还:允许读者进行图书的借阅和归还操作;5. 用户权限管理:系统需要具备管理员和读者两种角色,管理员具有对图书信息进行增删改查的权限,读者只具有查询和借阅权限。
三、系统设计在需求分析的基础上,我们进行了系统设计。
我们将系统设计分为以下几个模块:1. 图书信息管理模块:包括图书信息的录入、修改、删除和查询功能;2. 用户管理模块:包括用户登录、权限管理等功能;3. 借阅管理模块:包括图书的借阅和归还功能;4. 界面设计:设计系统的用户界面,使用户能够方便地进行操作。
四、程序编码在系统设计完成后,我们开始进行程序编码。
我们使用C语言进行程序编码,使用文件操作实现数据的读写和存储,使用结构体和指针等数据结构进行数据的组织和管理。
c语言图书管理系统实验报告
c语言图书管理系统实验报告C语言图书管理系统实验报告引言:图书管理系统是现代图书馆必备的管理工具,它通过计算机技术的应用,实现了图书的借阅、归还、查询等功能,提高了图书馆的管理效率。
本实验旨在通过使用C语言编写一个简单的图书管理系统,掌握C语言的基本语法和数据结构的应用。
一、系统需求分析在开始编写图书管理系统之前,我们首先需要明确系统的需求。
根据实际情况,我们确定了以下几个主要功能模块:1. 图书信息管理:包括图书的录入、修改、删除等操作。
2. 学生信息管理:包括学生的注册、借书、还书等操作。
3. 借阅记录管理:记录学生借阅图书的时间、归还时间等信息。
4. 查询功能:可以根据图书名称、作者、学生姓名等信息进行查询。
二、系统设计与实现1. 数据结构设计:为了实现图书管理系统的各项功能,我们需要定义一些数据结构,如图书信息结构体、学生信息结构体、借阅记录结构体等。
通过定义这些结构体,我们可以方便地对图书信息、学生信息进行管理和操作。
2. 主菜单设计:系统启动后,会显示一个主菜单,用户可以通过输入相应的数字选择不同的功能模块。
我们使用switch语句来实现主菜单的功能选择,确保用户可以根据自己的需求进行操作。
3. 功能实现:根据需求分析中确定的功能模块,我们逐一实现了相应的功能。
例如,对于图书信息管理模块,我们实现了图书的录入、修改、删除等功能。
对于学生信息管理模块,我们实现了学生的注册、借书、还书等功能。
通过合理的函数设计和调用,我们保证了系统的正常运行。
三、系统测试与优化在完成系统的设计与实现后,我们进行了一系列的测试。
通过输入不同的数据,测试系统的各项功能是否正常运行。
我们发现了一些问题,如输入错误时系统的错误提示不够友好、系统的响应速度较慢等。
为了解决这些问题,我们进行了相应的优化。
通过增加错误提示信息、优化算法等方式,提高了系统的用户体验。
四、总结与展望通过本次实验,我们掌握了C语言的基本语法和数据结构的应用。
图书管理系统 C语言实训报告 -
基础编程能力实训报告题目: 图书管理系统专业年级:计算机科学与技术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图书管理系统实验报告C图书管理系统实验报告一、引言随着科技的不断发展,图书管理系统的应用越来越广泛。
C图书管理系统是一种基于C语言开发的软件,旨在帮助图书馆更好地管理图书资源,提高图书馆服务的效率和质量。
本实验报告将介绍C图书管理系统的设计与实现过程,以及实验结果与分析。
二、系统设计与实现1. 系统需求分析在设计C图书管理系统之前,我们首先进行了系统需求分析。
通过与图书馆管理员的沟通和调研,我们了解到他们最关心的问题是图书的分类、借还管理和读者信息的管理。
因此,我们确定了系统的主要功能模块:图书管理、借还管理和读者管理。
2. 系统架构设计基于系统需求分析的结果,我们设计了C图书管理系统的架构。
系统采用了三层架构,包括表示层、业务逻辑层和数据访问层。
表示层负责与用户交互,接收用户的输入和显示系统的输出;业务逻辑层负责处理用户的请求,进行相应的业务逻辑处理;数据访问层负责与数据库进行交互,实现数据的增删改查操作。
3. 数据库设计为了存储图书信息、读者信息和借还记录等数据,我们设计了一个简单的关系型数据库。
数据库包括三个表:图书表、读者表和借还记录表。
图书表用于存储图书的基本信息,包括书名、作者、出版社等;读者表用于存储读者的基本信息,包括姓名、性别、年龄等;借还记录表用于存储图书的借还记录,包括借书日期、还书日期等。
4. 系统实现在系统实现过程中,我们采用了C语言作为开发语言,并使用了MySQL作为数据库管理系统。
通过使用C语言提供的文件操作和数据库访问接口,我们成功地实现了C图书管理系统的各个功能模块。
用户可以通过系统界面进行图书的查询、借阅和归还操作,同时系统也提供了管理员的登录和权限管理功能。
三、实验结果与分析1. 功能测试在完成系统实现后,我们对C图书管理系统进行了功能测试。
测试结果表明,系统能够正常地实现图书的查询、借阅和归还功能,读者信息的管理以及管理员的登录和权限管理功能。
系统的操作界面简洁明了,用户友好性较好。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
附件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) 查询功能:完成按书名查找图书记录,并显示。
(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这个文件来决定是否执行初始化函数。
2、查询模块:可用一个函数void find_book(char book_num[])来实现。
找到就输出此书全部信息,找不到就输出查找失败信息。
3、成绩查询功能3、借阅管理模块:用初始化函数init_reader()来实现对读者的初始化。
因为读者初始化函数也只是在系统第一次运行的时候执行一次,故也可以根据是否存在reader.dat文件来确定是否执行此函数。
(到现在可以发现在系统初始化函数里,至少已经需要调用两个初始化函数了)4、借书登记模块:可用一个函数borrow_book(char reader_num[],char book_num[])来实现。
在函数中要分别判断A 该读者的编号是否已经存在,如果不存在,则提示错误。
B 该读者的借阅书是否已满(即最多只能借1本书)如果是,则提醒该用户先去还书C 输出的书号对应的书是否存在,如果不存在,则提醒读者不存在此书。
借书过程完成后,则对读者信息里的借书信息写上所借书号,并修改库存量。
5、还书管理模块:可用一个函数return_book(char reader_num[],char book_num[])来实现。
在实现此函数时要判断:A 该读者的姓名是否已经存在,如果不存在,则提示错误。
B 该读者是否已经借阅此书。
如果没有,则提示错误。
C 还书过程完成后,则对读者信息里的借书信息清零,并修改库存量。
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\n 请选择相应的功能代码:");scanf("%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 系统即将进行初始化,图书初始化模块:\n");printf("\n 请分别输入三本书的书号,书名,数量(以空格隔开):\n ");for(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\n 请选择相应的功能代码:"); scanf("%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\n 请选择相应的功能代码:"); scanf("%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 系统即将进行读者初始化:\n");printf("\n 请分别输入三位读者的编号和姓名(以空格隔开):\n ");for(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\n 请选择相应的功能代码:");scanf("%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();}本系统调试过程中遇到问题、原因和解决方法如下:(1)程序在储存图书信息时只能一次存入,并且读取。