C语言课程设计--酒店房间登记与计费管理系统程序代码.doc
- 格式:doc
- 大小:42.50 KB
- 文档页数:7
《C语言程序设计》课程设计报告学院: _专业班级:学生姓名:学号:设计地点(单位)________ 计算机自主学习中心 ________设计题目:___ 酒店房间登记与计费管理系统设计完成日期:年月日指导教师评语: ______________________ ___________________________________________________________________________ ___________________________________________________________________________ ___________________________________________________成绩(五级记分制):______ __________指导教师(签字):________ ________摘要本次C语言课程设计我选择的设计任务是客房管理系统设计,这个管理系统是用C语言在VC 6.0 c++的编译器编译而成的。
客房管理系统包括客户基本信息的录入、房间统计、用户个人费用及住房信息查询、自动结账、退出系统功能等。
系统的开发主要由分析、查阅相关书籍和参考资料、程序设计、编写代码、运行实施、调试和测试、维护和修改等阶段组成,其中信息管理和自动运行为开发的重点。
在程序设计中结构体的调用与各函数、数组的调用为编译的重点部分。
关键词:结构体函数数组课程设计任务书设计题目:酒店房间登记与计费管理系统设计教研室主任:指导教师:伍建全/雷亮/焦晓军陈应祖/杨治明2012年1月1日目录1. 软件需求说明书 (7)1.1需求分析 (7)1.2软件功能简介 (7)1.2.2 查询房间入住情况 (7)1.2.3 查询当前费用 (7)1.2.4 结账退房 (7)1.3界面、数据结构要求 (7)2. 系统分析与设计 (8)2.1软件界面设计 (8)2.1.1首页欢迎界面 (8)2.1.2 登记入住界面 (8)2.1.3 客户入住信息查询界面 (9)2.1.4 客户个人费用查询界面 (10)2.1.5 客户退房结账界面 (10)2.1.6 客户结账收退支付费用结账界面 (11)2.1.7 用户退出系统界面 (11)2.2软件的数据(结构)设计 (12)2.3软件的算法设计 (13)2.3.1主要结构模块框图 (13)2.3.2 主要流程图 (13)2.3.2 具体模块使用结构流程 (13)3.软件的实现 (15)3.1 核心功能再现 (15)3.2关键代码分析 (31)3.2.1int dengji() (31)3.2.2int lookfor_room() (31)3.2.3int lookfor_price() (32)3.2.4 int tuifang() (32)4.软件测试 (33)4.1 函数简介 (33)4.2 测试用例 (33)4.2.1 void welcome(); //首页欢迎界面 (33)4.2.2 int dengji() (33)4.2.3 int lookfor_room();//用来查询房间入住情况 (33)4.2.4 int lookfor_price(); //用来查询当前费用 (33)4.2.5 int tuifang(); //用来结账退房 (34)4.2.6 void yingzhifu(); //用来结账付款 (34)4.2.7 int quit(); //退出函数 (34)5.软件使用说明书 (35)6.致谢 (37)7.参考文献 (38)7.1 何钦铭颜晖.《C语言程序设计》.高等教育出版社.2008年 (38)7.2 谭浩强张基温.《C语言程序设计教程》.高等教育出版社.2006年 (38)7.3 Al Kelley等《C语言解析教程》,Al Kelley等,机械工业出版社,2006.1 (38)1 软件需求说明书1.1需求分析随着时代的进步、科学的发展,对信息技术的要求也越来越高。
#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语言程序设计》课题报告题目名称:酒店房间登记与计费管理系统班级:电气4班组长:王树锦组员:贾俊枫王莹许茗王冠指导教师:褚洪波一、程序功能描述1、屏幕上出现一个界面,让操作员能够方便的选择所需要进行的操作,包括登记入住、查询房间的入住情况、查询当前费用、结账退房等操作.2、对不同标准的房间实施不同的收费标准,也可以按天收费或按小时收费,可根据顾客需要在登记入住时进行选择。
3、在结账退房时,根据入住时间,计费方式和房间单价计算出总费用。
前台操作:包括开房登记、退房结账和房状态查看预订管理:包括预订房间、预订入住和解除预订信息查询:包括在住客人列表、预订客人列表报表统计:包括开房记录统计、退房结账和预订房间统计完成提示:(1)住店情况记录在住店管理表中:客人姓名、房号、入住时期、预计离开日期、结账离开日期、应付金额(2)每个房间的使用情况记录在房间信息表中:房号、价格、押金、房状态(空,入住)(3)预定情况记录在预订情况表中:客人姓名、房号、入住日期、预计离开日期二、程序流程图三、数据结构设计创建房间信息结构体/*创建结构体date,记录入住和结账时间*/struct date{int mon;int day ;int hour ;};/*创建结构体hotel */struct hotel{int num; //房间号int kind; /*房间种类 1—单人间 2—双人间*/char name [20]; //入住客户姓名char ID[19]; //身份证号int h_money; //按日收费价格int d_money; //按小时收费价格struct date time; //入住时间int flag; /*flag 含义 0—无人入住 1—按小时入住 2-按天入住*/int deposit; //押金}room [M];四、总结及体会组长:王树锦实用为主系统以用户需求为目标,以方便用户为原则,同进融入先进的管理经验,在通用的成熟的酒店管理系统的框架下,根据用户的实际需求功能情况,为用户进行二次开发,度身订造一套先进的管理系统,尽可能降低使用前的培训、实施和使用中的维护时间。
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语言程序设计源码和报告,实现了基本的客房管理功能,能够实现客房的预订、入住、退房等操作。
酒店房间登记与计费管理系统源代码#define M 80#include<stdlib.h>#include<stdio.h>#include<string.h>/* 函数声明 */void check_in();/*登记入住函数 */void chamber();/*入住情况函数 */void price();/*当前费用函数 */void fee();/*结账退房函数 */void infor();/*信息查询函数 */void save(int);/*保存信息函数 */void read(int);/*读取信息函数 */void choice();/*功能选择函数 */int judge_year(int); /*判断闰年函数 */void information();/*输出全部房间信息 *//* 结构体 */struct time{int year;int mon;int date;int hour;};struct room/*定义各房间信息的结构体 */{char name[40];char ID[18];int flag;/* 0-无人入住, 1- 按小时计费,2- 按天计费 */ long int deposit;time t[2];/* 0-入住时间, 1- 当前时间 */}room[M];char c1[40]={0};char c2[18]={0};/* 主函数(主界面)*/void main(){system("cls");/*清屏*/system("color 4E");int n;printf("********************************************************************************");printf("****");printf("**\t\t----------欢迎光临万豪酒店----------**");printf("****");printf("********************************************************************************\n\n");printf("\t\t\t[ 1.登记入住]\n\n");printf("\t\t\t[ 2.入住情况]\n\n");printf("\t\t\t[ 3.当前费用]\n\n");printf("\t\t\t[ 4.结账退房]\n\n");printf("\t\t\t[ 5.信息查询]\n\n");printf("\t\t\t[ 6.全部信息]\n\n");printf("\t\t\t[7.退出系统]\n\n");printf("请输入您需要的服务的代码:");scanf("%d",&n);while(n<1||n>7){printf("\n\n代码输入有误,请您重新输入:");scanf("%d",&n);}switch(n)/*根据输入数字选择功能*/ {case 1:check_in();break;/*调用登记入住函数*/ case 2:chamber();break;/*调用房间情况函数*/case 3:price();break;/*调用当前费用函数*/case 4:fee();break;/*调用结账退房函数*/case 5:infor();break;/*调用信息查询函数*/case 6:information();break;/*调用全部信息函数*/case 7:exit(0);/*调用退出系统函数*/}}void chamber(){system("cls");/*清屏*/system("color 4E");printf("\n**********************************房间使用情况**********************************\n");int count=0;int i;int j;int k;int m;for(i=1;i<=80;i++)/*统计未入住房间总数*/{read(i);if(room[i-1].flag==0)count++;}printf("当前未使用房间数:%d\n\n\n",count);chaxun:printf("请输入你要查询的房间号(1-40: 单人间, 41-80: 双人间): ");/* 输入房间号查询房间入住情况*/scanf("%d",&m);while(m<1||m>80){printf("\n\n房间号输入有误,请您重新输入:");scanf("%d",&m);}read(m);while(room[m-1].flag!=0){printf("\n\n对不起,该房间已有客人入住,请输入其他房间号:");scanf("%d",&m);read(m);}printf("\n\n该房间没有客人入住, 您要入住该房间吗?(1- 是, 2- 否):");scanf("%d",&j);while(j<1||j>2){printf("\n\n 您的选择输入有误,请您重新输入: ");scanf("%d",&j);}if(j==1)check_in();{printf("\n\n您需要继续查询吗?(1- 是, 2- 否): ");scanf("%d",&k);while(k<1||k>2){printf("\n\n您的选择输入有误,请您重新输入:");scanf("%d",&k);}if(k==1)goto chaxun;else{printf("\n\n");main();}}}/* 登记入住函数*/void check_in(){system("cls");/*清屏*/system("color 4E");int i;int j;int l;int k;int tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};printf("\n************************************登记入住************************************\n");printf("请输入您将入住的房间号:");scanf("%d",&i);while(i<1||i>80){printf("\n\n房间号输入有误,请您重新输入:");scanf("%d",&i);}read(i);while(room[i-1].flag!=0)/*判断房间是否入住*/{printf("\n\n对不起,该房间已有客人入住,请输入其他房间号:"); scanf("%d",&i);read(i);}printf("\n\n请输入您的姓名: ");/*客人信息登记*/ scanf("%s",room[i-1].name);j=strlen(room[i-1].name);while(j<0){printf("\n\n您的姓名输入有误,请您重新输入:\n");scanf("%s",room[i-1].name);j=strlen(room[i-1].name);}printf("\n\n请输入您的证件号码:");scanf("%s",room[i-1].ID);j=strlen(room[i-1].ID);while(j!=18){printf("\n\n您的证件号码输入有误,请您重新输入:\n");scanf("%s",room[i-1].ID);j=strlen(room[i-1].ID);}if(i<=40){printf("\n\n您选择的是单人间,该房间 148 元/ 天,8 元/ 小时。
酒店房间登记与计费管理系统C语言课程设计本文将分为三个部分来讲解酒店房间登记与计费管理系统C语言课程设计,分别是项目概述、系统设计和代码实现。
一、项目概述酒店房间登记与计费管理系统是一种管理酒店客房、收集客户信息、房间安排和计费的软件系统。
这个系统主要目的是提高酒店管理效率、提升客户体验和优化酒店服务,为酒店管理者提供一个方便快捷的管理工具。
该系统设计包括三个模块:客户信息管理模块、客房管理模块和计费管理模块。
客户信息管理模块主要是登记客户信息,包括客户姓名、身份证号码和联系方式等。
客房管理模块包括安排客房、分配房间号码和查询客房使用情况等。
而计费管理模块负责客户使用房间时间的计算和收费。
二、系统设计1.客户信息管理模块该模块主要包括客户信息的登记、查询和修改。
在系统启动时,需要进行客户信息的初始化,包括创建一个客户信息文件和记录客户信息的结构体。
客户信息登记时,需要输入客户姓名、身份证号码和联系方式,并将其存入文件内容中。
查询操作时,可以输入客户信息的关键字进行查找,并在日志中记录相关操作。
2.客房管理模块该模块主要包括客房的安排、分配和查询。
在系统启动时,需要进行客房信息的初始化,包括创建一个客房信息文件和记录客房信息的结构体。
分配客房时,需要根据客户需要和酒店客房情况进行选择,并显示可用客房列表供客户选择。
客房查询时可以根据客房类型和状态进行查询,并在日志中记录相关操作。
3.计费管理模块该模块主要负责客户使用房间时间的计算和收费。
在系统启动时,需要进行计费信息的初始化,包括创建一个计费信息文件和记录计费信息的结构体。
计费信息包括入住时间、房间号码、房间价格和离店时间等,可以根据这些信息来计算客户的房间费用,包括房费、服务费、押金等。
在客户离店时,需要进行清算,并将相关费用存入文件中,并在日志中记录相关操作。
三、代码实现本系统采用C语言进行编写,在实现时主要采用了结构体、文件操作、函数调用等技术。
C语言课程设计--宾馆房间登记与计费管理系统《C语言》课程设计报告学生姓名:学号:2222222222221111111111111000000000000 学院:班级:题目: 宾馆房间登记与计费管理系统指导教师:职称:教授实验师王王王实验师2012年07月15日目录目录 (I)一、选题背景 (1)1.1主要问题及技术要求 (1)1.2指导思想 (1)二、算法设计 (1)2.1程序功能需求 (1)2.2功能框架图 (2)2.3设计方案说明 (3)2.4计算公式 (3)三、程序设计及功能说明 (4)3.1程序功能介绍 (4)四、结果分析 (6)4.1主界面 (6)4.2登记入住 (6)4.3结账退房 (9)4.4查询当前入住情况 (12)4.5查询当前费用 (13)4.6查询历史记录 (14)五、结论或总结 (14)六、课程设计心得体会 (15)参考文献 (16)源程序 (17)附表一 (63)一、选题背景1.1主要问题及技术要求本题对时间的控制要求较高,尤其是必须控制输入的时间,使其不能小于以前录入过的时间,防止当前时间输入错误。
还有退房时的信息对比难度也较高,必须保证退房顾客与系统记录信息一致,防止服务错漏或错误退房。
这是本题两个较大的难点。
此外还有房间号、身份证号、时间的输入格式的控制、跨年的时间计算等难点。
1.2指导思想学了C语言,我们需要一个学以致用的机会。
选题后,在题目的完成过程中,我们的知识可以更加牢固。
在完善酒店管理系统的过程中,我们要锻炼自己的基于现实思考的能力,培养自己缜密的思维。
相对于大多数人做的学生管理系统,酒店管理系统对于时间的控制要求严格,对于我们的算法思想要求较高,因此,在完成该次课程设计的过程中,我们要锻炼我们的逻辑思维能力,同时对C语言有更深刻的认识,把C语言知识掌握得更牢固。
同时,该系统以能够帮助酒店很好地管理客户信息,提高营业效率和数据的安全性和可靠性,减少劳力浪费为设计目标。
附录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。
#i n c l u d e<s t d i o.h>#include<string.h> //在使用中要用到的字符串都包含在本文件中#include<stdlib.h> //exit()函数就包含在此文件中#define M 81int z[81]={0}; //定义一个数组存放使用的房间的标记的信息,且初始化为0int j,s; //定义两个全局变量FILE *fp; //定义一个指向文件的指针变量struct date{int month;int day;int year;}final;struct hotel{int price;int room_ID;struct client{char name[20];int sex;int age;char ID_card[20];int count;struct date start;}personal;}room[M]; //定义全局结构体变量,且里面又调用两个结构体 //声明刷新函数fflush( fp),且指向指针变量指向的位置void save();void search_situ( ); //声明查看客房入住情况函数void regist_infor( ); //声明客房登记入住函数void modify_infor( ); //声明客房信息修改函数函数void modify_one( ); //声明修改客房信息函数中的修改个人函数void modify_hotel( ); //声明修改客房信息函数中的修改客房函数void disp_money( ); //声明显示入住费用函数int main(){int menu(); //声明主菜单函数void print_star();void print_message();printf("\n\n\n\n\n");print_star();printf("\n");print_message();printf("\n");print_star();menu(); //把主菜单用函数来实现save();return 0;}void print_star(){int i;for(i=1;i<30;i++)printf("\t*");}void print_message(){printf("\t\t\t\t欢迎入住皇家酒店\n");}menu(){int n;do{printf("\n");printf("\t\t*********************菜单********************\n\n\n");printf("\t\t\t\t1:查看客房入住情况\n\n\n");printf("\t\t\t\t2:登记入住信息\n\n\n");printf("\t\t\t\t3:修改客房信息\n\n\n");printf("\t\t\t\t4:显示入住费用\n\n\n");printf("\t\t\t\t5:退出\n\n\n");printf("\t\t\t\t6:返回\n\n\n");printf("\t\t*********************菜单********************\n"); printf("\n\n\t\t\t 请选择输入选项[1\\2\\3\\4\\5\\6]:\n");scanf("%d",&n);while(n<1||n>6){printf("请重新输入选项!");scanf("%d",&n);}switch(n){case 1:search_situ();break; //调用查看函数case 2:regist_infor();break; //调用登记函数case 3:modify_infor();break; //调用修改函数case 4:disp_money();break; //调用显示入住费用函数case 5:exit(0);case 6:break;}}while(n!=6);scanf("%d",&n);return 0;}void search_situ( ) //查看函数{int g,count=0;for(g=1;g<=80;g++){if(z[g]==0)++count;elseif(z[g]==1)printf("\n正在使用的房间号:%d",g);}printf("\n\n未使用的房间数:%d",count); //通过循环输出未使用的房间数 printf("\n\n");printf("\n请输入需查询的房间号:\n"); //查询输入的房间号的信息,且输出该房间的相关信息scanf("%d",&s);if(z[s]==1){printf("姓名:%s",room[s]);printf("\n性别(其中:1表示男,2表示女!):%d",room[s].personal.sex);printf("\n年龄:%d",room[s].personal.age);printf("\n身份证号:%s",room[s].personal.ID_card);printf("\n入住年份:%d",room[s].personal.start.year);printf("月:%d",room[s].personal.start.month);printf("日:%d",room[s].personal.start.day);printf("\n房间号:%d",room[s].room_ID);printf("\n客房单价:%d",room[s].price);printf("\n入住人数:%d",room[s].personal.count);menu();}elseprintf("该房间未被使用!");save(); //调用保存函数}void regist_infor( ) // 登记函数{printf("请输入登记相关信息:\n");printf("\n房间号:");scanf("%d",&j);room[j].room_ID=j;printf("\n姓名:");scanf("%s",&room[j]);printf("\n性别(其中:1表示男,2表示女!):");scanf("%d",&room[j].personal.sex);printf("\n年龄:");scanf("%d",&room[j].personal.age);printf("\n身份证号:");scanf("%s",&room[j].personal.ID_card);printf("\n入住年份:");scanf("%d",&room[j].personal.start.year);printf("月:");scanf("%d",&room[j].personal.start.month);printf("日:");scanf("%d",&room[j].personal.start.day);printf("\n客房单价:");scanf("%d",&room[j].price);printf("请输入入住人数\n");scanf("%d",&room[j].personal.count);z[j]=1; //标记使用的房间为1save();}void modify_infor( ) //修改函数{int r,m;do{printf("\t\t\t *******************菜单******************\n\n\n");printf("\t\t\t\t\t 1:修改客户信息\n\n\n");printf("\t\t\t\t\t 2:修改客房信息\n\n\n");printf("\t\t\t\t\t 3:menu()\n\n\n");printf("\t\t\t\t\t4:退出\n\n\n");printf("\t\t\t *****************************************\n\n\n");printf("\t\t\t 请选择输入选项[1\\2\\3\\4]:\n");scanf("%d",&m);if(m<1||m>3){r=1;getchar();}else r=0;}while(r==1);switch(m){case 1:modify_one();break;case 2:modify_hotel();break;case 3:menu();case 4:exit(0);}save();}void modify_one() //修改个人信息函数{int q;char a[20];printf("\n请选择您要修改的个人选项\n");printf("1:姓名 2:性别(其中:1表示男,2表示女!) 3:年龄 4:身份证号 5:入住年份 6:入住月份 7入住日 8:入住人数\n");printf("\t请选择输入选项[1\\2\\3\\4\\5\\6\\7\\8]:\n\b\b");scanf("%d",&q);switch(q){int t,p;char k;case 1:printf("请输入新名字\n");for(t=0;t<20;t++)scanf("%s",&a[t]);strcpy(room[j],a);break;case 2:printf("请选择新性别(其中:1表示男,2表示女!)\n");scanf("%d",&k);room[j].personal.sex=k;break;case 3:printf("请输入新年龄\n");scanf("%d",&p);room[j].personal.age=p;break;case 4:printf("请输入新身份证号\n");scanf("%d",&p);room[j].personal.ID_card[20]=p;break;case 5:printf("请输入新年份\n");scanf("%d",&p);room[j].personal.start.year=p;break;case 6:printf("请输入新月份\n");scanf("%d",&p);room[j].personal.start.month=p;break;case 7:printf("请输入新日子\n");scanf("%d",&p);room[j].personal.start.day=p;break;case 8:printf("请输入新入住人数\n");scanf("%d",&p);room[j].personal.count=p;break;}menu();}void modify_hotel() //修改客房信息函数{int l;printf("\n\t\t\t\t请选择您要修改的客房信息\n\n");printf("\t\t\t\t1:房间号\n\n \t\t\t\t2:客房单价\n\n \t\t\t\t3:入住人数\n\n \t\t\t\t4:返回\n\n");printf("\t\t\t请选择输入选项[1\\2\\3\\4]:\n\b\b");scanf("%d",&l);switch(l){case 1:printf("请输入旧房号\n");scanf("%d",&j);printf("请输入新房号\n");scanf("%d",&s);strcpy(room[s],room[j]);room[s].personal.sex=room[j].personal.sex; room[j].personal.sex=0;room[s].personal.age=room[j].personal.age; room[j].personal.age=0;strcpy(room[s].personal.ID_card,room[j].personal.ID_card);room[s].personal.start.year=room[j].personal.start.year;room[j].personal.start.year=0;room[s].personal.start.month=room[j].personal.start.month;room[j].personal.start.month=0;room[s].personal.start.day=room[j].personal.start.day;room[j].personal.start.day=0;room[s].room_ID=s;room[s].price=room[j].price;room[s].personal.count=room[j].personal.count;z[s]=1; z[j]=0; break;case 2:printf("请输入房号\n");scanf("%d",&s);printf("请输入新单价\n");scanf("%d",&s);room[s].price=s;break;case 3:printf("请输入房号\n");scanf("%d",&s);printf("请输入新入住人数\n");scanf("%d",&s);room[s].personal.count=s;break;case 4:break;}save();menu();}void disp_money( ) //显示入住费用函数{int i,sum;printf("请输入房间号;\n");scanf("%d",&room[j].room_ID);printf("\n入住年份:%d",room[j].personal.start.year);printf("月:%d",room[j].personal.start.month);printf("日:%d",room[j].personal.start.day);printf("房间单价为:");printf("%d",room[j].price);printf("\n请输入退房时间:\n");printf("请输入年份:");scanf("%d",&final.year);printf("请输入月份:");scanf("%d",&final.month);printf("请输入日:");scanf("%d",&final.day);printf("\n请输入住房天数:\n");scanf("%d",&i);sum=room[j].price*i;printf("总费用sum=%d\n",sum);save();menu();}void save() //保存函数{FILE *fp;int i;if((fp=fopen("客房管理.txt","w+"))==NULL) //打开输出文件"客房管理.txt" {printf("cannot open file\n");exit(0);}for(i=0;i<M;i++){if(fwrite((&room[i]), sizeof(room[M]),1,fp)!=1)printf("file write error\n");fflush(fp);}fclose(fp); //关闭文件}。