




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 设 计 报 告课程名称 C语言程序设计 课题名称 图书信息管理系统专 业电子信息班 级0802班学 号25姓 名邓 慧指导教师肖伟平 罗敬 肖彬2009年 6 月 19 日湖南工程学院课 程 设 计 任 务 书课程名称 C语言程序设计 课 题 图书信息管理系统专业班级 电子信息0802班学生姓名 邓慧学 号 25指导老师 肖伟平 罗敬 肖彬审 批 任务书下达日期 2009 年 6月 19日任务完成日期 2009年 6 月 30日一、设计内容与设计要求1 设计内容:图书信息管理系统设计涉及的知识点:掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句; 掌握数组的基本概念。
2、熟练掌握一维数组、二维数组的应用、掌握字符数组与字符串的关系以及字符串的简单处理。掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。掌握结构的概念,结构类型的定义,结构变量的定义和初始化,结构成员的表示,结构的赋值含义,结构与指针、函数的关系。掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。2设计要求:1) 用C语言实现系统;利用结构体数组实现图书信息的数据结构设计;系统的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观。
3、2) 建立一个图书信息数据库,文件名为book.txt,并从该文件中读取数据;3) 图书信息管理系统应能提供以下功能:系统以菜单方式工作图书信息显示功能;显示时按表格的形式,且应有表头。图书信息追加功能;追加一条新记录,并重新排序和显示;图书信息查询功能;a. 按书名查询;b. 按单价查询; c. 按出版单位查询; d. 按出版时间查询要求系统在上述查询方式中至少应有两种以上的查询方式,且能显示符合条件的所的记录。图书信息的删除;要求可按指定的图书登录号和指定的图书书名两种定位方式删除图书记录。图书信息的修改;要求能按指定的图书登录号和按指定的图书书名两种定位方式进行修改,且可以按用户要求修改
4、记录中除图书登录号和书名以外的指定内容,并重新显示;能按图书单价排序(降序)要求在删除模块、修改模块和查询模块中若找不到所需的记录时,系统设计中应有一定的提示信息。4)说明:(1) 要求将修改后的数据写入到一个新的数据文件newbook.txt中。(2) 对系统有兴趣的同学可以在实现基本要求的基础上,完善系统的其它功能。5)图书信息管理系统采用一个结构体数组,图书信息包括:图书登录号、书名、作者名、分类号、出版单位、出版时间、价格等,其数据库结构如下:int dlh /*图书登录号*/ char sname15 /*书名*/ char zname10 /*作者名*/ int flh /*分类号
5、*/int dj /*单价*/char cbdw 20; /*出版单位*/ char cbdate10 /*出版时间*/注意:图书登录号不重复,且数据库应有10条或以上的记录。6) 要求:1 要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容;2 要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给出程序流程图和全部源程序;3 设计报告的完整格式应包括以下部分的内容: 设计总体思路; 程序及各个模块说明; 总体模块框图; 各个程序模块说明; 程序流程图; 程序清单; 课程设计总结与体会(不少于400字)。4 上机时要求必到,设计完成,必须演示程序,答辩
6、并提交设计报告。二、进度安排第 18 周 星期五 8:0012:00 星期日 15:0018:00第 19 周 星期一 19:00 22:00星期三 8:0012:00 星期四 14:30 17:30附:课程设计报告装订顺序:封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。正文的内容:一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。正文总字数要
7、求在5000字以上(不含程序原代码)。目 录一、课题主要功能1二、设计概要1三、各模块功能详细设计分析31显示模块 void Disp( )32追加模块 void Appe( )33修改模块 void Moid( )34删除模块 void Dele( )35查询模块 void Query( )36排序模块 void Sort( )4四、模块程序流程图4(1)主函数流程图:4(2) 追加模块流程图:5(3)图书修改模块:6(4) 图书删除模块:7(5)图书查询模块:8六、心得体会12七、附件131、源程序132、参考书目26一、课题主要功能该程序实现了图书馆管理的基本功能:1) 图书信息显示功能
8、;2) 图书信息追加功能;3) 图书信息查询功能;4) 图书信息的删除功能;5) 图书信息的修改功能;6) 按图书单价排序(降序)。二、设计概要主函数主要由一个switch()开关语句构成,开关语句在一个无限循环体里,开关语句里的开关是调用主菜单显示函数的返回值。除最后一个语句是强制结束整个程序的语句外,其它case都是调用相应的函数,完成相应的功能。各调用情况如下: case1:调用计算函数 case 2:调用显示函数、case 3:调用添加函数、case 4:调用修改函数、 case 5:调用删除函数 、 case 6:调用查询函数、 case 7:调用排序函数、case 8:调用统计平均
9、分函数,case 9:调用统计总分函数,主函数将保证每调用完一个函数之后又调用显示函数,然后按任意键又重新回到主菜单,以便用户进行下一次的操作。在每个模块中首先都会显示选择的子菜单,以图的形式增加了可读性,方便操作。运行主函数选择菜单图:系统主要由显示模块、追加模块、修改模块、删除模块、查询模块、排序模块六大模块组成。下面将介绍每个模块的功能及与他们之间的关系. 模块图如下:Main()主菜单模块删除模块查询模块 退出膜块修改模块追加模块显示模块三、各模块功能详细设计分析1显示模块 void Disp( )该模块会显示数据库中的所有图书的信息,并按列表形式输出。函数中用了一个for循环及pri
10、ntf语句实现依次输出每一本书的登录号,图书名,作者名,分类号,单价,出版时间,出版单位。最后在界面上以列表的形式显示书的信息因此我们可以浏览每本书的信息2追加模块 void Appe( )该模块会在数据库中增加一条接下来所输入的数据,然后连同的那组数据一起输出。该模块就是简单的利用printf语句和scanf语句来输入将要增加的信息3修改模块 void Moid( )该模块中可选择两种不同的途径来修改数据库中的数据,一种是按图书登录号来搜索所要修改的数据,另一种是按图书名来搜索所要修改的数据。确定所要修改的图书登录号或者图书名后,输入所要修改的信息。新信息输入完毕后,程序会输出修改后的所有数
11、据。模块利用switch-case语句及for循环嵌套,来实现信息的录入。4删除模块 void Dele( )该模块中可选择两种不同的途径来删除数据库中的数据,一种是按图书登录号来搜索所要删除的数据,另一种是按图书名来搜索所要删除的数据。确定所要删除的图书登录号或者图书名后,程序会输出删除后的所有数据。函数利用switch-case语句,if语句及for循环嵌套,来删除用户所要删除的信息。5查询模块 void Query( )该模块中可选择两种不同的途径来查询数据库中的数据,一种是按图书登录号来查询,另一种是按图书名来查询。确定所要查询的图书登录号或者图书名后,程序会输出所查询的该条数据。6排
12、序模块 void Sort( )该模块会按图书单价降序排列数据库中的各组数据。函数运用双重for循环嵌套来排序。四、模块程序流程图(1)主函数流程图:读入数据从菜单界面输入选择值menu-selcet执行显示函数执行修改函数执行追加函数执行删除函数执行查询函数执行退出函数创建新数据库结束(2) 追加模块流程图:开始追加登录号追加作者名追加图书名追加分类号追加书单价追加出版单位追加出版日期退出循环(3)图书修改模块:Si.dlh!=xError从菜单中选择按登录号或书名修改或书名修改开始开始Case1:按登录号修改Case2:按图书名修改输入登录号输入图书名判断登录号(x)判断图书名(y)输入修
13、改内容输入修改内容显示修改后的内容退出程序ErrorSi.dlh=xSi.sname=ySi.sname!=y(4开始char k10;char w;int x,select,m,n;输入select,switch(select)case 1:输入n;m=0x=0x<N-1If(sx.dlh=n)while(x!=N-1)sx=sx+1;x+;m=1;N-;If(sN-1.dlh=n)sN-1=sN-2;m=1;N-;If(m=0)break;x+Case 2:输入k,m=0x=0x<N-1if(strcmp(sx.sname,k)=0)while(x!=N-1) sx=sx+1;
14、x+;m=1;N-;if(strcmp(sN-1.sname,k)=0)sN-1=sN-2;m=1;N-;if(m=0)break;x+if(x=N)printf("nSorry,we have no record for seek!n");getch();if(x<N)printf("nAre you realy want to delect?nPlease choose:y/n:");getch();scanf("%c",&w);if(x='y') while(x<N-1)sx=sx+1;x+;
15、N-;if(x='n')getchar();退出循环)图书删除模块:(5)图书查询模块:从菜单选择按单价或书名查找Case1:按单价查询Case2:按书名查询ErrorError显示查询结果退出程序判断单价Si.dlh与输入的单价是否有匹配的判断书名Si.sname与输入的书名是否匹配是否有匹配的开始否是否是五、 部分运行界面截图1 、显示模块运行截面图运行程序菜单框图中选则1,按回车。运行结果如下图:2、追加模块运行截面图按任意键返回主菜单,输入2,按回车键,进入如下界面,输入要插入信息:198,cyuyan,yangluming,202,23,beijing,2005.06
16、按回车,即出现下面的界面。3、修改模块运行截面图按任意键返回主菜单,输入3,输入登录号103,输入修改信息:225,sanmao,yuqiu,123,28,yunnan,2009.09再回车,即可修改,运行结果如下:4、删除模块运行截面图按任意键返回主菜单,输入4,回车,运行,在菜单中选2,输入gaoshu,运行如下:5、查询模块运行截面图按任意键返回主菜单,输入5,回车,运行,选择查找方式,输入书名lishi查找,结果如下图:六、心得体会为期一周的C语言课程设计已经结束,在这一周的时间里我感触良多,收获也颇丰!在这一周的课程设计里总共上了四次机,虽然每次上机的时间比较长,眼镜比较疲劳,感觉比
17、较累,但小组成员的互帮互助,团结一心让我深受感动。我的c语言平时学得不怎么好,所以编程对我来说很有难度,但漫长的几个小时坐那不干事只会更无聊,于是我便硬着头皮开始编写程序,不用说在编写的过程中遇到很多困难。我于是向我们组的其他成员请教,他们非常的热心的指导我,非常耐心的解答我的问题。最让我感动的是,不管他们在思考程序,在编写程序还是在调试程序,总是随叫随到。曾经有人说过扛过枪的,下过乡的,同过窗的感情是最浓厚的,这次我深有感触。在调程序的过程中我们小组成员之间会共同讨论,共同解决问题,紧紧的团结在一起,所以我们如期完成了程序的编写,团结真的能够迸发出强大的力量。这周的课程设计不仅让我收获了友情
18、,也使我懂得再难得事再不想干的事只要勇敢的迈出第一步,然后虚心的向别人求教就会获得属于你的成功。所以一个本不愿编程不会编程的我最终确编出了好几个模块,这就是我的成功。俗话说得好,细节决定成败。在这次课程设计的过程中就证实了这一点,一个小小的分号,一个不起眼的括号就决定的你的程序能否运行。我感受最深的就是在编写查询模块时,运行时总是提示错误的信息和查询的表格同时出来,或者就是不论输入的登录号在数据库中是否有,它都是显示错误信息。我一遍又一遍的检查我的程序,左改右改总是不对,左看有看总是找不出问题所在。在不断地改不断地运行的过程中,时间就悄悄的溜到深夜12点半了,我几乎都到崩溃的边缘的,好几个小时
19、毫无进展,第二天就要答辩,程序还没弄好,怎么办啊?我是又气又急。第二天我搬到了救兵,找了以同学帮我找问题。他一看就告诉我是少了一个大括号,他的反应如此迅速,使我不禁感到惭愧。他帮我添上括号后程序就能运行了,我还像在做梦似的。人家几十秒钟办到了我几个小时都办不到的事,一小小的括号就让我的真个庞大的程序陷入无法运行状态。这次经历让我深刻的知道,细节不容忽视,熟能生巧!那同学能在第一时间反应出来是少了一个括号的缘故,可见他平时是有认真学,认真思考,做题做得相对来说比较多的。这次经历也可以说是一种打击,人家强出我好多倍的效率让我无地自容。这又不得不让我深思我这学期的学习态度。上课不听课,不去上课,就这
20、样一年糊里糊涂的过了,我到底收获了什么?蓦然回首,一年下来我依旧如刚进大学,两手空空。我很惭愧!这次上机不仅仅让我学到好多东西,同时也深深地教育了我,让我在接下来的大学生活中好好学习,好好充实自己,别再需要用到所学知识时才发现自己脑袋空空如也。七、 附件1、源程序#include "stdio.h"#include "string.h"#include "conio.h"int N=0;struct stu int dlh; /*图书登录号*/ char sname15; /*书名*/ char zname10; /*作者名*/ in
21、t flh; /*分类号*/ int dj; /*单价*/ char cbdw 20; /*出版单位*/ char cbdate10; /*出版时间*/ s40;void Re_file() FILE *fp; fp=fopen("f:book.txt","r"); while( fscanf(fp,"%dn%sn%sn%dn%dn%sn%sn",&sN.dlh,sN.sname,sN.zname,&sN.flh,&sN.dj,sN.cbdw,sN.cbdate)!=EOF) N+; fclose(fp);vo
22、id Wr_file()int i; FILE *fp; fp=fopen("f:newbook.txt","w"); for(i=0;i<N;i+) fprintf(fp,"%dn%sn%sn%dn%dn%sn%sn",si.dlh,si.sname,si.zname,si.flh,si.dj,si.cbdw,si.cbdate); fclose(fp);void Disp() /*显示模块*/int i;printf("-n");printf("dlh sname zname flh dj cb
23、dw cbdaten");printf("-n");for(i=0;i<N;i+)printf("%-5d%-10s%-10s%-8d%-10d%-20s%-10dn",si.dlh,si.sname,si.zname,si.flh,si.dj,si.cbdw,si.cbdate);printf("n");void Appe() /*追加模块*/printf("Please input dlh:");scanf("%d",&sN.dlh); printf("Pl
24、ease input sname:");scanf("%s",sN.sname); printf("Please input zname:");scanf("%s",sN.zname); printf("Please input flh:");scanf("%d",&sN.flh); printf("Please input dj:");scanf("%d",&sN.dj); printf("Please input c
25、bdw:");scanf("%s",sN.cbdw); printf("Please input cbdate:");scanf("%s",sN.cbdate); N+;void Modi() /*修改模块*/int n,t,x,y,z,log,i; char a15,b10,c20,d10; printf(" *n"); printf(" * *n"); printf(" * 1.dlh 2.sname *n"); printf(" * *n"
26、); printf(" *n"); printf("Input your selection:"); scanf("%d",&n); switch(n) case 1:printf("Please input dlh:");scanf("%d",&x); log=0; for(i=0;i<N;i+) if(si.dlh=x) printf("input dlh:"); scanf("%d",&t); /*输入新的登录号*/ s
27、i.dlh=t; printf("input sname:"); scanf("%s",a); /*输入新的书名*/ strcpy(si.sname,a); printf("input zname:"); scanf("%s",b); /*输入新的作者名*/ strcpy(si.zname,b); printf("input flh:"); scanf("%d",&y); /*输入新的分类号*/ si.flh=y; printf("input dj:&quo
28、t;); scanf("%d",&z); /*输入新的单价*/ si.dj=z; printf("input cbdw:"); scanf("%s",c); /*输入新的出版单位*/ strcpy(si.cbdw,c); printf("input cbdate:"); scanf("%s",d); /*输入新的出版日期*/ strcpy(si.cbdate,d);log=1; if(log=0) printf("error!n");break; case 2:pri
29、ntf("Please input sname:"); scanf("%s",a); log=0; for(i=0;i<N;i+) if(strcmp(si.sname,a)=0) printf("input dlh:"); scanf("%d",&x); /*输入新的登录号*/ si.dlh=x; printf("input sname:"); scanf("%s",a); /*输入新的书名*/ strcpy(si.sname,a); printf("
30、;input zname:"); scanf("%s",b); /*输入新的作者名*/ strcpy(si.zname,b); printf("input flh:"); scanf("%d",&y); /*输入新的分类号*/ si.flh=y; printf("input dj:"); scanf("%d",&z); /*输入新的单价*/ si.dj=z; printf("input cbdw:"); scanf("%s",c)
31、; /*输入新的出版单位*/ strcpy(si.cbdw,c); printf("input cbdate:"); scanf("%s",d); /*输入新的出版日期*/ strcpy(si.cbdate,d);log=1; if(log=0) printf("error!n");break; void Dele() /*删除模块*/int i,n,t,log;char a15; printf(" *n"); printf(" * *n"); printf(" * 1.dlh 2.s
32、name *n"); printf(" * *n"); printf(" *n"); printf("Input your selection:"); scanf("%d",&n); switch(n) case 1:printf("input dlh:"); scanf("%d",&t);log=0; for(i=0;i<N-1;i+) if(si.dlh=t)/*判断输入的登录号是否在数据库中存在*/ while(i!=N-1) si=si
33、+1;i+;/*若存在就用后面一个覆盖指定删除*/ log=1;N-; if(sN-1.dlh=t) sN-1=sN-2;log=1;N-; if(log=0) printf(" *n");/*不存在显示错误提示*/ printf(" * Error! *n"); printf(" *n"); break; case 2:printf("input sname:"); scanf("%s",a);log=0; for(i=0;i<N-1;i+) if(strcmp(si.sname,a)=
34、0) /*判断输入的书名是否在数据库中存在*/ while(i!=N-1) si=si+1;i+;/*用下一个覆盖指定删除的*/ log=1;N-; if(strcmp(sN-1.sname,a)=0) sN-1=sN-2;log=1;N-; if(log=0) printf(" *n");/*不存在就显示错误提示*/ printf(" * Error! *n"); printf(" *n"); break; void Query() /*查找模块*/ int i,n,m,j,log=0; char str15; printf(&qu
35、ot; *n"); printf(" * *n"); printf(" * 1.dj 2.sname *n"); printf(" * *n"); printf(" *n"); printf("Please input your selection:"); scanf("%d",&m); if(m=1) printf("Please input dj:"); scanf("%d",&n); for(i=0;i&
36、lt;N;i+) if(n=si.dj) /*判断输入的单价是否在数据库中找到*/ log=1;j=i; if(log=0) printf(" *n"); /*找不到显示错误提示*/ printf(" * Error! *n"); printf(" *n"); else if(m=2) printf("Please input sname:"); scanf("%s",str); for(i=0;i<N;i+) if(strcmp(si.sname,str)=0) /*判断输入的书名是否在数据库中存在*/ log=1;j=i; if(log=0) printf(" *n"); /*不存在显示错误提示*/ printf(" * Error! *n"); printf(" *n"); if(log=1) printf("*n"); printf("dlh sname zname flh dj cbd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 开门市股东协议书
- 展会主承办协议书
- 聘诊所法人协议书
- 老婆带孩子协议书
- 考编后就业协议书
- 弟媳保管钱协议书
- 老挝自驾游协议书
- 文明养宠物协议书
- 烘焙店外出协议书
- 瑜伽馆收购协议书
- 智能教育技术驱动的个性化学习路径优化研究
- 基层治理现代化视角下“枫桥经验”的实践路径与创新研究
- 通信光缆租用协议合同书
- 2024-2025部编版小学道德与法治一年级下册期末考试卷及答案(三套)
- 医疗救助资金动态调整机制-洞察阐释
- 篮球培训报名合同协议
- 金属非金属矿山重大事故隐患判定标准-尾矿库
- 自考00061国家税收历年真题及答案
- 公共组织绩效评估-形考任务一(占10%)-国开(ZJ)-参考资料
- 冠状动脉介入诊断治疗
- 高效催化剂的开发与应用-全面剖析
评论
0/150
提交评论