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

📄 hotel.cpp

📁 此代码为数据结构课程设计代码
💻 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 + -