C++課程設計小區物業管理系統

#include
#include<string>
#include<fstream>
#include<stdlib.h>
#include<iomanip>


using namespace std;


class livers//livers類
{ private:
     char name[20]; //姓名
char sex;
char room_num[10];
char parking[10];
     char ID_num[20];
char phone_num[20];


  public:
livers(){}
     livers(char n[20],char s,char room[10],char park[10],char phone[20],char ID[20])
     {strcpy(name,n);
sex=s;
strcpy(room_num,room);
     strcpy(parking,park);
strcpy(phone_num,phone);
strcpy(ID_num,ID);}


   friend void menu();//友元函數
};




void key()
{char mima[20],key[20];char yu_mima[20]="12345";
 int flag;int p;char w;
 ifstream in;
 ofstream out;
 fstream f;  //輸入輸出對象





 cout<<"      ******************************************"<<endl; 
 cout<<"               歡迎登錄小區物業管理系統         "<<endl;
 cout<<"      ******************************************"<<endl<<endl;
 
do{flag=0;
 
   cout<<"      請輸入管理員密鑰:"<<endl;


   in.clear();
   in.open("E:\\c.dat",ios::in);


   if(in.fail())   //首次登錄
   {cout<<endl<<"      歡迎首次登錄,您的預設密碼爲 12345:"<<endl<<endl;
   cout<<"      請輸入:";
   cin>>mima;
   cout<<endl;
   if(strcmp(yu_mima,mima)==0)
   {flag=1;
   cout<<"      密碼正確!請輸入下一步指令:"<<endl<<endl;}}


  if(!in.fail())  //非首次登陸
  {in>>key;
  cin>>mima;
  if(strcmp(key,mima)==0)
  {flag=1;
  cout<<"      密碼正確!請輸入下一步指令:"<<endl<<endl;}
  }


  in.close();


  if(flag==0)
  cout<<"      密碼有誤,請重新輸入"<<endl<<endl;
}while(flag==0);










 cout<<"              *************************"<<endl;
 cout<<"              *     0、修改密碼       *"<<endl;
 cout<<"              *     1、進入系統       *"<<endl;
 cout<<"              *     2、退出系統      *"<<endl;
 cout<<"              *************************"<<endl<<endl;
 do{




 do
 {cout<<"     請輸入您的指令(0~2):"<<endl;
  cin>>p;
    
switch(p)
{


 case 0:    //修改密碼
{cout<<"     請輸入新密碼:"<<endl;
cin>>key;
out.open("E:\\c.dat",ios::out);
out.clear();
out<<key;
out.close();}break;


 case 1: menu();break;//進入系統
 case 2:    //退出系統
{cout<<"     謝謝使用,小區物業管理系統!   "<<endl<<endl<<"     Bye-bye!     See you next time!"<<endl<<endl;
exit(0);}break;
default : cout<<"     輸入指令有誤,請重新輸入:"<<endl<<endl;break;
}
}while(p<0||p>2);


 cout<<"    您想繼續進行其他操作嗎?  y / n  :"<<endl<<" ";
 
 do{cin>>w;
 cout<<endl;
 if(w=='n')exit(0);
 if(w!='y'&&w!='n')
   cout<<"  指令錯誤!請重新輸入!"<<endl;
}while(flag==0);




if(w=='y')
{cout<<"     請輸入操作代碼: 0 修改密碼"<<endl;
cout<<"                     1 進入系統"<<endl;
cout<<"                     2 退出系統"<<endl;}


}while(w=='y');
}   //密鑰函數








void menu()
{cout<<"      ******************************************"<<endl; 
 cout<<"                   小區物業管理系統             "<<endl;
 cout<<"      ******************************************"<<endl;
 cout<<"              **************************"<<endl;
 cout<<"              *   主菜單命令如下所示: *"<<endl;
 cout<<"              *     1、輸入數據        *"<<endl;
 cout<<"              *     2、增加數據        *"<<endl;
 cout<<"              *     3、修改數據       *"<<endl;
 cout<<"              *     4、信息查詢        *"<<endl;
 cout<<"              *     5、信息瀏覽        *"<<endl;
 cout<<"              *     6、信息刪除        *"<<endl;
 cout<<"              *     7、退出系統        *"<<endl;
 cout<<"              **************************"<<endl;
 
 cout<<"               請輸入您的指令數字(1~7)"<<endl<<"  ";
 char p;char w;
 livers liv[50];
 livers  *s[50];
 ifstream in;
 ofstream out;
 fstream f;  //輸入輸出對象
 int i=0;
 int j=0;
 int flag=0;
 


 do                     //flag判斷輸入是否有效
 {
  cin>>p;
  if(p>='1'&&p<='7')
   flag=1;
  else
   cout<<"  指令錯誤!請重新輸入:"<<endl;
 }while(flag==0);






 do{//最外層循環




switch(p) //接收功能選項
{


case '1':  //信息輸入


{char name[20],sex,room_num[10],parking[10],phone_num[20],ID_num[20],c;
     out.open("E:\\a.dat",ios::out);
 
do{
     cout<<"  請輸入住戶姓名:";
     cin>>name;
     cout<<endl<<"  請輸入住戶性別:";
     cin>>sex;
cout<<endl<<"  請輸入其房間號:";
     cin>>room_num;
     cout<<endl<<"  請輸入其車庫號:";
     cin>>parking;
     cout<<endl<<"  請輸入聯繫電話:";
     cin>>phone_num;
     cout<<endl<<"  請輸入身份證號:";
     cin>>ID_num;
     cout<<endl;


out<<setw(2)<<name<<setw(5)<<sex<<setw(10)<<room_num<<setw(10)<<parking<<setw(20)<<phone_num<<setw(20)<<ID_num;   //文件輸入


     cout<<"  數據輸入成功,想繼續輸入嗎?   y / n  : "<<endl<<" ";
     cin>>c;
     cout<<endl;
do
     {
      if(c!='y'&&c!='n')
 {cout<<"  指令錯誤!請重新輸入!"<<endl<<"     ";
       char c;
       cin>>c;}
      else flag=1;
     }while(flag==0);
}while(c=='y');
     out.close();
    break;
}




  
case '2':       //增加數據
    {char name[20],sex,room_num[10],parking[10],phone_num[20],ID_num[20],c;


    out.open("E:\\a.dat",ios::app);
    do
    {
     cout<<"請輸入您要增加的住戶的姓名:"<<endl<<endl;
     cout<<"  請輸入住戶姓名:";
     cin>>name;
     cout<<endl<<"  請輸入住戶性別:";
     cin>>sex;
cout<<endl<<"  請輸入其房間號:";
     cin>>room_num;
     cout<<endl<<"  請輸入其車庫號:";
     cin>>parking;
     cout<<endl<<"  請輸入聯繫電話:";
     cin>>phone_num;
     cout<<endl<<"  請輸入身份證號:";
     cin>>ID_num;
     cout<<endl;


     out<<setw(2)<<name<<setw(5)<<sex<<setw(10)<<room_num<<setw(10)<<parking<<setw(20)<<phone_num<<setw(20)<<ID_num;   //文件輸入


     cout<<"  數據添加成功,想繼續添加嗎?  y / n  :"<<endl;
     cin>>c;
     cout<<endl;
if(c=='n')break;
     if(c!='y'&&c!='n')
     {cout<<"  指令錯誤!請重新輸入!"<<endl<<"     ";
      cin>>c;}
     


    }while(c=='y');
    out.close();
    break;
   }




 
case '3':                   //修改數據
{char name[20],sex,room_num[10],parking[10],phone_num[20],ID_num[20],c;
char na[20],s,room[10],park[10],phone[20],ID[20];
   
    do
    {int flag=0;
     cout<<"  請輸入您要修改的住戶的姓名:"<<endl;
     cin>>na;
     cout<<endl;


f.open("E:\\a.dat",ios::in|ios::out);
     f.seekg(0,ios::beg);
f.clear();


 while(!f.eof())
 {f>>name;
       if(strcmp(name,na)==0)
  {flag=1;
       cout<<"  請輸入新房間號:";
       cin>>room;
       cout<<endl<<"  請輸入住戶性別:";
       cin>>s;
  cout<<endl<<"  請輸入其房間號:";
       cin>>room;
       cout<<endl<<"  請輸入其車庫號:";
       cin>>park;
       cout<<endl<<"  請輸入聯繫電話:";
       cin>>phone;
       cout<<endl<<"  請輸入身份證號:";
       cin>>ID;
       cout<<endl;
       


  sex=s;
  strcpy(room_num,room);
       strcpy(parking,park);
  strcpy(ID_num,ID);
  strcpy(phone_num,phone);


       f.seekp(0,ios::cur);
       f<<setw(5)<<s<<setw(10)<<room<<setw(10)<<park<<setw(20)<<phone<<setw(20)<<ID;   //文件輸入


  cout<<"  修改成功!  "<<endl<<endl;break;}
 }


 f.close();
   
     if(flag==0)
     cout<<"  您要修改的學生不存在!"<<endl<<endl;

     cout<<"  您想繼續修改嗎? y / n   :"<<endl;
cin>>c;
     cout<<endl;
     if(c=='n')break;
     if(c!='y'&&c!='n')
     {cout<<"  指令錯誤!請重新輸入!"<<endl<<"     ";
     cin>>c;}


}while(c=='y');
    break;
}


 
  
case '4':                  //信息查詢
{char name[20],sex,room_num[10],room[10],parking[10],phone_num[20],ID_num[20];


 cout<<"  請選擇您要進行查詢的方式:"<<endl<<endl<<"  1.按住戶名查詢"<<endl<<endl<<"  2.按房間號查詢"<<endl<<endl;
      int k; 
 cin>>k;
   switch(k)


      case 1:   //按住戶名查詢


   {char na[20];char c;
    
    do{
        in.open("E:\\a.dat",ios::in);
   in.seekg(0,ios::beg);
   in.clear();
        int flag=0;


        cout<<"  請輸入你要查詢的住戶姓名:"<<endl;
        cin>>na;
        cout<<endl;
        
   while(!in.eof())
{in>>name>>sex>>room_num>>parking>>phone_num>>ID_num;
        if(strcmp(name,na)==0)
        {flag=1;
        cout<<"  您要查詢的住戶:"<<name<<" 的信息是: "<<endl<<endl;
         cout<<"姓名   性別   房間號     車庫號            電話號碼               身份證號    "<<endl;
cout<<setw(2)<<name<<setw(5)<<sex<<setw(10)<<room_num<<setw(10)<<parking<<setw(20)<<phone_num<<setw(20)<<ID_num<<endl;}
}
        in.close();
     
 
 if(flag==0)
      cout<<"  對不起!您要查詢的住戶不存在!"<<endl<<endl;
      cout<<"  您想繼續查詢嗎? y / n  :";
      cin>>c;
      cout<<endl;
      if(c=='n')break;
      if(c!='y'&&c!='n')
      {cout<<"  指令錯誤!請重新輸入!"<<endl;
      cin>>c;}
    
}while(c=='y');
break;




      case 2 :   //按房間號查詢


{
     do{
        int flag=0;
        cout<<"  請輸入你要查詢的房間號:"<<endl;
        cin>>room;
        cout<<endl;


        in.open("E:\\a.dat",ios::in);
   in.seekg(0,ios::beg);
   in.clear();


        while(!in.eof())
{in>>name>>sex>>room_num>>parking>>phone_num>>ID_num;
        if(strcmp(room_num,room)==0)
        {flag=1;
         cout<<"您要查詢的住戶:"<<name<<"的信息是: "<<endl<<endl;
         cout<<"姓名   性別   房間號     車庫號            電話號碼               身份證號    "<<endl;
cout<<setw(2)<<name<<setw(5)<<sex<<setw(10)<<room_num<<setw(10)<<parking<<setw(20)<<phone_num<<setw(20)<<ID_num<<endl;}
}


        in.close();
   if(flag==0)
   cout<<"  對不起!您要查詢的住戶不存在!"<<endl;
        cout<<"  您想繼續查詢嗎?  y / n  :";
        char c;
        cin>>c;
        cout<<endl;
        if(c=='n')break;
        if(c!='y'&&c!='n')
{cout<<"  指令錯誤!請重新輸入!"<<endl;
        cin>>c;}


}while(c=='y');
    break;
   
   default:cout<<"對不起,您輸入的指令有誤:";}break;
   }break;






case '5':           //信息瀏覽
{char name[20],sex,room_num[10],parking[10],phone_num[20],ID_num[20];
     
in.open("E:\\a.dat",ios::in);
in.seekg(0,ios::beg);
in.clear();
if(in.get()==EOF){cout<<"  文件中已無數據"<<endl<<endl;in.close();break;}
cout<<"  本系統所有學生數據如下:"<<endl<<endl;
     cout<<"姓名   性別   房間號     車庫號            電話號碼               身份證號    "<<endl;
     while(!in.eof())
{in>>name>>sex>>room_num>>parking>>phone_num>>ID_num;
 cout<<setw(2)<<name<<setw(5)<<sex<<setw(10)<<room_num<<setw(10)<<parking<<setw(20)<<phone_num<<setw(20)<<ID_num<<endl;
}
in.close();
 
     break;
   }




case'6':            //信息刪除
{char name[20],na[20],sex,room_num[10],parking[10],phone_num[20],ID_num[20],c;
int k;
    do
    {int n=0;int flag=0;
    cout<<"  請輸入您要刪除的學生的姓名:"<<endl;
     cin>>na;
     cout<<endl;


     in.clear();
     in.open("E:\\a.dat",ios::in);
     in.seekg(0,ios::beg);
 


 while(!in.eof())
 {in>>name>>sex>>room_num>>parking>>phone_num>>ID_num;
  s[n]=new livers(name,sex,room_num,parking,phone_num,ID_num);
  liv[n]=*s[n];
  delete s[n];
  n++;}
       in.close();


  for(i=0;i<n;i++)
       {if(strcmp(liv[i].name,na)==0)
  {flag=1;k=i;}
  }


     if(flag==1)
{out.open("E:\\a.dat",ios::out);
      out.seekp(0,ios::beg);
      if(n>1)
 {
 for(i=0;i<k;i++)
 out<<setw(2)<<liv[i].name<<setw(5)<<liv[i].sex<<setw(10)<<liv[i].room_num<<setw(10)<<liv[i].parking<<setw(20)<<liv[i].phone_num<<setw(20)<<liv[i].ID_num;
      for(i=k+1;i<n;i++)
out<<setw(2)<<liv[i].name<<setw(5)<<liv[i].sex<<setw(10)<<liv[i].room_num<<setw(10)<<liv[i].parking<<setw(20)<<liv[i].phone_num<<setw(20)<<liv[i].ID_num;
 cout<<"   信息刪除成功"<<endl<<endl;
 }
 if(n=1){}
 out.close();
}


     else 
     cout<<"  您要刪除的住戶不存在!"<<endl<<endl;

     cout<<"  您想繼續刪除嗎? y / n   :"<<endl;
cin>>c;
     cout<<endl;
     if(c=='n')break;
     if(c!='y'&&c!='n')
     {cout<<"  指令錯誤!請重新輸入!"<<endl<<"     ";
     cin>>c;}


}while(c=='y');


    break;
}








case'7':           //退出
  {cout<<"Bye bye! See you next time."<<endl<<endl;
  cout<<"                   王建制作"<<endl<<endl<<endl;exit(0); }break; }


}//以上爲menu菜單中switch控制語句


  


cout<<"  您想繼續進行其他操作嗎?  y / n  :"<<endl<<" ";//以下控制循環語句
int flag=0;


do{cin>>w;
 cout<<endl;
 if(w=='n')exit(0);
 if(w!='y'&&w!='n')
   cout<<"  指令錯誤!請重新輸入!"<<endl;
 else
   flag=1;
}while(flag==0);




if(w=='y')
{cout<<"  請輸入操作代碼: 1 輸入數據"<<endl;
cout<<"                  2 增加數據"<<endl;
cout<<"                  3 修改數據"<<endl;
cout<<"                  4 信息查詢"<<endl;
cout<<"                  5 信息瀏覽"<<endl;
cout<<"                  6 信息刪除"<<endl;
cout<<"                  7 退出系統"<<endl;}


cin>>p;




}while(w=='y');//最外層的do-while循環


}//menu函數結束






int main()
{key();
menu();
return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章