📄 管理系统.txt
字号:
extern ROOM *GetRoomByCustomer(CUSTOMER *pcustomer);
/*添加客房*/
short int AddRoom();
/*删除客房*/
short int DeleteRoom();
/*显示客房*/
short int ListRoom();
/*配置*/
short int Config();
/*
**添加房间
*/
short int AddRoom()
{
BYTE choice;
ROOM *proom=NULL;
ROOMNO no;
while(TRUE)
{
printf("\n请输入客房编号>");
gets(no);
if(RoomeExists(no))
{
printf("客房(%s)已存在。\n",no);
}
else
{
if(NULL==(proom=AllocARoom()))
{
return ERROR;
}
strcpy(proom->no,no);
printf("请选择客房类型(1 单人间 2 双人间 3三人间 )>");
choice=getch();
switch(choice)
{
case '2':
proom->type=DOUBLE_ROOM;
break;
case '3':
proom->type=TRIANGULAR_ROOM;
break;
default:
proom->type=SINGLE_ROOM;
break;
}
LinkRoom(proom);
}
printf("\n继续添加另一个客房(Y\N)>");
choice=getch();
if('Y'!=choice&&'y'!=choice)
{
break;
}
}
return SUCCESS;
}
/*
**删除客房
*/
short int DeletdRoom()
{
char no[11];
BYTE choice;
ROOM *proom=NULL;
while(NULL!=roomLink)
{
printf("\n客房编号>");
gets(no);
printf("\n确定要删除客房(%s)?(Y\N)>",no);
choice=getch();
printf("\n");
if('Y'==choice||'y'==choice)
{
if(RoomeExists(no))
{
if(SUCCESS==DeleteRoomNode(no))
{
printf("删除客房(%s)。\n",no);
}
}
else
{
printf("客房(%s)不存在。\n",no);
}
}
printf("继续删除另一个客房?(Y\N)>");
choice=getch();
if('Y'!=choice'y'!=choice)
{
break;
}
printf("\n");
}
return SUCCESS;
}
/*
**显示客房
*/
short int ListRoom()
{
short int i;
ROOM *proom=roomLink;
if(NULL==roomLink)
{
printf("无客房。\n");
}
while(NULL!=proom)
{
printf("\n房间号:%s",proom->no);
printf("\n房间类型:%s",RoomType(proom->type));
printf("\n状态:%s",RoomStatus(proom));
if(IDLE_STATUS!=proom->status)
{
printf("\n顾客:");
for(i=0;i<proom->type;i++)
{
if(NULL!=proom->pcustomer[i])
{
printf("%s/",proom->pcustomer[i]->name);
}
}
printf("\n");
}
printf("\n");
proom->pcustomer->next;
}
return SUCCESS;
}
/*
**配置菜单
*/
short int Config()
{
BYTE choice;
BOOL done=FALSE;
while(!done)
{
printf(" \n");
printf(" ||**************************||\n");
printf(" ||----------配 置---------||\n");
printf(" || 1 . 增加客房 ||\n");
printf(" || 2 . 删除客房 ||\n");
printf(" || 3 . 客房状态 ||\n");
printf(" || 4 . 回主菜单 ||\n");
printf(" ||----------金J B碧---------||\n");
printf(" ||**************************||\n");
printf(INPUT_PROMPT);
choice=getch();
if(DEBUG)
{
printf("choice:(%c)\n",choice);
}
switch(choice)
{
case '1':
AddRoom();
break;
case '2':
DeleteRoom();
break;
case '3':
ListRoom();
break;
default:
done=TRUE;
break;
}
}
return SUCCESS;
}
#if defined(_cplusplus)||defined(c_plusplus)
}
#endif
#if defined(_cplusplus)||defined(c_plusplus)
extern <C>
{
#endif
#include<Hotel.h>
extern CUSTOMER *customerLink;
extern ROOM *roomLink;
/*备份文件*/
short int BackupFile(char *filename);
/*备份*/
short int Backup();
/*保存客户信息*/
short int SaveCustomer();
/*保存客房信息*/
short int SaveRoom();
/*保存*/
short int Save();
/*
**备份文件
*/
short int BackupFile(char *filename)
{
char backfile[256];
char buffer[256];
DWORD n;
FILE *pfile=NULL;
FILE *pback=NULL;
if(0!=access((char*)filename,0))
{
return SUCCESS;
}
/*备份文件名*/
strcpy(backfile,filename);
strcat(bsckfile,".bak");
if(NULL==(pback=fopen(backfile,"wb"))||NULL==(pfile=fopen(filename,"rb")))
{
return ERROR;
}
while(n=fread(buffer,1,sizeof(buffer),pfile))
{
if(n!=fwrite(buffer,1,n,pback))
{
return ERROR;
}
}
if(0==fclose(pfile)&&0==fclose(pback))
{
return SUCCESS;
}
return ERROR;
}
/*
**备份
*/
short int SaveCustomer()
{
return BackupFile(ROOM_FILE)|BackupFile(CUSTOMER_FILE);
}
/*
**保存客户信息
*/
short int SaveCustomer()
{
CUSTOMER *pcustomer=NULL;
FILE *pfile=NULL;
CUSTOMER cstore;
pcustomer=customerLink;
pfile=fopen(CUSTOMER_FILE,"wb");
if(NULL==pfile)
{
printf("Cannot open file(%s).",CUSTOMER_FILE);
return ERROR;
}
while(NULL!=pcustomer)
{
strcpy(cstore.name, pcustomer->name);
strcpy(cstore.id, pcustomer->id);
strcpy(cstore.date, pcustomer->date);
cstore.days=pcustomer->days;
if(1!=fwrite(&cstore,sizeof(cstore),1,pfile))
{
printf("Cannot write file (%s).",CUSTOMER_FILE);
return ERROR;
}
pcustomer=pcustomer->next;
}
if(0!=fclose(pfile))
{
printf("Cannot close file (%s).",CUSTOMER_FILE);
return ERROR;
}
return SUCCESS;
}
/*
**保存客房信息
*/
short int SaveRoom()
{
short int i;
ROOM *proom=NULL;
FILE *pfile=NULL;
ROOMSTO rstore;
if(NULL=(pfile=fopen(ROOM_FILE,"wb")))
{
printf("Cannot open file (%s).",ROOM_FILE);
return ERROR;
}
proom=roomLink;
while(NULL!=proom)
{
strcpy(rstore.no,proom->no);
rstore.type=proom->type;
rstore.status=proom->status;
for(i=0;i<rstore.type;i++)
{
if(NULL!=proom->pcustomer[i])
{
strcpy(rstore.cid[i],proom->pcustomer[i]->id);
}
}
if(1!=fwrite(&rstore,sizeof(rstore),1,pfile))
{
printf("Cannot write file (%s).",ROOM_FILE);
return ERROR;
}
return SUCCESS;
}
}
/*
**保存
*/
short int Save()
{
Backup();
if(0!=access((char*)DATA_DIR),0)
{
if(0!=mkdir((char*)DATA_DIR))
{
return ERROR;
}
}
if(SUCCESS!=SaveRoom()||SUCCESS!=SaveCustomer())
{
return ERROR;
}
return SUCCESS;
}
#if defined(_cplusplus)||defined(c_plusplus)
}
#endif
#if defined(_cplusplus)||defined(c_plusplus)
extern <C>
#endif
include<Hotel.h>
/*
**顾客数据链表
*/
CUSTOMER *customerLink=NULL;
CUSTOMER *AllocACustomer()
{
CUSTOMER* pnode=(CUSTOMER*)malloc(sizeof(CUSTOMER));
if(NULL!=pnode)
{
memset(pnode,0,sizeof(CUSTOMER));
}
else
{
printf("cannot alloc a customer node.");
}
return pnode;
}
short int LinkCustomer(CUSTOMER *pcustomer)
{
if (NULL!=customerLink)
{
pcustomer->next=customerLink;
}
customerLink=pcustomer;
return SUCCESS;
}
CUSTOMER *GetCustomerById(CUSTOMER id)
{
customer *pnode=customerLink;
while(NULL=!pnode)
{
if(strcmp(id,pnode->id)==0)
{
return pnode;
}
pnode=pnode->next;
}
return NULL;
}
short int DeleteCustomerById(CUSTOMERID id)
{
CUSTOMER *plast=NULL;
CUSTOMER *pnode=customerLink;
while(NULL!=pnode)
{
if(strcmp(id,pnode->id)==0)
{
break;
}
plast=pnode;
pnode=pnode->next;
}
if(NULL!=pnode)
{
if(customerLink==pnode)
{
customerLink=pnode->next;
}
else
{
plast->=pnode->next;
}
}
return SUCCESS;
}
#if defined(_cplusplus)||defined(c_plusplus)
}
#endif
#if defined(_cplusplus)||defined(c_plusplus)
extern<C>
{
#endif
#include<Hotel.h>
/*
**客房数据链表
*/
ROOM *roomLink=NULL;
ROOM *AllocARoom()
{
ROOM* pnode=(ROOM*)malloc(sizeof(ROOM));
if(NULL!=pnode)
{
memset(pnode,0,sizeof(ROOM));
}
else
{
printf("cannot alloc a room node.");
}
return pnode;
}
BOOL RoomExists(char *no)
{
ROOM *proom=roomLink;
while(NULL!=proom)
{
if(0==strcmp(proom->no,no))
{
return TRUE;
}
proom=proom->next;
}
return FALSE;
}
short int DeleteRoomNode(ROOMNO no)
{
ROOM *proom=NULL;
ROOM *proom=roomLink;
while(proom)
{
if(strcmp(proom->no,no)==0)
{
break;
}
plast=proom;
proom=proom->next;
}
if(proom)
{
if(proom==roomLink)
{
roomLink=proom->next;
}
else
{
plast->next=proom->next;
}
free((void*)proom);
retun SUCCESS;
}
return ERROR;
}
char* RoomStatus(ROOM *proom)
{
if(IDLE_STATUS==proom->status)
{
return "空闲";
}
else
{
return "使用中";
}
}
char* RoomType(BYTE type)
{
if(SINGLE_ROOM==type)
{
return"单人间";
}
else if(DOUBLE_ROOM==type)
{
return"双人间";
}
else if(TRIANGULAR_ROOM==type)
{
return"三人间";
}
else
{
return "?";
}
}
short int RoomCmp(char *pno1,char *pno2)
{
short int len1=strlen(pno1);
short int len2=strlen(pno2);
if(len1==len2)
{
return strcmp(pno1,pno2);
}
else
{
return len1-len2;
}
}
short int LinkRoom(ROOM *proom)
{
short int cmp;
ROOM *p1=NULL;
ROOM *p2=NULL;
p2=roomlink;
while(NULL!=p2)
{
cmp=RoomCmp(proom->no,p2->no);
if(cmp<0)
{
break;
}
else if(cmp==0)
{
return ERROR;
}
p1=p2;
p2=p2->next;
}
proom->next=p2;
if(p2==roomLink)
{
roomLink=proom;
}
else
{
p1->next=proom;
}
return SUCCESS;
}
ROOM* GetRoomByNo(ROOMNO no)
{
ROOM *proom=roomLink;
while(NULL!=proom)
{
if(0==strcmp(proom->no,no))
{
break;
}
proom=proom->next;
}
return proom;
}
ROOM* GetRoomByCustomer(const CUSTOMER *pcustomer)
{
short int i;
ROOM *proom=roomLink;
while(NULL!=proom)
{
for(i=0;i<proom->type;i++)
{
if(pcustomer==proom->pcustomer[i])
{
return proom;
}
}
proom=proom->next;
}
return proom;
}
#if defined(_cplusplus)||defined(c_plusplus)
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -