#include<string.h>  
  #include<stdlib.h>   
  #include<stdio.h>   
  #include<conio.h>   
  #include<iostream.h>
  #include <fstream.h>
 
//====================定义Customer结构体========================  
  struct   Customer{   
            char  Name[20];   
            char   Sex;   
            int   Age;   
            char  ID_card[20]; 
            int  Num; 
  }Cus[15];  //=========================Hotel结构体===========================
  struct   Hotel{   
  int   Room_ID;
  int   Price;   
  int   Sign;  //标记房间是否为空房间;    
  }Room[15];  
  void   Menu();
  void   Read_file1();
  void   Write_file1();    
  //void   Delete_room();   
  void   Add_new_customer(); 
  void   Room_Book();
  void   Query_Room_ID();   
  void   Query_room_empty();   
  void   Initialize_room_ID();    //===========================这里是读客房文件===================
  void  Read_file1()   
  {     
ifstream myfile2("room.txt",ios::in);
for(int i=0;i<15;i++)
{
myfile2.read((char*)(&Room[i]),sizeof(Room[i]));
cout<<Room[i].Room_ID<<" "<<Room[i].Price<<" "<<Room[i].Sign<<endl;
}
myfile2.close();
  }
  
 //========================这里是初始化房间信息======================
 void   Initialize_room_ID()   
  {   
  int  ID=100;
  for(int i=0;i<15;i++)
  {     
  Room[i].Room_ID=ID+i;   
  Room[i].Price=100;   
  Room[i].Sign=1;    
  }   
  }
  
  //===============================这里是写文件===========================
  void   Write_file1()   
  {     
        ofstream myfile("room.txt",ios::out);
// Initialize_room_ID(); 这句不要的,不然每次写文件,房间状态又被初始化了 for(int i=0;i<15;i++)
{
      myfile.write((char *)&Room,sizeof(Room));
}
     myfile.close();

 
//*******************************顾客登记入住******************************************  
  void   Add_new_customer()   
  {  
          ofstream myfile1("room.txt",ios::out);
  ofstream myfile2("customer.txt",ios::out);
 cout<<"\n 您可以住在:"<<endl;
    int i;
    for(i=0;i<15;i++)
{
       if(Room[i].Sign==1)
   {    
          cout<<Room[i].Room_ID<<endl;
   }
}
  cout<<"\n 请输入您住的房间号:"<<endl;
  cin>>Room[i].Room_ID;
  Room[i].Sign==0;
  myfile1.write((char *)(&Room[i]),sizeof(Room));
  myfile1.close();
  cout<<"\n 请输入您的身份证号:"<<endl; 
  cin>>Cus[i].ID_card; 
  cout<<"\n "<<endl; 
  cout<<"\n 请输入您的姓名:"<<endl;  
  cin>>Cus[i].Name;  
  cout<<"\n "<<endl;  
  cout<<"\n 请输入性别(0->男;1->女):"<<endl;    
  cin>>Cus[i].Sex;   
  cout<<"\n "<<endl; 
  cout<<"\n 请输入您的年龄:"<<endl;    
  cin>>Cus[i].Age; 
  cout<<"\n "<<endl; 
  cout<<"\n 请确认您住的房间号:"<<endl;
  cin>>Cus[i].Num;
  cout<<"\n "<<endl;
  myfile2.write((char *)(&Cus[i]),sizeof(Cus));
  myfile2.close();
  cout<<"\n 登记成功! "<<endl; 
  } //**************************查询顾客信息函数********************************   
  void   Query_Room_ID()
  {       int   room_id;
      ifstream myfile1("room.txt",ios::in);
          ifstream myfile2("customer.txt",ios::in);   
          cout<<"\n  请输入房间号:  "<<endl;
          cin>>room_id;
  for(int i=0;i<15;i++)
  {
          if(Room[i].Room_ID==room_id&&Room[i].Sign==1)
  {  
  myfile1.read((char *)(&Room[i]),sizeof(Room));
  cout<<Room[i].Room_ID<<endl;
  myfile2.read((char *)(&Cus[i]),sizeof(Cus));
  cout<<Cus[i].Name<<" "<<Cus[i].Sex<<" "<<Cus[i].ID_card<<" "<<Cus[i].Num<<endl;
  }
  }
         myfile2.close();
 myfile1.close();
 Menu();
  }//*******************查询空房间****************************************
void Query_room_empty()
{
   ifstream myfile1("room.txt",ios::in);
   cout<<"\n 以下是为您查询到的空房间:"<<endl; 
   for(int i=0;i<15;i++)
  { 
     if(Room[i].Sign==1)
 {
 myfile1.read((char *)(&Room[i]),sizeof(Room));
     cout<< Room[i].Room_ID<<endl; 
 } 
  }
  myfile1.close();
}//**************实现顾客订房********************************
void Room_Book()
{
  ofstream myfile1("room.txt",ios::out);
  ofstream myfile2("customer.txt",ios::out);
  cout<<"\n 您可以住在:"<<endl;
  for(int i=0;i<15;i++)
{
       if(Room[i].Sign==1)
   {              cout<<Room[i].Room_ID<<endl;
   }
}
  cout<<"\n 请输入您预订的房间号:"<<endl; 
  cin>>Room[i].Room_ID;  
  Room[i].Sign=0;
  myfile1.write((char *)(&Room[i]),sizeof(Room));
  myfile1.close();
  cout<<"\n 请输入您本人的相关信息:"<<endl;  
  cout<<"\n 请输入您的姓名:"<<endl;  
  cin>>Cus[i].Name;  
  cout<<"\n "<<endl;  
  cout<<"\n 请输入性别(0->男;1->女)"<<endl;    
  cin>>Cus[i].Sex;   
  cout<<"\n "<<endl; 
  cout<<" 请输入您的年龄:"<<endl;   
  cin>>Cus[i].Age; 
  cout<<"\n "<<endl;
  cout<<"\n 请输入您的身份证号:"<<endl; 
  cin>>Cus[i].ID_card;
  cout<<"\n "<<endl;
  cout<<"\n 请确认您住的房间号:"<<endl;
  cin>>Cus[i].Num;
  myfile2.write((char *)(&Cus[i]),sizeof(Cus));
  myfile2.close();  
  cout<<"\n 预订房间成功! "<<endl;
}
/*//***********************实现退房间函数***************************  
  void   Delete_room()   
  {  
          char   *name;   
          cout<<"\n 请输入您的姓名: "<<endl;  
          cin>>name;   
          for(int i=0;i<15;i++)
  {   
          if(Room[i].Customer_list.Name==name) 
  {
          Room[i].Sign=false;
  cout<<"\n 退订成功! "<<endl;
  }
  else
  {
  cout<<"\n 顾客不存在!"<<endl;
  }
  }
  }
*/
//================================ 这里是主函数=======================================
  void Menu()
  {
  
  }
  void  main()   
  {   
  Initialize_room_ID();
 // Write_file1();
  Read_file1();
  while(1){
int   s1;   
cout<<"\n *********************欢迎进入客房管理信息系统*********************************"<<endl;   cout<<"\n                           1、登记入住                         "<<endl;
cout<<"\n                           2、顾客信息查询                       "<<endl;
cout<<"\n                           3、查询空房间                       "<<endl;
cout<<"\n                           4、预订房间                       "<<endl;
//cout<<"\n                           5、退订房间                        "<<endl;
cout<<"\n                           0、退出                         "<<endl;
cout<<"\n                           6、读文件                        "<<endl;
cout<<"\n ******************************************************************************"<<endl;  
cin>>s1;     
switch(s1)   
{   
case 1:   Add_new_customer();break;   
case 2:   Query_Room_ID();break; 
case 3:   Query_room_empty();break;
case 4:   Room_Book();break;   
//case 5:   Delete_room();Menu();break;
case 6:   Read_file1();break;
case 0:   Write_file1(); exit(0);break;   
default:  cout<<"\n 请按任意键继续"<<endl;
}    }
  }