酒店管理系统(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 800
struct 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=
### 酒店管理系统在C语言中的实现 对于希望开发基于C语言酒店管理系统的开发者来说,可以考虑以下几个方面来构建系统: #### 设计数据库结构 为了有效地管理和存储客户信息、房间状态以及其他必要的数据,设计合理的文件或内存中的数据结构至关重要。通常情况下,在不依赖外部SQL数据库的情况下,可以通过定义结构体(structures)表示实体对象并利用指针操作链表或者树形结构来进行高效的数据访问[^1]。 ```c typedef struct Room { int roomNumber; char status[20]; // Available, Booked etc. } Room; Room rooms[MAX_ROOMS]; ``` #### 用户界面(UI) 考虑到C语言本身并不提供图形化用户接口的支持,因此大多数简单的命令行程序会采用文本菜单的方式让用户交互输入查询条件或是执行特定功能。更复杂的应用可能会集成第三方库如ncurses创建伪GUI环境[^2]。 ```c void showMenu() { printf("Hotel Management System\n"); printf("-----------------------\n"); printf("1. Check-in Guest\n"); printf("2. Checkout Guest\n"); printf("3. View Rooms Status\n"); printf("4. Exit\n"); } ``` #### 功能模块划分 按照业务逻辑的不同部分将整个应用拆分成多个独立的功能单元有助于提高代码可读性和维护性。常见的几个核心组件可能包括但不限于预订处理、账单计算以及报表生成等功能模块[^3]。 ```c // Example function prototype declarations for different modules int bookARoom(int guestId); float calculateBill(int guestId); void generateReport(); ``` #### 存储持久化方案 由于纯C项目缺乏内置的对象关系映射(ORM),所以保存重要记录到磁盘上一般通过二进制序列化(binary serialization)或者是CSV/JSON这样的平面文件格式完成。这允许即使应用程序关闭之后仍然能够恢复之前的状态[^4]。 ```c FILE *fp = fopen("rooms.dat", "wb+"); if (!fp) { /* handle error */ } fwrite(&roomData, sizeof(Room), countOfRooms, fp); fclose(fp); ``` 尽管上述内容提供了关于如何着手建立一个基本版酒店管理系统的指导方针,但是值得注意的是实际生产环境中往往还需要额外的安全措施和技术栈支持才能满足商业需求。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值