?? hotel.cpp
字號:
/*
* File: hotel.cpp
* --------------
* This file implements the hotel.h interface.
*/
#include "hotel.h"
/* Package variables */
AccountManage accountManage;
RoomManage roomManage;
/* Implementation */
void InitAccount(const char *fileName, AccountManage *account) //
{
ifstream fin;
fin.open(fileName,ios::in);
if (fin == NULL) {
Error("Account Data File Not Found~");
cout<<"Now Creating a new data file.."<<endl;
OutAccount(fileName,account);
}
else {
account->ReadFromFile(&fin);
fin.close();
cout<<"Read Account Data Success~"<<endl;
}
return ;
}
void InitRoom(const char *fileName, RoomManage *room) //
{
ifstream fin;
fin.open(fileName,ios::in);
if (fin == NULL) {
Error("Room Data File Not Found~");
cout<<"Now Creating a new data file.."<<endl;
OutRoom(fileName,room);
}
else {
room->ReadFromFile(&fin);
fin.close();
cout<<"Read Room Data Success~"<<endl;
}
return ;
}
void OutAccount(const char *fileName, AccountManage *account)
{
ofstream fout;
fout.open(fileName,ios::out);
account->WriteToFile(&fout);
fout.close();
cout<<"Write Account Data Success~"<<endl;
return ;
}
void OutRoom(const char *fileName, RoomManage *room)
{
ofstream fout;
fout.open(fileName,ios::out);
room->WriteToFile(&fout);
fout.close();
cout<<"Write Room Data Success~"<<endl;
return ;
}
void SetAccountRoomList(AccountManage *accManage, RoomManage *roomManage)
{
struct AllAccountList *p;
struct AccRoomNumList *t;
p=accManage->GetAllAccountList()->next;
while (p != NULL ){
t=p->curAccount->GetAccRoomNumList()->next;
while (t != NULL){
p->curAccount->AddRoom(roomManage->GetRoom(t->roomNum));
t=t->next;
}
p=p->next;
}
return;
}
void CheckIn(AccountManage *accManage, RoomManage *roomManage)
{
//char com='y';
//int t1;
string t2;
Account *curAcc;
Room *curRoom;
cout<<"===========Start CheckIn==========="<<endl;
cout<<"Do you have an Account?(y/n)";
char com=GetYesNo();
if (com == 'n'){
cout<<"Now..to Create a New Account:"<<endl;
curAcc=NewAccount(accManage->GetNumOfAccounts());
if ( curAcc == NULL ) {Error("Faild to Create an Account~");return ;}
accManage->AddAccount(curAcc);
}
if (com == 'y'){
curAcc=FindAccount(accManage);
if (curAcc == NULL) {Error("Not Found this Account~");return ;}
}
cout<<"Account Confirmed~ "<<endl<<endl;
PrintStateRoom(roomManage,CLEAN);
cout<<"Which one to choose?(Input the RoomNum) :";
curRoom=roomManage->GetRoom(GetInt());
if (curRoom == NULL) {Error("Failed to select this Room~");return ;}
cout<<"Please input the Dealed Price :";
curRoom->SetRoomState(INUSE);
curRoom->SetDealPrice(GetInt());
curRoom->SetCustomerID(curAcc->GetID());
//set start date and time//clear
curTime=time(NULL);
tm *pt=localtime(&curTime);
curRoom->SetStartTime(pt->tm_sec,pt->tm_min,pt->tm_hour);
curRoom->SetStartDate(pt->tm_mday,pt->tm_mon+1,pt->tm_year);
curRoom->SetCustomerName(curAcc->GetName());
curAcc->AddRoom(curRoom);
//if (roomManage->GetGuest(curAcc) == NULL) roomManage->AddGuest(curAcc);
cout<<"===========Success~=========="<<endl;
return ;
}
void CheckOut(AccountManage *accManage, RoomManage *roomManage)
{
int t1;
Room *curRoom;
Account *curAcc;
cout<<"=============Start CheckOut============"<<endl;
cout<<"Please inout your RoomNum:";
curRoom=roomManage->GetRoom(GetInt());
if (curRoom == NULL || curRoom->GetRoomState() != INUSE) {Error("Not Found this Room~");return;}
curAcc=accManage->GetAccount(curRoom->GetCustomerID(),curRoom->GetRoomCustomerName(),"",0);
if (curAcc == NULL) {Error("Failed to find this customer~");return ;}
//add count the expences//clear
t1=curAcc->CheckExpences(curRoom);
curAcc->SetPreExpences(curAcc->GetPreExpences() - t1);
curAcc->SetCurExpences(curAcc->GetCurExpences() - t1);
curAcc->DeleteRoom(curRoom);
curRoom->SetRoomState(NEEDCLEAR);
curRoom->SetDealPrice(0);
if (curAcc->GetNumOfRooms() == 0) {
//roomManage->DeleteGuest(curAcc);
curAcc->SetPreExpences(curAcc->GetPreExpences() - curAcc->GetCurExpences());
curAcc->SetCurExpences(0);
}
cout<<"This room cost "<<t1<<" yuan."<<endl<<"This account has "<<curAcc->GetPreExpences()<<" yuan left."<<endl;
if (curAcc->GetNotEnoughExpences()) cout<<"This Account Doesn't Have Enough Remaining Sum..Please.."<<endl;
cout<<"==============Success~================="<<endl;
return ;
}
Account *FindAccount( AccountManage *accManage )
{
int tt;
cout<<"Please input the Account ID :";
tt=GetInt();
cout<<"Please input the Account Name :";
return (accManage->GetAccount(tt,GetString(),"",0));
}
void AddFee( AccountManage *accManage )
{
Account *curAcc;
int t1;
cout<<"==============Start AddFee=========="<<endl;
curAcc=FindAccount(accManage);
if (curAcc == NULL) {Error("Not Found this Account~");return;}
char com='n';
while(com == 'n'){
cout<<"Please input How Much to Add~:";
t1=GetInt();
cout<<curAcc->GetName()<<" will add "<<t1<<" yuan.Is it Correct?(y/n):";
com=GetYesNo();
}
curAcc->SetPreExpences(t1+curAcc->GetPreExpences());
curAcc->SetScore(t1+curAcc->GetScore());
cout<<"===============Success~============="<<endl;
return ;
}
void PrintStateRoom( RoomManage *roomManage, RoomState state )
{
switch (state)
{
case CLEAN:cout<<"The Available Room List :"<<endl;break;
case INUSE:cout<<"The InUse Room List :"<<endl;break;
case NEEDFIX:cout<<"The NeedFix Room List :"<<endl;break;
case NEEDCLEAR:cout<<"The NeedClear Room List :"<<endl;break;
default :break;
}
roomManage->PrintRoomStateList(state);
return ;
}
void PrintRoomInfo( RoomManage *roomManage )
{
int t1;
cout<<"Please input the RoomNum:";
cin>>t1;
Room *curRoom=roomManage->GetRoom(t1);
if (curRoom == NULL) {Error("Not Found this Room~");return;}
curRoom->PrintInfo();
return ;
}
void PrintAllRoom( RoomManage *roomManage )
{
cout<<"The All Room List :"<<endl;
roomManage->PrintRoomList();
cout<<"-EOF-"<<endl;
return ;
}
void PrintAccountInfo( AccountManage *accManage )
{
Account *curAccount=FindAccount(accManage);
if (curAccount == NULL) {Error("Not Found this Account~");return ;}
curAccount->PrintInfo();
return ;
}
void PrintGuestInHotel( AccountManage *accManage )
{
cout<<"The Guest In Hotel List :"<<endl;
accManage->PrintAccountList(1);
cout<<"-EOF-"<<endl;
return;
}
void PrintAllAccount( AccountManage *accManage )
{
cout<<"The All Account List :"<<endl;
accManage->PrintAccountList(0);
cout<<"-EOF-"<<endl;
return;
}
void PrintNotEnoughAccount( AccountManage *accManage )
{
cout<<"The Not Enough Money Account List :"<<endl;
struct AllAccountList *p;
p=accManage->GetAllAccountList()->next;
while (p != NULL){
if(p->curAccount->GetNotEnoughExpences()) p->curAccount->PrintInfoBrief();
p=p->next;
}
cout<<"-EOF-"<<endl;
cout<<"Please remind .."<<endl;
return ;
}
void ChangeRoomState( RoomManage *roomManage )
{
int t1,t2;
cout<<"============Start Change==========="<<endl;
cout<<"Please input the RoomNum :";
t1=GetInt();
cout<<"Please input the RoomState :"<<endl;
cout<<"(1-Clean 2-InUse 3-NeedFix 4-NeedClean) :";
t2=GetInt();
while(t2 < 1 || t2 > 4) {
cout<<"Input must be '1' or '2' or '3' or '4' :";
t2=GetInt();
}
roomManage->GetRoom(t1)->SetRoomState(RoomState(t2-1));
cout<<"==============Success=============="<<endl;
return ;
}
void AddAccount( AccountManage *accManage )
{
cout<<"==============Start==========="<<endl;
Account *p=NewAccount(accManage->GetNumOfAccounts());
if (p == NULL) {Error("");return ;}
accManage->AddAccount(p);
cout<<"==============End=============="<<endl;
return;
}
void AddRoom( RoomManage *roomManage )
{
cout<<"==============Start============"<<endl;
Room *p=NewRoom();
if (p == NULL) {Error("");return ;}
roomManage->AddRoom(p);
cout<<"==============End=============="<<endl;
return ;
}
void DeleteAccount( AccountManage *accManage )
{
cout<<"=============start=============="<<endl;
Account *curAcc=FindAccount(accManage);
if (curAcc == NULL) {Error("Not Found This Account~");return ;}
curAcc->PrintInfo();
cout<<"Do you want to Delete it ?(y/n):";
char com=GetYesNo();
if (com == 'y') {
accManage->DeleteAccount(curAcc);
cout<<"Delete Success~"<<endl;
}
cout<<"==============end==============="<<endl;
return ;
}
void DeleteRoom( RoomManage *roomManage )
{
int num;
cout<<"=============start=============="<<endl;
cout<<"Please input the Room Num :";
cin>>num;
Room *curRoom=roomManage->GetRoom(num);
if (curRoom == NULL) {Error("Not Found This Room~");return;}
cout<<"Do you want to Delete it ?(y/n):";
char com=GetYesNo();
if (com == 'y'){
roomManage->DeleteRoom(curRoom);
cout<<"Delete Success~"<<endl;
}
cout<<"==============end==============="<<endl;
return ;
}
void ClearAccountManageInfo( AccountManage *accManage )
{
accManage->CleanAllAccount();
return ;
}
void ClearRoomManageInfo( RoomManage *roomManage )
{
roomManage->CleanAllRoom();
return ;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -