酒店房间登记与计费管理系统《C语言课程设计》.docx

上传人:b****8 文档编号:23994863 上传时间:2023-05-23 格式:DOCX 页数:41 大小:217.32KB
下载 相关 举报
酒店房间登记与计费管理系统《C语言课程设计》.docx_第1页
第1页 / 共41页
酒店房间登记与计费管理系统《C语言课程设计》.docx_第2页
第2页 / 共41页
酒店房间登记与计费管理系统《C语言课程设计》.docx_第3页
第3页 / 共41页
酒店房间登记与计费管理系统《C语言课程设计》.docx_第4页
第4页 / 共41页
酒店房间登记与计费管理系统《C语言课程设计》.docx_第5页
第5页 / 共41页
点击查看更多>>
下载资源
资源描述

酒店房间登记与计费管理系统《C语言课程设计》.docx

《酒店房间登记与计费管理系统《C语言课程设计》.docx》由会员分享,可在线阅读,更多相关《酒店房间登记与计费管理系统《C语言课程设计》.docx(41页珍藏版)》请在冰豆网上搜索。

酒店房间登记与计费管理系统《C语言课程设计》.docx

酒店房间登记与计费管理系统《C语言课程设计》

 

《C语言程序设计》

课程设计报告

学院:

_专业班级:

学生姓名:

学号:

设计地点(单位)________计算机自主学习中心________

设计题目:

___酒店房间登记与计费管理系统设计

完成日期:

年月日

指导教师评语:

______________________

_________________________________________________________________________________________________________________________________________________________________________________________________________

成绩(五级记分制):

________________

指导教师(签字):

________________

摘要

本次C语言课程设计我选择的设计任务是客房管理系统设计,这个管理系统是用C语言在VC6.0c++的编译器编译而成的。

客房管理系统包括客户基本信息的录入、房间统计、用户个人费用及住房信息查询、自动结账、退出系统功能等。

系统的开发主要由分析、查阅相关书籍和参考资料、程序设计、编写代码、运行实施、调试和测试、维护和修改等阶段组成,其中信息管理和自动运行为开发的重点。

在程序设计中结构体的调用与各函数、数组的调用为编译的重点部分。

关键词:

结构体函数数组

 

课程设计任务书

设计题目:

酒店房间登记与计费管理系统设计

学生姓名

课程名称

C语言程序设计课程设计

专业班级

计科11

地点

I305/I306

起止时间

2012年1月9日~1月13日

设计内容及要求

请你为XX酒店设计一个房间登记与计费管理系统。

该系统中应包括所有房间的信息(房号、房型、基本描述、挂牌房价、入住状态)等,客人入住后应产生一条入住记录(基本信息包括:

房号、客人姓名、客人证件类别、客人证件号、入住日期、押金情况),客人退房后要修正房间的入住状态并产生相应的账单。

【题目要求】

(1)屏幕上出现一个界面,让操作员能够方便的选择所需要进行的操作,包括登记入住、查询房间的入住情况、查询当前费用、结账退房等操作。

(2)对不同标准的房间实施不同的收费标准,也可以按天收费或按小时收费,可根据顾客需要在登记的入住的时候进行选择。

(3)在结账退房时,根据入住的时间,计费方式和房间单价计算出总费用。

要求用C语言的文件操作语句将以上所有结果分别保存在文件中。

【输入/输出要求】

(1)应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。

进入每个操作后,根据程序的提示输入相应的信息;

(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。

根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。

设计

参数

(1)系统分析、设计正确。

(2)结果以图表方式显示。

(3)界面简洁、美观。

(4)报告格式规范。

进度

要求

周一:

明确设计任务,学习相关基础知识

周二:

熟悉各知识点,进行基础练习

周三:

根据题目要求,进行设计和实现

周四:

根据题目要求,进行设计和实现

周五:

撰写报告,进行答辩

参考资料

[1]何钦铭颜晖.《C语言程序设计》.高等教育出版社.2008年

[2]谭浩强张基温.《C语言程序设计教程》.高等教育出版社.2006年

其它

难点提示:

首先分析题目的数据结构,看看要操作那些值;然后根据题意设计操作对象的结构。

可以使用结构体来描述其中较为复杂的对象例如往来帐目;确定结构体的定义;可以使用数组来保存数据,使用结构体数组来保存各类数据。

说明

1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。

2.若填写内容较多可另纸附后。

3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。

教研室主任:

指导教师:

伍建全/雷亮/焦晓军

陈应祖/杨治明2012年1月1日

 

 

 

1软件需求说明书

1.1需求分析

随着时代的进步、科学的发展,对信息技术的要求也越来越高。

而顾客对各大酒店和客房的要求也越来越高,酒店以前的全人工服务已经不能满足顾客和以及现代信息化时代的要求。

顾客选择入住酒店时也会选择更加现代化和信息化的更加方便快捷的现代化服务酒店。

所以现在各大酒店也都向着信息化和现代化的方向发展,引进更加先进和方便的酒店管理和服务系统。

计算机的自动化管理系统提高了酒店管理的管理水平和工作效率,增强酒店的竞争能力降低成本,为客户提供更加优质的服务。

所以需要开发一个计算机系统来代替人工管理酒店客户入住登记和信息查询等方面的工作。

使用该系统可以使酒店的服务更加快捷、准确和方便,减少大量的人工操作,提高了工作效率。

1.2软件功能简介

1.2.1登记入住

自动登记顾客的各人信息,包括顾客姓名、身份证件、证件号码、选择房间种类、计费方式、押金交付等功能。

1.2.2查询房间入住情况

1.2.3查询当前费用

1.2.4结账退房

1.3界面、数据结构要求

屏幕上显示一个界面,界面要求简洁美观,让操作员能够根据具体的提示信息方便的选择所需要进行的操作。

用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。

 

2.系统分析与设计

2.1软件界面设计

2.1.1首页欢迎界面

2.1.2登记入住界面

2.1.3客户入住信息查询界面

2.1.4客户个人费用查询界面

2.1.5客户退房结账界面

2.1.6客户结账收退支付费用结账界面

2.1.7用户退出系统界面

2.2软件的数据(结构)设计

主要所用的结构体、函数和变量的数据类型

structdate//定义结构体date,记录入住和结账时间

{

intmon;//整形int格式控制符为%d

intday;

inthour;

};

structcostoem//定义结构体costoem

{

intnum;//房间号格式控制符为%d

intkind;//房间种类1-单人间2-双人间

charname[20];//客户信息//字符型char格式控制符为%s

charID[19];//身份证号

inth_money;//按小时收费价格

intd_money;//按天收费价格格式控制符为%d

structdatetime;//入住时间time被说明为data结构类型。

成员名可与程序中其它变量同名,互不干扰。

intflag;//入住状态,flag:

0—无人入住1—按小时入住2—按天入住

intdeposit;//押金

}room[M];

2.3软件的算法设计

2.3.1主要结构模块框图

 

 

结账退房

 

2.3.2主要流程图

2.3.2具体模块使用结构流程

 

 

 

 

 

3.软件的实现

3.1核心功能再现

#include

#include

#include

#include

#defineM60

//程序所有功能所用函数

voidwelcome();//首页欢迎界面

intdengji();//用来登记入住

intlookfor_room();//用来查询房间入住情况

intlookfor_price();//用来查询当前费用

inttuifang();//用来结账退房

intfind();//用来查找入住人数

longh_jifei();//按小时计费

longd_jifei();//按天计费

intper_infor();//显示个人信息

voidyingzhifu();//用来结账付款

intquit();//退出函数

structdate//定义结构体date,记录入住和结账时间

{

intmon;

intday;

inthour;

};

structcostoem//定义结构体costoem

{

intnum;//房间号

intkind;//房间种类1-单人间2-双人间

charname[20];//客户信息

charID[19];//身份证号

inth_money;//按小时收费价格

intd_money;//按天收费价格

structdatetime;//入住时间

intflag;//入住状态,flag:

0—无人入住1—按小时入住2—按天入住

intdeposit;//押金

}room[M];

 

/*个人信息函数*/

intper_infor(intk)

{

charzhonglei[30],fangshi[30];

switch(room[k].flag)//选择计费方式

{

case1:

strcpy(fangshi,"按小时计费");break;

case2:

strcpy(fangshi,"按天计费");break;

default:

break;//输入与原定比较不符合跳出循环

}

switch(room[k].kind)//选择房间种类

{

case1:

strcpy(zhonglei,"单人间");break;

case2:

strcpy(zhonglei,"双人间");break;

}

printf("\n\n\t\t----姓名:

");

puts(room[k].name);printf("\n\n");

printf("\t\t----身份证号:

");

puts(room[k].ID);printf("\n\n");

printf("\t\t----房间种类:

");

puts(zhonglei);printf("\n\n");

printf("\t\t----房间号:

");

printf("%d",k+1);printf("\n\n");

printf("\t\t----计费方式:

");

puts(fangshi);printf("\n\n");

printf("\t\t----押金:

");

printf("%d元",room[k].deposit);printf("\n\n");

printf("\t\t入住时间:

");

printf("2012年%d月%d日%d时\n\n",room[k].time.mon,room[k].time.day,room[k].time.hour);return(0);

}

 

/*查询入住人数函数*/

intfind()

{

intcount=0,i;//查询房间数

for(i=0;i

if(room[i].flag!

=0)

count++;

returncount;

}

 

/*按天计费*/

longd_jifei(structdateend,structdatestart,intmoney)

{

longfeiyong;

inta,b;

a=end.hour-start.hour;//计算小时

b=end.day-start.day;//计算天数

if(a>=10)

feiyong=(b+1)*money;//如果小时数大于10,则算为一天

else

if(a>=0)

feiyong=b*money;//如果小时数大于0而小于10,则不计算小时

else

{

a=a+24;//如果小时数小于0,则小时数加24,天数减一,按天数计费重新计算

b=b-1;

if(a>=10)

feiyong=(b+1)*money;

else

feiyong=b*money;

}

returnfeiyong;//返回费用值

}

 

/*按小时计费*/

longh_jifei(structdateend,structdatestart,intmoney)

{

longfeiyong;

inta,b;

a=end.hour-start.hour;//计算小时

b=end.day-start.day;//计算天数

if(a<0)

{

a=a+24;//如果小时数小于0,则小时数加24,天数减一,按小时计费重新计算

b=b-1;

}

feiyong=(a+b*24)*money;

returnfeiyong;//返回费用值

}

 

/*结账时所有开销收费*/

 

voidyingzhifu(longmoney,intdep)

{

longdif=(long)dep-money;

if(dif==0)

printf("押金余总费用相等");//判断应支付是否大于押金金额

else

if(dif>0)

printf("酒店应找还顾客%ld元",dif);//押金金额大于应支付

else

printf("顾客应再支付%ld元",dif*(-1));//押金金额小于应支付

}

 

/*退出函数,返回欢迎主菜单页面函数*/

intquit()

{

intz;

printf("您需要返回欢迎界面吗?

1-是2-否\n\n");

scanf("%d",&z);

if(z==1)//返回欢迎界面

welcome();

else

printf("******谢谢您的惠顾,欢迎您下次光临!

******!

\n\n");

exit(0);

}

 

/*欢迎主菜单页面*/

voidwelcome()

{

intn=find();

inti,j;

printf("&&&&&&&&&&&&&&&&&&&&&&&&&&#############################&&&&&&&&&&&&&&&&&&&&&&&");

printf("\n\n\t\t------------欢迎来到**酒店-----------\n\n");

printf("\t\t\t1.登记入住\n\n");

printf("\t\t\t2.查询房间入住情况\n\n");

printf("\t\t\t3.查询当前费用\n\n");

printf("\t\t\t4.结账退房\n\n");

printf("\t\t\t5.退出系统\n\n");

printf("\t\t总房间数:

%d\t入住人数:

%d\t空房间数:

%d",M,n,M-n);

printf("\n\n&&&&&&&&&&&&&&&&&&&&&&&&############################&&&&&&&&&&&&&&&&&&&&&&&&&&\n\n");

printf("\t\t\t请选择您所需的服务:

");

scanf("%d",&i);

switch(i)//控制选择项目

{

case1:

j=dengji();break;//进入相应操作目录

case2:

j=lookfor_room();break;

case3:

j=lookfor_price();break;

case4:

j=tuifang();break;

default:

printf("欢迎您下次光临\n\n");输入错误退出

exit(0);

}

while(j!

=0)

{

welcome();//进入欢迎菜单主界面

scanf("%d",&i);

switch(i)

{

case1:

j=dengji();break;

case2:

j=lookfor_room();break;

case3:

j=lookfor_price();break;

case4:

j=tuifang();break;

default:

printf("\n\n*************欢迎您下次光临*************\n\n");

exit(0);

}

}

}

 

/*顾客登记入住函数*/

intdengji()

{

inti,j,k,yajin,s,a,n;

charch,fangshi[30];

printf("\n\n############登记入住#############\n\n");

if(find()==M)//入住人数与房间总数相等

{

printf("当前房间已满,是否返回(Y/N):

");

ch=getchar();

if(ch=='y')

return

(1);//返回主菜单

else

exit(0);

}

printf("请选择房间类型:

\n\n");

printf("1.单人间2.双人间\n\n");

scanf("%d",&n);

printf("可供您选择的房间有:

\n\n");

for(i=30*(n-1)+1,j=0;i<30*n+1;i++)//单人间的j入住人数,i剩余房间数

if(room[i-1].flag==0)

{

printf("%d\t",i);

j=j+1;

if(j%5==0)printf("\n\n");

}

printf("请输入您准备入住的房间号:

");//房间号k—room[k-1]

scanf("%d",&k);

room[k-1].kind=n;

room[k-1].num=k;

printf("\n\n请选择您的计费方式:

(1.按小时收费为%d元/时--2.按天计费为%d元/天)\t",room[k-1].h_money,room[k-1].d_money);

scanf("%d",&s);

while(s!

=1&&s!

=2)

{

printf("输入有误,请重新输入:

");

scanf("%d",&s);

}

if(s==1)

room[k-1].flag=1;

else

room[k-1].flag=2;

printf("\n\n请输入您的姓名:

");

scanf("%s",room[k-1].name);

printf("\n\n请输入您的身份证号:

");

scanf("%s",room[k-1].ID);

switch(n)

{

case1:

yajin=80;break;

case2:

yajin=100;break;

}

printf("\n\n您应当缴纳的押金金额为%d元",yajin);

printf("\n\n请输入您实际缴纳的押金金额:

");

scanf("%d",&room[k-1].deposit);

while(room[k-1].deposit<0)

{

printf("\t\t\n\n!

输入有误,请重新输入!

\n\n");

printf("\n\n请输入您实际缴纳的押金金额:

");

scanf("%d",&room[k-1].deposit);

}

printf("\n\n请输入是否入住(1.是2.否):

");

scanf("%d",&a);

while(a!

=1&&a!

=2)

{

printf("\n\n\t\t输入有误,请重新输入:

");

scanf("%d",&a);

}

if(a==1)

{

printf("\n\n请输入您的入住时间(分别输入*月*日*时):

");

scanf("%d月",&room[k-1].time.mon);

scanf("%d日",&room[k-1].time.day);

scanf("%d时",&room[k-1].time.hour);

switch(room[k-1].flag)

{

case1:

strcpy(fangshi,"按小时计费");break;

case2:

strcpy(fangshi,"按天计费");break;

default:

break;

}

printf("\n\n您选择的计费方式为----%s",fangshi);

printf("\n\n您已成功登记!

\n\n");

}

quit();

return(0);

}

 

/*顾客查询房间入住情况函数*/

intlookfor_room()

{

inti,j,k,s;

structdatetim_t;

chara[20];

printf("\n\n查询房间入住\n\n");

printf("\t\t1.按房号查询\n\n\t\t2.按客户信息查询\n\n\t\t3.按入住时间查询\n\n\t\t4.退出");

printf("\n\n请选择:

");

scanf("%d",&i);

while

(1)

{

if(i>5||i<1)

{

printf("\n\n\t\t输入有误,请重新输入:

");

scanf("%d",&i);

}

else

if(i==1)//按顾客所住房号查询

{

printf("\n\n请输入房间号:

");

scanf("%d",&j);

if(room[j-1].flag==0)

printf("\n\n此房间无人住\n\n");

else

{

printf("您的个人信息为:

");

per_infor(j-1);

}break;

}

else

if(i==2)//按顾客个人信息查询

{

printf("\n\n请输入您的身份证号:

");

scanf("%s",a);

while

(1)

{

for(k=0;k

if(strcmp(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1