1、实验题目:图书管理系统一、 实验目的1. 熟悉 c 语言的编译连接和运行过程。2. 掌握 c 语言的数据类型,熟悉整型、实型、字符型变量的定义方式及如何给它们赋值。3. 掌握 if 语句及 switch 语句的运用方法及嵌套应用方法。4. 掌握实现循环结构的三种语句 while、do-while.、for 的使用。5. 掌握函数的定义方法和调用方法。6. 能够采用模块化思想调试程序。二实验内容1. 编写程序并进行调试运行。2. 输入图书资料,并保存于文件。每种图书包含信息如:图书序号、图书名称、图书种类、图书总库存量、图书现库存量、作者等。3. 对已存入的图书信息进行更新操作,包括添加一个新图
2、书信息、删除某个图书信息和修改某个图书信息。4. 通过输入书名、输入作者、输入作者的方式查询图书信息。5. 并且可以输出图书信息,供需要时打印。二、 需求分析1. 该程序可用于对图书基本信息的存储、更新、查询、统计、排行、输出等操作,以实现对图书的管理。2. 其中更新功能包括:添加信息、删除信息、修改信息,可根据需要添加一个或多个图书信息,也可对个别图书信息进行适当的删除或修改,以便随时更新图书信息。3. 程序中设计的查询功能可根据需要从若干数据中查询某个图书信息,并且可根据四种不同的方法查询:按名称查询、按种类查询、按作者查询、按书名和作者查询,以满足不同的需要。四、概要设计1、方案设计对系
3、统进行分析,给出结构图分析:系统要求实现许多的功能,因此遵循结构化程序设计思想来进行本系统的设计自顶向下、逐步细化,将系统设计任务分解出许多子功能模块进行设计结构图如下:2.模块功能说明 (对各个模块进行功能的描述)(1).输入模块 :录入需要管理的图书信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。(2).添加模块:可添加一个或多个图书信息,并将所添加图书信息保存,方便查找。(3).删除模块:可对图书信息做删除处理。(4).修改模块:可根据需要对多个图书信息进行修改,也可随时对个别项进行修改。(5).查询模块:可对已建立的图书信息进行查询,并且可根据需要选择按书名、种类、作者
4、或按书名和作者查询。(6).保存模块:用于对信息进行保存。(7).输出模块:将所有图书信息或想要查询的图书信息显示于屏幕,用于打印图书信息或查找某些图书信息。(8).统计模块和排序模块 :便于查看图书整体信息.(9).退出系统:输入模块输出模块更新模块查询模块统计模块添加学生信息删除学生信息修改学生信息退出系统按书名查询按作者查寻图书管理系统排序模块按现库存排序按总库存排序退出系统按种类查询按种类和作者查询按现库存统计按总库存统计退出系统退出系统退出系统选择该项,自动退出该系统。五、详细设计及运行结果流程图, 函数之间相互调用的图示 ,程序设计及编码, 运行结果。 (其他小模块类似)输入 i
5、的值判断 i 的值输出模块统计模块更新模块查询模块退出系统输要更新的 值输要查询的值判断 i 的值 判断 i 的值按总库存退出系统开 始排序模块输入模块六 调试情况及运行结果1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。此次实践课编写的是一个应用程序,相对于以前我们见到的程序,它要大得多,运行的结果也没有预想中的好,数据的输出格式不太规范,而且各模块也出现了一些小问题,在同学们的帮助下,我很有耐心的一次又一次的进行修改,最后运行的结果基本上达到了预期的目的。可着毕竟是第一次独立完成这样的大程序,结果还不是太理想。由于时间很短,在选题报告中设想到的好多功能都没有实现。已有的那些功能
6、虽已能基本上满足用户的需要,但如果还有更多的功能程序就会更加完美。如:没有借书和还书的相关模块。2、在设计过程中的感受。本次 C 语言的实习课让我对 C 语言的学习又有了更深入的了解,也让我更深刻地领悟到了“实践出真理”这个道理,在上机实践过程中学到的知识远远超过了在课堂上十几周学到的,学校组织的这次实习让我们这些实践知识匮乏的大学生增添了许多社会经验,为我们将来走上工作岗位其了不小的铺垫作用。本次实习中遇到了很多以前没有遇到过的问题,也曾想过要放弃,但看到那些同学都在那认真的写程序,给了我继续的信心。在同学和老师的帮助下,我顺利的结束了本次实习,让我知道原来凭借自己努力取得的成功会让自己这么
7、欣慰,也让我知道了友谊和团结的重要性。七参考文献C 语言程序设计 王曙燕 曹锰 科学出版社 2006 年 6 月八。附录:#include#include #define M 2#define N 2#define PRINT1 printf(“-n“)#define PRINT2 printf(“图书号-图书名称-图书种类- 图书总量- 图书现库存量-出版日期-作者-出版商n“)#define PRINT3 printf(“%12d%8s%8s%8d%8d%8d-%2d-%2d%8s%12s“, booksi.num,booksi.name,booksi.kind,booksi.add,bo
8、oksi.current_add,booksi.pub_time.year,booksi.pub_time.month,booksi.pub_time.day,booksi.writer,booksi.factory);int sum; /*用来记录图书数目*/*日期结构体类型*/添加信息删除信息修改信息退出系统按现库存struct dateint year;int month;int day;/*图书结构体类型*/struct books_typeint num;char name10;char kind10;int add; /*图书总库存量 */int current_add; /*图书
9、现库存量*/struct date pub_time;char writer10;char factory10;booksM; /*存放 M 种图书记录的结构体数组*/*保存信息*/save_message(int sum)FILE *fp;int i;if(fp=fopen(“tushuguanli.txt“,“wb“)=NULL)printf(“读文件错误!n“);return;for(i=0;iaddadd)k=j;if(k!=i)p=qi;qi=qk;qk=p;for(i=0;inum,qi-name,qi-kind,qi-add,qi-current_add,qi-writer,qi
10、-factory);bioskey(0);/*图书现库存量排序*/sort_current_add()struct books_type *p,*qN;int i,j,k;clrscr();printf(“n 图书现库存量排序n“);printf(“-n“);printf(“n 排名 图书序号 图书名称 图书种类 图书总量 现库存量 图书作者 出版商n“);p=books;for(i=0;icurrent_addcurrent_add)k=j;if(k!=i)p=qi;qi=qk;qk=p;for(i=0;inum,qi-name,qi-kind,qi-add,qi-current_add,q
11、i-writer,qi-factory);bioskey(0);/*排序模块*/sort_message()int choice;doclrscr();printf(“nnn *借书信息排序*nn“);printf(“ 1.图书总库存量排序n“);printf(“ 2.图书现库存量排序n“);printf(“ 0.返回主菜单n“);printf(“ 请选择(0-2):“);scanf(“%d“,switch(choice)case 1:sort_add();break;case 2:sort_current_add();break;case 0:break;while(choice!=0);/
12、*主程序*/main()int choice;sum=read_message();bioskey(0);doclrscr();printf(“nnn *图书管理系统*nn“);printf(“ 1.录入图书信息nn“);printf(“ 2.输出图书信息nn“);printf(“ 3.更新图书信息nn“);printf(“ 4.查询图书信息nn“);printf(“ 5.统计图书信息nn“);printf(“ 6.图书排行信息nn“);printf(“ 0.退出系统nn“);printf(“ 请选择(06):“);scanf(“%d“,switch(choice) case 1:input_message();break;case 2:output_message();break;case 3:renew_message();break;case 4:inquire_message();break;case 5:count_message();break;case 6:sort_message();break;case 0:break;while(choice!=0);save_message(sum);printf(“n以上图书信息已保存!(文件名:tushuguanli.txt)n“);