當前位置:首頁 » 操作系統 » c酒店管理源碼

c酒店管理源碼

發布時間: 2024-06-02 16:42:09

c語言 酒店房間登記與計費管理系統

恩,你可以用MFC開發,不會的話網上有源碼或者Q我397044815

❷ 請高手幫忙用C語言做一個酒店管理系統

在這個經濟社會里誰還會免費的幫人家出這么大的力啊?你那酒店管理系統要求再簡單也要花時間啊!再說你要它的原理,這不是要人家的知識產權嗎?也許人家開發出來把軟體打包給你還有可能。

❸ c語言酒店管理系統

20分?我倒
給個建構你,至於怎麼實現自己想辦法了
struct Hotel
{
int index;//客房編號;
int type;//客房類型;
int position;//客房位置;
int area;//面積;
int bedsOfRoom;//床位數;
int price;//價格
Hotel*next;
};

❹ 用c語言寫酒店管理系統時如何用時間庫自動生成入房日期

也就是要獲取系統時間,下面是c語言的代碼截圖,讀取系統時間,如下:

獲取系統時間

❺ 求酒店管理系統(C語言)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct customers_node{
char id[18];
int days;
int money;
char roomnumber[3];
struct customers_node *next;
};
struct customers_node * p0,* head;
//#define N 100
struct customers_node * Create_Cust_Doc(); //新建
struct customers_node * InsertDoc(struct customers_node * head,char id[ ]); //插入
struct customers_node * DeleteDoc(struct customers_node * head,char id[ ]); //刪除
struct customers_node * searchDoc(struct customers_node * head,char id[ ]); //查詢
void Print_Cust_Doc(struct customers_node * head); //調用信息函數
struct customers_node * customers(struct customers_node * p0); //需要為p0分配動態存儲空間嗎
int main(void)
{
struct customers_node * head;
int choice;
char id[18];
do{
printf("本系統功能:\n");
printf("1.Create(新建) 2.search(查詢) 3.Insert(添加) 4.Delete(刪除) 5.print 0:Exit(退出)\n");
printf("請選擇:");
scanf("%d",&choice);
switch(choice){
case 1:
head=Create_Cust_Doc();
break;
case 2:
printf(" 請您輸入您的身份證號碼:\n");
scanf("%s",id);
head=searchDoc(head,id);
break;
case 3:
printf(" 請您輸入您的身份證號碼:\n");
scanf("%s",id);
head=InsertDoc(head,id);
break;
case 4:
printf(" 請您輸入您的身份證號碼:\n");
scanf("%s",id);
head=DeleteDoc(head,id);
break;
case 5:
Print_Cust_Doc(head);
break;
case 0:
break;
}
}while(choice!=0);
return 0;
}
struct customers_node * customers(struct customers_node * p0)
{
struct customers_node * p;
int days,money,choice,z;
char id[18];
char roomnumber[3];
printf(" 請您輸入您的身份證號碼:\n");
scanf("%s",id);
printf(" 您已登陸成功!\n");
printf(" 請您選擇房間種類:\n");
printf(" 1.單人間/夜150元\n 2.雙人間/夜200元\n 3.標准間/夜300元\n 4.總統套房/夜600元\n");
scanf("%d",&choice);
switch(choice) {
case 1:printf(" 請輸入預定天數\n");
scanf("%d",&days);
money=days*150;
printf(" 請預交款為%d元\n",money);
printf(" 1.確定(預定成功) 2.返回(是否重新預定)\n");
scanf("%d",&z);
if(z==1){
printf(" 您已預定成功 ★ 房間號碼為: ");
scanf("%s",roomnumber);
}break;

case 2:printf(" 請輸入預定天數\n");
scanf("%d",&days);
money=days*200;
printf(" 請預交款為%d元\n",money);
printf(" 1.確定(預定成功) 2.返回(是否重新預定)\n");
scanf("%d",&z);
if(z==1){
printf(" 您已預定成功★房間號碼為: ");
scanf("%s",roomnumber);
}break;

case 3:printf(" 請輸入預定天數: ");
scanf("%d",&days);
money=days*300;
printf(" 請預交款為%d元\n",money);
printf(" 1.確定(預定成功) 2.返回(是否重新預定)\n");
scanf("%d",&z);
if(z==1){
printf(" 您已預定成功 ★ 房間號碼為: ");
scanf("%s",roomnumber);
} break;

case 4:printf(" 請輸入預定天數\n");
scanf("%d",&days);
money=days*600;
printf(" 請預交款為%d元\n",money);
printf(" 1.確定(預定成功) 2.返回(是否重新預定)\n");
scanf(" %d",&z);
if(z==1){
printf(" 您已預定成功★房間號碼為: ");
scanf("%s",roomnumber);
}break;
default :printf(" 您的輸入有錯,請您重試,謝謝。\n");
break;
p=(struct customers_node *)malloc(sizeof(struct customers_node)); //是否能用指針完成結構元素的傳送
strcpy(p->id,id);
strcpy(p->roomnumber,roomnumber);
p->days=days;
p->money=money;
return p;
}
struct customers_node * Create_Cust_Doc() //新建
{
struct customers_node * head,* p;
int size=sizeof(struct customers_node);
p=(struct customers_node *)malloc(size);
head->next = NULL;
customers(* p0); //調用函數
//p=p0;
head->next=p;
return head;
}

struct customers_node * InsertDoc(struct customers_node * head);
{
struct customers_node *q,*temp;
q=(struct customers_node *)malloc(sizeof(struct customers_node));
customers(p0);
temp=p0; //未解決元素的插入
q=head->next;
if(head->next==NULL){
q=temp;
q->next=NULL;
}
while(q->next) q=q->next;
q->next=temp;
return head;
}

struct customers_node * searchDoc(struct customers_node * head,char id) //是否只用id能返回結構中的所有元素
{
struct customers_node * p=head->next;
p=head->next;
if(head->next==null)
printf("無人入住");
else{
while(strcmp(id,p->id)!=0) //如何只用id表示結點(結構)中的數據部分 p=p->next;
p=p->next;
}
return p;
}

struct customers_node * DeleteDoc(struct customers_node * head,char id)
{
struct customers_node * p,* q;
p=head->next;
q=p->next;
if(p==null)
return null;
while(p!=null){
if(strcmp(id,p->id)==0){
q=p;
free(p);
}
p=p->next;
q=p->next;
}
return head;
}
void Print_Cust_Doc(struct customers_node * head)
{
struct customers_node * q;
if(head->next==null){
printf("\n 沒有記錄\n");
return ;
}
printf("入住客戶記錄是:\n");
for(q=head->next;q;q=q->next){
printf(" 身份證號碼:%s\t",q->id);
printf(" 入住天數:%d\t",q->days);
printf(" 預交款:%d\t",q->money);
printf(" 房間號:%s\n",q->roomnumber);
}
}

❻ C語言實現酒店信息管理系統

不知道你的要求是什麼,把我以前的關於酒店管理的代碼發給你參考下吧。

#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
typedefstructtagCustomer
{
charm_ID[19];/*身份證號碼*/
charm_name[10];/*顧客姓名*/
intm_age;/*顧客年齡*/
charm_sex[6];/*顧客性別*/
intnum;
}Customer;/*顧客結構*/

typedefstructtagRoom
{
intm_num;/*房間號*/
intm_floor;/*樓層*/
intm_price;/*價格*/
intm_use;/*是否已入住*/
}Room;/*房間結構*/
inti,j=0,age,num,floor,price,use,n;
intreg=0;
Customercus[5];
Roomr[5];
intcount=5;
charID[18],name[10],sex[6];
FILE*fproom;
FILE*fpcustomer;

voidCustomer_Input()
{
if(count<=5)
{
printf("請輸入身份證號(18位數字):");
scanf("%s",&cus[j].m_ID);
printf("請輸入姓名(10位字元)");
scanf("%s",&cus[j].m_name);
printf("請輸入年齡(數字型)");
scanf("%d",&cus[j].m_age);
printf("請輸入性別(男或女):");
scanf("%s",&cus[j].m_sex);
}
else
{
printf(" 存儲空間已滿!");
}
printf(" 顧客可以住在:");
printf(" 房間號樓層價格是否空閑(1:空閑0:已使用)");
for(i=0;i<count;i++)
{
if(r[i].m_use==1)
{
printf(" %d%d%d%d",r[i].m_num,r[i].m_floor,r[i].m_price,r[i].m_use);
}
}
printf(" 請你輸入房間號:");
scanf("%d",&num);
reg=0;
for(i=0;i<count;i++)
{
if(r[i].m_use==1&&r[i].m_num==num)
{
r[i].m_use=0;
printf(" 登記成功! ");
cus[j].num=r[i].m_num;
j=j+1;
reg=1;
}
}
if(reg==0)
{
printf(" 登記失敗! ");
}

}
voidCustomer_ListOut()
{
if(count<=5)
{
printf("請輸入身份證號(18位數字):");
scanf("%s",&ID);
for(i=0;i<count;i++)
{
if(strcmp(cus[i].m_ID,ID)==0)
{
printf(" 顧客身份證號:%s姓名:%s年齡:%d性別:%s ",cus[i].m_ID,cus[i].m_name,cus[i].m_age,cus[i].m_sex);
}
}
}
else
{
printf(" ");
}
}
voidRoom_ListOut()
{
printf(" 房間號樓層價格是否空閑(1:空閑0:已使用)");
for(i=0;i<count;i++)
{
if(r[i].m_use==1)
{
printf(" %d%d%d%d",r[i].m_num,r[i].m_floor,r[i].m_price,r[i].m_use);
}
}
}
voidPerCustomer_Search()
{
if(count<=5)
{
printf("請輸入身份證號(18位數字):");
scanf("%s",&cus[j].m_ID);
printf("請輸入姓名(10位字元)");
scanf("%s",&cus[j].m_name);
printf("請輸入年齡(數字型)");
scanf("%d",&cus[j].m_age);
printf("請輸入性別(男或女):");
scanf("%s",&cus[j].m_sex);
}
else
{
printf(" 住房已滿!");
}
printf(" 顧客可以預訂:");
printf(" 房間號樓層價格是否空閑(1:空閑0:已使用)");
for(i=0;i<count;i++)
{
if(r[i].m_use==1)
{
printf(" %d%d%d%d",r[i].m_num,r[i].m_floor,r[i].m_price,r[i].m_use);
}
}
printf(" 請你輸入要預訂的房間號:");
scanf("%d",&num);
reg=0;
for(i=0;i<count;i++)
{
if(r[i].m_use==1&&r[i].m_num==num)
{
r[i].m_use=0;
printf(" 預訂成功! ");
cus[j].num=r[i].m_num;
j=j+1;
reg=1;
}
}
if(reg==0)
{
printf(" 預訂失敗! ");
}
}
voidUnCustomer_Out()
{
intk;
printf(" 請輸入要退房顧客身份證:");
scanf("%s",&ID);
for(i=0;i<count;i++)
{
if(strcmp(cus[i].m_ID,ID)==0)
{
printf(" 顧客身份證號:%s姓名:%s年齡:%d性別:%s 已經成功退房!",cus[i].m_ID,cus[i].m_name,cus[i].m_age,cus[i].m_sex);
for(k=0;k<count;k++)
if(r[k].m_num==cus[i].num)
r[k].m_use=1;
memset(&cus[i],0,sizeof(Customer));

}
}
}
voidCustomer_Goaway()
{
fproom=fopen("room","wb+");
fwrite((void*)&r,sizeof(Room),count,fproom);
fclose(fproom);

fpcustomer=fopen("customer","wb+");
fwrite((void*)&r,sizeof(Room),count,fpcustomer);
fclose(fpcustomer);
exit(0);

}
main()
{
fproom=fopen("room","wb");
if(fproom!=NULL)
{
for(i=0;i<count;i++)
{
intid=100;
r[i].m_num=i+100;
r[i].m_floor=1;
r[i].m_price=100;
r[i].m_use=1;
}
fwrite((void*)&r,sizeof(Room),count,fproom);
fclose(fproom);
}
else
{
printf(" ---文件打開失敗--");
}
for(;;)
{

printf(" ");
printf("/******************************************\ ");
printf("** ");
printf("*酒店管理系統* ");
printf("*主菜單* ");
printf("** ");
printf("*1.顧客登記* ");
printf("*2.查詢顧客信息* ");
printf("*3.查詢空房間* ");
printf("*4.預訂房間* ");
printf("*5.退訂房間* ");
printf("*6.保存並退出系統* ");
printf("** ");
printf("\******************************************/ ");
printf("請輸入選擇項(1-6):");
scanf("%d",&n);
printf(" ");
if(n>0&&n<=6)
{
switch(n)
{
case1:Customer_Input();break;
case2:Customer_ListOut();break;/*查詢顧客信息*/
case3:Room_ListOut();break;/*查詢空房間*/
case4:PerCustomer_Search();break;/*預訂房間*/
case5:UnCustomer_Out();break;/*退訂房間*/
case6:Customer_Goaway();/*保存退出*/
}
}
else
{
printf("*********************************************************************** ");
printf("** ");
printf("*輸入錯誤!* ");
printf("*請退出!* ");
printf("** ");
printf("*********************************************************************** ");
break;
}
}
}

❼ C語言編寫酒店管理系統

int CheckRoom(struct room *pr)
{char phonenu[4][12]={"110","119","120","122"};/*非法私人電話號碼*/
char type[3][2]={"2","t","T"};
int flag=1,i;
static int pass=1;

if(NULL==pr) {printf("Error:Null point! Can't check the datas:\n");return 0;}

printf("Start to part Maintain:about room\n");

while( strlen(pr->roomnu)>5 )/*檢查數據長度,防止保存二進制數據錯誤*/
{pr->roomnu[5]=0;
printf("ERROR:the roomnu: %s is longer than 5 bytes.\n",pr->roomnu);
printf("Please select another shorter roomnu:\n");
scanf("%s",pr->roomnu);
}

while( strlen(pr->cleaner)>19 )/*檢查數據長度,防止保存二進制數據錯誤*/
{pr->cleaner[19]=0;
printf("ERROR:the cleaner:%s is longer than 19 bytes.\n",pr->cleaner);
printf("Please select another shorter name:\n");
scanf("%s",pr->cleaner);
}

while(flag||strlen(pr->phonenu)>11)/*檢查數據內容(由flag控制)和長度,防止保存二進制數據錯誤*/
{
while( strlen(pr->phonenu)>11 )/*檢查長度*/
{pr->phonenu[11]=0;
printf("ERROR:the phonenu:%s is longer than 11 bytes.\n",pr->phonenu);
printf("Please select another shorter phonenu:\n");
scanf("%s",pr->phonenu);
}
while(flag)/*檢查內容*//*這個演算法也有問題,如果內容非法,但長度通過怎麼辦呢?*/
{for(i=0;flag&&i<4;i++)
if( 0==strcmp(pr->phonenu,phonenu[i]) )/*內容非法*/
{printf("ERROR:illegal phonenu:%s!\n",pr->phonenu);
flag=0;/*檢測到內容非法*/
}
if(flag) flag=0;/*內容檢查通過*/
else {flag=1;
printf("Please input a legal phonenu:\n");
scanf("%s",pr->phonenu);/*內容檢查未通過,重新收入*/
}
}
}

flag=1;
while(flag||strlen(pr->type)>1)/*檢查數據內容(由flag控制)和長度,此例和上例不同*/
{
while( strlen(pr->type)>1 )/*檢查長度*/
{pr->type[1]=0;
printf("ERROR:the type:%s is longer than 1 byte.\n",pr->type);
printf("Please select another shorter type:\n");
scanf("%s",pr->type);
}
while(flag)/*檢查內容*/
{if(strcmp(pr->type,type[0])&&strcmp(pr->type,type[1])&&strcmp(pr->type,type[2]) )/*內容非法*/
{printf("ERROR:illegal type:%s!\n",pr->type);
flag=0;/*檢測到內容非法*/
}

if(flag) flag=0;/*內容檢查通過*/
else {flag=1;
printf("Please input a legal type:\n");
scanf("%s",pr->type);/*內容檢查未通過,重新收入*/
}
}
}

while( pr->maximum<pr->currentclient )/*檢查數據間的聯系*/
{printf("ERROR:the room's capacity does not fit for the number of current clients.\n");
printf("Please alter the maximum:\n");
scanf("%d",&(pr->maximum));
}/*檢查房間最大容量和當前已住顧客人數是否相容,如果前者小於後者則寫入錯誤報告文件 */

printf("Congratulations: ROOM Check pass %d!\n",pass++);
return 1;
}

int CheckClient(struct client *pc)
{ int flag=1,i;
char sex[4][2]={"m","M","f","F"};
static int pass=1;

if(NULL==pc) {printf("Error:Null point! Can't check the datas:\n");return 0;}

printf("Start to part Maintain:about client\n");

while( strlen(pc->roomnu)>5 )/*檢查房間長度*/
{pc->roomnu[5]=0;
printf("ERROR:the roomnu: %s is longer than 5 bytes.\n",pc->roomnu);
printf("Please select another shorter roomnu:\n");
scanf("%s",pc->roomnu);
}

while( strlen(pc->identity_card)!=18 )/*檢查身份證號長度*/
{pc->identity_card[18]=0;
printf("ERROR:the identity_card:%s is not 18 bytes.\n",pc->identity_card);
printf("Please check the length and input it again:\n");
scanf("%s",pc->identity_card);
}

while(strlen(pc->name)>19)/*檢查姓名長度*/
{pc->name[19]=0;
printf("ERROR:the name:%s is longer than 19 bytes.\n",pc->name);
printf("Please select another shorter phonenu:\n");
scanf("%s",pc->name);
}

while(flag||strlen(pc->sex)>1)/*檢查性別內容(由flag控制)和長度*/
{
while( strlen(pc->sex)>1 )/*檢查長度*/
{pc->sex[1]=0;
printf("ERROR:the sex:%s is longer than 1 byte.\n",pc->sex);
printf("Please select another shorter sex:\n");
scanf("%s",pc->sex);
}
while(flag)/*檢查內容*/
{if(strcmp(pc->sex,sex[0])&&strcmp(pc->sex,sex[1])&&strcmp(pc->sex,sex[2])&&strcmp(pc->sex,sex[3]) )/*內容非法*/
{printf("ERROR:illegal sex:%s!\n",pc->sex);
flag=0;/*檢測到內容非法*/
}
if(flag) flag=0;/*內容檢查通過*/
else {flag=1;
printf("Please input a legal sex:\n");
scanf("%s",pc->sex);/*內容檢查未通過,重新收入*/
}
}
}

while( strlen(pc->date)!=8 )/*檢查日期長度*/
{pc->date[8]=0;
printf("ERROR:the date:%s is not 8 bytes.\n",pc->date);
printf("Please check the length and input it again:\n");
scanf("%s",pc->date);
}

while( strlen(pc->collect)>5 )/*檢查收款人長度*/
{pc->collect[5]=0;
printf("ERROR:the collect:%s is not 5 bytes.\n",pc->collect);
printf("Please check the length and input it again:\n");
scanf("%s",pc->collect);
}

while(pc->time<0)/*檢查入住天數*/
{printf("ERROR:illegal input of time: %f!\n",pc->time);
printf("Please check and input it again:\n");
scanf("%f",&pc->time);
}

while(pc->cost<0)/*檢查應繳費用*/
{printf("ERROR:illegal input of cost: %f!\n",pc->cost);
printf("Please check and input it again:\n");
scanf("%f",&pc->cost);
}

while(pc->fee<0)/*檢查實繳費用*/
{printf("ERROR:illegal input of cost: %f!\n",pc->fee);
printf("Please check and input it again:\n");
scanf("%f",&pc->fee);
}

if( pc->fee>pc->cost )/*檢查數據間的聯系,實繳費用應小於應繳用*/
{printf("It may be a error:fee=%f > cost=%f\n",pc->fee,pc->cost);
printf("Do you like to alter them?(1:YES;0:NO)\n");
scanf("%d",&flag);
while(flag)
{printf("Please input the values:cost and fee\n");
scanf("%f%f",&pc->cost,&pc->fee);
if(pc->fee>pc->cost)
{printf("Error again!!\n");flag=1;}
else flag=0;
}
}

printf("Congratulations: CLIENT Check pass %d!\n",pass++);
return 1;
}

int CheckAll(struct room *head_room)
{struct client *pc;
struct room *pr;

if(NULL==head_room) {printf("head_room=0\n");return 0;}

printf("Start to part Maintain:about room and client\n");

pr=head_room;
while(pr)
{CheckRoom(pr);
pc=pr->head;
while(pc)
{CheckClient(pc);
pc=pc->next;
}
pr=pr->next;
}

return 1;
}

/**該函數為內部數據維護,不提供輸入數據服務。實體完整性,參照完整性,用戶自定義完整性
出現錯誤則將錯誤輸出到doc文檔。
錯誤范圍暫時定義如下:
1.同一房間的客戶房間號不同(同房搜索!)

2.實繳費用大於應繳費用。(同房搜索!)

3.同一個客戶在同一天兩次住進賓館(全表搜索!身份證號和入住日期相同)

4.同一身份證號,姓名和性別不同(全表搜索!)

另外,應該完成的任務有:
5.計算客戶的應繳費用->對cost操作,需要用到:time,unit_price

6.計算客房的總住戶人數(包括當前住戶)->對totalclient操作,需要用到:沒有

7.重新修訂當前住戶數->對currentclient進行操作,需要用到:time

8.計算客房的總計收入->對income進行操作,需要用到:fee

9.當前住戶的實繳費用清零->對fee進行操作,需要用到:time

完成這些操作的先後順序為:7->6->5->9->8->2->1->3->4*/

int Consistency(struct room *head_room)
{struct room *pr,*tpr;
struct client *pc,*tpc;
char file[12]="error.doc";
int i=0;/*i用於錯誤計數*/
static int count=0;
FILE *fp;

if(NULL==head_room) {printf("head_room=0\n");return 0;}

printf("Start to part Maintain:Consistency!\n");

pr=head_room;
while(pr)
{pr->currentclient=0;
/*pr->totalclient=0;*/
pr->income=0;

pc=pr->head;
while(pc)
{if(!pc->time) pr->currentclient++;/*完成........7.....*/
/*pr->totalclient++;*/ /*完成........6.....*/
pc->cost=(pc->time)*(pr->unit_price); /*完成........5.....*/
if(!pc->time) pc->fee=0; /*完成........9.....*/
pr->income=pr->income+pc->fee; /*完成........8.....*/

pc=pc->next;
}

pr=pr->next;
}

if(NULL==( fp=fopen(file,"wt") ) )
{printf("Cannot open file:%s!\n",file);
return 0;
}

pr=head_room;
while(pr)
{pc=pr->head;
while(pc)
{if(pc->fee>pc->cost)
{fprintf(fp,"Error %d:fee=%f > cost=%f\n",++i,pc->fee,pc->cost);
fprintf(fp,"roomnu identity_card name sex date clt time cost fee\n");
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n\n",pc->roomnu,pc->identity_card,pc->name,pc->sex,pc->date,pc->collect,pc->time,pc->cost,pc->fee);
/*完成........2.....*/
}

if( strcmp(pr->roomnu,pc->roomnu) )
{fprintf(fp,"Error %d:the client's roomnu:%s != the room's roomnu:%s",++i,pc->roomnu,pr->roomnu);
fprintf(fp,"roomnu cleaner phonenu type max area price clientNO\n");
fprintf(fp,"%-6s %-16s %-12s %-4s %-3d %-6.1f %-6.1f %-2d\n",pr->roomnu,pr->cleaner,pr->phonenu,pr->type,pr->maximum,pr->area,pr->unit_price,pr->currentclient);
fprintf(fp,"roomnu identity_card name sex date clt time cost fee\n");
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n\n",pc->roomnu,pc->identity_card,pc->name,pc->sex,pc->date,pc->collect,pc->time,pc->cost,pc->fee);
/*完成........1.....*/
}
pc=pc->next;
}
pr=pr->next;
}

/*這個要全表搜索,搜索一次全表過掉一個客戶*/
pr=head_room;
while(pr)
{pc=pr->head;
while(pc)
{
if(pc->next)
{tpc=pc->next;
while(tpc)
{if(0==strcmp(pc->identity_card,tpc->identity_card) && 0==strcmp(pc->date,tpc->date) )
{fprintf(fp,"Error %d:the same client:%s lived in our hotel in the same day:%s\n",++i,pc->identity_card,pc->date);
fprintf(fp,"roomnu identity_card name sex date clt time cost fee\n");
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n",pc->roomnu,pc->identity_card,pc->name,pc->sex,pc->date,pc->collect,pc->time,pc->cost,pc->fee);
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n\n",tpc->roomnu,tpc->identity_card,tpc->name,tpc->sex,tpc->date,tpc->collect,tpc->time,tpc->cost,tpc->fee);
}/*完成........3.....*/

if(0==strcmp(pc->identity_card,tpc->identity_card) && (strcmp(pc->name,tpc->name)||strcmp(pc->sex,tpc->sex)) )
{fprintf(fp,"Error %d:the same client:%s have the different name or sex in our hotel.\n",++i,pc->identity_card);
fprintf(fp,"roomnu identity_card name sex date clt time cost fee\n");
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n",pc->roomnu,pc->identity_card,pc->name,pc->sex,pc->date,pc->collect,pc->time,pc->cost,pc->fee);
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n\n",tpc->roomnu,tpc->identity_card,tpc->name,tpc->sex,tpc->date,tpc->collect,tpc->time,tpc->cost,tpc->fee);
}/*完成........4.....*/
tpc=tpc->next;
}/*while(tpc) exit */

/*當前房間比較結束,進入下一個房間*/
tpr=pr->next;
while(tpr)
{tpc=tpr->head;
while(tpc)
{if(0==strcmp(pc->identity_card,tpc->identity_card) && 0==strcmp(pc->date,tpc->date) )
{fprintf(fp,"Error %d:the same client:%s lived in our hotel in the same day:%s\n",++i,pc->identity_card,pc->date);
fprintf(fp,"roomnu identity_card name sex date clt time cost fee\n");
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n",pc->roomnu,pc->identity_card,pc->name,pc->sex,pc->date,pc->collect,pc->time,pc->cost,pc->fee);
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n\n",tpc->roomnu,tpc->identity_card,tpc->name,tpc->sex,tpc->date,tpc->collect,tpc->time,tpc->cost,tpc->fee);
}/*完成........3.....*/

if(0==strcmp(pc->identity_card,tpc->identity_card) && (strcmp(pc->name,tpc->name)||strcmp(pc->sex,tpc->sex)) )
{fprintf(fp,"Error %d:the same client:%s have the different name or sex in our hotel.\n",++i,pc->identity_card);
fprintf(fp,"roomnu identity_card name sex date clt time cost fee\n");
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n",pc->roomnu,pc->identity_card,pc->name,pc->sex,pc->date,pc->collect,pc->time,pc->cost,pc->fee);
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n\n",tpc->roomnu,tpc->identity_card,tpc->name,tpc->sex,tpc->date,tpc->collect,tpc->time,tpc->cost,tpc->fee);
}/*完成........4.....*/
tpc=tpc->next;
}/*while(tpc) exit */
tpr=tpr->next;
}/*while(tpr) exit */
}

else/*當前客戶下一節點為空的情況搜索*/
{tpr=pr->next;
while(tpr)
{tpc=tpr->head;
while(tpc)
{if(0==strcmp(pc->identity_card,tpc->identity_card) && 0==strcmp(pc->date,tpc->date) )
{fprintf(fp,"Error %d:the same client:%s lived in our hotel in the same day:%s\n",++i,pc->identity_card,pc->date);
fprintf(fp,"roomnu identity_card name sex date clt time cost fee\n");
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n",pc->roomnu,pc->identity_card,pc->name,pc->sex,pc->date,pc->collect,pc->time,pc->cost,pc->fee);
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n\n",tpc->roomnu,tpc->identity_card,tpc->name,tpc->sex,tpc->date,tpc->collect,tpc->time,tpc->cost,tpc->fee);
}/*完成........3.....*/

if(0==strcmp(pc->identity_card,tpc->identity_card) && (strcmp(pc->name,tpc->name)||strcmp(pc->sex,tpc->sex)) )
{fprintf(fp,"Error %d:the same client:%s have the different name or sex in our hotel.\n",++i,pc->identity_card);
fprintf(fp,"roomnu identity_card name sex date clt time cost fee\n");
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n",pc->roomnu,pc->identity_card,pc->name,pc->sex,pc->date,pc->collect,pc->time,pc->cost,pc->fee);
fprintf(fp,"%-6s %-18s %-15s %-3s %-8s %-3s %-4.1f %-5.1f %-5.1f\n\n",tpc->roomnu,tpc->identity_card,tpc->name,tpc->sex,tpc->date,tpc->collect,tpc->time,tpc->cost,tpc->fee);
}/*完成........4.....*/
tpc=tpc->next;
}/*while(tpc) exit */
tpr=tpr->next;
}/*while(tpr) exit */
}

pc=pc->next;/*搜索一次全表過掉一個客戶*/
}/*while(pc) exit */
pr=pr->next;
}/*while(pr) exit */

printf("Maintain NO. %d\n",++count);
fclose(fp);
return 1;
}

int ToDate(char *date,int year,int month,int day)/*將年月日轉換為字元串*/
{int i,j;
char temp[9];

for(i=3;i>-1;i--)
{j=year%10;
temp[i]=j+'0';
year=year/10;
}

for(i=1;i>-1;i--)
{j=month%10;
temp[4+i]=j+'0';
month=month/10;
}

for(i=1;i>-1;i--)
{j=day%10;
temp[6+i]=j+'0';
day=day/10;
}

temp[8]=0;

strcpy(date,temp);

return 1;
}

int Account(struct room *head_room)
{struct room *pr;
struct client *pc;
char temp[20],date[9],name[6];
float cost,fee;
int time,year,month,day;
int flag=1;
clr();

if(NULL==head_room) {printf("head_room=0\n");getch();clr();return 0;}

printf("Please input CLIENT ID(18bytes)!\n");/*mode=1表示根據身份證號查找特定客戶*/
scanf("%s",temp);
while(strlen(temp)!=18)
{printf("Error:the client(ID=%s) is not 18 bytes!",temp);
printf("Please check and input CLIENT ID(18bytes),again!\n");/*mode=1表示根據身份證號查找特定客戶*/
scanf("%s",temp);
}

/*查找客戶*/
pr=head_room;
flag=1;
while(flag&&pr)
{pc=pr->head;
while(flag&&pc)
{if( !strcmp(pc->identity_card,temp)&&!pc->time)
{printf("roomnu identity_card name sex date clt time cost fee\n");
PrintClient(pc);
flag=0;
}
if(flag) pc=pc->next;
}
pr=pr->next;
}

if(NULL==pc) {printf("Error:the client(ID=%s) does not exist in out hotel!\n",temp);getch();clr();return 0;}
/*獲取日期*/
year =GetTime(0,1);
month=GetTime(0,2);
day =GetTime(0,3);

ToDate(date,year,month,day);

time=CountDays(pc->date,date);
cost=time*pr->unit_price;

printf("The client ID=%s who have lived %d days should pay %6.1f $!\n",temp,time,cost);
printf("Please input how much you get from him and your name!\n");
printf("The money is:");
scanf("%f",&fee);
printf("Your name(collect) is:");
scanf("%s",name);

while(strlen(name)>5)
{printf("Error:the name=%s is longer than 5 bytes!",name);
printf("Please check and input ,again!\n");/*mode=1表示根據身份證號查找特定客戶*/
scanf("%s",name);
}

pc->fee=fee;
pc->cost=cost;
pc->time=time;
strcpy(pc->collect,name);

printf("Account end! Thank you!\n");
return 1;
}

熱點內容
linux修改遠程埠 發布:2024-11-26 22:35:53 瀏覽:981
卡通農場伺服器怎麼連不上 發布:2024-11-26 22:26:54 瀏覽:194
馬嘉祺密碼1的答案是什麼 發布:2024-11-26 22:19:16 瀏覽:954
linux常用命令vi 發布:2024-11-26 22:17:40 瀏覽:4
sqlserver教材 發布:2024-11-26 22:07:21 瀏覽:632
安卓p圖工具哪個好 發布:2024-11-26 22:02:25 瀏覽:320
稅控盤密碼在哪裡改 發布:2024-11-26 21:55:54 瀏覽:611
美版安卓系統為什麼連不了網 發布:2024-11-26 21:51:36 瀏覽:613
用公司伺服器搭建網站 發布:2024-11-26 21:42:00 瀏覽:357
忘記密碼魅族手機如何清除數據 發布:2024-11-26 21:34:17 瀏覽:156