简单的汽车站售票系统2.docx
《简单的汽车站售票系统2.docx》由会员分享,可在线阅读,更多相关《简单的汽车站售票系统2.docx(15页珍藏版)》请在冰点文库上搜索。
简单的汽车站售票系统2
沈阳航空工业学院
课程设计
学号200704021150
班级7402101
姓名图里古尔
指导教师吴杰宏
2008年9月8日
沈阳航空工业学院
课程设计任务书
院系:
电子信息工程专业:
电子信息工程班级:
7402101
学号:
200704021150题目:
简单的汽车站售票系统
(2)
一、课程设计时间
2008~09第1学期第2周,共计1周,20学时。
二、课程设计内容
用C语言编写软件完成以下任务:
每天“沈阳→植物园”有5个班次的汽车(假设),具体的数据如下:
班次发车时间载客量已售票数
106:
40500
209:
30400
313:
00400
416:
00400
520:
00500
请你为售票员开发一个小程序,以完成每天“沈阳→植物园”售票业务。
要求如下:
①能够售票和退票。
②某个班次已经过了开车时间,则该班次今天不再售票。
③可以随时显示售票现状,以文件(myfile.txt)形式保存当天各个车次售票情况。
主要功能包括:
1录入汽车班次信息;2退票并显示;3保存当天数据。
三、课程设计要求
1.程序质量:
✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧用户界面中的菜单至少应包括“录入汽车班次信息”、“退票处理”、“保存当天数据并显示”、“退出”4项。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:
课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、说明书成绩六、教师评语
二、程序流程图…………………………………...2
一、需求分析
(1)售票系统要求存储当天各个车次售票情况,所以程序需要定义结构体变量存储售票情况。
系统的整体功能通过记录当天各个车次了解售票情况。
编程时采取模块化设计思想,设计主函数,通过主函数中的switch分支选择调用各子函数以实现该系统的各种功能。
然后设计相应的子函数来执行系统的各种功能,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
1、经过对程序设计题目的分析可知,整个程序的设计实现大致分为七个模块,其中每一个模块对应一个函数,他们的功能分别是学生记录输入函数(save)、存储函数(load)、读取函数、卖票函数、退票函数、结束、退出。
在这些函数当中,前五个函数的实现严格按照题目的要求,而后面的两个函数属于附加功能。
2、增强了程序的实用性,使系统用户界面友好、功能明确、操作方便,应采取直接用printf函数的方式在界面上输出可供用户选择的菜单,即直观又方便。
据此应该能够很好的完成要求
二、程序流程图
三、关键技术分析
核心技术的实现方法和程序段:
本函数由六个自定义函数和一个主函数组成,其中主函数以菜单形式调用其他函数来实现要求的所有功能。
在这些函数记录学生输入函数(save)、存储函数(load)、读取函数、卖票函数、退票函数、结束、退出(只分析其中一个)是程序中较为核心的部分,具体分析如下:
售票系统:
定义数组存储从获得的数字,为了能够多次输入,我们可以构造像for(i=0;i本函数结束,退出。
voidsell()
{
inti,n;
charb[15];
clrscr();
load();
{
inti;
{
printf("\n\n***-------售票情况--------******\n");
printf("班次发车时间载客量已售票数余票\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("****----------谢谢使用-------********\n");
}
}
printf("请输入您要购买的班次(格式如:
02):
\n");
scanf("%s",b);
printf("请输入您要购买的票数(格式如:
5):
\n");
scanf("%d",&n);
for(i=0;iif(strcmp(ST[i].banci,b)==0)/*如果输入和班次相符,进行下一步*/
{
ST[i].maipiao=ST[i].maipiao+n;
ST[i].yupiao=ST[i].yupiao-n
printf("***---购买成功---***");
{
printf("\n\n***-------售票情况--------******\n");
printf("班次发车时间载客量已售票数余票\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("****----------谢谢使用-------********\n");
/*}*/
}
save();
}
}
四、个人总结
在这为期一星期的C程序课程设计中,我深刻的体会到细心的重要性。
C程序设计是一个繁琐,需要投入很多的心思和精力的活。
有时它会因为一个标点符号,让所有的心血白费。
因而我们需要的不仅仅是平日知识的积累,还要养成良好的习惯,才能保证我们的路可以越走越远!
同时我也明白,当我们面临困难时,我们应该正面迎击!
C程序也算是对我们耐心的考验,只有不懈的追求,才能迎向胜利的曙光!
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
3刘振安等.C程序设计课程设计.北京:
机械工业出版社,2004
六、源程序
#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:
10","40",0,40},
{"03","13:
00","40",0,40},
{"04","16:
00","40",0,40},
{"05","20:
00","50",0,50}
};
voidsearch();
voidsave();
voidload();
voidsell();
voidlocaltimes();
voidtuipiao();
intmenu();
intmenu()
{intc;
printf("**************欢迎乘坐本次由沈阳开往植物园的客车*****************\n");
printf("1.保存当天数据.\n");
printf("2.显示当前时间.\n");
printf("3.查询显示当前售票情况.\n");/*显示当前售票情况*/
printf("4.买票.\n");
printf("5.退票.\n");
printf("6.退出售票系统.\n");
printf("******************欢迎使用*********************");
do{
printf("\n请选择(1-6)继续:
");
scanf("%d",&c);
}while(c<1||c>6);
return(c);
}
voidsave()
{
FILE*fp;
inti;
if((fp=fopen("myfile.txt","w+"))==NULL)
{printf("文件无法读取!
\n");
return;
}
for(i=0;ifwrite(&ST[i],sizeof(ST),1,fp);
fclose(fp);
printf("\n");
printf("||||***存储成功!
***||||\n");
printf("请选择相应的数字进行下一步操作!
\n");
}
voidload()
{FILE*fp;
inti;
if((fp=fopen("myfile.txt","w+"))==NULL)
{
printf("cannotopeninfile\n");
return;
}
for(i=0;iif(fread(&ST[i],sizeof(ST),1,fp)!
=1)
{
if(feof(fp)){fclose(fp);return;
}
printf("文件读取错误\n");}
fclose(fp);}
voidsearch()
{FILE*fp;
inti;
printf("请输入您要查询的班次(格式如:
03):
\n");
scanf("%d",&i);
i=i-1;
fp=fopen("myfile.txt","r+");
fread(&ST[i],sizeof(ST),1,fp);
{
printf("\n\n***-------查询结果--------******\n");
printf("班次发车时间载客量已售票数余票\n");
printf("%3s%10s%10s%8d%8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao);
printf("****-----查询结束(谢谢使用^v^)------********\n");
}
}
voidlocaltimes()
{
structtm*p;
time_tt;
t=time(NULL);
p=localtime(&t);
printf(asctime(p));
}
voidsell()
{
inti,n;
charb[15];
system("cls");
load();
{
inti;
{
printf("\n\n***-------售票情况--------******\n");
printf("班次发车时间载客量已售票数余票\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("****----------谢谢使用-------********\n");
}
}
printf("请输入您要购买的班次(格式如:
02):
\n");
scanf("%s",b);
printf("请输入您要购买的票数(格式如:
5):
\n");
scanf("%d",&n);
for(i=0;iif(strcmp(ST[i].banci,b)==0)/*如果输入和班次相符,进行下一步*/
{
ST[i].maipiao=ST[i].maipiao+n;
ST[i].yupiao=ST[i].yupiao-n;
printf("***---购买成功---***");
{
printf("\n\n***-------售票情况--------******\n");
printf("班次发车时间载客量已售票数余票\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("****----------谢谢使用-------********\n");
}
save();
}
}
voidtuipiao()
{
inti,n;
charb[15];
system("cls");
load();
{
printf("\n\n***-------当前情况--------******\n");
printf("班次发车时间载客量已售票数余票\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("****-----(谢谢使用^v^)------********\n");
}
printf("请输入您要退的班次(格式如:
02):
\n");
scanf("%s",b);
printf("请输入您要退的张数(格式如:
3):
\n");
scanf("%d",&n);
for(i=0;iif(strcmp(ST[i].banci,b)==0)/*如果输入和班次相符,进行下一步*/
if(ST[i].maipiao-n>=0)
/*如果未售票*/
{
ST[i].maipiao=ST[i].maipiao-n;
ST[i].yupiao=ST[i].yupiao+n;
printf("退票成功!
!
");
printf("\n\n***---------退票结果-----------******\n");
printf("班次||发车时间||载客量||已售票数||余票\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);
printf("******---退票结束,谢谢使用---*******\n");
save();
}
}
main()
{
system("cls");/*背景颜色*/
for(;;)
{
switch(menu())
{
case1:
save();break;
case2:
localtimes();break;/*载入当前时间*/
case3:
search();break;
case4:
sell();break;
case5:
tuipiao();break;
case6:
exit(0);
}
}
}