精品资料2022年收藏课程设计报告车票管理系统

上传人:仙*** 文档编号:90165656 上传时间:2022-05-14 格式:DOC 页数:26 大小:529.01KB
收藏 版权申诉 举报 下载
精品资料2022年收藏课程设计报告车票管理系统_第1页
第1页 / 共26页
精品资料2022年收藏课程设计报告车票管理系统_第2页
第2页 / 共26页
精品资料2022年收藏课程设计报告车票管理系统_第3页
第3页 / 共26页
资源描述:

《精品资料2022年收藏课程设计报告车票管理系统》由会员分享,可在线阅读,更多相关《精品资料2022年收藏课程设计报告车票管理系统(26页珍藏版)》请在装配图网上搜索。

1、26 课程设计报告(C语言程序设计)题目 车票信息管理系统 的设计与实现 二级学院 数学与统计 专 业 信息与计算科学 班 级 112010102 学生姓名 郭双红 学 号 11201010209 指导教师 陈媛 时 间 20130619 1 需求分析1.1 课程设计题目要求设计并实现一个车票销售管理系统,系统实现以下功能。(1) 系统以菜单方式工作:要求界面清晰,友好,美观,易用。(2) 车次信息导入功能:要求可从磁盘文件导入车次信息。(3) 查询功能:可按班车号、起点站或终点站查找班车信息,并将查询结果输出。(4) 售票功能:只有当某班车已定票人数小于额定载量,且当前系统时间小于发车时间才

2、能售票。售票显示收费信息;售票后更新已定票人数,并实现信息存盘。(5) 退票功能:输入退票的班次,当本班车未发出时才能退票。退票后自动更新已定票人数,并实现信息存盘。(6) 信息浏览功能:能输出所有班车的信息;要求输出格式清晰、美观。(7) 信息修改:要求能修改某一指定班次的信息,并在修改后将信息存盘。1.2 系统功能需求(1) 系统以菜单方式工作:要求界面清晰,友好,美观,易用。(2) 车次信息导入功能:要求可从磁盘文件导入车次信息。(3) 查询功能:可按班车号、起点站或终点站查找班车信息,并将查询结果输出。(4) 售票功能:只有当某班车已定票人数小于额定载量,且当前系统时间小于发车时间才能

3、售票。售票显示收费信息;售票后更新已定票人数,并实现信息存盘。(5) 退票功能:输入退票的班次,当本班车未发出时才能退票。退票后自动更新已定票人数,并实现信息存盘。(6) 信息浏览功能:能输出所有班车的信息;要求输出格式清晰、美观。(7) 信息修改:要求能修改某一指定班次的信息,并在修改后将信息存盘。2 系统设计2.1 功能模块图 本系统的功能模块图如图2-1所示。车 票 管 理 系 统修 改 版 此 信 息退 票售 票进 入 班 次 浏 览 进 入 班 次 查 询查 询 菜 单进 入 终 点 站 查 询进 入 班 次 查 询进 入 起 点 站 查 询图2-1 系统功能模块图2.2 数据定义本

4、系统的数据可采用结构数组来处理。可必要的设置全局变量。因此本系统的主要数据定义如下:struct Train_Ticket char cn15; /车量班次 char lp15; /left place 起点 char ap15; /arrive place 终点 char lt15; /left time 发车时间 char rt15; /running time 行车时间 float price; / 票价 int rl; /Rated load 额定载量 int bn; /booking number 已定票人数TN;int n=0,i=0;/ 全局变量2.3 关键技术分析 在程序开始运

5、行时,应调用自定义的INPUT()函数,将所有需要的数据导入到结构数组中,然后保存。 调用load()函数,从磁盘导入车票信息。由于第一次应用INPUT()函数磁盘中已有数据,因此不必要再进行重新导入,所以在INPUT()函数中先询问是否重新导入,然后再进入主菜单,或者在调用一次后,以后运行时不再调用。 .买票和退票都涉及到时间的问题,这源于要比较发车时间与当前的时间,判断这班车到底有没有发车,和能不能订票与退票,这时用了一个时间函数,输出了当前的时间,但那边有年月日,不好进行提取和比较,于是采用输出了时间,然后看着那个时间手动的提取。 系统中应编写存盘函数save(),在进行买票或者退票功能

6、后都需要调用save()函数进行数据的更新。 采用循环结构生成主菜单,在数据输入时应该有清晰的提示信息,以方便用户的操作,对输出数据进行格式控制,以使界面更加美观,清晰。3 系统实现3.1 功能模块设计根据系统分析的结论,将本系统需完成的功能模块划分如下:#include#include#include#include#include#define N 4void main_menu(); /主菜单模块void load(); /导入信息void INPUT(); /输入模块void scan(); /浏览模块void tuipiao(); /退票void buy(); /买票void cha

7、nge(); /修改函数void save(); /保存函数void prna(int pos); /打印记录void searchmenu(); /查询菜单函数int s_cn(); /按班次查询int s_lp(); /按起点站查询int s_ap(); /按终点站查询struct Train_Ticket char cn15; /车量班次 char lp15; /left place 起点 char ap15; /arrive place 终点 char lt15; /left time 发车时间 char rt15; /running time 行车时间 int price; / 票价

8、 int rl; /Rated load 额定载量 int bn; /booking number 已定票人数TN;int n=0,i=0;/ 全局变量3.2 源代码/*/主菜单/*void main_menu() system(cls); system(color E); printf(*n);printf(*欢迎来到车票查询系统*);printf(n);printf(| 1: 进入班次浏览 |n);printf(| 2: 进入查询班次 |n);printf(| 3: 售票 |n);printf(| 4: 退票 |n);printf(| 5: 班次信息修改 |n);printf(| 0: 退

9、出 |n);printf(*n);printf(n请选择(0-5):);void load() /从磁盘文件导入班次信息 int i; FILE *fp; if(fp=fopen(c:车票管理系统.dat,rb)=NULL) printf(文件打开错误n); exit(0); for(i=0;iN;i+) fread(&Ti,sizeof(struct Train_Ticket),1,fp); fclose(fp); system(cls); void save() /将班次信息保存到磁盘文件 FILE *fp; if(fp=fopen(c:车票管理系统.dat,wb)=NULL) print

10、f(无法创建文件!nn); exit(0); for(i=0;iN;i+) fwrite(&Ti,sizeof(struct Train_Ticket),1,fp); fclose(fp);int time() /当前系统时间struct tm *f; time_t now;now=time(NULL); time(&now); f=gmtime(&now);printf(ctime(&now); return 0; void scan()system(cls); /*清屏*/ printf(n =n); printf( 车次 额定载量 起点 终点 开车时间 行车时间 票价 已定票人数n);

11、for(i=0;iN;i+) printf( %s%13d%10s%10s%12s%8s%f%6dn,T,Ti.rl,Ti.lp,Ti.ap,Ti.lt,Ti.rt,Ti.price,Ti.bn); printf( =n);printf(请按任意键返回主菜单n);getch();void INPUT() /键入所有信息char ch;do system(cls); printf(nn =欢迎进入 录入汽车时刻信息 界面=n); doprintf(n 新建汽车信息?(y/n) );scanf(%c,&ch);if(ch!=y&ch!=n)printf(输入错误,请重新输入!); while(ch

12、!=y&ch!=n);if(ch=n)break; printf( -);printf(n 录入第%d趟列车信息n,n+1);printf( 车次 ); fflush(stdin); gets(T);printf( 额定载量 );fflush(stdin); scanf(%d,&Ti.rl);printf( 起点 );fflush(stdin); gets(Ti.lp); printf( 终点 ); fflush(stdin); gets(Ti.ap); printf( 开车时间 ); fflush(stdin); gets(Ti.lt); printf( 行车时间 ); fflush(std

13、in); gets(Ti.rt); printf( 票价 ); fflush(stdin); scanf(%f,&Ti.price); printf( 已定票人数 ); fflush(stdin); scanf(%d,&Ti.bn); n+; i+; while(iN); save(); system(cls);void prna(int pos) / 打印一条记录 printf(n =n); printf( 车次 额定载量 起点 终点 开车时间 行车时间 票价 已定票人数n); printf( %s%13d%10s%10s%12s%8s%f%6dn,T,Tpos.rl,Tpos.lp,Tpo

14、s.ap,Tpos.lt,Tpos.rt,Tpos.price,Tpos.bn); printf( =n);void searchmenu() / 查询主菜单system(cls); printf(nn =欢迎进入 查询汽车时刻信息 界面=n);printf(n +请选择查找方式+nn); printf(| 1: 按班次查询 |n); printf(| 2: 按起点站查询 |n);printf(| 3: 进终点站查询 |n);printf(| 4: 返回主菜单 |n);printf(*n); printf(n请选择(1-4):);int s_cn() /按班次查询char name115;in

15、t j;system(cls);printf(请输入要查询的班次号:n );fflush(stdin);gets(name1);for(j=0;jN;j+)if(strcmp(T,name1)=0)printf( %s%13d%10s%10s%12s%8s%f%6dn,T,Tj.rl,Tj.lp,Tj.ap,Tj.lt,Tj.rt,Tj.price,Tj.bn);continue; return 0; return 1;int s_lp() /按起点站查询char name215;int j;system(cls);printf(请输入要查询的起点站名: n);fflush(stdin);ge

16、ts(name2);for(j=0;jN;j+)if(strcmp(Tj.lp,name2)=0)printf( %s%13d%10s%10s%12s%8s%f%6dn,T,Tj.rl,Tj.lp,Tj.ap,Tj.lt,Tj.rt,Tj.price,Tj.bn);continue; return 0; return 1;int s_ap() /按终点站查询char name315;int j;system(cls);printf(请输入要查询的终点站名: n);fflush(stdin);gets(name3); for(j=0;j=Tm-1.rl)printf(该班次票已满!请选择其他班次

17、n);printf(按任意键返回n);if(Tm-1.bn0) printf(该班次已发车,请选择其他班次n); else if(Tm-1.bn=Tm-1.rl) printf(该班次未发车但是该班次票已售完n); if (Tm-1.bn!=Tm-1.rl&strcmp(t,Tm-1.lt)0&Tm-1.bn(Tm-1.rl-Tm-1.bn) printf(订票错误,数量不能超过余票数!n); printf(请重新输入:); scanf(%d,&log); if(log0) printf(可以退票n);printf(请问你真的要退票吗? n);printf(确认退票请按1,否则返回主菜单n);

18、scanf(%d,&log);if(log=1)printf(退票成功!n);Ti-1.bn-;save();printf(按任意键返回主菜单n);getch();elseprintf(您选择不退票n);printf(按任意键返回主菜单n);getch(); if(strcmp(Ti-1.lt,t)0) printf(此班次已发车不能退票!n);printf(按任意键返回主菜单n);getch();void change()system(cls);int k,select;char banci100;char mima10;/假设密码为aaaprintf(这个是工作人员所进,请输入密码:n);

19、scanf(%s,mima);while(strcmp(mima,aaa)!=0)printf(密码错误!n);printf(请重新输入:n);scanf(%s,mima);printf(进入成功!n); printf(输入所要修改班次号:n); scanf(%s,banci);for(k=0;kN;k+)if(strcmp(T,banci)=0)break;printf(n =n);printf( 车次 额定载量 起点 终点 开车时间 行车时间 票价 已定票人数n); printf( %s%13d%10s%10s%12s%8s%f%6dn,T,Tk.rl,Tk.lp,Tk.ap,Tk.lt,

20、Tk.rt,Tk.price,Tk.bn);printf( =n); printf(修改时间请按1n);printf(修改终点站请按2n);printf(修改票价请按3n);scanf(%d,&select);switch(select)case 1:for(k=0;kN;k+)if(strcmp(T,banci)=0)break;printf(请输入修改后的时间(例如08:00)n);scanf(%s,Tk.lt);printf(修改成功!n);printf(n =n);printf( 车次 额定载量 起点 终点 开车时间 行车时间 票价 已定票人数n); printf( %s%13d%10

21、s%10s%12s%8s%f%6dn,T,Tk.rl,Tk.lp,Tk.ap,Tk.lt,Tk.rt,Tk.price,Tk.bn);printf( =n);printf(按任意键返回n);save();getch();break;case 2:for(k=0;kN;k+)if(strcmp(T,banci)=0)break;printf(请输入修改后的终点站n);scanf(%s,Tk.ap);printf(修改成功!n);printf(n =n);printf( 车次 额定载量 起点 终点 开车时间 行车时间 票价 已定票人数n); printf( %s%13d%10s%10s%12s%8

22、s%f%6dn,T,Tk.rl,Tk.lp,Tk.ap,Tk.lt,Tk.rt,Tk.price,Tk.bn);printf( =n);printf(按任意键返回n);save();getch();break;case 3:for(k=0;kN;k+)if(strcmp(T,banci)=0)break;printf(请输入修改后的票价n);scanf(%d,&Tk.price);printf(修改成功!n);printf(n =n);printf( 车次 额定载量 起点 终点 开车时间 行车时间 票价 已定票人数n); printf( %s%13d%10s%10s%12s%8s%f%6dn,

23、T,Tk.rl,Tk.lp,Tk.ap,Tk.lt,Tk.rt,Tk.price,Tk.bn);printf( =n);printf(按任意键返回n);save();getch();default:printf(选择错误!);printf(按任意键返回主菜单n);getch();break;void main()int select;load();while(1)main_menu();scanf(%d,&select);switch(select)case 1:scan();getchar();break;case 2:search();getchar();break;case 3:buy(

24、);getch();break;case 4:tuipiao();getchar();break;case 5:change();getchar();break;if(select=0) printf(按任意键退出n);printf(n);break; 4 系统测试4.1 主界面系统主界面如图4-1所示:系统运行主窗口4.2 车次信息浏览模块在主菜单的提示下选择1,可显示所有车次信息。4.3 查询车次信息在主菜单的提示下选择2,接着按提示进行各项查4.4 售票输入您想买的班次,若有票剩余且未发车,即可订票,程序会显示订票成功;此时再输入您要定的票数;若车已发出或票卖完了,程序会提示您:此班不能

25、订票。4.5 退票输入您想退的班次,若未发车,即可退票,程序会显示退票成功;此时再输入您要退的票数,程序会显示退票成功;4.6 修改班次信息若想增加班次,则要输入密码(aaa),输入您所要修改的班次,只能修改终点站、发车时间及行车时间。5 工作总结5.1 系统工作总结系统第一次开始运行时,要调用INPUT()函数进行数据的录入,完成之后再重新运行,这时不再调用INPUT()函数,可以节省一些步骤。再整个运行过程中并没出现什么错误,按照提示一步步地操作,可以简单的操作系统。,5.2 心得体会经历这几周的学习和锻炼,这个车票管理系统总算是做出来了,一开始我无从入手,只有上网查找一些资料阅读别人的设计,这样才有了一点点眉目。到现在为止还不算做的完好,还存在一些不足,比如:现在的退票售票的一些细节还出现错误,虽然可以忽略,主体上是没问题的。由于我的水平有限,所以只能做出现在的程序。在此过程,学到了很多课堂上没有的东西。有好多知识是之前不知道的,现在了解了差不多了。但是对于时间函数,我还是不太清楚。这几周编程的过程实在是繁琐,但是在编出程序之后,是相当有成就感的,现在的c语言也是如此,我相信以后会更加对c语言有兴趣。我一定会学好它的。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!