1、车票管理系统车票管理系统(C语言实现)2007-11-25 20:13/*车票管理系统一车站每天有n个发车班次,每个班次都有一班次号(1、2、3n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如 班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数 1 8:00 郫县 广汉 2 45 30 2 6:30 郫县 成都 0.5 40 40 3 7:00 郫县 成都 0.5 40 20 4 10:00 郫县 成都 0.5 40 2 (一)功能要求:用c/c+设计一系统,能提供下列服务: (1)录入班次信息(信息用文件保存),可不定时地增加班次数据 (2
2、)浏览班次信息,可显示出所有班次当前状态(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。 (3)查询路线:可按班次号查询 ,可按终点站查询 (4)售票和退票功能 A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数 B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数 (二)其它要求: (1) 只能使用C/C+语言,源程序要有适当的注释,使程序容易阅读 (2) 至少采用文本菜单界面(如果能采用图形菜单界面更好) (3) 学生可自动增加新功能模块 */#include#include#include#inclu
3、de#include#includeconst int MAX=20;const int N=50;const int MAXFILENAME=100;enum FALSE,TRUE;struct timeint hour;int minutes;struct ticketint SerialNumber;struct time SetOut;char DeparturePointMAX;char TerminalPointMAX;float LastTime; int FixNumber;int FixedNumber;carN;int RecordNumber;int FLAG=FALSE
4、;/*/int ShowMessage(void); /载入原始数据void mainmenu(void); /主菜单void InsertMessage(void); /录入班次信息void SearchMenu(void); /查询路线子菜单void SearchByNumber(void); /按班次号查询void SearchByAddress(void); /按终点站查询void TicketManagement(void); /车票售出与退回void TicketOrder(void); /售票void TicketDelete(void); /退票void exit(void);
5、 /退出该系统void SaveRecord(ticket x); /储存信息到文件中/*/int main(void)do mainmenu();while(FLAG=FALSE);return 0;void mainmenu(void)system(color 1f);system(mode con: cols=140 lines=130);char functionNumber;printf( 车票管理系统nn);printf( 制作:B08011203n);printf( 日期:2009/05/31/19:57n);printf(=n);printf( 1.录入班次信息tn);prin
6、tf( 2.浏览班次信息tn);printf( 3.查询行车路线tn);printf( 4.售票与退票系统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(); g
7、etchar(); break; case 3: SearchMenu(); printf(n按任意键回主菜单.n); getchar(); 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(vo
8、id)FILE *fp;char filenameMAXFILENAME;int i;printf(请输入文件名或者文件路径名:);scanf(%s,filename);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.minute
9、s); fscanf(fp,%s%s%f%d%d,&cari.DeparturePoint,&cari.TerminalPoint,&cari.LastTime,&cari.FixNumber,&cari.FixedNumber); SaveRecord(*(car+i);RecordNumber=i;/*输出更新后的订票记录*/printf(班次t发车时间t起点t终点t行车时间(小时)t额定载量t已定票人数n);for(i=0;iRecordNumber;i+) printf(%dt%d:%dtt,cari.SerialNumber,cari.SetOut.hour,cari.SetOut.
10、minutes); printf(%st%stt%.1ft %dtt%dn,cari.DeparturePoint,cari.TerminalPoint,cari.LastTime,cari.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,%
11、d%d%d,&cari.SerialNumber,&cari.SetOut.hour,&cari.SetOut.minutes); fscanf(fp,%s%s%f%d%d,&cari.DeparturePoint,&cari.TerminalPoint,&cari.LastTime,&cari.FixNumber,&cari.FixedNumber);int count=i;printf(班次t发车时间t起点t终点t行车时间(小时)t额定载量t已定票人数n);for(i=0;itm_hour=cari.SetOut.hour&now-tm_mincari.SetOut.minutes)|(n
12、ow-tm_hourcari.SetOut.hour) printf(此车已发出); printf(n);return count;void SearchMenu(void)system(color 1f);system(mode con: cols=140 lines=130);char functionNumber;printf( 查询子菜单n);printf(=n);printf( 1.按班次号查询tn);printf( 2.按终点站查询tn);printf( 3.返回主菜单tn);printf(=n);printf(请选择你所需要的功能:);scanf(%*c%c,&functionN
13、umber);switch(functionNumber) case 1:SearchByNumber();break; case 2:SearchByAddress();break; case 3: getchar(); mainmenu(); break; default: printf(输入错误,请确保你的输入为1-3.n); printf(按任意键回查询子菜单.n); getchar(); getchar(); SearchMenu();void SearchByNumber(void)int SearchNumber;printf(请输入要查询的班次号:);scanf(%d,&Sea
14、rchNumber);printf(班次t发车时间t起点t终点t行车时间(小时)t额定载量t已定票人数n);printf(%dt%d:%dtt,carSearchNumber-1.SerialNumber,carSearchNumber-1.SetOut.hour,carSearchNumber-1.SetOut.minutes);printf(%st%stt%.1ft %dtt%dn,carSearchNumber-1.DeparturePoint,carSearchNumber-1.TerminalPoint,carSearchNumber-1.LastTime,carSearchNumb
15、er-1.FixNumber,carSearchNumber-1.FixedNumber);void SearchByAddress(void)int i;char AddressMAX;printf(请输入终点站的名称:);scanf(%s,&Address);printf(班次t发车时间t起点t终点t行车时间(小时)t额定载量t已定票人数n);for(i=0;iRecordNumber;i+) /对比终点站记录,找到并输出 if(strcmp(Address,cari.TerminalPoint)=0) printf(%dt%d:%dtt,cari.SerialNumber,cari.Se
16、tOut.hour,cari.SetOut.minutes); printf(%st%stt%.1ft %dtt%dn,cari.DeparturePoint,cari.TerminalPoint,cari.LastTime,cari.FixNumber,cari.FixedNumber); void TicketManagement(void)char functionNumber;system(color 1f);system(mode con: cols=140 lines=130);printf( 订票与退票菜单n);printf(=n);printf( 1.订票tn);printf(
17、 2.退票tn);printf( 3.返回主菜单.n);printf(=n);printf(选择你需要的功能:);scanf(%*c%c,&functionNumber);switch(functionNumber) case 1: TicketOrder(); /getchar(); /getchar(); break; case 2:TicketDelete();break; case 3: getchar(); mainmenu(); break; default: printf(输入错误,请确保你的输入为1-3.n); printf(按任意键回主菜单.n); getchar(); ge
18、tchar(); mainmenu(); void TicketOrder(void)int i;printf(请输入要订购的车票的班次:);scanf(%d,&i);if(iRecordNumber) printf(对不起,今天没有这趟车,请明天再来,谢谢使用!n); printf(按任意键回主菜单.n); getchar();/getchar(); TicketManagement();time_t tval; struct tm *now; tval = time(NULL); now = localtime(&tval); if(now-tm_hour=cari.SetOut.hour
19、&now-tm_mintm_hourcari.SetOut.hour) if(cari.FixedNumbercari.FixNumber) (cari.FixedNumber)+; printf(你的订票成功,请按时上车,谢谢使用!n); else printf(对不起,今天的这趟车的票已卖完,请明天再来,谢谢合作!n); else printf(对不起,今天的这趟车已发出,请明天再来,谢谢合作!n);printf(班次t发车时间t起点t终点t行车时间(小时)t额定载量t已定票人数n);printf(%dt%d:%dtt,cari-1.SerialNumber,cari-1.SetOut.h
20、our,cari-1.SetOut.minutes);printf(%st%stt%.1ft %dtt%dn,cari-1.DeparturePoint,cari-1.TerminalPoint,cari-1.LastTime,cari-1.FixNumber,cari-1.FixedNumber);/printf(按任意键回主菜单.n);/getchar();getchar();void TicketDelete(void)int i;printf(请输入要退购的车票的班次:);scanf(%d,&i);if(iRecordNumber) printf(对不起,今天没有这趟车,无法完成退票.
21、谢谢使用!n); getchar(); /getchar(); TicketManagement(); getchar();time_t tval; struct tm *now; tval = time(NULL); now = localtime(&tval); if(now-tm_hour=cari.SetOut.hour&now-tm_mintm_hour=1) cari.FixedNumber-=1; printf(退订车票成功,谢谢使用!n); else printf(对不起,今天的这趟车的票尚未卖出,无法完成退票!n); else printf(对不起,今天的这趟车已发出,无法完成退票!n); printf(班次t发车时间t起点t终点t行车时间(小时)t额定载量t已定票人数n);printf(%dt%d:%dtt,cari-1.SerialNumber,cari-1.SetOut.hour,cari-1.SetOut.minutes);printf(%st%stt%.1ft %dtt%dn,cari-1.DeparturePoint,cari-1.TerminalPoint,cari-1.LastTime,cari-1.FixNumber,cari-1.FixedNumber);getchar();void exit(void)p
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1