課程設(shè)計(jì)賓館管理系統(tǒng)C語言版_第1頁
課程設(shè)計(jì)賓館管理系統(tǒng)C語言版_第2頁
課程設(shè)計(jì)賓館管理系統(tǒng)C語言版_第3頁
課程設(shè)計(jì)賓館管理系統(tǒng)C語言版_第4頁
課程設(shè)計(jì)賓館管理系統(tǒng)C語言版_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、中 原 工 學(xué) 院軟件職業(yè)技術(shù)學(xué)院一級(jí)實(shí)踐環(huán)節(jié)報(bào)告課題名稱: 賓館客房管理系統(tǒng) 專 業(yè): NET軟件 班 級(jí): NET104 學(xué) 號(hào): 36 學(xué)生姓名: 李新輝 指導(dǎo)教師: 羅菁 年 月 日一、題目賓館客房管理系統(tǒng)二、流程分析賓 館 客 房 管 理 系 統(tǒng)客房登記客戶查詢房間查詢退房結(jié)算房間數(shù)選擇類型訂金客戶基本信息登記客房號(hào)查詢姓名查詢空房間查詢查詢所有客戶查詢所有房間房間號(hào)確定退房日期結(jié)算三、源代碼#include<stdio.h>#include<stdlib.h>#include<string.h>#include<ctype.h>/將字

2、符轉(zhuǎn)化為小寫字母函數(shù)#define Z 50 /賓館的房間數(shù)#define AY 800#define BY 600#define CY 300#define AJ 15#define BJ 20#define CJ (Z-AJ-BJ)struct hotleunsigned int num;char dj; /各種等級(jí)類型unsigned int money;int fk;/判斷房間的空閑狀況0為空,為有人roomZ;struct dateint month;int day; ;struct peoplechar name20;char ID15;unsigned int num0;/房間號(hào)

3、unsigned int money0;/客人交的訂金struct date ru;struct date chu;kehuZ;void saveroom();void loadroom();void printroom();void save(int s);void save1(int s);int loadn();void saven(int n);void savekehu2(int t,int m);/錄入賓館房間信息/void luru()int a0,b0,c0;a0=b0=c0=0;int i;for(i=0;i<AJ;i+)roomi.num=(a0+)+601);roo

4、mi.dj ='A'roomi.money =AY;roomi.fk=0;for(i=AJ;i<(BJ+AJ);i+)roomi.num=(b0+)+501);roomi.dj ='B'roomi.money =BY;roomi.fk=0;for(i=(AJ+BJ);i<Z;i+)roomi.num=(c0+)+401);roomi.dj ='C'roomi.money =CY;roomi.fk=0;saveroom();void saveroom()/儲(chǔ)存房間信息FILE *fp;fp=fopen("my hotle.te

5、xt","wb");for(int i=0;i<Z;i+)/if(fwrite(&roomi,sizeof(struct hotle),1,fp)!=1)printf("文件寫入失敗n");break;fclose(fp);void loadroom()FILE *fp;int i;if(fp=fopen("my hotle.text","rb")=NULL)printf("打開文件失敗n");return;for(i=0;i<Z;i+)if(fread(&

6、roomi,sizeof(struct hotle),1,fp)!=1)printf("讀取文件失敗n");break;printf("讀取成功!n");fclose(fp);void printroom()/輸出各個(gè)房間的信息/loadroom();printf("客房號(hào) 客房等級(jí) 客房?jī)r(jià)格 客房空閑(為空)n");for(int i=0;i<Z;i+)printf("%-18d%-12c%-18d%-15dn",roomi.num,roomi.dj,roomi.money,roomi.fk);/輸出各類型

7、空房間的信息/void printkong(char ch)loadroom();int i;switch(ch)case 'a':printf("A類(豪華套房)空房間信息 客房號(hào) 客房?jī)r(jià)格 n");for(i=0;i<AJ;i+)if(roomi.fk=0)printf("ttt%11d%15dn",roomi.num,roomi.money);break;case 'b':printf("B類(中檔套房)空房間信息 客房號(hào) 客房?jī)r(jià)格 n");for(i=AJ;i<(AJ+BJ);i+)

8、if(roomi.fk=0)printf("ttt%11d%15dn",roomi.num,roomi.money);break;case 'c':printf("C類(單人公寓)空房間信息 客房號(hào) 客房?jī)r(jià)格 n");for(i=(AJ+BJ);i<Z;i+)if(roomi.fk=0)printf("ttt%11d%15dn",roomi.num,roomi.money);break;/選房間號(hào)/unsigned int panduan(unsigned int num1,char ch)int temp;/記

9、錄房間號(hào)int i;loadroom();for(i=0;i<Z;i+)if(roomi.num=num1&&(tolower(roomi.dj)=ch)return temp=i;printf("請(qǐng)檢查您選擇的房間號(hào)是否有誤!n");return (Z+2);/訂房登記/int n;/已訂的房間數(shù)void dengji()int s;/每次所訂的房間數(shù)n=loadn();/讀取每次文件中已訂房間數(shù)的值int flag=0;/真假判斷char ch;/用來選取房間等級(jí)unsigned int money1;/預(yù)付金額FILE *fp;unsigned

10、int t;/printf("請(qǐng)輸入您要訂的房間數(shù)n");scanf("%d",&s);dogetchar();/接收輸入中的回車printf("請(qǐng)選擇您所訂房間的類型 A(豪華套房) B(中檔套房) C(單人公寓)n");ch=getchar();while(!(tolower(ch)='a'|tolower(ch)='b'|tolower(ch)='c');for(int i=0;i<s;i+)/loadroom();switch(tolower(ch)case 

11、9;a': unsigned int num1;/選擇的房間號(hào);printkong(tolower(ch);printf("請(qǐng)您正確選擇以上房間號(hào):n");doscanf("%d",&num1);t=panduan(num1,tolower(ch);if(t!=0&&roomt.fk!=0)printf("此房間已經(jīng)被訂,請(qǐng)重新選擇n");flag=1;else if(t>Z)flag=1;elseflag=0;while(flag);/當(dāng)選擇房間錯(cuò)誤或者所選房間有人時(shí)重新輸入。roomt.fk=

12、1;saveroom();/存取房間信息;kehui.num0=num1;doprintf("請(qǐng)交付訂金(不得低于房?jī)r(jià)的倍)n");scanf("%d",&money1);while(money1<(2*roomt.money);/預(yù)付的訂金不得低于房間價(jià)格的兩倍kehui.money0=money1;break;case 'b': unsigned int num1;/選擇的房間號(hào);printkong(tolower(ch);printf("請(qǐng)您正確選擇以上房間號(hào):n");doscanf("%

13、d",&num1);t=panduan(num1,tolower(ch);if(t!=0&&roomt.fk!=0)printf("此房間已經(jīng)被訂,請(qǐng)重新選擇n");flag=1;else if(t>Z)flag=1;elseflag=0;while(flag);/當(dāng)選擇房間錯(cuò)誤或者所選房間有人時(shí)重新輸入。roomt.fk=1;saveroom();/存取房間信息;kehui.num0=num1;doprintf("請(qǐng)交付訂金(不得低于房?jī)r(jià)的倍)n");scanf("%d",&money

14、1);while(money1<(2*roomt.money);/預(yù)付的訂金不得低于房間價(jià)格的兩倍kehui.money0=money1;break;case 'c':unsigned int num1;/選擇的房間號(hào);printkong(tolower(ch);printf("請(qǐng)您正確選擇以上房間號(hào):n");doscanf("%d",&num1);t=panduan(num1,tolower(ch);if(t!=0&&roomt.fk!=0)printf("此房間已經(jīng)被訂,請(qǐng)重新選擇n"

15、);flag=1;else if(t>Z)flag=1;elseflag=0;while(flag);/當(dāng)選擇房間錯(cuò)誤或者所選房間有人時(shí)重新輸入。roomt.fk=1;saveroom();/存取房間信息;kehui.num0=num1;doprintf("請(qǐng)交付訂金(不得低于房?jī)r(jià)的倍)n");scanf("%d",&money1);while(money1<(2*roomt.money);/預(yù)付的訂金不得低于房間價(jià)格的兩倍kehui.money0=money1;break;/saveroom();printf("請(qǐng)輸入客戶

16、的姓名n");getchar();/接收gets();printf("請(qǐng)輸入客戶的身份證號(hào)");gets(kehui.ID);printf("請(qǐng)輸入入住日期(月、日)n");scanf("%d%d",&kehui.ru.month,&kehui.ru.day);printf("訂房成功,歡迎您的光臨n");if(fp=fopen("kehuxinxi.text","rb")=NULL)save1(s);elsesave(s);n=

17、n+s;/n為以訂房間的人數(shù)。saven(n);/存取已訂房間人數(shù)n的值/void saven(int n)FILE *fp;fp=fopen("n.text","w");fprintf(fp,"%5d",n);fclose(fp);/讀取n的值/int loadn()int m;FILE *fp;if(fp=fopen("n.text","r")=NULL)return 0;elsefscanf(fp,"%d",&m);return m;/存取客戶信息(追加)/vo

18、id save(int s)FILE *fp;int i,m;m=loadn();if(fp=fopen("kehuxinxi.text","ab")=NULL)printf("打開文件失敗n");return;for(i=0;i<s;i+)fwrite(&kehui,sizeof(people),1,fp);fclose(fp);/存?。ó?dāng)文件為空時(shí))/void save1(int s)FILE *fp;fp=fopen("kehuxinxi.text","wb");for(in

19、t i=0;i<s;i+)fwrite(&kehui,sizeof(people),1,fp);fclose(fp);/讀取客戶信息文件/void loadkehu()int m,i;m=loadn();FILE *fp;if(fp=fopen("kehuxinxi.text","rb")=NULL)printf("打開文件失敗或者客戶信息為空n");return;for(i=0;i<m;i+)if(fread(&kehui,sizeof(people),1,fp)!=1)printf("讀取文件

20、失敗/n");return;/ 輸出客戶信息/void printkehu()loadkehu();int m,i;m=loadn();/讀取現(xiàn)在總共有多少個(gè)客人printf("客房號(hào) 客戶姓名 ID 入住日期 預(yù)付金額n");for(i=0;i<m;i+)printf("%-3dtt%-3s t%-3stt %5d月%2d日tt%-dn",kehui.num0,,kehui.ID,kehui.ru.month,kehui.ru.day,kehui.money0);/輸出一個(gè)客戶信息/void printkehu2(i

21、nt i)/i是客戶的下標(biāo)printf("客房號(hào) 客戶姓名 ID 入住日期 預(yù)付金額n");printf("%3dtt%3st%-3stt%-5d 月%-2d 日tt%dn",kehui.num0,,kehui.ID,kehui.ru.month,kehui.ru.day,kehui.money0);/查詢客戶信息/void chaxun()int k;unsigned int numk;/查詢的客房號(hào)int flag;/判斷作用char namek20;/查詢的客戶姓名loadkehu();printf("1.客房號(hào)查詢

22、2.客戶姓名查詢 n");doprintf("請(qǐng)選擇: ");scanf("%d",&k);while(!(k=1|k=2);switch(k)case 1:flag=1;/int i;printf("請(qǐng)輸入您要查詢的客房號(hào): ");scanf("%d",&numk);for(i=0;i<Z;i+)if(kehui.num0=numk)flag=0;break;if(flag=1)/沒查到時(shí)取初值printf("沒有找到您要查詢的客戶n");return;prin

23、tkehu2(i);break;case 2:flag=1;/int i;printf("請(qǐng)輸入您要查詢的客戶姓名: ");getchar();/接收scanf("%s",namek);for(i=0;i<Z;i+)if(strcmp(,namek)=0)flag=0;break;if(flag=1)/沒查到時(shí)取初值printf("沒有找到您要查詢的客戶n");return;printkehu2(i);break;/時(shí)間(一年的第幾天)/int shijian(int month,int day)int a1

24、2=31,28,31,30,31,30,31,31,30,31,30,31;int s=0;for(int i=0;i<month-1;i+)s=s+ai;s=s+day;return s;/退房結(jié)算/void tuifang()int i,m,t1,t2,s1,s2,s;int flag=0;unsigned int money9;char ch;m=loadn();/客人總數(shù)getchar();/接收printf("請(qǐng)輸入您要退的客房號(hào)n");unsigned int num9;/退的房間號(hào)scanf("%d",&num9);loadk

25、ehu();/讀取客戶信息loadroom();/讀取房間信息for(i=0;i<m;i+)if(kehui.num0=num9)t1=i;/記住客戶的位置flag=1;/證明有這個(gè)客戶break;for(i=0;i<Z;i+)if(roomi.num=num9)t2=i;/記住房間的位置if(flag)printf(" 客房號(hào) 客戶姓名 (請(qǐng)檢查是否正確!)n ");printf("%5dt%15sn",kehut1.num0,);elseprintf("您的客房號(hào)輸入有誤n");return;do

26、getchar();/接收printf("確認(rèn)退房請(qǐng)按Y否則請(qǐng)按N(不分大小寫)n");ch=getchar();while(!(tolower(ch)='y'|tolower(ch)='n');if(tolower(ch)='y')/退房時(shí)printf("請(qǐng)您輸入客戶的退房日期(月、日)");scanf("%d%d",&kehut1.chu.month,&kehut1.chu.day);s1=shijian(kehut1.ru.month,kehut1.ru.day);

27、/入住的時(shí)間s2=shijian(kehut1.chu.month,kehut1.chu.day);/退房時(shí)間s=s2-s1;/住了多少天;money9=s*roomt2.money;printf("應(yīng)收取的人民幣為:%d 元n",money9);if(kehut1.money0-money9)>=0)printf("應(yīng)找您人民幣%d 元n",(kehut1.money0-money9);elseprintf("您的預(yù)付金額不足,請(qǐng)您再交取人民幣 %d 元!n",(money9-kehut1.money0);roomt2.fk=

28、0;saveroom();m=m-1;savekehu2(t1,m);saven(m);/存儲(chǔ)剩余已訂房的客戶總數(shù)printf("歡迎您下次光臨!n");elsereturn;/客戶退房后存儲(chǔ)/void savekehu2(int t,int m)/t為退房客戶的下標(biāo),m為剩余訂房客戶的人數(shù)FILE *fp;if(fp=fopen("kehuxinxi.text","wb")=NULL)return;for(t;t<m;t+)kehut.num0=kehut+1.num0;strcpy(,kehut+1.na

29、me);strcpy(kehut.ID,kehut+1.ID);kehut.money0=kehut+1.money0;kehut.ru.month=kehut+1.ru.month;kehut.ru.day=kehut+1.ru.day;for(int i=0;i<m;i+)if(fwrite(&kehui,sizeof(people),1,fp)!=1)printf("存取失敗n");break;fclose(fp); void mulu()/首頁提示信息printf("1. 客人入住登記n");printf("2. 客戶信息

30、查詢n");printf("3. 查詢房間信息n");printf("4. 退房結(jié)算n");printf("0. 退出n");void main()/luru();/重新錄入房間信息/printkong('b');/getchar();/return;char ch50="* * * * * welcome to * * * * *"printf("*nn");printf(" %snn",ch);printf(" * * * 歡迎您進(jìn)入賓館管理系統(tǒng)* * *nn");printf("*nnn");mulu();for(;)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論