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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 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)程序在储存图书信息时只能一次存入,并且读取。