C++版酒店管理程序代码
- 格式:docx
- 大小:21.74 KB
- 文档页数:18
C语言旅馆信息管理程序一、介绍旅馆信息管理程序是一个基于C语言开发的应用程序,旨在帮助旅馆管理人员高效地管理客房信息、客户信息以及预订和入住操作。
该程序具有用户友好的界面和丰富的功能,可以实现客房信息的录入、修改、查询和删除,客户信息的录入和查询,以及预订和入住操作的记录和管理。
二、功能模块1. 客房信息管理模块- 客房信息录入:提供一个界面,让管理人员输入客房的基本信息,包括房间号、房型、价格、是否空闲等。
- 客房信息修改:允许管理人员修改已录入的客房信息,如房型、价格等。
- 客房信息查询:提供多种查询方式,如按房间号、房型等进行查询,并展示查询结果。
- 客房信息删除:允许管理人员删除不再使用的客房信息。
2. 客户信息管理模块- 客户信息录入:提供一个界面,让管理人员输入客户的基本信息,包括姓名、性别、身份证号、联系方式等。
- 客户信息查询:提供多种查询方式,如按姓名、身份证号等进行查询,并展示查询结果。
3. 预订和入住管理模块- 预订操作:允许管理人员为客户进行预订操作,包括选择客房、输入客户信息等。
- 入住操作:记录客户入住的相关信息,包括入住日期、退房日期等。
- 预订和入住记录查询:提供多种查询方式,如按客户姓名、入住日期等进行查询,并展示查询结果。
4. 系统设置模块- 密码设置:允许管理人员设置登录密码,保证系统安全性。
- 数据备份与恢复:提供数据备份和恢复功能,防止数据丢失。
三、开发环境和技术1. 开发环境- 操作系统:Windows 10- 开发工具:Dev-C++ 5.112. 技术要点- 数据结构:使用结构体存储客房信息和客户信息,方便管理和查询。
- 文件操作:使用文件存储客房和客户信息,实现数据的持久化。
- 用户界面:使用命令行界面,通过菜单和输入提示与用户进行交互。
- 错误处理:对用户的输入进行合法性检查,避免程序崩溃或数据错误。
四、使用方法1. 安装和启动程序- 下载安装Dev-C++ 5.11,并按照提示完成安装。
#include <stdio.h〉#include 〈stdlib。
h>#include <string。
h>//房间信息结构体struct Node{int Count; //指示该房间有多少个房客char nameOne[20]; //房客1的名字char nameTwo[20]; //房客2的名字int sexOne;//房客1的性别—1代表女,0代表没有,1代表男int sexTwo; //房客2的性别int roomNumber;//房间号}roomArray[5];//初始化房间数组void InitArray(){int i;for(i=0;i<5;i++){roomArray[i].roomNumber = 301+i;memset(roomArray[i]。
nameOne,0,20);memset(roomArray[i]。
nameTwo,0,20);roomArray[i].sexOne = 0;roomArray[i].sexTwo = 0;roomArray[i].Count = 0;}}void fun1() //旅客入住的操作{char name[20];int sex;int i;printf(”\n输入入住旅客姓名和性别(空格隔开,1为男,—1为女):”);scanf(”%s %d",name,&sex);for(i=0;i<5;i++){if(roomArray[i]。
Count == 2){continue;}else if(roomArray[i].Count == 1){if(roomArray[i]。
sexOne != sex){continue;}strcpy(roomArray[i].nameTwo,name);roomArray[i].sexTwo = sex;roomArray[i]。
Count++;system("cls”);printf("客人已经成功入住,在房间%d”,roomArray[i].roomNumber);return;;}else{strcpy(roomArray[i]。
酒店管理系统c语言程序设计以下是一个简单的酒店管理系统的 C 语言程序设计示例,包括了客户入住、退房和查询房间状态等基本功能。
请注意,这只是一个简化的示例,实际的酒店管理系统可能需要更多的功能和复杂的逻辑。
```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_ROOMS 100#define MAX_CUSTOMERS 100// 房间结构体struct Room {int roomNumber;int isOccupied;int customerID;};// 客户结构体struct Customer {int customerID;char customerName[50];};// 房间列表struct Room rooms[MAX_ROOMS];// 客户列表struct Customer customers[MAX_CUSTOMERS];// 初始化房间列表void initRooms() {for (int i = 0; i < MAX_ROOMS; i++) {rooms[i].roomNumber = i + 1;rooms[i].isOccupied = 0;rooms[i].customerID = 0;}}// 初始化客户列表void initCustomers() {for (int i = 0; i < MAX_CUSTOMERS; i++) {customers[i].customerID = i + 1;strcpy(customers[i].customerName, "Customer");}}// 查找空闲房间int findFreeRoom() {for (int i = 0; i < MAX_ROOMS; i++) {if (rooms[i].isOccupied == 0) {return i;}}return -1;}// 客户入住void checkIn(int customerID, int roomNumber) {int freeRoom = findFreeRoom();if (freeRoom != -1) {rooms[freeRoom].isOccupied = 1;rooms[freeRoom].customerID = customerID;printf("Customer %d checked in to Room %d\n", customerID, roomNumber); } else {printf("No free rooms available\n");}}// 客户退房void checkOut(int roomNumber) {for (int i = 0; i < MAX_ROOMS; i++) {if (rooms[i].roomNumber == roomNumber && rooms[i].isOccupied == 1) { rooms[i].isOccupied = 0;rooms[i].customerID = 0;printf("Customer checked out of Room %d\n", roomNumber);return;}}printf("Room not found\n");}// 查询房间状态void viewRoomStatus(int roomNumber) {for (int i = 0; i < MAX_ROOMS; i++) {if (rooms[i].roomNumber == roomNumber) {if (rooms[i].isOccupied == 1) {printf("Room %d is occupied by Customer %d\n", roomNumber, rooms[i].customerID);} else {printf("Room %d is vacant\n", roomNumber);}return;}}printf("Room not found\n");}// 主函数int main() {initRooms();initCustomers();int choice;while (1) {printf("1. Check In\n2. Check Out\n3. View Room Status\n4. Exit\n"); scanf("%d", &choice);switch (choice) {case 1:int customerID, roomNumber;printf("Enter customer ID: ");scanf("%d", &customerID);printf("Enter room number: ");scanf("%d", &roomNumber);checkIn(customerID, roomNumber);break;case 2:printf("Enter room number: ");scanf("%d", &roomNumber);checkOut(roomNumber);break;case 3:printf("Enter room number: ");scanf("%d", &roomNumber);viewRoomStatus(roomNumber);break;case 4:exit(0);break;default:printf("Invalid choice\n");}}return 0;}```上述代码实现了一个简单的酒店管理系统,包括客户入住、退房和查询房间状态等功能。
C语言程序设计客房管理系统源码和报告客房管理系统是一种常见的管理系统,它能够实现对酒店客房的预订、入住、退房等操作,有效地管理酒店的客房资源,提高管理效率。
本文将介绍一个简单的C语言程序设计,实现了基本的客房管理功能。
1.功能设计本客房管理系统主要包括以下功能:-显示房间列表:显示所有房间的编号、类型、价格等信息-入住房间:根据用户输入的房间号和入住人信息,将房间状态设置为“入住中”-退房:根据用户输入的房间号,将房间状态设置为“空闲”,并生成退房结算单-查询房间信息:根据用户输入的房间号,显示该房间的详细信息-按房间类型查询:根据用户输入的房间类型,显示该类型的所有房间信息2.数据结构设计为了实现上述功能,我们需要设计合适的数据结构。
-客房类型结构体:包括房间类型名称和价格等信息-客房结构体:包括房间号、类型、状态、入住人信息等信息具体的数据结构定义和全局变量声明如下:```c#define TYPE_NUM 3 // 客房类型数量typedef struct RoomTypechar typeName[20]; // 类型名称double price; // 价格} RoomType;typedef struct Roomint roomNum; // 房间号int type; // 房间类型,对应RoomType数组的下标int status; // 房间状态,0表示空闲,1表示入住中char name[20]; // 入住人姓名} Room;RoomType types[TYPE_NUM] = {{"单人间", 100.0}, {"标准间", 200.0}, {"豪华间", 300.0}}; // 房间类型数组,包含三种类型Room rooms[100]; // 客房数组,最多100个房间int roomNum = 0; // 当前客房数量```3.主程序设计主程序中包含下面几个函数:-显示房间列表:遍历客房数组,输出每个房间的编号、类型和状态-入住房间:根据用户输入的房间号和入住人信息,将房间状态设置为“入住中”-退房:根据用户输入的房间号,将房间状态设置为“空闲”,并生成退房结算单-查询房间信息:根据用户输入的房间号,显示该房间的详细信息-按房间类型查询:根据用户输入的房间类型,显示该类型的所有房间信息具体的主程序设计如下:```c#include <stdio.h>void showRoomLisprintf("房间号类型状态入住人姓名\n");for (int i = 0; i < roomNum; i++)printf("%-5d %-8s %-8s %s\n", rooms[i].roomNum,types[rooms[i].type].typeName,rooms[i].status == 0 ? "空闲" : "入住中", rooms[i].name);}void checkIint roomNum;printf("请输入房间号:");scanf("%d", &roomNum);//检查房间是否存在,并且是否空闲for (int i = 0; i < roomNum; i++)if (rooms[i].roomNum == roomNum)if (rooms[i].status == 0)printf("请输入入住人姓名:");scanf("%s", rooms[i].name);rooms[i].status = 1; // 设置房间状态为“入住中”printf("入住成功!\n");return;} elseprintf("该房间已被占用!\n");return;}}}printf("房间不存在!\n");void checkOuint roomNum;printf("请输入房间号:");scanf("%d", &roomNum);//检查房间是否存在,并且是否入住中for (int i = 0; i < roomNum; i++)if (rooms[i].roomNum == roomNum)if (rooms[i].status == 1)printf("请输入退房人姓名:");scanf("%s", rooms[i].name);rooms[i].status = 0; // 设置房间状态为“空闲”printf("退房成功!\n");//生成退房结算单printf("房间号:%d\n", rooms[i].roomNum);printf("入住人:%s\n", rooms[i].name);printf("房间类型:%s\n", types[rooms[i].type].typeName); printf("房费:%.2f元\n", types[rooms[i].type].price); return;} elseprintf("该房间未入住!\n");return;}}printf("房间不存在!\n");void queryRoomInfint roomNum;printf("请输入房间号:");scanf("%d", &roomNum);//检查房间是否存在for (int i = 0; i < roomNum; i++)if (rooms[i].roomNum == roomNum)printf("房间号:%d\n", rooms[i].roomNum);printf("房间类型:%s\n", types[rooms[i].type].typeName);printf("房费:%.2f元\n", types[rooms[i].type].price);printf("状态:%s\n", rooms[i].status == 0 ? "空闲" : "入住中");printf("入住人:%s\n", rooms[i].name);return;}printf("房间不存在!\n");void queryRoomByTypchar typeName[20];printf("请输入房间类型:");scanf("%s", typeName);int type;//获取房间类型对应的序号for (int i = 0; i < TYPE_NUM; i++)if (strcmp(types[i].typeName, typeName) == 0) type = i;break;}}//查找对应类型的房间int count = 0;for (int i = 0; i < roomNum; i++)if (rooms[i].type == type)count++;printf("房间号:%d\n", rooms[i].roomNum);printf("房间类型:%s\n", types[rooms[i].type].typeName);printf("房费:%.2f元\n", types[rooms[i].type].price);printf("状态:%s\n", rooms[i].status == 0 ? "空闲" : "入住中");printf("入住人:%s\n", rooms[i].name);}}if (count == 0)printf("该类型的房间不存在!\n");}int maiint choice;while (1)printf("\n--------欢迎使用客房管理系统--------\n");printf("1. 显示房间列表\n");printf("2. 入住房间\n");printf("3. 退房\n");printf("4. 查询房间信息\n");printf("5. 按房间类型查询\n"); printf("6. 退出\n");printf("请输入您的选择:"); scanf("%d", &choice);switch (choice)case 1:showRoomList(;break;case 2:checkIn(;break;case 3:checkOut(;break;case 4:queryRoomInfo(;break;case 5:queryRoomByType(;break;case 6:printf("感谢使用客房管理系统,再见!\n");return 0;default:printf("输入有误,请重新输入!\n");break;}}```以上就是一个简单的客房管理系统的C语言程序设计源码和报告,实现了基本的客房管理功能,能够实现客房的预订、入住、退房等操作。
酒店管理系统c语言实训
本次实训将利用C语言开发一个酒店管理系统,该系统将包括以下模块:
1. 登录模块:实现用户登录和权限控制,管理员和普通用户登录后能看到不同的界面。
2. 客房管理模块:管理员可以添加、修改、删除客房信息,普通用户只能查看客房信息和预订客房。
3. 订单管理模块:管理员和普通用户都可以查看订单信息,管理员还可以修改订单状态。
4. 员工管理模块:管理员可以添加、修改、删除员工信息。
5. 数据统计模块:管理员可以查看酒店的收入、客房利用率等统计数据。
该系统将采用文件存储数据,包括客房信息、订单信息、员工信息等。
同时,还将使用结构体、指针等C语言特性实现数据的存储和操作。
此外,系统的界面将使用C语言的图形界面库进行开发,以增加用户的交互性和易用性。
通过本次实训,学生将掌握C语言的基本语法和数据操作方法,了解实际项目的开发流程和技术要求,提高了解决问题的能力和独立开发的能力。
- 1 -。
酒店管理系统c语言课程设计简单酒店管理系统是一个涉及到酒店业务的软件系统,用于酒店前台和后台管理,包括房间预订、入住、退房、客户管理等功能。
本文将介绍一个简单的酒店管理系统的C语言课程设计方案。
该酒店管理系统包括以下功能:1. 登录:用户需要输入正确的用户名和密码才能登录系统。
2. 房间预订:客户可以选择房间类型、入住时间和离店时间,并填写个人信息进行预订。
3. 入住:客户到达酒店后,前台工作人员需要检查客户的预订信息,确认无误后进行入住操作。
4. 退房:客户离开酒店时,前台工作人员需要检查客户的账单并进行结算。
5. 客户管理:可进行客户信息的查询、修改和删除操作。
6. 房间管理:可进行房间信息的查询、添加、修改和删除操作。
7. 统计报表:可以生成各种报表,如客房入住率、客房类型统计等。
以上是该酒店管理系统的基本功能,可以根据需要进行扩展和改进。
本课程设计将着重介绍登录、房间预订、入住和退房等功能的实现方法。
在C语言中,可以使用结构体(struct)和文件操作来实现酒店管理系统。
例如,可以定义一个客房结构体,包含房间号、房间类型、房间价格等信息。
可以使用文件操作将客房信息存储在文件中,实现房间管理功能。
登录功能可以使用用户名和密码进行验证,可以使用文件操作将用户名和对应的密码存储在文件中。
房间预订功能需要进行日期的计算,可以使用C语言的时间函数(time.h)来实现。
入住和退房功能需要进行账单的计算和生成,可以使用结构体和文件操作来实现。
在客户信息、房间信息和账单信息等方面,都需要进行数据的存储和读取操作,可以使用文件操作来实现。
总的来说,酒店管理系统的C语言课程设计可以涉及到很多方面,需要综合考虑各个功能的实现方法和数据存储方式。
通过设计和实现这个系统,可以提高学生的C语言编程能力和软件开发能力。
酒店管理系统1. 引言酒店管理系统是一种用于管理酒店日常运营的软件系统。
它可以帮助酒店管理人员提高工作效率,提供优质的服务,实现酒店的可持续发展。
本文将介绍一个基于C 语言开发的酒店管理系统,包括系统的功能设计、数据库设计、用户界面设计以及系统测试等内容。
2. 功能设计2.1 客房管理客房管理是酒店管理系统最重要的功能之一。
在该功能下,可以实现以下操作:•客房信息录入:输入客房号码、类型、价格等信息。
•客房信息查询:根据客房号码或类型查询客房信息。
•客房信息修改:修改客房的价格、状态等信息。
•客房状态查询:查询客房的入住状态。
2.2 预订管理预订管理是指对客户预订酒店客房的操作。
在该功能下,可以实现以下操作:•房间预订:根据客户需求,预订适合的客房。
•预订查询:查询已预订的客房信息。
•预订取消:取消已预订的客房。
2.3 入住管理入住管理是指客户入住酒店的操作。
在该功能下,可以实现以下操作:•入住登记:输入客户信息,将客户分配到合适的客房。
•入住查询:查询已入住客房的信息。
•退房办理:将已入住客房标记为可用状态。
2.4 结算管理结算管理是指对客户住宿费用进行结算的操作。
在该功能下,可以实现以下操作:•账单生成:根据客户入住情况,生成相应的账单。
•账单查询:查询客户的消费情况。
•结算处理:对客户账单进行结算。
3. 数据库设计酒店管理系统需要使用数据库来存储和管理数据。
以下是数据库设计的关键表格:3.1 客房信息表字段名类型描述RoomID int 客房号码RoomType varchar 客房类型Price float 客房价格Status int 客房状态CreateTime date 创建时间3.2 预订信息表字段名类型描述ReservationID int 预订号码CustomerID int 客户号码RoomID int 客房号码CheckInDate date 入住日期CheckOutDate date 退房日期3.3 入住信息表字段名类型描述CheckInID int 入住号码CustomerID int 客户号码RoomID int 客房号码CheckInDate date 入住日期3.4 账单信息表字段名类型描述BillID int 账单号码CustomerID int 客户号码RoomID int 客房号码TotalAmount float 总金额4. 用户界面设计用户界面是酒店管理系统与用户进行交互的重要环节。
C语言实现酒店管理系统这篇文章主要为大家详细介绍了C语言实现酒店管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下:源码如下:#include<bits/stdc++.h>#include<conio.h>#include <windows.h>#include<string.h>#include<time.h>#define NUM 1000 //控制房间个数int j;void LoginRoom();//登记房屋void SearchRoom();//搜寻房屋void ChangeRoom();//更换住房void OutRoom();//退房void save();//保存信息void load();//载入信息//struct Totalstruct Total{char Name[20];int Sex;int Age;char IDcard[18];int hour;int xx;int yy;int zz;};struct room{int RoomID;char Tel[11];long Price;int Sign;int feiyong;//struct Date Datesum;struct Total Totallist;}Room[NUM];// 将房间个数写入信息void LoginRoom() //登记,注册客房信息函数{int i,n,k;n=0;system("cls");printf(" 用户登记\n");for(k=0;k<=1000;k++){printf("请输入客房号:\n");scanf("%d",&i);if(Room[i-1].Sign==1){printf("对不起,该房间已入住,请重新输入。
附录1.源程序代码#include<stdio.h〉void search();int main(){int s;printf(”—--——--——-——---—--—---———-—--—\n”);printf(" && 长江大酒店欢迎您的光临&&\n");printf(” --—-—---——-——------——-——--——--\n”);printf(” 1。
进入2退出\n”);printf("请您输入您的选择:");scanf(”%d",&s);//输入选项前的数字if(s==1)//判断s是否为1search();elseprintf("抱歉,您的输入有误!\n”);return 0;}void search(){int p[18],q[3],a,b,c,x,y,z;printf("请选择您需要的服务号码:\n1。
预订房间2。
退订房间\n”);scanf(”%d”,&a);//输入服务号码if(a>2||a<1)//判断a是否为1或2{printf("抱歉,您的输入有误,请重新输入!\n”);}else switch(a){case 1://执行预订房间的操作{printf("请您输入您的身份证号码:\n”);scanf(”%d”,&p[18]);//输入身份证18位数字printf("您已成功登入预订系统!!\n");printf(”请您选择预订房间标准的号码:\n”);printf("1。
单人标准间/夜150元 2.双人标准间/夜200元\n3.豪华套房/夜300元 4.总统套房/夜500元\n”);scanf("%d",&b);//输入预订房间的种类switch(b){case 1://执行预订单人标准间的操作printf(”请输入预订天数:\n");scanf(”%d",&x);//输入预订天数printf(”客官需预交款%d元!\n”,x*150);//输出预交款金额printf("1。
C语言程序设计客房管理系统源码和报告公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-《C语言程序设计》综合实验报告一、需求分析编写一个客房管理系统,提供键盘式菜单实现功能选择,功能包括:用户登记、统计、查询和用户信息修改。
软件平台:CODEBLOCKS二、整体设计整个客房管理系统被设计为用户登记模块、统计模块、查询模块和修改模块。
数据以TXT格式存储,支持保存信息。
三、详细设计(1通过函数添加信息到txt。
是(2)统计模块读取txt信息到结构体数组room,提示用户选择统计方式,设置计数器,顺序遍历Room数组,1、计数器记录数组数,即总客房数2、判断每一个数组中的结构体的时间是否和需要查询的日期相同,若相同,计数器加一(3)查询模块调用readfile 函数,将信息读入room结构体数组中,提示用户选择查询方式,通过基本查找算法查找Room 数组。
可以按房间号、价格、房间标记、用户姓名、居民身份证查询。
(4)修改模块调用readfile 函数,读取信息到room 结构体数组,提示用户输入需要修改的房间号,采用基本查找算法在数组中找到要修改的数据,提示用户重新更改房间信息,最后将结构体数组重新写入文件保存。
四、源代码#include <stdio.h>#include <stdlib.h>#include <string.h>选择统计方式 2、按时间统计 1、统计总客房数 遍历每一个结构判断是否和要调用打印函数,是 遍历每一个结构调用readfile (读取文件函判断是否是用户输入需要查询的房修改结构体j 调用saveall 函调用readfile 函数,读读取信息#define M 80//客户结构体typedef struct client{char name[12]; //姓名int sex; //性别int age; //年龄char id[20]; //身份证号int year; //入住时间int month;int date;}CLIENT;//客房结构体struct Hotel{int roomid;int tel; //用户的话int price; //价格int sign; //默认标记为空房间 CLIENT client_list; //客户信息}room[M];void Menu(); //目录界面void dengji(struct Hotel room[]);void savefile(struct Hotel room[],int i);int readfile(struct Hotel room[]);void tongji(struct Hotel room[]);void chaxun(struct Hotel room[]);void printmessage(struct Hotel room[],int n); void xiugai(struct Hotel room[]);//主函数int main(){int n;char reply;Menu();do{printf("请输入选项对应的数字:\n");scanf("%d",&n);while(n!=1&&n!=2&&n!=3&&n!=4){printf("请输入各选项对应的数字!\n"); scanf("%d",&n);}switch (n){case 1:dengji(room);break;case 2:tongji(room);break;case 3:chaxun(room);break;case 4:xiugai(room);break;}printf("是否还要进入其它选项(回复Y或y继续)\n"); scanf(" %c",&reply);}while (reply=='y'||reply=='Y');return 0;}//系统目录void Menu(){printf("************************客房管理系统***************************\n");printf( "\t\t\t 1————登记\n" );printf( "\t\t\t 2————统计\n" );printf( "\t\t\t 3————查询\n" );printf( "\t\t\t 4————修改\n" );printf("******************************************************* ********\n");}//登记客户信息void dengji(struct Hotel room[]){int x,j,i,flag;char answer;do{i=readfile(room);do{flag=0;printf("输入您想入住的房间号:(三位数)\n"); scanf("%3d",&x);for(j=0;j<i;j++){if(room[j].roomid==x){printf("该房间已经被占用!\n");flag=1;}}}while(flag>0);room[i+1].roomid=x;printf("请输入您的电话:(仅支持六位数号码~)\n"); scanf("%d",&room[i+1].tel);printf("入住价格\n");scanf("%d",&room[i+1].price);printf("请输入您的名字\n");scanf("%s",room[i+1].client_);printf("性别:(1表示女,0表示男)\n");scanf("%d",&room[i+1].client_list.sex);printf("您的年龄:\n");scanf("%d",&room[i+1].client_list.age);printf("您的id:\n");scanf("%s",room[i+1].client_list.id);printf( "请输入入住年月日(格式:2015 11 11)\n");scanf("%4d%2d%2d",&room[i+1].client_list.year,&room[i+1].client _list.month,&room[i+1].client_list.date);savefile(room,i+1);printf("是否还要继续登记(回复Y或y继续)\n");scanf(" %c",&answer);}while(answer=='Y'||answer=='y');}//读取txt中的信息int readfile(struct Hotel room[]){FILE *fp;int i;if((fp=fopen("room.txt","r"))==NULL){printf("Failure to open score.txt!\n");exit(0);}for (i=0;!feof(fp);i++){fscanf(fp,"%5d",&room[i].roomid);fscanf(fp,"%6d",&room[i].price);fscanf(fp,"%15d",&room[i].tel);fscanf(fp,"%12s",room[i].client_); fscanf(fp,"%4d",&room[i].client_list.sex); fscanf(fp,"%6d",&room[i].client_list.age); fscanf(fp,"%20s",room[i].client_list.id);fscanf(fp,"%7d",&room[i].client_list.year); fscanf(fp,"%5d",&room[i].client_list.month); fscanf(fp,"%5d",&room[i].client_list.date); }fclose(fp);return i;}//保存结构体数组信息到文件void savefile(struct Hotel room[],int i){FILE *fp;if((fp = fopen("room.txt","a"))==NULL){printf("Failure to open score.txt!\n");exit(0);}fprintf(fp,"%5d%6d%15d%12s%4d%6d%20s%7d%5d%5d",room[i].roomid,room[i].price,room[i].tel,room[i].client_,room[i].client_list.sex,room[i].client_list.age,room[i].client_list.id,room[i].client_list.year,room[i].client_list.month,room[i].client_list.date);fclose(fp);}//统计模块void tongji(struct Hotel room[]){int n,x;int year,month,day,j,count=0;x=readfile(room);printf("请选择统计方式:1>统计房客数,2>统计某一天的房客数\n");scanf("%d",&n);switch (n){case 1:printf("客房总数为:%d\n",x);break;case 2:printf("请输入具体时间:\n");scanf("%d%d%d",&year,&month,&day);for(j=0;j<x;j++){if(room[j].client_list.year==year&&room[j].client_list.month==m onth&&room[j].client_list.date==day){count++;}}printf("%d年%d月%d号的房客数为%d",year,month,day,count);}}//查询模块void chaxun(struct Hotel room[]){int n,x,roomid,price,j;char name[12],id[20];x=readfile(room);printf("按房间号查询请按1;按价格查询请按2;按用户姓名查询请按3;按身份证号码查询请按4\n");scanf("%d",&n);switch(n){case 1:printf("请输入房间号:\n");scanf("%d",&roomid);for(j=0;j<x;j++){if(room[j].roomid==roomid){print(room,j);}}break;case 2:printf("请输入价格:\n");scanf("%d",&price);for(j=0;j<x;j++){if(room[j].price==price){print(room,j);}}break;case 3:printf("请输入客户姓名:\n");scanf("%s",name);for(j=0;j<x;j++){if(strcmp(room[j].client_,name)==0) {print(room,j);}}break;case 4:printf("请输入身份证号码:\n");scanf("%s",id);for(j=0;j<x;j++){if(strcmp(room[j].client_list.id,id)==0) {print(room,j);}}}}//打印void print(struct Hotel room[],int j){printf("%5d%6d%15d%12s%4d%6d%20s%7d%5d%5d\n",room[j].roomid,room[j].price,room[j].tel,room[j].client_,room[j].client_list.sex,room[j].client_list.age,room[j].client_list.id,room[j].client_list.year,room[j].client_list.month,room[j].client_list.date);}void printmessage(struct Hotel room[],int n){int j;for(j=0;j<n;j++){printf("%5d%6d%15d%12s%4d%6d%20s%7d%5d%5d\n", room[j].roomid,room[j].price,room[j].tel,room[j].client_,room[j].client_list.sex,room[j].client_list.age,room[j].client_list.id,room[j].client_list.year,room[j].client_list.month,room[j].client_list.date);}}//修改模块void xiugai(struct Hotel room[]){int i, m, roomid;m = readfile(room);printf("请选择房间号:\n");scanf("%d",&roomid);for(i=0;i<m;i++){if(room[i].roomid==roomid){printf("请输入您的电话:\n");scanf("%d",&room[i].tel);printf("入住价格\n");scanf("%d",&room[i].price);printf("请输入您的名字\n");scanf("%s",room[i].client_);printf("性别:\n");scanf("%d",&room[i].client_list.sex);printf("您的年龄:\n");scanf("%d",&room[i].client_list.age);printf("您的id:\n");scanf("%s",room[i].client_list.id);scanf("%4d%2d%2d",&room[i].client_list.year,&room[i].client_lis t.month,&room[i].client_list.date);}}saveall(room,m);}//保存所有信息到txt文件void saveall(struct Hotel room[],int m){int j;FILE *fp;if((fp = fopen("room.txt","w"))==NULL){printf("Failure to open score.txt!\n");exit(0);}for(j=0;j<m;j++){fprintf(fp,"%5d%6d%15d%12s%4d%6d%20s%7d%5d%5d",room[j].roomid,room[j].price,room[j].tel,room[j].client_,Room[j].client_list.sex,room[j].client_list.age,room[j].client_list.id,room[j].client_list.year,room[j].client_list.month,room[j].client_list.date);}fclose(fp);}五、调试与测试主界面:1、登记功能测试:情况1:客户需要入住的房间号被占用,提示已经被占用,重新选择情况2:选择的房间没有被占用,提示用户输入登记信息,登记完成后系统后台执行保存,弹出窗口询问是否继续登记下一个顾客2、统计功能测试:情况1:选择统计客房总数,系统返回总客房数情况2:选择按日期统计,系统返回具体某天的客房总数3、查询功能测试:情况1:按房间号查询情况2:按价格查询情况3:按用户名查询情况4:按身份证号查询4、修改功能测试:输入需要修改的房间后,系统提示用户重新写入房间信息六、总结本程序可通过键盘选择目录对应的功能,提供登记、查询、统计、修改四大功能。
c语言课程设计案例精编第八章酒店客房管理系统vc实现#include <stdio.h>#include <conio.h>#include <windows.h>#include <string.h>//#include <stdlib.h>//#include <time.h>#define TRUE 1#define FALSE 0#define N 200 /*定义酒店客房的最大数量,用户可自行设置*//*与room记录格式化输出有关的宏定义*/#define HEADER1 "| Number |Price| E_F| C_Name | C_IC| Date |CNum|C_AP| \n"#define FORMAT1"|%-10s|%5d|%4d|%-10s|%10s|%4d-%2d-%2d|%4d|%4d|\n"#define DATA1lll->num,lll->price,lll->empty_flag,lll->client_name,lll->client_ic,lll->client _date.da_year,lll->client_date.da_mon,lll->client_date.da_day,lll->client_numdays,lll->client_ap/*与member记录格式输出有关的宏定义*/#define HEADER2 "| Number | Name | Sex|Age | IC | Tele | \n"#define FORMAT2 "|%-12s|%-10s|%-4s|%4d|%15s|%15s|\n"#define DATA2lll->data.num,lll->,lll->data.sex,lll->data.age,lll->data.ic,lll->dat a.teleint saveflag=0; //是否需要存盘的全局标志变量int count1=0, count2; //分别保存客房文件或会员文件中的记录条数struct date{int da_year;int da_mon;int da_day;}sysTime;int currentYear; /*保存当前年份*/int currentMonth; /*保存当前月份*/int currentDay; /*保存当前日期*//*定义与客房有关的数据结构*/typedef struct room /*标记为room*/{char num[15]; /*客房编号*/int price; /*客房价格*/int empty_flag; /*客房空闲标记,1表示空闲,0表示未空闲*/char client_name[15]; /*顾客姓名*/char client_ic[20]; /*顾客身份证号*/struct date client_date; /*顾客入住日期*/int client_numdays; /*顾客入住天数*/int client_ap; /*顾客预付款advance payment(ap)入住时,除了房费,另收压金至少100元,即ap>=price*client_numdays+100*/ }ROOM;ROOM GR[N]; //定义客房结构数组/*定义与会员有关的数据结构*/typedef struct member /*标记为member*/{char num[15]; /*会员编号*/char name[15]; /*会员姓名*/char sex[4]; /*会员性别M或F,Male:男性,Female:女性*/int age; /*会员年龄*/char ic[20]; /*会员身份证号*/char tele[15]; /*会员联系电话*/};/*定义每条会员记录的数据结构,标记为:member_node*/ typedef struct member_node{struct member data; /*数据域*/struct member_node *next; /*指针域*/}Member_Node,*Member_Link; /*Member_Node为member_node 类型的结构变量,*Member_Link为member_node类型的指针变量*/ Member_Node *p2,*r2;//定义会员记录指针变量Member_Link ll; //定义会员指针链表/******************************↓函数声明↓******************************///room相关int AddRoom(ROOM tp[],int n); //fucntion1 void QueryRoom(ROOM tp[],int n); //fucntion2 void ModifyRoom(ROOM tp[],int n); //fucntion3int DelRoom(ROOM tp[],int n); //function4 void SortRoom(ROOM tp[],int n); //function5 void CountRoom(ROOM tp[],int n); //function6 void SaveRoom(ROOM tp[],int n);//member相关void AddMember(Member_Link l); //function7 void QueryMember(Member_Link l); //function8 void ModifyMember(Member_Link l); //function9 void DelMember(Member_Link l); //function10 void SortMember(Member_Link l); //function11 void CountMember(Member_Link l); //function12 void SaveMember(Member_Link l);//R&Rvoid RegisterRoom(ROOM tp[],int n,Member_Link ll); //function13 void ReturnRoom(ROOM tp[],int n,Member_Link ll); //function14/******************************↑函数声明↑******************************//********************************************************** *********作用:用于定位数组中符合要求的记录,并返回保存该记录的数组元素下标值参数:findmess[]保存要查找的具体内容; nameornum[]保存按什么在数组中查找;*********************************************************** *********/int LocateRoom(ROOM tp[],int n,char findmess[],char nameornum[]) {int i=0;if(strcmp(nameornum,"num")==0) /*按客房编号查询*/{while(i<n){if(strcmp(tp[i].num,findmess)==0) /*若找到findmess客房编号的客房记录*/return i;i++;}}else if(strcmp(nameornum,"name")==0) /*按顾客姓名查询已入住客房*/{while(i<n){if(strcmp(tp[i].client_name,findmess)==0) /*若找到findmess 顾客姓名的客房记录*/return i;i++;}}return -1; /*若未找到,返回一个整数-1*/}/********************************************************** ***作用:用于定位会员链表中符合要求的节点,并返回指向该节点的指参数:findmess[]保存要查找的具体内容; nameornum[]保存按什么查找;在单链表l中查找;*********************************************************** ***/Member_Node* LocateMember(Member_Link l,char findmess[],char nameornum[]){Member_Node *r;if(strcmp(nameornum,"num")==0) /*按会员编号查询*/{r=l->next;while(r){if(strcmp(r->data.num,findmess)==0) /*若找到findmess值的会员编号*/return r;r=r->next;}}else if(strcmp(nameornum,"name")==0) /*按会员姓名查询*/r=l->next;while(r){if(strcmp(r->,findmess)==0) /*若找到findmess值的会员姓名*/return r;r=r->next;}}return 0; /*若未找到,返回一个空指针*/}/***********倒计时函数***********/void countdown(int i){for(;i>0;i--){Sleep(1000);printf("\b\b");printf("%d",i);}Sleep(1000);printf("\n");}/*输入字符串,并进行长度验证(长度<lens)*/ void stringinput(char *t,int lens,char *notice){char n[255];do{printf(notice); /*显示提示信息*/scanf("%s",n); /*输入字符串*/if(strlen(n) > (size_t)lens){printf("exceed the required length! \n");} /*进行长度校验,超过lens值重新输入*/}while(strlen(n) > (size_t)lens);strcpy(t,n); /*将输入的字符串拷贝到字符串t中*/}/*判断是否是闰年函数*/int isLeapyear(int year){/*闰年的判断:(1)year被4整除,并且year不被100整除或(2)year被4整除,并且year被400整除*/ if(year%4==0&&year%100||year%400==0)return 1 ;elsereturn 0 ;}unsigned char* GetPassword(unsigned char*pw){unsigned char ch ;int i=0, hx_flag;while(i < 30 ){ch = (unsigned char)getch();hx_flag =TRUE;if ( ch == '\r') //ch == '\r' <==> ch == 13 //我说老是实现不了回车结束, == 用成= 了=_=||{pw[i++]=0; //0-->null......p[0]=null;break;}else if ( ch >= 32 && ch <= 126) /*所有可打印字符*/{pw[i++]=ch;}else if ( ch == 8 && i> 0 ) /*退格键*/{pw[i--] = 0;hx_flag = FALSE;putchar( ch );putchar( ' ' );putchar( ch );}elsehx_flag = FALSE;if(hx_flag)putchar('*');}pw[i]=0; //?-->解决数组显示乱码问题,MS注释掉依旧不乱码, 可能在判断回车时, 已经用了该语句return pw;}void menu(){char ch; //function15中保存y,Y,n,Nint selectNum;ROOM GR[N]; /*定义客房结构数组*///printf("\n");system("cls");printf("[ROOM] [Member] [R&R] \n");//用笨方法:space, 不用tabprintf("1.Add 7.Add 13.Register \n");printf("2.Query 8.Query 14.Return \n");printf("3.Modify 9.Modify 15.Exit \n");printf("4.Delete 10.Delete \n");printf("5.Sort 11.Sort \n");printf("6.Count 12.Count \n");//system("pause"); //暂停, 并显示"按任意键继续"//Sleep(1000);loop:printf("\n");printf("enter a number to selcet the function: ");scanf("%d",&selectNum);if(selectNum >15){printf("no such a function, please try again!");goto loop;}switch(selectNum){case 1: count1=AddRoom(GR,count1); break; //增加客房记录case 2: QueryRoom(GR,count1); break; //查询客房服务case 3: ModifyRoom(GR,count1);break; //修改客房记录case 4: count1=DelRoom(GR,count1);break; //删除客房记录case 5: SortRoom(GR,count1);break; //排序客房记录case 6: CountRoom(GR,count1);break; //统计客房记录case 7: AddMember(ll);break; //增加会员记录case 8: QueryMember(ll);break; //查询会员记录case 9: ModifyMember(ll);break; //修改会员记录case 10:DelMember(ll);break; //删除会员记录case 11:SortMember(ll);break; //排序会员记录case 12:CountMember(ll);break; //统计会员记录case 13:RegisterRoom(GR,count1,ll);break; //登记住宿case 14:ReturnRoom(GR,count1,ll);break; //退宿case 15:{ system("cls");printf("\n=====>Are you really exit the Hotel Guest Room Management System?(y/n):\n");scanf("%c",&ch);printf("test\n");if(ch=='y'||ch=='Y'){SaveRoom(GR,count1);SaveMember(ll);exit(0);}}}}/***************与客房相关的函数*******************//**************1.增加客房记录**************/int AddRoom(ROOM tp[],int n){char ch,flag=0,num[15];int i;system("cls");while(1) /*一次可输入多条记录,直至输入客房编号为0的记录结点添加操作*/{while(1) /*输入客房编号,保证该客房编号没有被使用,若输入客房编号为00,则退出添加记录操作*/{stringinput(num,15,"input room number(press '00'return menu):"); /*格式化输入客房编号并检验*/flag=0;if(strcmp(num,"00")==0) /*输入为00,则退出添加操作,返回主界面*/{menu();}i=0;while(i<n) /*查询该客房编号是否已经存在,若存在则要求重新输入一个未被占用的客房编号*/{if(strcmp(tp[i].num,num)==0){flag=1;break;}i++;}if(flag==1) /*提示用户是否重新输入*/getchar();printf("=====>The number %s is existing,please tryagain(y/n)?",num);scanf("%c",&ch);if(ch=='y'||ch=='Y')continue;elsereturn n;}else{break;}}/*给客房记录赋值*/strcpy(tp[n].num,num); /*将字符串num拷贝到tp[n].num中*/ printf("Room Price:");scanf("%d",&tp[n].price);tp[n].empty_flag=1; /*客房空闲标记,1表示空闲,0表示未空闲*/ strcpy(tp[n].client_name,""); /*顾客姓名*/strcpy(tp[n].client_ic,""); /*顾客身份证号*/tp[n].client_date.da_year=0; /*顾客入住日期*/tp[n].client_date.da_mon=0;tp[n].client_date.da_day=0;tp[n].client_numdays=0; /*顾客入住天数*/tp[n].client_ap=0; /*顾客预付款初始为0,ap>=price*client_numdays+100*/saveflag=1;n++;printf(">>>>press any key to start next record!");getchar(); getchar();}return n;}/**************2.查询客房记录**************/void QueryRoom(ROOM tp[],int n) /*按客房编号或入住顾客姓名查询*/{int select; /*1:按客房编号查,2:按入住顾客姓名查,其他:返回主界面(菜单)*/char searchinput[20]; /*保存用户输入的查询内容*/int p=0;if(n<=0) /*若客房记录为空*/{system("cls");printf("=====>No Room Record!\n");getchar();getchar();return;}system("cls");cprintf("=====>1 Search by room number =====>2 Search by client name");cprintf("please choice[1,2]:");scanf("%d",&select);if(select==1) /*按客房编号查询*/{stringinput(searchinput,15,"input the existing room number:");p=LocateRoom(tp,n,searchinput,"num");/*在数组tp中查找编号为searchinput值的元素,并返回该数组元素的下标值*/if(p!=-1) /*若p!=-1*/{printf("---------------------------------------------");printf("Room Number:%s",tp[p].num);printf("Room Price:%d",tp[p].price);printf("Room Empty_flag(1:Empty):%d",tp[p].empty_flag);printf("Client_name:%s",tp[p].client_name);printf("Client_ic:%s",tp[p].client_ic);printf("Client_date:%d-%d-%d",tp[p].client_date.da_year,tp[p].client_dat e.da_mon,tp[p].client_date.da_day);printf("Client_numdays:%d",tp[p].client_numdays);printf("Client_ap:%d",tp[p].client_ap);printf("---------------------------------------------");printf("press any key to return");getchar(); getchar();}else{printf("=====>Not find this room!\n");getchar();getchar();}}else if(select==2) /*按入住顾客姓名查询*/{stringinput(searchinput,15,"input the existing client name:");p=LocateRoom(tp,n,searchinput,"name");if(p!=-1){ printf("---------------------------------------------");printf("Room Number:%s",tp[p].num);printf("Room Price:%d",tp[p].price);printf("Room Empty_flag(1:Empty):%d",tp[p].empty_flag);printf("Client_name:%s",tp[p].client_name);printf("Client_ic:%s",tp[p].client_ic);printf("Client_date,%d-%d-%d",tp[p].client_date.da_year,tp[p].client_dat e.da_mon,tp[p].client_date.da_day);printf("Client_numdays:%d",tp[p].client_numdays);printf("Client_ap:%d",tp[p].client_ap);printf("-------------------------------------------。
C语⾔实现简单酒店管理系统本⽂实例为⼤家分享了C语⾔实现酒店管理系统的具体代码,供⼤家参考,具体内容如下⼀、问题描述系统应具有以下主要功能:登记⼊住:从键盘输⼊住信息:房间层数,房间号码等;查询⼊住情况,查询当前费⽤,退房、退出系统等功能。
⼆、基本要求(1)、登记⼊住。
可以输⼊多个信息,实现本系统数据的初始化。
(2)、列出所有的⼊住情况,⽤于顾客查询以及办理⼊住⼿续。
(3)、查询当前费⽤:显⽰顾客实时费⽤,便于顾客查询和退房时进⾏付费。
(4)、退房:办理退房⼿续,修改系统内信息,将此顾客的住房置空。
(5)、退出系统:对此次操作中信息的增删改后的数据写⼊⽂件中,保存后退出。
#include<stdio.h>#include<stdlib.h>#include<time.h> //调⽤系统的时间,通过时间的增减计算费⽤#include<string.h>#include<windows.h>#define N 10#define HOURROOM 10#define NORMALROOM 120#define BIGROOM 300#define WORTHROOM 500#define GREATROOM 800struct room_message{int number; //房间号int people; //有⽆⼊住int floor; //楼层数(不同楼层房间类型不同)time_t time; //⼊住时间,⽆⼈住则置空}ROOM[100];void BuildRoom(){ //创建房间的函数,对系统进⾏数据的初始化FILE *fp=NULL;int i,j;if((fp=fopen("roommessage.dat","r"))==NULL){fp=fopen("roommessage.dat","w");for(i=0;i<N;i++){for(j=0;j<N;j++){ROOM[i* 10+j].number= j;ROOM[i* 10+j].floor= i;ROOM[i* 10+j].people= 0;ROOM[i* 10+j].time= 0;fwrite(&ROOM[i* 10+j],sizeof(struct room_message),1,fp);}}}else {for(i=0;i<N;i++){for(j=0;j<N;j++){fread(&ROOM[i* 10+j],sizeof(struct room_message),1,fp);}}}fclose(fp);}void Printpay(int floor,int room,int fee,int people){ //打印所需费⽤,根据时间计算费⽤time_t time1,time2;int a;time1 = ROOM[floor*10+room].time;time2 = time(NULL);if(people==0){printf("该房间没有⼈\n");}else {if(floor<2){a = ((time2-time1)/3600)+1;printf("该房间的费⽤为%d元\n",a*fee);}else{a=(((time2-time1)/3600)/24)+1;printf("该房间的费⽤为%d元\n",a*fee);}}}void CheckOut(){ //退房函数,引⽤计算费⽤函数,并更改⼊住情况int roomnuber,choose,a,b,floor,room,fee;FILE *fp=NULL;do{printf("\n请输⼊您想退房的房间的房间号:");scanf("%d",&roomnuber);floor=(roomnuber / 100) - 1;room=roomnuber%100;floor = (roomnuber/100)-1 ;room = (roomnuber%100)-1;if(floor>9||floor<0||room<0||room>9){printf("您的输⼊有误,请重新在1-9之间输⼊\n");}}while(floor>9||floor<0||room<0||room>9);printf("您要退的房间号为%d,它是",roomnuber);if(floor==0||floor==1){printf("钟点房\n");fee=HOURROOM;}if(floor==2||floor==3){printf("标准间\n");fee=NORMALROOM;}if(floor==4||floor==5){printf("商务间\n");fee=BIGROOM;}if(floor==6||floor==7){printf("⾏政套房\n");fee=WORTHROOM;}if(floor==8||floor==9){printf("豪华套房\n");fee=GREATROOM;}do{printf("\n您是否确定要退房。
C语言旅馆信息管理程序在这篇文章中,我将详细介绍一个名为C语言旅馆信息管理程序的方案。
该方案旨在帮助旅馆管理人员有效地管理客户信息、房间预订和入住记录等。
1. 简介旅馆信息管理程序是一个基于C语言开发的应用程序,它提供了一个用户友好的界面,使旅馆管理人员能够轻松地管理客户信息和房间预订。
该程序具有以下主要功能:- 客户信息管理:包括添加新客户、编辑客户信息、删除客户等操作。
- 房间管理:包括房间预订、取消预订、查询房间状态等操作。
- 入住记录管理:记录客户入住信息,包括入住日期、离店日期、房间号等。
2. 程序设计该程序的设计采用模块化的方式,分为以下几个模块:- 主菜单模块:显示主菜单选项,接受用户输入并调用相应的功能模块。
- 客户信息管理模块:提供添加、编辑、删除客户信息的功能。
- 房间管理模块:提供房间预订、取消预订、查询房间状态的功能。
- 入住记录管理模块:记录客户入住信息并显示入住记录。
程序中使用了结构体来存储客户信息和房间信息。
每个客户信息包括姓名、电话号码、身份证号码等字段。
每个房间信息包括房间号、房间类型、房间状态等字段。
3. 功能实现下面将详细介绍每个功能模块的实现方法:- 主菜单模块:显示菜单选项,并使用switch语句根据用户输入调用相应的功能模块。
- 客户信息管理模块:使用链表数据结构来存储客户信息。
添加客户信息时,创建一个新的节点并将其插入链表中;编辑客户信息时,根据用户输入查找对应的节点并修改信息;删除客户信息时,根据用户输入查找对应的节点并删除。
- 房间管理模块:使用数组来存储房间信息。
预订房间时,根据用户输入查找可用的房间并修改房间状态;取消预订时,根据用户输入查找已预订的房间并修改房间状态;查询房间状态时,根据用户输入显示相应的房间状态。
- 入住记录管理模块:使用文件来存储入住记录。
每次有客户入住时,将入住信息写入文件中;显示入住记录时,从文件中读取信息并显示。
4. 程序测试在开发过程中,我们应该对程序进行充分的测试以确保其功能正常。
程序代码N:最终改进版代码(利用结构体储存多种类型的数据)好处:比数组能储存更多类型的数据!#in clude<iostream>#in clude<stri ng>#i nclude<cstdlib>〃常用函数库usingn amespacestd;/*在c++中struct和类的区别在于struct不能有方法,所有成员是public的*/ structRoom{in tNumber;in tPrice;in tState;in tdays;stri ngName;stri ngPho ne;stri ngID;};//room;可以在声明struct的时候声明一个struct实例Roomroom[80];classBookRoom//定义预定房间类{private:stri ngcName;// 顾客姓名in tstayTime;// 预定天数introomType;//房间类型(1.标准单人间2.大床房3.标准双人间4.套房)stringphoneNum;// 预留手机号public:voidsetData(){stri ngn ame;in ttime;in ttype;stri ngnum;coutvv"您好,请输入您的姓名:"<<endl;cin>>name;cName=name;coutvv"预定天数为:"<<endl;cin>>time;stayTime=time;coutvv"想要预定的房间类型:1.标准单人间100/天2.大床房200/天3.标准双人间300/ 天4.套房400/天"<<endl;cin»type;roomType=type;coutvv"预留手机号:"<<endl;cin>>num;phoneNum=num;};voidBook(){coutvv"正在预定…"<<endl;switch(this->roomType){case1:for(i nti=0;iv20;i++){if(room[i].State==O)〃房间无人占用且无人预定{room[i].days=this->stayTime;room[i].Name=this->cName;room[i].Ph on e=this->ph on eNum;room[i].Price*=this->stayTime;coutvv"预定成功!房间号:"vvroom[i].Numbervvendlvvendl;room[i].State=1;break;〃已被预订}elsecoutvvroom[i].Numbervv"号房间已有人"vvendl;}break;case2:for(i nti=20;i<40;i++){if(room[i].State==0){room[i].days=this->stayTime;room[i].Name=this->cName;room[i].Ph on e=this->ph on eNum; room[i].Price*=this->stayTime;cout«"预定成功!房间号:"v<room[i].Numberv<endl«endl; room[i].State=1;break;}elsecout<<room[i].Number<<"号房间已有人"<<endl;}break;case3:for(i nti=40;i<60;i++){if(room[i].State==0){room[i].days=this->stayTime;room[i].Name=this->cName;room[i].Ph on e=this->ph on eNum; room[i].Price*=this->stayTime;cout«"预定成功!房间号:"<<room[i].Number<<endl«endl; room[i].State=1;break;}elsecout<<room[i].Number<<"号房间已有人"<<endl;}break;case4:for(i nti=60;i<80;i++){if(room[i].State==0)room[i].days=this->stayTime;room[i].Name=this->cName;room[i].Ph on e=this->ph on eNum; room[i].Price*=this->stayTime;cout«"预定成功!房间号:"v<room[i].Numberv<endl«endl; room[i].State=1;break;}elsecout<<room[i].Number<<"号房间已有人"<<endl;}break;default:cout<<" 您输入的房间类型有误!"<<e ndl;}};};classCheckIn〃定义办理入住类{private:stri ngcName;stri ngcSex;stri ngidNum;// 身份证号in tcheck_i nDate;// 入住日期in tstayTime;in troomType;stri ngph on eNum;public:voidu nbooked(){stri ngn ame;stri ngsex;stri ngid num;in tdate;in ttime;in ttype;stri ngnum;coutvv"客户姓名:"<<endl;cin>>name;cName=name;coutvv"客户性别:"<<endl;cin>>sex;cSex=sex;coutvv"客户身份证号:"<<endl;cin>>idnum;idNum=idnum;coutvv"入住日期:"<<endl;cin>>date;check_inDate=date;coutvv"占用天数:"<<endl;cin>>time;stayTime=time;coutvv"房间类型:1.标准单人间100/天2.大床房200/天3.标准双人间300/天4.套房400/ 天"vvendl;cin>>type;roomType=type;coutvv"客户手机号:"vvendl;cin>>num;phoneNum=num;switch(this->roomType){case1:for(i nti=0;iv20;i++){if(room[i].State==O){room[i].days=this->stayTime;room[i].Name=this->cName;room[i].Ph on e=this->ph on eNum;room[i].Price*=this->stayTime;room[i] .I D=this->idNum;coutvv"入住成功!房间号:"vvroom[i].Numbervvendlvvendl;coutvv"请支付200 元押金"vvendlvvendl;room[i].State=1;break;}elsecoutvv"抱歉,该房间类型没有了"vvendl;}break;case2:for(i nti=20;iv40;i++){if(room[i].State==0){room[i].days=this->stayTime;room[i].Name=this->cName;room[i].Ph on e=this->ph on eNum;room[i].Price*=this->stayTime;cout«"入住成功!房间号:"<<room[i].Number<<endl«endl;cout«"请支付400 元押金"<<endl«endl;room[i].State=1;break;}elsecoutvv"抱歉,该房间类型没有了"<<endl;}break;case3:for(i nti=40;i<60;i++){if(room[i].State==0){room[i].days=this->stayTime;room[i].Name=this->cName;room[i].Ph on e=this->ph on eNum;room[i].Price*=this->stayTime;room[i] .I D=this->idNum;cout«"入住成功!房间号:"<<room[i].Number<<endl«endl;cout«"请支付600 元押金"<<endl«endl;room[i].State=1;break;}elsecoutvv"抱歉,该房间类型没有了"<<endl;}break;case4:for(i nti=60;i<80;i++){if(room[i].State==0){room[i].days=this->stayTime;room[i].Name=this->cName;room[i].Ph on e=this->ph on eNum;room[i].Price*=this->stayTime;cout«"入住成功!房间号:"<<room[i].Number<<endl«endl;cout«"请支付800 元押金"<<endl«endl;room[i].State=1;break;}elsecoutvv"抱歉,该房间类型没有了"<<endl;}break; default:cout<<" 您输入的房间类型有误!"<<e ndl;}}voidbooked(){stri ngcompareltem;stri ngid_ num;cout«"请输入您的姓名或者手机号:"<<endl;cin»compareltem;for(i nti=0;i<80;i++){if(room[i].Name==compareltem||room[i].Ph on e==compareItem){cout«"验证成功!请支付:"<v(room[i].Price*2)vv" 元押金"<<endl;cout«" 请登记客户的身份证号:"<<e ndl;ci n> >id_ nu m;idNum=id _nu m;room[i] .I D=idNum;cout«"房间号为:"v<room[i].Numberv<endl<<"欢迎入住!"<<endl«endl; break;}}}};classcheckOut{private:stri ngn ame;intnu mber;in tdays;in tprice;public:voidcheckout(){in texpe nse;coutvv"请输入房间号:"<<endl;cin>>number;coutvv"请输入姓名:"<<endl;cin>>name;cout«"请输入实际住宿天数:"<<endl;cin>>days;for(i nti=0;i<80;i++){if((room[i].Name==n ame )&&(ro om[i].Number==nu mber)){expe nse=days*(room[i].Number/100*100);coutvv"房间号为"<<room[i].Number<<"的房间实际消费为"<<expense<<"元"<<e ndl;coutvv"押金为:"v<room[i].Price<vendl;if(expe nse>room[i].Price)cout<<" 请补交"<<(expe nse-room[i].Price)<<" 元"<<e ndl;elsecoutvv"退回:"<<(room[i].Price-expense)<<" 元"<<endl;break;}elsecout<<room[i].Numbervv"号房不符合"<<endl;}coutvv"房费核算清后请安任意键继续"<<endlvvendl;system("pause");coutvv"感谢入住本酒店,欢迎下次光临!"vvendlvvendl;}};voidme nu(){"<<e ndl;coutvv"欢迎使用酒店管理系统!cout«"请选择:"<<endl; cout<<"1.预定房间"<<endl;cout<<"2.办理入住"<<endl;cout<<"3.退房结账"<<endl;cout<<"4.退出系统"<<endl;}voidi ni t(){intn=101;for(i nti=0;i<20;i++){room[i].Number =n++; room[i].Price=100; room[i].State=0; }n=201;for(i nti=20;i<40;i++){room[i].Number =n++; room[i].Price=200; room[i].State=0; }n=301;for(i nti=40;i<60;i++){room[i].Number =n++;room[i].Price=300; room[i].State=0;}n=401;for(i nti=60;i<80;i++){room[i].Number =n++; room[i].Price=400;room[i].State=0;}}in tmai n(void){ini t();in tflag=1;while(flag){menu();intc;cin> >c;switch(c){case1:{BookRoom*a=n ewBookRoom;a->setData();a->Book();break;case2:{CheckI n*b=n ewCheckI n;coutvv"您有预定吗?1.已预定2.未预定"<<endl; intc;cin> >c;switch(c){case1:{b->booked();break;}case2:{b-> un booked();break;}default:cout<<"输入有误!"<<e ndl;}break;}case3:{checkOut*c =n ewcheckOut;c->checkout();break;}case4:{cout«"谢谢使用,再见!"<<endl;flag=0;break;}default:cout<<"输入有误!"<<e ndl;}}return。