图书管理系统(含源代码)c语言 数据结构课程设计报告

合集下载

图书管理系统含源代码c语言数据结构课程设计报告

图书管理系统含源代码c语言数据结构课程设计报告

图书管理系统含源代码c语言数据结构课程设计报告数据结构大作业图书管理系统工程管理伍杨目录一、题目要求 (3)二、总体设计 (3)三、编码实现 (4)1) 定义图书结构体 (4)2) 登记操作 (4)3) 查看操作 (9)4) 删除操作 (12)5) Main函数 (22)四、调试与测试 (29)五、五心得体会 (31)六、用户手册 (31)一、题目要求1)目的要求本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成管理系统设计,以及C语言算法的掌握,并能最终实现本系统的功能要求,经过这个程序能够学习到以前调试短程序没有的的经验。

2)题目要求实现图书管理信息系统的设计。

要求实现图书添加、显示全部图书、查询、借阅和归还。

主要考查利用文件的操作!二、总体设计三、编码实现1)定义图书结构体struct book{char bookname[20]; //书名int NO; //书编号char type[20]; //类型int date; //到书日期};struct person{char name[10]; //姓名char classes[20]; //班级int number; //学号char telephone[12]; //联系电话 int NO; //书编号char bookname[20]; //书名int borrowdate; //借书日期int returndate; //还书日期2)登记操作void new_book() //登记新书{FILE *fp;struct book b;int i,j;if((fp=fopen("shuku.txt","a"))==NULL){printf("File open error!\n");exit(0);}printf("请朱老师输入此次收到的书本总数:"); scanf("%d",&i);for(j=0;j<i;j++){printf("请朱老师输入书名:");scanf("%s",b.bookname);fprintf(fp,"%s",b.bookname);printf("请朱老师输入书编号:");scanf("%d",&b.NO);fprintf(fp," %d",b.NO);printf("请朱老师输入类型:");scanf("%s",b.type);fprintf(fp," %s",b.type);printf("请朱老师输入到书日期:");scanf("%d",&b.date);。

c语言课程设计报告图书管理系统

c语言课程设计报告图书管理系统

c语言课程设计报告图书管理系统一、教学目标本课程的目标是使学生掌握C语言的基本语法,熟悉图书管理系统的开发流程,培养学生运用C语言解决实际问题的能力。

具体目标如下:1.知识目标:–掌握C语言的基本语法和数据结构。

–理解图书管理系统的需求和设计原理。

2.技能目标:–能够使用C语言编写简单的程序。

–学会使用C语言实现图书管理系统的功能。

3.情感态度价值观目标:–培养学生的团队协作意识和沟通能力。

–增强学生对计算机科学和编程的兴趣和热情。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构以及图书管理系统的开发。

具体安排如下:1.C语言的基本语法:–变量和数据类型–运算符和表达式–函数和数组–指针和引用2.数据结构:3.图书管理系统的开发:–系统测试和优化三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性。

具体方法如下:1.讲授法:用于讲解C语言的基本语法和数据结构。

2.案例分析法:通过分析具体的图书管理系统案例,使学生更好地理解系统设计和功能实现。

3.实验法:让学生动手编写程序,巩固所学知识,提高实际操作能力。

4.小组讨论法:鼓励学生分组讨论,培养团队协作意识和沟通能力。

四、教学资源本课程所需的教学资源包括:1.教材:《C语言程序设计》2.参考书:《C Primer Plus》、《数据结构与算法分析》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、网络设备以上教学资源将用于支持教学内容和教学方法的实施,丰富学生的学习体验。

五、教学评估本课程的评估方式包括平时表现、作业、考试等。

评估方式应客观、公正,能够全面反映学生的学习成果。

具体安排如下:1.平时表现:包括课堂参与度、提问回答、小组讨论等,占总评的20%。

2.作业:包括编程练习和理论作业,占总评的30%。

3.考试:包括期中和期末考试,占总评的50%。

期中和期末考试将涵盖C语言基本语法、数据结构以及图书管理系统的开发内容。

c语言课程设计报告及源代码图书馆管理系统

c语言课程设计报告及源代码图书馆管理系统

1 设计内容、任务及基本要求 (2)1.1 设计内容 (2)1.2 设计任务 (2)1.3 设计基本要求 (2)2 总体设计思路 (4)2.1 系统功能 (4)2.2 各个模块之间的主要关系 (4)2.3 总体程序框图 (5)2.4 系统的总体流程图 (5)3 功能模块的具体设计 (7)3.1 main() 函数模块 (7)3.2查询所有图书信息函数模块 (8)3.3查询一本图书信息函数模块 (8)3.4添加图书信息函数模块 (9)3.5删除图书信息函数模块 (10)3.6 借阅图书模块 (12)4 功能模块的调试与测试 (13)4.1主菜单运行界面 (13)4.2查询所有图书信息模块运行界面 (13)4.3查找某一本图书信息模块运行界面 (14)4.4 添加图书信息模块运行界面 (16)4.5 删除图书信息模块运行界面 (17)4.6 借阅图书模块信息运行界面 (79)5 总结 (22)6 致谢 (23)7 参考文献 (24)9 程序清单 (25)1.设计内容、任务以及基本要求1.1设计内容主要利用c语言的文件操作能力设计开发一个小型的图书管信息管理系统,至少具有如下功能:查寻所有图书信息、通过输入图书编号来完成查找某一本图书信息、添加图书信息、删除图书信息以及通过学生学号实现图书借阅功能。

操作界面要符合用户的一般习惯,界面易于读者明白理解,图形或文本界面都可以。

1.2设计任务要求:明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。

掌握模块化编程的基本方法与步骤;巩固和加深学生对C语言课程基本知识的理解与掌握,培养学生利用C语言进行软件操作的能力和技巧。

1.3基本要求(1)通过提示菜单选择可以进行的操作。

(2)将图书的信息存入文件中,并命名为BookInfo.txt。

图书管理系统c课程设计报告

图书管理系统c课程设计报告

图书管理系统c 课程设计报告一、教学目标本课程旨在通过学习图书管理系统的设计与实现,使学生掌握数据库的基本操作、编程语言的应用以及软件工程的实践方法。

在知识目标上,学生应理解数据库的概念、结构及其在图书管理中的应用;掌握至少一种编程语言的基本语法和编程技巧;了解软件开发的流程和规范。

技能目标则要求学生能够独立设计简单的图书管理系统数据库;编写程序实现图书的增删改查等操作;运用软件工程的方法完成一个小型的图书管理项目。

情感态度价值观目标强调培养学生对计算机科学的兴趣,增强创新意识和团队协作精神,同时培养学生的信息素养,使其能够合法、合理地使用信息技术。

二、教学内容本课程的教学内容围绕图书管理系统的设计与实现展开,具体包括以下几个部分:1.数据库基础:介绍数据库的基本概念、数据模型以及SQL语言的使用,让学生掌握如何创建、查询和管理数据库。

2.编程语言应用:通过实例教学,使学生熟悉至少一种编程语言(如C语言)的基本语法,培养学生编写程序解决问题的能力。

3.软件工程实践:讲解软件开发的生命周期,包括需求分析、设计、编码、测试和维护等环节,强调编程规范和团队合作的重要性。

4.项目实现:指导学生利用所学知识设计并实现一个简易的图书管理系统,涵盖图书的录入、查询、借阅等功能。

三、教学方法为了提高教学效果,将采用多种教学方法相结合的方式进行授课:1.讲授法:用于传授数据库理论基础、编程语言的基本语法和软件工程的概念。

2.案例分析法:通过分析具体的图书管理案例,使学生理解数据库设计和程序实现的过程。

3.实验法:安排实验室实践环节,让学生动手编写代码,实际操作数据库,加深理解和实践能力。

4.小组讨论法:学生分组完成项目设计,鼓励学生相互讨论、协作解决问题,培养团队精神和沟通能力。

四、教学资源教学资源将包括:1.教材:《数据库原理与应用》、《C程序设计》等,为学生提供理论学习的坚实基础。

2.多媒体资料:包括教学PPT、案例视频等,增强课堂的互动性和趣味性。

c语言课程设计报告 图书管理系统

c语言课程设计报告 图书管理系统

第一章§ 1.1 题目描述图书管理系统设计:【要求】图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。

试设计一图书管理系统,使之能提供以下功能:(1)新图书基本信息的输入;(2)图书基本信息的查询;(3)对撤销图书信息的删除;(4)办理借书手续;(5)办理还书手续;【提示】建立图书馆里信息结构体,结构体成员包括图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号。

存在状态设为整型,可用不同数字代表借还状态。

借书和还书手续要注意修改结构体的成员变量存在状态的值。

§ 1.2 算法设计1.设计思想:在整个系统编写的过程中,涉及了较多 C 语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。

由此进一步加深、巩固了所学的课程的基本理论知识,培养了综合分析问题、解决问题的能力。

在设计程序时,参考了学校图书馆的图书管理系统,实现了程序的模块化、结构化。

在主函数中调用各种函数,操作界面简单,易操作,人机互动性较强。

2.实现注释:这个实用的小型图书管理系统程序以结构体数组指针操作完成,并实现文件信息的录入、修改和保存等功能,所有信息以磁盘文件方式保存,方便用户使用。

本图书管理系统分为管理员和学生两个部分,其基本功能包括了对图书信息的存储、查询、添加、删除和借书、还书手续办理等。

查询时可按书名、编号等方式查询,找到后输出这本书的所有信息。

可查询图书的在库状态,方便用户进行借书、还书操作。

在借书还书成功后图书的在库状态自动改变,并更新信息到数据库。

系统中主要的数据结构就是图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。

在处理过程中各项可以作为一本图书的不同属性来进行处理。

3 •结构体系设计图1.1 :主函数结构;图1.2 :新书信息录入流程;图 1.3 :图书信息查询(管理员)流程;图1.4 :图书信息查询(学生)流程;图 1.5 :图书信息删除流程;图 1.6 :办理借书手续流程;图 1.7 :办理还书手续流程;S1.1囹1.4•管理负功能菜单<圈书信息删除出枪索结果/S1.5>学生功能菜单办理借书手续输出檢索结果一是借书办湮成功<1 ------------------- •辐入个人信息/■图1.6^l.T1.3 程序设计及代码分析1.程序设计:下面,我大致介绍一下我的系统的主要功能和注意事项:当运行此程序时,首先进入系统主界面,然后可以选择[1]. 管理员登陆(密码:123),[2]. 学生登陆,[0]. 退出系统;选择[1] 后进入管理员系统,验证密码成功后显示管理员功能菜单,按数字键选择所需服务。

图书管理系统C语言程序设计实验报告

图书管理系统C语言程序设计实验报告
scanf("%f",&f);
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图书管理系统课程设计报告一、教学目标本课程的教学目标是使学生掌握C图书管理系统的基本概念、设计原理和实现方法。

通过本课程的学习,学生应能够:1.理解C图书管理系统的基本组成部分及其功能;2.掌握C图书管理系统的设计原理和实现方法;3.能够运用C图书管理系统进行图书管理;4.培养学生的信息素养和创新能力。

二、教学内容本课程的教学内容主要包括:1.C图书管理系统的基本概念:介绍C图书管理系统的发展历程、基本功能和应用场景;2.C图书管理系统的设计原理:讲解C图书管理系统的架构设计、模块划分和算法实现;3.C图书管理系统的实现方法:介绍C图书管理系统的开发环境、编程语言和开发工具;4.实践操作:通过案例分析法和实验法,使学生熟练掌握C图书管理系统的操作和使用。

三、教学方法本课程采用多种教学方法相结合的方式,包括:1.讲授法:讲解C图书管理系统的基本概念、设计原理和实现方法;2.案例分析法:分析典型实例,使学生更好地理解C图书管理系统的应用;3.实验法:让学生动手实践,熟练掌握C图书管理系统的操作和使用;4.讨论法:鼓励学生提问、发表见解,培养学生的独立思考能力。

四、教学资源为实现本课程的教学目标,我们将提供以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统、全面的学习资料;2.参考书:推荐相关参考书籍,丰富学生的知识体系;3.多媒体资料:制作课件、演示文稿等多媒体教学资源,提高课堂教学效果;4.实验设备:为学生提供充足的实验设备,确保实验教学的顺利进行。

通过以上教学资源的支持,我们期望学生能够在本课程学习中取得良好的效果。

五、教学评估本课程的教学评估将采取多元化方式进行,以全面、客观、公正地评价学生的学习成果。

评估内容包括:1.平时表现:通过课堂参与、提问、讨论等环节,评估学生的学习态度和积极性;2.作业:布置适量作业,评估学生的理解和应用能力;3.考试:设置期中考试和期末考试,评估学生对课程知识的掌握程度;4.实践操作:通过实验报告和实际操作评估学生的动手能力和创新能力。

图书管理系统(含源代码)c语言_数据结构课程设计报告-推荐下载

图书管理系统(含源代码)c语言_数据结构课程设计报告-推荐下载
二、总体设计
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术通关,1系电过,力管根保线据护敷生高设产中技工资术艺料0不高试仅中卷可资配以料置解试技决卷术吊要是顶求指层,机配对组置电在不气进规设行范备继高进电中行保资空护料载高试与中卷带资问负料题荷试2下卷2,高总而中体且资配可料置保试时障卷,各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并22工且22作尽22下可22都能22可地护以缩1关正小于常故管工障路作高高;中中对资资于料料继试试电卷卷保破连护坏接进范管行围口整,处核或理对者高定对中值某资,些料审异试核常卷与高弯校中扁对资度图料固纸试定,卷盒编工位写况置复进.杂行保设自护备动层与处防装理腐置,跨高尤接中其地资要线料避弯试免曲卷错半调误径试高标方中高案资等,料,编试要5写、卷求重电保技要气护术设设装交备备置底4高调、动。中试电作管资高气,线料中课并敷3试资件且、设卷料中拒管技试试调绝路术验卷试动敷中方技作设包案术,技含以来术线及避槽系免、统不管启必架动要等方高多案中项;资方对料式整试,套卷为启突解动然决过停高程机中中。语高因文中此电资,气料电课试力件卷高中电中管气资壁设料薄备试、进卷接行保口调护不试装严工置等作调问并试题且技,进术合行,理过要利关求用运电管行力线高保敷中护设资装技料置术试做。卷到线技准缆术确敷指灵设导活原。。则对对:于于在调差分试动线过保盒程护处中装,高置当中高不资中同料资电试料压卷试回技卷路术调交问试叉题技时,术,作是应为指采调发用试电金人机属员一隔,变板需压进要器行在组隔事在开前发处掌生理握内;图部同纸故一资障线料时槽、,内设需,备要强制进电造行回厂外路家部须出电同具源时高高切中中断资资习料料题试试电卷卷源试切,验除线报从缆告而敷与采设相用完关高毕技中,术资要资料进料试行,卷检并主查且要和了保检解护测现装处场置理设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《算法与数据结构》课程设计实验报告设计题目:图书管理专业:计算机科学与技术班级:学生姓名:学号:指导教师:2011年7月烟台大学计算机学院一题目要求1 目的要求本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成管理系统设计,以及C语言算法的掌握,并能最终实现本系统的功能要求,通过这个程序可以学习到以前调试短程序没有的的经验。

2、题目要求实现图书管理信息系统的设计。

要求实现图书添加、显示全部图书、查询、借阅和归还。

主要考查利用文件的操作!二总体设计图书数据:书号,书名,图书ID,图书状态,借阅次数1.借书模块:输入图书ID如果存在提示借阅成功,如果没有或已借出提示借阅失败2.还书模块:输入图书ID进行还书操作3.图书管理:对书库中书进行管理新书入库对库存量进行统计和查询4.查询模块:对书库中书进行查询根据图书ID进行查询三编码实现定义图书结构体struct Book{int id;//图书的编号char name[20];//图书名字int type;//图书类型int status;//图书现在状态int count;// 图书借出的次数};定义图书类型typedefstruct Book Book;Book data[Max];int all = 0;// 添加图书类型,用户信息显示charBookTypes[][32] ={"文学","中文社科","自然科学","计算机","报刊/杂志","",};添加图书状态charBookStatus[][32] ={"在架上","已借出","",};图书管理菜单charBookMenu[][32] ={"添加图书","列出图书","查找图书","借书","还书","退出","",};实现程序对文件的读取void Read(){int i=0;int j=0;ifstream in("Libra.txt",ios::out);in>>i;all=i;if(i>0&&i<=Max){for(j=1;j<=i;j++){in>>data[j].id>>data[j].name>>data[j].type>>data[j].status>>data[j].count;}}in.close();}对写入信息进行保存void Save(){int i=0;ofstreamoutfile; //在Libra.txt文件中输入数据outfile.open("Libra.txt",ios::trunc);outfile<<all<<'\n';for(;all>0;all--){i++;outfile<<data[i].id<<'\t';outfile<<data[i].name<<'\t';outfile<<data[i].type<<'\t';outfile<<data[i].status<<'\t';outfile<<data[i].count<<'\n';}cout<<endl<<"你已成功保存数据!"<<endl<<endl;outfile.close();//exit(1);}Main函数int main(){intch = 0,i,loop = 1;while(loop){Read();print_menu(BookMenu);scanf("%d",&ch);if (ch< 1 || ch> 6){printf("\n没有所输选项,请确定所输入选项为1-6中的选项!!\n");printf("\n");}switch(ch){case 1://添加图书信息PutInfor();break;case 2:Read();Printall();break;case 3:system("cls");Read();searchBook();break;case 4:system("cls");Read();Borrow();break;case 5:system("cls");Read();Return();break;case 6:loop=0;break;default:break;}printf("\n-------------------------------分割线----------------------------------\n\n"); }return 0;四调试与测试主菜单生成的文件内信息五心得体会首先,写程序应先确定目标要求,所用平台和工具,不求最好,但求最适合自己。

开始时决定用MFC 但是我对MFC的了解就像它对我的了解一样多,一天之后果断和它说再见,我不想把仅有时间用在学习一门工具上。

其次是代码的编写,最主要的的是编程思想,语言其实不是太重要,思路最重要!在此感谢一下在我卡壳时帮助我的同学和解答的老师,虽然我没问什么,还是要感谢一下!附录:源代码 1此代码为此报告所用代码,有文件操作,运行后会生成一Libra.txt文件#include<windows.h>#include <stdlib.h>#include <process.h>#include<iostream.h>#include<fstream.h>#include<string.h>#include<iomanip.h>#include<stdio.h>#include<conio.h>#define BORROWED 1#define NOBORROW 0#define Max 100void Save();void Read();intBinSearch(int key);//定义图书结构体struct Book{int id;//图书的编号char name[20];//图书名字int type;//图书类型int status;//图书现在状态int count;// 图书借出的次数};// 定义图书类型typedefstruct Book Book;Book data[Max];int all = 0;// 添加图书类型,用户信息显示charBookTypes[][32] ={"文学","中文社科","自然科学","计算机","报刊/杂志","",};// 添加图书状态charBookStatus[][32] ={"在架上","已借出","",};//图书管理菜单charBookMenu[][32] ={"添加图书","列出图书","查找图书","借书","还书","退出","",};//菜单输出voidprint_menu(char menus[][32] ){int n = 0;printf("请输入所需选项:\n");while(strlen(menus[n])){printf("%d %s\n",n+1,menus[n]);++n;}printf("请选择(");while(n){printf("%d|",n--);}printf(")");}void Read(){int i=0;int j=0;ifstream in("Libra.txt",ios::out);in>>i;all=i;if(i>0&&i<=Max){for(j=1;j<=i;j++){in>>data[j].id>>data[j].name>>data[j].type>>data[j].status>>data[j].count;}}in.close();}void PutInfor() //信息输入函数{all++;cout<<"输入图书ID:"<<endl;cin>>data[all].id;cout<<"输入图书名字:"<<endl;cin>>data[all].name;cout<<"输入图书类别:"<<endl;print_menu(BookTypes);cin>>data[all].type;Save();Read();cout<<"输入完成!"<<endl;}void Borrow() //借阅图书{int k=0;Book B;cout<<"输入所要借阅图书ID:"<<endl;cin>>B.id;k=BinSearch(B.id);if(k==0)cout<<"* 无此书信息,可能是输入错误!*"<<endl;else{ofstreamoutfile; //在Libra.txt文件中输入数据outfile.open("Libra.txt",ios::trunc);outfile<<all<<'\n';data[k].status=1;for(int i=1;i<=all;i++){if (i==k){data[k].status=1;data[k].count++;outfile<<data[i].id<<'\t';outfile<<data[i].name<<'\t';outfile<<data[i].type<<'\t';outfile<<data[i].status<<'\t';outfile<<data[i].count<<'\n';}else{outfile<<data[i].id<<'\t';outfile<<data[i].name<<'\t';outfile<<data[i].type<<'\t';outfile<<data[i].status<<'\t';outfile<<data[i].count<<'\n';}}outfile.close();for(int j=k;j<all;j++){data[j]=data[j+1];}all--;Read();}printf("借阅成功!");}void Return() //还书{int k=0;Book B;cout<<"输入所要归还图书ID:"<<endl;cin>>B.id;k=BinSearch(B.id);if(k==0)cout<<"* 无此书信息,可能是输入错误!*"<<endl;else{ofstreamoutfile; //在Libra.txt文件中输入数据outfile.open("Libra.txt",ios::trunc);outfile<<all<<'\n';data[k].status=1;for(int i=1;i<=all;i++){if (i==k){data[k].status=0;outfile<<data[i].id<<'\t';outfile<<data[i].name<<'\t';outfile<<data[i].type<<'\t';outfile<<data[i].status<<'\t';outfile<<data[i].count<<'\n';}else{outfile<<data[i].id<<'\t';outfile<<data[i].name<<'\t';outfile<<data[i].type<<'\t';outfile<<data[i].status<<'\t';outfile<<data[i].count<<'\n';}}outfile.close();for(int j=k;j<all;j++){data[j]=data[j+1];}all--;Read();}printf("归还成功!");}intBinSearch(int key){intlow,high,mid;low=1;high=all;while(low<=high){mid=(low+high)/2;if(key==data[mid].id)return mid;else if(key<data[mid].id)high=mid-1;elselow=mid+1;}return 0;}void Save(){int i=0;ofstreamoutfile; //在Libra.txt文件中输入数据outfile.open("Libra.txt",ios::trunc);outfile<<all<<'\n';for(;all>0;all--){i++;outfile<<data[i].id<<'\t';outfile<<data[i].name<<'\t';outfile<<data[i].type<<'\t';outfile<<data[i].status<<'\t';outfile<<data[i].count<<'\n';}cout<<endl<<"你已成功保存数据!"<<endl<<endl;outfile.close();//exit(1);}voidsearchBook(){intnum,i;printf("请输入所要查找的图书ID:");scanf("%d",&num);i = BinSearch(num);if (i==0){printf("输入有误,请重新输入!!");}else{printf("--------------------------------------------------------------------\n");printf("ID| 书名| 图书分类| 现在状态| 借出次数|\n");printf("--------------------------------------------------------------------\n");printf("%2d| %17s|%15s|%12s|%10d| \n",data[i].id, data[i].name, BookTypes[data[i].type-1],BookStatus[data[i].status], data[i].count);}}void Printall() //输出信息{printf("--------------------------------------------------------------------\n");printf("ID| 书名| 图书分类| 现在状态| 借出次数|\n");printf("--------------------------------------------------------------------\n");for(int i=1;i<=all;i++){if(data[i].name!=NULL){printf("%2d| %17s|%15s|%12s|%10d| \n",data[i].id, data[i].name, BookTypes[data[i].type-1],BookStatus[data[i].status], data[i].count);}}}int main(){intch = 0,i,loop = 1;while(loop){Read();print_menu(BookMenu);scanf("%d",&ch);if (ch< 1 || ch> 6){printf("\n没有所输选项,请确定所输入选项为1-6中的选项!!\n");printf("\n");}switch(ch){case 1://添加图书信息PutInfor();break;case 2:Read();Printall();break;case 3:system("cls");Read();searchBook();break;case 4:system("cls");Read();Borrow();break;case 5:system("cls");Read();Return();break;case 6:loop=0;break;default:break;}printf("\n-------------------------------分割线----------------------------------\n\n");}return 0;}文件内容格式为"ID| 书名| 图书分类| 现在状态| 借出次数|例如第七行6 为图书ID 英语为图书名字 1 为图书分类0 为现在状态0 为借阅次数图书分类1:"文学",:2:"中文社科",:3:"自然科学",:4:"计算机",:5:"报刊/杂志",图书状态0 在架上1 已借出源代码2此代码无文件操作,不会生成txt文件只能在控制台运行#include <stdio.h>#include <stdlib.h>#include <string.h>#define BORROWED 1#define NOBORROW 0//定义图书结构体struct Book{int id;//图书的唯一编号char name[20];//图书名字int type;//图书类型int status;//图书现在状态int count;// 图书借出的次数struct Book* next;// 下一本书struct Book* prev;// 上一本书};// 定义图书类型typedefstruct Book Book;// 添加图书类型,用户信息显示charBookTypes[][32] ={"文学","中文社科","自然科学","计算机","报刊/杂志","",};// 添加图书状态charBookStatus[][32] ={"在架上","已借出","",};//图书管理菜单charBookMenu[][32] ={"添加图书","列出图书","查找图书","借书","还书","退出","",};//搜索目录charbookSearchMenu[][32] ={"按书名查找","按类型查找","",};//增加图书intaddBooks(Book* head,Book* bookAdd) {Book* p = head;if (!p)return -1;while(p->next){p = p->next;};p->next = bookAdd;bookAdd->id = p->id+1;bookAdd->prev = p;bookAdd->next = NULL;bookAdd->count = 0;bookAdd->status = 0;return 0;}//图书信息链表Book* creatList(Book* bookHead){if (bookHead){bookHead->prev = bookHead;bookHead->next = NULL; bookHead->id = 1;bookHead->count = 0;bookHead->status = 0;}returnbookHead;}// 释放链表voidfreeList(Book* book_head){Book *p, *p1;p = book_head;while(p){p1 = p->next;free(p);p = p1;}}//菜单输出voidprint_menu(char menus[][32] ){int n = 0;printf("请输入所需选项:\n");while(strlen(menus[n])){printf("%d %s\n",n+1,menus[n]);++n;}printf("请选择(");while(n){printf("%d|",n--);}printf(")");}//输出图书信息voidprint_book(Book* book){printf("%2d| %17s|%15s|%12s|%10d| \n",book->id, book->name, BookTypes[book->type],BookStatus[book->status], book->count);printf("---------------------------------------------------------------------\n"); }//列出全部图书voidlistBooks(Book* bookHead){Book* p = bookHead;while (p){print_book(p);p = p->next;}}//借书,如果书存在返回此书指针,如果不存在返回空Book* borrowBooks( Book* book_head, int _id ){Book* p = book_head;while (p){if (p->id == _id)break;p = p->next;}if (!p) //图书不存在{printf("您所借图书不存在,请重新输入!!\n");return NULL;}if (p->status != 0) //图书已借出{printf("您所借图书已借出,请重新输入新的图书!!\n");return NULL;}p->status = 1;//图书是否借出状态p->count++;//借出次数+1return p;}//还书,正常归还就返回该书的指针,否则就返回NULLBook* returnBooks(Book* book_head, int _id){Book* p = book_head;while (p){if (p->id == _id && p->status != 0){p->status = 0;//图书归还时状态改变break;}p = p->next;}return p;}//按图书名字查找intsearchBookByName( Book* book_head, char* _name ) {int count = 0;Book* p = book_head;while (p){if (strcmp(p->name, _name) == 0){print_book(p);++count;}p = p->next;}return count;}//查找书类型,返回查找到的数量intsearchBooksByType(Book* book_head, int _type) {int count = 0;Book* p = book_head;while (p){if (p->type == _type ){print_book(p);++count;}p = p->next;}return count;}int main(){intch = 0,loop = 1;char information[100];//定义图书Book FBooks,*pBooks,*pTemp;//初始化第一本图书名字为数据结构strcpy(, "数据结构");FBooks.type = 0;FBooks.status = 0;pBooks = creatList(&FBooks);while(loop){print_menu(BookMenu);scanf("%d",&ch);if (ch< 1 || ch> 6){printf("\n没有所输选项,请确定所输入选项为1-6中的选项!!\n");printf("\n");}switch(ch){case 1://添加图书信息pTemp = (Book*)malloc(sizeof(Book));if(pTemp){printf("请输入图书的名字:");scanf("%s",information);strncpy(pTemp->name,information,31);print_menu(BookTypes);scanf("%d",&ch);if (ch< 0 || ch>(sizeof(BookTypes)/32))ch = 1;pTemp->type = ch - 1;addBooks(pBooks,pTemp);}break;case 2://列出全部图书printf("--------------------------------------------------------------------\n");printf("ID| 书名| 图书分类| 现在状态| 借出次数|\n");printf("--------------------------------------------------------------------\n");listBooks(pBooks);break;case 3:print_menu(bookSearchMenu);scanf("%d",&ch);if (ch<1 || ch> 2){printf("输入有误,请重新输入!!\n");}else{switch(ch){case 1://按图书名字查找printf("请输入图书名字:");scanf("%s",&information);ch = searchBookByName(pBooks,information);if (ch == 0){printf("没有找到此书,请重新输入!您也可以推荐学校购买此书!\n");}break;case 2://按图书类型查找print_menu(BookTypes);scanf("%d",&ch);ch = searchBooksByType(pBooks, ch-1);if (ch == 0){printf("没有找到此类书,请重新输入!\n");}break;default:break;}}break;case 4:printf("请输入所要借图书的ID:");scanf("%d",&ch);pTemp = borrowBooks(pBooks, ch);if (!pTemp)printf("借书失败: %d\n", ch);else{printf("您已成功借阅此书,请记得按时归还!\n");printf("--------------------------------------------------------------------\n");printf("ID| 书名| 图书分类| 现在状态| 借出次数|\n");printf("--------------------------------------------------------------------\n");print_book(pTemp);}break;case 5:printf("请输入所要还图书ID:");scanf("%d",&ch);pTemp = returnBooks(pBooks, ch);if (!pTemp)printf("还书失败: %d\n", ch);else{printf("您已成功归还此书!\n");printf("--------------------------------------------------------------------\n");printf("ID| 书名| 图书分类| 现在状态| 借出次数|\n");printf("--------------------------------------------------------------------\n");print_book(pTemp);}break;case 6:loop = 0;break;default:break;}printf("\n-------------------------------分割线----------------------------------\n\n");}freeList(pBooks);return 0;}。

相关文档
最新文档