图书信息管理系统设计C语言课程设计毕业设计论文.docx
《图书信息管理系统设计C语言课程设计毕业设计论文.docx》由会员分享,可在线阅读,更多相关《图书信息管理系统设计C语言课程设计毕业设计论文.docx(20页珍藏版)》请在冰豆网上搜索。
图书信息管理系统设计C语言课程设计毕业设计论文
目录
1课程设计概述1
1.1图书信息管理系统软件功能概述1
1.2开发环境概述1
2图书信息管理系统软件总体设计1
2.1图书信息管理系统软件总体设计思想1
2.2总体设计流程图2
3图书信息管理系统软件详细设计2
4程序测试11
4.2菜单界面.......................................................................................................................11
4.2图书信息录入界面12
4.3图书信息浏览界面12
4.4图书信息查询界面13
4.5图书信息删除界面14
4.6图书信息修改界面15
4.7图书信息排序界面16
4.8退出界面16
设计体会及今后的改进意见17
参考文献18
摘要
由于上学期学完了C语言的全部课程,所以这学期我们要进行C语言的课程设计报告,我从老师所给的题目中选了“图书信息管理系统”这道题。
这次课程设计是在VC++6.0环境下编写的,主要使用了C语言来完成,一共用了一周的时间。
图书信息管理系统设计的图书信息包括:
登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
图书信息管理系统,能提供以下功能:
系统以菜单方式工作、图书信息录入功能(图书信息用文件保存)、图书信息浏览功能、查询和排序功能:
按书名查询和按作者名查询、图书信息的删除与修改功能。
一下就是此次课程设计的全部内容,包括设计思路、程序设计流程图、程序代码、各种操作以及参考资料等。
关键字:
课程设计,VC++6.0,图书信息管理系统
1课程设计概述
图书信息管理系统软件功能概述
图书信息管理系统设计的图书信息包括:
登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
图书信息管理系统,能提供以下功能:
系统以菜单方式工作、图书信息录入功能(图书信息用文件保存)、图书信息浏览功能、查询和排序功能:
按书名查询和按作者名查询、图书信息的删除与修改功能。
开发环境概述
VisualC++6.0是微软公司的重要产品之一,是一种功能强大行之有效的可视化编程工具。
它提供了MFC类库,使用户可以方便的开发自己想实现的功能。
VisualC++6.0的主要特点:
(1)自动化和宏功能。
(2)可以灵活地定制工具栏和菜单。
(3)可以直接运行和调试程序,还可以使用宏语言来自动操作调试器。
(4)支持Internet连接。
(5)一个新的便捷的项目系统可以允许一个工作区内包含多个不同的项目类型。
(6)在工作区内可以包含多个并列的工程文件。
(7)可以在对话框中使用WizardBar将程序同可视化元素联系起来。
(8)FindinFile命令支持两个独立的输出窗格,可以保存上一次搜索的结果。
这些新特性可以更好地利用VisualC++开发工具进行Windows应用程序开发。
2图书信息管理系统软件总体设计
图书信息管理系统软件总体设计思想
图书信息管理系统软件的功能为管理各种图书信息的软件。
一本图书的信息定义成一个结构体变量stu。
图书信息管理系统软件的功能模块有:
(1)提供菜单界面,方便用户对程序个功能进行选择,选择要实现的功能按enter键进入该功能。
(2)录入图书信息的功能。
(3)浏览图书信息的功能。
(4)查询图书信息的功能。
(5)修改图书信息的功能。
(6)删除图书信息的功能。
(6)排序功能。
总体设计流程图
图2-1 总体设计流程
3图书信息管理系统软件详细设计源程序代码
#include
#include
intN=0;//定义全局变量
structstu//定义结构体变量
{intdlh;/*登录号*/
charsname[15];/*书名*/
charzname[10];/*作者名*/
intflh;/*分类号*/
intjg;/*价格*/
charcbdw[20];/*出版单位*/
charcbrq[10];/*出版时间*/
}s[800];
voidshuchu(inti)//输出s[i]的信息
{
printf("\n************************************************************************");
printf("\n登录号书名作者名分类号价格出版单位出版日期");
printf("\n************************************************************************");
printf("\n%-9d%-13s%-10s%-11d%-10d%-13s%-11s\n\n",s[i].dlh,s[i].sname,s[i].zname,s[i].flh,
s[i].jg,s[i].cbdw,s[i].cbrq);
}
voidliulan()//浏览功能
{
inti;
printf("\n**************************************************************************");
printf("\n登录号书名作者名分类号价格出版单位出版日期");
printf("\n**************************************************************************");
for(i=0;iprintf("\n%-9d%-13s%-10s%-11d%-10d%-13s%-11s",s[i].dlh,s[i].sname,s[i].zname,s[i].flh,
s[i].jg,s[i].cbdw,s[i].cbrq);
}
voidluru()//录入功能
{
charm;
printf("你是否要添加一本书的信息Y:
是N:
返回?
(Y/N):
");
getchar();
scanf("%c",&m);getchar();
if(m=='Y'||m=='y')
{
g2:
N++;
inti;
i=N-1;
printf("\n请输入登录号:
");
scanf("%d",&s[N-1].dlh);
printf("\n请输入书名:
");
scanf("%s",s[N-1].sname);
printf("\n请输入作者名:
");
scanf("%s",s[N-1].zname);
printf("\n请输入分类号:
");
scanf("%d",&s[N-1].flh);
printf("\n请输入价格:
");
scanf("%d",&s[N-1].jg);
printf("\n请输入出版单位:
");
scanf("%s",s[N-1].cbdw);
printf("\n请输入出版日期:
");
scanf("%s",s[N-1].cbrq);
shuchu(i);getchar();
printf("\n是否继续添加?
Y:
是N:
返回");
scanf("%c",&m);getchar();
if(m=='Y'||m=='y')
gotog2;
else
printf("\n录入完毕!
\n");
}
}
voidxiugai()//修改功能
{
inti,n,a=0;
charstr[20],m;
printf("\n请输入你所要修改的书名:
");getchar();
gets(str);
for(i=0;iif((strcmp(str,s[i].sname))==0)
{
g:
shuchu(i);a=1;
printf("\n********************************");
printf("\n*1:
登录号2:
书名*");
printf("\n**");
printf("\n*3:
作者名4:
分类号*");
printf("\n**");//选择修改的选项
printf("\n*5:
价格6:
出版单位*");
printf("\n**");
printf("\n*7:
出版日期8:
退出*");
printf("\n********************************");
printf("\n请输入你所选的代号:
");
scanf("%d",&n);
switch(n)
{
case1:
printf("请输入新的登录号:
");scanf("%d",&s[i].dlh);break;
case2:
printf("请输入新的书名:
");scanf("%s",s[i].sname);break;
case3:
printf("请输入新的作者名:
");scanf("%s",s[i].zname);break;
case4:
printf("请输入新的分类号:
");scanf("%d",&s[i].flh);break;
case5:
printf("请输入新的价格:
");scanf("%d",&s[i].jg);break;
case6:
printf("请输入新的出版单位:
");scanf("%s",s[i].cbdw);break;
case7:
printf("请输入新的出版日期:
");scanf("%s",s[i].cbrq);break;
case8:
gotog1;
}
shuchu(i);
printf("修改成功!
Y:
继续,N:
退出(Y/N):
");getchar();
scanf("%c",&m);
if(m=='Y'||m=='y')
gotog;
g1:
;
}
if(a==0)printf("\n\n无法找到这本书\n\n");getchar();
}
voidshanchu()//删除功能
{
f1:
liulan();
charstr[20],m;
inti,b=0;
printf("\n请输入你想删除的书名:
");getchar();
gets(str);
for(i=0;iif((strcmp(str,s[i].sname))==0)//strcmy比较str1与s[i].sname,如果他们相等,返回0。
{
shuchu(i);b=1;
printf("是否删除此书?
Y:
删除N:
不删除(Y/N):
");
scanf("%c",&m);getchar();
if(m=='Y'||m=='y')
{
for(;is[i]=s[i+1];
N--;
printf("删除成功!
是否继续?
Y:
继续,N:
退出(Y/N):
");
}
else
printf("是否继续删除其它书籍?
Y:
继续,N:
退出(Y/N):
");
scanf("%c",&m);
if(m=='Y'||m=='y')
gotof1;
}
if(b==0)
printf("\n\n没有这本书!
\n\n");getchar();
}
voidchaxun()//查询功能
{
inti,n,a=0;
charm,str1[20],str2[20];
g3:
printf("\n***********************************************");
printf("\n**");
printf("\n*1:
书名2:
作者名*");
printf("\n**");
printf("\n***********************************************");
printf("\n请输入你的选项:
");
scanf("%d",&n);getchar();
if(n==1)
{
printf("\n输入书名:
");
gets(str1);
for(i=0;iif((strcmp(str1,s[i].sname))==0)//strcmy比较str1与s[i].sname,如果他们相等,返回0。
{
shuchu(i);
a=1;
}
}
if(n==2)
{
printf("\n输入作者姓名:
");
gets(str2);
for(i=0;iif((strcmp(str2,s[i].zname))==0)//strcmy比较str2与s[i].zname,如果他们相等,返回0。
{
shuchu(i);
a=1;
}
}
if(a==0)
printf("没有这本书\n");
printf("是否继续查询?
Y:
继续,N:
返回(Y/N):
");
scanf("%c",&m);getchar();
if(m=='Y'||m=='y')
gotog3;
}
voidpaixu()//排序功能
{
inti,j,m;
structstup;
printf("\n**********************************************");
printf("\n**");
printf("\n*1:
登录号2:
价格*");
printf("\n**");
printf("\n**********************************************");
printf("\n\n请输入你的选项:
");getchar();
scanf("%d",&m);
switch(m)
{
case1:
for(i=0;ifor(j=i+1;jif(s[i].dlh>s[j].dlh)
{p=s[i];s[i]=s[j];s[j]=p;}
break;
case2:
for(i=0;ifor(j=i+1;jif(s[i].jg>s[j].jg)
{p=s[i];s[i]=s[j];s[j]=p;}
break;
}
}
voidtuichu()//退出功能
{
printf("******谢谢使用******\n");
}
voidreadfile()//读文件,打开book.txt,若无此文件,则新建一个名为book.txt的文件。
{
FILE*fp;
if((fp=fopen("book.txt","ab+"))==NULL)
if((fp=fopen("book.txt","wb+"))==NULL)
{
printf("不能建立文件\n");return;
}
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].jg,s[N].cbdw,s[N].cbrq)!
=EOF)
{
N++;
}
fclose(fp);//从fp指定的文件中按指定格式将数据送到内存中
}
voidwriterfile()//将信息写入文件。
{
inti;
FILE*fp;
fp=fopen("book.txt","w");
for(i=0;ifprintf(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].jg,s[i].cbdw,s[i].cbrq);
fclose(fp);//把内存中的数据以指定格式输出到fp所指的文件中
}
voidmain()
{
ints;
readfile();
s=1;
g6:
while(s)
{
printf("\n\n");
printf("图书信息管理系统\n\n");
printf("(请从主菜单选择7退出,否则无法正常保存信息!
)\n\n\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.退出*\n");
printf("**\n");
printf("****************************\n");
printf("\n\n\n\n请输入你的选项:
");
scanf("%d",&s);
switch(s)
{
case1:
luru();break;
case2:
liulan();getchar();break;
case3:
chaxun();break;
case4:
shanchu();break;
case5:
liulan();xiugai();break;
case6:
paixu();getchar();liulan();break;
case7:
tuichu();s=0;break;
default:
printf("输入错误,重新输入!
");gotog6;
}
printf("\n\n输入任意键继续\n\n");
getchar();
}
writerfile();
}
4程序测试
菜单界面
图4-1菜单界面
图4-2图书信息录入界面
如图4-2所示,选择1录入功能,则可以逐条添加一本书的信息。
添加完毕后显示出这本书的全部信息,并询问是否继续,选Y则继续添加另一本书,选N则回到主菜单。
图4-3浏览图书信息界面
如上图所示,该功能实现浏览图书信息功能。
在主菜单选择2后,将浏览到全部图书的信息。
图4-4查询图书信息界面
如上图所示,该功能实现图书的查询功能,可以选择按书名查询和按作者查询,可以查出一本书的全部信息。
图4-5图书信息删除界面
如图所示,删除功能可以实现删除一本书的功能。
在主菜单选择则4进入删除功能,输入想要删除的书名,则可以删除掉这本书的信息。
图4-6图书信息修改界面
如上图所示,该功能将实现图书信息的修改,在主菜单选择5进入后输入想要修改的书名,然后选择想要修改的信息,然后就可以修改图书信息了。
图4-7排序功能界面
如图所示,在主菜单选6进入排序功能,可以选择按登录号或价格来按从小到大的顺序来排列图书信息。
图4-8退出界面
如图4-8所示,该功能将关闭正在运行的程序。
在主菜单选择7按enter键实现该功能,按任意键关闭程序。
设计体会及今后的改进意见
.在大学以前我从来就没见过C语言,这东西对我来说是十分陌生的。
刚开始学C语言,感到每天都在云里雾里飘着,感觉对这个东西真的好难入手。
但学了一段时间后逐渐对C语言有了认识,并能进行简单操作。
现在我们又要开始进行课程设计,我的天空突然彻底BLACK了!
不过我不会放弃,前辈们都说:
“坚持到底就是胜利!
”,恩!
我也是这么认为的。
万事开头难,只要我找到方法,我一定可以的!
刚开始编程时,那个“error”啊,多得已经无法用“多”来形容了,那是“很多”啊!
于是我开始了漫长而繁琐的地毯式搜查,我累的地暗天黑都已无所谓,那个疯狂的人,是我,是我,还是我!
海阔凭鱼跃,天高任我飞!
我曾经花了整整一个上午的时间来弄一个error,那做出来后的感觉,就能用一个字来形容,那就是“爽”,人生最幸福的事也就莫过于此,这小小的成功使我的信心十足,我看到希望了!
于是,我开始了更为艰巨的任务,那就是把整体结构弄出来,我为此都“白”了少年头,终于把框架弄出来了。
接下来就应该改错误了,随着一个个错误的纠正,终于一个程序浮出了水面!
!
!
我成功了,高兴啊,真高兴!
通过这次课程设计,我对C语言更有兴趣了。
这次的课程设计是对我们一个学期来所学的知识的综合考察,里面涉及到了我们大多数所学知识。
记得刚开始学这门课的时候,对这门课充满了希望,自己有信心学好这门课,但是经过一段时间的学习之后。
才发现程序设计并不好学,它既要你有很强的领悟能力,还要你课后的努力,也许是自己之前太有信心学好这门课了吧,中间遇到了很大的瓶颈,一度陷入无休止的烦恼中编程序时没有一次是成功的,总会遇到很多的error,改完一个又有一个,哎!
这时我会想到一句古话“天将降大人于斯人也,必先苦其心志,劳其筋骨,饿其体肤”,也许以后会有些许光明吧。
之后,随着时间的推移,慢慢掌握了这门课学习的一些窍门,学习起来也比刚开始的时候好了一点,至于编程序吗还是有错误,但比以前少了,呵呵,总让我看到希望了。
刚开始的时候我一头雾水,丈二摸不着头脑,不知从哪里下手,后来经过老师和同学的帮助,从最简单的编框开始,慢慢的到最关键的算法,这其中经历了很多弯路,也犯过了很多错误,但是还是一一攻克了,好比红军长征两万五千里终于到达了终点。
看到最后自己编写出来的系统运行的不错,感到格外的高兴。
在今后学习中,一定要更加认真仔细,少犯错误,少走弯路,有了error不能着急,慢慢改,总能改队的。
平时上课要认真听讲,多看例题,多做练习,才能提高我的编程能力。
参考文献
C程序设计(第四版)清华大学出版社谭浩强著
《毕业设计工作规程》