本文实例为大家分享了C++实现简单酒店管理系统的具体代码,供大家参考,具体内容如下
酒店管理系统设计报告
一、 需求分析
题目要求如下:
某酒店有客房若干间,其中客房分为不同等级,如豪华、标准、普通等,客房床位数也不同。例如,豪华套房有4个床位,400元/晚;标准客房2个床位,200元/晚;普通客房1个床位,100元/晚。
顾客分金卡会员、银卡会员、普通会员及非会员,其享受的折扣不同。例如,金卡会员可享受8折优惠,银卡会员可享受9折优惠,普通会员享受95折优惠,非会员不享受优惠。
当顾客连续入住多天时,也可享受一定的折扣。例如,当顾客连续入住24晚时,可享受9折优惠;连续入住58晚时,可享受85折优惠;连续入住9晚以上时,可享受8折优惠。
采用面向对象的思想,建立系统中清晰的类,分析和定义各个类,每个类中要有各自的属性和方法,并开发一套客房管理系统,实现如下功能:
(1) 管理员:以管理员身份登录系统,查询当前客房入住及预订情况,并设置客房价格、顾客优惠政策等;
(2) 酒店前台:以前台身份登录系统,查询当前客房入住及预订情况,为顾客办理入住、退房、换房等服务;顾客退房后为顾客计算消费金额并收费;
(3) 顾客:可以注册和登录系统,用户在查找到心仪的客房后,登录酒店客房管理系统可提交订单实现客房预订;未入住酒店前1天,可取消客房预订;顾客入住退房后可评论。
二、 类图设计及说明
这里的customer类名打错了
三、 系统功能设计
1、系统可以三种用户登录,分别为管理员、前台工作人员、客户,管理员需要特殊管理员账户才可以登录,客户需要注册账号才可以登录系统,用户登录成功后转至前台工作人员为其服务。
2、 管理人员页面有查询房间状态,设置优惠政策,新建房间等选项。
① 查询房间状态:返回所有房间号,房间类型和当前状态
② 设置优惠政策:对已有的区间设置打折力度
③ 新建房间:通过房间号和房间类型来新建房间
3、 前台页面提供客房查询,办理入住,提前预约,办理退房等功能
① 查询客房信息:向用户提供房间信息来选择。
② 办理入住:获取用户入住时间和离开时间为客户办理入住。
③ 提前预约:获取用户入住时间和离开时间为客户提前预约。
④ 办理退房:获取退房房间号,办理退房并且返回客户需付费金额。
4、客户界面,无账号注册账号,通过账号密码的形式登录,登录成功后转至前台页面。
四、实现流程
五、 结果演示
1、 首页
2、 管理员
登录管理员页面
创建房间
依次创建五个房间(创建数量小于40)
可查询当前的状态
设置优惠政策
3、 前台
查询当前房间状态
输入入住时间和退房时间,会显示当前房间状态,可进行选择,选择后会更具入住时间长短显示客户所享受的优惠政策,8折(此前在管理员状态设置过)
房间状态变为有客
若入住有客的房间,会显示已经有客人了,选择其他房间
预约房间也是同理
并且房间变成已经被预约
退房,入住7天豪华房间400x7=2800,但是享受8折,因此收费2240,缴费后可以留下评论
并且此时房间状态也变成了空
4、 客户
客户平台
注册账号
登录账号,登录成功转到前台
如果输入不存在的账号,会报错
六、 问题及解决
中途遇见了一个问题想了很久,客户请求入住后通过reception类入住,reception类中是通过改变room类型实现的,然而每次入住后房间的状态在reception类中已经改变,却在查询时没有变化,最后将reception类的checkin函数改为返回room类型才成功,当然预约和退房也是同理。原来客户提交的申请在reception类中创建一个新的room,并不是我们想要操作的room,因此需要返回修改后的房间才可以得到正确的结果。
七、 附录
设计代码如下:
#include<iostream>
using namespace std;
#include<string>
enum Type { luxury, standard, ordinary };
enum Status { used, reserved, empty1 };
struct Time {
int year;
int month;
int day;
};
class room {
public:
room(int roomNo, Type roomType) {
roomID = roomNo;
type = roomType;
roomStatus = empty1;
if (type == luxury) {
price = 400;
name = "豪华间";
}
else if (type == standard) {
price = 200;
name = "标准间";
}
else if (type == ordinary) {
price = 100;
name = "普通间";
}
};
room() {};
//显示房间当前信息
void showInformation() {
cout << "房间号:" << roomID << endl;
cout << "类型:" << name << endl;
if(roomStatus == 0)
cout << "当前状态:有客" <<endl;
else if(roomStatus == 1)
cout << "当前状态:已被预约" << endl;
else
cout << "当前状态:空房间" << endl;
cout << endl;
}
//办理入住
void checkIn(Time beginTime, Time endTime) {
this->begin = beginTime;
this->end = endTime;
this->roomStatus = used;
}
void roomReserved(Time beginTime, Time endTime) {
roomStatus = reserved;
begin = beginTime;
end = endTime;
};
//办理退房
float checkOut() {
roomStatus = empty1;
int day = (end.year - begin.year) * 365 + (end.month - begin.month) * 30 + (end.day - begin.day);
float polity;
if (day > 2 && day <= 4) {
polity = polity1;
}
else if (day >= 5 && day <= 8) {
polity = polity2;
}
else if (day >= 9) {
polity = polity3;
}
else {
polity = 1;
}
float money = ((end.year - begin.year) * 365 + (end.month - begin.month) * 30 + (end.day - begin.day))*price*polity;
return money;
}
int showstatus() {
return roomStatus;
}
int getRno(){
return roomID;
}
void setPolity(float a, float b, float c) {
polity1 = a;
polity2 = b;
polity3 = c;
}
int getRoomnumber() {
return roomnumber;
}
friend class manager;
friend class reception;
private:
int roomID;
static float polity1;
static float polity2;
static float polity3;
static int roomnumber;
Type type;
string name;
float price;
Status roomStatus;
Time begin;
Time end;
};
class manager {
public:
manager() {};
room roomcreate(int No, Type roomtype) {
room Room(No, roomtype);
Room.roomnumber++;
return Room;
}
void checkInformation(room Room) {
Room.showInformation();
}
void setPolity() {
room Room1;
float a, b, c;
cout << "请分别设置入住2-4天,5-8天或9天以上的优惠政策,用1以内小数表示打折力度" << endl;
cin >> a >> b >> c;
Room1.setPolity(a, b, c);
cout << "设置成功" << endl;
};
};
class reception {
public:
reception(int no) {
NO = no;
}
void checkInformation(room Room) {
Room.showInformation();
}
room CheckIn(Time begin, Time end, room Room) {
if (Room.showstatus() == empty1) {
Room.checkIn(begin, end);
cout << "预定成功!时间:" << begin.year << "年" << begin.month << "月" << begin.day << "日---" << end.year << "年" << end.month << "月" << end.day << "日" << endl;
int day = (end.year - begin.year) * 365 + (end.month - begin.month) * 30 + (end.day - begin.day);
if (day > 2 && day <= 4) {
polity = Room.polity1;
}
else if (day >= 5 && day <= 8) {
polity = Room.polity2;
}
else if (day >= 9) {
polity = Room.polity3;
}
else {
polity = 1;
}
if (polity < 1)
cout << "优惠打" << polity * 10 << "折" << endl;
}
else {
cout << "房间已经被预定,请选择其他房间" << endl;
}
return Room;
}
int getID() {
return NO;
}
room CheckOut(room Room) {
float money = Room.checkOut();
cout << "退房成功" << endl;
cout << "请支付:" << money << "元"<<endl;
return Room;
}
room Reserved(Time begin, Time end, room Room) {
if (Room.showstatus() == empty1) {
Room.roomReserved(begin, end);
cout << "预定成功!时间:" << begin.year << "年" << begin.month << "月" << begin.year << "日---" << end.year << "年" << end.month << "月" << end.day << "日" << endl;
int day = (end.year - begin.year) * 365 + (end.month - begin.month) * 30 + (end.day - begin.day);
if (day > 2 && day <= 4) {
polity = Room.polity1;
}
else if (day >= 5 && day <= 8) {
polity = Room.polity2;
}
else if (day >= 9) {
polity = Room.polity3;
}
else {
polity = 1;
}
if (polity < 1)
cout << "优惠打" << polity * 10 << "折" << endl;
}
else {
cout << "房间已经被预定,请选择其他房间" << endl;
}
return Room;
}
private:
int NO;
float polity;
};
class customer {
public:
customer(){}
customer(int Count, int Key) {
count = Count;
key = Key;
customernumber++;
cout << "注册成功!" << endl;
}
void signin() {};
void checkin(reception rec, Time begin, Time end, room Room) {
rec.CheckIn(begin, end, Room);
}
void reserve(reception rec, Time begin, Time end, room Room) {
rec.Reserved(begin, end, Room);
}
void checkout(reception rec, room Room) {
rec.CheckOut(Room);
}
int getnumber() {
return customernumber;
}
int getcount() {
return count;
}
int getkey() {
return key;
}
private:
int count;
int key;
static int customernumber;
};
int room::roomnumber = 0;
int customer::customernumber = 0;
float room::polity1 = 1;
float room::polity2 = 1;
float room::polity3 = 1;
int main() {
int user;
int rightkey = 123;
manager jasur;
reception wmn(1);
room Baseroom;
room Room[40];
customer Customer[40];
customer baseCusomer;
string comments[40];
while (true) {
cout << "欢迎来到酒店预订系统,请问你是?" << endl;
cout << "1.管理员 2.前台 3.客户" << endl;
cout << "请输入:" << endl;
cin >> user;
if (user == 1) { //管理员选项
cout << "请输入管理员密码:" << endl;
int key;
cin >> key;
if (rightkey == key) {
cout << "欢迎来到管理员平台欢迎您!" << endl;
while (true) {
cout << "1.查询入住情况 2.设置客房优惠 3.创建房间 0.退出" << endl;
int selection;
cout << "请输入:" << endl;
cin >> selection;
if (selection == 1) {
for (int i = 0; i < Baseroom.getRoomnumber(); i++) {
jasur.checkInformation(Room[i + 1]);
}
}
else if (selection == 2) {
jasur.setPolity();
}
else if (selection == 3) {
int entry, Rno;
cout << "输入创建房间的房间号和类型(1代表豪华间,2代表标准间,3代表普通间)" << endl;
cin >> Rno >> entry;
if (entry == 1)
Room[Baseroom.getRoomnumber()] = jasur.roomcreate(Rno, luxury);
else if (entry == 2)
Room[Baseroom.getRoomnumber()] = jasur.roomcreate(Rno, standard);
else if (entry == 3)
Room[Baseroom.getRoomnumber()] = jasur.roomcreate(Rno, ordinary);
cout << "操作成功" << endl << endl;
}
else if (selection == 0) {
break;
}
}
}
}
else if (user == 2) {
cout << "欢迎来到前台服务平台" << endl;
while (true) {
fuwu:
cout << wmn.getID() << "号服务员为您服务,本平台为您提供了如下功能:1.查询客房信息 2.办理入住 3.提前预约 4.办理退房 0.退出" << endl;
cout << "请选择需要的服务" << endl;
int selection;
cin >> selection;
if (selection == 1) {
cout << "客房信息如下:" << endl;
for (int i = 0; i < Baseroom.getRoomnumber(); i++) {
wmn.checkInformation(Room[i + 1]);
}
}
else if (selection == 2) {
Time begin, end;
int Rno, index;
cout << "输入客户入住时间:";
cin >> begin.year >> begin.month >> begin.day;
cout << "输入客户离开时间:";
cin >> end.year >> end.month >> end.day;
cout << "客房信息如下:" << endl;
for (int i = 0; i < Baseroom.getRoomnumber(); i++) {
wmn.checkInformation(Room[i + 1]);
}
cout << "请输入入住客房号:";
cin >> Rno;
for (int i = 0; i < Baseroom.getRoomnumber(); i++) {
if (Room[i + 1].getRno() == Rno) {
index = i + 1;
}
}
Room[index] = wmn.CheckIn(begin, end, Room[index]);
}
else if (selection == 3) {
Time begin, end;
int Rno, index;
cout << "输入客户入住时间:";
cin >> begin.year >> begin.month >> begin.day;
cout << "输入客户离开时间:";
cin >> end.year >> end.month >> end.day;
cout << "客房信息如下:" << endl;
for (int i = 0; i < Baseroom.getRoomnumber(); i++) {
wmn.checkInformation(Room[i + 1]);
}
cout << "请输入预约客房号:";
cin >> Rno;
for (int i = 0; i < Baseroom.getRoomnumber(); i++) {
if (Room[i + 1].getRno() == Rno) {
index = i + 1;
}
}
Room[index] = wmn.Reserved(begin, end, Room[index]);
}
else if (selection == 4) {
int Rno,index;
cout << "请输入退房房间号:";
cin >> Rno;
for (int i = 0; i < Baseroom.getRoomnumber(); i++) {
if (Room[i + 1].getRno() == Rno) {
index = i + 1;
}
}
Room[index] = wmn.CheckOut(Room[index]);
cout << "欢迎留言评论您的体验:" << endl;
cin >> comments[index];
}
else if (selection == 0) {
break;
}
}
}
else if (user == 3) {
cout << "用户你好,欢迎您来到本酒店" << endl;
while (true) {
cout << "请问您有本平台的账号吗?没有可以注册一个哦!" << endl;
cout << "1.我已经有账号了 2.注册 0.退出" << endl;
int selection;
cin >> selection;
if (selection == 1) {
int count, key, rightcount, index = -1;
x:
cout << "请输入账号:" << endl;
cin >> count;
for (int i = 0; i < baseCusomer.getnumber(); i++) {
if (Customer[i].getcount() == count) {
index = i;
}
}
if (index == -1) {
cout << "不存在此账号" << endl;
goto x;
}
y:
cout << "请输入密码:";
cin >> key;
for (int i = 0; i < baseCusomer.getnumber(); i++) {
if (Customer[index].getkey() == key) {
cout << "登录成功!" << endl;
goto fuwu;
}
else {
cout << "密码错误!" << endl;
goto y;
}
}
}
else if (selection == 2) {
int count, key, virity;
cout << "请输入注册账号:";
cin >> count;
cout << endl;
a:
cout << "请设置密码:";
cin >> key;
cout << "请确认密码:";
cin >> virity;
if (key == virity) {
customer base(count, key);
Customer[baseCusomer.getnumber() - 1] = base;
}
else {
cout << "两次密码不相等,重新输入" << endl;
goto a;
}
}
else if (selection == 0) {
break;
}
}
}
else {
cout << "无效的选择,重新选择!";
}
}
return 0;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。