C语言课程设计图书信息管理系统报告.docx
- 文档编号:10705922
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:53
- 大小:1.15MB
C语言课程设计图书信息管理系统报告.docx
《C语言课程设计图书信息管理系统报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计图书信息管理系统报告.docx(53页珍藏版)》请在冰点文库上搜索。
C语言课程设计图书信息管理系统报告
课程设计报告
课程名称C语言程序设计
课题名称图书信息管理系统
专业机械电子
班级1101班
学号
姓名
指导教师
2012年12月19日
湖南工程学院
课程设计任务书
课程名称C语言程序设计
课题图书信息管理系统
专业班级
学生姓名
学号
指导老师
审批
任务书下达日期2012年12月19日
任务完成日期2012年12月29日
一、设计内容与设计要求
1.设计内容:
图书信息管理系统设计
涉及的知识点:
①掌握并熟练运用C语言的基本数据类型与各种表达式,程序的流程控制语句;
②掌握数组的基本概念。
熟练掌握一维数组、二维数组的应用、掌握字符数组
与字符串的关系以及字符串的简单处理。
③掌握函数的定义,函数的返回值,函数的调用,函数的形式参数和实际参数之间的关系;掌握变量的作用域与生存期,了解函数的作用域。
④掌握结构体的概念,结构体类型的定义,结构体变量的定义和初始化,结构体成员的表示,结构体变量的赋值含义,结构体与指针、函数的关系。
⑤掌握文件、文件类型指针的基本概念,熟练掌握文件的打开与关闭以及文件的建立、读写等有关操作。
2.设计要求:
1)用C语言实现系统;利用结构体数组实现图书信息的数据结构设计;系统
的各个功能模块要求用函数的形式实现;应提供一个界面来调用各个功能,
调用界面和各个功能的操作界面应尽可能清晰美观。
2)建立一个图书信息数据库,文件名为book.txt,并从该文件中读取数据;
3)图书信息管理系统应能提供以下功能:
①系统以菜单方式工作
②图书信息显示功能;能以表格形式显示图书库中所有信息,且应有表头。
③图书信息追加功能;追加一条(或多条)新记录,要求在追加过程中有相应的提示信息,完成追加后能重新排序和显示;
④图书信息查询功能;
a.按书名查询;b.按单价查询;c.按出版单位查询;d.按出版时间查询
e.按分类号查询;f.按入库时间查询
要求系统在上述查询方式中至少应有两种以上的查询方式,且能显示符合条件的所有记录。
⑤图书信息的删除;要求可按指定的图书编号和指定的图书书名两种定位方式删除图书记录。
⑥图书信息的修改;要求能按指定的图书编号和按指定的图书书名两种定位方式进行修改,且可以按用户要求修改记录中除图书编号和书名以外的指定内容,并重新显示;
⑦图书信息的统计:
能按指定的图书分类号或按指定的单价两种方式分别进行统计,并将统计的结果以及被统计的图书信息用表格的形式显示;
⑧能按图书单价排序(降序)
⑨要求在删除模块、修改模块和查询模块中若找不到所需的记录时,系统设计中应有一定的提示信息。
4)说明:
(1)要求将修改后的数据写入到一个新的数据文件newbook.txt中。
(2)对系统有兴趣的同学可以在实现基本要求的基础上,完善系统的其它功能。
5)图书信息管理系统采用一个结构体数组,图书信息包括:
图书编号、分类号、书名、作者名、出版单位、出版时间、入库时间、价格等,其数据库结构如下:
intbh/*图书编号*/
intflh/*分类号*/
charsname[15]/*书名*/
charzname[10]/*作者名*/
charcbdw[20];/*出版单位*/
charcbdate[8]/*出版时间*/
charrkdate[8]/*入库时间*/
doubledj/*单价*/
注意:
图书编号不能重复且不少于4位数字,各项字符串的长度要求在4~10之间,数据库应有10条或多于10条以上的记录。
6)要求:
1要求每个学生必须独立思考,认真并按时完成本课程设计所包含的所有内容;
2要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给出程序流程图和全部源程序;
3设计报告的完整格式应包括以下部分的内容:
①系统设计总体思路;
②系统的主要功能;
③系统功能模块的划分(要求画出总体模块框图);
④主要功能的实现和各个程序模块说明(每个功能模块的框图、系统主模块的流程图,各个功能模块至少要有一个主要的流程图);
⑤程序调试过程及各模块调试中相应的部分截图;
⑥课程设计总结与体会(不少于500字)。
⑦课程设计参考文献;
⑧程序清单;
4课程设计周内,凡规定的集中上机时间必须到机房调试程序;
(5)设计完成后必须参加答辩,并按要求演示程序,提交课程设计报告和有关电子文档。
7)分组及安排
所选题目根据学生班号和学号确定,(班号+学号)%6+1。
如你的班号为01班、学号为01,则所选题目号为:
(1+1)%6+1=3,即课题号为3。
8)成绩评定
①程序设计方案是否合理;②程序设计是否正确;③调试结果;④设计说明书的质量高低;⑤答辩时回答问题情况;⑥课程设计周表现情况;总评成绩记入“课程设计成绩评分表”。
二、进度安排
第16周星期四14:
00——17:
00讲课、布置任务
第17周星期一8:
00——12:
00机房上机调试程序
星期二8:
00——12:
00机房上机调试程序
星期三19:
00——22:
00机房上机调试程序
星期四8:
00——12:
00机房上机调试程序、答辩
附:
课程设计报告排版、打印和装订要求
1.课程设计报告装订顺序:
封面、任务书、目录、正文、附件、评分表。
按A4大小的纸张排版和打印。
2.设计报告的页码从目录之后开始使用;
3.正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22磅。
正文中程序清单(英文)用英文字体TimesNewRoman,单倍行间距。
4.正文的内容:
一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试(各模块至少有一个程序调试的截图);五、总结(不少于500字);六、参考文献;t、附件(包含所有程序的原代码,且程序中应有必要的注释)。
八.正文总字数要求在5000字以上(不含程序原代码)。
5.设计报告中任务书和评分表不需重新排版。
一.系统的主要思路
此系统事用C语言实现一个图书馆信息管理系统;利用结构体数组实现图书馆信息的数据结构;例如,删除图书信息、追加图书信息、修改图书信息、图书信息的统计等等;系统的各个功能调用各个函数的形式实现;并提供一个界面来调用,各个功能的操作。
首先我们要对系统操作就必须先创建一个数据库,用来存放各图书的信息,如:
图书编号、分类号、书名、作者名、出版单位、出版时间、入库时间、单价等。
并用读函数fscanf读取数据,然后才能进入主控程序。
然后,运行该程序显示的为主菜单界面,并且主菜单界面显示调用各个功能函数的功能键;通过提示用户,调用各个功能操作。
按下相应的功能键,就会进入相应的功能模块系统,并进行相应的操作。
程序操作完并正常退出后,系统又会调用写函数fprintf将修改过的数据存入一个新的文件。
图书馆信息管理系统存放了每种图书的图书编号、分类号、书名、作者名、出版单位、出版时间、入库时间、单价的数据库。
每本书的信息定义在一个结构体变量中。
其结构如下:
系统通过显示程序、追加程序、查询程序、删除程序、修改程序、排序程序来实现图书馆信息管理系统的显示功能、追加功能、查询功能、删除功能、修改功能、排序功能和统计功能。
各个功能的调用通过主函数中的switch语句来实现。
二、系统的主要功能
1.显示模块Disp()
通过设计此模块,来实现图书馆图书信息的显示。
以便于浏览图书信息。
2.追加模块Appe()
通过设计此模块,以便当加入新的图书信息的时候,来实现新图书信息的加入。
3.修改模块Modi()
通过设计此模块,当要对某一信息进行修改时,可以通过此模块来进行修改。
并且可以按用户指定的信息进行修改。
4.删除模块Dele()
通过设计此模块,可以按用户指定的图书编号和指定的图书书名进行图书记录的删除。
5.查询模块Query()
通过设计此模块,可以按图书编号和书名来查询图书库的所有的信息,并可以显示所查询的图书信息。
6.统计模块Total()
通过设计此模块,当输入所要统计的图书的单价或分类号时,可以按图书的单价和分类号进行统计,并显示统计之后的图书总数。
7.排序模块Sort()
通过设计此模块,来实现书籍库的信息按图书单价进行排序。
8.退出模块Quit()
通过设计此模块,来实现退出系统主菜单。
三.系统功能模块的划分
1.总体模块功能框图
四.总流程图
1.总流程图
2.八大模块的流程图
2.1显示模块Disp
2.2追加模块Appe()
2.3修改模块Modi()
2.4删除模块Dele()
2.5查询模块Query()
2.6统计模块Total()
2.7排序模块Sort()
2.8退出模块Quit()
五.程序调试
在VC的环境下,调试程序,进入图书馆管理菜单界面。
1.显示模块Disp()
从菜单界面输入“1”,进入显示模块,如下图所示。
显示的信息如上图所示,按任意键能退出。
2.追加模块Appe()
输入你所要追加的个数,进行追加图书的信息
逐个追加信息如上图所示,根据提示,进行完成追加。
若选择1,则继续追加;若选择2,则退出此模块,并进入显示模块如下图示。
3.修改模块Modi()
在主菜单界面上,输入数字3,进入修改模块
若输入数字1,则按图书编号修改,如上图
修改后结果如上
修改完后,按任意键能退出此模块,并显示主菜单。
4.删除模块Dele()
在主界面上输入数字4,进入删除模块
选择1,按图书编号删除,如上图所示。
删除后的结果如下。
按任意键退出,返回主界面。
5.查询模块Query()
在主界面上输入数字5,进入查询模块
输入1,则进行查询,否则,退出系统。
若输入1,则按图书编号查询,查询结果如下图所示
若输入2,则按书名进行查询,输入对应的书名,结果如图所示
若输入1,则继续进行查询
若输入2,则退出此模块,并返回主界面
6.统计模块Tottal()
在主界面上输入数字6,进入统计模块
若输入数字1,则按单价进行统计
若输入数字2,则按分类号进行统计
7.排序模块Sort()
在主界面上输入数字7,进入排序模块
若输入数字1,则按单价升序排序,结果结果如图所示
若输入数字2,则按单价降序进行排序,结果如图所示
8.退出模块Quit()
在主界面上输入数字8,进入退出系统模块,完成此次查询。
六.心得与体会
一周的C语言课程设计结束了,对我来说收获颇多,但同时也体会到了,C语言的博大精深,自己现在所涉猎的还很少。
我们都知道,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。
在刚刚开始进行课程设计是,我们大部分都无处下手,但随着思路的慢慢清晰,我们逐渐找到了感觉。
从拿到课题到完成整个编程,虽然是短短一周的日子里,但我们学到了很多很多的东西,同时巩固了以前所学过的知识和发现了以前的知识漏洞。
我这次的课题是图书馆管理系统,图书馆管理系统是我们平时学习时用得到的。
我认为课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的。
同时我也体会到了把理论知识运用到实际所带来的乐趣。
在课程设计一开始,肖老师给了我们一个框架,这样我们就有了一个整体的思路,我想,如果没那一个框架,我们很难完成这个图书馆管理系统。
通过这次课程设计,我体会到了,只有不断思考,从不同角度去思考一问题,我们会有很多个最优解。
一周的时间很快就过去了,但C语言的学习并没有停止,这这是C语言学习过程中的冰山一角。
不过,这次让我领悟许多。
最后,我想说,感谢各位老师的热情指导,有了你们的指导,我收获颇多。
七.参考文献:
[1]贾宗璞,许合利,C语言程序设计,人民邮电出版社,2012.1
[2]黄晓宇,肖伟平,丁敬忠,陈志斌,大学计算机基础,北京邮电大学出版社,2010.8
[3]谭浩强,C程序设计(第五版),北京:
清华大学出版社,2011.1
八.附件:
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"conio.h"
intN=0;
structstu
{intbh;/*图书编号*/
intflh;/*分类号*/
charsname[10];/*书名*/
charzname[10];/*作者名*/
charcbdw[12];/*出版单位*/
charcbdate[8];/*出版时间*/
charrkdate[8];/*入库时间*/
doubledj;/*单价*/
}s[40];
voidRe_file()
{
FILE*fp;
fp=fopen("book.txt","r");
while(fscanf(fp,"%d\n%d\n%s\n%s\n%s\n%s\n%s\n%lf\n",&s[N].bh,&s[N].flh,s[N].sname,s[N].zname,s[N].cbdw,s[N].cbdate,s[N].rkdate,&s[N].dj)!
=EOF)N++;
fclose(fp);}
voidWr_file()
{inti;
FILE*fp;
fp=fopen("newbook.txt","w");
for(i=0;i fprintf(fp,"%d\n%d\n%s\n%s\n%s\n%s\n%s\n%lf\n",s[i].bh,s[i].flh,s[i].sname,s[i].zname,s[i].cbdw,s[i].cbdate,s[i].rkdate,s[i].dj); fclose(fp); } voidDisp()/*显示模块*/ {inti; system("cls"); printf("--------------------------------------------------------------------------------"); printf("图书馆信息管理系统"); printf("********************************************************************************"); printf("图书编号分类号书号作者名出版单位出版时间入库时间单价\n"); for(i=0;i printf("%-8d%-6d%-11s%-8s%-13s%-8s%-9s%-7lf\n",s[i].bh,s[i].flh,s[i].sname,s[i].zname,s[i].cbdw,s[i].cbdate,s[i].rkdate,s[i].dj); printf("********************************************************************************"); printf("--------------------------------------------------------------------------------\n"); } voidAppe()/*追加模块*/ {inti,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",&s[N].bh); printf("您添加的分类号: "); scanf("%d",&s[N].flh); printf("您添加的书名为: "); scanf("%s",s[N].sname); printf("您添加的作者名为: "); scanf("%s",s[N].zname); printf("您添加的出版单位为: "); scanf("%s",s[N].cbdw); printf("您添加的出版时间为: "); scanf("%s",s[N].cbdate); printf("您添加的入库时间为: "); scanf("%s",s[N].rkdate); printf("您添加的单价为: "); scanf("%lf",&s[N].dj); N++; } printf("请问您是否还要追加? \n"); printf("************************************\n"); printf("*继续请按1否则请按2*\n"); printf("************************************\n"); scanf("%d",&k); switch(k) { case1: Appe();break; case2: ;break; } } voidModi()/*修改模块*/ {system("cls"); inti,j,k,n,m,x,y,z;doubley1; charsm[50],ch[20]; 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("*请输入您所要修改的图书编号*\n"); printf("**\n"); printf("******************************************************\n");scanf("%d",&n); for(i=0;i { if(n==s[i].bh){printf("********************************************************************************"); printf("图书编号分类号书名作者名出版单位出版时间入库时间单价\n"); printf("%-8d%-6d%-11s%-8s%-13s%-8s%-9s%-7lf\n",s[i].bh,s[i].flh,s[i].sname,s[i].zname,s[i].cbdw,s[i].cbdate,s[i].rkdate,s[i].dj); printf("********************************************************************************"); printf("\n"); k=1;j=i; } } } elseif(m==2) { printf("****************************************************\n"); printf("**\n"); printf("*请输入您所要修改的图书书名*\n"); printf("**\n"); printf("****************************************************\n"); scanf("%s",sm); for(i=0;i { if(! strcmp(sm,s[i].sname)) {printf("********************************************************************************"); printf("图书编号分类号书号作者名出版单位出版时间入库时间单价\n"); printf("%-8d%-6d%-11s%-8s%-13s%-8s%-9s%-7lf\n",s[i].bh,s[i].flh,s[i].sname,s[i].zname,s[i].cbdw,s[i].cbdate,s[i].rkdate,s[i].dj); printf("********************************************************************************"); 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("*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 图书 信息管理 系统 报告