课程设计报告车票管理系统_第1页
课程设计报告车票管理系统_第2页
课程设计报告车票管理系统_第3页
课程设计报告车票管理系统_第4页
课程设计报告车票管理系统_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计报告(C语言程序设计)题目车票信息管理系统的设计与实现二级学院数学与统计专业信息与计算科学班级112010102学生姓名郭双红学号11201010209指导教师陈媛时间201306191 需求分析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 数据定义本系统的数据可采用结构数组来处理。可必要的设置全局变量。因此本系统的主要数据定义如下:struct Tra

4、in_Ticketchar 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 关键技术分析 在程序开始运行时,应调用自定义的INPUT() 函数,将所有需要的数据导入到结构数组中,然后保存。调用load()函数,从磁盘导入车票信息。由于

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

6、输出数据进行格式控制,以使界面更加美观,清晰。3 系统实现3.1 功能模块设计根据系统分析的结论,将本系统需完成的功能模块划分如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include<time.h>#define N 4void main_menu();/主菜单模块void load();/导入信息void INPUT();/输入模块void scan();/浏览模块void tuipiao();/退票void buy();/买票

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

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

9、quot;|3:售票|n");printf("|4:退票|n");printf("|5:班次信息修改|n");printf("|0:退出|n");printf("*n");printf("n 请选择 (0-5): ");void load() / 从磁盘文件导入班次信息int i;FILE *fp;if(fp=fopen("c:车票管理系统.dat","rb")=NULL)printf(" 文件打开错误n");exit(0);

10、for(i=0;i<N;i+)fread(&Ti,sizeof(struct Train_Ticket),1,fp);fclose(fp);system("cls");void save() / 将班次信息保存到磁盘文件FILE *fp;车票管理系统.dat","wb")=NULL)if(fp=fopen("c: (printf(" 无法创建文件!nn");exit(0);for(i=0;i<N;i+)fwrite(&Ti,sizeof(struct Train_Ticket),1,fp

11、); 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");for(i=0;i<N;i+)printf( " %s%13d%1

12、0s%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");do(printf("n新建汽车信息?(y/n)");scanf("%c",&a

13、mp;ch);if(ch!='y'&&ch!='n')printf("输入错误,请重新输入!");while(ch!='y'&&ch!='n');if(ch='n')break;printf("");printf("n 录入第d趟列车信息n",n+1);printf(" 车次 ");fflush(stdin);gets(T);printf("额定载量");fflush(stdi

14、n);scanf("%d",&Ti.rl);printf(" 起点 ");fflush(stdin);gets(Ti.lp);printf("终点 ");fflush(stdin);gets(Ti.ap);printf("开车时间 ");fflush(stdin);gets(Ti.lt);printf("行车时间 ");fflush(stdin);gets(Ti.rt);printf("票价 ");fflush(stdin);scanf("%f",

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

16、,Tpos.lp,Tpos.ap,Tpos.lt,Tpos.rt,Tpos.price,Tpos.bn);printf("=n");)void searchmenu()/system("cls");printf("nn = 界面=n");printf("n+nn");printf("|n");printf("|n");printf("|n");printf("|n");查询主菜单=欢迎进入查询汽车时刻信息+请选择查 找方式1:接班次查询

17、2:按起点站查询3:进终点站查询4:返回主菜单printf("* *n");printf("n 请选择(1-4): ");)int s_cn()/按班次查询char name115;int j;system("cls");printf("请输入要查询的班次号:n ");fflush(stdin);gets(name1);for(j=0;j<N;j+)if(strcmp(T,name1)=0)printf( " %s%13d%10s%10s%12s%8s%f%6dn",T,T

18、j.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);gets(name2);for(j=0;j<N;j+)if(strcmp(Tj.lp,name2)=0)printf( " %s%13d%10s%10s%12s%8s%f%6dn",T,Tj.rl,T

19、j.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<N;j+)if(strcmp(Tj.ap,name3)=0)printf( " %s%13d%10s%10s%12s%8s%f%6dn",T,Tj.rl,Tj.lp,T

20、j .ap,Tj.lt,Tj.rt,Tj.price,Tj.bn);continue;return 0;return 1;void search()/查询函数int select;int n;while(1)searchmenu();scanf("%d",&select);switch(select)case 1: n=s_cn();if(n)printf(" 没 找 到 相 关 记 录 n");printf(" 按 任 意 键 返 回 n");getch();break;case 2: n=s_lp();if(n)print

21、f(" 没有找到相关记录n");printf(" 按任意键返回n");getch();break;case 3: n=s_ap();if(n)printf(" 没有找到相关记录n");printf(" 按任意键返回 n");getch();break;if(select=4) break;main_menu();void buy()/买票system("cls");int m,log;char t10;printf("请输入您需要购买票的班次(1-4):n");scanf(&

22、quot;%d",&m);load();printf("n=n");printf(" 车次额定载量起点 终点开车时间行车时间 票价 已定票人数n");printf( " %s%13d%10s%10s%12s%8s%f%6dn",T,Tm-1.rl,Tm-1.lp,Tm-1.ap,Tm-1.lt,Tm-1.rt,Tm-1.price,Tm-1.bn);printf("=n");if(Tm-1.bn>=Tm-1.rl) (printf("该班次票已满!请选择其他班次n&qu

23、ot;);printf("按任意键返回n");if(Tm-1.bn<Tm-1.rl) (printf(" 当前时间为:n");time();printf("n");printf(" 请再手动输入上述时间,只需要输入时辰与分钟(例如 08:00):n");scanf("%s",t);printf("n");if(strcmp(t,Tm-1.lt)>0)printf("该班次已发车,请选择其他班次n");else if(Tm-1.bn=Tm-1.r

24、l)printf("该班次未发车但是该班次票已售完n");if(Tm-1.bn!=Tm-1.rl&&strcmp(t,Tm-1.lt)<0&&Tm-1.bn<Tm-1.rl) (printf("该班次还可订 d 票n",(Tm-1.rl-Tm-1.bn); printf("请输入您要订票数量");scanf("%d”,&log); printf("n");while(log>(Tm-1.rl-Tm-1.bn)printf("订票错误,数量

25、不能超过余票数!n"); printf("请重新输入:");scanf("%d",&log); ) if(log<=(Tm-1.rl-Tm-1.bn)printf(" 一共需要机n",log*Tm-1.price);printf("订票成功,祝您旅途愉快!n");) Tm-1.bn+=log; printf("按任意键返回主菜单n");getchar(); save(); void tuipiao()/ 退票 system("cls"); int x,

26、log; char t10; printf("请输入您要退票的班次:n");scanf("%d",&x); i=x;int m=i; load(); printf("n=n");printf(" 车次 额定载量 起点 终点开车时间行车时间 票价 已定票人数n");printf( " %s%13d%10s%10s%12s%8s%f%6dn",T,Tm-1.rl,Tm-1.lp,Tm-1.ap,Tm-1.lt,Tm-1.rt,Tm-1.price,Tm-1.bn);printf(

27、"=n");printf("当前时间为:n");time();printf("n");printf(" 请再手动输入上述时间,只需要输入时辰与分钟( 例如 08:00):n");scanf("%s",t);if(strcmp(Ti-1.lt,t)>0)printf(" 可以退票n");printf(" 请问你真的要退票吗?n");printf(" 确认退票请按1, 否则返回主菜单n");scanf("%d",&

28、amp;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 chang

29、e()system("cls");int k,select;char banci100;char mima10;/假设密码为 aaaprintf("这个是工作人员所进,请输入密码:n");scanf("%s”,mima);while(strcmp(mima,"aaa")!=0)printf("密码错误!n");printf("请重新输入:n");scanf("%s",mima);printf("进入成功!n");printf("输入所要

30、修改班次号:n");scanf("%s",banci);for(k=0;k<N;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,Tk.rt,Tk.price,Tk.bn);printf(":=n");printf(&q

31、uot;修改时间请按1n");printf("修改终点站请按2n");printf("修改票价请按3n");scanf("%d",&select);switch(select)(case 1:for(k=0;k<N;k+)if(strcmp(T,banci)=0)break;printf(" 请输入修改后的时间(例如08:00)n");scanf("%s",Tk.lt);printf("修改成功!n");printf("n=n&quo

32、t;);printf(" 车次额定载量起点 终点开车时间行车时间票价已定票人数n");printf( " %s%13d%10s%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;k<N;k+)if(strcmp(T,banci)=0)break;printf("请输入修改

33、后的终点站n");scanf("%s",Tk.ap);printf("修改成功!n");printf("n=n");printf(" 车次额定载量起点 终点开车时间行车时间票价已定票人数n");printf( " %s%13d%10s%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(

34、);getch();break;case 3:for(k=0;k<N;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",T,Tk.r

35、l,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();getcha

36、r();break;case 2:search();getchar();break;case 3:buy();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所示:"GU5er5guoDe5ktopda5Debugd,exe"卅相田曰坤相问*料归目羽球相日e|*n忙料*|*|e(*|a|

37、*|*|n*f*|*|e|o|e|D|e|a|e+3|E杷t*忖*白小曰*曰*t*t*f*t*|0c欢j卬来至11车覃杳询 系交齐*sf*f*!*料*=|*!*f*|用*|e1:进入新浏览2:进入查理E欠 3: 售票 m4:退票m5:班次信息修改M=+=1=+=+o|=+o+=lcM=M=+=t=+=<=+=<=+=M=+ol=+eM=lcM=M=+=<=+=t=N=+=1ol=+ol=WcM=+=<=t=<=+=4=+=4ol=lol=+ol=1cM=M=+=<=+=4=t=<=+=We系统运行主窗口4.2 车次信息浏览模块在主菜单的提示下选择1,可

38、显示所有车次信息。f1 'C:U se rsg uoDes ktopda sDebugd ,exe"车次0001000200030004额定载量45404040县县县县K,.J Tj卑卑卑卑点东都庆庆终广成重重开车时间行车时间票价已定票人额s:oo2.040.0450:300. 525.0327:000.525.02010:002.540.025清按任意键返回主菜单4.3 查询车次信息在主菜单的提示下选择 2, 接着按提示进行各项查 C:UsersguoDRsktopdasDubugd.exe'1 C:UsersguoDesktopdasDebugd.exe11=欢迎

39、进入查询汽车时刻信息界面=二=选择查找方式Hi1:按班次查询2:按起点站查询3:进终点站查询4:返回主菜单请输入要查询的班次号:0001000145 邮县 广东 8:002.040.045*C:UsersguoDesktopdasDebugd.exe*请诵/要查词的起点站名:郸县000145000240000340000440东都庆庆县县县县8:0C2.040.0456:3C0.525.0327:0C0.525.02010:0C2.540.025按任意键返回1 C:UsersguoDesktopdasDebugd.exe*情溢人要查询的终点站名:重庆0003如邮县重庆 7:000.525.020000440麻县重庆10:002.540.025按任意键返回C:UsersguoDesktopdasDebugd.exe*请愉入要查询的班次号:6没找到相关记录按任意键返回

温馨提示

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

评论

0/150

提交评论