C语言火车票管理系统

上传人:good****022 文档编号:116537224 上传时间:2022-07-05 格式:DOC 页数:23 大小:50KB
返回 下载 相关 举报
C语言火车票管理系统_第1页
第1页 / 共23页
C语言火车票管理系统_第2页
第2页 / 共23页
C语言火车票管理系统_第3页
第3页 / 共23页
点击查看更多>>
资源描述
#include #include #include #include #include #define N 1000 typedef struct TICKET /定义新结构体TICKETchar num10; /车次char hour3; char min3; char from10; char to10; float hours; int max; /车载容量 int now; /已售票数 CLASS;int class_num=0; CLASS recordsN; int system_time(); void message(); void ShowTable1(); void ShowTable2(int i); void Display(); void add(); void save(); void load(); / 按班次查询void search(); /查询void change(); /修改void quit(); /退出void buyticket(); /售票void deleteticket(); /取消int menu_select(); /菜单int whether(int); /判断购买时间void find(char s1,char s2); /按起点终点查询void deletemessage(); /删除int findnum(char s1); /班次查询void get(int,int); /修改及增加班次char *menu= 欢迎使用车票查询系统 ,n*菜单*,n 1. 录入班次 ,n 2. 浏览班次信息 ,n 3. 查询路线 ,n 4. 增加班次 ,n 5. 售票 ,n 6. 退票 ,n 7. 修改班次 ,n 8. 删除班次 ,n 9. 退出 ; int main()system(cls); while(1) switch(menu_select() /菜单case 1: message();break; case 2: Display();break; case 3: search();break; case 4: add();break; case 5: buyticket();break; case 6: deleteticket();break; case 7: change();break; case 8: deletemessage();break; case 9: quit();break; int menu_select() /菜单char s5; int c,i; system(cls); for(i=0;i11;i+)printf(%s,menui); /输出菜单 i=0; while(c9) printf(n); printf(n请输入选项(1-9): );scanf(%s,s);c=atoi(s); /输出菜单return c; void message() /录入 int i=0,j=5,h; char s5;FILE *fp; /定义文件型指针变量system(cls); /刷屏if(fp=fopen(d:车票管理系统0.dat,rb)!=NULL) /fopen打开文件 printf(增加信息n);printf(请输入任意键返回n);scanf(%s,s);i=1; if(i=0) system(cls); /刷屏printf(请输入班次总数:n);scanf(%d,&class_num); /指向班次指针system(cls); /刷屏for(i=0;iclass_num;i+) system(cls); /刷屏printf(请输入%d班次信息:n,i+1);h=-1;for(;h!=i;) /循环输出printf(请输入班次:n);scanf(%s,recordsi.num);for(h=0;hi;h+)if(strcmp(recordsh.num,recordsi.num)=0) printf(该班次已存在n);break; get(i,j); /修改及增加班次j=5;save(); /调用保存函数/*显示所有函数*/void Display() /显示所有函数int i,j;system(cls); /刷屏load(); / 按班次查询ShowTable1(); for(i=0,j=0;iclass_num;i+,j+=2) /按班次顺序输出 if(whether(i) /判断时间是否超出printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour,recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);else printf(|%10s| 已发车 |%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);ShowTable2(j); printf(n按任意键继续n);getch(); void ShowTable1() int i=2;system(cls); /刷屏printf( 班次信息 n);printf(n|-|-|-|-|-|-|-|n); printf(n| 班次 | 发车时间 | 起点站 | 终点站 |行车时间|额定载量| 已售票 |n);void ShowTable2(int i) printf(n|-|-|-|-|-|-|-|n);void search() /查询班次int i;char s110=0,s210=0;system(cls); /刷屏printf(1. 按班次查询n);printf(2. 按终点站查询n);printf(3. 退出n);printf(请选择(1-3):n);scanf(%d,&i);load(); /按班次查询switch(i) case 1: printf(请输入要查询的班次:n); scanf(%s,s1);find(s1,s2); break;case 2:printf(请输入要查询终点站:n); scanf(%s,s2);find(s1,s2); break; case 3: break;default : printf(输入错误!n);break;printf(按任意键继续n);getch(); void find(char s1,char s2)int i,h=0,m;ShowTable1(); if(s20=0)m=1; else m=0;for(i=0;iclass_num;i+)if(strcmp(s1,recordsi.num)=0|strcmp(s2,recordsi.to)=0) printf(n);printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour,recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);h+=2;if(m=1)break;ShowTable2(h); if(h=0)printf(查找的班次不存在n);void add() int i,j=5;load(); system(cls); printf(1. 增加班次n);printf(2. 返回n);printf(请选择(1-2)n);scanf(%d,&i);if(i=1)system(cls); printf(1. 输入要增加的班次:n);scanf(%s,recordsclass_num.num);for(i=0;iclass_num;i+)if(strcmp(recordsclass_num.num,recordsi.num)=0) printf(输入错误n);getch(); break;if(i=class_num) get(i,j); class_num+; save(); void buyticket() int i;char num10;system(cls); printf(1. 售票n);printf(2. 返回n);printf(请选择(1-2):n);scanf(%d,&i);if(i=1)load(); / 按班次查询search(); printf(请输入要订票的班次(若无请输入0):n);scanf(%s,num);for(i=0;irecordsi.now&whether(i)=1) recordsi.now+; printf(通向%s班次为%s的票订票成功n,recordsi.to,recordsi.num);save(); getch(); break;elseprintf(该班次已满或已发出!n);getch(); void deleteticket() int i;char num10;system(cls); printf(1. 退票n);printf(2. 返回n);printf(请选择(1-2)n:);scanf(%d,&i);if(i=1)system(cls); load(); printf(请输入要退票的班次:n);scanf(%s,num);i=findnum(num); if(strcmp(num,recordsi.num)=0) if(whether(i) printf(是否确认);scanf(%s,num);if(num0=y|num0=Y) recordsi.now-; printf(退票成功n);save(); getch(); elseprintf(该班车已发出,无法退票n);getch(); if(i=class_num)printf(输入错误n);getch(); void change() char num10,s10;int h=0,j=13,i;load(); system(cls); printf(请输入要修改的班次:n);scanf(%s,num);i=findnum(num); if(i=class_num)printf(输入错误n);getch(); elseprintf(确认修改n);scanf(%s,s);if(s0=y|s0=Y)get(i,j); save(); void deletemessage() int i,h=0;char num10;system(cls); printf(1. 删除班次n);printf(2. 返回n);printf(请选择(1-2):n);scanf(%d,&i);if(i=1)system(cls); printf(请输入要删除的班次:n);scanf(%s,num);i=findnum(num); if(i=class_num)printf(输入错误n);getch(); elseprintf(是否确认n);scanf(%s,num);if(num0=y|num0=Y)for(;iclass_num-1;i+) recordsi=recordsi+1;class_num-; save(); printf(删除成功n);getch();int findnum(char s1) int i,h=0;ShowTable1(); for(i=0;iclass_num;i+)if(strcmp(s1,recordsi.num)=0) printf(|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|,recordsi.num,recordsi.hour,recordsi.min,recordsi.from,recordsi.to,recordsi.hours,recordsi.max,recordsi.now);h+=2; break;ShowTable2(h); return i;void save() FILE *fp1,*fp2; if(fp1=fopen(d:车票管理系统.dat,wb)=NULL) /打开文件printf(文件打开错误!n);exit(0);if(fp2=fopen(d:车票管理系统0.dat,wb)=NULL) printf(文件打开错误!n);exit(0);fwrite(&class_num,sizeof(int),1,fp2); fwrite(records,sizeof(CLASS),class_num,fp1);fclose(fp1);fclose(fp2); void load() FILE *fp1,*fp2;if(fp1=fopen(d:车票管理系统.dat,rb)=NULL)system(cls); printf(文件打开错误n);getch(); exit(0);if(fp2=fopen(d:车票管理系统0.dat,rb)=NULL)system(cls); printf(文件打开错误n);getch(); exit(0); fread(&class_num,sizeof(int),1,fp2); fread(records,sizeof(CLASS),class_num,fp1);fclose(fp1);fclose(fp2); void quit() char s5; printf(确认退出n);scanf(%s,s);if(s0=y|s0=Y)exit(0);void get(int i,int j) for(;)printf(请输入发车时间(xx xx);scanf(%s%s,recordsi.hour,recordsi.min);if(atoi(recordsi.hour)=0)&(atoi(recordsi.min)=0)break;elseprintf(输入错误n);getch(); printf(请输入起点站:n);scanf(%s,recordsi.from);printf(请输入终点站:n);scanf(%s,recordsi.to);printf(请输入行车时间:n);scanf(%f,&recordsi.hours);printf(请输入额定载量:n);scanf(%d,&recordsi.max);for(;)printf(请输入已售票数:n);scanf(%d,&recordsi.now);if(recordsi.nowtm_hourtm_hour=atoi(recordsi.hour)&local-tm_minatoi(recordsi.min) /atoi将字符串转换成一个整数值return 1; else return 0;
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 群众团体


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!