大一 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录入成功!");
		else
			printf("\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");
		else
			printf(" 房间已入住\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);			//将房间总数设置为0
	fclose(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();
			else
				printf("输入的编号有误!\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();
			else
				printf("输入的编号有误!\n");
		} else
			printf("输入的编号有误,请重新选择!\n");
		printf("\n本轮操作结束,返回主菜单!\n");
	}
	return 0;
}

酒店管理系统c语言课程设计全文共10页,当前为第1页。酒店管理系统c语言课程设计全文共10页,当前为第1页。#include <stdio.h> 酒店管理系统c语言课程设计全文共10页,当前为第1页。 酒店管理系统c语言课程设计全文共10页,当前为第1页。 #include <conio.h> #include<string.h> #include<stdlib.h> /*定义客户结构体*/ struct guest ( char no[20]; char Name[20]; char sex[2]; char id[20]; }; /*声明客户数组及客户数量*/ struct guest guests[200]; int num=0; /*通过客户返回数组下标*/ int guest_SearchByIndex(char no[]) ( int i; for (i=0;i<num;i ) ( if (strcmp(guests[i].no,no)==0) ( return 0;//i; } } return -1; } /*通过名返回数组下标*/ int guest_SearchByName(char name[]) ( int i; for (i=0;i<num;i ) ( if (strcmp(guests[i].Name,name)==0) return i; else return -1; } return 0; } /*显示单条客户记录*/ void guest_DisplaySingle(int index) 酒店管理系统c语言课程设计全文共10页,当前为第2页。酒店管理系统c语言课程设计全文共10页,当前为第2页。( printf("ssss\n"," 房间","名","性另F,"身份码) 酒店管理系统c语言课程设计全文共10页,当前为第2页。 酒店管理系统c语言课程设计全文共10页,当前为第2页。 printf(" -——\n"); printf(" %- 10s%9s%9ss\n",guests[index].no,guests[index].Name,guests[index].sex,gues ts[index].id); } /*插入客户信息*/ void guest_Insert() {— while(1) { printf(- 请输入房间:"); scanf("%s",guests[num].no); getchar(); printf(- 请输入名:"); scanf("%s",guests[num].Name); getchar(); printf(- 请输入性别:"); scanf("%s",guests[num].sex); getchar(); printf(" 请输入身份码:"); scanf("%s",guests[num].id); while(strlen(guests[num].id)!=18) { printf(" 请输入18位身份证码"); scanf("%s",guests[num].id); } getchar(); num ; printf(" 是否继续?(y/n)"); if (getchar()=='n'""getchar()=='N') { break; } } } /*修改客户信息*/ void guest_Modify() { 酒店管理系统c语言课程设计全文共10页,当前为第3页。酒店管理系统c语言课程设计全文共10页,当前为第3页。( 酒店管理系统c语言课程设计全文共10页,当前为第3页。 酒店管理系统c语言课程设计全文共10页,当前为第3页。 char no[20]; int index; printf(- 请输入要修改的客户的房:"); scanf("%s",no); getchar(); index=guest_SearchByIndex(no); if (index==-1) ( printf(" 该客户不存在!\n"); } else ( printf(- 你要修改的客户信息为:\n"); guest_DisplaySingle(index); printf("-- 请输入新值--\n"); printf(- 请输入房间:"); scanf("%s",guests[index].no); getchar(); printf(- 请输入名:"); scanf("%s",guests[index].Name); getchar(); printf(- 请输入性别:"); scanf("%s",guests[index].sex); getchar(); printf(" 请输入您的身份证码"); scanf("%s",
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值