《车票管理系统报告》由会员分享,可在线阅读,更多相关《车票管理系统报告(16页珍藏版)》请在金锄头文库上搜索。
1、车票管理系统报告/* *车票管理系统一车站每天有n个发车班次,每个班次都有一班次号(1、2、3n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如班次发车时间起点站终点站行车时间额定载量已定票人数1 8:00 上海南杭州2 45 302 6:30 嘉兴杭州0.5 40 403 7:00 嘉兴杭州0.5 40 204 10:00 嘉兴杭州0.5 40 2(一)功能要求:用c/c+设计一系统,能提供下列服务:(1)录入班次信息(信息用文件保存),可不定时地增加班次数据(2)浏览班次信息,可显示出所有班次当前状态(如果当前系统时间超过了某班次的发车时间,则显示“此
2、班已发出”的提示信息)。(3)查询路线:可按班次号查询 ,可按终点站查询(4)售票和退票功能A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数(二)其它要求:(1) 只能使用C/C+语言,源程序要有适当的注释,使程序容易阅读(2) 至少采用文本菜单界面(如果能采用图形菜单界面更好)(3) 学生可自动增加新功能模块* */#include#include#include#include#include#includeconst int MAX=20;const int N=50;con
3、st int MAXFILENAME=100;enum FALSE,TRUE;struct timeint hour;int minutes;struct ticket int SerialNumber;struct time SetOut;char DeparturePointMAX;char TerminalPointMAX;float LastTime;int FixNumber;int FixedNumber;carN;int RecordNumber;int FLAG=FALSE;/*/int ShowMessage(void); /载入原始数据void mainmenu(void)
4、; /主菜单void InsertMessage(void); /录入班次信息void SearchMenu(void); /查询路线子菜单void SearchByNumber(void); /按班次号查询void SearchByAddress(void); /按终点站查询void TicketManagement(void); /车票售出与退回void TicketOrder(void); /售票void TicketDelete(void); /退票void exit(void); /退出该系统void SaveRecord(ticket x); /储存信息到文件中/*/int mai
5、n(void)domainmenu();while(FLAG=FALSE);return 0;void mainmenu(void)system(color 1f);system(mode con: cols=140 lines=130);char functionNumber;printf( 车票管理系统nn);printf( 制作:hmm182007n);printf( 日期:2007/11/25/19:57n);printf(= =n);printf( 1.录入班次信息tn);printf( 2.浏览班次信息tn);printf( 3.查询行车路线tn); printf( 4.售票与退票
6、系统tn); printf( 5.退出该系统tn);printf(= =n);printf(请选择你所需要的功能:);scanf(%c,&functionNumber);switch(functionNumber)case 1:InsertMessage();printf(n按任意键回主菜单.n);getchar();getchar();break;case 2:RecordNumber=ShowMessage();printf(n按任意键回主菜单.n);getchar();getchar();break;case 3:SearchMenu();printf(n按任意键回主菜单.n);getc
7、har();getchar();break;case 4:TicketManagement();getchar();getchar();break;case 5:FLAG=TRUE;exit();break;default:printf(输入错误,请确保你的输入为1-5.n);printf(按任意键回主菜单.n); getchar(); getchar();/switch endsFLAG=FALSE;void InsertMessage(void)FILE *fp;char filenameMAXFILENAME;int i;printf(请输入文件名或者文件路径名:);scanf(%s,f
8、ilename);if(fp=fopen(filename,r)=NULL)printf(文件%s不可读,请确认文件%s存在或者文件路径正确.nn,filename,filename);mainmenu();for(i=RecordNumber;!feof(fp)&!ferror(fp);i+)fscanf(fp,%d%d%d,&cari.SerialNumber,&cari.SetOut.hour,&cari .SetOut.minutes);fscanf(fp,%s%s%f%d%d,&cari.DeparturePoint,&cari.TerminalPoin t,&cari.LastTi
9、me,&cari.FixNumber,&cari.FixedNumber);SaveRecord(*(car+i);RecordNumber=i;/*输出更新后的订票记录*/printf(班次t发车时间t起点t终点t行车时间(小时)t额定载量t已定票人数n);for(i=0;iprintf(%dt%d:%dtt,cari.SerialNumber,cari.SetOut.hour,car i.SetOut.minutes);printf(%st%stt%.1ft %dtt%dn,cari.DeparturePoint,cari. TerminalPoint,cari.LastTime,cari
10、.FixNumber,cari.FixedNumber); fclose(fp);int ShowMessage(void) int i; FILE *fp;if(fp=fopen(add.txt,r)=NULL)printf(读取数据失败,请检查文件add.txt是否存在.n);exit(-1);for(i=RecordNumber;!feof(fp)&!ferror(fp);i+)fscanf(fp,%d%d%d,&cari.SerialNumber,&cari.SetOut.hour,&cari .SetOut.minutes);fscanf(fp,%s%s%f%d%d,&cari.De
11、parturePoint,&cari.TerminalPoin t,&cari.LastTime,&cari.FixNumber,&cari.FixedNumber);int count=i;printf(班次t发车时间t起点t终点t行车时间(小时)t额定载量t已定票人数n);for(i=0;iprintf(%dt%d:%dtt,cari.SerialNumber,cari.SetOut.hour,car i.SetOut.minutes);printf(%st%stt%.1ft %dtt%dt,cari.DeparturePoint,cari. TerminalPoint,cari.Last
12、Time,cari.FixNumber,cari.FixedNumber); /*调用系统时间实现的功能:如果车已发出,则打出提示此车已发出,但是此处有错误*/time_t tval;struct tm *now;tval = time(NULL);now = localtime(&tval);if(now-tm_hour=cari.SetOut.hour&now-tm_mincari.SetOut.m inutes)|(now-tm_hourcari.SetOut.hour)printf(此车已发出);printf(n);return count;void SearchMenu(void)system(color 1f);system(mode con: c