简单的汽车站售票系统.docx
《简单的汽车站售票系统.docx》由会员分享,可在线阅读,更多相关《简单的汽车站售票系统.docx(14页珍藏版)》请在冰点文库上搜索。
![简单的汽车站售票系统.docx](https://file1.bingdoc.com/fileroot1/2023-5/7/842aaee1-58ff-4766-9801-be463684b108/842aaee1-58ff-4766-9801-be463684b1081.gif)
简单的汽车站售票系统
沈阳航空工业学院
课程设计
学号200604061102
班级6406103
姓名王乐
指导教师王晓岩
2008年03月18日
沈阳航空工业学院
课程设计任务书
机电工程学院机械设计及其自动化专业6406103班
学号200604061102
一、课程设计题目:
简单的汽车站售票系统
二、课程设计工作自2008年3月10日起至2008年3月14日止,共计一周,20学时。
三、课程设计内容:
每天“沈阳→植物园”有5个班次的汽车(假设),具体的数据如下:
班次发车时间载客量已售票数
0106:
40500
0209:
30400
0313:
00400
0416:
00400
0520:
00500
请你为售票员开发一个小程序,以完成每天的“沈阳→植物园”的售票业务。
要求如下:
①能够售票和退票。
②某个班次已经过了开车时间,则该班次今天不再售票。
③可以随时显示售票现状,并以文件(myfile.txt)的形式保存当天各个车次的售票情况。
四、课程设计要求:
程序质量:
①贯彻模块化的程序设计思想,以主函数调用各个功能模块。
②用户界面友好,功能明确,操作方便。
③用户界面中的菜单至少应包括“售票”、“退票”、“显示当前售票情况”、“保存当天数据”、“退出”5项。
④在代码中给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
指导教师:
____________________学生签名:
____________________
五、成绩:
六、教师评语:
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段3
四、个人总结5
五、参考文献5
六、源程序5
一、需求分析
通过对任务书内容的详细了解和深入的思考得知,整个程序可以分为三大部分.定义变量,输入数据,输出数据.但是在整个程序的执行过程当中,随处都体现了方便乘客购票、退票、查询售票与车次的思想,并且结合结构体与文件的读写来储存数据,以实现售票的数据化管理.用户界面友好,功能明确,操作方便。
信息表达清楚明确。
1.定义变量:
声明结构体,定义变量,为变量赋初值,为下一步工作做好准备。
2.输入数据:
用户可以按自己意愿输入车次进行查询,进而根据售票情况进行自主的选择够票。
3.输出数据:
根据用户的需要输出车次、时间、售票情况等数据,以方便用户了解情况。
程序结束后还有推出功能,增加了程序的可操控性。
二、程序流程图
三、核心技术的实现说明及相应程序段
下面对程序做以详细介绍:
(1)structstudent/*定义结构体*/
{
charbanci[10];/*各结构体名称*/
charfacheshijian[20];
charzaikeliang[20];
intmaipiao;
intyupiao;
}ST[N]={{"01","06:
40","50",0,50},/*对结构体输入数据*/
{"02","09:
30","40",0,40},
{"03","13:
00","40",0,40},
{"04","16:
00","40",0,40},
{"05","20:
00","50",0,50}
};
(2)
voidtuipiao()/*退票*/
{
inti,m;
charb[15];
{
printf("\n\ndanqianqingkuang\n");
printf("bancifacheshijianzaikeliangmaipiaoyupiao\n");
for(i=0;iprintf("%3s%10s%10s%8d%8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao);
}
printf("qingshurutuipiaobanci:
\n");
scanf("%s",b);
printf("qingshurutuipiaozhangshu:
\n");
scanf("%d",&m);
for(i=0;iif(strcmp(ST[i].banci,b)==0)
if(ST[i].maipiao-m>=0)/*判断售票数*/
{
ST[i].maipiao=ST[i].maipiao-m;
ST[i].yupiao=ST[i].yupiao+m;
printf("tuipiaochenggong");
printf("\n\ntuipiaojieguo\n");
printf("bancifacheshijianzaikeliangmaipiaoyupiao\n");/*显示售票情况*/
for(i=0;iprintf("%4s%10s%7s%8d%8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao);
save();/*保存*/
}
else
printf(“tuipiaoshibai”);
}
(3)
voidsell()/*售票*/
{
inti,m;
charb[15];
{
inti;
{
printf("\n\nshoupiaoqingkuang:
\n");
printf("bancifacheshijianzaikeliangmaipiaoyupiao\n");
for(i=0;iprintf("%3s%10s%10s%8d%8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao);
}
}
printf("qingshurugoumaidebanci:
\n");
scanf("%s",b);
printf("qingshurugoumaidepiaoshu:
\n");
scanf("%d",&m);
for(i=0;iif(strcmp(ST[i].banci,b)==0)/*判断班次是否符合*/
{
ST[i].maipiao=ST[i].maipiao+m;
ST[i].yupiao=ST[i].yupiao-m;
printf("goumaichenggong");
{
printf("\n\nshoupiaoqingkuang\n");
printf(“\nbancifacheshijianzaikeliangmaipiaoyupaiao\n");
for(i=0;iprintf("%3s%10s%10s%8d%8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao);
/*}*/
save();}
else
printf(“tuipiaoshibai”)
}
四、个人总结
经过了短短的一周的C语言课程设计,我对C语言有了更进一步的了解。
让我学会了许多自己以前不会的知识,懂得了如何用结构话思想来解决实际问题,懂得了将C程序模块的好处。
用主函数调用子函数的方法,这样一来就把一个大的程序分成了几个小的程序,这样不仅降低了程序的难度还使程序的编辑思路更加清晰明了。
在编制程序的过程中,我也遇到了许多较难解决的问题,例如:
文件数据的读取,语法错误的查找,算法错误的查找以及文件的存储等问题。
不过在老师的帮助和指导下,让我学到了程序的单步运行,和监视断点等方法来解决一些算法的错误。
总的来说,C语言课程设计的综合训练让我体会到了C语言的用处,让我把以前学到的理论知识应用与在实际生活的到了应用。
同时培养了我自己思考解决问题的能力,让我得到了很好的锻炼,使我受益匪浅.
五、参考文献
谭浩强.C程序设计.北京:
清华大学出版社,2005
六、源程序
##include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"conio.h"
#include"time.h"
#defineN5
structstudent/*定义结构体*/
{
charbanci[10];
charfacheshijian[20];
charzaikeliang[20];
intmaipiao;
intyupiao;
}ST[N]={{"01","06:
40","50",0,50},
{"02","09:
30","40",0,40},
{"03","13:
00","40",0,40},
{"04","16:
00","40",0,40},
{"05","20:
00","50",0,50}
};
/*声明各函数*/
voidsearch();
voidsave();
voidsell();
voidlocaltimes();
voidtuipiao();
intmenu();
intmenu()/*定义菜单*/
{intc;
printf("1.chaxundangqianshoupiaoqingkuang.\n");
printf("2.xianshidangqianshijian.\n");
printf("3.maipiao.\n");
printf("4.tuipiao.\n");
printf("5.cunchushuju.\n");
printf("6.tuichushoupiaoxitong.\n");
do{
printf("\nqingxuanze(1-6)jixu:
");
scanf("%d",&c);
}while(c<1||c>6);
return(c);
}
voidsearch()/*查询函数*/
{inti;printf("qingshuruchaxundebanci\n");
scanf("%d",&i);
i=i-1;
{
printf("\n\nchaxunjieguo\n");
printf("bancifacheshijianzaikeliangmaipiaoyupiao\n");
printf("%3s%10s%10s%8d%8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao);
}
}
voidsell()/*售票*/
{
inti,m;
charb[15];
{
inti;
{
printf("\n\nshoupiaoqingkuang:
\n");
printf("bancifacheshijianzaikeliangmaipiaoyupiao\n");
for(i=0;iprintf("%3s%10s%10s%8d%8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao);
}
}
printf("qingshurugoumaidebanci:
\n");
scanf("%s",b);
printf("qingshurugoumaidepiaoshu:
\n");
scanf("%d",&m);
for(i=0;iif(strcmp(ST[i].banci,b)==0)/*判断班次是否符合*/
{
ST[i].maipiao=ST[i].maipiao+m;
ST[i].yupiao=ST[i].yupiao-m;
printf("goumaichenggong");
{
printf("\n\nshoupiaoqingkuang\n");
printf(“\nbancifacheshijianzaikeliangmaipiaoyupaiao\n");
for(i=0;iprintf("%3s%10s%10s%8d%8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao);
/*}*/
save();}
else
printf(“goumaishibai”)
}
voidtuipiao()/*退票*/
{
inti,m;
charb[15];
{
printf("\n\ndanqianqingkuang\n");
printf("bancifacheshijianzaikeliangmaipiaoyupiao\n");
for(i=0;iprintf("%3s%10s%10s%8d%8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao);
}
printf("qingshurutuipiaobanci:
\n");
scanf("%s",b);
printf("qingshurutuipiaozhangshu:
\n");
scanf("%d",&m);
for(i=0;iif(strcmp(ST[i].banci,b)==0)
if(ST[i].maipiao-m>=0)/*判断售票数*/
{
ST[i].maipiao=ST[i].maipiao-m;
ST[i].yupiao=ST[i].yupiao+m;
printf("tuipiaochenggong");
printf("\n\ntuipiaojieguo\n");
printf("bancifacheshijianzaikeliangmaipiaoyupiao\n");/*显示售票情况*/
for(i=0;iprintf("%4s%10s%7s%8d%8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao);
save();/*保存*/
}
else
printf(“tuipiaoshibai”);
}
voidsave()/*存储函数*/
{
FILE*fp;
inti;
if((fp=fopen("myfile.txt","w+"))==NULL)
{printf("cannotopeninfile\n");
exit(0);
}
for(i=0;ifwrite(&ST[i],sizeof(ST),1,fp);
fclose(fp);
printf("\n");
printf("successtosave\n");
printf("pleasechosetherightnumbertodonextstept\n");
}
main()
{for(;;)
{
switch(menu())
{
case1:
search();break;
case2:
localtimes();break;
case3:
sell();break;
case4:
tuipiao();break;
case5:
save();break;
case6:
exit(0);
}
}
}