车票管理系统实验报告.doc_第1页
车票管理系统实验报告.doc_第2页
车票管理系统实验报告.doc_第3页
车票管理系统实验报告.doc_第4页
车票管理系统实验报告.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

车票管理系统一问题描述: 一车站每天有n个发车班次,每个班次都有一班次号(1、2、3n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如:班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数1 8:00 马鞍山 南京 0.45 45 302 6:30 马鞍山 杭州 3.5 40 403 9:00 南京 上海 4.0 40 204 10:00 南京 杭州 2.5 40 2二:功能要求:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。(3)查询路线:可按班次号查询 ,可按终点站查询(4)售票和退票功能 A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票, 自动更新已售票人数B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数(5)要求采用菜单界面,文本或图形方式均可。 一 结构图开始车票管理系统按任意键输入选择从文本录入班次信息买卖票系统查询班次信息浏览班次信息查询方法选择买卖票选择查询买 卖 票主菜单结 束 三:模块设计1.头文件,定义结构体变量#includestdio.h#includestring.h#includemalloc.h#includewindows.hstruct time /定义记录时间的结构体 int hour; /包含小时 int minute; /分钟 ;struct ticket /定义记录车票信息的结构体 int number; /定义车次struct time ft ; /记录发车时间char origin_station20; /起始站名称数组char last_station20; /终点站名称数组float last_time; /持续时间int max_number; /车次最大运载量int sold_ticket; /已售车票train100; int i; int syshour; /记录系统时间小时 int sysminute; /记录系统时间分钟 char filename50; /文件名数组 int record; /记录条数记录2.开始菜单 printf(*欢迎使用车票管理系统*);3.主菜单显示显示系统时间:int system_time() SYSTEMTIME sys;GetLocalTime(&sys); /调用系统时间printf( %4d /%02d/%02d %02d:%02d:%02d 星期%1dn,sys.wYear,sys.wMonth,sys.wDay,sys.wHour,sys.wMinute,sys.wSecond,sys.wDayOfWeek);syshour=sys.wHour; sysminute=sys.wMinute; return 0;void mainmenu() system(cls); printf(当前时间:); system_time(); printf(*主菜单*n); printf(* 1.录入班次信息 *n); printf(* 2.浏览班次信息 *n); printf(* 3.查询班次信息 *n); printf(* 4.售票 *n); printf(* 5.退票 *n); printf(* 0.退出系统 *n); printf(*n);4. 选择操作模块void choose() int n; printf(请输入您想做的操作: );scanf(%d,&n);switch(n)case 1:load(); break; case 2:show();break; case 3:search();break; case 4:buyticket();break; case 5:backticket();break; case 0:exit(0); /调用系统函数退出程序5.录入信息void load() /载入文件 char n; /定义变量记录输入字符 FILE *fp;printf(请输入文件名或者文件路径名:); scanf(%s,filename); getchar();printf(您确定您输入的文件路径(y/n):); /确定文件输入正确scanf(%c,&n);if(n=y) if(fp=fopen(filename,r)=NULL) /判断文件的存在,是否可读 printf(文件%s不可读,请确认文件%s存在或者文件路径正确.nn,filename,filename); system(pause); /暂停显示文件状态else /文件载入成功printf(!录入成功!n);system(pause);for(i=0; !feof(fp)&!ferror(fp);i+) fscanf(fp,%03d,&traini.number); fscanf(fp,%d%02d,&traini.ft.hour,&traini.ft.minute);fscanf(fp,%s%s%f,&traini.origin_station,&traini.last_station,&traini.last_time);fscanf(fp,%d%d,&traini.max_number,&traini.sold_ticket); record=i; /将数据条数给record 记录 fclose(fp); /关闭文件 /return ;/system(pause);6. 显示信息void show()printf(班次 发车时间 起点 终点 行车时间(h) 额定载量 已定票人数 状态n);for(i=0;itraini.ft.hour)|(syshour=traini.ft.hour) &(sysminutetraini.ft.minute) /判断发车时间与当前时间前后关系 printf( 车已开出); else printf( );/*当发车时间没有超过当前时间,打印空格,当发车时间超过当前时间时,打印车已开出*/ printf(n); system(pause);7. 查询模块(1)根据班次查询void search1() int m; /定义变量记录输入班次bool f=false; printf(请您输入你的班次: n);scanf(%d,&m);int flag = 1;for(int i=0;itraini.ft.hour)|(syshour=traini.ft.hour)&(sysminutetraini.ft.minute)printf(车已开出);else printf( );printf(n);f=true;else continue;if(!f)printf( 没有此条车次记录!n);system(pause);/searsh();printf(*没有此条车次记录!n*);(2)根据起始站与终点站精确查询void search2()char b20; /定义输入起始站名称字符串数组char c20; /定义输入起终点站名称字符串数组bool f=false; printf(请您输入你的起始站,终点站: n);scanf(%s,&b);scanf(%s,&c);int flag = 1;for(int i=0;itraini.ft.hour)|(syshour=traini.ft.hour)&(sysminutetraini.ft.minute) printf(车已开出); else printf( ); printf(n); f=true;elsecontinue;system(pause); if(!f)printf( 没有此条车次记录!n);system(pause);/searsh();(3)粗略查询void search3() char b20; /定义字符串数组bool f=false; printf(请您输入你的起始站或终点站: n);scanf(%s,&b); int flag = 1;for(int i=0;itraini.ft.hour)|(syshour=traini.ft.hour)&(sysminutetraini.ft.minute)printf(车已开出);elseprintf( );printf(n);f=true;else continue;system(pause); if(!f)printf( 没有此条车次记录!n);system(pause);/searsh();void search()/system(cls); /显示菜单时清空int s;printf(*查询菜单*n);printf(* 1.按车次查询 *n);printf(* 2.精确查询 *n);printf(* 3.粗略查询 *n);printf(* 0.返回主菜单 *n);printf(*n); /打印查询菜单printf(请选择: n); scanf(%d,&s); /选择数字输入 if(s=1)search1();else if(s=2)search2();else if(s=3)search3();else mainmenu();8. 时间比较函数int canpan()if(syshourtraini.ft.hour)|(syshour=traini.ft.hour)&(sysminutetraini.ft.minute)return 1;else return 0;9.售票模块void buyticket()int a; /定义记录输入班次号码char n;printf(请输入您想买车票的班次: );scanf(%d,&a);getchar();bool f=false;for(i=0;irecord;i+) /从数组起始开始查找if(a=traini.number)&(traini.max_numbertraini.sold_ticket)&(canpan()printf( 此车已开 );f=true;/break;else if(a=traini.number)&(traini.max_numbertraini.sold_ticket)&(!canpan()printf(您确定要买%02d:%02d由%s到%s的车票?(y/n):,traini.ft.hour,traini.ft.minute,traini.origin_station,traini.last_station); scanf(%c,&n);if(n=y)printf( 购买成功,请按时乘车! );traini.sold_ticket=traini.sold_ticket+1; /购买成功已买票加一f=true;elseprintf(售票失败!n); system(pause);return ;break;if(!f)printf( 没有此车次信息,请确认! ); /没有输入车次打印save(); /将要修改的信息保存到文件中system(pause);10.退票模块void backticket()int a; /记录输入数字char n; /记录输入字符bool f=false;printf(请输入您要退的班次: );scanf(%d,&a);getchar();for(i=0;irecord;i+)if(a=traini.number)&(canpan()printf(车已开出!);f=true;break;/*当车次号码与输入号码相同,canpan()函数返回1,既发车时间大于当前时间时打印the train is started */else if(a=traini.number)&(!canpan()printf(您确定要退%d:%02d由%s到%s的车票(y/n):,traini.ft.hour,traini.ft.minute, traini.origin_station,traini.last_station);/*用户确认信息,确认时间,起始站终点站*/scanf(%c,&n);if(n=y)printf( 退票成功! n);system(pause);traini.sold_ticket=traini.sold_ticket-1;/退票成功已售票数减一f=true;else printf(退票失败!n);system(pause);return ;break;if(!f)printf( 没有此车次信息,请确认! ); /不存在车次信息打印save(); /保存修改信息到文本system(pause);11.文件保存模块void save()FILE *fp; if(fp=fopen(filename,w)=NULL) /判断文件存在和是否可写printf(%s 文件不可写); for(i=0;irecord-1;i+) fprintf(fp,%d %d %2d ,traini.number,traini.ft.hour,traini.ft.minute);fprintf(fp,%s %s %.1f %d %dn,traini.origin_station,traini.last_station,traini.last_time, traini.max_number,traini.sold_ticket);fprintf(fp,%d %d %2d ,traini.number,traini.ft.hour,traini.ft.minute); fprintf(fp,%s %s %.1f %d %d,traini.origin_station,traini.last_station,traini.last_time, traini.max_number,traini.sold_ticket);fclose(fp); /关闭文件12.主函数int main() printf(*欢迎使用车票管理系统*n); system(pause); while(1) mainmenu(); choose(); return 0;4 测试数据1 6 30 池州 铜陵 2.0 80 252 6 30 池州 芜湖 3.0 100 403 6 30 池州 马鞍山 4.0 94 304 6

温馨提示

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

评论

0/150

提交评论