//#include"stdafx.h"#include"stdio.h"#include"stdlib.h"#include"string.h"/*定义头文件,处理文件及字符数组时要用到相应功能*/#define N 10void fmenu(){ system("cls"); printf("************************欢迎使用苏州列车时刻表信息管理系统**********************\n"); printf("\t %c1. 查询列车",3); printf("\t %c2. 修改列车",3); printf("\t %c3. 增加列车",3); printf("\n\n"); printf("\t %c4. 取消列车",3); printf("\t %c5. 保存信息",3); printf("\t %c6. 帮助界面\n",3); printf("********************************************************************************\n"); printf("请选择要执行的操作:\n");/*菜单程序,用于各种功能的选择*/}struct train/*定义结构体*/{ char name[8]; char checi[6]; int year; int month; int day; int hour; int minute;}lieche[N];/*定义一个结构体数组*/void chaxun(struct train *p)/*子程序,其功能是查询列车*/{ //sort(lieche);/*先排序一下,方便查看*/ char a[8];/*定义一个字符数组,输入要查询的列车*/ int k=0,i,c; printf("请输入要查询的列车:\n"); scanf("%s",a); for(i=0;i<N;i++) { if(strcmp(p[i].name,a)==0) { printf("苏州-%s\t%s(车次)\t%d年%d月%d日\t%d:%02d\n",p[i].name,p[i].checi,p[i].year,p[i].month,p[i].day,p[i].hour,p[i].minute);/*将所查列车的信息全部打出*/ k++; } } if(k==0) printf("抱歉,没有这趟列车\n");/*没有查到时,打出通知*/ printf("按 1 继续,按 0 退出\n");/*选择继续或者退出*/ scanf("%d",&c); if(c!=0) chaxun(lieche);}void xiugai(struct train *p)/*子程序,用于修改列车时间*/{ char a[8],b[6]; int i,x,c,k=0,h,mi,y,m,d,q; printf("请输入要修改的列车:\n"); scanf("%s",a); for(i=0;i<N;i++) { if(strcmp(p[i].name,a)==0) { printf("苏州-%s\t%s()车次\t%d年%d月%d日\t%d:%02d\n",p[i].name,p[i].checi,p[i].year,p[i].month,p[i].day,p[i].hour,p[i].minute); printf("要修改这趟列车吗?\n1.是 0.否\n"); scanf("%d",&q); if(q==1) { printf("请输入修改后的车次:\n"); scanf("%s",b); printf("请输入修改后的年月日:\n"); scanf("%d%d%d",&y,&m,&d); printf("请输入修改后的小时和分钟:\n"); scanf("%d%d",&h,&mi); printf("确定修改吗?\n1.是 2.否\n");/*选择是否确定修改列车时间,防止错误操作*/ scanf("%d",&x); if(x==1) { strcpy(p[i].checi,b); p[i].year=y; p[i].month=m; p[i].day=d; p[i].hour=h; p[i].minute=mi; printf("已经修改此列车"); } } k++; } } if(k==0) printf("抱歉,没有这趟列车\n");/*没有查到时,打出通知*/ printf("按 1 继续,按 0 退出\n"); scanf("%d",&c); if(c!=0) xiugai(lieche);}void zengjia(struct train *p)/*子程序,用于列车增加*/{ struct train a; char b[]={"0000000"};/*空白位置,在此处插入所填列车*/ int x,c,i; printf("请输入要增加的列车目的地:\n"); scanf("%s",a.name); printf("请输入修改后的车次:\n"); scanf("%s",a.checi); printf("请输入所增加列车的年月日:\n"); scanf("%d%d%d",&a.year,&a.month,&a.day); printf("请输入所增加列车的小时和分钟:\n"); scanf("%d%d",&a.hour,&a.minute); printf("确定要增加这一趟列车吗?\n1.是 0.否\n"); scanf("%d",&x); if(x==1) for(i=0;i<N-1;i++) { if(strcmp(p[i].name,b)==0) { strcpy(p[i].name,a.name); strcpy(p[i].checi,a.checi); p[i].year=a.year; p[i].month=a.month; p[i].day=a.day; p[i].hour=a.hour; p[i].minute=a.minute; strcpy(p[i+1].name,b);/*找到位置,插入列车,并把0000000给后面一个结构体*/ printf("已经增加这趟列车"); break; } } //sort(lieche); printf("按 1 继续,按 0 退出\n"); scanf("%d",&c); if(c!=0) zengjia(lieche);}void quxiao(struct train *p)/*子程序,用于取消列车*/{ char a[8]; char b[]={"0000000"}; int i,x,c,k=0,s; printf("请输入要取消的列车\n"); scanf("%s",a); for(i=0;i<N;i++) { if(strcmp(p[i].name,a)==0) { printf("苏州-%s\t%s(车次)\t%d年%d月%d日\t%d:%02d\n",p[i].name,p[i].checi,p[i].year,p[i].month,p[i].day,p[i].hour,p[i].minute); printf("确定要删除这一次列车吗?\n1.是 0.否\n");/*询问是否取消*/ scanf("%d",&x); if(x==1) { for(s=i;s<N-1;s++) { strcpy(p[s].name,p[s+1].name); strcpy(p[s].checi,p[s+1].checi); p[s].year=p[s+1].year; p[s].month=p[s+1].month; p[s].day=p[s+1].day; p[s].hour=p[s+1].hour; p[s].minute=p[s+1].minute;/*将列车取消,把后一个结构体往前移一位*/ } printf("此列车已取消"); } k++; } } if(k==0) printf("抱歉,没有这趟列车\n");/*先查一下有没有要取消的列车*/ printf("按 1 继续,按 0 退出\n"); scanf("%d",&c); if(c!=0) quxiao(lieche);}void baocun(struct train *p)/*子程序,用于数据保存*/{ int c,i=0,x; char b[]={"0000000"}; printf("确定要保存修改吗?\n1.是 0.否\n"); scanf("%d",&x); if(x==1) { char a[20]; FILE *pps; if((pps=fopen("zuoye.txt","w"))==NULL)/*打开一个新的文本文件*/ { printf("不能打开此文件\n"); exit(0); } //for(i;i<N;i++) while(strcmp(lieche[i].name,b)==0) { fprintf(pps,"%s %s %d %d %d %d:%02d\n",p[i].name,p[i].checi,p[i].year,p[i].month,p[i].day,p[i].hour,p[i].minute);/*将结构体数组的数据写进里面*/ i++; } fprintf(pps,"%s",b); fclose(pps); printf("文件已保存\n"); } printf("按 1 继续,按 0 退出\n"); scanf("%d",&c); if(c!=0) baocun(lieche);}void help(struct train *p)//帮助系统{ printf("\n0.欢迎使用系统帮助!\n"); printf("\n1.进入系统后,先刷新时刻表信息,再查询;\n"); printf("\n2.按照菜单提示键入数字代号;\n"); printf("\n3.增加或修改信息后,切记保存按5;\n"); printf("\n4.谢谢您的使用!\n");}void main()/*主程序,负责整个程序架构及函数调用等*/{ //system("color 3b");/*更改前景和背景颜色*/ char b[]={"0000000"}; FILE *fp;/**/ int x,i; if((fp=fopen("zuoye.txt","w+"))==NULL)/*打开文件,输入数据*/ { printf("不能打开数据库文件\n"); exit(0); } for(i=0;i<N;i++) fscanf(fp,"%s%s%d%d%d%d:%02d",lieche[i].name,lieche[i].checi,&lieche[i].year,&lieche[i].month,&lieche[i].day,&lieche[i].hour,&lieche[i].minute); fmenu(); scanf("%d",&x); while (x!=0)/*选择所要操作的功能*/ { switch(x) { case 1: chaxun(lieche);break;//选择查询功能 case 2: xiugai(lieche);break;//选择修改功能 case 3: zengjia(lieche);break;//选择增加功能 case 4: quxiao(lieche);break;//选择取消功能 case 5: baocun(lieche);break;//选择保存功能 case 6: help(lieche);break;//选择帮助功能 } fmenu();/*循环调用菜单*/ scanf("%d",&x); }}
1 回答
- 1 回答
- 1 关注
- 1261 浏览
添加回答
举报
0/150
提交
取消