绪论
现代化的酒店组织庞大、服务项目多、信息量大,要想提高劳动生产、降低成本、提高服务质量和管理水平,促进经济效益,但凭原始的手工记录管理,不仅效率低,容易出错,因此必须借助计算机来进行现代化的信息管理。所以酒店管理系统正是为此而设计的,优秀的酒店客房管理系统操作方便,灵活性好,系统安全性高,运行稳定,服务快捷方便,让宾客感受到一种顾客至上的享受。
本系统是基于C语言。对客房的预定,储存,及查询进行分析。记录各个订房信息。然后进行自动化结账,最终将信息存储在电脑中以便于以后的查询。节省了服务人员的劳动力,简单明了,操作简单。
设计要求
- 实现前台和后台。前台主要功能是预订、收银等。后台主要功能是管理、统计等。订房信息管理主要功能是存储订房时的信息,包括登记人姓名、证件号、登记类型、所选的餐饮标准、押金及入住时间等。
- 后台结算信息管理功能是结合订房的信息进行自动化结账,并存储结算信息,包括客房定价、押金、餐饮消费、客房消费、客户类型、结算时间、入住天数、消费总额等。
设计框图
主菜单
设计内容
- 设计主界面
主界面中分为四个选项,然后用switch进行功能选择。 - 添加客户
本功能用于数据输入。然后将其通过指针储存起来,以便于以后的查询使用。 - 客房结账
通过调用未结账客户信息,来进行结账,当结账以后,系统就把他判定为已结账 - 文件存储
将添加的客户加入到电脑创建的文件夹中,以便于下次重启程序时数据的丢失。 - 客房查询
通过存储在文件夹中的信息进行查询,也可以查询刚刚添加的客户信息,同时也查询该顾客是否结账。
模块设计
- void menu3(struct hotel *p);
- void ADD(LinkList *p);//添加客户
- void Seller(LinkList *p);//客房结账
- void Inquire(LinkList *p);//客房查询
- void saveHotelFile(LinkList *L);
系统数据需求
-
数据录入和处理的准确性和实时性。
-
数据的一致性与完整性。
-
数据的共享与独立性
系统业务功能的需求
-
实现客户信息管理功能
-
实现预定管理功能
-
实现入住管理功能
-
实现消费记账功能
-
实现收银退房功能
我们将系统的功能大体划分为三大模块:
权限管理:包括管理员的操作
前台管理:包括客户信息的录入、客户预订和入住登记等
后台报表管理:结算的管理及存储结算信息
C语言源程序——建议使用Devc ++ 运行
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<Windows.h>
#include<string.h>
#define LEN sizeof(struct hotel)
typedef struct hotel
{
char name[20];//姓名
int food;//年龄
char ID[20];//身份证号
char time[20];//入住时间
int yajin;
char room[15];//房间类型
int numder;//房间号
int price;//房间单价
int day;//入住天数
int cope;//总价
int payment;//
int debt;
char manage[5];//是否结账
struct hotel *next;//
}LinkList;
void menu3(struct hotel *p);
void ADD(LinkList *p);//添加客户
void Seller(LinkList *p);//客房结账
void Inquire(LinkList *p);//客房查询
void saveHotelFile(LinkList *L);
void ADD(LinkList *p)
{
struct hotel *q, *n = p;
struct hotel *h = p->next;
struct hotel *m = p->next;
int flag = 0;
system("cls");//清屏
q = (struct hotel *)malloc(sizeof(struct hotel));//给P赋值,新分配的地址
q->next = NULL;
printf("请输入:\n");
printf("客户姓名:");
scanf("%s",q->name);
printf("身份证号:");
scanf("%s",q->ID);
printf("入住时间:");
scanf("%s",q->time);
printf("请依次输入客户的:\n");
printf("房间类型:");
scanf("%s",q->room);
printf("房间号:");
scanf("%d",&q->numder);
printf("房间单价:");
scanf("%d",&q->price);
printf("入住天数:");
scanf("%d",&q->day);
printf("餐饮标准:");
scanf("%d",&q->food);
printf("押金:");
scanf("%d",&q->yajin);
printf("付款:");
scanf("%d",&q->payment);
strcpy(q->manage, "NO"); //把NO复制到q->manage
getchar();
q->cope = q->price *q->day+q->food;
q->debt = q->cope - q->payment;
while (h != NULL)
{
if (h->numder == q->numder &&strcmp(h->manage, "NO") == 0)
{
flag = 1;
printf("此房间客户暂未退房");
Sleep(1000);//停留一秒
ADD(p);
break;
}
h = h->next;
}
while (n->next != NULL)
{
n = n->next;
}
n->next = q;
if (flag == 0)
{
printf("\t添加成功\n");
printf("\t请按回车键返回菜单\n");
}
else
printf("\t添加失败\n");
getchar();
menu3(p);
}
void Seller(LinkList *p)
{
struct hotel *q = p->next;
char man[5];
int nu, i;
int flag = 0;
system("cls");
printf("请输入该客户房间号:");
scanf("%d", &nu);
while (q != NULL)
{
if ((q->numder == nu)&&strcmp(q->manage,"NO")==0)
{
flag = 1;
printf("客户:%s\n",q->name);
printf("身份证号:%s\n",q->ID);
printf("押金::%d\n",q->yajin);
printf("餐饮消费:%d\n",q->food);
printf("房间号:%d\n",q->numder);
printf("房间单价:%d\n",q->price);
printf("入住天数:%d\n",q->day);
printf("总计:%d元\n",q->cope);
printf("实付:%d\n",q->payment);
printf("再付%d\n", q->debt);
printf("1.确定结账\n2.返回\n");
scanf("%d", &i);
switch (i)
{
case 1:q->debt = 0; q->payment = q->cope; strcpy(q->manage, "YES"); break;
case 2:menu3(p); break;
}
}
q = q->next;
}
if (flag == 0)
{
printf("\t无该客户信息\n");
printf("\t请按回车键返回菜单\n");
}
else
{
printf("结账成功\n");
printf("\t请按回车键返回菜单\n");
}
getchar();
getchar();
menu3(p);
}
void Inquire(LinkList *p)
{
struct hotel *q = p->next;
int nu;
char na[20];
int a;
int flag = 0;
system("cls");
printf("1.按照姓名查询;\n2.按照房间号查询;\n");
scanf("%d", &a);
getchar();
if (a == 1)
{
printf("请输入姓名:");
scanf("%s", na);
while (q != NULL)
{
if (strcmp(q->name, na) == 0)//进行q->name和na进行比较
{
flag = 1;
printf("姓名:%s\n",q->name);
printf("身份证号:%s\n",q->ID);
printf("入住时间:%s\n",q->time);
printf("房间类型:%s\n",q->room);
printf("房间号:%d\n",q->numder);
printf("房间单价:%d\n",q->price);
printf("入住天数:%d\n",q->day);
printf("餐饮消费:%d\n",q->food);
printf("押金:%d\n",q->yajin);
printf("实付:%d\n",q->payment);
printf("再付:%d\n",q->debt);
printf("总计:%d\n",q->cope);
printf("是否结账:%s\n",q->manage);
}
q = q->next;
}
}
if (a == 2)
{
printf("请输入房间号:");
scanf("%d", &nu);
while (q != NULL)
{
if (q->numder == nu)
{
flag = 1;
printf("姓名:%s\n",q->name);
printf("身份证号:%s\n",q->ID);
printf("入住时间:%s\n",q->time);
printf("房间类型:%s\n",q->room);
printf("房间号:%d\n",q->numder);
printf("房间单价:%d\n",q->price);
printf("入住天数:%d\n",q->day);
printf("餐饮消费:%d\n",q->food);
printf("押金:%d\n",q->yajin);
printf("总计:%d\n",q->cope);
printf("实付:%d\n",q->payment);
printf("再付:%d\n",q->debt);
printf("是否结账:%s\n",q->manage);
}
q = q->next;
}
}
if (flag == 0)
{
printf("\t无该客户信息\n");
printf("\t请按回车键返回菜单\n");
}
if (flag == 1)
{
printf("\t查询结束\n");
printf("\t请按回车键返回菜单\n");
}
getchar();
getchar();
menu3(p);
}
void saveHotelFile(LinkList *L)
{
FILE *fp;
LinkList *p;
p = L->next;
fp = fopen("hotel.txt", "w");
if (fp == NULL)
{
printf("无法打开此文件\n");
exit(0);
}
while (p)
{
fprintf(fp, "%s %s %s %s %d %d %d %d %d %d %d %d %s \n", p->name, p->ID, p->time, p->room, p->numder, p->price, p->day, p->food, p->yajin,p->cope, p->payment, p->debt, p->manage);
p = p->next;
}
fclose(fp);
}
void ListInsert(LinkList *L, LinkList *n)
{
LinkList *q = L;
n->next = NULL;
while (q->next != NULL)
{
q = q->next;
}
q->next = n;
}
void readHotelput(LinkList* L)
{
FILE* fp;
LinkList* n;
LinkList* m;
char ch;
char acc[20], po[20], na[20], se[5], I[20], ti[20], Ph[20], roo[15], man[5], a[20], b[20];
int ag, nu, pr, da, co, s, pa, de,fo,ya;
fp = fopen("hotel.txt", "r");
if (fp == NULL)
{
fp = fopen("hotel.txt", "w");
}
else
{
if (fgetc(fp) == -1)
{
m = (LinkList*)malloc(sizeof(LinkList));
strcpy(m->name, "0");
strcpy(m->ID, "0");
strcpy(m->room, "0");
strcpy(m->manage, "0");
strcpy(m->time, "0");
m->yajin = 0;
m->food = 0;
m->numder = 0;
m->price = 0;
m->day = 0;
m->debt = 0;
m->payment = 0;
m->cope = 0;
m->next = NULL;
L->next = m;
}
if (fgetc(fp) != -1)
{
fseek(fp, -2L, 1);
}
while (!feof(fp))
{
fscanf(fp, "%s %s %s %s %d %d %d %d %d %d %d %d %s ", na, I, ti, roo, &nu, &pr, &da,&fo,&ya, &co, &pa, &de, man);
n = (LinkList*)malloc(sizeof(LinkList));
strcpy(n->name, na);
strcpy(n->ID, I);
strcpy(n->time, ti);
strcpy(n->room, roo);
strcpy(n->manage, man);
n->yajin = ya;
n->food = fo;
n->numder = nu;
n->price = pr;
n->day = da;
n->debt = de;
n->payment = pa;
n->cope = co;
ListInsert(L, n);
}
}
fclose(fp);
}
void menu3(struct hotel *p)
{
int i;
system("cls");
while (1)
{
printf("\n");
printf("\n");
printf("#########################################酒店客房管理系统######################################\n");
printf("# #\n");
printf(" 请输入想要实现的功能选项:\n");
printf("# #\n");
printf("\t\t\t\t[1] 登记入住\n");
printf("# #\n");
printf("\t\t\t\t[2] 结账\n");
printf("# #\n");
printf("\t\t\t\t[3] 查询客房信息\n");
printf("# #\n");
printf("\t\t\t\t[4] 退出\n");
printf("# #\n");
printf("#########################################酒店客房管理系统######################################\n");
printf("\n");
scanf("%d", &i);
switch (i)
{
case 1:ADD(p); break;
case 2:Seller(p); break;
case 3:Inquire(p); break;
case 4:saveHotelFile(p); exit(0);
default:printf("\t输入不合法量\n"); Sleep(1500); system("cls");
}
}
}
int main(){
system("color f1");
LinkList *p;
p = (struct hotel *)malloc(sizeof(struct hotel));
p->next = NULL;
readHotelput(p);
menu3(p);
system("pause");//暂停的意思,接收到信号才能重新运行
return 0;
}
简要说明
- 代码运行后在同一路径自动创建相应TXT文件,并进行持久化存储
- 自动创建失败,可手动创建(hotel.txt),运行代码
- 使用DevC ++ 编译并运行,否则出现不同语法错误!!
结论
基于C语言的酒店客房管理系统可以实现对客房的科学化、规范化、查询顾客情况、订房信息、以及结算信息等,有助于提高管理的效率,方便酒店对客房的实际情况进行集中的查管理工作,以改善整个酒店的工作效率和服务质量。因此必须提高酒店的管理水平,酒店客房管理系统通过对信息的收集、传递、整理、加工、维护和使用,提高管理水平和效率。
本系统基于C语言开发实现的酒店客房管理系统,着重阐述了该系统开发实现过程,从系统的需求分析、模块设计、数据设计、详细设计到系统测试等环节都进行了较详尽的分析和描述。酒店客房管理系统要实现客房预定、入住登记、消费记账、调房登记、退房结账、查询统计等功能。该功能可明显提高对住宿人员宿费的有效管理。将动态实时的住宿登记、客房调整等有机地联系在一起,对酒店客房进行全方位的管理。