C語言課程設(shè)計 酒店房間登記與計費管理系統(tǒng)源代碼
《C語言課程設(shè)計 酒店房間登記與計費管理系統(tǒng)源代碼》由會員分享,可在線閱讀,更多相關(guān)《C語言課程設(shè)計 酒店房間登記與計費管理系統(tǒng)源代碼(17頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、酒店房間登記與計費管理系統(tǒng)源代碼
#define M 80
#include
2、 /*保存信息函數(shù)*/ void read(int); /*讀取信息函數(shù)*/ void choice(); /*功能選擇函數(shù)*/ int judge_year(int); /*判斷閏年函數(shù)*/ void information(); /*輸出全部房間信息*/ /*結(jié)構(gòu)體*/ struct time {int year; int mon; int date; int hour; }; struct room /*定義各房間信息的結(jié)構(gòu)體*/ {char name[40]
3、; char ID[18]; int flag; /* 0-無人入住,1-按小時計費,2-按天計費 */ long int deposit; time t[2]; /* 0-入住時間,1-當(dāng)前時間 */ }room[M]; char c1[40]={0}; char c2[18]={0}; /*主函數(shù)(主界面)*/ void main() {system("cls"); /*清屏*/ system("color 4E"); int n; printf("**************
4、******************************************************************"); printf("** **"); printf("**\t\t ---------- 歡迎光臨萬豪酒店 ---------- **"); printf("**
5、 **"); printf("********************************************************************************\n\n"); printf("\t\t\t [ 1. 登記入住 ]\n\n"); printf("\t\t\t [ 2. 入住情況 ]\n\n"); printf("\t\t\t [ 3. 當(dāng)前費用 ]\n\n"); printf("\t\t\t [ 4. 結(jié)賬退房 ]
6、\n\n"); printf("\t\t\t [ 5. 信息查詢 ]\n\n"); printf("\t\t\t [ 6. 全部信息 ]\n\n"); printf("\t\t\t [ 7. 退出系統(tǒng) ]\n\n"); printf("請輸入您需要的服務(wù)的代碼:"); scanf("%d",&n); while(n<1||n>7) {printf("\n\n代碼輸入有誤,請您重新輸入:"); scanf("%d",&n); } switch(n) /*根據(jù)輸
7、入數(shù)字選擇功能*/ {case 1:check_in();break; /*調(diào)用登記入住函數(shù)*/ case 2:chamber();break; /*調(diào)用房間情況函數(shù)*/ case 3:price();break; /*調(diào)用當(dāng)前費用函數(shù)*/ case 4:fee();break; /*調(diào)用結(jié)賬退房函數(shù)*/ case 5:infor();break; /*調(diào)用信息查詢函數(shù)*/ case 6:information();break;
8、 /*調(diào)用全部信息函數(shù)*/ case 7:exit(0); /*調(diào)用退出系統(tǒng)函數(shù)*/ } } /*查看房間使用情況函數(shù)*/ void chamber() {system("cls"); /*清屏*/ system("color 4E"); printf("\n**********************************房間使用情況**********************************\n"); int count=0; int i; i
9、nt j; int k; int m; for(i=1;i<=80;i++) /*統(tǒng)計未入住房間總數(shù)*/ {read(i); if(room[i-1].flag==0) count++;} printf("當(dāng)前未使用房間數(shù):%d\n\n\n",count); chaxun: printf("請輸入你要查詢的房間號(1-40:單人間,41-80:雙人間):"); /*輸入房間號查詢房間入住情況*/ scanf("%d",&m); while(m<1||m>80) {printf("\n\n房間號輸入有誤,請您重新輸入
10、:"); scanf("%d",&m); } read(m); while(room[m-1].flag!=0) {printf("\n\n對不起,該房間已有客人入住,請輸入其他房間號:"); scanf("%d",&m); read(m);} printf("\n\n該房間沒有客人入住,您要入住該房間嗎?(1-是,2-否):"); scanf("%d",&j); while(j<1||j>2) {printf("\n\n您的選擇輸入有誤,請您重新輸入:"); scanf("%d",&j); } if(j==1) check_in(); else
11、{printf("\n\n您需要繼續(xù)查詢嗎?(1-是,2-否):"); scanf("%d",&k); while(k<1||k>2) {printf("\n\n您的選擇輸入有誤,請您重新輸入:"); scanf("%d",&k); } if(k==1) goto chaxun; else {printf("\n\n"); main();} } } /*登記入住函數(shù)*/ void check_in() {system("cls"); /*清屏*/ system("color 4E"); int i;
12、 int j; int l; int k; int tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}}; printf("\n************************************登記入住************************************\n"); printf("請輸入您將入住的房間號:"); scanf("%d",&i); while(i<1||i>80) {printf("\n\n房間號輸入有誤,請您
13、重新輸入:"); scanf("%d",&i); } read(i); while(room[i-1].flag!=0) /*判斷房間是否入住*/ {printf("\n\n對不起,該房間已有客人入住,請輸入其他房間號:"); scanf("%d",&i); read(i);} printf("\n\n請輸入您的姓名:"); /*客人信息登記*/ scanf("%s",room[i-1].name); j=strlen(room[i-1].name); while(j<0) {pr
14、intf("\n\n您的姓名輸入有誤,請您重新輸入:\n"); scanf("%s",room[i-1].name); j=strlen(room[i-1].name); } printf("\n\n請輸入您的證件號碼:"); scanf("%s",room[i-1].ID); j=strlen(room[i-1].ID); while(j!=18) {printf("\n\n您的證件號碼輸入有誤,請您重新輸入:\n"); scanf("%s",room[i-1].ID); j=strlen(room[i-1].ID); } if(i<=40)
15、{printf("\n\n您選擇的是單人間,該房間148元/天,8元/小時。\n\n\n"); /*選擇計費方式*/ printf("請選擇您的計費方式(1:按小時計費,2:按天計費):"); } else {printf("\n\n您選擇的是雙人間,該房間128元/天,7元/小時。\n\n\n"); printf("請選擇您的計費方式(1:按小時計費,2:按天計費):"); } scanf("%d",&room[i-1].flag); while(room[i-1].flag<0||room[i-1].flag>2) {printf("\
16、n\n您的計費方式輸入有誤,請您重新輸入:"); scanf("%d",&room[i-1].flag); } printf("\n\n請按所示格式輸入您的入住時間(年-月-日-時,時為24小時制):"); scanf("%d-%d-%d-%d",&room[i-1].t[0].year,&room[i-1].t[0].mon,&room[i-1].t[0].date,&room[i-1].t[0].hour); l=judge_year(room[i-1].t[0].year); while((room[i-1].t[0].year<=0)||(room[i-1].t[0].mo
17、n<=0||room[i-1].t[0].mon>12)||(room[i-1].t[0].date<=0||room[i-1].t[0].date>tab[l][room[i-1].t[0].mon-1])||(room[i-1].t[0].hour<0||room[i-1].t[0].hour>=24)) {printf("\n\n您的入住時間輸入有誤,請按照格式重新輸入:"); scanf("%d-%d-%d-%d",&room[i-1].t[0].year,&room[i-1].t[0].mon,&room[i-1].t[0].date,&room[i-1].t[0].hour);
18、 l=judge_year(room[i-1].t[0].year); } printf("\n\n請輸入您的押金數(shù)額:"); scanf("%ld",&room[i-1].deposit); while(room[i-1].deposit<=0) {printf("\n\n您的押金數(shù)額輸入有誤,請您重新輸入:\n"); scanf("%ld",&room[i-1].deposit); } printf("\n\n您是否確定您的信息:(1-是,2-否):"); scanf("%d",&k); while(k<1||k>2) {printf("\n\n您的選擇輸入有誤,請
19、您重新輸入:\n"); scanf("%d",&k); } if(k==1) {printf("\n\n您已登記入住成功,祝您在本店住得愉快!\n\n"); save(i); choice(); } else check_in(); } /*費用查詢函數(shù)*/ void price() {system("cls"); /*清屏*/ system("color 4E"); printf("\n************************************費用查詢************************
20、************\n"); int i; int j; int k; int tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}}; int day=0; int hr=0; int total_hour; int total_day; long int price; printf("請輸入您的房間號:"); scanf("%d",&i); while(i<1||i>80) {printf("\n\n您的房間號輸入有誤,請您重新輸入
21、:"); scanf("%d",&i); } read(i); while(room[i-1].flag==0) /*判斷房間是否已有客人入住*/ {printf("\n\n該房間無人入住,請重新輸入您的房間號:"); scanf("%d",&i); read(i); } printf("\n\n請按所示格式輸入當(dāng)前時間(年-月-日-時,時為24小時制):"); /*輸入當(dāng)前時間*/ shuru: scanf("%d-%d-%d-%d",&room[i-1].t[1].year,&room[i-1]
22、.t[1].mon,&room[i-1].t[1].date,&room[i-1].t[1].hour); j=judge_year(room[i-1].t[1].year); while((room[i-1].t[1].year<=0)||(room[i-1].t[1].mon<=0||room[i-1].t[1].mon>12)||(room[i-1].t[1].date<=0||room[i-1].t[1].date>tab[j][room[i-1].t[1].mon-1])||(room[i-1].t[1].hour<0||room[i-1].t[1].hour>=24)) {p
23、rintf("\n\n您的入住時間輸入有誤,請按照格式重新輸入:");
scanf("%d-%d-%d-%d",&room[i-1].t[1].year,&room[i-1].t[1].mon,&room[i-1].t[1].date,&room[i-1].t[1].hour);
j=judge_year(room[i-1].t[1].year);
}
if(room[i-1].t[0].mon!=room[i-1].t[1].mon)
{for(k=room[i-1].t[0].mon+1;k 24、
}
day+=tab[j][room[i-1].t[0].mon-1]-room[i-1].t[0].date+room[i-1].t[1].date;
}
else
{day+=room[i-1].t[1].date-room[i-1].t[0].date;}
hr=room[i-1].t[1].hour-room[i-1].t[0].hour;
if(room[i-1].flag==1) /*根據(jù)房間類型和計費方式計算費用*/
{if(hr<0)
{total_hour=day*24-hr;}
else
{total_ho 25、ur=day*24+hr;}
if(i<=40)
price=8*total_hour;
else
price=7*total_hour;
}
if(room[i-1].flag==2)
{while(hr<0)
{day=day-1;hr=hr+24;}
if(hr<8)
{total_day=day;}
else
{total_day=day+1;}
if(i<=40)
price=148*total_day;
else
price=128*total_day;
}
while(price<0)
{printf("您的時間輸入有誤,請重新輸入:");
26、
goto shuru;
}
printf("\n\n當(dāng)前費用為:%ld元.\n\n",price); /*輸出當(dāng)前費用*/
choice();
}
/*結(jié)賬退房函數(shù)*/
void fee()
{system("cls");
system("color 4E");
printf("\n************************************結(jié)賬退房************************************\n");
int i;
int j;
int k;
int tab[2][12]={{31,28,3 27、1,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};
int day=0;
int hr=0;
int total_hour;
int total_day;
long int price;
long int fee;
printf("請輸入您的房間號:");
scanf("%d",&i);
while(i<1||i>80)
{printf("\n\n您的房間號輸入有誤,請您重新輸入:");
scanf("%d",&i);
}
read(i);
while(room[i 28、-1].flag==0) /*判斷房間是否有客人入住*/
{printf("\n\n該房間無人入住,請重新輸入您的房間號:");
scanf("%d",&i);
read(i);
}
printf("\n\n請按所示格式輸入當(dāng)前時間(年-月-日-時,時為24小時制):"); /*輸入當(dāng)前時間*/
shuru:
scanf("%d-%d-%d-%d",&room[i-1].t[1].year,&room[i-1].t[1].mon,&room[i-1].t[1].date,&room[i-1].t[1]. 29、hour);
j=judge_year(room[i-1].t[1].year);
while((room[i-1].t[1].year<=0)||(room[i-1].t[1].mon<=0||room[i-1].t[1].mon>12)||(room[i-1].t[1].date<=0||room[i-1].t[1].date>tab[j][room[i-1].t[1].mon-1])||(room[i-1].t[1].hour<0||room[i-1].t[1].hour>=24))
{printf("\n\n您的入住時間輸入有誤,請按照格式重新輸入:");
scanf("%d- 30、%d-%d-%d",&room[i-1].t[1].year,&room[i-1].t[1].mon,&room[i-1].t[1].date,&room[i-1].t[1].hour);
j=judge_year(room[i-1].t[1].year);
}
if(room[i-1].t[0].mon!=room[i-1].t[1].mon)
{for(k=room[i-1].t[0].mon+1;k 31、.t[0].date+room[i-1].t[1].date;
}
else
{day+=room[i-1].t[1].date-room[i-1].t[0].date;}
hr=room[i-1].t[1].hour-room[i-1].t[0].hour;
if(room[i-1].flag==1) /*根據(jù)房間類型和計費方式計算費用*/
{if(hr<0)
{total_hour=day*24-hr;}
else
{total_hour=day*24+hr;}
if(i<=40)
price=8*total_hour;
32、else
price=7*total_hour;
}
if(room[i-1].flag==2)
{while(hr<0)
{day=day-1;hr=hr+24;}
if(hr<8)
{total_day=day;}
else
{total_day=day+1;}
if(i<=40)
price=148*total_day;
else
price=128*total_day;
}
while(price<0)
{printf("您的時間輸入有誤,請重新輸入:");
goto shuru;
}
fee=price-room[i-1].deposit;
i 33、f(fee>0) /*輸出最后的總費用*/
{printf("\n\n扣除押金后,您另需支付費用%ld元。",fee);}
else if(fee==0)
{printf("\n\n您所交納的押金恰好能夠支付您的住房費用,您無需另行交錢。");}
else
{printf("\n\n您所交納的押金還未使用完,本賓館應(yīng)支付您余額%ld元。",-fee);}
printf("\n\n\n您已退房成功,感謝您的光臨,我們下次再見!\n\n");
room[i-1].flag=0;
strcpy( 34、room[i-1].name,c1);
strcpy(room[i-1].ID,c2);
room[i-1].deposit=0;
room[i-1].t[0].year=0;
room[i-1].t[0].mon=0;
room[i-1].t[0].date=0;
room[i-1].t[0].hour=0;
room[i-1].t[1].year=0;
room[i-1].t[1].mon=0;
room[i-1].t[1].date=0;
room[i-1].t[1].hour=0;
save(i);
choice();
}
/*信息查詢函數(shù)*/
voi 35、d infor()
{system("cls");
system("color 4E");
printf("\n************************************信息查詢************************************\n");
int i;
printf("請輸入您的房間號:");
scanf("%d",&i);
while(i<1||i>80)
{printf("\n\n您的房間號輸入有誤,請您重新輸入:");
scanf("%d",&i);
}
read(i);
while(room[i-1].flag==0) 36、 /*判斷房間是否有客人入住*/
{printf("\n\n該房間無人入住,請重新輸入您的房間號:");
scanf("%d",&i);
read(i);
}
printf("\n\n您的信息如下:\n\n\n"); /*輸出客人信息*/
printf("姓名:");
puts(room[i-1].name);
printf("\n\n");
printf("證件號碼:");
puts(room[i-1].ID);
printf("\n\n");
printf("房 37、間類型:");
if(i<=40)
{printf("單人間\n\n\n");}
else
{printf("雙人間\n\n\n");}
printf("計費方式:");
if(room[i-1].flag==1)
{printf("按小時計費\n\n\n");}
else
{printf("按天計費\n\n\n");}
printf("入住時間:");
printf("%d年%d%月%d日%d時\n\n\n",room[i-1].t[0].year,room[i-1].t[0].mon,room[i-1].t[0].date,room[i-1].t[0].hour);
38、
printf("押金數(shù)額:");
printf("%ld元\n\n",room[i-1].deposit);
choice();
}
/*功能選擇函數(shù)*/
void choice()
{printf("\n************************************功能選擇************************************\n");
printf("\t\t\t [ 1. 入住情況 ]\n");
printf("\t\t\t [ 2. 登記入住 ]\n");
printf("\t\t\t 39、 [ 3. 當(dāng)前費用 ]\n");
printf("\t\t\t [ 4. 結(jié)賬退房 ]\n");
printf("\t\t\t [ 5. 信息查詢 ]\n");
printf("\t\t\t [ 6. 回主界面 ]\n");
printf("\t\t\t [ 7. 全部信息 ]\n");
printf("\t\t\t [ 8. 退出系統(tǒng) ]\n");
int k;
printf("請選擇您需要的服務(wù):"); /*服務(wù)選 40、擇*/
scanf("%d",&k);
while(k<1||k>8)
{printf("\n\n代碼輸入有誤,請您重新輸入:");
scanf("%d",&k);
}
switch(k)
{ case 1:chamber();break; /*調(diào)用房間情況函數(shù)*/
case 2:check_in();break; /*調(diào)用登記入住函數(shù)*/
case 3:price();break; /*調(diào)用當(dāng)前費用函數(shù)*/
case 4:fee();break; /*調(diào)用結(jié)賬退房函數(shù)*/
41、 case 5:infor();break; /*調(diào)用信息查詢函數(shù)*/
case 6:main();break; /*調(diào)用主函數(shù)*/
case 7:information();break; /*調(diào)用全部信息函數(shù)*/
case 8:exit(0); /*調(diào)用退出系統(tǒng)函數(shù)*/
}
}
/*判斷閏年函數(shù)*/
int judge_year(int x)
{if((x%4==0)&&(x%100!=0)||(x%400= 42、=0))
return(1);
else
return(0);
}
/*全部信息查詢*/
void information()
{system("cls");
printf("\n************************************全部信息************************************\n");
int i;
int j;
int k;
int year;
int month;
int date;
int hour;
int year1;
43、int month1;
int day1;
int hour1;
int tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};
int day=0;
int hr=0;
int total_hour;
int total_day;
long int price;
printf("\n\n請按所示格式輸入當(dāng)前時間(年-月-日-時,時為24小時制):"); /*輸入當(dāng)前時間*/
scanf("%d-%d-%d-%d",&yea 44、r,&month,&date,&hour);
j=judge_year(year);
for(i=1;i<=80;i++)
{read(i);
if(room[i-1].flag==0)
{printf("房間%d無人入住。\n",i);
if(i<=40)
{printf("房間類型:單人間。\n");
printf("單價:148元/天,8元/小時。\n");}
else
{printf("房間類型:雙人間。\n");
printf("單價:128元/天,7元/小時。\n");}
}
else
{year1=year-room[i-1].t[0].year;
45、month1=month-room[i-1].t[0].mon;
day1=date-room[i-1].t[0].date;
hour1=hour-room[i-1].t[0].hour;
while(hour1<0)
{day1=day1-1;hour1=hour1+24;}
printf("房間%d客戶信息如下:\n",i);
printf("姓名:");
puts(room[i-1].name);
printf("證件號碼:");
puts(room[i-1].ID);
printf("房間類型:");
if(i<=40)
{printf("單人間\n");
46、printf("單價:148元/天,8元/小時。\n");
}
else
{printf("雙人間\n");
printf("單價:128元/天,7元/小時。\n");
}
printf("計費方式:");
if(room[i-1].flag==1)
{printf("按小時計費\n");}
else
{printf("按天計費\n");}
printf("入住時間:");
printf("%d年%d%月%d日%d時\n",room[i-1].t[0].year,room[i-1].t[0].mon,room[i-1].t[0].date,room[i-1].t[0]. 47、hour);
printf("已入住時間:%d年%d月%d天%d小時。\n",year1,month1,day1,hour1);
printf("押金數(shù)額:");
printf("%ld元",room[i-1].deposit);
if(room[i-1].t[0].mon!=month)
{for(k=room[i-1].t[0].mon+1;k 48、m[i-1].t[0].date;}
hr=hour-room[i-1].t[0].hour;
if(room[i-1].flag==1) /*根據(jù)房間類型和計費方式計算費用*/
{if(hr<0)
{total_hour=day*24-hr;}
else
{total_hour=day*24+hr;}
if(i<=40)
price=8*total_hour;
else
price=7*total_hour;
}
if(room[i-1].flag==2)
{while(hr<0)
{day=day-1;hr=hr+2 49、4;}
if(hr<8)
{total_day=day;}
else
{total_day=day+1;}
if(i<=40)
price=148*total_day;
else
price=128*total_day;
}
printf("\n當(dāng)前費用為:%ld元.\n",price); /*輸出當(dāng)前費用*/
}
day=0;hr=0; /*時間清零*/
} 50、
choice();
}
/*保存信息函數(shù)*/
void save(int x)
{int i;
char c;
FILE *fp;
if((fp=fopen("酒店房間登記與計費管理系統(tǒng)信息存儲文件.txt","wb+"))==NULL)
{printf("無法打開文件。\n\n\n");
printf("請按任意鍵返回主菜單,并選擇“退出系統(tǒng)”選項,在修改錯誤后再運行此系統(tǒng)。\n\n");
scanf("%s",&c);
main();
}
for(i=1;i<=x;i++)
if(fwrite(&room[i-1],sizeof(struct ro 51、om),1,fp)!=1)
printf("文件寫入錯誤!\n\n");
fclose(fp);
}
/*讀取信息函數(shù)*/
void read(int y)
{int i=1;
char c;
FILE *fp;
if((fp=fopen("酒店房間登記與計費管理系統(tǒng)信息存儲文件.txt","rb+"))==NULL)
{printf("\n\n無法打開文件。\n\n\n");
printf("請按任意鍵返回主菜單,并選擇“退出系統(tǒng)”選項,在修改錯誤后再運行此系統(tǒng)。\n\n");
scanf("%s",&c);
main();
}
else
{do
{
fread(&room[i-1],sizeof(struct room),1,fp);
i++;
}while(feof(fp)==0);
}
fclose(fp);
}
第 17 頁
- 溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024《增值稅法》全文學(xué)習(xí)解讀(規(guī)范增值稅的征收和繳納保護納稅人的合法權(quán)益)
- 2024《文物保護法》全文解讀學(xué)習(xí)(加強對文物的保護促進科學(xué)研究工作)
- 銷售技巧培訓(xùn)課件:接近客戶的套路總結(jié)
- 20種成交的銷售話術(shù)和技巧
- 銷售技巧:接近客戶的8種套路
- 銷售套路總結(jié)
- 房產(chǎn)銷售中的常見問題及解決方法
- 銷售技巧:值得默念的成交話術(shù)
- 銷售資料:讓人舒服的35種說話方式
- 汽車銷售績效管理規(guī)范
- 銷售技巧培訓(xùn)課件:絕對成交的銷售話術(shù)
- 頂尖銷售技巧總結(jié)
- 銷售技巧:電話營銷十大定律
- 銷售逼單最好的二十三種技巧
- 銷售最常遇到的10大麻煩