酒店管理系统
一、问题描述
系统应具有以下主要功能:登记入住:从键盘输入住信息:房间层数,房间号码等;查询入住情况,查询当前费用,退房、退出系统等功能。
二、基本要求
(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=