图书信息管理系统.docx
- 文档编号:27744903
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:31
- 大小:317.74KB
图书信息管理系统.docx
《图书信息管理系统.docx》由会员分享,可在线阅读,更多相关《图书信息管理系统.docx(31页珍藏版)》请在冰豆网上搜索。
图书信息管理系统
课程设计报告
课程名称C语言程序设计
课题名称图书信息管理系统
专业电子信息
班级0802班
学号25
姓名邓慧
指导教师肖伟平罗敬肖彬
2009年6月19日
湖南工程学院
课程设计任务书
课程名称C语言程序设计
课题图书信息管理系统
专业班级电子信息0802班
学生姓名邓慧
学号25
指导老师肖伟平罗敬肖彬
审批
任务书下达日期2009年6月19日
任务完成日期2009年6月30日
一、设计内容与设计要求
1.设计内容:
图书信息管理系统设计
涉及的知识点:
①掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;
②掌握数组的基本概念。
熟练掌握一维数组、二维数组的应用、掌握字符数组
与字符串的关系以及字符串的简单处理。
③掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。
④掌握结构的概念,结构类型的定义,结构变量的定义和初始化,结构成员的表示,结构的赋值含义,结构与指针、函数的关系。
⑤掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。
2.设计要求:
1)用C语言实现系统;利用结构体数组实现图书信息的数据结构设计;系统
的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,
调用界面和各个功能的操作界面应尽可能清晰美观。
2)建立一个图书信息数据库,文件名为book.txt,并从该文件中读取数据;
3)图书信息管理系统应能提供以下功能:
①系统以菜单方式工作
②图书信息显示功能;显示时按表格的形式,且应有表头。
③图书信息追加功能;追加一条新记录,并重新排序和显示;
④图书信息查询功能;
a.按书名查询;b.按单价查询;c.按出版单位查询;d.按出版时间查询
要求系统在上述查询方式中至少应有两种以上的查询方式,且能显示符合条件的所的记录。
⑤图书信息的删除;要求可按指定的图书登录号和指定的图书书名两种定位方式删除图书记录。
⑥图书信息的修改;要求能按指定的图书登录号和按指定的图书书名两种定位方式进行修改,且可以按用户要求修改记录中除图书登录号和书名以外的指定内容,并重新显示;
⑦能按图书单价排序(降序)
⑧要求在删除模块、修改模块和查询模块中若找不到所需的记录时,系统设计中应有一定的提示信息。
4)说明:
(1)要求将修改后的数据写入到一个新的数据文件newbook.txt中。
(2)对系统有兴趣的同学可以在实现基本要求的基础上,完善系统的其它功能。
5)图书信息管理系统采用一个结构体数组,图书信息包括:
图书登录号、书名、
作者名、分类号、出版单位、出版时间、价格等,其数据库结构如下:
intdlh/*图书登录号*/
charsname[15]/*书名*/
charzname[10]/*作者名*/
intflh/*分类号*/
intdj/*单价*/
charcbdw[20];/*出版单位*/
charcbdate[10]/*出版时间*/
注意:
图书登录号不重复,且数据库应有10条或以上的记录。
6)要求:
1要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容;
2要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给出程序流程图和全部源程序;
设计报告的完整格式应包括以下部分的内容:
1设计总体思路;
2程序及各个模块说明;
3总体模块框图;
4各个程序模块说明;
5程序流程图;
6程序清单;
7课程设计总结与体会(不少于400字)。
3上机时要求必到,设计完成,必须演示程序,答辩并提交设计报告。
二、进度安排
第18周星期五8:
00——12:
00
星期日15:
00——18:
00
第19周星期一19:
00——22:
00
星期三8:
00——12:
00
星期四14:
30——17:
30
附:
课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:
一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。
正文总字数要求在5000字以上(不含程序原代码)。
目录
一、课题主要功能1
二、设计概要1
三、各模块功能详细设计分析3
1.显示模块voidDisp()3
2.追加模块voidAppe()3
3.修改模块voidMoid()3
4.删除模块voidDele()3
5.查询模块voidQuery()3
6.排序模块voidSort()4
四、模块程序流程图4
(1)主函数流程图:
4
(2)追加模块流程图:
5
(3)图书修改模块:
6
(4)图书删除模块:
7
(5)图书查询模块:
8
六、心得体会12
七、附件13
1、源程序13
2、参考书目26
一、课题主要功能
该程序实现了图书馆管理的基本功能:
1)图书信息显示功能;
2)图书信息追加功能;
3)图书信息查询功能;
4)图书信息的删除功能;
5)图书信息的修改功能;
6)按图书单价排序(降序)。
二、设计概要
主函数主要由一个switch()开关语句构成,开关语句在一个无限循环体里,开关语句里的开关是调用主菜单显示函数的返回值。
除最后一个语句是强制结束整个程序的语句外,其它case都是调用相应的函数,完成相应的功能。
各调用情况如下:
case1:
调用计算函数case2:
调用显示函数、case3:
调用添加函数、case4:
调用修改函数、case5:
调用删除函数、case6:
调用查询函数、case7:
调用排序函数、case8:
调用统计平均分函数,case9:
调用统计总分函数,主函数将保证每调用完一个函数之后又调用显示函数,然后按任意键又重新回到主菜单,以便用户进行下一次的操作。
在每个模块中首先都会显示选择的子菜单,以图的形式增加了可读性,方便操作。
运行主函数选择菜单图:
系统主要由显示模块、追加模块、修改模块、删除模块、查询模块、排序模块六大模块组成。
下面将介绍每个模块的功能及与他们之间的关系.
模块图如下:
Main()
主菜单模块
删除模块
查询模块
退出膜块
修改模块
追加模块
显示模块
三、各模块功能详细设计分析
1.显示模块voidDisp()
该模块会显示数据库中的所有图书的信息,并按列表形式输出。
函数中用了一个for循环及printf语句实现依次输出每一本书的登录号,图书名,作者名,分类号,单价,出版时间,出版单位。
最后在界面上以列表的形式显示书的信息因此我们可以浏览每本书的信息
2.追加模块voidAppe()
该模块会在数据库中增加一条接下来所输入的数据,然后连同的那组数据一起输出。
该模块就是简单的利用printf语句和scanf语句来输入将要增加的信息
3.修改模块voidMoid()
该模块中可选择两种不同的途径来修改数据库中的数据,一种是按图书登录号来搜索所要修改的数据,另一种是按图书名来搜索所要修改的数据。
确定所要修改的图书登录号或者图书名后,输入所要修改的信息。
新信息输入完毕后,程序会输出修改后的所有数据。
模块利用switch-case语句及for循环嵌套,来实现信息的录入。
4.删除模块voidDele()
该模块中可选择两种不同的途径来删除数据库中的数据,一种是按图书登录号来搜索所要删除的数据,另一种是按图书名来搜索所要删除的数据。
确定所要删除的图书登录号或者图书名后,程序会输出删除后的所有数据。
函数利用switch-case语句,if语句及for循环嵌套,来删除用户所要删除的信息。
5.查询模块voidQuery()
该模块中可选择两种不同的途径来查询数据库中的数据,一种是按图书登录号来查询,另一种是按图书名来查询。
确定所要查询的图书登录号或者图书名后,程序会输出所查询的该条数据。
6.排序模块voidSort()
该模块会按图书单价降序排列数据库中的各组数据。
函数运用双重for循环嵌套来排序。
四、模块程序流程图
(1)主函数流程图:
读入数据
从菜单界面输入选择值
menu-selcet
执行显示函数
执行修改函数
执行追加函数
执行删除函数
执行查询函数
执行退出函数
创建新数据库
结束
(2)追加模块流程图:
(3)图书修改
模块:
(4
)图书删除模块:
(5)图书查询模块:
五、部分运行界面截图
1、显示模块运行截面图
运行程序菜单框图中选则1,按回车。
运行结果如下图:
2、追加模块运行截面图
按任意键返回主菜单,输入2,按回车键,进入如下界面,输入要插入信息:
198,cyuyan,yangluming,202,23,beijing,2005.06按回车,即出现下面的界面。
3、修改模块运行截面图
按任意键返回主菜单,输入3,输入登录号103,输入修改信息:
225,sanmao,yuqiu,123,28,yunnan,2009.09再回车,即可修改,运行结果如下:
4、删除模块运行截面图
按任意键返回主菜单,输入4,回车,运行,在菜单中选2,输入gaoshu,运行如下:
5、查询模块运行截面图
按任意键返回主菜单,输入5,回车,运行,选择查找方式,输入书名lishi查找,结果如下图:
六、心得体会
为期一周的C语言课程设计已经结束,在这一周的时间里我感触良多,收获也颇丰!
在这一周的课程设计里总共上了四次机,虽然每次上机的时间比较长,眼镜比较疲劳,感觉比较累,但小组成员的互帮互助,团结一心让我深受感动。
我的c语言平时学得不怎么好,所以编程对我来说很有难度,但漫长的几个小时坐那不干事只会更无聊,于是我便硬着头皮开始编写程序,不用说在编写的过程中遇到很多困难。
我于是向我们组的其他成员请教,他们非常的热心的指导我,非常耐心的解答我的问题。
最让我感动的是,不管他们在思考程序,在编写程序还是在调试程序,总是随叫随到。
曾经有人说过扛过枪的,下过乡的,同过窗的感情是最浓厚的,这次我深有感触。
在调程序的过程中我们小组成员之间会共同讨论,共同解决问题,紧紧的团结在一起,所以我们如期完成了程序的编写,团结真的能够迸发出强大的力量。
这周的课程设计不仅让我收获了友情,也使我懂得再难得事再不想干的事只要勇敢的迈出第一步,然后虚心的向别人求教就会获得属于你的成功。
所以一个本不愿编程不会编程的我最终确编出了好几个模块,这就是我的成功。
俗话说得好,细节决定成败。
在这次课程设计的过程中就证实了这一点,一个小小的分号,一个不起眼的括号就决定的你的程序能否运行。
我感受最深的就是在编写查询模块时,运行时总是提示错误的信息和查询的表格同时出来,或者就是不论输入的登录号在数据库中是否有,它都是显示错误信息。
我一遍又一遍的检查我的程序,左改右改总是不对,左看有看总是找不出问题所在。
在不断地改不断地运行的过程中,时间就悄悄的溜到深夜12点半了,我几乎都到崩溃的边缘的,好几个小时毫无进展,第二天就要答辩,程序还没弄好,怎么办啊?
我是又气又急。
第二天我搬到了救兵,找了以同学帮我找问题。
他一看就告诉我是少了一个大括号,他的反应如此迅速,使我不禁感到惭愧。
他帮我添上括号后程序就能运行了,我还像在做梦似的。
人家几十秒钟办到了我几个小时都办不到的事,一小小的括号就让我的真个庞大的程序陷入无法运行状态。
这次经历让我深刻的知道,细节不容忽视,熟能生巧!
那同学能在第一时间反应出来是少了一个括号的缘故,可见他平时是有认真学,认真思考,做题做得相对来说比较多的。
这次经历也可以说是一种打击,人家强出我好多倍的效率让我无地自容。
这又不得不让我深思我这学期的学习态度。
上课不听课,不去上课,就这样一年糊里糊涂的过了,我到底收获了什么?
蓦然回首,一年下来我依旧如刚进大学,两手空空。
我很惭愧!
这次上机不仅仅让我学到好多东西,同时也深深地教育了我,让我在接下来的大学生活中好好学习,好好充实自己,别再需要用到所学知识时才发现自己脑袋空空如也。
七、附件
1、源程序
#include"stdio.h"
#include"string.h"
#include"conio.h"
intN=0;
structstu
{intdlh;/*图书登录号*/
charsname[15];/*书名*/
charzname[10];/*作者名*/
intflh;/*分类号*/
intdj;/*单价*/
charcbdw[20];/*出版单位*/
charcbdate[10];/*出版时间*/
}s[40];
voidRe_file()
{
FILE*fp;
fp=fopen("f:
\\book.txt","r");
while(fscanf(fp,"%d\n%s\n%s\n%d\n%d\n%s\n%s\n",&s[N].dlh,s[N].sname,s[N].zname,&s[N].flh,&s[N].dj,s[N].cbdw,s[N].cbdate)!
=EOF)N++;
fclose(fp);}
voidWr_file()
{inti;
FILE*fp;
fp=fopen("f:
\\newbook.txt","w");
for(i=0;i fprintf(fp,"%d\n%s\n%s\n%d\n%d\n%s\n%s\n",s[i].dlh,s[i].sname,s[i].zname,s[i].flh,s[i].dj,s[i].cbdw,s[i].cbdate); fclose(fp); } voidDisp()/*显示模块*/ {inti; printf("--------------------------------------------------------------------------------\n"); printf("dlhsnameznameflhdjcbdwcbdate\n"); printf("--------------------------------------------------------------------------------\n"); for(i=0;i printf("%-5d%-10s%-10s%-8d%-10d%-20s%-10d\n",s[i].dlh,s[i].sname,s[i].zname,s[i].flh,s[i].dj,s[i].cbdw,s[i].cbdate); printf("\n"); } voidAppe()/*追加模块*/ {printf("Pleaseinputdlh: ");scanf("%d",&s[N].dlh); printf("Pleaseinputsname: ");scanf("%s",s[N].sname); printf("Pleaseinputzname: ");scanf("%s",s[N].zname); printf("Pleaseinputflh: ");scanf("%d",&s[N].flh); printf("Pleaseinputdj: ");scanf("%d",&s[N].dj); printf("Pleaseinputcbdw: ");scanf("%s",s[N].cbdw); printf("Pleaseinputcbdate: ");scanf("%s",s[N].cbdate); N++; } voidModi()/*修改模块*/ {intn,t,x,y,z,log,i; chara[15],b[10],c[20],d[10]; printf("*******************************\n"); printf("**\n"); printf("*1.dlh2.sname*\n"); printf("**\n"); printf("*******************************\n"); printf("Inputyourselection: "); scanf("%d",&n); switch(n) {case1: {printf("Pleaseinputdlh: ");scanf("%d",&x); log=0; for(i=0;i {if(s[i].dlh==x) {printf("inputdlh: "); scanf("%d",&t);/*输入新的登录号*/ s[i].dlh=t; printf("inputsname: "); scanf("%s",a);/*输入新的书名*/ strcpy(s[i].sname,a); printf("inputzname: "); scanf("%s",b);/*输入新的作者名*/ strcpy(s[i].zname,b); printf("inputflh: "); scanf("%d",&y);/*输入新的分类号*/ s[i].flh=y; printf("inputdj: "); scanf("%d",&z);/*输入新的单价*/ s[i].dj=z; printf("inputcbdw: "); scanf("%s",c);/*输入新的出版单位*/ strcpy(s[i].cbdw,c); printf("inputcbdate: "); scanf("%s",d);/*输入新的出版日期*/ strcpy(s[i].cbdate,d);log=1;}} if(log==0)printf("error! \n");}break; case2: {printf("Pleaseinputsname: "); scanf("%s",a); log=0; for(i=0;i {if(strcmp(s[i].sname,a)==0) {printf("inputdlh: "); scanf("%d",&x);/*输入新的登录号*/ s[i].dlh=x; printf("inputsname: "); scanf("%s",a);/*输入新的书名*/ strcpy(s[i].sname,a); printf("inputzname: "); scanf("%s",b);/*输入新的作者名*/ strcpy(s[i].zname,b); printf("inputflh: "); scanf("%d",&y);/*输入新的分类号*/ s[i].flh=y; printf("inputdj: "); scanf("%d",&z);/*输入新的单价*/ s[i].dj=z; printf("inputcbdw: "); scanf("%s",c);/*输入新的出版单位*/ strcpy(s[i].cbdw,c); printf("inputcbdate: "); scanf("%s",d);/*输入新的出版日期*/ strcpy(s[i].cbdate,d);log=1;}} if(log==0)printf("error! \n");}break; } } voidDele()/*删除模块*/ {inti,n,t,log;chara[15]; printf("*******************************\n"); printf("**\n"); printf("*1.dlh2.sname*\n"); printf("**\n"); printf("*******************************\n"); printf("Inputyourselection: "); scanf("%d",&n); switch(n) {case1: printf("inputdlh: "); scanf("%d",&t);log=0; for(i=0;i {if(s[i].dlh==t)/*判断输入的登录号是否在数据库中存在*/ {while(i! =N-1){s[i]=s[i+1];i++;}/*若存在就用后面一个覆盖指定删除*/ log=1;N--;}} if(s[N-1].dlh==t) {s[N-1]=s[N-2];log=1;N--;} if(log==0) {printf("**************************\n");/*不存在显示错误提示*/ printf("*Error! ! ! *\n"); printf("**************************\n"); }break; case2: printf("inputsname: "); scanf("%s",a);log=0; for(i=0;i {if(strcmp(s[i].sname,a)==0)/*判断输入的书名是否在数据库中存在*/{while(i! =N-1){s[i]=s[i+1];i++;}/*用下一个覆盖指定删除的*/ log=1;N--;}} if(strcmp(s[N-1].sname,a)==0) {s[N-1]=s[N-2];log=1;N--;} if(log==0) {printf("**************************\n");/*不存在就显示错误提示*/ printf("*Error! ! ! *\n"); printf("**************************\n"); }break; }} voidQuery()/*查找模块*/ {inti,n,m,j,log=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 信息管理 系统