C语言课程设计票务管理系统Word文档格式.docx
《C语言课程设计票务管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计票务管理系统Word文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
(2)系统以菜单方式工作。
(3)图书信息录入功能:
录入图书的数据信息,包括图书的数目、图书的代号、书名、作者名、分类号、对应图书的最多借阅次数、图书的票价,数据存储在一个数据文件中。
(4)图书信息浏览功能:
通过浏览显示所有图书的详细信息,包括已借阅次数。
(5)图书操作:
按分类号排序;
查询图书:
1按名称查询;
2按分类号查询。
(6)承接借阅和还书服务:
1借阅:
如果该图书已经借完,显示提示信息;
借阅成功后修改数据文件。
2还书:
可还书,还书后修改相关数据文件。
(7)保存:
保存对图书操作的信息。
(8)载入:
启动系统载入已有的图书数据文件信息。
2.2系统结构图
图书信息管理系统
登录
主目录
浏览
退出
载入
保存
还书
借阅
图书操作
输入图书信息
子菜单
按分类号查找
按名称查找
按分类号排序
开始
第三章程序流程图
用户名、密码正确
N
Y
输入图书总数、代号、分类号、书名、作者名、出版单位、出版时间价格、价格。
Y
载入图书信息
选择1
N
选择2
选择3
按分类号查询
选择4
按作者名查询
书名、作者名、分类号
选择5
图书代号
选择6
选择7
选择8
结束
第四章函数的设计
4.1函数定义
根据系统需要设计以下函数:
Voidmain()(主函数);
voidmenu()(主菜单);
voidmenu1()(子菜单函数)
voidinput(inti)(输入图书信息函数);
voidenter()(输入图书数目的函数)
voidprintf_one(inti)(显示一个图书记录的函数);
voidbrowse()(浏览图书信息的函数);
intsearch()查找函数);
voidsearch_time()(按分类号查找图书的函数);
voidsearch_end()(按作者名查找图书的函数);
voidorder()(排序函数);
voidbook()(借阅函数);
voidback()(还书函数)
voidsave()(保存函数);
voidload()加载函数);
voidexit()(退出函数)
4.2函数功能描述
函数名:
Voidmain()
函数功能:
主函数,调用主目录函数。
voidmenu()
显示系统主菜单。
voidmenu1()
显示图书操作子菜单。
voidinput(inti)
输入一条有效的图书信息
voidenter()
输入要登记的图书数目,调用input函数,实现其功能。
voidprintf_one(inti)
输出地i本图书的详细信息。
voidbrowse()
通过调用printf_one(inti)函数,使读者能够浏览所有图书的信息。
intsearch()
通过输入图书的书名、作者名、分类号查找对应地图书信息。
voidsearch_time()
通过书名查找图书信息。
voidsearch_end()
通过作者名查找航班信息。
voidorder()
将所有的图书信息按照分类号进行排序。
voidbook()
通过输入图书的书名、作者名、分类号等信息,实现借阅功能。
函数名:
voidback()
输入图书的代号,实现还书功能。
voidsave()
将操作记录保存为文件,存储到相应地目录中。
voidload()
将图书信息文件导入到系统中。
voidexit()
退出系统。
第五章程序的运行及结果分析
1.将编写程序运行后,首先出现以下界面(即登录界面):
2.输入用户名:
chen密码:
11010320进入主界面。
可根据目录选择1-8,进入相应操作。
3.输入1,进入以下界面,可录入图书数目,根据数目录入相应图书信息:
4.输入2进入浏览界面,可直观浏览图书信息:
5.输入3进入图书操作界面(即子菜单),如下图:
根据所需操作选择,可进入相应操作。
6.输入4进入借阅界面,输入要借阅图书的书名、作者名、分类号即可借阅到相应的图书,如没有此图书则会返回主目录:
若借阅成功,再次进入浏览界面时,可看到已借阅数变为1,则借阅成功:
7.输入5进入还书界面,输入图书代号即可还书:
8.每做一次操作若要下次启动程序有效,必须输入6保存。
9.下次运行系统时,若需要打开上次保存的图书操作信息,输入7载入即可。
10.输入8退出该程序
。
第六章遇到的问题及解决方法
1.再输入“;
”时,未区分中文与英文,未能识别导致错误,后将中文符号改为英文符号;
2.在编程过程中,没有按照老师的要求一个一个模块的编写,急于求成,导致错误,后一个一个模块的做,编写顺利。
3.没有正确的认识strcmp语句,导致登录函数出错,后查阅资料修改。
第七章总结和体会
这次课程设计让我掌握了许多的有用知识。
首先通过不断地学习和锻炼更加熟练地掌握应用软件MicrosoftVisualC++6.0了。
设计正确及合适的程序对于我们初学者来说是很大的难题,出现一丁点儿错误就得非很大的努力去修改,正式者一步步一点点的努力让我对C语言游乐更深的认识。
同时我掌握了解决问题的方法,这无论是对以后的学习、生活都有无比重要的价值。
在设计中,每个同学都会遇到一些困难,或多或少,这些困难常常让我心情烦躁,比如不能清晰的建立设计模块,不会修改出现的错误等等,然后我向同学寻求帮助,向他们学习,最终通过自己努力建立了模块。
不可避免地程序中肯定依然存在者某些问题,我希望在以后的学习和应用中不断提高自己的能力,攻克遇到的困难。
参考文献
1.陆丽娜。
C语言程序设计。
西安:
西安交通大学出版社,2012.
2.胡建平。
C语言程序设计学习指导。
北京:
清华大学出版社,2009.
3.张毅坤。
C语言程序设计教程。
西安交通大学出版社,2003.
附件:
源程序代码:
#include<
stdio.h>
string.h>
stdlib.h>
#defineN1000
typedefstructbook
{
charID[10];
charfenleihao[10];
charshuname[10];
charzuoname[10];
charchubandanwei[15];
intchutime;
intprice;
intmax;
intnum;
}BOOK;
BOOKti[N];
intn;
voidmenu();
voidmenu1();
voidinput(inti)
printf("
请输入图书代号:
\n"
);
scanf("
%s"
ti[i].ID);
请输入分类号:
&
ti[i].fenleihao);
请输入图书名:
ti[i].shuname);
请输入作者名:
ti[i].zuoname);
请输入出版单位:
ti[i].chubandanwei);
请输入出版时间:
%d"
ti[i].chutime);
请输入价格:
ti[i].price);
ti[i].max=4;
ti[i].num=0;
}
voidenter()
{inti;
system("
cls"
);
请输入图书数目(0-%d)?
:
"
N);
n);
/*要输入的记录个数*/
\n请输入数据\n\n"
for(i=0;
i<
n;
i++)
{
printf("
\n请输入第%d号图书信息.\n"
i+1);
input(i);
/*调用输入函数*/
}
getchar();
menu();
voidprintf_one(inti)/*显示一个记录的函数*/
{
%11s%6s%6s%3s%4s%5d%6d%6d%6d"
ti[i].ID,ti[i].fenleihao,ti[i].shuname,ti[i].zuoname,ti[i].chubandanwei,
ti[i].chutime,ti[i].price,ti[i].max,ti[i].num);
inti;
puts("
\n--------------------------------------------------------------------"
\n\t图书代号分类号书名作者名出版单位出版时间价格最多借阅已借数目\n"
i++)
printf_one(i);
printf("
}
inti,j;
structbooks;
i++)/*选择法排序*/
{
for(j=i+1;
j<
j++)
if(strcmp(ti[i].fenleihao,ti[j].fenleihao)>
0)
{s=ti[i];
ti[i]=ti[j];
ti[j]=s;
Theorderedfenleihaois:
\n--------------------------------------------------------------------"
menu1();
voidsearch_time()
inti,m=0;
\n\nfenleihao:
s.fenleihao);
/*输入出发的时间*/
if(strcmp(s.fenleihao,ti[i].fenleihao)==0)
{
m++;
if((m!
=0)&
&
(m%10==0))/*目的是分屏显示*/
{
printf("
\n\nPressanykeytocontiune..."
getchar();
puts("
\n\n"
}
printf_one(i);
printf("
/*调用显示一个记录的函数*/
/*按任意健*/
voidserch_end()
\n\nEntertheshuname:
s.shuname);
/*输入要到达的地方*/
if(strcmp(ti[i].shuname,s.shuname)==0)
voidmenu1()
intn,w1;
do
/*清屏*/
\t\t\t\t图书借阅操作!
\t\t*********************MENU*********************\n\n"
\t\t\t\t1.按照分类号排序"
\t\t\t\t2.按照分类号查找图书"
\t\t\t\t3.按照名称查找图书"
\t\t\t\t4.返回主菜单"
\n\n\t\t**********************************************\n"
Choiceyournumber(1-4):
[]\b\b"
if(n<
1||n>
4)/*对选择的数字作判断*/
w1=1;
yourchoiceisnotbetween1and4,Pleaseinputagain:
getchar();
elsew1=0;
}while(w1==1);
/*选择功能*/
switch(n)
case1:
order();
break;
case2:
search_time();
case3:
serch_end();
case4:
menu();
intsearch()/*查找模块*/
inti,k;
k=-1;
\n\n请输入借阅图书的名称:
\n\n请输入借阅图书的作者:
s.zuoname);
\n\n请输入借阅图书的分类号:
i++)/*查找要修改的数据*/
if(strcmp(s.shuname,ti[i].shuname)==0&
strcmp(s.zuoname,ti[i].zuoname)==0&
strcmp(s.fenleihao,ti[i].fenleihao)==0)
k=i;
/*找到要修改的记录*/
printf_one(k);
break;
/*调用显示一个记录的函数*/
if(k==-1)
\n\nNOexist!
return-1;
else
returnk;
inti;
欢迎进入借阅窗口!
i=search();
if(i!
=-1)
if(ti[i].num>
=ti[i].max)
\n该图书已借完!
ti[i].num++;
\n借阅成功!
该图书不存在!
inti,k=-1;
欢迎进入还书窗口!
\n\n输入图书代号:
s.ID);
if(strcmp(s.ID,ti[i].ID)==0)
ti[i].num--;
\n还书成功!
intw=1;
FILE*fp;
if((fp=fopen("
shu.txt"
"
wb"
))==NULL)/*以输出打开方式,
在此前的记录被覆盖*/
\nCannotopenfile\n"
return;
if(fwrite(&
ti[i],sizeof(structbook),1,fp)!
=1)
{
filewriteerror\n"
w=0;
if(w==1)
filesaveok!
fclose(fp);
FILE*fp;
inti,w;
w=1;
rb"
n=0;
!
feof(fp);
fread(&
ti[i],sizeof(structbook),1,fp);
n++;
n=n-1;
Loadfileok!
/*清屏*//*清屏*/
puts(