1、 沈 阳 航 空 航 天 大学 课程设计 学 号 2010041102031 班 级 04110201 姓 名 王帅 指导教师 郭建新 2012年 6 月 21 日 沈阳航空航天大学 课程设计任务书 系:材料科学与工程 专业:材料成型及控制工程 班级:04110201 学号:2010041102031 题目:火车站售票系统 一、课程设计时间 2011~2012第2学期第16周,共计1周,20学时。 二、课程设计内容 用C语言编写软件完成以下任务: 每天“沈阳→大连”有5
2、次的火车(假设),具体的数据如下: 班次 发车时间 载客量 已售票数 D1 06:40 500 0 D2 09:30 600 0 A1 13:00 800 0 A2 16:00 800 0 L1 20:00 500 0 请你开发一个小程序,以完成每天的:“沈阳→大连”的售票业务。要求如下: ①能够售票和退票。 ②某个火车已经过了开车时间,则该班次不再售票。 ③可以随时显示售票现状,并以文件(myfile.tes
3、t)的形式保存当天各个车次的售票情况。 三、课程设计要求 程序质量: ² 贯彻结构化的程序设计思想。 ² 用户界面友好,功能明确,操作方便。 ² 用户界面中的菜单至少应包括、“售票”、“退票”、“显示当前售票情况”、“保存当天数据”、“退出”等项。 ² 代码应适当缩进,并给出必要的注释,以增强程序的可读性。 课程设计说明书: ² 课程结束后,上交课程设计说明书和源程序。课程设计说明书的内容参见提供的模板。 ² 四、指导教师和学生签字 指导教师:________ 学生签名:________ 五、成绩 六、教师评语 目 录 一、需求分析 4
4、二、程序流程图…………………………………...4 三、关键技术分析 7 四、个人总结 ………10 五、参考文献 ………11 六、源程序 ………11 一、需求分析 (1)售票系统要求存储当天各个车次售票情况,所以程序需要定义结构体变量存储售票情况。系统的整体功能通过记录当天各个车次了解售票情况。编程时采取模块化设计思想,设计主函数,通过主函数中的switch分支选择调用各子函数以实现该系统的各种功能。然后设计相应的子函数来执行系统的各种功能,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需
5、要终止程序的执行。 1、 经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是存储函数(save)、卖票函数、退票函数、定售总金额、退出。 2、 增强了程序的实用性,使系统用户界面友好、功能明确、操作方便,应采取直接用printf函数的方式在界面上输出可供用户选择的菜单。据此应该能够很好的完成要求 二、程序流程图 1 程序总体结构图 输入c C=1? 真 假
6、 查询当前 售票情况 C=2? 真 假 定票 C=3? 真 假 退票 C=4? 真 假 保存当前车次售票情况 C=5? 真 假 退出 图1 程序总体结构图 2 函数功能图 (1) 退票函数tuipiao (2)
7、 保存信息的函数save (3)卖票函数sell 三、主要界面截图 四、关键技术分析 核心技术的实现方法和程序段: 本函数由六个自定义函数和一个主函数组成,其中 主函数以菜单形式调用其他函数来实现要求的所有功能。主函数分别调用保存函数(save)、读取函数、卖票函数、退票函数、订票总金额、退出。程序中较为核心的部分,具体分析如下: 1 保存函数 void save() /*存储函数*/ { FILE *fp; int i;
8、
if((fp=fopen("myfile.txt","w+"))==NULL)
{printf("cannot open infile\n");
exit(0);
}
for(i=0;i 9、 /*查询函数*/
{int i,j;
printf("请输入要查询的班次\n");
scanf("%s",&j);
for(i=0;i 10、",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao);}
}
save();;
}
3 售票系统:
定义数组存储从获得的数字,为了能够多次输入,我们可以构造像for(i=0;i 11、 /*售票*/
{
int i,c;
char a[50];
{
int i;
{
printf("\n\n***-------沈阳→大连 火车售票系统--------******\n");
printf("班次 发车时间 载客量 已售票数 余票 \n");
for(i=0;i 12、"请输入您要购买的班次(格式如:D1):\n");
scanf("%s",a);
printf("请输入您要购买的票数(格式如:10):\n");
scanf("%d",&c);
for(i=0;i 13、欢迎使用********:\n");
{
printf("\n\n***-------沈阳→大连 火车售票系统--------******\n");
printf("班次 发车时间 载客量 已售票数 余票 \n");
for(i=0;i 14、 /*退票*/
{
int i,c;
char a[50];
{
printf("\n\n***-------沈阳→大连 火车售票系统--------******\n");
printf("班次 发车时间 载客量 已售票数 余票 \n");
for(i=0;i 15、iao);
}
printf("请输入您要退的班次(格式如:D1):\n");
scanf("%s",a);
printf("请输入您要退的张数(格式如:100):\n");
scanf("%d",&c);
for(i=0;i 16、
{
ST[i].maipiao=ST[i].maipiao-c;
ST[i].yupiao=ST[i].yupiao+c;
printf("退票成功!!");
printf("**********欢迎使用********:\n");
printf("\n\n***---------退票结果-----------******\n");
printf("班次 ||发车时间 ||载客量 ||已售票数 ||余票\n");
for(i=0;i 17、 %8d %8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao);
save();
}
}
五、个人总结
在这五天的C程序课程设计中,我深刻的体会到细心的重要性。C程序设计是一个繁琐,需要投入很多的心思和精力的活。有时它会因为一个标点符号,让所有的心血白费。所以写程序时真得要仔仔细细的。因而我们需要的不仅仅是平日知识的积累,可以说这门课程还是有难度的,所以以后还要加强对这方面知识的学习,掌握好这门课程对我以后的专业也有很大的好处。
只有养成良好的习惯,才能保证我们的 18、路可以越走越远!
六、参考文献
谭浩强.C程序设计.北京:清华大学出版社,2005
七、源程序
#include 19、
int maipiao;
int yupiao;
}
ST[N]={
{"D1","06:40","500",0,500},
{"D2","09:30","600",0,600},
{"A1","13:00","800",0,800},
{"A2","16:00","800",0,800},
{"L1","20:00","500",0,500}
};
/*声明各函数*/
void search();
void save();
void sell() 20、
void tuipiao();
int menu();
int menu() /*定义菜单*/
{ int k;
printf("1.查询显示当前售票情况.\n");
printf("2.买票.\n");
printf("3.退票.\n");
printf("4.储存数据.\n");
printf("5.退出售票系统.\n");
do{
printf("\n 请选择(1-5)继续:");
scanf("%d",&k);
}while(k<1||k> 21、5);
return (k);
}
void search() /*查询函数*/
{int i,j;
printf("请输入要查询的班次\n");
scanf("%s",&j);
for(i=0;i 22、客量 已售票数 余票 \n");
printf("%3s %10s %10s %8d %8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao);}
}
save();;
}
void sell() /*售票*/
{
int i,c;
char a[50];
{
int i;
{
printf("\n\n***-------沈阳→大连 火车售票系统--------******\n" 23、);
printf("班次 发车时间 载客量 已售票数 余票 \n");
for(i=0;i 24、i++)
if(strcmp(ST[i].banci,a)==0) /*判断班次是否符合*/
{
ST[i].maipiao=ST[i].maipiao+c;
ST[i].yupiao=ST[i].yupiao-c;
printf("***---购买成功---***:\n");
printf("**********欢迎使用********:\n");
{
printf("\n\n***-------沈阳→大连 火车售票系统--------******\n");
printf("班次 发车时间 载 25、客量 已售票数 余票 \n");
for(i=0;i 26、\n");
printf("班次 发车时间 载客量 已售票数 余票 \n");
for(i=0;i 27、r(i=0;i 28、intf("退票成功!!");
printf("**********欢迎使用********:\n");
printf("\n\n***---------退票结果-----------******\n");
printf("班次 ||发车时间 ||载客量 ||已售票数 ||余票\n");
for(i=0;i 29、oid save() /*存储函数*/
{
FILE *fp;
int i;
if((fp=fopen("d:\\myfile.txt","w+"))==NULL)
{printf("cannot open infile\n");
exit(0);
}
else{
for(i=0;i 30、\n");
printf(" 请选择相应的数字进行下一步操作!\n");
}
}
void main()
{for(;;)
{
switch(menu())
{
case 1:search();break;
case 2:sell(); break;
case 3:tuipiao();break;
case 4:save();break;
case 5:exit(0);
}
}
}






