酒店管理系统:

前提:楼层,房间编号,房间类型,价格
开房:姓名,房间,随行人员,押金,时长
续费:延时,修改类型
退房:押金,消费

实现:在class.h中构建出房间以及顾客的两个类以及访问和修改类中私有成员的成员函数,然后在class.cpp中实现这些成员函数,func中实现开房、续费、查询、退房等具体的功能函数。

main.c

#include <iostream>
#include "class.h"
#include "func.h"
using namespace std;extern Room* room[40];
extern Customer* customer[40];int main()
{room_init();run();
}

class.h

#ifndef CLASS_H
#define CLASS_H#include <iostream>
#include <string.h>using namespace std;class Room
{int room_number;int type;int price;bool empty;
public:Room(int room_number=0,int type=0,int price =0){this->room_number = room_number;this->type = type;this->price = price;this->empty = true;}void room_change(void); bool room_empty(void);void room_show(void);int get_price(void);int get_room_number(void);
};class Customer
{char* name;int room_number;int price;int deposit;int time;char* accname;
public:Customer(char* name,int room_number,int price,int deposit,int time,char* accname){this->name = new char[strlen(name)+1];this->accname = new char[strlen(accname)+1];strcpy(this->name,name);strcpy(this->accname,accname);this->room_number = room_number;this->price = price;this->deposit = deposit;this->time = time;}void customer_change1(int _time);void customer_change2(int _number,int _time,int _price);void customer_show(void);char* get_name(void);int get_room_number(void);
};#endif//CLASS_H

class.cpp

#include "class.h"
#include <fstream>void Room::room_change(void)
{if (empty == true){empty = false;}else{empty = true;}
}bool Room::room_empty(void)
{if (empty == true){return true;}
}void Room::room_show(void)
{cout <<  room_number << endl;cout << type << endl;cout <<    price << endl;if (empty == true){cout << "空" << endl;}else{cout << "满" << endl;}
}int Room::get_price(void)
{return price;
}int Room::get_room_number(void)
{return room_number;
}void Customer::customer_change1(int _time)
{int time1=time;int price1=price;time = _time+time1;price = (price1/time1)*time;
}void Customer::customer_change2(int _number,int _time,int _price)
{time = _time;price += _price;room_number = _number;
}void Customer::customer_show(void)
{cout << "------------------------------" << endl;cout << "姓名:" << name << endl;cout << "房号:" << room_number << endl;cout << "消费金额:" << price << endl;cout << "押金:" << deposit << endl;cout << "时间:" << time;if (room_number/100 == 1){cout << "小时" << endl;}else{cout << "天" << endl;}if (0 == strcmp(accname,"null")){cout << "无随行人员" << endl;}else{cout << "随行人员:" << accname << endl;}cout << "------------------------------" << endl;
}char* Customer::get_name(void)
{return name;
}int Customer::get_room_number(void)
{return room_number;
}

func.h

#ifndef FUNC_H
#define FUNC_Hvoid run(void);
void room_init(void);
void open(void);
void query(void);
void out(void);
void menu1(void);
void menu2(void);#endif//FUNC_H

func.cpp

#include "func.h"
#include "class.h"
#include "tools.h"
#include <stdlib.h>int num=0;
Room* room[40];
Customer* customer[40];void run(void)
{while(1){system("clear");menu1();switch(get_cmd('1','4')){case '1':open();break;case '2':query();break;case '3':out();break;case '4':return;}}
}void room_init(void)
{for(int i=1;i<=4;i++){for(int j=1;j<=10;j++){if (i==1){room[(i-1)*10+j] = new Room(i*100+j,i,20);}if (i==2){room[(i-1)*10+j] = new Room(i*100+j,i,100);}if (i==3){room[(i-1)*10+j] = new Room(i*100+j,i,200);}if (i==4){room[(i-1)*10+j] = new Room(i*100+j,i,300);          }}}
}void open(void)
{char name[20];int room_number;int price;int deposit;int time;char accname[20];cout << "请输入您的姓名" << endl;cin >> name;menu2();int n=0;cin >> n;if (n == 5) {return;}for(int i=1+10*(n-1);i<=10+10*(n-1);i++){if (room[i]->room_empty() == true){room_number = room[i]->get_room_number();deposit = 100;if (n == 1){cout << "请输入要住几小时的钟点房" << endl;}else{cout << "请输入要住的天数" << endl;}cin >> time;price = time*(room[i]->get_price());char c;while(1){cout << "是否有随行人员(限1个) (y/n)" << endl;cin >> c;if (c == 'y'|c == 'n'){break;}cout << "输入格式错误" << endl;}if (c == 'y'){cout << "请输入随行人员的姓名" << endl;cin >>accname;}else {strcpy(accname,"null");}customer[num++] = new Customer(name,room_number,price,deposit,time,accname);room[i]->room_change();break;}if (i == 10+10*(n-1)){cout << "抱歉,房间已满!" << endl;}}
}
void query(void)
{char name[20];cout << "请输入您的姓名" << endl;cin >> name;for(int i=0;i<num;i++){if (0 == strcmp(customer[i]->get_name(),name)){customer[i]->customer_show();cout << "1、当前房间续费" << endl;cout << "2、换一种房间" << endl;cout << "3、返回" << endl;switch (get_cmd('1','3')){case '1':{int time = 0;if (customer[i]->get_room_number()/100 == 1){cout << "请输入要续费的小时:" << endl;}else{cout << "请输入要续费的天数:" << endl;}cin >> time;customer[i]->customer_change1(time);cout << "续费成功!" << endl;break;}case '2':{menu2();int time=0;int n=0;int number=0;int price=0;cin >> n;if (n == 5) {return;}for(int j=1+10*(n-1);j<=10+10*(n-1);j++){if (room[j]->room_empty() == true){if (n == 1){cout << "请输入要住几小时的钟点房" << endl;}else{cout << "请输入要住的天数" << endl;}cin >> time;price = time*(room[j]->get_price());number = room[j]->get_room_number();room[j]->room_change();int _number = customer[i]->get_room_number();_number = (_number/100-1)*10+_number%100;room[_number]->room_change();customer[i]->customer_change2(number,time,price);break;}if (j == 10+10*(n-1)){cout << "抱歉,该种房间已满!" << endl;}}}case '3':return;}}}cout << "无该顾客" << endl;
}void out(void)
{char name[20];cout << "请输入您的姓名" << endl;cin >> name;for(int i=0;i<num;i++){if (0 == strcmp(customer[i]->get_name(),name)){int number = customer[i]->get_room_number();number = (number/100-1)*10+number%100;room[number]->room_change();cout << "退回您的100元押金,欢迎再次光临" << endl;Customer *p =customer[i];delete p;for(int j=i;j<num;j++){customer[j]=customer[j+1];}customer[--num]=NULL;return;}   }cout << "无该顾客" << endl;
}
void menu1(void)
{cout << "*****欢迎来到指针宾馆*****" << endl;cout << "1、开房" << endl;cout << "2、查询及续费" << endl;cout << "3、退房" << endl;cout << "4、退出" << endl;cout << "************************" << endl;
}
void menu2(void)
{cout << "************************" << endl;cout << "1、钟点房 20/hour" << endl;cout << "2、标间 100/day" << endl;cout << "3、高级标间 200/day" << endl;cout << "4、豪华套房 300/day" << endl;cout << "5、退出" << endl;cout << "************************" << endl;
}

tools.h

#ifndef TOOLS_H
#define TOOLS_H#include <getch.h>
char get_cmd(char start,char end);void clear_stdin(void);#endif//TOOLS_H

tools.cpp

#include "tools.h"//获取指令
char get_cmd(char start,char end)
{clear_stdin();printf("请输入指令:");for(;;){char val = getch();if(val >= start && val <= end){printf("%c\n",val);return val;}}
}//清理输入缓冲区
void clear_stdin(void)
{stdin->_IO_read_ptr = stdin->_IO_read_end;
}

基于C++的酒店管理系统相关推荐

  1. java 酒店系统_基于JAVA的酒店管理系统

    <基于JAVA的酒店管理系统>由会员分享,可在线阅读,更多相关<基于JAVA的酒店管理系统(31页珍藏版)>请在人人文库网上搜索. 1.酒店管理系统,专业: 姓名: 指导教师, ...

  2. 基于PHP的酒店管理系统

    基于PHP的酒店管理系统 一 项目介绍 可搭建在phpstudy集成环境下,两分钟快速部署!!! 基于PHP+Mysql实现的酒店管理系统,功能完善,UI具有很高的美感.可在phpstudy下快速部署 ...

  3. 基于php的酒店管理系统文献综述,酒店管理系统文献综述酒店管理系统文献综述.ppt...

    酒店管理系统文献综述酒店管理系统文献综述 酒店管理系统文献综述 论文主题 经济发展促进了酒店业的快速发展,酒店管理工作变得越来越复杂,酒店管理的智能化,信息化已经成为酒店竞争的主要方面,为了提高酒店的 ...

  4. 基于javaweb的酒店管理系统(java+ssm+layui+mysql)

    基于javaweb的酒店管理系统(java+ssm+layui+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myeclipse/st ...

  5. 基于javaweb的酒店管理系统(java+ssm+jsp+mysql)

    基于javaweb的酒店管理系统(java+ssm+jsp+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myeclipse/sts等 ...

  6. java酒店的点评功能实现,基于JAVA的酒店管理系统

    <基于JAVA的酒店管理系统>由会员分享,可在线阅读,更多相关<基于JAVA的酒店管理系统(33页珍藏版)>请在人人文库网上搜索. 1.酒店管理系统主讲人:开发背景酒店业是一个 ...

  7. 计算机毕业设计ssm基于java的酒店管理系统tpk08系统+程序+源码+lw+远程部署

    计算机毕业设计ssm基于java的酒店管理系统tpk08系统+程序+源码+lw+远程部署 计算机毕业设计ssm基于java的酒店管理系统tpk08系统+程序+源码+lw+远程部署 本源码技术栈: 项目 ...

  8. [计算机毕设]基于java的酒店管理系统系统设计与实现(项目报告+答辩PPT+源代码+数据库)

    项目报告 酒店管理系统的设计与实现 摘 要 中国经济近几年来取得蓬勃飞速发展,使得人民生活水平的要求和生活的质量有了很高的要求.因此人们对外出旅游和就餐的需求也越来越大.同时,随着我国科技水平的兴起和 ...

  9. java+mysq基于SSM的酒店管理系统#毕业设计

    项目编号:java+mysqlssm217基于SSM的酒店管理系统#毕业设计 运行环境: 开发工具:IDEA /Eclipse 数据库:MYSQL5.7 应用服务:Tomcat7/Tomcat8 使用 ...

  10. java 酒店系统设计_基于Java的酒店管理系统的设计与实现

    数据库与信息管理本栏目责任编辑 :代 影 ComputerKnowledgeand Technology 电脑知识与技术第 7 卷第 27 期 (2011 年 9 月) 基于 Java 的酒店管理系统 ...

最新文章

  1. 通达信板块监控指标_【精选指标】通达信创业板涨停变色主图指标,助你股海捉龙擒牛!...
  2. setTimeout 第一个参数类型
  3. html div 自动聚焦,让DIV也能够获取焦点
  4. 讲讲什么是帕累托最优
  5. 使用Kubeadm创建k8s集群之部署规划(三十一)
  6. 图论复习——最小生成树MST
  7. 题解 P2598 【[ZJOI2009]狼和羊的故事】
  8. Nginx服务器之负载均衡策略(6种)
  9. 【剑指offer】旋转数组的最小数字
  10. url pattern
  11. java static 执行顺序
  12. linux下好看的中文字体,推荐一款 Linux 上比较漂亮的字体(转)
  13. 基于wifi的物联网技术,主要有哪些优势?
  14. Mac 下pyppeteer下载Chromium慢 / pyppeteer下载慢 / Chromium下载慢 / Chromium下载地址
  15. mysql 免安装版 启动_Windows下配置启动免安装版本mysql
  16. 明明有空单元格,Ctrl+G定位空值报未找到单元格
  17. 虾皮马来西亚热销产品有哪些?
  18. 心灵鸡水『...的一生』
  19. Wondershare EDraw Max多种具有模块化特征
  20. idea快捷键(mac和Windows对比)

热门文章

  1. Java内存的一点理解, 静态方法和实例方法的区别及使用场景
  2. python int语句_Python语句print(int('20',16),int('101',2))的输出结果是() (2.0分)_学小易找答案...
  3. 【程序设计】文件的打包与压缩
  4. 立仪光谱共焦位移传感器选型技巧
  5. JAVA 接收JSON数据,并进行转换处理
  6. 人类基因组本地化及简单分析
  7. 转载 双语:中国姓氏英文翻译对照大合集
  8. [英语阅读]温室效应能阻止冰川期到来吗
  9. 视频教程-SEM实战教程(四)-网络营销
  10. 珠海公共自行车系统分析系列 - 查询系统