📄 hotel.cpp
字号:
#include "hotel.h"
#include <iostream>
#include <fstream>
using namespace std;
void hotel::setGradeNumber(int gradeNum)
{
gradeNumber = gradeNum;
delete []ptrRoom;
ptrRoom = new gradeRoom[gradeNum];
for (int i = 0; i < gradeNum; i++)
ptrRoom[i].setGrade(i);
}
hotel::hotel(int gradeNum)
{
fstream fp;
fp.open("gradeRoom.data", ios::in);
fp >> gradeNum;
gradeNumber = gradeNum;
ptrRoom = new gradeRoom[gradeNum];
int j, tmpRoomNum, tmpBedNum, tmpPrice;
for (j = 0; j < gradeNum; j++)
{
fp >> tmpRoomNum >> tmpBedNum >> tmpPrice;
ptrRoom[j].setGrade(j);
ptrRoom[j].setGradeBedNumber(tmpBedNum);
ptrRoom[j].setRoomNumber(tmpRoomNum);
ptrRoom[j].setCost(tmpPrice);
}
fp.close();
fstream fp1;
fp1.open("customer.data", ios::in);
int tmpCusNum;
fp1 >> tmpCusNum;
customerNumber = tmpCusNum;
string tmpName, tmpID;
char tmpD[12], tmpT[12];
bool tmpSex;
int tmpYear, tmpMon, tmpDay, tmpHour, tmpMin;
Time tmpTime;
for (j = 0; j < tmpCusNum; j++)
{
fp1 >> tmpName >> tmpSex >> tmpRoomNum >> tmpID >> tmpD >> tmpT;
sscanf(tmpD, "%d/%d/%d", &tmpYear, &tmpMon,
&tmpDay);
sscanf(tmpT, "%d:%d", &tmpHour, &tmpMin);
tmpTime.setTime(tmpYear, tmpMon, tmpDay, tmpHour, tmpMin);
customer newCustomer(tmpID, tmpSex, tmpName, tmpTime,
tmpRoomNum / 1000 - 1, tmpRoomNum % 1000 - 1);
ptrRoom[tmpRoomNum / 1000 - 1].addCustomer(tmpRoomNum % 1000 - 1, newCustomer);
}
}
hotel::~hotel()
{
int j;
fstream fp;
fp.open("gradeRoom.data", ios::out);
fp << gradeNumber << endl;
for (j = 0; j < gradeNumber; j++)
{
fp << ptrRoom[j].getRoomNumber() << ' ' << ptrRoom[j].getGradeBedNumber()
<< ' ' << ptrRoom[j].getCost() << endl;
}
fp.close();
fstream fp1;
fp1.open("customer.data", ios::out);
fp1 << customerNumber << endl;
for (j = 0; j < gradeNumber; j++)
{
ptrRoom[j].outToFile(fp1);
}
fp1.close();
}
bool hotel::addNewCustomer(customer newCustomer, int grade, room &tmpRoom)
{
if (ptrRoom[grade].addCustomer(newCustomer, tmpRoom))
{
customerNumber++;
return true;
}
return false;
}
int hotel::setGradeRoom(int grade, int roomNum, int bedNum, int price)
{
ptrRoom[grade].setRoomNumber(roomNum);
ptrRoom[grade].setGradeBedNumber(bedNum);
ptrRoom[grade].setCost(price);
return ptrRoom[grade].setRoom(bedNum);
}
bool hotel::IDFindCustomer(string tmpID, customer &tmpCustomer)
{
int i;
for (i = 0; i < gradeNumber; i++)
{
if (ptrRoom[i].IDFindCustomer(tmpID, tmpCustomer))
return true;
}
return false;
}
bool hotel::delCustomer(string tmpID, customer &tmpCustomer)
{
int i;
for (i = 0; i < gradeNumber; i++)
{
if (ptrRoom[i].delCustomer(tmpID, tmpCustomer))
{
customerNumber--;
return true;
}
}
return false;
}
bool hotel::nameFindCustomer(string tmpName, customer *ptrCustomer,
int &customerNum)
{
int i;
bool res = false;
customerNum = 0;
for (i = 0; i < gradeNumber; i++)
{
if (ptrRoom[i].nameFindCustomer(tmpName, ptrCustomer, customerNum))
res = true;
}
return res;
}
bool hotel::findRoomNum(int tmpGrade, int tmpRoomNum, room &tmpRoom)
{
if (tmpGrade < 0 || tmpGrade >= gradeNumber) return false;
return ptrRoom[tmpGrade].findRoomNum(tmpRoomNum, tmpRoom);
}
void hotel::displayGrade(int tmpGrade)
{
ptrRoom[tmpGrade].display();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -