①使用結構體數組輸入至少5輛汽車資訊
(注意車輛狀態最終存放到檔案中,下次開啟直接讀取)
②車輛租借介面
根據車輛的狀態顯示不同的提示給使用者
#include <stdio.h>void menu() //建立系統功能表{ printf("\n\t\t\t歡迎租賃本公司的車輛\n\n"); printf("\t\t\t1.查詢所有車輛\n\n"); printf("\t\t\t2.歸還以租賃車輛\n\n"); printf("\t\t\t3.租借現有車輛\n\n"); printf("\t\t\t0.退出租賃系統\n\n");}//建立存放資訊的結構體struct node{ int num,doing; char carname[10],carnum[10],money[10],day[10],daymoney[10],;}INF[5];//輸入車輛資訊void input(struct node inf[5]){ int i; FILE *fp; //定義檔案指標 printf("\t\t\t租賃汽車公司系統\n\n"); printf("請輸入汽車資訊\n\n"); printf("0:以租出車輛 1:未租出車輛\n\n"); printf("|編號 |車型 |車牌號 |押金 |限制天數 |日租價 |目前狀態\n"); printf("-----------------------------------------------------------\n"); if((fp = fopen("E:\\ABC.txt","wb")) == NULL) { printf("Cannot open file !\n"); return; } for(i = 0;i < 5;i++) { scanf("%d %s %s %s %s %s %d",&inf[i].num,inf[i].carname,inf[i].carnum,inf[i].money,inf[i].day,inf[i].daymoney,&inf[i].doing); } fwrite(inf,sizeof(struct node),5,fp); rewind(fp);}//讀取資訊int Read(){ FILE *fp; if((fp = fopen("E:\\ABC.txt","rb")) == NULL) { return -1; }else { fread(INF,sizeof(struct node),5,fp); return 1; }}//查詢車輛資訊功能void putout(struct node inf[5]){ int i; printf("\n\n 庫存車輛資訊總覽\n\n\n"); printf(" |編號 |車型 |車牌號 |押金 |限制天數 |日租價 |目前狀態\n"); printf(" ----------------------------------------------------------------\n"); for(i = 0;i < 5;i++) { printf(" %d %s %s %s %s %s ",inf[i].num,inf[i].carname,inf[i].carnum,inf[i].money,inf[i].day,inf[i].daymoney); if(INF[i].doing == 1) printf("未租出\n"); else printf("以租出\n"); } printf("\n\n");}//歸還已租車輛函數void Return(int iNum){ if(INF[iNum].doing == 1) { printf("\n該車未出租\n\n"); }else { INF[iNum].doing = 1; printf(" |編號 |車型 |車牌號 |押金 |限制天數 |日租價 |目前狀態\n"); printf(" ----------------------------------------------------------------\n"); printf(" %d %s %s %s %s %s ",INF[iNum].num,INF[iNum].carname,INF[iNum].carnum,INF[iNum].money,INF[iNum].day,INF[iNum].daymoney); printf("未租出\n\n"); printf("操縱成功…………\n"); }}//租借車輛函數void borrow(int iNum){ if(INF[iNum].doing == 0) { printf("\n該車已被租借\n"); }else { INF[iNum].doing = 0; printf(" |編號 |車型 |車牌號 |押金 |限制天數 |日租價 |目前狀態\n"); printf(" ----------------------------------------------------------------\n"); printf(" %d %s %s %s %s %s ",INF[iNum].num,INF[iNum].carname,INF[iNum].carnum,INF[iNum].money,INF[iNum].day,INF[iNum].daymoney); printf("以租出\n\n"); printf("操縱成功…………\n"); }}int main(){ int choose = 0; int fist; fist = Read();
/*此處為本程式中重要的部分,
通過fist來判斷是否是第一次登入,如果是
第一次登入,則調用input函數,建立一個新檔案,
如果是是第>1次登入,則直接讀出檔案內容
*/
if(fist == -1) { printf("這是您第一次登入系統\n"); input(INF); Read(); } while(1) { menu(); int inum; printf("\t\t\t請輸入您所需的服務編號: "); scanf("%d",&choose); if(choose == 1) //查詢所有車輛函數 { putout(INF); }else if(choose == 2) //歸還租賃車輛 { printf("請輸入歸還車輛編號: "); scanf("%d",&inum); Return(inum); }else if(choose == 3) //租借現有車輛 { printf("請輸入租借車輛編號: "); scanf("%d",&inum); borrow(inum); }else if(choose == 0) //退出租賃系統 { printf("\n\n\t\t\t歡迎下次再來\n"); break; } } return 0;}
本程式缺陷:只能輸入五組汽車的資訊,不能輸入>5組的資訊。
用到知識:
1.結構體
2.檔案