c语言酒店管理系统代码:登记入住信息,查询客房类型,查询客房信息 ,修改客房信息,删除客房信息,办理退房,退出系统

时间: 2024-03-10 11:46:29 浏览: 76
好的,以下是一个简单的酒店管理系统的 C 语言代码实现,包括登记入住信息,查询客房类型,查询客房信息,修改客房信息,删除客房信息,办理退房和退出系统功能: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_ROOMS 100 struct room { int room_num; char room_type[20]; float price; int occupied; }; struct guest { char name[20]; int room_num; }; struct room rooms[MAX_ROOMS]; struct guest guests[MAX_ROOMS]; int num_rooms = 0, num_guests = 0; void load_data(); void save_data(); void check_in(); void check_out(); void display_room_types(); void display_room_info(); void modify_room_info(); void delete_room(); int main() { int choice; load_data(); do { printf("1. 登记入住信息\n"); printf("2. 办理退房\n"); printf("3. 查询客房类型\n"); printf("4. 查询客房信息\n"); printf("5. 修改客房信息\n"); printf("6. 删除客房信息\n"); printf("7. 退出系统\n"); printf("请选择您要进行的操作:"); scanf("%d", &choice); switch (choice) { case 1: check_in(); break; case 2: check_out(); break; case 3: display_room_types(); break; case 4: display_room_info(); break; case 5: modify_room_info(); break; case 6: delete_room(); break; case 7: save_data(); break; default: printf("输入有误,请重新输入。\n"); } } while (choice != 7); return 0; } void load_data() { FILE *fp = fopen("data.txt", "r"); if (fp == NULL) { printf("无法打开数据文件。\n"); return; } fscanf(fp, "%d", &num_rooms); for (int i = 0; i < num_rooms; i++) { struct room r; fscanf(fp, "%d %s %f %d", &r.room_num, r.room_type, &r.price, &r.occupied); rooms[i] = r; } fscanf(fp, "%d", &num_guests); for (int i = 0; i < num_guests; i++) { struct guest g; fscanf(fp, "%s %d", g.name, &g.room_num); guests[i] = g; } fclose(fp); } void save_data() { FILE *fp = fopen("data.txt", "w"); if (fp == NULL) { printf("无法打开数据文件。\n"); return; } fprintf(fp, "%d\n", num_rooms); for (int i = 0; i < num_rooms; i++) { fprintf(fp, "%d %s %f %d\n", rooms[i].room_num, rooms[i].room_type, rooms[i].price, rooms[i].occupied); } fprintf(fp, "%d\n", num_guests); for (int i = 0; i < num_guests; i++) { fprintf(fp, "%s %d\n", guests[i].name, guests[i].room_num); } fclose(fp); } void check_in() { int room_num; printf("请输入您要入住的客房号:"); scanf("%d", &room_num); int room_index = -1; for (int i = 0; i < num_rooms; i++) { if (rooms[i].room_num == room_num) { room_index = i; break; } } if (room_index == -1) { printf("客房号不存在。\n"); return; } if (rooms[room_index].occupied) { printf("该客房已被占用。\n"); return; } rooms[room_index].occupied = 1; printf("请输入您的姓名:"); scanf("%s", guests[num_guests].name); guests[num_guests].room_num = room_num; num_guests++; printf("登记成功。\n"); } void check_out() { int room_num; printf("请输入您要退房的客房号:"); scanf("%d", &room_num); int room_index = -1, guest_index = -1; for (int i = 0; i < num_rooms; i++) { if (rooms[i].room_num == room_num) { room_index = i; break; } } if (room_index == -1) { printf("客房号不存在。\n"); return; } if (!rooms[room_index].occupied) { printf("该客房未被占用。\n"); return; } rooms[room_index].occupied = 0; for (int i = 0; i < num_guests; i++) { if (strcmp(guests[i].name, "") != 0 && guests[i].room_num == room_num) { guest_index = i; break; } } if (guest_index == -1) { printf("没有找到对应的客人信息。\n"); return; } strcpy(guests[guest_index].name, ""); printf("退房成功。\n"); } void display_room_types() { printf("客房类型列表:\n"); printf("1. 标准单人间\n"); printf("2. 标准双人间\n"); printf("3. 豪华单人间\n"); printf("4. 豪华双人间\n"); } void display_room_info() { int room_num; printf("请输入您要查询的客房号:"); scanf("%d", &room_num); int room_index = -1; for (int i = 0; i < num_rooms; i++) { if (rooms[i].room_num == room_num) { room_index = i; break; } } if (room_index == -1) { printf("客房号不存在。\n"); return; } printf("客房号:%d\n", rooms[room_index].room_num); printf("客房类型:%s\n", rooms[room_index].room_type); printf("价格:%f\n", rooms[room_index].price); printf("是否被占用:%s\n", rooms[room_index].occupied ? "是" : "否"); } void modify_room_info() { int room_num; printf("请输入您要修改的客房号:"); scanf("%d", &room_num); int room_index = -1; for (int i = 0; i < num_rooms; i++) { if (rooms[i].room_num == room_num) { room_index = i; break; } } if (room_index == -1) { printf("客房号不存在。\n"); return; } printf("请输入客房类型:"); scanf("%s", rooms[room_index].room_type); printf("请输入价格:"); scanf("%f", &rooms[room_index].price); printf("修改成功。\n"); } void delete_room() { int room_num; printf("请输入您要删除的客房号:"); scanf("%d", &room_num); int room_index = -1; for (int i = 0; i < num_rooms; i++) { if (rooms[i].room_num == room_num) { room_index = i; break; } } if (room_index == -1) { printf("客房号不存在。\n"); return; } for (int i = room_index; i < num_rooms - 1; i++) { rooms[i] = rooms[i + 1]; } num_rooms--; printf("删除成功。\n"); } ``` 注意:上述代码只是一个简单的示例,可能存在一些不完善的地方,仅供参考,具体实现需要根据实际需求进行改动。同时,为了方便数据的保存和读取,代码中使用了文件操作,需要确保当前目录下存在名为 "data.txt" 的文件。

相关推荐

最新推荐

recommend-type

C语言数组实现学生信息管理系统设计

主要为大家详细介绍了C语言数组实现学生信息管理系统设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

基于C语言航班信息查询与检索

主要为大家详细介绍了基于C语言航班信息查询与检索,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

大一C语言课程设计图书信息管理系统.doc

大一C语言课程设计图书信息管理系统.doc
recommend-type

职工信息管理系统 c语言程序设计报告

3.2系统结构(全局类型定义)………………………5 四、测试与调试…………………………………………5 五、小结…………………………………………………7 六、附件:主要源程序代码…………………………………7
recommend-type

公交信息查询系统 C语言

这是一个不错的数据结构课程设计,源代码和文档,题目是公交信息查询系统,该系统实现了以下功能:查询公交车的线路;查询停靠站点信息;查询任意两点之间可乘车辆;显示公交路线图等。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

前端深拷贝 和浅拷贝有哪些方式,你在哪里使用过

前端深拷贝和浅拷贝的方式有很多,下面列举几种常用的方式: 深拷贝: 1. JSON.parse(JSON.stringify(obj)),该方法可以将对象序列化为字符串,再将字符串反序列化为新的对象,从而实现深拷贝。但是该方法有一些限制,例如无法拷贝函数、RegExp等类型的数据。 2. 递归拷贝,即遍历对象的每个属性并进行拷贝,如果属性值是对象,则递归进行拷贝。 3. 使用第三方库如lodash、jQuery等提供的深拷贝方法。 浅拷贝: 1. Object.assign(target, obj1, obj2, ...),该方法可以将源对象的属性浅拷贝到目标对象中,如果有相同的属性,则会
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。