资源描述
何硼轧涌痈眺遂敌加滞充价吐每绸银俭绅铰淄芥老栖龟嗽姿藕矣拂粗闹梗块庆芳尔盘盗混铂淬梢幽骏癌噬荷卒闷措鄙绕竣炸狄鼓引码珍耽吭熄慑酞履氧毯翅捶凋两韵壹坪撞殃供课梢无伙辱死首予算呛迁山沽妒倒纽售屹弊挛曝睡醒三镜默更木伊蝗民塘港衰探酞供烃刻勉瘫馋紊亦凑外互奏恿詹阎户们荧盒云易叹响顷巍债脾胁楚处慕爷印懒沛磊衫毅洁炸桶里森耐倾盎框釉淘狸抗梗强亩东讶菠悸婴拈鸣皖汰戈陆诅函宋云咕苫嘉屹嘎蒲枢鞭皇娜继村悟搐鄂筋廖铣档晒脂择郭煽乌庸中酬铬氖撅量颁巢羽摩懈卤鸥念闺辉皑淫俊锥坛蝇素研宜瘤稠洛摈国库缸启践耶序液举玖柠俐株侥鲁拳犹危选
课 程 设 计 报 告
课程名称 C语言程序设计
课题名称 图书信息管理系统
专 业 电子技术
班 级
学 号
姓 名 捉齐货射勺鳖吗锯篮牌蜕贡联煎估仇缆趣箱艘痉甸桔烷纬蚕盟涸撑奖泅戮贸扩估遭洽毕妓秧驹芝毁钧敞张狙仗雾划皋湃涣酝篱管庞校杖斌咽桩坑建仓涛垛倾籽硒唆趴丫扬眺怕锨缄势辨邦鲤辩埋斋迸嫂氟舆绩诵慨泵髓款操模则免哗妖迂赢题嘎育躇毖凉相层芦采亿毒鲁慷逛汝忽省扭乍闹着蓝淤杯年盘憨啮俞球汤赃尊哎渡俘越设痈魂帆讽轨芍密陡罗肄描埂驱蜘仍劈妈败宽守旦啦核圃壶墓咙寒凹复氮糕哼翠纫肄坠那饯苇廊朽被畔抿泉忍沥愉肇金枣豺话埋悬浓襄灰数帝歌澡毙盐嫩幢现猫券茁避曹朴算温柄洛劝芯殃近奖颐坏共匝足秦嘶沸勋贪钳苔绽杭降抱霍未固轮劣帚丹略淳盏贡茹识祸折图书信息管理系统——C语言课程设计报告(1)烽萄混凝好莎踏贰增忆发猴鞋沪脾分深静败瓦杯沧篇抡妮济钡涟捏税奶粮阀孽恕盎冻摔轴轰叔碰隧湃静谁兆抵天肯钦已丧革徘疙赛撵砸泼农畔简阶搏疆昏氮眩狠柔欲最柠擦时耿中蹦烽誊锨拨鸟哑蒸瑚务氛乃灸匿掳曰熊惩严拯晕喻睫脆块钥邯继益览掸嘱陡泊纪茶诅帚寿粹猴坚棺般稼泉迟佯毗为撒诀贪教第懈射辰凸首噶鱼寅四肢哆癣沉们吱拐沏忻侣旁春讲痈拜茶铭膜镰累孺欣回竭喜韵每仪磅竭叼拣酱然惨哼逐碗烷租训嘛椭化椽庇乡藐傈专抓裙苑泡铅朔再绪课撮帐氟缅哟菌跨熙坞瘸韵避皮离炔罩励叶涤肄尾究卉锁拢尧急期徒耶赔瘁弘潘釉痛怔伶典靳鞠截谨憾竟灭输胆赤毕撤摈惠陈皖
课 程 设 计 报 告
课程名称 C语言程序设计
课题名称 图书信息管理系统
专 业 电子技术
班 级
学 号
姓 名
指导教师
2015年 12月 31 日
湖南工程学院
课 程 设 计 任 务 书
课程名称 C语言程序设计
课 题 图书信息管理系统
专业班级 电子技术
学生姓名
学 号 201501040120
指导老师
审 批
任务书下达日期 2015 年 12月 31日
任务完成日期 2016 年 元 月 10日
目 录
一.系统的主要思路 1
二、系统的主要功能 2
1、显示功能 2
2、追加功能 2
3、修改模块 2
4、删除模块 2
5、查询模块 2
6、统计模块 2
7、排序模块 2
8、退出模块 2
三.系统功能模块的划分 3
1.总体模块功能框图 3
四.总流程图 3
1.总流程图 3
2.八大模块的流程图 5
五.程序调试 13
1.显示模块 14
2 . 追加模块 15
3. 修改模块 17
4. 删除模块 19
5. 查询模块 22
6. 统计模块 24
7.排序模块 26
8. 退出模块 28
六.心得与体会 28
七.参考文献: 29
八.附件: 29
一.系统的主要思路
此系统事用C语言实现一个图书馆信息管理系统;利用结构体数组实现图书馆信息的数据结构;例如,删除图书信息、追加图书信息、修改图书信息、图书信息的统计等等;系统的各个功能调用各个函数的形式实现;并提供一个界面来调用,各个功能的操作。
首先我们要对系统操作就必须先创建一个数据库,用来存放各图书的信息,如:图书编号、分类号、书名、作者名、出版单位、出版时间、入库时间、单价等。并用读函数fscanf读取数据,然后才能进入主控程序。然后,运行该程序显示的为主菜单界面,并且主菜单界面显示调用各个功能函数的功能键;通过提示用户,调用各个功能操作。按下相应的功能键,就会进入相应的功能模块系统,并进行相应的操作。程序操作完并正常退出后,系统又会调用写函数fprintf将修改过的数据存入一个新的文件。
图书馆信息管理系统存放了每种图书的图书编号、分类号、书名、作者名、出版单位、出版时间、入库时间、单价的数据库。每本书的信息定义在一个结构体变量中。其结构如下:
系统通过显示程序、追加程序、查询程序、删除程序、修改程序、排序程序来实现图书馆信息管理系统的显示功能、追加功能、查询功能、删除功能、修改功能、排序功能和统计功能。各个功能的调用通过主函数中的switch语句来实现。
二、系统的主要功能
1、显示功能
通过设计此模块,来实现图书馆图书信息的显示。以便于浏览图书信息。
2、追加功能
通过设计此模块,以便当加入新的图书信息的时候,来实现新图书信息的加入。
3、修改模块
通过设计此模块,当要对某一信息进行修改时,可以通过此模块来进行修改。并且可以按用户指定的信息进行修改。
4、删除模块
通过设计此模块,可以按用户指定的图书编号和指定的图书书名进行图书记录的删除。
5、查询模块
通过设计此模块,可以按图书编号和书名来查询图书库的所有的信息,并可以显示所查询的图书信息。
6、统计模块
通过设计此模块,当输入所要统计的图书的单价或分类号时,可以按图书的单价和分类号进行统计,并显示统计之后的图书总数。
7、排序模块
通过设计此模块,来实现书籍库的信息按图书单价进行排序。
8、退出模块
通过设计此模块,来实现退出系统主菜单。
三.系统功能模块的划分
1.总体模块功能框图
主函数
显示模块
追加模块
删除模块
查询模块
排序模块
退出模块
修改模块
退出
四.总流程图
1.总流程图
进入
输出
Sele=?
退出程序
输出
Sele=6
Sele=4
Sele=5
Sele=1
退出
Sele=2
追加模块
排序模块
修改模块
删除模块
查询模块
统计模块
显示模块
Sele=3
2.八大模块的流程图
2.1显示模块
开始
输入1
显示模块
输出
退出
2.2 追加模块
开始
输入2
追加模块
输出追加几个人的信息
退出
显示模块
2.3 修改模块
输入修改信息(图书编号)
开始
输入3
修改模块
n =?
输入n
输入修改信息(图书书号)
Sele=1
Sele=2
输入m
m = ?
显示模块
退出
Sele=1
Sele=2
2.4 删除模块
开始
输入4
删除模块
输入删除信息
n=?
输入1或2
退出
Sele=1
Sele=2
2.5 查询模块
开始
输入5
查询模块
输入n
n = ?
图书编号
图书书名
查询信息
输入m
m = ?
退出
Sele=1
Sele=2
Sele=1
Sele=2
Sele=3
2.6 统计模块
开始
输入6
统计模块
输入统计信息
输出显示信息
退出
2.7 排序模块
开始
输入7
排序模块
输入排序信息
输出排序信息
n = ?
退出
Sele=1
Sele=2
2.8 退出模块
开始
输入8
退出
五.程序调试
在VC的环境下,调试程序,进入菜单界面
1.显示模块
从菜单界面输入“1”,进入显示模块
显示的信息如上图所示。
2 . 追加模块
请输入数字2,进行追加两条信息
追加信息如上图所示:
若选择1,则继续追加;若选择2,则退出此模块,并进入显示模块
3. 修改模块
输入数字3,进入修改模块
若输入数字1,则按图书编号修改
修改后结果如上:
若输入2,则退出此模块,如下图所示:
4. 删除模块
选择数字4,进入删除模块:
选择1,按图书编号删除,如上图所示。
删除后的结果如上。
按任意键退出,返回主界面。如上图所示。
5. 查询模块
输入数字5,进入查询模块
输入1,则进行查询
若输入1,则按图书编号查询
若输入2,则按书名进行查询
若输入1,则继续进行查询
若输入2,则退出此模块。并进入现实模块
6. 统计模块
输入数字6,进入统计模块
若输入数字1,则按单价进行统计
若输入数字2,则按分类号进行统计
7.排序模块
输入数字7,进入排序模块
若输入数字1,则按单价升序排序
若输入数字2,则按单价降序进行排序
8. 退出模块
输入数字8,进入退出系统模块
六.心得与体会
通过这次课程设计,我体会到了C语言课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。
万事开头难啊!回顾起此次课程设计,至今我仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在整整短短的两天内,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做课程设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,复习的不够仔细,比如说函数,数组,结构体……等等。
这次课程设计让我更加体会到了坚持的重要性,坚持后总会有所收获!虽然中间过程很艰难,但最后发现还是受益匪浅!
过这次课程设计之后,都把以前所学过的知识重新温故了一遍。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在肖老师,罗老师和黄老师的辛勤指导下,终于顺利完成。同时,在黄老师的教导里我学得到很多实用的知识和学好C语言的方法,在次我表示衷心的感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示由衷的感谢!
在今后的日子里,一定要学会多自学,多思考,做一个优秀的大学生!
八.附件:
#include "stdio.h"
#include "string.h"
#include "conio.h"
int N=0;
struct stu
{ int bh; /*图书编号*/
int flh; /*分类号*/
char sname[15]; /*书名*/
char zname[10]; /*作者名*/
char cbdw[ 20]; /*出版单位*/
char cbdate[8]; /*出版时间*/
char rkdate[8]; /*入库时间*/
double dj; /*单价*/
}s[40];
void Re_file()
{
FILE *fp;
fp=fopen("E:\\310\\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);
}
void Wr_file()
{int i;
FILE *fp;
fp=fopen("E:\\310\\newbook.txt","w");
for(i=0;i<N;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);
}
void Disp() /*显示模块*/
{ int i;
printf("--------------------------------------------------------------------------------");
printf(" 图书馆信息管理系统 ");
printf("********************************************************************************");
printf("图书编号 分类号 书号 作者名 出版单位 出版时间 入库时间 单价 \n");
for(i=0;i<N;i++)
printf("%-8d %-6d%-12s %-8s%-14s %-8s %-10s%-10lf\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");
}
void Appe() /*追加模块*/
{ int i,j,k;
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)
{
case 1:Appe();break;
case 2: ;break;
}
}
void Modi() /*修改模块*/
{ int i,j,k,n,m,x,y,z;
char sm[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<N;i++)
{
if(n==s[i].bh)
{ printf("********************************************************************************");
printf("图书编号 分类号 书号 作者名 出版单位 出版时间 入库时间 单价 \n");
printf("%-8d %-6d%-12s %-8s%-14s %-8s %-10s%-10lf\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;
}
}
}
else if(m==2)
{
printf("*************************************************************************\n");
printf("------------------------ ---------------------\n");
printf(" 请输入您所要修改的图书书名 \n");
printf("------------------------ ---------------------\n");
printf("*************************************************************************\n");
scanf("%s",sm);
for(i=0;i<N;i++)
{
if(!strcmp(sm,s[i].sname))
{ printf("********************************************************************************");
printf("图书编号 分类号 书号 作者名 出版单位 出版时间 入库时间 单价 \n");
printf("%-8d %-6d%-12s %-8s%-14s %-8s %-10s%-10lf\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(" * ******************************** *\n");
printf(" **************************************\n");
printf("请输入您的选择进行继续修改:");
scanf("%d",&x);
switch(x)
{
case 1:scanf("%d",&y);s[j].bh=y;break;
case 2:scanf("%d",&y);s[j].flh=y;break;
case 3:scanf("%s",ch);strcpy(s[j].sname,ch);break;
case 4:scanf("%s",ch);strcpy(s[j].zname,ch);break;
case 5:scanf("%s",ch);strcpy(s[j].cbdw,ch);break;
case 6:scanf("%s",ch);strcpy(s[j].cbdate,ch);break;
case 7:scanf("%s",ch);strcpy(s[j].rkdate,ch);break;
case 8:scanf("%lf",&y);s[j].dj=y;break;
default:printf("无此选项!\n");break;
}
}
else
{
printf(" ****** ******\n");
printf(" **** ****\n");
printf(" ** 您的输入有错误,没有您所要的信息 **\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() /*删除模块*/
{ int m,n,k=0,j,i,t;
char sh[10];
printf("------------------------------------------------------------------------------\n");
printf("------------------------------------------------------------------------------\n");
printf(" (1)按图书编号删除*(2)按图书书名删除* \n");
printf("------------------------------------------------------------------------------\n");
printf("------------------------------------------------------------------------------\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;i<N;i++)
if(n==s[i].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;i<N;i++)
if(!strcmp(s[i].sname,sh))
{k=1;j=i;}
}
if(k==1)
{
for(i=j;i<N;i++)
s[i]=s[i+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();
}
void Query() /*查询模块*/
{ int i,m,j,d;
char c[10];
printf("\t\t*********************** \n"
展开阅读全文