汽车售票系统.docx
- 文档编号:18558838
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:16
- 大小:56.11KB
汽车售票系统.docx
《汽车售票系统.docx》由会员分享,可在线阅读,更多相关《汽车售票系统.docx(16页珍藏版)》请在冰点文库上搜索。
汽车售票系统
课程设计任务书
一、课程设计题目:
汽车售票系统
二、课程设计工作自日止
三、课程设计内容:
每天“沈阳→植物园”有5个班次的汽车(假设),具体的数据如下:
班次发车时间载客量已售票数
106:
40500
209:
30400
313:
00400
416:
00400
520:
00500
请你为售票员开发一个小程序,以完成每天的“沈阳→植物园”的售票业务。
四、课程设计要求:
程序质量:
(1)能够售票和退票。
(2)某个班次已经过了开车时间,则该班次今天不再售票。
(3)可以随时显示售票现状,并以文件(myfile.txt)的形式保存当天各个车次的售票情况。
用户界面中的菜单至少应包括“售票”、“退票”、“显示当前售票情况”、“保存当天数据”、“退出”5项,在代码中给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:
●封面
●课程设计任务书
●目录
●需求分析(分析题目的要求)
●程序流程图(总体流程图和主要功能模块流程图)
●核心技术的实现说明及相应程序段
●个人总结
●参考资料
●源程序及适当的注释
指导教师:
____________________学生签名:
_______________
一、需求分析
售票系统要求存储当天各个车次售票情况,所以程序需要定义结构体变量存储售票情况。
系统的整体功能通过记录当天各个车次了解售票情况。
编程时采取模块化设计思想,设计主函数,通过主函数中的switch分支选择调用各子函数以实现该系统的各种功能。
然后设计相应的子函数来执行系统的各种功能,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
1、经过对程序设计题目的分析可知,整个程序的设计实现大致分为七个模块,其中每一个模块对应一个函数,他们的功能分别是学生记录输入函数(save)、存储函数(load)、读取函数、卖票函数、退票函数、结束、退出。
在这些函数当中,前五个函数的实现严格按照题目的要求,而后面的两个函数属于附加功能。
2、增强了程序的实用性,使系统用户界面友好、功能明确、操作方便,应采取直接用printf函数的方式在界面上输出可供用户选择的菜单。
据此应该能够很好的完成要求。
二、程序流程图
1、程序总体结构图
图1程序总体结构图
2、具体功能框图
(1)买票
图2买票
(2)保存读取数据
图2保存读取数据
(3)退票
(
三、核心技术的实现说明及相应程序段
本函数由六个自定义函数和一个主函数组成,其中主函数以菜单形式调用其他函数来实现要求的所有功能。
在这些函数记录学生输入函数(save)、存储函数(load)、读取函数、卖票函数、退票函数、结束、退出(只分析其中一个)是程序中较为核心的部分,具体分析如下:
(1)售票系统:
定义数组存储从获得的数字,为了能够多次输入,我们可以构造像for(i=0;i 本函数结束,退出。 voidsell() { inti,n; charb[15]; clrscr(); load(); { inti; { printf("\n\n***-------售票情况--------******\n"); printf("班次发车时间载客量已售票数余票\n"); for(i=0;i printf("%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;i if(strcmp(ST[i].banci,b)==0)/*如果输入和班次相符,进行下一步*/ { ST[i].maipiao=ST[i].maipiao+1; ST[i].yupiao=ST[i].yupiao-1; printf("***---购买成功---***"); { printf("\n\n***-------售票情况--------******\n"); printf("班次发车时间载客量已售票数余票\n"); for(i=0;i printf("%3s%10s%10s%8d%8d\n",ST[i].banci,ST[i].facheshijian,ST[i].zaikeliang,ST[i].maipiao,ST[i].yupiao); printf("****----------谢谢使用-------********\n"); /*}*/ } save(); } } } (2)储存函数 建立文件指针,打开指定文件,用for语句实现逐个字符输入到文件,关闭文件并提示文件保存成功,本函数结束,退出。 具体函数如下: voidsave()/*保存*/ { FILE*fp; inti; if((fp=fopen("d: \\myfile.txt","w+"))==NULL) {printf("文件无法读取! \n"); return; } for(i=0;i fwrite(&ST[i],sizeof(ST),1,fp); fclose(fp); printf("\n"); printf("||||***存储成功! ***||||\n"); printf("请选择相应的数字进行下一步操作! \n"); } 四、个人总结 总结: 这次上机实习强化了我的C语言功底,让我对C语言有了更深一层的了解,在编程过程中,遇到很多一明白的问题,在老师的帮助下,本人也查阅了许多相关资料,终于写成这个题目 个人经验(编程步骤): 1.首先认真分析题目要求 2.分析需要几个子函数 3.编程子函数 4主函数的确定 5.检验、验证程序 上机实习让我感觉到了实践的重要性,在上机过程中,遇到了很多意想不到的难题,同时也取得了一定的成就感,加强对C语言的认识,与同学的研究性学习也加强了我与同学之间的沟通,扩充了我的C语言知识面,让我对C语言有了实际上的认识,完美了我的编程能力,充实了我的学业,丰富了我的课程。 五、参考文献 1谭浩强.C程序设计.北京: 清华大学出版社,2005 2刘成等.C语言程序设计实验指导与习题集. 六、源程序 #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("**************欢迎乘坐本次由沈阳开往植物园的客车*****************\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("d: \\myfile.txt","w+"))==NULL) {printf("文件无法读取! \n"); return; } for(i=0;i fwrite(&ST[i],sizeof(ST),1,fp); fclose(fp); printf("\n"); printf("||||***存储成功! ***||||\n"); printf("请选择相应的数字进行下一步操作! \n"); } voidload() {FILE*fp; inti; if((fp=fopen("d: \\myfile.txt","w+"))==NULL) { printf("cannotopeninfile\n"); return; } for(i=0;i if(fread(&ST[i],sizeof(ST),1,fp)! =1) { if(feof(fp)){fclose(fp);return; } printf("文件读取错误\n");} fclose(fp);} voidsearch()/*查询*/ { inti; printf("请选择班次: (如: 03)"); scanf("%d",&i); i=i-1; { 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]; load(); { inti; { printf("\n\n***-------售票情况--------******\n"); printf("班次发车时间载客量已售票数余票\n"); for(i=0;i printf("%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;i if(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;i printf("%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]; load(); { printf("\n\n***-------当前情况--------******\n"); printf("班次发车时间载客量已售票数余票\n"); for(i=0;i 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"); } printf("请输入您要退的班次(格式如: 02): \n"); scanf("%s",b); printf("请输入您要退的张数(格式如: 3): \n"); scanf("%d",&n); for(i=0;i if(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;i printf("%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() { for(;;) { switch(menu()) { case1: save();break; case2: localtimes();break;/*载入当前时间*/ case3: search();break; case4: sell();break; case5: tuipiao();break; case6: exit(0); } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汽车 售票 系统