//#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 關注
- 1298 瀏覽
添加回答
舉報
0/150
提交
取消