C语言课程设计--------图书信息管理系统报告_第1页
C语言课程设计--------图书信息管理系统报告_第2页
C语言课程设计--------图书信息管理系统报告_第3页
C语言课程设计--------图书信息管理系统报告_第4页
C语言课程设计--------图书信息管理系统报告_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课 程 设 计 报 告课程名称 C语言程序设计 课题名称 图书信息管理系统 专 业 机械电子 班 级 1101班 学 号 姓 名 指导教师 2012年 12 月 19 日湖南工程学院课 程 设 计 任 务 书课程名称 C语言程序设计 课 题 图书信息管理系统 专业班级 学生姓名 学 号 指导老师 审 批 任务书下达日期 2012 年 12月 19日任务完成日期 2012 年 12 月 29日一、设计内容与设计要求1 设计内容:图书信息管理系统设计涉及的知识点:掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;掌握数组的基本概念。熟练掌握一维数组、二维数组的应用、掌握字符数组与

2、字符串的关系以及字符串的简单处理。掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示,结构体变量的赋值含义,结构体与指针、函数的关系。掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。2设计要求:1) 用C语言实现系统;利用结构体数组实现图书信息的数据结构设计;系统的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。2) 建立一个图书信息数据库,文

3、件名为book.txt,并从该文件中读取数据;3) 图书信息管理系统应能提供以下功能:系统以菜单方式工作图书信息显示功能;能以表格形式显示图书库中所有信息,且应有表头。图书信息追加功能;追加一条(或多条)新记录,要求在追加过程中有相应的提示信息,完成追加后能重新排序和显示;图书信息查询功能;a. 按书名查询;b. 按单价查询; c. 按出版单位查询; d. 按出版时间查询e. 按分类号查询; f. 按入库时间查询要求系统在上述查询方式中至少应有两种以上的查询方式,且能显示符合条件的所有记录。图书信息的删除;要求可按指定的图书编号和指定的图书书名两种定位方式删除图书记录。图书信息的修改;要求能按

4、指定的图书编号和按指定的图书书名两种定位方式进行修改,且可以按用户要求修改记录中除图书编号和书名以外的指定内容,并重新显示;图书信息的统计:能按指定的图书分类号或按指定的单价两种方式分别进行统计,并将统计的结果以及被统计的图书信息用表格的形式显示;能按图书单价排序(降序)要求在删除模块、修改模块和查询模块中若找不到所需的记录时,系统设计中应有一定的提示信息。4) 说明:(1) 要求将修改后的数据写入到一个新的数据文件newbook.txt中。(2) 对系统有兴趣的同学可以在实现基本要求的基础上,完善系统的其它功能。5) 图书信息管理系统采用一个结构体数组,图书信息包括:图书编号、分类号、书名、

5、作者名、出版单位、出版时间、入库时间、价格等,其数据库结构如下:int bh /*图书编号*/ int flh /*分类号*/char sname15 /*书名*/ char zname10 /*作者名*/char cbdw 20; /*出版单位*/char cbdate8 /*出版时间*/ char rkdate8 /*入库时间*/double dj /*单价*/ 注意:图书编号不能重复且不少于4位数字,各项字符串的长度要求在410之间,数据库应有10条或多于10条以上的记录。6) 要求:1 要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容;2 要求学生必须按照课程设计报告

6、的完整格式说明设计内容,设计任务分析过程和算法,给出程序流程图和全部源程序;3 设计报告的完整格式应包括以下部分的内容:系统设计总体思路;系统的主要功能;系统功能模块的划分(要求画出总体模块框图);主要功能的实现和各个程序模块说明(每个功能模块的框图、系统主模块的流程图,各个功能模块至少要有一个主要的流程图);程序调试过程及各模块调试中相应的部分截图;课程设计总结与体会(不少于500字)。课程设计参考文献;程序清单;4 课程设计周内,凡规定的集中上机时间必须到机房调试程序; (5) 设计完成后必须参加答辩,并按要求演示程序,提交课程设计报告和有关电子文档。7)分组及安排所选题目根据学生班号和学

7、号确定,(班号+学号)% 6+1。如你的班号为01班、学号为01,则所选题目号为:(1+1)%6+13,即课题号为3。8)成绩评定程序设计方案是否合理;程序设计是否正确;调试结果;设计说明书的质量高低;答辩时回答问题情况;课程设计周表现情况;总评成绩记入“课程设计成绩评分表”。二、进度安排 第 16 周 星期四 14:0017:00 讲课、布置任务第 17 周 星期一 8:0012:00 机房上机调试程序星期二 8:0012:00 机房上机调试程序星期三 19:0022:00 机房上机调试程序 星期四 8:0012:00 机房上机调试程序、答辩附:课程设计报告排版、打印和装订要求1. 课程设计

8、报告装订顺序:封面、任务书、目录、正文、附件、评分表。按A4大小的纸张排版和打印。 2. 设计报告的页码从目录之后开始使用;3. 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22磅。正文中程序清单(英文)用英文字体Times New Roman,单倍行间距。 4. 正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试(各模块至少有一个程序调试的截图);五、总结(不少于500字);六、参考文献;t、附件(包含所有程序的原代码,且程序中应有必要的注释)。八.正文总字数要求在5

9、000字以上(不含程序原代码)。5设计报告中任务书和评分表不需重新排版。目 录一系统的主要思路1二.系统的主要功能11.显示功能12.追加功能13.修改模块14.删除模块15.查询模块16.统计模块27.排序模块28.退出模块2三.系统功能模块的划分21.总体模块功能框图2四.总流程图21.总流程图22.八大模块的流程图5五程序调试121.显示模块132.追加模块143.修改模块164.删除模块185.查询模块206.统计模块247.排序模块268.退出模块28六心得与体会28七参考文献29八附件29一系统的主要思路 此系统事用C语言实现一个图书馆信息管理系统;利用结构体数组实现图书馆信息的数

10、据结构;例如,删除图书信息、追加图书信息、修改图书信息、图书信息的统计等等;系统的各个功能调用各个函数的形式实现;并提供一个界面来调用,各个功能的操作。 首先我们要对系统操作就必须先创建一个数据库,用来存放各图书的信息,如:图书编号、分类号、书名、作者名、出版单位、出版时间、入库时间、单价等。并用读函数fscanf读取数据,然后才能进入主控程序。然后,运行该程序显示的为主菜单界面,并且主菜单界面显示调用各个功能函数的功能键;通过提示用户,调用各个功能操作。按下相应的功能键,就会进入相应的功能模块系统,并进行相应的操作。程序操作完并正常退出后,系统又会调用写函数fprintf将修改过的数据存入一

11、个新的文件。 图书馆信息管理系统存放了每种图书的图书编号、分类号、书名、作者名、出版单位、出版时间、入库时间、单价的数据库。每本书的信息定义在一个结构体变量中。其结构如下:系统通过显示程序、追加程序、查询程序、删除程序、修改程序、排序程序来实现图书馆信息管理系统的显示功能、追加功能、查询功能、删除功能、修改功能、排序功能和统计功能。各个功能的调用通过主函数中的switch语句来实现。二、系统的主要功能1.显示模块Disp()通过设计此模块,来实现图书馆图书信息的显示。以便于浏览图书信息。2.追加模块Appe()通过设计此模块,以便当加入新的图书信息的时候,来实现新图书信息的加入。3.修改模块M

12、odi()通过设计此模块,当要对某一信息进行修改时,可以通过此模块来进行修改。并且可以按用户指定的信息进行修改。4.删除模块Dele()通过设计此模块,可以按用户指定的图书编号和指定的图书书名进行图书记录的删除。5.查询模块Query()通过设计此模块,可以按图书编号和书名来查询图书库的所有的信息,并可以显示所查询的图书信息。6.统计模块Total()通过设计此模块,当输入所要统计的图书的单价或分类号时,可以按图书的单价和分类号进行统计,并显示统计之后的图书总数。7.排序模块Sort()通过设计此模块,来实现书籍库的信息按图书单价进行排序。8.退出模块Quit()通过设计此模块,来实现退出系统

13、主菜单。三系统功能模块的划分1.总体模块功能框图主函数显示模块追加模块删除模块查询模块排序模块退出模块修改模块退出四总流程图1.总流程图进入输出Sele=?退出程序输出Sele=6Sele=4Sele=5Sele=1退出Sele=2追加模块排序模块修改模块删除模块查询模块统计模块显示模块Sele=32.八大模块的流程图2.1显示模块Disp 开始输入1显示模块输出退出 2.2追加模块Appe()开始输入2追加模块输出追加几个人的信息 退出显示模块2.3修改模块Modi()输入修改信息(图书编号)开始输入3修改模块n =?输入n输入修改信息(图书书号)Sele=1Sele=2输入mm = ?显示

14、模块退出Sele=1Sele=22.4删除模块Dele()开始输入4删除模块输入删除信息n=?输入1或2 退出Sele=1Sele=22.5查询模块Query()开始输入5查询模块输入nn = ?图书编号图书书名查询信息输入mm = ?退出Sele=1Sele=2Sele=1Sele=2Sele=32.6统计模块Total()开始输入6统计模块输入统计信息输出显示信息退出27排序模块Sort()开始输入7排序模块输入排序信息输出排序信息n = ?退出Sele=1Sele=22.8退出模块Quit()开始输入8退出五程序调试 在VC的环境下,调试程序,进入图书馆管理菜单界面。1.显示模块Disp

15、()从菜单界面输入“1”,进入显示模块,如下图所示。显示的信息如上图所示,按任意键能退出。2 . 追加模块Appe()输入你所要追加的个数,进行追加图书的信息逐个追加信息如上图所示,根据提示,进行完成追加。若选择1,则继续追加;若选择2,则退出此模块,并进入显示模块如下图示。 3. 修改模块Modi()在主菜单界面上,输入数字3,进入修改模块若输入数字1,则按图书编号修改,如上图修改后结果如上修改完后,按任意键能退出此模块,并显示主菜单。4.删除模块Dele()在主界面上输入数字4,进入删除模块选择1,按图书编号删除,如上图所示。删除后的结果如下。按任意键退出,返回主界面。5. 查询模块Que

16、ry()在主界面上输入数字5,进入查询模块输入1,则进行查询,否则,退出系统。若输入1,则按图书编号查询,查询结果如下图所示 若输入2,则按书名进行查询,输入对应的书名,结果如图所示若输入1,则继续进行查询若输入2,则退出此模块,并返回主界面6. 统计模块Tottal()在主界面上输入数字6,进入统计模块若输入数字1,则按单价进行统计若输入数字2,则按分类号进行统计 7.排序模块Sort()在主界面上输入数字7,进入排序模块若输入数字1,则按单价升序排序,结果结果如图所示若输入数字2,则按单价降序进行排序,结果如图所示8. 退出模块Quit()在主界面上输入数字8,进入退出系统模块,完成此次查

17、询。六心得与体会一周的C语言课程设计结束了,对我来说收获颇多,但同时也体会到了,C语言的博大精深,自己现在所涉猎的还很少。我们都知道,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。在刚刚开始进行课程设计是,我们大部分都无处下手,但随着思路的慢慢清晰,我们逐渐找到了感觉。从拿到课题到完成整个编程,虽然是短短一周的日子里,但我们学到了很多很多的东西,同时巩固了以前所学过的知识和发现了以前的知识漏洞。我这次的课题是图书馆管理系统,图书馆管理系统是我们平时学习时用得到的。我认为课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的

18、。同时我也体会到了把理论知识运用到实际所带来的乐趣。在课程设计一开始,肖老师给了我们一个框架,这样我们就有了一个整体的思路,我想,如果没那一个框架,我们很难完成这个图书馆管理系统。通过这次课程设计,我体会到了,只有不断思考,从不同角度去思考一问题,我们会有很多个最优解。一周的时间很快就过去了,但C语言的学习并没有停止,这这是C语言学习过程中的冰山一角。不过,这次让我领悟许多。最后,我想说,感谢各位老师的热情指导,有了你们的指导,我收获颇多。七参考文献:1 贾宗璞,许合利,C语言程序设计,人民邮电出版社,2012.12 黄晓宇,肖伟平,丁敬忠,陈志斌,大学计算机基础,北京邮电大学出版社,2010

19、.83 谭浩强,C程序设计(第五版),北京:清华大学出版社,2011.1八附件: #include stdio.h#includestdlib.h#include string.h#include conio.hint N=0;struct stu int bh; /*图书编号*/ int flh; /*分类号*/ char sname10; /*书名*/ char zname10; /*作者名*/ char cbdw 12; /*出版单位*/ char cbdate8; /*出版时间*/ char rkdate8; /*入库时间*/ double dj; /*单价*/ s40;void Re

20、_file() FILE *fp; fp=fopen(book.txt,r); while( fscanf(fp,%dn%dn%sn%sn%sn%sn%sn%lfn,&sN.bh,&sN.flh,sN.sname,sN.zname,sN.cbdw,sN.cbdate,sN.rkdate,&sN.dj)!=EOF) N+; fclose(fp);void Wr_file()int i; FILE *fp; fp=fopen(newbook.txt,w); for(i=0;iN;i+) fprintf(fp,%dn%dn%sn%sn%sn%sn%sn%lfn,si.bh,si.flh,si.sna

21、me,si.zname,si.cbdw,si.cbdate,si.rkdate,si.dj); fclose(fp);void Disp() /*显示模块*/ int i; system(cls); printf(-); printf( 图书馆信息管理系统 ); printf(*); printf(图书编号 分类号 书号 作者名 出版单位 出版时间 入库时间 单价 n); for(i=0;iN;i+) printf(%-8d %-6d %-11s %-8s %-13s %-8s %-9s %-7lfn,si.bh,si.flh,si.sname,si.zname,si.cbdw,si.cbda

22、te,si.rkdate,si.dj); printf(*); printf(-n);void Appe() /*追加模块*/ int i,j,k; system(cls); printf(*n);printf(* *n);printf(* 请问您要追加几条信息 ? *n);printf(* *n);printf(*n);printf(请您输入要追加几条信息的数字:);scanf(%d,&j);for(i=1;i=j;i+) printf(您添加的图书编号为:); scanf(%d,&sN.bh);printf(您添加的分类号:);scanf(%d,&sN.flh);printf(您添加的书名

23、为:);scanf(%s,sN.sname);printf(您添加的作者名为:);scanf(%s,sN.zname);printf(您添加的出版单位为:);scanf(%s,sN.cbdw);printf(您添加的出版时间为:);scanf(%s,sN.cbdate);printf(您添加的入库时间为:);scanf(%s,sN.rkdate);printf(您添加的单价为:);scanf(%lf,&sN.dj);N+;printf(请问您是否还要追加?n);printf(*n);printf(* 继续请按1 否则请按2 *n);printf(*n);scanf(%d,&k);switch(

24、k) case 1:Appe();break; case 2: ;break;void Modi() /*修改模块*/ system(cls); int i,j,k,n,m,x,y,z;double y1; char sm50,ch20; printf(*n);printf(* *n);printf(* *(1)按图书编号修改*(2)按图书书名修改* *n);printf(* *n); printf(*n); printf(请您选择1或2,进入编号修改或书名修改n); scanf(%d,&m); if(m=1) printf(*n);printf(* *n); printf(* 请输入您所要修

25、改的图书编号 *n);printf(* *n);printf(*n); scanf(%d,&n); for(i=0;iN;i+); if(n=si.bh) printf(*); printf(图书编号 分类号 书名 作者名 出版单位 出版时间 入库时间 单价 n); printf(%-8d %-6d %-11s %-8s %-13s %-8s %-9s %-7lfn,si.bh,si.flh,si.sname,si.zname,si.cbdw,si.cbdate,si.rkdate,si.dj); printf(*); printf(n); k=1;j=i; else if(m=2) prin

26、tf(*n); printf(* *n); printf(* 请输入您所要修改的图书书名 *n); printf(* *n); printf(*n); scanf(%s,sm); for(i=0;iN;i+) if(!strcmp(sm,si.sname) printf(*); printf(图书编号 分类号 书号 作者名 出版单位 出版时间 入库时间 单价 n); printf(%-8d%-6d%-11s%-8s%-13s%-8s%-9s%-7lfn,si.bh,si.flh,si.sname,si.zname,si.cbdw,si.cbdate,si.rkdate,si.dj); prin

27、tf(*); printf(n); k=1;j=i; if (k=1) printf(*n); printf(* * *n); printf(* * * *n); printf(* * 1.图书编号 2.分类号 * *n); printf(* * * *n); printf(* * 3.图书书号 4.作者名 * *n); printf(* * * *n); printf(* * 5.出版单位 6.出版时间 * *n); printf(* * * *n); printf(* * 7.入库时间 8.单价 * *n); printf(* * * *n); printf(* * *n); printf

28、(*n);printf(请输入您的选择进行继续修改:);scanf(%d,&x);switch(x) case 1:printf(输入您的图书编号:);scanf(%d,&y);sj.bh=y;break; case 2:printf(输入您的分类号:);scanf(%d,&y);sj.flh=y;break; case 3:printf(输入您的图书书号:);scanf(%s,ch);strcpy(sj.sname,ch);break; case 4:printf(输入您的作者名:);scanf(%s,ch);strcpy(sj.zname,ch);break; case 5:printf(

29、输入您的出版单位:);scanf(%s,ch);strcpy(sj.cbdw,ch);break; case 6:printf(输入您的出版时间:);scanf(%s,ch);strcpy(sj.cbdate,ch);break; case 7:printf(输入您的入库时间:);scanf(%s,ch);strcpy(sj.rkdate,ch);break; case 8:printf(输入您的单价:);scanf(%lf,&y1);sj.dj=y1;break;default:printf(无此选项!n);break;elseprintf(*n);printf(* *n);printf(*

30、 您的输入有错误,没有您所要的信息 *n);printf(* *n);printf(*n);printf(请问还要继续修改吗?n);printf( 1.是 2.否 n);printf(请您选择:n);scanf(%d,&z);switch(z)case 1:Modi();break;case 2: ;break;void Dele() /*删除模块*/ system(cls); int m,n,k=0,j,i,t; char sh10; printf(*n); printf(* *n); printf(* (1)按图书编号删除*(2)按图书书名删除* *n); printf(* *n); pr

31、intf(*n); printf(请您选择1或2:); scanf(%d,&m); if(m=1) printf(*n); printf(* *n); printf(* 请输入要删除的图书编号 *n); printf(* *n); printf(*n); scanf(%d,&n); for(i=0;iN;i+) if(n=si.bh ) k=1;j=i;else if(m=2) printf(*n); printf(* *n); printf(* 请输入要删除的图书书名号 *n); printf(* *n); printf(*n); scanf(%s,sh); for(i=0;iN;i+) i

32、f(!strcmp(si.sname,sh)k=1;j=i;if(k=1)for(i=j;iN;i+)si=si+1; N-;else printf(*n); printf(* *n); printf(* 没找到您所要删除的信息 *n);printf(* *n);printf(*n);printf(*n); printf(* 是否要继续 *n); printf(* 1.是 2.否 *n); printf(*n);scanf(%d,&t);if(t=1) Dele(); else if(t!=1&t!=2)printf(*n); printf(* *n); printf(* 你的输入有误! *n

33、);printf(* *n);printf(*n);void Query() /*查询模块*/ system(cls); int i,m,j,d;char c10;printf(*n);printf(* *n);printf(* 欢迎进入查询模块 *n);printf(* *n);printf(*n);for(i=0;i+)printf(*n); printf(* 1.查询 *n); printf(* 2.退出 *n); printf(*n);scanf(%d,&m);if(m!=1&m!=2)printf(*-*-*-*-*-*-*-*-*-*-*n); printf(*无此选项/请重新输入*n); printf(*-*-*-*-*-*-*-*-*-*-*n);continue;elseif(m=2)break;else printf(*n); printf(* 按什么方式查询 *n); printf(* 1.图书编号 *n); printf(* 2.书名 *n); printf(* 3.返回上级 *n); pr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论