⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 管理系统.txt

📁 一个多文件的hotel管理系统
💻 TXT
📖 第 1 页 / 共 2 页
字号:
  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 + -