客房管理系统C语言——课程设计实习

绪论

现代化的酒店组织庞大、服务项目多、信息量大,要想提高劳动生产、降低成本、提高服务质量和管理水平,促进经济效益,但凭原始的手工记录管理,不仅效率低,容易出错,因此必须借助计算机来进行现代化的信息管理。所以酒店管理系统正是为此而设计的,优秀的酒店客房管理系统操作方便,灵活性好,系统安全性高,运行稳定,服务快捷方便,让宾客感受到一种顾客至上的享受。
本系统是基于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语言开发实现的酒店客房管理系统,着重阐述了该系统开发实现过程,从系统的需求分析、模块设计、数据设计、详细设计到系统测试等环节都进行了较详尽的分析和描述。酒店客房管理系统要实现客房预定、入住登记、消费记账、调房登记、退房结账、查询统计等功能。该功能可明显提高对住宿人员宿费的有效管理。将动态实时的住宿登记、客房调整等有机地联系在一起,对酒店客房进行全方位的管理。

  • 31
    点赞
  • 188
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
宾馆客房管理系统是针对宾馆客房管理工作流程设计的一种信息化管理系统,旨在提高宾馆客房管理效率和服务质量。c 课程设计宾馆客房管理系统涉及多个方面的内容,包括客房预订、客房分配、客房清洁、客房维护、客房结算等。 首先,课程设计中需要明确宾馆客房管理系统功能和模块设计,包括前台接待系统客房清洁管理系统客房维护管理系统、客户信息管理系统等,同时需要考虑系统的操作界面设计和用户体验。 其次,课程设计需要考虑宾馆客房管理系统的数据管理和报表分析功能,包括客房预订信息、客房使用记录、客户反馈信息等数据的管理和分析,以及相关的报表输出和统计分析功能,以便宾馆管理人员对经营状况进行及时、准确的分析。 另外,课程设计还需要考虑宾馆客房管理系统与其他管理系统的集成和数据共享,比如财务管理系统、人力资源管理系统等,以实现各管理系统的数据互通和信息共享,提高全面管理效率。 最后,课程设计还需要考虑宾馆客房管理系统的安全性和稳定性,包括数据备份和灾难恢复机制的设计,以及系统的权限管理和访问控制,保障宾馆客房管理系统的稳定运行和安全性。 综上所述,c 课程设计宾馆客房管理系统需要全面考虑宾馆客房管理的各个环节,设计功能全面、操作简便、安全稳定的信息化管理系统,以提高宾馆客房管理效率和服务质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值