c语言图书信息管理系统课程设计报告
图书信息管理系统设计—C语言课程设计报告

图书信息管理系统设计一、【要求】图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
设计一图书信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)图书信息录入功能(3)图书信息浏览功能(4)图书信息查询功能(5)图书信息的删除与修改功能二、【各功能模块】1、菜单模块主函数流程图《1》、主函数:建立menu( )函数将主函数功能提取出来,主函数main调用menu( )函数方便简捷。
void main(){menu();}void menu(){int a;do{printf(" ****** 毅******\n");printf("\n");printf("******中国地质大学******\n");printf("\n");printf("\n\n\n\n\n\t\t\t\t图书信息管理系统\t\t\t\t\n");printf("\t\t********************************************\n");printf("\t\t\t1 ----------------图书信息录入\n");printf("\t\t\t2 ----------------图书信息浏览\n");printf("\t\t\t3 ----------------图书信息查询\n");printf("\t\t\t4 ----------------图书信息删除\n");printf("\t\t\t5 ----------------图书信息修改\n");printf("\t\t\t6 ----------------图书信息追加\n");printf("\t\t\t0 ----------------退出图书信息系统\n");printf("\t\t********************************************\n");printf("\t\tplease choose: ");scanf("%d",&a);switch(a){case 1:input();break;case 2:list();break;case 3:search();break;case 4:del();break;case 5:revise();break;case 6:append();break;case 0:exit(0);default:printf("\n序号不对\n");}}while(a!=0);}【定义图书信息结构体】#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>void menu();#define N 3typedef struct system{long num;char name[20];char writer[10];char sort[10];char publisher[20];long time;float price;}BOOK;注:定义的BOOK结构体N为限定的录入图书个数(可依据不同要求变化围)long num为定义的登录号(长整形变量)char name[20]为定义的书名的数组char writer[10]为定义的作者的数组char sort[10]定义的分类号数组char publisher[20]定义的出版单位数组long time定义的出版时间长整形变量float price价格为浮点型变量。
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.数据库基础:介绍数据库的基本概念、数据模型以及SQL语言的使用,让学生掌握如何创建、查询和管理数据库。
2.编程语言应用:通过实例教学,使学生熟悉至少一种编程语言(如C语言)的基本语法,培养学生编写程序解决问题的能力。
3.软件工程实践:讲解软件开发的生命周期,包括需求分析、设计、编码、测试和维护等环节,强调编程规范和团队合作的重要性。
4.项目实现:指导学生利用所学知识设计并实现一个简易的图书管理系统,涵盖图书的录入、查询、借阅等功能。
三、教学方法为了提高教学效果,将采用多种教学方法相结合的方式进行授课:1.讲授法:用于传授数据库理论基础、编程语言的基本语法和软件工程的概念。
2.案例分析法:通过分析具体的图书管理案例,使学生理解数据库设计和程序实现的过程。
3.实验法:安排实验室实践环节,让学生动手编写代码,实际操作数据库,加深理解和实践能力。
4.小组讨论法:学生分组完成项目设计,鼓励学生相互讨论、协作解决问题,培养团队精神和沟通能力。
四、教学资源教学资源将包括:1.教材:《数据库原理与应用》、《C程序设计》等,为学生提供理论学习的坚实基础。
2.多媒体资料:包括教学PPT、案例视频等,增强课堂的互动性和趣味性。
图书信息管理系统——C语言课程设计报告

课程设计报告课程名称C语言程序设计课题名称图书信息管理系统专业电子技术班级1101班学号201101040240姓名陈正军指导教师2012年6 月19 日湖南工程学院课程设计任务书课程名称C语言程序设计课题图书信息管理系统专业班级电子技术1101班学生姓名陈正军学号201101040240指导老师审批任务书下达日期2012 年6月19日任务完成日期2012 年7 月4 日一、设计内容与设计要求1.设计内容:图书信息管理系统设计涉及的知识点:①掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;②掌握数组的基本概念。
熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。
③掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。
④掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示,结构体变量的赋值含义,结构体与指针、函数的关系。
⑤掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。
2.设计要求:1)用C语言实现系统;利用结构体数组实现图书信息的数据结构设计;系统的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能, 调用界面和各个功能的操作界面应尽可能清晰美观。
2) 建立一个图书信息数据库,文件名为book.txt,并从该文件中读取数据;3) 图书信息管理系统应能提供以下功能:①系统以菜单方式工作②图书信息显示功能;能以表格形式显示图书库中所有信息,且应有表头。
③图书信息追加功能;追加一条(或多条)新记录,要求在追加过程中有相应的提示信息,完成追加后能重新排序和显示;④图书信息查询功能;a. 按书名查询;b. 按单价查询;c. 按出版单位查询;d. 按出版时间查询e. 按分类号查询;f. 按入库时间查询要求系统在上述查询方式中至少应有两种以上的查询方式,且能显示符合条件的所有记录。
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语言课程设计图书管理系统Books Management System学生姓名张朝柱学院名称徐州工程学院学号20130566140班级13计转本专业名称计算机科学与技术指导教师李子龙2016年5月10日一、需求分析为了满足图书管理的要求,通过计算机技术给图书管理人员和读者借、还书带来便利。
使用c语言编写了图书管理系统。
本系统主要实现图书信息管理的功能,通过此系统可对图书馆库存图书信息进行管理和维护操作。
实现了图书馆内管理的一般功能,包括查询、借书、还书、添加、删除、修改图书信息等。
所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。
图书信息包括编号、书名、作者、数量、在库状态等。
图书信息的录入和显示要求有一定的规范格式,录入的图书信息用文件形式保存,并可以对其进行浏览、查询、借阅、还书等基本操作。
整个程序实现顺序表操作,对图书信息的操作逐个地进行,一个图书信息的更改不应影响其他的图书记录。
二、算法设计:1.设计思想:整个系统制造的而过程中,涉及了较多C语言知识点,对于不同的数据类型、程序控制结构、数据结构作以分析和总结,并结合这个课题进行综合的应用,在一定程度上做到了对所学知识融会贯通。
进一步加深、巩固了所学的专业的基本理论知识,培养了综合分析问题、解决问题的能力。
在设计程序时,实现了程序的模块化、结构化。
在主函数中调用各种子函数,操作界面简单,易操作。
2,设计表示:(1)、整个系统除了主函数外,另外还有各种功能子函数,利用无限次循环语句while()和选择语句swithch()实现各个子函数的调用,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。
主要实现了图书的录入、存储、查询、借书、还书、显示库存等功能。
(2)、void Book_Entering(struct SqList &SL);这是一个录入图书信息的函数,它主要实现了顺序表的创建,并且在创建过程中从文件读取信息到顺序表中,以用于后面其他函数的操作。
c语言图书馆管理系统课程设计报告

C语言图书馆管理系统课程设计报告一、设计背景随着图书馆信息化管理的普及和发展,使用计算机进行图书馆管理已成为必然趋势。
为了提高图书馆管理工作的效率和准确性,本课程设计旨在设计一个基于C语言的图书馆管理系统。
二、设计目标1.实现对图书馆的基本信息进行添加、删除、修改和查询的功能。
2.实现对读者信息的管理,包括添加、删除、修改和查询。
3.实现借书和还书功能,包括借书时的借阅记录的生成和还书时相关操作。
4.实现图书馆管理员的登录和权限管理功能。
三、设计思路基于以上设计目标,我们将采取以下设计思路:1.设计合适的数据结构来存储图书馆、读者和借阅记录等信息。
2.设计相应的函数来实现对数据的增删改查操作。
3.设计用户界面,使用户可以方便地使用各种功能。
4.设计登录和权限管理功能,保证只有授权的管理员才能进行系统管理操作。
四、系统功能设计1. 图书馆管理功能•添加图书馆信息:输入图书馆名称、地址等信息,保存到系统中。
•删除图书馆信息:根据图书馆名称或其他唯一标识,删除相应的图书馆信息。
•修改图书馆信息:根据图书馆名称或其他唯一标识,修改相应的图书馆信息。
•查询图书馆信息:根据图书馆名称或其他唯一标识,查询相应的图书馆信息。
2. 读者管理功能•添加读者信息:输入读者姓名、年龄、性别等信息,保存到系统中。
•删除读者信息:根据读者姓名或其他唯一标识,删除相应的读者信息。
•修改读者信息:根据读者姓名或其他唯一标识,修改相应的读者信息。
•查询读者信息:根据读者姓名或其他唯一标识,查询相应的读者信息。
3. 借还书功能•借书:根据读者ID和图书ID,生成借阅记录,修改相应的图书和读者信息。
•还书:通过借阅记录中的借阅ID,找到相应的借阅记录,修改相应的图书和读者信息。
4. 登录和权限管理功能•管理员登录:输入管理员用户名和密码,验证登录信息。
•管理员权限管理:设置对应管理员的权限,包括“图书馆管理”和“读者管理”等。
五、系统实现本系统的实现将采用C语言作为开发语言,使用相关编程工具进行开发。
C语言课程设计报告图书管理系统

...... C语言课程设计报告院系:学号:班号:姓名:标题:图书管理系统目录第一部分题目要求 (3)第二部分需求分析 (3)第三部分总体设计 (4)第四部分详细设计 (4)1)主函数 (4)2)各功能模块设计 (6)3)公共函数 (16)第五部分上机操作 (17)第六部分总结 (20)附录(源代码) (22)第一部分题目要求图书管理系统包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等,是设计一图书管理系统,使之能够提供以下功能:1. 新图书基本信息的输入。
2. 图书基本信息的查询。
3. 对撤销图示基本信息的删除。
4. 办理借书手续。
5. 办理换书手续。
第二部分需求分析根据题目的要求,需要建立一个文件来保存图书信息,每本书的信息用一个结构体来保存,结构体的成员应包括图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号,结构体中的存在状态可设为整型,用不同数字代表借还状态;在借书和还书手续中,要注意结构体的成员变量存在状态的值,使用指针会比较方便。
程序中需要对图书信息实现输入、查询、删除、借书和还书的功能,首先要使用菜单进行各项功能的选择;其次需要有文件的输入、输出功能,提供显示、查找等操作。
在程序的运行过程中,注意各功能在使用完毕后返回菜单的设置,以方便运行。
第三部分总体设计根据上面的需求分析,可以将整个图书管理系统分为输入模块、查找模块、删除模块、借书模块和还书模块(如图3-1所示)。
图3-1 系统功能模块图第四部分 详细设计4.1 数据结构在这个程序里,每本书的信息用一个结构体book 来保存,结构体的成员应包括图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号,结构体中的存在状态设为整型,用不同数字代表库中高本书的数量。
struct book{ char title[30];int number;char author[30];float price;int store;char borrower_name[20];char borrower_gender[5];int borrower_number;}s[N];其中的N定义为该系统所管理书籍的最大值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录1 课程设计目的与要求 (1)2 问题描述 (2)3总体设计 (3)3.1 功能分析 (3)3.2 系统使用的主要函数 (3)3.3 系统使用的主要数据结构 (4)4 详细设计 (5)4.1 程序总体结构图 (5)4.2 程序流程图 (7)5 功能测试 (10)5.1 系统主界面 (10)5.2 系统输入信息的界面 (11)5.3 系统信息查询的界面 (12)5.4 系统信息按作者名查询的界面 (13)I5.5 系统信息按作者名排序 (14)6 程序设计调试情况分析 (15)7 课程设计小结 (16)参考文献 (17)附录系统源程序 (18)II图书信息管理系统1 课程设计目的与要求图书信息存放在文件中,提供文件的输入、输出等操作;要实现浏览功能;查询和排序功能要求实现查找操作(至少两种依据);还应该提供图书信息删除和修改的功能;另外还应该提供键盘式选择菜单以实现功能选择。
图书管理系统,其中包括:图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
功能包括:1) 系统以菜单方式工作;2) 图书信息录入功能(图书信息用文件保存);3) 图书信息浏览功能;4) 查询和排序功能;5)图书信息的删除与修改功能12 问题描述1.设计一个图书管理系统,其中包括:图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
功能包括:1) 系统以菜单方式工作;2) 图书信息录入功能(图书信息用文件保存);3) 图书信息浏览功能;4) 查询和排序功能;5)图书信息的删除与修改功能2.需求分析:图书信息存放在文件中,提供文件的输入、输出等操作;要实现浏览功能;查询和排序功能要求实现查找操作(至少两种依据);还应该提供图书信息删除和修改的功能;另外还应该提供键盘式选择菜单以实现功能选择。
显示模块通过设计一个模块,来实现图书信息的显示,以便于浏览图书的信息。
查询模块通过设计一个模块,这个模块可以按图书的书名、作者来查询图书所有的信息,以便查询者阅读。
删除模块通过设计一个模块,当输入一个图书的登入号或者书名的时候,可以通过这个模块,将输入登入号或者书名的书籍的所有信息从数据库中删除出去。
以后,这本图书的信息不再出现在数据库中。
修改模块通过设计一个模块,当某本图书的信息发生变化的时候,可以通过修改模块来进行修改。
修改模块时一具有多级子菜单的模块。
排序模块通过设计一个模块,来实现数据库的信息按某项成员名的升序或者降序排列,这个模块提供了按书名,作者名,分类号三种方式来实现排序。
23总体设计3.1 功能分析(系统提供主界面,各种功能操作以独立的函数为基础,运用对链表操作的技术来实现通讯录的管理,同时对操作结果在计算机中做永久保存。
)整个系统可以分为信息录入、信息浏览、信息查询、信息排序、信息删除和信息修改的功能。
系统提供主界面,各种功能操作以独立的函数为基础,运用对链表操作的技术来实现图书信息的管理,同时对操作结果在计算机中做永久保存。
3.2 系统使用的主要函数void menu();int bookluru(struct book*p,int n); (录入图书信息)void bookliulan(struct book*p,int n); (图书信息浏览)void bookchaxun(struct book*p,int n);(图书信息查询)void bookxiugai(struct book*p,int n); (图书信息修改)int bookzengjia(struct book*p,int n); (图书信息增加)int bookshanchu(struct book*p,int n); (图书信息删除)void bookpaixu(struct book*p,int n); (图书信息排序)void DLsearch(struct book*p,int n); (按登入号查询)void AUsearch(struct book*p,int n); (按作者名查询)int bookzairu(struct book*p,int n); (图书信息文件储存)void goout(); (退出程序)int bookbaocun(struct book*p,int n); (图书信息保存)void main()33.3 系统使用的主要数据结构struct book //定义一个book类结构体。
{char no[L];char name[L];char author[L];char fenlei[L];char puttime[L];char putfrom[L];char price[L];};44 详细设计4.1 程序总体结构图图4.1 程序总体结构图5图4.2 程序层次图64.2 程序流程图图4.3信息登入功能流程图7图4.4 查询功能流程图8图4.5 修改功能流程图95 功能测试5.1 系统主界面图5.1 系统主界面10图 5.2 输入信息界面11图5.3信息查询界面125.4 系统信息按作者名查询的界面图5.4 按作者名查询135.5 系统信息按作者名排序图5.5 信息排序界面146 程序设计调试情况分析1)问题:在信息查询完成后,无法跳出该界面,无法回到主界面。
图6.1 查询后无法回到主界面解决方法:在信息查询那个版块的程序中,把原先用scanf输入字符改成gets(no),排除由于回车键出现的问题。
2)问题:“登录号书名作者。
”之间无空格号解决方法:改为printf("\n %9s%9s%9s%9s%9s%9s%9s\n","登录号","书名","作者名","分类号","出版单位","出版时间","价格"); 拉宽长度。
157 课程设计小结通过一周的课程设计,第一次我们试着用所学的C语言知识去编制生活中常用的程序。
我们是小组选择编辑图书信息管理系统程序。
由于分工合作,我负责的是查询和排除模块。
起初对知识掌握的不够全面,在整个设计过程中遇到很多问题。
比如,编译出现错误,对于格式的掌握还不够透彻;在分界面运行完后,回不到系统的主界面,出现了死循环;在删除信息的板块中,删除了要保留的;运行时,屏幕显示的字之间无空格。
后来,通过小组互相帮组讨论,查阅书籍,改善了程序。
首先把原程序中的运用scanf()输入字符,改为getchar(),排除了接受回车键所出现的问题,能够顺利的返回主界面。
其次,printf()中字符串控制的长度拉宽。
最后还是能如期的完成此次实训。
当然,由于初次接触图书管理系统的设计,程序还是存在缺陷。
比如操作起来不够简便、连贯,同时也没考虑到实际问题。
如图书的价格要取大于等于零的数等。
总之,此次的课程设计还是对我们的专业很有帮助。
既巩固了我们的C语言知识,让我们对一部分函数的功能有了更加深刻的理解,把所学运用到实际,也使我们在系统设计领域有了新的拓展,开发我们的思维。
16参考文献[1] 吉顺如. 《C程序设计教程与实验》. 北京:清华大学出版社. 2011. 48-10317附录系统源程序#include<stdio.h> //头文件#include<string.h>#include<stdlib.h>#define L 30 //宏定义#define Q 200struct book //定义一个book类结构体。
{char no[L];char name[L];char author[L];char fenlei[L];char puttime[L];char putfrom[L];char price[L];};//函数声明//函数声明void menu();int bookluru(struct book*p,int n);void bookliulan(struct book*p,int n);void bookchaxun(struct book*p,int n);void bookxiugai(struct book*p,int n);int bookzhengjia(struct book*p,int n);int bookshanchu(struct book*p,int n);void bookpaixu(struct book*p,int n);void DLsearch(struct book*p,int n);void AUsearch(struct book*p,int n);int bookzairu(struct book*p,int n);void goout();int bookbaocun(struct book*p,int n);void main()//主函数{char slect,yn;struct book record[Q];//定义book类结构体变量存放图书信息共200条int total=0,flag;total=bookzairu(record,Q);//从文件读取图书信息,不超过200条do{menu();//显示菜单printf("请服务项编号:");slect=getchar();getchar();switch(slect){case'0': goout();break;case'1':total=bookluru(record,total);break; //函数调用case'2':bookliulan(record,total);break;case'3':bookchaxun(record,total);break;case'4':bookxiugai(record,total);break;case'5':total=bookzhengjia(record,total);break;case'6':total=bookshanchu(record,total);break;case'7':bookpaixu(record,total);break;case'8':flag=bookbaocun(record,total);if("flag==1")printf("图书信息保存成功!\n");elseprintf("图书信息保存失败!\n");break;default:continue;}18if(slect=='0') break;printf("\n还要继续选择吗?(Y/N)"); //提示是否结束do{yn=getchar();getchar();if (yn=='Y'||yn=='y')break;else if (yn=='N'||yn=='n')break;elseprintf("非法选项!\n还要继续选择吗?(Y/N)");}while(1);}while(yn!='N'&&yn!='n');}//图书管理系统主菜单.void menu(){system("cls");printf("\n\n");printf("请选择服务项目编号(0--8)\n");printf("******************************************************************\n");printf("§********************欢迎使用图书信息管理系统******************§\n");printf("§****************************** ********************************§\n");printf("§§§§\n");printf("§§§§\n");printf("§§§§\n");printf("§§* 1 .图书信息录入. §§\n");printf("§§* 2 . 图书信息浏览.§§\n");printf("§§* 3 . 图书信息查寻.§§\n");printf("§§* 4 . 图书信息修改.§§\n");printf("§§* 5 . 图书信息增加.§§\n");printf("§§* 6 . 图书信息删除.§§\n");printf("§§* 7 . 图书信息排序.§§\n");printf("§§* 8 . 图书信息保存.§§\n");printf("§§* 0 . 退出图书管理系统.§§\n");printf("§§§§\n");printf("§§§§\n");printf("§§§§\n");printf("******************************************************************\n";printf("\n");}int bookluru(struct book *p,int n)//录入图书信息.{int i=0;int m;printf("\n添加前的图书信息记录共2有%d个:\n",n); //显示原有的图书信息printf("\n %9s%9s%9s%9s%9s%9s%9s\ n","登录号","书名","作者名","分类号","出版单位","出版时间","价格");i=0;while((i<n)&&(strcmp(p->no,"")!=0)) //输入的登录号不为空时,输出图书信息{printf("%9s%9s%9s%9s%9s%9s%9s\n", p->no,p->name,p->author,p->fenlei,p->puttim e,p->putfrom,p->price);//信息输出i++;p++;}printf("\n请输入要录入的图书数目X (0<X<%d): ",200-n); //设置图书信息存储最大值scanf("%d",&m);i=0;while(i<m){printf("\n");printf("请输入第%d本图书的信息:\n",i+1);printf("登录号: ");do{gets(p->no); //输入登录号,再输入其他信息}while(strcmp(p->no,"")==0);printf("书名为:");gets(p->name);printf("作者名为:");gets(p->author);printf("分类号为:");gets(p->fenlei);printf("出版时间为:");gets(p->puttime);printf("出版单位为:");gets(p->putfrom);printf("价格为:");gets(p->price);p++;i++;}return m+n;}void bookliulan(struct book*p,int n)//图书信息浏览.{int i=0;printf("\n %9s%9s%9s%9s%9s%9s%9s\ n","登录号","书名","作者名","分类号","出版单位","出版时间","价格");while(i<n)//输出原有图书信息{printf("%9s%9s%9s%9s%9s%9s%9s\n", p->no,p->name,p->author,p->fenlei,p->puttim e,p->putfrom,p->price);p++;i++;}}void bookchaxun(struct book*p,int n)//图书信息查寻.{char c;bookliulan(p ,n);do{printf("\n请问按登录号查询(D),还是按作者名查询(A)?"); //选择查询方式c=getchar();getchar();if(c=='D'||c=='d'){DLsearch(p,n);break;}else if(c=='A'||c=='a')3{AUsearch(p,n);break;}else{printf("\n输入的为非法字符!\n");continue;}}while(c!='D'||c!='d'||c!='A'||c!='a');}void DLsearch(struct book*p,int n)//按登录号查询.{int i,x=0;char DL[L];printf("\n请输入要查询图书的登录号:");gets(DL);for(i=0;i<n;i++)if(strcmp(DL,p[i].no)==0) //输入登录号,如果在系统中找到则输出图书信息{printf("\n %9s%9s%9s%9s%9s%9s%9s\ n","登录号","书名","作者名","分类号","出版单位","出版时间","价格");printf("\n%10s%10s%10s%10s%10 s%10s%10s\n",p[i].no,p[i].name,p[i].author,p[ i].fenlei,p[i].putfrom,p[i].puttime,p[i].price);x=1;break;}if(x==0)printf("\n对不起,图书系统中没有包含此书的信息!\n");}void AUsearch(struct book*p,int n)//按作者名查询.{int i,x=0;char AU[20];printf("\n请输入要查询图书的作者姓名:");gets(AU);for(i=0;i<n;i++)if(strcmp(AU,p[i].author)==0) //输入作者姓名,如果在系统中找到则输出图书信息{printf("\n %9s%9s%9s%9s%9s%9s%9s\n","登录号","书名","作者名","分类号","出版单位","出版时间","价格");printf("\n%10s%10s%10s%10s%10s%10 s%10s\n",p[i].no,p[i].name,p[i].author,p[i].fen lei,p[i].putfrom,p[i].puttime,p[i].price);x=1;}if(x==0)printf("\n对不起,图书系统中没有包含此书的信息!\n"); //提示信息}void bookxiugai(struct book*p,int n)//图书信息修改.{int i,k=0;char no[L];bookliulan(p,n);printf("\n请输入要修改图书的登录号:");gets(no);for(i=0;i<n;i++,p++){if(strcmp(no,p->no)!=0) continue; //输入的登录号不匹配,结束本次循环else{printf("\n请输入正确的图书登录号:");gets(p->no);4printf("\n请输入正确的图书书名:");gets(p->name);printf("\n请输入正确的图书作者名:");gets(p->author);printf("\n请输入正确的图书分类号:");gets(p->fenlei);printf("\n请输入正确的图书出版时间:");gets(p->puttime);printf("\n请输入正确的图书出版单位:");gets(p->putfrom);printf("\n请输入正确的图书价格:");gets(p->price);printf("\n修改图书图书信息完成!!");k=1;}}if(k==0)printf("\n对不起,图书系统中没有包含此书的信息!\n");}int bookzhengjia(struct book *p,int n)//图书信息增加.{int i=0;char c;struct book t,*q;printf("\n添加前图书信息的记录为:\n");bookliulan(p ,n);//显示添加前图书信息的记录do{printf("请输入新图书信息的登录号:");gets(t.no);printf("\n请输入新图书信息的书名为:");gets();printf("\n请输入新图书信息的作者名为:");gets(t.author);printf("\n请输入新图书信息的分类号为:");gets(t.fenlei);printf("\n请输入新图书信息的出版时间为:");gets(t.puttime);printf("\n请输入新图书信息的出版单位为:");gets(t.putfrom);printf("\n请输入新图书信息的价格为:");gets(t.price);for(i=0;i<n;i++)if(strcmp(t.no,(p+i)->no)==0||strcmp(t.au thor,(p+i)->author)==0||strcmp(t.fenlei,(p+i)-> fenlei)==0){printf("登录号、作者名和分类号重复,要重新输入吗(Y/N)?");c=getchar();putchar('\n');break;}if(i==n){*(p+i)=t;printf("\n添加后图书的信息记录为:\n"); //显示添加后图书的信息记录printf("\n %9s%9s%9s%9s%9s%9s%9s\ n","登录号","书名","作者名","分类号","出版单位","出版时间","价格");for(i=0;i<n+1;i++)printf("\n%9s%9s%9s%9s%9s%9s%9s\n ",p[i].no,p[i].name,p[i].author,p[i].fenlei,p[i].p utfrom,p[i].puttime,p[i].price);break;}}5while(c=='y'||c=='Y');return n+1;}int bookshanchu(struct book *p,int n)//图书信息删除.{int i,x,y=0;char c,name[20],no[20];printf("\n删除前图书的信息记录为:\n");printf("\n %9s%9s%9s%9s%9s%9s%9s\ n","登录号","书名","作者名","分类号","出版单位","出版时间","价格"); //显示删除前图书的信息记录for(i=0;i<n;i++)printf("\n%9s%9s%9s%9s%9s%9s%9s\n ",(p+i)->no,(p+i)->name,(p+i)->author,(p+i)-> fenlei,(p+i)->putfrom,(p+i)->puttime,p[i].pric e);printf("\n请输入要删除图书的登陆号:");gets(no);for(x=0;x<n;x++){if(strcmp(no,p[x].no)!=0) ////输入的登录号不匹配,结束本次循环continue;if(x<n){for(i=x;i<n;i++) //后一个图书信息对前一个图书信息覆盖删除{strcpy(p[i].no,p[i+1].no);strcpy(p[i].author,p[i+1].author);strcpy(p[i].name,p[i+1].name);strcpy(p[i].fenlei,p[i+1].fenlei);strcpy(p[i].price,p[i+1].price); strcpy(p[i].putfrom,p[i+1].putfrom);strcpy(p[i].puttime,p[i+1].puttime);}printf("图书信息删除后的记录:\n");printf("\n %9s%9s%9s%9s%9s%9s%9s\ n","登录号","书名","作者名","分类号","出版单位","出版时间","价格"); //显示图书信息删除后的记录for(i=0;i<n-1;i++)printf("\n%9s%9s%9s%9s%9s%9s%9s\n ",p[i].no,p[i].name,p[i].author,p[i].fenlei,p[i].p utfrom,p[i].puttime,p[i].price);y=1;}elseprintf("\n对不起,图书系统中没有包含此书的信息!\n");return n-y;}}//对图书信息排序.void bookpaixu(struct book*p,int n){int j,i,k;char c1,c2;struct book temp;printf("\n排序前图书的信息记录为:\n");printf("\n %9s%9s%9s%9s%9s%9s%9s\ n","登录号","书名","作者名","分类号","出版单位","出版时间","价格");for(i=0;i<n;i++)printf("\n%10s%10s%10s%10s%10s%10 s%10s\n",(p+i)->no,(p+i)->name,(p+i)->autho r,(p+i)->fenlei,(p+i)->putfrom,(p+i)->puttime, p[i].price);printf("\n按登录号排序(D),还是按作者名排序(A)?"); //选择排序的方式c1=getchar();getchar();6if(c1=='d'||c1=='D') //选择登录号由小到大排序{for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(strcmp(p[k].no,p[j].no)>0) //使用选择法进行排序k=j;if(k!=i) //如果最小熟不熟默认的p[i],再交换,{temp=p[k];p[k]=p[i];p[i]=temp;}}printf("\n排序后图书的信息记录为:\n"); //输出排序后图书的信息printf("\n %9s%9s%9s%9s%9s%9s%9s\ n","登录号","书名","作者名","分类号","出版单位","出版时间","价格");for(i=0;i<n;i++)printf("\n%10s%10s%10s%10s%10s%10 s%10s\n",(p+i)->no,(p+i)->name,(p+i)->autho r,(p+i)->fenlei,(p+i)->putfrom,(p+i)->puttime, p[i].price);}else if(c1=='a'||c1=='A') //选择作者名由小到大排序{for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(strcmp(p[k].author,p[j].author)>0)k=j;if(k!=i) //使用选择法进行排序{temp=p[k];p[k]=p[i];p[i]=temp;}}printf("\n排序后图书的信息记录为:\n");printf("\n %9s%9s%9s%9s%9s%9s%9s\ n","登录号","书名","作者名","分类号","出版单位","出版时间","价格"); //输出排序后图书的信息for(i=0;i<n;i++)printf("\n%10s%10s%10s%10s%10s%10 s%10s\n",(p+i)->no,(p+i)->name,(p+i)->autho r,(p+i)->fenlei,(p+i)->putfrom,(p+i)->puttime, p[i].price);}elseprintf("\n您输入的为非法字符!\n");}//图书信息文件存储.int bookzairu(struct book*p,int n){FILE *fp; //定义FILE 类型文件指针变量int i,all=0;char bookfile[200]="book.txt";fp=fopen("book.txt","r+"); //以只读方式打开if(fp==NULL){printf("\n***打开%s失败!!***",bookfile);7return 0;}fscanf(fp,"%d\n",&all); //从文件指针指向的文本文件中按指定格式逐个输入信息到指定变量if(all>200) //读取记录总数{printf("文件记录太多,不能读取!");return 0;}for(i=0;i<all;i++) //图书信息按指定格式输入{fscanf(fp,"%s %s %s %s %s %s %s\n",p[ i].no,p[i].name,p[i].author,p[i].fenlei,p[i].putfr om,p[i].puttime,p[i].price);}fclose(fp); //关闭文件return all;}//图书信息文件保存.int bookbaocun(struct book*p,int n){FILE *fp; //定义FILE类型文件指针变量int i,all=0;char bookfile[30]="book.txt";fp=fopen(bookfile,"w"); //以只写方式打开if(fp==NULL) //{printf("\n***打开%s失败!!***",bookfile);return 0;}fprintf(fp,"%d\n",n); //将数据指定格式字符串输出到文件指针所指向的文本文件。