#include<stdio.h>
#include<string.h> //在使用中要用到的字串都包含在本檔案中
#include<stdlib.h> //exit()函式就包含在此檔案中
#define M 81
int z[81]={0}; //定義一個陣列存放使用的房間的標記的資訊,且初始化為0
int j,s; //定義兩個全域變數
FILE *fp; //定義一個指向檔案的指標變數
struct date
{int month;
int day;
int year;
}final;
struct hotel
{int price;
int room_ID;
struct client
{char name[20];
int sex;
int age;
char ID_card[20];
int count;
struct date start;
}personal;
}room[M]; //定義全域結構體變數,且里面又呼叫兩個結構體
int fflush( fp); //宣告重繪函式fflush( fp),且指向指標變數指向的位置
void save();
void search_situ( ); //宣告查看客房入住情況函式
void regist_infor( ); //宣告客房登記入住函式
void modify_infor( ); //宣告客房資訊修改函式函式
void modify_one( ); //宣告修改客房資訊函式中的修改個人函式
void modify_hotel( ); //宣告修改客房資訊函式中的修改客房函式
void disp_money( ); //宣告顯示入住費用函式
int main()
{
int menu(); //宣告主選單函式
void print_star();
void print_message();
printf("\n\n\n\n\n");
print_star();
printf("\n");
print_message();
printf("\n");
print_star();
menu(); //把主選單用函式來實作
save();
return 0;
}
void print_star()
{int i;
for(i=1;i<30;i++)
printf("\t*");
}
void print_message()
{
printf("\t\t\t\t歡迎使用客房管理系統\n");
}
menu()
{
int n;
do
{
printf("\n");
printf("\t\t*********************選單********************\n\n\n");
printf("\t\t\t\t1:查看客房入住情況\n\n\n");
printf("\t\t\t\t2:登記入住資訊\n\n\n");
printf("\t\t\t\t3:修改客房資訊\n\n\n");
printf("\t\t\t\t4:顯示入住費用\n\n\n");
printf("\t\t\t\t5:退出\n\n\n");
printf("\t\t\t\t6:回傳\n\n\n");
printf("\t\t*********************選單********************\n");
printf("\n\n\t\t\t 請選擇輸入選項[1\\2\\3\\4\\5\\6]:\n");
scanf("%d",&n);
while(n<1||n>6)
{printf("請重新輸入選項!");
scanf("%d",&n);}
switch(n)
{
case 1:search_situ();break; //呼叫查看函式
case 2:regist_infor();break; //呼叫登記函式
case 3:modify_infor();break; //呼叫修改函式
case 4:disp_money();break; //呼叫顯示入住費用函式
case 5:exit(0);
case 6:break;
}
}while(n!=6);
scanf("%d",&n);
return 0;
}
void search_situ( ) //查看函式
{
int g,count=0;
for(g=1;g<=80;g++)
{
if(z[g]==0)
++count;
else
if(z[g]==1)
printf("\n正在使用的房間號:%d",g);
}
printf("\n\n未使用的房間數:%d",count); //通過回圈輸出未使用的房間數
printf("\n\n");
printf("\n請輸入需查詢的房間號:\n"); //查詢輸入的房間號的資訊,且輸出該房間的相關資訊
scanf("%d",&s);
if(z[s]==1)
{printf("姓名:%s",room[s].personal.name);
printf("\n性別(其中:1表示男,2表示女!):%d",room[s].personal.sex);
printf("\n年齡:%d",room[s].personal.age);
printf("\n身份證號:%s",room[s].personal.ID_card);
printf("\n入住年份:%d",room[s].personal.start.year);
printf("月:%d",room[s].personal.start.month);
printf("日:%d",room[s].personal.start.day);
printf("\n房間號:%d",room[s].room_ID);
printf("\n客房單價:%d",room[s].price);
printf("\n入住人數:%d",room[s].personal.count);
menu();
}
else
printf("該房間未被使用!");
save(); //呼叫保存函式
}
void regist_infor( ) // 登記函式
{
printf("請輸入登記相關資訊:\n");
printf("\n房間號:");
scanf("%d",&j);
room[j].room_ID=j;
printf("\n姓名:");
scanf("%s",&room[j].personal.name);
printf("\n性別(其中:1表示男,2表示女!):");
scanf("%d",&room[j].personal.sex);
printf("\n年齡:");
scanf("%d",&room[j].personal.age);
printf("\n身份證號:");
scanf("%s",&room[j].personal.ID_card);
printf("\n入住年份:");
scanf("%d",&room[j].personal.start.year);
printf("月:");
scanf("%d",&room[j].personal.start.month);
printf("日:");
scanf("%d",&room[j].personal.start.day);
printf("\n客房單價:");
scanf("%d",&room[j].price);
printf("請輸入入住人數\n");
scanf("%d",&room[j].personal.count);
z[j]=1; //標記使用的房間為1
save();
}
void modify_infor( ) //修改函式
{
int r,m;
do
{
printf("\t\t\t *******************選單******************\n\n\n");
printf("\t\t\t\t\t 1:修改客戶資訊\n\n\n");
printf("\t\t\t\t\t 2:修改客房資訊\n\n\n");
printf("\t\t\t\t\t 3:menu()\n\n\n");
printf("\t\t\t\t\t4:退出\n\n\n");
printf("\t\t\t *****************************************\n\n\n");
printf("\t\t\t 請選擇輸入選項[1\\2\\3\\4]:\n");
scanf("%d",&m);
if(m<1||m>3)
{
r=1;getchar();
}
else r=0;
}while(r==1);
switch(m)
{
case 1:modify_one();break;
case 2:modify_hotel();break;
case 3:menu();
case 4:exit(0);
}
save();
}
void modify_one() //修改個人資訊函式
{
int q;
char a[20];
printf("\n請選擇您要修改的個人選項\n");
printf("1:姓名 2:性別(其中:1表示男,2表示女!) 3:年齡 4:身份證號 5:入住年份 6:入住月份 7入住日 8:入住人數\n");
printf("\t請選擇輸入選項[1\\2\\3\\4\\5\\6\\7\\8]:\n\b\b");
scanf("%d",&q);
switch(q)
{
int t,p;
char k;
case 1:printf("請輸入新名字\n");
for(t=0;t<20;t++)scanf("%s",&a[t]);
strcpy(room[j].personal.name,a);break;
case 2:printf("請選擇新性別(其中:1表示男,2表示女!)\n");
scanf("%d",&k);room[j].personal.sex=k;break;
case 3:printf("請輸入新年齡\n");
scanf("%d",&p);room[j].personal.age=p;break;
case 4:printf("請輸入新身份證號\n");
scanf("%d",&p);room[j].personal.ID_card[20]=p;break;
case 5:printf("請輸入新年份\n");
scanf("%d",&p);room[j].personal.start.year=p;break;
case 6:printf("請輸入新月份\n");
scanf("%d",&p);room[j].personal.start.month=p;break;
case 7:printf("請輸入新日子\n");
scanf("%d",&p);room[j].personal.start.day=p;break;
case 8:printf("請輸入新入住人數\n");
scanf("%d",&p);room[j].personal.count=p;break;
}
menu();
}
void modify_hotel() //修改客房資訊函式
{
int l;
printf("\n\t\t\t\t請選擇您要修改的客房資訊\n\n");
printf("\t\t\t\t1:房間號\n\n \t\t\t\t2:客房單價\n\n \t\t\t\t3:入住人數\n\n \t\t\t\t4:回傳\n\n");
printf("\t\t\t請選擇輸入選項[1\\2\\3\\4]:\n\b\b");
scanf("%d",&l);
switch(l)
{
case 1:printf("請輸入舊房號\n");
scanf("%d",&j);
printf("請輸入新房號\n");
scanf("%d",&s);
strcpy(room[s].personal.name,room[j].personal.name);
room[s].personal.sex=room[j].personal.sex; room[j].personal.sex=0;
room[s].personal.age=room[j].personal.age; room[j].personal.age=0;
strcpy(room[s].personal.ID_card,room[j].personal.ID_card);
room[s].personal.start.year=room[j].personal.start.year; room[j].personal.start.year=0;
room[s].personal.start.month=room[j].personal.start.month; room[j].personal.start.month=0;
room[s].personal.start.day=room[j].personal.start.day; room[j].personal.start.day=0;
room[s].room_ID=s;
room[s].price=room[j].price;
room[s].personal.count=room[j].personal.count;
z[s]=1; z[j]=0; break;
case 2:printf("請輸入房號\n");
scanf("%d",&s);
printf("請輸入新單價\n");
scanf("%d",&s);room[s].price=s;break;
case 3:printf("請輸入房號\n");
scanf("%d",&s);
printf("請輸入新入住人數\n");
scanf("%d",&s);
room[s].personal.count=s;break;
case 4:break;
}
save();
menu();
}
void disp_money( ) //顯示入住費用函式
{
int i,sum;
printf("請輸入房間號;\n");
scanf("%d",&room[j].room_ID);
printf("\n入住年份:%d",room[j].personal.start.year);
printf("月:%d",room[j].personal.start.month);
printf("日:%d",room[j].personal.start.day);
printf("房間單價為:");
printf("%d",room[j].price);
printf("\n請輸入退房時間:\n");
printf("請輸入年份:");
scanf("%d",&final.year);
printf("請輸入月份:");
scanf("%d",&final.month);
printf("請輸入日:");
scanf("%d",&final.day);
printf("\n請輸入住房天數:\n");
scanf("%d",&i);
sum=room[j].price*i;
printf("總費用sum=%d\n",sum);
save();
menu();
}
void save() //保存函式
{
FILE *fp;
int i;
if((fp=fopen("客房管理.txt","w+"))==NULL) //打開輸出檔案“客房管理.txt”
{printf("cannot open file\n");
exit(0);
}
for(i=0;i<M;i++)
{
if(fwrite((&room[i]), sizeof(room[M]),1,fp)!=1)
printf("file write error\n");
fflush(fp);
}
fclose(fp); //關閉檔案
}
uj5u.com熱心網友回復:
又是長串代碼不說問題詳細情況的轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/132765.html
標籤:基礎類
上一篇:關于Menu動態顯示的問題
