1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 大一 C语言课程设计 酒店入住管理系统

大一 C语言课程设计 酒店入住管理系统

时间:2023-12-06 03:48:25

相关推荐

大一 C语言课程设计 酒店入住管理系统

#include<stdio.h>int room_count = 0;//总房间数typedef struct room {int room_num;//房间号char room_type[20];//房间类型int room_flag;//flag=0时表示房间为空,flag=1时表示房间有人} room;void Menu1() {//主菜单printf("\n**************酒店入住管理系统*************\n");printf("*(主菜单) *\n");printf("* *\n");printf("* [1] 客户登录*\n");printf("* [2] 管理员登录 *\n");printf("* [3] 退出*\n");printf("* *\n");printf("* *\n");printf("* (请输入编号进行操作) *\n");printf("*******************************************\n");}void Menu2() {//管理员登录后printf("\n**************酒店入住管理系统*************\n");printf("*(管理员) *\n");printf("* *\n");printf("* [1] 录入房间信息 *\n");printf("* [2] 查询房间信息 *\n");printf("* [3] 删除所有房间信息 *\n");printf("* [4] 退出*\n");printf("* *\n");printf("* (请输入编号进行操作) *\n");printf("*******************************************\n");}void Menu3() {//客户登录后printf("\n**************酒店入住管理系统*************\n");printf("*(客户)*\n");printf("* *\n");printf("* [1] 选择房间*\n");printf("* [2] 退房*\n");printf("* [3] 查询房间信息 *\n");printf("* [4] 退出*\n");printf("* *\n");printf("* (请输入编号进行操作) *\n");printf("*******************************************\n");}int main_create_room(room r[]) {FILE* pf = fopen("create_room.txt", "ab");if (pf == NULL) {printf("打开文件失败!\n");return 0;}printf("\n请输入房间号:");scanf("%d", &r[room_count].room_num);for (int i = 0; i < room_count; i++) {//检查房间号是否重复if (r[room_count].room_num == r[i].room_num)return 0;}printf("\n请输入房间类型:");scanf("%s", r[room_count].room_type);r[room_count].room_flag = 0;fprintf(pf, "%d%s%s%s%d%s", r[room_count].room_num, "\n", r[room_count].room_type, "\n", r[room_count].room_flag, "\n");fclose(pf);pf = NULL;room_count++;return 1;}void creat_room() {int k = 1;room r[100];while (k != 0) {int a = 0;a = main_create_room(r);//将保存房间的数组传入函数中,检查是否房间号重复if (a == 1)printf("\n录入成功!");elseprintf("\n录入失败,房间号已被占用!");printf("\n是否继续录入?(输入1表示继续,0表示结束)\n");scanf("%d", &k);}FILE* pf = fopen("room_count.txt", "wb");if (pf == NULL) {printf("打开文件失败!\n");return;}fprintf(pf, "%d", room_count);//将总房间树保存到文件中fclose(pf);pf = NULL;return;}void traverse_room() { //查看所有房间int count = 0, i;//count和room_count的值相等FILE* pf = fopen("room_count.txt", "rb");if (pf == NULL) {printf("打开文件失败!\n");return;}fscanf(pf, "%d", &count);fclose(pf);printf("\n房间的总数:%d\n", count);pf = fopen("create_room.txt", "rb");if (pf == NULL) {printf("打开文件失败!\n");return;}room a[100];for (i = 0; i < count; i++) {fscanf(pf, "%d%s%d", &a[i].room_num, a[i].room_type, &a[i].room_flag);//把文件中的数据读到内存中准备好的数组中printf("房间号:%d 房间类型:%s", a[i].room_num, a[i].room_type);if (a[i].room_flag == 0)printf(" 房间为空\n");elseprintf(" 房间已入住\n");}fclose(pf);pf = NULL;return;}void delete_room() {FILE* pf = fopen("create_room.txt", "wb");//以只写的方式打开文件,什么都不输入,以空白覆盖原文件if (pf == NULL) {printf("打开文件失败!\n");return;}fclose(pf);pf = fopen("room_count.txt", "wb");if (pf == NULL) {printf("打开文件失败!\n");return;}fprintf(pf, "%d", 0);//将房间总数设置为0fclose(pf);pf = NULL;printf("删除操作完成!\n");return;}void reserve() { //客户选择房间int ans_num, count = 0, i;//count和room_count的值相等room r[100];//用于保存从文件中读取的值FILE* pf = fopen("room_count.txt", "rb");if (pf == NULL) {printf("打开文件失败!\n");return;}fscanf(pf, "%d", &count);//从文件中获取房间总数if (count == 0) {printf("您选择的房间不存在!\n");return;}fclose(pf);pf = fopen("create_room.txt", "rb");if (pf == NULL) {printf("打开文件失败!\n");return;}for (i = 0; i < count; i++)fscanf(pf, "%d%s%d", &r[i].room_num, r[i].room_type, &r[i].room_flag);//把文件中的数据读到内存中准备好的数组中fclose(pf);printf("请输入您选择的房间号:\n");scanf("%d", &ans_num);for (i = 0; i < count; i++) {if (ans_num == r[i].room_num && r[i].room_flag == 0) {//房间为空的情况printf("您选择成功!(房间号:%d 房间类型:%s)\n", r[i].room_num, r[i].room_type);r[i].room_flag = 1;break;} else if (ans_num == r[i].room_num && r[i].room_flag == 1) {//房间不为空时printf("您选择的房间已有人入住!\n");break;} else if (i == count - 1)printf("您选择的房间不存在!\n");}pf = fopen("create_room.txt", "wb");if (pf == NULL) {printf("打开文件失败!\n");return;}for (i = 0; i < count; i++)fprintf(pf, "%d%s%s%s%d%s", r[i].room_num, "\n", r[i].room_type, "\n", r[i].room_flag, "\n"); //将更改过的数据写到文件,并覆盖原有文件fclose(pf);pf = NULL;return;}void check_room() {//退房int ans_num, count = 0, i;//count和room_count的值相等room r[100];//用于保存从文件中读取的值FILE* pf = fopen("room_count.txt", "rb");if (pf == NULL) {printf("打开文件失败!\n");return;}fscanf(pf, "%d", &count);if (count == 0) {printf("您要退的房间不存在!\n");return;}fclose(pf);pf = fopen("create_room.txt", "rb");if (pf == NULL) {printf("打开文件失败!\n");return;}for (i = 0; i < count; i++)fscanf(pf, "%d%s%d", &r[i].room_num, r[i].room_type, &r[i].room_flag);fclose(pf);printf("请输入您要退的房间号:\n");scanf("%d", &ans_num);for (i = 0; i < count; i++) {if (ans_num == r[i].room_num && r[i].room_flag == 1) {printf("退房成功!(房间号:%d 房间类型:%s)\n", r[i].room_num, r[i].room_type);r[i].room_flag = 0;break;} else if (ans_num == r[i].room_num && r[i].room_flag == 0) {printf("您要退的房间已经为空!\n");break;} else if (i == count - 1)printf("您要退的房间不存在!\n");}pf = fopen("create_room.txt", "wb");if (pf == NULL) {printf("打开文件失败!\n");return;}for (i = 0; i < count; i++)fprintf(pf, "%d%s%s%s%d%s", r[i].room_num, "\n", r[i].room_type, "\n", r[i].room_flag, "\n");fclose(pf);pf = NULL;return;}int main() {int choice = 0;while (1) {Menu1();//显示主菜单scanf("%d", &choice);if (choice == 3)//退出系统return 0;else if (choice == 2) {//管理员登录Menu2();scanf("%d", &choice);if (choice == 4) //退出return 0;else if (choice == 1)//录入房间creat_room();else if (choice == 2)//查询所有房间traverse_room();else if (choice == 3)//删除所有房间信息delete_room();elseprintf("输入的编号有误!\n");} else if (choice == 1) {//客户登录Menu3();scanf("%d", &choice);if (choice == 4) //退出return 0;else if (choice == 1)//选择房间reserve();else if (choice == 2)//退房check_room();else if (choice == 3) //查询房间traverse_room();elseprintf("输入的编号有误!\n");} elseprintf("输入的编号有误,请重新选择!\n");printf("\n本轮操作结束,返回主菜单!\n");}return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。