资源描述
- .
课程设计报告书
题 目:酒店管理系统设计报告
专 业: 电子信息工程〔移动互联网〕
班 级: 一班
姓 名: 韩国齐
学 号: 0
教 师: 朴海光
一:程序功能
酒店系统管理包括:主菜单、查看客房入住情况、登记入住、修改客房信息、修改客房信息及退房六个功能模块。每个功能用一个函数来实现,从而到达功能的模块化。
主菜单模块:主菜单模块包括1.查看客房入住情况、2.登记入住、3.客房信息修改、4. 退房及显示入住的总费用、5.返回主菜单、6.直接退出程序。
1〕查看客房入住情况功能模块:主要功能是查看房间的入住情况和继续查看已入住的房间的客户信息。
2〕登记入住功能模块:采用构造体数组来记录客户的信息,包括XX、性别、年龄、XX号、入住时间,入住单价及入住人数,登记完一个房间后可选择继续下一个房间的登记,也可以选择返回主菜单进展其他功能的操作。
3〕修改客房信息功能模块:包括修改客户信息模块和修改房间信息模块。
4〕修改客户信息模块:主要功能是可选择性的修改客户某个信息,也可以一次性全部修改。
5〕修改客房信息功能模块:用来对客户换房时对客户信息和房间号的修改。实现的功能是只要输入客户以前住的房间号和现在想住的房间号, 就将客户的信息全部移到现在想住的房间上,而以前的房间将被置为未使用。
6〕退房及显示总费用功能模块:当客户退房时,将客户使用的客房置为未使用,删除客户信息。并且显示客户从入住到退房时的总费用。
二:程序代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define M 80
int j,s;
int hj[81]={0};
FILE *fp; //定义文件指针变量
struct date //定义构造体类型
{
int month;
int day;
int year;
}final;
struct client
{char name[20];
int sex;
int age;
char ID_card[20];
int count;
struct date start;
};
struct hotel
{
int price;
int room_ID;
struct client personal;
}room[M];
void save(); //声明文件函数
void check_siru(); //声明查看客房入住情况函数
void registration_live(); //声明登记入住信息函数
void modify_infor(); //声明修改客房信息函数
void amend_one(); //声明修改个人信息函数
void amend_room(); //声明修改房间信息函数
void cost(); //声明退房及显示入住费用函数
void get_back(); //声明返回主菜单函数
void check_siru1(); //声明查看客房入住情况的调用函数
void registration_live1(); //声明登记入住信息的调用函数
void amend_one1(); //声明修改个人信息的调用函数
void amend_room1(); //声明修改房间信息的调用函数
void cost1(); //声明显示入住费用的调用函数
int main() //主函数
{
int menu();
void print_message();
printf("\n\n\n\n\n");
print_message();
menu();
save();
return 0;
}
void print_message()
{
printf("\t\t\t 欢送入住黄金酒店\n\n\n");
}
menu() //主菜单函数
{
int n;
printf("\n");
printf("\t\t\t 主菜单 \n\n");
printf("\t\t\t 按 1 查看客房入住情况\n");
printf("\t\t\t 按 2 登记入住信息\n");
printf("\t\t\t 按 3 修改客房信息\n");
printf("\t\t\t 按 4 退房、及显示入住费用\n");
printf("\t\t\t 按 5 返回主菜单\n");
printf("\t\t\t 按 6 退出程序\n");
printf("\n\t请输入要进展操作的选项〔1、2、3、4、5、6〕: ");
scanf("%d",&n);
while(n<1||n>6)
{
printf("\t\t\t 输入错误,请重新输入选项!");
scanf("%d",&n);
}
switch(n)
{
case 1:check_siru();break;
case 2:registration_live();break;
case 3:modify_infor();break;
case 4:cost();break;
case 5:get_back();break;
case 6:exit(0);
}
return 0;
}
void check_siru() //查看房间使用情况函数
{
int a,g,count=0;
for(g=1;g<=80;g++)
{
if(hj[g]==0)
++count;
else
if(hj[g]==1)
printf("\n\t\t\t正在使用的房间号:%d",g);
}
printf("\n\n\t\t\t未使用的房间数:%d",count);
printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");
scanf("%d",&a);
switch(a)
{
case 1:menu();break;
case 2:
printf("\n\n");
printf("\n\t\t\t请输入要查询的房间号: ");
scanf("%d",&s);
if(hj[s]==1)
{
printf("\n\t\t\t XX:%s",room[s].personal.name);
printf("\n\t\t\t性别〔其中:1表示男,2表示女!〕:%d",room[s].personal.sex);
printf("\n\t\t\t 年龄:%d",room[s].personal.age);
printf("\n\t\t\tXX号:%s",room[s].personal.ID_card);
printf("\n\t\t\t入住年份:%d",room[s].personal.start.year);
printf("\n\t\t\t 月:%d",room[s].personal.start.month);
printf("\n\t\t\t 日:%d",room[s].personal.start.day);
printf("\n\t\t\t 房间号:%d",room[s].room_ID);
printf("\n\t\t\t客房单价:%d",room[s].price);
printf("\n\t\t\t入住人数:%d",room[s].personal.count);
printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续\n");
scanf("%d",&a);
switch(a)
{
case 1:menu();break;
case 2:check_siru1();break;
}
}
else
printf("\n\t\t\t该房间未被使用!");
}
save();
printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");
scanf("%d",&a);
switch(a)
{
case 1:menu();break;
case 2:check_siru1();break;
}
}
void registration_live() //登记入住函数
{
int a;
printf("\t\t请输入登记的相关信息:\n");
printf("\n\t\t\t房间号");
scanf("%d",&j);
room[j].room_ID=j;
printf("\n\t\t\t XX:");
scanf("%s",room[j].personal.name);
printf("\n\t性别〔其中:1表示男,2表示女!〕:");
scanf("%d",&room[j].personal.sex);
printf("\n\t\t\t 年龄:");
scanf("%d",&room[j].personal.age);
printf("\n\t\t\tXX号:");
scanf("%s",room[j].personal.ID_card);
printf("\n\t\t\t入住年份:");
scanf("%d",&room[j].personal.start.year);
printf("\n\t\t\t 月份:");
scanf("%d",&room[j].personal.start.month);
printf("\n\t\t\t 日期:");
scanf("%d",&room[j].personal.start.day);
printf("\n\t\t\t客房单价:");
scanf("%d",&room[j].price);
printf("\n\t\t 请输入入住人数: ");
scanf("%d",&room[j].personal.count);
hj[j]=1;
save();
printf("\n\n\t\t按 1 返回主菜单,按 2 继续: ");
scanf("%d",&a);
switch(a)
{
case 1:menu();break;
case 2:registration_live1();break;
}
}
void modify_infor() //修改客房函数
{
int r,m;
printf("\t\t\t 菜单 \n\n\n");
printf("\t\t\t1:修改客户信息\n");
printf("\t\t\t2:修改房间信息\n");
printf("\t\t\t3:返回主菜单\n");
printf("\t\t\t4:退出程序\n");
printf("\n\n\t\t 请选择输入选项〔1、2、3、4〕: ");
scanf("%d",&m);
if(m<1||m>3)
{
r=1;
}
else r=0;
switch(m)
{
case 1:amend_one1();break;
case 2:amend_room1();break;
case 3:menu();
case 4:exit(0);
}
save();
}
void amend_one() //修改客人信息函数
{
int i,q;
char a[20];
printf("\n\n\t\t\t请输入现住的房间号: ");
scanf("%d",&j);
printf("\n\t\t\t请选择您要修改的个人选项\n");
printf("\t\t\t1:代表XX \n\t\t\t2:代表性别〔其中1表示男,2表示女〕 \n\t\t\t3:年龄 \n\t\t\t4:代表XX号 \n\t\t\t5:代表入住年份 \n\t\t\t6:代表入住月份 \n\t\t\t7:代表入住日期 \n\t\t\t8:入住人数\n");
printf("\t\t\t请选择输入选项〔1、2、3、4、5、6、7、8〕: ");
scanf("%d",&q);
switch(q)
{
int t,p;
case 1:printf("\n\t\t\t请输入新名字: ");
scanf("%s",a);
strcpy(room[j].personal.name,a);
printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");
scanf("%d",&i);
switch(i)
{
case 1:menu();break;
case 2:amend_one1();break;
}
case 2:printf("\n\t\t请输入新性别〔其中:1表示男,2表示女〕: ");
scanf("%d",&p);room[j].personal.sex=p;
printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");
scanf("%d",&i);
switch(i)
{
case 1:menu();break;
case 2:amend_one1();break;
}
case 3:printf("\n\t\t\t请输入年龄: ");
scanf("%d",&p);room[j].personal.age=p;
printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");
scanf("%d",&i);
switch(i)
{
case 1:menu();break;
case 2:amend_one1();break;
}
case 4:printf("\n\t\t\t请输入新XX号: ");
scanf("%s",room[j].personal.ID_card);
printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");
scanf("%d",&i);
switch(i)
{
case 1:menu();break;
case 2:amend_one1();break;
}
case 5:printf("\n\t\t\t请输入新年份: ");
scanf("%d",&p);room[j].personal.start.year=p;
printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");
scanf("%d",&i);
switch(i)
{
case 1:menu();break;
case 2:amend_one1();break;
}
case 6:printf("\n\t\t\t请输入新月份: ");
scanf("%d",&p);room[j].personal.start.month=p;
printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");
scanf("%d",&i);
switch(i)
{
case 1:menu();break;
case 2:amend_one1();break;
}
case 7:printf("\n\t\t\t请输入新日期: ");
scanf("%d",&p);room[j].personal.start.day=p;
printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");
scanf("%d",&i);
switch(i)
{
case 1:menu();break;
case 2:amend_one1();break;
}
case 8:printf("\n\t\t\t请输入新入住人数: ");
scanf("%d",&p);room[j].personal.count=p;
printf("\n\n\t\t\t按 1 返回主菜单,按 2 继续: ");
scanf("%d",&i);
switch(i)
{
case 1:menu();break;
case 2:amend_one1();break;
}
}
menu();
}
void amend_room() //修改房间信息函数
{
int a,l,x;
printf("\n\t\t\t\t请输入你要修改的 客房信息\n\n");
printf("\t\t\t\t1:房间号\n\n\t\t\t\t2:客房单价\n\n\t\t\t\t3:入住人数\n\n\t\t\t\t4:返回\n\n");
printf("\t\t\t请选择输入选项〔1、2、3、4〕: ");
scanf("%d",&l);
switch(l)
{
case 1:printf("\n\t\t\t请输入旧房号: ");
scanf("%d",&j);
printf("\t\t\t请输入新房号: ");
scanf("%d",&s);
strcpy(room[s].personal.name,room[j].personal.name);
//room[j].personal.name={'\0'};
room[s].personal.sex=room[j].personal.sex;
room[j].personal.sex=0;
room[s].personal.age=room[j].personal.age;
room[j].personal.age=0;
strcpy(room[s].personal.ID_card,room[j].personal.ID_card);
//room[j].personal.ID_card={'\0'};
room[s].personal.start.year=room[j].personal.start.year;
room[j].personal.start.year=0;
room[s].personal.start.month=room[j].personal.start.month;
room[j].personal.start.month=0;
room[s].personal.start.day=room[j].personal.start.day;
room[j].personal.start.day=0;
room[s].room_ID=s;
room[s].price=room[j].price;
room[s].personal.count=room[j].personal.count;
hj[s]=1;
hj[j]=0;
printf("\n\n\t\t按 1 返回主菜单,按 2 继续: ");
scanf("%d",&a);
switch(a)
{
case 1:menu();break;
case 2:amend_room1();break;
}
case 2:printf("\n\t\t\t 请输入房号: ");
scanf("%d",&s);
printf("\t\t\t请输入新单价: ");
scanf("%d",&x);room[s].price=x;
printf("\n\n\t\t按 1 返回主菜单,按 2 继续: ");
scanf("%d",&a);
switch(a)
{
case 1:menu();break;
case 2:amend_room1();break;
}
case 3:printf("\n\t\t\t 请输入房号: ");
scanf("%d",&s);
printf("\t\t\t请输入新入住人数: ");
scanf("%d",&x);
room[s].personal.count=x;
printf("\n\n\t\t按 1 返回主菜单,按 2 继续: ");
scanf("%d",&a);
switch(a)
{
case 1:menu();break;
case 2:amend_room1();break;
}
case 4:break;
}
save();
menu();
}
void cost() //退房、显示入住费用函数
{
int a,i,sum;
printf("\t\t\t请输入房间号: ");
scanf("%d",&j);
room[j].room_ID=j;
printf("\n\t\t\t 入住年份:%d",room[j].personal.start.year);
printf("\n\t\t\t 月:%d",room[j].personal.start.month);
printf("\n\t\t\t 日:%d",room[j].personal.start.day);
printf("\n\t\t\t 房间单价为: ");
printf("%d",room[j].price);
printf("\n\t\t\t请输入退房时间: ");
printf("\n\t\t\t 请输入年份: ");
scanf("%d",&final.year);
printf("\n\t\t\t 请输入月份: ");
scanf("%d",&final.month);
printf("\n\t\t\t 请输入日期: ");
scanf("%d",&final.day);
printf("\n\t\t\t请输入入住天数: ");
scanf("%d",&i);
sum=room[j].price*i;
printf("\n\t\t\t 总费用sum=%d\n",sum);
hj[j]=0;
save();
printf("\n\n\t\t按 1 返回主菜单,按 2 继续: ");
scanf("%d",&a);
switch(a)
{
case 1:menu();break;
case 2:cost1();break;
}
}
void get_back() //返回主菜单的调用函数
{
menu();
}
void check_siru1() //声明查看客房入住情况的调用函数
{
check_siru();
}
void registration_live1() //声明登记入住信息的调用函数
{
registration_live();
}
void amend_one1() //声明修改个人信息的调用函数
{
amend_one();
}
void amend_room1() //声明修改房间信息的调用函数
{
amend_room();
}
void cost1() //声明显示入住费用的调用函数
{
cost();
}
void save()
{
FILE *fp;
int i;
if((fp=fopen("客房管理.txt","w+"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
for(i=0;i<M;i++)
{
if(fwrite((&room[i]), sizeof(room[M]),1,fp)!=1)
printf("file write error\n");
fflush(fp);
}
fclose(fp);
}
三:运行
〔主菜单功能〕
〔 登记客户入住信息〔可以按 2 继续登记下个房间客户的信息〕〕
〔查看登记过的客户信息〔刚刚登记的明的信息已存在〕〕
〔修改客户信息〔这页修改的是名字,把明改为三〕〕
〔这页查看修改的客户信息是否成功〔已成功的把明改为了三〕〕
〔这页继续修改客户信息〔这里修改的是性别,把刚刚的男〔1〕改为了女〔2〕〕〕
〔这里继续查看刚刚修改的性别是否成功〔这里已经把男〔1〕改成了女〔2〕〕〕依此类推下面的
年龄、XX号、入住年份、月份、日期、人数都依此方法修改。
〔修改房间信息〔这里把刚刚客户三入住的45号房间换成了30号房间〕〕
〔查看客户换的房间是否换成功〔这里已经成功的把45号房换成了30号〕〕
〔退房及显示入住总费用模块〔这里已经退掉了30号房间〕〕
〔查看退房是否成功〔这里已经成功的退出了30号房间,已经没有房间在使用了〕〕。
整个酒店管理系统的功能就如上图所示。
- . 可修编.
展开阅读全文