#include <iostream>
#include <string.h>
#include <stdlib.h>

void enter();
void check_in();
void inquire();
void check_out();
void initial_room();

using namespace std;

int i=0;

struct Room
{
	int number;
	int floor;
	int state;
};

class Customer
{
	char name[10],ID[19];
	int  room_number;
	int  change;
public:
	Customer()
	{
		cout<<"请您输入顾客的姓名\n";
		cin>>name;
	
		cout<<"请您输入顾客的身份证号码\n";
		cin>>ID;
		change=0;
	}
	void set_name(char *_name){strcpy(name,_name);}
	void set_ID(char *_ID){strcpy(ID,_ID);}
	void set_room_number(int n){room_number=n;}
	char *get_name(){return name;}
	char *get_ID(){return ID;}
	int  get_room_number(){return room_number;}
	~Customer()
	{
		cout<<"该顾客退房成功!"<<endl;
	}
};

Room room[80];

Customer *customer[80];

int main()
{
	char choice='1';
	initial_room();
	while(choice=='1')
	{
		enter();
		cout<<endl;
		cout<<"继续使用本系统请按\"1\",退出请按\"2\"!  ";
		cin>>choice;
		cout<<endl;
	}
}

//系统入口
void enter()
{
	int kind_of_service;
	while(1)
	{
	cout<<"请选择服务类别:订房、入住、退房还是查询? \n";
	cout<<" 1->查询  2->入住  3->退房  4->退出:  ";
	cin>>kind_of_service;
	if((kind_of_service<=4) && (kind_of_service>=1))
	{
		
		switch(kind_of_service)
		{
		case 1: inquire();
		break;
		case 2: check_in();
		break;
		case 3: check_out();
		break;
		case 4: exit(0);
		break;
		}
	}
	else
	{
		cout<<"您的输入有误,请重试!\n";
		continue;
	}
	}
}
//入住登记
void check_in()
{
	char name1[10],id1[19];
	customer[i]=new Customer;
	int room_floor;
	cout<<"请您选择预定房间的楼层:\n";
	cout<<"1.一楼\n2.二楼\n3.三楼\n4.四楼\n";
	cin>>room_floor;
	
	switch(room_floor)
	{
	int n;
	case 1:
	for(n=0;n<20;n++)
	{
		if(room[n].state==0)
		{
			cout<<"入住房间号码为: "<<room[n].number<<endl;
			room[n].state=1;
			customer[i]->set_room_number(room[n].number);
			break;
		}
	}
	break;
	case 2:
	for(n=20;n<40;n++)
	{
		if(room[n].state==0)
		{
			cout<<"入住房间号码为: "<<room[n].number<<endl;
			room[n].state=1;
			customer[i]->set_room_number(room[n].number);
			break;
		}
	}
	break;
	case 3:
   	for(n=40;n<60;n++)
	{
		if(room[n].state==0)
		{
			cout<<"入住房间号码为: "<<room[n].number<<endl;
			room[n].state=1;
			customer[i]->set_room_number(room[n].number);
			break;
		}
	}
	break;
	case 4:
	for(n=60;n<80;n++)
	{
		if(room[n].state==0)
		{
		cout<<"入住房间号码为: "<<room[n].number<<endl;
		room[n].state=1;
		customer[i]->set_room_number(room[n].number);
		break;
		}
	}
	break;
	}
	i++;
}
//退房结算
void check_out()
{
	char name2[10],id2[19];
	int room_number;
	cout<<"请输入要退房的顾客姓名和身份证号码:\n";
	cin>>name2>>id2;
	for(int j=0;j<i;j++)
	{
		if((strcmp(customer[j]->get_name(),name2)==0)&&(strcmp(customer[j]->get_ID(),id2)==0))
		{
			room_number=customer[j]->get_room_number();
		}
		cout<<endl;

   		cout<<"是否确定退房,请按1: ";
		char account;
		cin>>account;
		if(account=='1')
		{
			for(int k=0;k<80;k++)
			{
				if(room[k].number==customer[j]->get_room_number())
				room[k].state=0;
			}
			i--;
			for(;j<i;j++)
			{
				customer[j]=customer[j+1];
			}
			delete customer[i];
		}	
	}
}
//信息查询
void inquire()
{
	int j,k=0;
	cout<<endl;
	cout<<"下列房间还没人预订,也没人入住:"<<endl;
	for(j=0;j<80;j++)
	{
		if(room[j].state==0)
		{
			if(k%10==0) cout<<endl;
			cout<<room[j].number<<'\t';
			k++;
		}
	}
	k=0;
	cout<<endl;
	cout<<"下列房间有人入住:"<<endl;
	for(j=0;j<80;j++)
	{
		if(room[j].state==1)
		{
			if(k%10==0) cout<<endl;
			cout<<room[j].number<<'\t';
			k++;
		}
	}
	cout<<endl;
}
//房间信息初始化
void initial_room()
{
	int j,k=101;
	for(j=0;j<20;j++)
	{
		room[j].number=k++;
		room[j].floor=1;
		room[j].state=0;	
	}
	k=201;
	for(j=20;j<40;j++)
	{
		room[j].number=k++;
		room[j].floor=2;
		room[j].state=0;
	}
	k=301;
	for(j=40;j<60;j++)
	{
		room[j].number=k++;
		room[j].floor=3;
		room[j].state=0;
	}
	k=401;
	for(j=60;j<80;j++)
	{
		room[j].number=k++;
		room[j].floor=4;
		room[j].state=0;
	}

}

C++简易酒店管理系统,实现(查询、入住、退房、楼层选择、退出)功能的更多相关文章

  1. 这几天做完简易酒店管理系统,对Sql Server执行计划的浅显了解。

    我是一名大三的小学生,今天开始我的第一篇博客,最近随便做了一个简易的酒店管理系统,对sql执行计划有了初步的了解. 查看上面语句的预估执行计划,在工具栏中有这个按钮 聚集索引扫描被称为Index Sc ...

  2. Linux下C++酒店管理系统

    功能要求: ​ 相关源码:码云:传送门,GitHub:传送门 相关图片: 拆分版 make编译 ​ ./hotel运行 ​ 输入2,进入开房模块 ​ 相关源码: class.cpp #include ...

  3. Java swing实现酒店管理系统

    今天给大家提供一个由今天给大家提供一个由Java swing实现的酒店管理系统,数据库采用sqlserver,我会贴上部分代码,完整的代码请看文章最下方下载,下面看代码: 1.主框架代码: packa ...

  4. Python 小案例实战 —— 简易银行存取款查询系统

    Python 小案例实战 -- 简易银行存取款查询系统 涉及知识点 包的调用 字典.列表的混合运用 列表元素索引.追加 基本的循环与分支结构 源码 import sys import time ban ...

  5. Angularjs,WebAPI 搭建一个简易权限管理系统 —— Angularjs 前端主体结构(五)

    目录 前言 Angularjs名词与概念 Angularjs 基本功能演示 系统业务与实现 WebAPI项目主体结构 Angularjs 前端主体结构 6 Angularjs 前端主体结构 6.1 A ...

  6. Java编写ArrayBasic制作一个简单的酒店管理系统

    听老师讲了一些ArrayBasic的一些知识,让制作一个酒店管理系统,要求:显示酒店所有房间列表,预订房间.... 经过老师的指导写了一个代码,如下: import java.util.Scanner ...

  7. Angularjs,WebAPI 搭建一个简易权限管理系统

    Angularjs,WebAPI 搭建一个简易权限管理系统 Angularjs名词与概念(一)   1. 目录 前言 Angularjs名词与概念 权限系统原型 权限系统业务 数据库设计和实现 Web ...

  8. 【WPF on .NET Core 3.0】 Stylet演示项目 - 简易图书管理系统(3) - 使用Conductor切换页面

    前两章中, 我们已经实现了这个图书管理系统的登录窗口, 并实施了完善的单元测试. 该是时候回过头来关注我们的主窗口了. 一个功能丰富的系统一般会有多个页面, 我们图书管理系统虽然是"简易&q ...

  9. 简易用户管理系统-前端实现(表单&提交请求&button$基础)

    laravel框架编写简易用户管理系统,前端Layui框架. 1.动态生成列表项 实现效果 PHP后台传入用户对象($users). 前端页面接收数据传入table. 逻辑就是在生成表格时,遍历传来的 ...

随机推荐

  1. Opencv级联分类器实现人脸识别

    在本章中,我们将学习如何使用OpenCV使用系统相机捕获帧.org.opencv.videoio包的VideoCapture类包含使用相机捕获视频的类和方法.让我们一步一步学习如何捕捉帧 - 第1步: ...

  2. BZOJ 1047: [HAOI2007]理想的正方形 单调队列瞎搞

    题意很简明吧? 枚举的矩形下边界和右端点即右下角,来确定矩形位置: 每一个纵列开一个单调队列,记录从 i-n+1 行到 i 行每列的最大值和最小值,矩形下边界向下推移的时候维护一下: 然后在记录的每一 ...

  3. 2017 ACM/ICPC Asia Regional Shenyang Online cable cable cable

    Problem Description Connecting the display screen and signal sources which produce different color s ...

  4. 064 Minimum Path Sum 最小路径和

    给定一个只含非负整数的 m x n 网格,找到一条从左上角到右下角的可以使数字之和最小的路径.注意: 每次只能向下或者向右移动一步.示例 1:[[1,3,1], [1,5,1], [4,2,1]]根据 ...

  5. Ubuntu18.10设置静态IP、DNS、卸载无用软件

    设置静态IP root@xueji:~# vim /etc/network/interfaces # interfaces() ) and ifdown() auto lo iface lo inet ...

  6. PHP函数生成随机数

    通常情况下,当我们要生成一个随机字符串时,总是先创建一个字符池,然后用一个循环和mt_rand()或rand()生成php随机数,从字符池中随机选取字符,最后拼凑出需要的长度,代码如下: <?p ...

  7. Mysql一个表编码的坑,mark一下

    问题:一个sql执行很慢,5分钟左右,关键是最大的表是5万出头,另一张表不到5000原因:是两个表的字符集不同,导致匹配时,没有匹配到 解决办法:将两个表的字符集改成一样具体的命令: ALTER TA ...

  8. fileReader 上传图片

    function getImgSrc(target, callback) { if (window.FileReader) { var oPreviewImg = null, oFReader = n ...

  9. Ionic开发-搭建开发环境

    1安装node.js 2安装ionic & cordova: 命令行输入:npm install –g cordova ionic 注:-g表示全局安装,也可以进入指定的目录安装,但这里推荐全 ...

  10. JSTORM中IRichBolt与IBasicBolt的区别