版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、车票管理系统(C语言实现)/*车票管理系统一车站每天有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 #include #include #include const int MA
3、X=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;/*/int ShowMessage(void; /载入原
4、始数据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; /退出该系统/*/int main(voidRecordNumber=Show
5、Message(;if(1domainmenu(;while(FLAG=FALSE;return 0;void mainmenu(voidsystem("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
6、.录入班次信息tn"printf(" 2.浏览班次信息tn"printf(" 3.查询行车路线tn"printf(" 4.售票与退票系统tn"printf(" 5.退出该系统tn"printf("=n"printf("请选择你所需要的功能:"scanf("%c",&functionNumber;switch(functionNumbercase '1':InsertMessage(;printf("n按任意键回主
7、菜单.n"getchar(;getchar(;break;case '2':ShowMessage(;printf("n按任意键回主菜单.n"getchar(;getchar(;break;case '3':SearchMenu(;printf("n按任意键回主菜单.n"getchar(;getchar(;break;case '4':TicketManagement(;getchar(;getchar(;break;case '5':FLAG=TRUE;exit(;break;d
8、efault: printf("输入错误,请确保你的输入为1-5.n"printf("按任意键回主菜单.n"getchar(;getchar(;/switch endsFLAG=FALSE;void InsertMessage(voidFILE *fp;char filenameMAXFILENAME;int i;printf("请输入文件名或者文件路径名:"scanf("%s",filename;if(fp=fopen(filename,"r"=NULLprintf("文件%s不可读
9、,请确认文件%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.TerminalPoint,&cari.Las
10、tTime,&cari.FixNumber,&cari.FixedNumber;int count=i;printf("班次t发车时间t起点t终点t行车时间(小时t额定载量t已定票人数n"for(i=0;i printf("%dt%d:%dtt",cari.SerialNumber,cari.SetOut.hour,cari.SetOut.minutes;printf("%st%stt%.1ft %dtt%dn",cari.DeparturePoint,cari.TerminalPoint,cari.LastTime,
11、cari.FixNumber,cari.FixedNumber;fclose(fp;int ShowMessage(voidint i;FILE *fp;if(fp=fopen("add.txt","r"=NULLprintf("读取数据失败,请检查文件add.txt是否存在.n"exit(-1;for(i=0;!feof(fp&&!ferror(fp;i+fscanf(fp,"%d%d%d",&cari.SerialNumber,&cari.SetOut.hour,&car
12、i.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;i printf("%dt%d:%dtt",cari.SerialNumber,cari.SetOut.hour,c
13、ari.SetOut.minutes;printf("%st%stt%.1ft %dtt%dn",cari.DeparturePoint,cari.TerminalPoint,cari.LastTime,cari.FixNumber,cari.FixedNumber;return count;void SearchMenu(voidsystem("color 1f"system("mode con: cols=140 lines=130"char functionNumber;printf(" 查询子菜单n"pri
14、ntf("=n"printf(" 1.按班次号查询tn"printf(" 2.按终点站查询tn"printf(" 3.返回主菜单tn"printf("=n"printf("请选择你所需要的功能:"scanf("%*c%c",&functionNumber;switch(functionNumbercase '1':SearchByNumber(;break;case '2':SearchByAddress(;brea
15、k;case '3':getchar(;mainmenu(;break;default:printf("输入错误,请确保你的输入为1-3.n"printf("按任意键回查询子菜单.n"getchar(;getchar(;SearchMenu(;void SearchByNumber(voidint SearchNumber;printf("请输入要查询的班次号:"scanf("%d",&SearchNumber;printf("班次t发车时间t起点t终点t行车时间(小时t额定载量t
16、已定票人数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,carSearchNumber-1.FixNumber,carS
17、earchNumber-1.FixedNumber;void SearchByAddress(voidint i;char AddressMAX;printf("请输入终点站的名称:"scanf("%s",&Address;printf("班次t发车时间t起点t终点t行车时间(小时t额定载量t已定票人数n"for(i=0;i /对比终点站记录,找到并输出if(strcmp(Address,cari.TerminalPoint=0printf("%dt%d:%dtt",cari.SerialNumber,ca
18、ri.SetOut.hour,cari.SetOut.minutes;printf("%st%stt%.1ft %dtt%dn",cari.DeparturePoint,cari.TerminalPoint,cari.LastTime,cari.FixNumber,cari.FixedNumber;void TicketManagement(voidchar functionNumber;system("color 1f"system("mode con: cols=140 lines=130"printf(" 订票与退票菜
19、单n"printf("=n"printf(" 1.订票tn"printf(" 2.退票tn"printf(" 3.返回主菜单.n"printf("=n"printf("选择你需要的功能:"scanf("%*c%c",&functionNumber;switch(functionNumbercase '1':TicketOrder(;/getchar(;/getchar(;break;case '2':Tic
20、ketDelete(;break;case '3':getchar(;mainmenu(;break;default:printf("输入错误,请确保你的输入为1-3.n"printf("按任意键回主菜单.n"getchar(;getchar(;mainmenu(;void TicketOrder(voidint i;printf("请输入要订购的车票的班次:"scanf("%d",&i;if(i<0|i>RecordNumberprintf("对不起,今天没有这趟车,
21、请明天再来,谢谢使用!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&&now->tm_min tm_hour if(cari.FixedNumber cari.FixedNumber+;printf("你的订票成功,请按时上车,谢谢使用!n"el
22、se 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.DepartureP
23、oint,cari-1.TerminalPoint,cari-1.LastTime,cari-1.FixNumber,cari-1.FixedNumber;/printf("按任意键回主菜单.n"/getchar(;getchar(;void TicketDelete(voidint i;printf("请输入要退购的车票的班次:"scanf("%d",&i;if(i<0|i>RecordNumberprintf("对不起,今天没有这趟车,无法完成退票.谢谢使用!n"getchar(;/getc
24、har(;TicketManagement(;getchar(;time_t tval;struct tm *now;tval = time(NULL;now = localtime(&tval;if(now->tm_hour=cari.SetOut.hour&&now->tm_min tm_hour if(cari.FixedNumber>=1cari.FixedNumber-;printf("退订车票成功,谢谢使用!n"else printf("对不起,今天的这趟车的票尚未卖出,无法完成退票!n"else p
25、rintf("对不起,今天的这趟车已发出,无法完成退票!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,c
26、ari-1.FixedNumber;getchar(;/getchar(;void exit(voidprintf("nn*谢谢使用本系统,欢迎下次继续使用*n"exit(0; #include #include #include typedef struct informationint numb;char starttime10;char begin21;char end21;float lasttime;int canload;int alreadyload;INFORMATION;void AddInformation(voidFILE *fp;INFORMATIO
27、N info;printf("please input the information you want to insert,input 0 to return back:n"scanf("%d", &info.numb;if(info.numb = 0 return;scanf("%s%s%s%f%d%d", info.starttime, info.begin, info.end, &info.lasttime, &info.canload, &info.alreadyload;if(fp = fo
28、pen("c:information.txt", "a+" = 0printf("open file error!"exit(0;fprintf(fp, "%d %s %s %s %f %d %dn", info.numb, info.starttime, info.begin, info.end, info.lasttime, info.canload, info.alreadyload;fclose(fp;int GetHour(char *schar *p, *q;p = (char *malloc(10;s
29、trcpy(p, s;q = p;while(*q != ':'q+;*q = '0'return atoi(p;int GetMinute(char *schar *p;p = (char *malloc(10;strcpy(p, s;while(*p != ':'p+;p+;return atoi(p;void ShowInformation(voidFILE *fp;INFORMATION info;time_t t;struct tm *timeinfo;if(fp = fopen("c:information.txt"
30、;, "r+" = 0printf("open file error!"exit(0;time(&t;timeinfo = localtime(&t;while(!feof(fpfscanf(fp, "%d%s%s%s%f%d%dn", &info.numb, info.starttime, info.begin, info.end, &info.lasttime, &info.canload, &info.alreadyload;printf("%d %s %s %s %f
31、%d %d ", info.numb, info.starttime, info.begin, info.end, info.lasttime, info.canload, info.alreadyload;if(GetHour(info.starttime < timeinfo->tm_hour printf("此班已发出!n"else if(GetHour(info.starttime = timeinfo->tm_hourif(GetMinute(info.starttime<=timeinfo->tm_min printf(&
32、quot;此班已发出!n"else printf("n"else printf("n"fclose(fp;void SearchbyNum(voidFILE *fp;INFORMATION info;int bc;printf("please input the number,input 0 to return back:n"scanf("%d", &bc;if(0 = bc return;if(fp = fopen("c:information.txt", "r+&
33、quot; = 0printf("open file error!"exit(0;while(!feof(fpfscanf(fp, "%d%s%s%s%f%d%dn", &info.numb, info.starttime, info.begin, info.end, &info.lasttime, &info.canload, &info.alreadyload;if(info.numb = bcprintf("%d %s %s %s %f %d %dn", info.numb, info.start
34、time, info.begin, info.end, info.lasttime, info.canload, info.alreadyload;fclose(fp;void SearchbyEnd(voidFILE *fp;INFORMATION info;char zhongdian100;printf("please input the place,input 0 to return back:n"scanf("%s", zhongdian;if(strcmp(zhongdian, "0" = 0 return;if(fp =
35、 fopen("c:information.txt", "r+" = 0printf("open file error!"exit(0;while(!feof(fpfscanf(fp, "%d%s%s%s%f%d%dn", &info.numb, info.starttime, info.begin, info.end, &info.lasttime, &info.canload, &info.alreadyload;if(strcmp(zhongdian, info.end = 0
36、printf("%d %s %s %s %f %d %dn", info.numb, info.starttime, info.begin, info.end, info.lasttime, info.canload, info.alreadyload;fclose(fp;void SearchWay(voidint i;printf("1. search by numbern"printf("2. search by endn"printf("0. return backn"printf("which
37、way do you want?n"scanf("%d", &i;switch(icase 1: SearchbyNum(; break;case 2: SearchbyEnd(; break;case 0: return;default : break;void Buy(voidFILE *fp;INFORMATION info;time_t t;struct tm *timeinfo;int bc;long pos, pos1;printf("please input the banci you want to buy,input 0 to
38、return back:n"scanf("%d", &bc;if(0 = bc return;if(fp = fopen("c:information.txt", "r+" = 0printf("open file error!"exit(0;time(&t;timeinfo = localtime(&t;while(1pos1 = ftell(fp;fscanf(fp, "%d%s%s%s%f%d%dn", &info.numb, info.start
39、time, info.begin, info.end, &info.lasttime, &info.canload, &info.alreadyload;pos = ftell(fp - pos1;if(info.numb = bcif(info.alreadyload < info.canloadif(GetHour(info.starttime < timeinfo->tm_hourprintf("sorry, the plane has taken off!"else if(GetHour(info.starttime = t
40、imeinfo->tm_hourif(GetMinute(info.starttime <= timeinfo->tm_min printf("sorry, the plane has taken off!"elseprintf("take your ticket, bye!"info.alreadyload +;fseek(fp, -pos, SEEK_CUR;fprintf(fp, "%d %s %s %s %f %d %dn", info.numb, info.starttime, info.begin, in
41、fo.end, info.lasttime, info.canload, info.alreadyload;elseprintf("take your ticket, bye!"info.alreadyload +;fseek(fp, -pos, SEEK_CUR;fprintf(fp, "%d %s %s %s %f %d %dn", info.numb, info.starttime, info.begin, info.end, info.lasttime, info.canload, info.alreadyload;else printf(&qu
42、ot;sorry, the tickets are all sold out!"break;fclose(fp;void Cancel(voidFILE *fp;INFORMATION info;time_t t;struct tm *timeinfo;int bc;long pos, pos1;printf("please input the banci you want to cancel,input 0 to return back:n"scanf("%d", &bc;if(0 = bc return;if(fp = fopen(
43、"c:information.txt", "r+" = 0printf("open file error!"exit(0;time(&t;timeinfo = localtime(&t;while(1pos1 = ftell(fp;fscanf(fp, "%d%s%s%s%f%d%dn", &info.numb, info.starttime, info.begin, info.end, &info.lasttime, &info.canload, &info.alr
44、eadyload;pos = ftell(fp - pos1;if(info.numb = bcif(GetHour(info.starttime < timeinfo->tm_hourprintf("sorry, the plane has taken off!"else if(GetHour(info.starttime = timeinfo->tm_hourif(GetMinute(info.starttime <= timeinfo->tm_min printf("sorry, the plane has taken off!
45、"elseprintf("your ticket is canceled, bye!"info.alreadyload -;fseek(fp, -pos, SEEK_CUR;fprintf(fp, "%d %s %s %s %f %d %dn", info.numb, info.starttime, info.begin, info.end, info.lasttime, info.canload, info.alreadyload;elseprintf("your ticket is canceled, bye!"info
46、.alreadyload -;fseek(fp, -pos, SEEK_CUR;fprintf(fp, "%d %s %s %s %f %d %dn", info.numb, info.starttime, info.begin, info.end, info.lasttime, info.canload, info.alreadyload;break;fclose(fp;void ForTicket(voidint i;printf("1. I want to buy a ticketn"printf("2. I want to return
47、 a ticketn"printf("0. return backn"printf("which do you want?"scanf("%d", &i;switch(icase 1: Buy(; break;case 2: Cancel(; break;case 0: return;default : break;int main(int i;while(1printf("n1. 录入班次信息n"printf("2. 浏览班次信息n"printf("3. 查询路线n
48、"printf("4. 售票退票n"printf("nPlease input a number from 1 to 4 like above ,use 0 to exit!n"scanf("%d",&i;switch(icase 0: return 0;case 1: AddInformation(; break;case 2: ShowInformation(; break;case 3: SearchWay(; break;case 4: ForTicket(; break;default :printf(&q
49、uot;Wrong number!n" break; 工资管理系统#include #include #include #include #define FILENAME "staff.txt" /数据文件 / struct Staff /职工机构体 char CarNumber10; /卡号 char Name10; /姓名 int Month; /月份 float SPWages; /应发工资 float APWages; /实发工资 float Water; /水费 float Electrical; /电费 float Tax; /税金 ; / 文件操作模
50、块 FILE *FP; /全局文件指针 FILE * FileOpen(char FileName /文件打开函数 FILE *fp; if(fp=fopen(FileName,"r"=NULL fp=fopen(FileName,"w" cout<<"文件打开失败重新创建记录文件" return fp; fp=fopen(FileName,"r+" return fp; void FileClose(FILE *fp if(fclose(fp=0 cout<<"安全关闭"
51、;< else cout<<"文件关闭失败"< / void Increase( /添加职工信息 FP=FileOpen(FILENAME; Staff temp; cout< cout<<"请输入姓名:" cin>>temp.Name; cout<<"请输入卡号:" cin>>temp.CarNumber; cout<<"请输入月份:" cin>>temp.Month; cout<<"请输入
52、应发工资:" cin>>temp.SPWages; cout<<"请输入水费:" cin>>temp.Water; cout<<"请输入电费:" cin>>temp.Electrical; if(temp.SPWages<=800 temp.Tax=0; if(temp.SPWages>800.0&&(temp.SPWages<1400.0 temp.Tax=(temp.SPWages-800*0.05; if(temp.SPWages>1400
53、temp.Tax=(temp.SPWages-1400*0.1; temp.APWages=temp.SPWages-temp.Water-temp.Electrical-temp.Tax; fwrite(&temp,sizeof(temp,1,FP; cout<<"信息添加成功,请选择浏览工资信息选项进行查看"< FileClose(FP; / void PrintInformation( /浏览工资信息 FP=FileOpen(FILENAME; rewind(FP; Staff temp; while(fread(&temp,size
54、of(Staff,1,FP=1 cout<<"姓名:"< cout<<"卡号:"< cout<<"月份:"< cout<<"应发工资:"< cout<<"水费:"< cout<<"电费:"< cout<<"税金:"< cout<<"实发工资:"< cout< FileClose(FP; /
55、 void Statistics( /统计工资信息 Staff temp; char nametemp10; float sum=0; int monthstart=0,monthover=0; cout<<"请输入统计的人员姓名:"< cin>>nametemp; cout<<"请输入统计时间段的起始月份(如:3)" cin>>monthstart; cout<<"请输入统计时间段的终止月份(如:3)" cin>>monthover; FP=FileOpe
56、n(FILENAME; while(fread(&temp,sizeof(Staff,1,FP=1 if(strcmp(temp.Name,nametemp=0 if(temp.Month>=monthstart&&temp.Month<=monthover sum=sum+temp.APWages; cout<<"职工"< 从 "< 月至 "< 月合计 "< 元。 "< / void NameSearch( /按姓名查询 char tempname10;
57、Staff temp; cout< cout<<"请输入要查询的职工的名称:" cin>>tempname; FP=FileOpen(FILENAME; while(fread(&temp,sizeof(Staff,1,FP=1 if(strcmp(temp.Name,tempname=0 cout<<"姓名:"< cout<<"卡号:"< cout<<"月份:"< cout<<"应发工资:"
58、< cout<<"水费:"< cout<<"电费:"< cout<<"税金:"< cout<<"实发工资:"< cout< FileClose(FP; void CardSearch( / 按卡号进行查询 char tempcard10; Staff temp; cout< cout<<"请输入要查询的工资卡号:" cin>>tempcard; FP=FileOpen(FILENAME; while(fread(&temp,sizeof(Staff,1,FP=1 if(str
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《GBT 2492-2017 固结磨具 交付砂轮允许的不平衡量 测量》专题研究报告
- 《GBT 21792-2008闪燃和非闪燃测定 闭杯平衡法》专题研究报告
- 《GBT 15940-2008 同步数字体系信号的基本复用结构》专题研究报告
- 《GBT 2423.1-2008电工电子产品环境试验 第2部分:试验方法 试验A:低温》专题研究报告
- 道路安全员培训总结课件
- 2026年鲁教版八年级语文上册期末考试题库附参考答案
- 道路交通安全宣传课件
- 重阳节活动总结15篇
- 道岔钳工测量知识课件
- 道口员培训课件
- JB∕T 13026-2017 热处理用油基淬火介质
- 人教版高一化学方程式大全
- DB64 1996-2024 燃煤电厂大气污染物排放标准
- 邻近铁路营业线施工安全监测技术规程 (TB 10314-2021)
- 样板加油站打造方案
- 浙江省杭州市西湖区2023-2024学年六年级上学期期末科学试卷
- 生物化学第30章蛋白质降解和氨基酸的分解代谢
- YY/T 1269-2015血液透析和相关治疗用水处理设备常规控制要求
- 保密资格标准认定办法试题2017-含答案
- “双减”背景下小学数学减负提质的策略优秀获奖科研论文
- 国家开放大学电大《外国文学专题(本)》期末题库及答案
评论
0/150
提交评论