1、Comment YQY1: 将所选的题目的内容 copy过来,包括功能要求等等。不记得可以看附录。字体是楷体,注意排版,不要让下一页(老师签名那页 )跨页!一、课程设计的内容C题目二:图书信息管理系统设计图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:系统以菜单方式工作图书信息录入功能(图书信息用文件保存 )输入图书信息浏览功能输出查询和排序功能:(至少一种查询方式 )算法 按书名查询 按作者名查询图书信息的删除与修改(可选项 )二、课程设计的要求与数据1、进一步掌握和利用 C语言进行程设计的能力;2、进一步理解和运用结构化
2、程序设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或 N-S图表示算法;6、掌握书写程序设计开发文档的能力。三、课程设计应完成的工作1、编写完成相应题目的程序;2、编写课程设计报告,课程设计报告的内容应包括以下 6个部分:1) 需求分析:包括设计题目、设计要求以及系统功能需求分析;2) 总体设计:包括系统总体设计框架和系统功能模块图;3) 详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;4) 调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决
3、方法及效果等,适当的包含结果截图) ;5) 总结:课程设计完成了哪些功能,有没有什么扩展功能?还有哪些地方需要改进?课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容; 6) 附录:主要源程序代码,含必要的注释。3、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解决问题、运行程序和回答教师提出的问题。四、课程设计进程安排Comment YQY2: 注意参考文献的格式要求,依照下面的两个的格式填写,可以是网页,书,杂志, 合计最少 3本(已有的两个谭老师的算 2本).Comment YQY3: 前面的排版注意不要使这页跨页!切记切记!- 2 -序号 设计各阶段
4、内容 地点 起止日期1 下达任务书,说明设计要求;收集资料 实验 3#517 6.182 总体方案设计、详细设计 实验 3#517 6.193 编写程序,调试分析 实验 3#517 6.204 撰写报告并上交,答辩 实验 3#517 6.21五、应收集的资料及主要参考文献1 谭浩强.C程序设计(第三版)M,北京:清华大学出版社,2005.92 谭浩强. C程序设计题解与上机指导(第三版)M,北京:清华大学出版社,2005.7发出任务书日期: 2007 年 6 月 18 日 指导教师签名:计划完成日期: 2007 年 6 月 22 日 基层教学单位责任人签章:主管院长签章:目 录1 设计目的与要
5、求页码2 总体设计页码3 详细设计页码3.1功能模块设计页码3.1.1 XX功能模块(可选) 页码3.1.1 YY功能模块(可选) 页码3.1.1 ZZ功能模块(可选)页码3.2数据结构设计页码4调试分析 页码5 总结页码6 附录页码Comment YQY4: 正文内容采用 5号宋体写.6 答辩记录(正文处请留出适当空白) 页码7 指导教师意见(正文处请留出十行空白) 页码1 目的与要求题目:图书信息管理系统设计图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:系统以菜单方式工作图书信息录入功能(图书信息用文件保存 )输入图书
6、信息浏览功能输出查询和排序功能:(至少一种查询方式 )算法 按书名查询 按作者名查询图书信息的删除与修改(可选项 )需求说明:图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等并且要求职工号不重复;录入的图书信息要求用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作;对图书信息查询应能够分别按书名及作者名两种方式进行,要求能返回所有符合条件的职工的信息;对职工信息的修改应逐个地进行,一个职工信息的更改不应影响其他的职工记录;系统应以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进行各种处理。 2 总体设计- 4 -菜单选择输入 修改输出 查询菜单选择
7、模块完成用户命令的接收,此模块也是图书信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能;输入模块完成图书信息的输入功能,输入信息包括登陆号、书名、作者名、分类号、出版社、出版日期、价钱等;输出模块完成已录入图书信息的显示;查询模块完图书信息的查询,查询时对应有按书名查询和按作者名查询两种方式;修改模块完成图书信息的修改功能;删除模块完成图书信息的删除功能;按登陆号排序模块完成对信息的排序;文件保存模块完成文件的保存。3 详细设计(内容可以适当调整,清晰的有条理的把你的设计思路表达出来)3.1 功能模块设计3.1.1 XX 功能模块(可选)删除 按
8、登陆号排序按书名查询 按作者名查询图书信息管理系统文件保存3.1.2 YY 功能模块(可选)3.1.3 ZZ 功能模块(可选)3.2 数据结构设计(可选) 菜单选择模块:(给出信息提示;绘制菜单(包含输入、显示、查询、修改、删除、退出、排序);提示菜单选择并读入到变量;根据读入变量的值调用不同的模块函数;) 信息输入模块:(打开职工信息文件;发出输入提示信息;输入职工信息;提示是否继续输入;读入到变量;根据读入变量的值进入菜单或输入函数模块;) 信息输出模块:(输出所有图书的所有信息。) 信息查询模块:(调用 switch 函数;给出信息提示;提示菜单选择并读入到变量;根据读入变量的值进入不同
9、的 case;Case 1 给出信息提示;提示菜单选择并读入到变量;Strcmp 函数将保存的信息与变量比较,如有相同,就输出该图书的所有信息;否则,提示出错。Case 2 给出信息提示;提示菜单选择并读入到变量;Strcmp 函数将保存的信息与变量比较,如有相同,就输出该图书的所有信息;否则,提示出错。 )5 信息修改模块:(给出信息提示;提示菜单选择并读入到变量;- 6 -Strcmp 函数将保存的信息与变量比较,如有相同,就输出该图书的所有信息,并提示输入新的图书信息;否则,提示出错。 )6信息删除模块:(给出信息提示;提示菜单选择并读入到变量;Strcmp 函数将保存的信息与变量比较,
10、如有相同,就输出该图书的所有信息,并删除该图书的图书信息;否则,提示出错。 )7排序模块(看能不能打开程序;如能,则用冒泡法排序;输出排序后的所有信息)8 文件保存模块(看文件能不能读;否则提示出错。看文件的长度符不符合要求;否则提示出错。保存文件)4 调试分析一实现程序:首先进入如下界面:1:input2:output3:save4:search5:xiugai6:del7:sort 0:exit;二输入“1” ,后按“num 登陆号 ”, book_name 书名,writer 作者名,sort。name 分类号,出版社 pubconpany,出版时间 pubtime,价钱 price 顺
11、序输入两组数据:“1,we,er,1,as,1234,34”“2,ew,re,2,sa,4321,43”三输入“3”保存。四输入“2”输出数据:“1,we,er,1,as,1234,34”“2,ew,re,2,sa,4321,43”五输入“4”查找, “请选择按书名或作者名查询:1:书名。2作者名 “输入“1“或”2“分别查询。输入“1“和“we“,输出“1,we,er ,1,as,1234,34” ;输入 2 和“re “,输出“2,ew,re,2,sa,4321,43” 符合要求六 输入”5”或“6“进行修改或删除。输入修改的书名“we”显示“1,we,er ,1,as,1234,34”及
12、“please input xiugais the informations”,后输入新信息,再输入“3”保存。七输入 7 按登陆号排序。运行正常,输入 0 退出。调试过程中,问题很多比如说编写排序和文件保存函数时,对 fopen 函数认识不够,一开始是用 if(fp=fopen(“f:c“,“rb“)=NULL)这个语句,调试的时候一直都最少都是一个错误:后来怎么弄都纠正不了。后来慢慢的查书,逐行检查。才终于改正为 if(fp=fopen(“file.c“,“wb“)=NULL)。程序终于可以运行。通过这我懂得:写程序时一定要严谨,尽可能写下的每一行不出错。否则调试时会很麻烦。- 8 -5
13、总 结本次课程设计是我这学期编写的第一个大程序,从花费的过去三天总计十七个小时中,我得到如下收获:1 用好 C 语言某种程度上关键就是用好所需的各种函数的调用,c 语言的确是一种结构化的语言。2 学会和加深了对于结构体和共用体的理解,以及在程序中怎样实现文件函数的输入输出和文件的定位。3 只有上机实践才能检验自己写的程序,看是看不出来的。4 深深懂得调试、书写规范和检错的重要性。5 连续三天每天六小时端坐在电脑前动都不能动,绞尽脑汁艰苦奋斗的经历告诉我:程序员这种工作,真的不是人干的.7.附录#include #include #include #define N 10- 10 -struct
14、 libraryint num;char book_name30;char writer30;char sort_num3;char pub_company30;char pub_time30;char prise30;typedef struct library LIB;LIB libN;FILE *fp;int all=0;int menu(void);void input(void);void output(void);void save(void);void del(void);void search(void);void xiugai(void);void sort(void);ma
15、in()for(;)switch(menu()case 1:input();break;case 2:output();break;case 3:save();break;case 4:search();break;case 5:xiugai();break;case 6:del();break;case 7:sort();break; case 0:exit(1);break;int menu(void) /*显示主菜单*/char m3;int n;printf(“tt1:inputn“);printf(“tt2:outputn“);printf(“tt3:saven“);printf(“
16、tt4:searchn“);printf(“tt5:xiugain“);printf(“tt6:deln“);printf(“tt7:sortn“);printf(“tt0:exitn“);printf(“ttplease choose a operation(0-6):n“);scanf(“%s“,m);n=atoi(m);return(n);void input(void) /*显示输入函数 */int i;char m3;for(i=all;iN;i+)all+;printf(“please input informations:n“);printf(“ttnum:n“);scanf(“
17、%d“,printf(“ttbook_name:n“);scanf(“%s“,libi.book_name);printf(“ttwriter:n“);scanf(“%s“,libi.writer);printf(“ttsort_num:n“);scanf(“%s“,libi.sort_num);printf(“ttpub_company:n“);scanf(“%s“,libi.pub_company);printf(“ttpub_time:n“);scanf(“%s“,libi.pub_time);printf(“ttprise:n“);scanf(“%s“,libi.prise);a: p
18、rintf(“ttyes/no continue input?n“);printf(“tt1:yesn“);printf(“tt2:non“);scanf(“%s“,m);if(atoi(m)=1)continue;else if(atoi(m)=2)return;else- 12 -printf(“ttinput error!n“);goto a;void output(void) /*显示输出函数 */int i;for(i=0;iall;i+)printf(“tt%dn“,libi.num);printf(“%stt%stt%sn“,libi.book_name,libi.writer,
19、libi.sort_num);printf(“%stt%stt%sn“,libi.pub_company,libi.pub_time,libi.prise);void sort(void) /*从登陆号从大到小排序的函数 */int b,i;struct library flash;if(fp=fopen(“file.c“,“wb“)=NULL) printf(“cannot open filen“);return;for(b=0;bN;b+)for(i=b+1;iN;i+)if(strcmp(libb.sort_num,libi.sort_num)0)flash=libb;libb=libi
20、;libi=flash;printf(“the down object is:n“);printf(“ num bookname writer sort_num pub_company pub_time prisen“);for(b=0;bN;b+)if(libb.sort_num0!=0)printf(“%d %s %s %s %s %s %sn“,libb.num,libb.book_name,libb.writer,libb.sort_num,libb.pub_company,libb.pub_time,libb.prise);else break;void save(void) /*文
21、件保存*/int i;if(fp=fopen(“file.c“,“wb“)=NULL)printf(“can not open the file“);exit(1);for(i=0;iall;i+)if(fwrite(exit(1);fclose(fp);void search(void) /*书名和作者名查找*/int i,flag;char m3;char name30;printf(“tt 请选择按书名或作者名查询 :n“);printf(“tt1:书名n“);printf(“tt2:作者名n“);scanf(“%s“,m);i=atoi(m);switch(i)case 1:print
22、f(“ttplease input the book_name:n“);scanf(“%s“,name);flag=0;for(i=0;iN;i+)if(strcmp(name,libi.book_name)=0)printf(“tt%dn“,libi.num);printf(“%stt%stt%sn“,libi.book_name,libi.writer,libi.sort_num);printf(“%stt%stt%sn“,libi.pub_company,libi.pub_time,libi.prise);flag=1;break;- 14 -if(flag=0)printf(“ttno
23、t find the book!n“);break;case 2:printf(“ttplease input the writer:n“);scanf(“%s“,name);flag=0;for(i=0;iN;i+)if(strcmp(name,libi.writer)=0)printf(“tt%dn“,libi.num);printf(“%stt%stt%sn“,libi.book_name,libi.writer,libi.sort_num);printf(“%stt%stt%sn“,libi.pub_company,libi.pub_time,libi.prise);flag=1;br
24、eak;if(flag=0)printf(“ttnot find the wtiter!n“);break;void xiugai(void) /*显示修改函数*/int i,flag;char name30,n3;printf(“ttplease input the book_name of xiugai :n“);scanf(“%s“,name);flag=0;for(i=0;iN;i+)if(strcmp(name,libi.book_name)=0)printf(“tt%dn“,libi.num);printf(“%stt%stt%sn“,libi.book_name,libi.wri
25、ter,libi.sort_num);printf(“%stt%stt%sn“,libi.pub_company,libi.pub_time,libi.prise);printf(“ttplease input xiugais the informations:n“);printf(“ttnum:n“);scanf(“%d“,printf(“ttbook_name:n“);scanf(“%s“,libi.book_name);printf(“ttwriter:n“);scanf(“%s“,libi.writer);printf(“ttsort_num:n“);scanf(“%s“,libi.s
26、ort_num);printf(“ttpub_company:n“);scanf(“%s“,libi.pub_company);printf(“ttpub_time:n“);scanf(“%s“,libi.pub_time);printf(“ttprise:n“);scanf(“%s“,libi.prise);flag=1;break;if(flag=0)printf(“ttnot find xiugais the book!n“);void del(void) /*显示删除函数 */int i,flag,n;char name30;printf(“ttplease input the boo
27、k_name of del:n“);scanf(“%s“,name);flag=0;for(i=0;iN;i+)if(strcmp(name,libi.book_name)=0)printf(“tt%dn“,libi.num);printf(“%stt%stt%sn“,libi.book_name,libi.writer,libi.sort_num);printf(“%stt%stt%sn“,libi.pub_company,libi.pub_time,libi.prise);libi.num=libn-1.num;strcpy(libi.book_name,libn-1.book_name)
28、;strcpy(libi.writer,libn-1.writer);strcpy(libi.sort_num,libn-1.sort_num);strcpy(libi.pub_company,libn-1.pub_company);strcpy(libi.pub_time,libn-1.pub_time);- 16 -strcpy(libi.prise,libn-1.prise);n=n-1;flag=1;printf(“ttdel ok!n“);break;if(flag=0)printf(“ttno information of the book!n“);7 答辩记录序号 问 题 回 答123458 指导教师意见指导教师签名: