C語言旅館管理系統(tǒng)1.doc_第1頁
C語言旅館管理系統(tǒng)1.doc_第2頁
C語言旅館管理系統(tǒng)1.doc_第3頁
C語言旅館管理系統(tǒng)1.doc_第4頁
C語言旅館管理系統(tǒng)1.doc_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

目錄一、題目要求(3)二、需求分析(3)三、 總體設(shè)計(4)四、 詳細(xì)設(shè)計(5)1、 主函數(shù)main(5)2、 主菜單函數(shù) menu(6)3、 登錄模板enter(8)4、 統(tǒng)計模板count(10)5、 查詢模板search(12)6、 修改模板modify(14)7、 離開模板leave(16)五、運(yùn)行結(jié)果(19)六、總程序七、總結(jié)(30)一、 題目要求要求編寫一個旅館客房管理系統(tǒng),系統(tǒng)包括新用戶登錄功能、統(tǒng)計功能、查詢功能、修改功能。建立如下結(jié)構(gòu)體:struct Clientchar name20; int sex; int age; char ID_card20;/身份證號碼; int year; int month; int date;/居住時間; ;struct Hotel int room_ID;/房間號; int tel; int price; int sign;/標(biāo)記房間是否為空; struct Client Client_list;/實(shí)現(xiàn)結(jié)構(gòu)體的嵌套; sumN;二、需求分析根據(jù)題目要求,房間信息數(shù)據(jù)存放在一個文本文件中;通過文件的輸入和輸出來實(shí)現(xiàn)新用戶登錄、統(tǒng)計、查詢、修改等各項(xiàng)功能;且各項(xiàng)功能能獨(dú)立完成,不受其它工程是否完成的影響;程序中應(yīng)設(shè)有主菜單函數(shù),通過主菜單函數(shù)可以調(diào)用各個功能函數(shù),各個功能函數(shù)操作完成后可以回到主菜單,等待下一個操作;還應(yīng)設(shè)有菜單選項(xiàng),能通過鍵盤操作實(shí)現(xiàn)選擇;同時,應(yīng)有通道退出程序;三、總體設(shè)計通過分析,整個系統(tǒng)應(yīng)包括以幾個模板:登錄模板enter、統(tǒng)計模板count、查詢模板search、修改模板modify、離開模板leave、退出。系統(tǒng)功能模塊圖客房管理系統(tǒng)統(tǒng)計模板count查詢模板search修改模板modify離開模板leave退出登錄模板enter主菜單函數(shù)menu四、詳細(xì)設(shè)計1、 主函數(shù)main通過主函數(shù),可以實(shí)現(xiàn)數(shù)據(jù)賦初值,函數(shù)的原形聲明,為以后的操作做準(zhǔn)備。流程圖N變量i加1YNY變量i加1YNYNY是否新建數(shù)據(jù)庫數(shù)據(jù)賦初值用fwrite向文件寫入數(shù)據(jù)新建file.txt是否成功讀取file.txt是否成功輸出錯誤信息輸出錯誤信息NNY用fread從文件讀入數(shù)據(jù)判斷是否讀完判斷是否寫完變量i加1判斷i是否小于房間數(shù)NY判斷房間是否有人Left-調(diào)用住菜單函數(shù)menu關(guān)閉文件進(jìn)入系統(tǒng)程序main()int i;char c;FILE *fp;void menu();void enter();void count();void search();void modify();void leave();printf(nnnnt-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-);printf(nnnttWelcome to the systerm of hotel management!nnn);printf(t-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-nnn);printf(ttAre you going to new the file:(y/n)tI choose bb); scanf(%c,&c);if(c=y) for(i=0;iN;i+) sumi.room_ID=i+1; sumi.tel=800+i; sumi.price=100; sumi.sign=0; if(fp=fopen(file.txt,w)=NULL) printf(nCan not open the file!n);exit(0); for(i=0;iN;i+) fwrite(&sumi,sizeof(struct Hotel),1,fp); else if(fp=fopen(file.txt,r)=NULL) printf(nCan not open the file!n);exit(0); for(i=0;iN;i+) fread(&sumi,sizeof(struct Hotel),1,fp); for(i=0;iN;i+) if(sumi.sign) left-; fclose(fp);menu();2、 主菜單函數(shù)menu為了使系統(tǒng)執(zhí)行完沒部分功能??旌竽芡ㄟ^調(diào)用函數(shù)方便的返回到系統(tǒng)界面,設(shè)次函數(shù)。同只這個函數(shù)中能設(shè)置了各個功能的入口。流程圖YN顯示一系列的功能選項(xiàng)輸入n,判斷n是否1-6之內(nèi)調(diào)用enter函數(shù)調(diào)用count函數(shù)調(diào)用search函數(shù)調(diào)用modify函數(shù)調(diào)用leave函數(shù)退出程序void menu()int n,a;do printf(nnnnt*MENU*nn); printf(tttt1.New customern); printf(tttt2.Count roomsn); printf(tttt3.Search roomn); printf(tttt4.Modify customern); printf(tttt5.Leaven); printf(tttt6.Exitnn);printf(t*nn); printf(You choose number(1-6) bb); scanf(%d,&n); if(n6)a=1; printf(nWrong number!nnPrint any key to continue .n); getch(); else a=0; while(a=1); switch(n)case 1:enter();break; case 2:count();break; case 3:search();break; case 4:modify();break; case 5:leave();break; case 6:exit(0);break; 3、 登錄模板enter此模塊用于新用戶的登錄,在此模塊中要求輸入新用戶的姓名、性別,年齡,身份證號,入住時間。并將數(shù)據(jù)存入名為file.txt的文件中。流程圖NYNYYNNNY打開file.txt文件是否成功開始輸出錯誤信息從文件中讀如數(shù)據(jù)輸入想租用的房間號e判斷e是否在1-N之內(nèi)判斷n房間是否被占用Y輸入新用戶信息是否保存輸出錯誤房間號輸出該房間以被占用向文件輸出數(shù)據(jù)輸出保存成功,并輸出結(jié)果,left-是否還需要房間調(diào)用主菜單函數(shù)程序void enter() FILE *fp; char c; int i,t=0; int e; clrscr(); do if(fp=fopen(file.txt,r)=NULL) printf(nCan not open the file!n);exit(0); for(i=0;i=1&e=N) e-; if(sume.sign=0) printf(nPlease input your name:); scanf(%s,sume.Client_); printf(ntsex:(1 stands for F,2stands for M); scanf(nt%d,&sume.Client_list.sex); printf(ntage:); scanf(%d,&sume.Client_list.age); printf(ntID_card:); scanf(%s,sume.Client_list.ID_card); printf(ntdate(year month date):); scanf(%d%d%d,&sume.Client_list.year,&sume.Client_list.month,&sume.Client_list.date); printf(nThis is the data you just input:n);printf(%st%dt%dt%s,sume.Client_,sume.Client_list.sex,sume.Client_list.age,sume.Client_list.ID_card);printf(t%d.%d.%d,sume.Client_list.year,sume.Client_list.month,sume.Client_list.date); printf(ntSave?(y/n):); c=getchar();c=getchar(); if(c=y) sume.sign=1; left-; if(fp=fopen(file.txt,w)=NULL) printf(nCan not open the file!n);exit(0); for(i=0;iN;i+) fwrite(&sumi,sizeof(struct Hotel),1,fp); printf(nSuccessful!n);printf(Your room number: %dnttel: %dntprice: %d ,sume.room_ID,sume.tel,sume.price); fclose(fp); else printf(nSorry!This room has been taken!nn); else printf(nWrong number!n);printf(nnttttAgain?(y/n):);getchar();c=getchar();if(c=y) t=1;else t=0; while(t=1); printf(Print any key to continue .n); getch();menu();4、 統(tǒng)計模板count此部分用于對客房數(shù)據(jù)進(jìn)行統(tǒng)計管理。包括客房占用情況,占用人的各項(xiàng)數(shù)據(jù),總房間數(shù),客房剩余數(shù)。應(yīng)輸出所有房間的情況,以便進(jìn)行統(tǒng)計。流程圖NNYYNY開始打開file.txt文件是否成功輸出錯誤信息從文件中讀如數(shù)據(jù)輸出房間數(shù)及剩余房間數(shù)i是否小于N輸出用戶及房間信息輸出數(shù)據(jù)組數(shù)是否為5的倍數(shù)從外界得到任意一個字符關(guān)閉文件調(diào)用主菜單函數(shù)程序void count()FILE *fp;int i,j;if(fp=fopen(file.txt,r)=NULL)printf(nCan not open the file!n);exit(0);for(i=0;iN;i+)fread(&sumi,sizeof(struct Hotel),1,fp);printf(Room %dntname:%sntsex:%d (1 stand for female,2 stand for male)ntage:%dntID_card:%s,i+1,sumi.Client_,sumi.Client_list.sex,sumi.Client_list.age,sumi.Client_list.ID_card);printf(nttime:%d.%d.%dn,sumi.Client_list.year,sumi.Client_list.month,sumi.Client_list.date);if(sumi.sign)printf(tttTaken!n);else printf(tttUntaken!n);if(i%3=2) printf(nnPrint any key to next page!n); getch(); printf(nEnd!nn); printf(There are %d rooms with %d empty.n,N,left);fclose(fp);printf(Print any key to continue .n);getch();menu();5、 查詢模板search此部分用于客戶對某一客房進(jìn)行查詢,包括房間占用情況,客戶信息,房間的各種數(shù)據(jù)。流程圖YNYYNNYN開始輸入房間號nn是否大于0小于N打開file.txt文件是否成功輸出錯誤信息從文件中讀入數(shù)據(jù)輸出指定客房的信息判斷是否被占用輸出已經(jīng)被占用判斷是否想租用調(diào)用enter函數(shù)調(diào)用主菜單函數(shù)程序void search()int n,i,a;FILE *fp;char c;printf(Which room are you going to search?(1-%d):Room bb,N);do scanf(%d,&n); if(nN) a=1; printf(nWrong number!ntPlease input again:(1-%d),Room bb,N); else a=0; while(a=1); if(fp=fopen(file.txt,r)=NULL) printf(nCan not open the file!n); exit(0); for(i=0;iN;i+) fread(&sumi,sizeof(struct Hotel),1,fp); printf(Room %dntname:%sntsex:%d (1 stand for female,2 stand for male)ntage:%dntID_card:%snttime:%d.%d.%dn,n,sumn-1.Client_,sumn-1.Client_list.sex,sumn-1.Client_list.age,sumn-1.Client_list.ID_card,sumn-1.Client_list.year,sumn-1.Client_list.month,sumn-1.Client_list.date); printf(This rooms telephone number:%dntttprice:%dnt,sumn-1.tel,sumn-1.price); if(sumn-1.sign) printf(nHas been taken!nn); else printf(ntEmpty!tAre you going to rent it?(y/n) bb); c=getchar(); c=getchar(); printf(n); if(c=y) enter(); fclose(fp);printf(Print any key to continue .n);getch();menu();6、 修改模板modify此部分用于修改客戶及客房各項(xiàng)信息,包括客戶的姓名、年齡、性別、身份證號碼、入住時間,客房的電話號碼,價格等。流程圖NYNYYNYN輸入房間號nn是否大于0小于N打開file.txt文件是否成功輸出錯誤信息從文件中讀入數(shù)據(jù)開始輸入擬修改選項(xiàng)t輸入新姓名輸入新性別輸入新年齡輸入新身份證號輸入新日期輸入新電話號碼輸入新價格放棄保存數(shù)據(jù)是否繼續(xù)判斷t是否大于0小于N134567182調(diào)用主菜單函數(shù)程序void modify()int i,n,t,a;char c;FILE *fp;struct Hotel sumN;printf(Which room are you going to modify:(1-%d)Room bb,N);scanf(%d,&n);n-;if(fp=fopen(file.txt,r)=NULL)printf(nCan not open the file!n);exit(0);for(i=0;iN;i+) fread(&sumi,sizeof(struct Hotel),1,fp); do printf(Which part are you going to modify:nn);printf(nttt2.sexnttt3.agenttt4.ID_cardnttt5.datenttt6.telnttt7.pricenttt8.give upnnn); do printf(nI choose bb); scanf(%d,&t); if(t8) a=1; printf(nWrong number!ntPlease input again:(1-%d),Room bb,N); else a=0; while(a=1); switch(t) case 1:printf(nThe former name is %s.Please input new name:,sumn.Client_); scanf(%s,sumn.Client_);break; case 2:printf(nThe former sex is %d.Please input new sex:,sumn.Client_list.sex); scanf(%s,&sumn.Client_list.sex);break; case 3:printf(nThe former age is %d.Please input new age:,sumn.Client_list.age); scanf(%s,&sumn.Client_list.age);break; case 4:printf(nThe former ID_card is %s.Please input new ID_card:,sumn.Client_list.ID_card); scanf(%s,sumn.Client_list.ID_card);break; case 5:printf(nThe former time is %d.%d.%d.Please input new date:(year month date),sumn.Client_list.year,sumn.Client_list.month,sumn.Client_list.date);scanf(%s,&sumn.Client_list.year,&sumn.Client_list.month,&sumn.Client_list.date);break; case 6:printf(nThe former tel is %d .Please input new tel:,sumi.tel); scanf(%d,&sumn.tel); case 7:printf(nThe former price is %d.Please input new price:,sumi.price); scanf(%d,&sumi.price); case 8:menu(); fclose(fp); if(fp=fopen(file.txt,w)=NULL)printf(nCan not open the file!n);exit(0); for(i=0;iN;i+) fwrite(&sumi,sizeof(struct Hotel),1,fp); printf(ntSuccessfull!n); printf(nModify other?(y/n) bb); getchar(); c=getchar(); while(c=y); fclose(fp); printf(nPrint any key to continue .n); getch(); menu();7、 離開模板leave此部分用于客戶離開時刪除其數(shù)據(jù)。在次部分程序中需要房間數(shù)據(jù)恢復(fù)到初始狀態(tài)。流程圖NYNYYYNYNYN輸入房間號nn是否大于0小于N打開file.txt文件是否成功輸出錯誤信息從文件中讀入數(shù)據(jù)開始該房間是否被占用客房是否都為空輸出房間信息確定離開輸入當(dāng)前日期輸出所需付租金將數(shù)據(jù)置為原始值,left+保存數(shù)據(jù),關(guān)閉文件輸出所有房間都為空調(diào)用主菜單函數(shù)程序void leave()FILE *fp;char c;int t=0,p,i,n,year,month,date;if(fp=fopen(file.txt,r)=NULL)printf(nCan not open the file!n);exit(0);for(i=0;iN;i+)fread(&sumi,sizeof(struct Hotel),1,fp); if(sumi.sign) t=1;if(t=1) dop=0; printf(Please input your room number:(1-%d)Room bb,N); scanf(%d,&n); if(nN) p=1,printf(nWrong number!n); else if(sumn-1.sign=0) printf(nnThis room has not been taken!nnPlease input again!n);while(p=1|sumn-1.sign=0); printf(This is your information:n);printf(name:%snsex:%dnage:%dnID_card%sn,sumn-1.Client_,sumn-1.Client_list.sex,sumn-1.Client_list.age,sumn-1.Client_list.ID_card);printf(entertime:%d.%d.%dn,sumn-1.Client_list.year,sumn-1.Client_list.month,sumn-1.Client_list.date);printf(nnAre you sure to leave?(y/n):); getchar(); c=getchar(); if(c=y) printf(nInput the time now:); scanf(%d%d%d,&year,&month,&date); printf(You shoud pay:%d,sumn-1.price*(year-sumn-1.Client_list.year)*365+(month-sumn-1.Client_list.month)*30+date-sumn-1.Client_list.date); left+; sumn-1.sign=0; strcpy(sumn-1.Client_,); sumn-1.Client_list.age=0; sumn-1.Client_list.sex=0; strcpy(sumn-1.Client_list.ID_card, ); sumn-1.Client_list.year=0; sumn-1.Client_list.month=0; sumn-1.Client_list.date=0; fclose(fp); if(fp=fopen(file.txt,w)=NULL) printf(nCan not open the file!n);exit(0); for(i=0;iN;i+) fwrite(&sumi,sizeof(struct Hotel),1,fp); fclose(fp); printf(nntSuccessfull!n); else printf(nSorry!All the room is empty.n);printf(nnPrint any key to contimue .n);getch();menu();五、 運(yùn)行結(jié)果程序啟動界面說明:當(dāng)初次新建數(shù)據(jù)時選擇“y”,再次進(jìn)入時選擇“n”。新用戶登錄界面統(tǒng)計模塊(說明:每次顯示三個用戶)統(tǒng)計結(jié)果(說明:最后顯示統(tǒng)計結(jié)果)查詢模板查詢模板(說明:可以通過查詢租用房間)修改模板離開模板六、 總程序#include#include#define N 10int left=N;struct Client char name20; int sex; int age; char ID_card20; int year; int month; int date; ;struct Hotel int room_ID; int tel; int price; int sign; struct Client Client_list; sumN;main()int i;char c;FILE *fp;void menu();void enter();void count();void search();void modify();void leave();printf(nnnnt-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-);printf(nnnttWelcome to the systerm of hotel management!nnn);printf(t-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-nnn);printf(ttAre you going to new the file:(y/n)tI choose bb); scanf(%c,&c); if(c=y) for(i=0;iN;i+) sumi.room_ID=i+1; sumi.tel=800+i; sumi.price=80; sumi.sign=0; if(fp=fopen(file.txt,w)=NULL) printf(nCan not open the file!n); exit(0); for(i=0;iN;i+) fwrite(&sumi,sizeof(struct Hotel),1,fp); fclose(fp); else if(fp=fopen(file.txt,r)=NULL) printf(nCan not open the file!n);exit(0); for(i=0;iN;i+) fread(&sumi,sizeof(struct Hotel),1,fp); for(i=0;iN;i+) if(sumi.sign) left-; fclose(fp); menu();void menu()int n,a;doprintf(nnnnt*MENU*nn); printf(tttt1.New customern); printf(tttt2.Count roomsn); printf(tttt3.Search roomn); printf(tttt4.Modify customern); printf(tttt5.Leaven); printf(tttt6.Exitnn); printf(t*nn); printf(You choose number(1-6) bb); scanf(%d,&n); if(n6)a=1;printf(nWrong number!nnPrint any key to continue .n);getch(); else a=0; while(a=1); switch(n) case 1:enter();break; case 2:count();break; case 3:search();break; case 4:modify();break; case 5:leave();break; case 6:exit(0);break; void enter() FILE *fp; char c; int i,t=0; int e; clrscr(); doif(fp=fopen(file.txt,r)=NULL) printf(nCan not open the file!n);exit(0); for(i=0;i=1&e=N) e-; if(sume.sign=0) printf(nPlease input your name:); scanf(%s,sume.Client_); printf(ntsex:(1 stands for F,2stands for M); scanf(nt%d,&sume.Client_list.sex); printf(ntage:); scanf(%d,&sume.Client_list.age); printf(ntID_card:); scanf(%s,sume.Client_list.ID_card); printf(ntdate(year month date):);scanf(%d%d%d,&sume.Client_list.year,&sume.Client_list.month,&sume.Client_list.date); printf(nThis is the data you just input:n);printf(%st%dt%dt%s,sume.Client_,sume.Client_list.sex,sume.Client_list.age,sume.Client_list.ID_card); printf(t%d.%d.%d,sume.Client_list.year,sume.Client_list.month,sume.Client_list.date); printf(ntSave?(y/n):); c=getchar();c=getchar(); if(c=y) sume.sign=1; left-; if(fp=fopen(file.txt,w)=NULL) printf(nCan not open the file!n);exit(0); for(i=0;iN;i+) fwrite(&sumi,sizeof(struct Hotel),1,fp); printf(nSuccessful!n); printf(Your room number:%dnttel:%dntprice:%d,sume.room_ID,sume.tel,sume.price); fclose(fp); else printf(nSorry!This room has been taken!nn); else printf(nWrong number!n);printf(nnttttAgain?(y/n):);getchar();c=getchar();if(c=y) t=1;else t=0; while(t=1); printf(Print any key to continue .n); getch(); menu(); void count() FILE *fp;int i,j;if(fp=fopen(file.txt,r)=NULL)printf(nCan not open the file!n);exit(0);for(i=0;iN;i+)fread(&sumi,sizeof(struct Hotel),1,fp);printf(Room %d:ntname:%s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論