C语言实验分析报告酒店管理系统.docx

上传人:b****8 文档编号:28323112 上传时间:2023-07-10 格式:DOCX 页数:26 大小:92.25KB
下载 相关 举报
C语言实验分析报告酒店管理系统.docx_第1页
第1页 / 共26页
C语言实验分析报告酒店管理系统.docx_第2页
第2页 / 共26页
C语言实验分析报告酒店管理系统.docx_第3页
第3页 / 共26页
C语言实验分析报告酒店管理系统.docx_第4页
第4页 / 共26页
C语言实验分析报告酒店管理系统.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C语言实验分析报告酒店管理系统.docx

《C语言实验分析报告酒店管理系统.docx》由会员分享,可在线阅读,更多相关《C语言实验分析报告酒店管理系统.docx(26页珍藏版)》请在冰豆网上搜索。

C语言实验分析报告酒店管理系统.docx

C语言实验分析报告酒店管理系统

C语言实验报告-酒店管理系统

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

武汉科技大学

C语言程序设计

课程设计

 

题目酒店管理系统

班级信息与计算科学2班

姓名陈诚

学号201407119043

成绩

 

2015年6月23日

 

一、总体设计

1、程序的总体设计

(1)程序总体设计思路:

酒店房间登记管理系统,实现的是房间登记与管理(包括登记入住、查询)

为了体现模块化设计,把所有要实现的功能做成函数,采用分步实施的方法逐步细化。

具体分布实施有以下5步。

1,编写模块

2,定义实现个功能模块所要函数

3,编写各个函数

4,理清思路,逐步修改

5,调试整个程序。

核心部分是各个函数:

1、欢迎界面函数:

通过switch进入不同界面。

2、登记入住函数:

使用户在入住前登记个人信息,选择房间信息

3、查询入住情况函数:

顾客可通过两种方式查找到自己的个人信息。

4、查询当前费用函数:

顾客可随时查询所用费用

5、结账退房函数:

所有信息清零。

2、数据结构

此系统,选择用结构体存放不同类型的数据,房间信息。

在这过程中由于对指针的运用与操作还不熟练,不方便修改,所以没用指针。

(1)创建房间信息结构体

/*结构体hotel房间号、房间种类、客户姓名、身份证号、入住状态、实际收房费,押金等*/

structhotel

{

intnum;/*房间号*/

intkind;/*房间种类1(表示单人间)2(表示双人间)*/

charname[20];/*姓名*/

charID[19];/*身份证号*/

intflag;/*flag0(表示有人入住)0(表示无人入住)*/

intdingjia;/*房间定价*/

intshiji;/*实际缴纳费用*/

}room[M];

3、函数原型声明

voidwelcome();//主界面

intdengji();//登记入住函数

intnow_room();//查询当前房间入住情况

intnow_feiyong();//查询当前费用

inttuifang();//结账退房

intfind();//查询当前入住人数

intkfxinxi();//客户信息

voidjiezhang();//结账付款

intquit();//退出函数

intmima();//密码//

voidsave();//保存//

二、详细设计

1、主函数设计

主函数说明:

为满足顾客登记入住,查询房间入住情况,查询当前费用,结账退房等功能的实现,设计此函数。

开始进入欢迎界面让顾客选择,进入顾客所选界面。

主函数流程图

2、子函数流程图

(1)登记入住函数说明:

登记入住流程图

 

(2)查询房间入住情况:

2种查询方式(1.按房号查询2.客户信息查询),最终输出

 

结账退房流程图

三、测试

出现欢迎界面

测试1:

选择选项1,入住登记

“1”按提示输入信息(如:

1-单人间,1-房间号,陈诚,522225************,200元,登记成功)

测试2:

选择选项2,查询房间入住情况

“1”按房间号查询,1、房间号出现刚登记的个人信息

2、房间号该房为空房

“2”按客户信息查询,身份证号522225199609230037出现个人信

“3”退出,返回欢迎界面

测试3:

选择选项3,查询客户当前费用

“1”号房间,当前费用100元

测试4:

选择选项4,结账退房

“2”号房间,空房,重输

“1”号房间,应支付100元,退房成功

四、小结

此程序满足课程设计要求,实现登记、查询、结账等操作,并对不同房间实施不同收费标准,计算总费用等功能。

程序优点:

整个程序界面友好,与顾客有良好的界面交流。

程序虽简单,但功能齐全。

程序缺点:

(1)数据结构单一。

主要是学习c语言时间短,知识程度不深,不够全面,知道的不多。

(2)不会调用系统时间。

在做课设的过程中,我对c语言有了更深入的了解。

它很考察逻辑的严密性,思路条理要清晰是很重要的,它包含你编写程序的大致方向。

严谨认真的态度也不可或缺。

调试程序过程中也可以提升自己的理解已经加深自身熟练度。

遇到问题要想方设法将它解决,看书找资料,请教同学,与同学讨论,从这些方面我又可以学会合作。

 

源码:

//主函数//

#defineM40

#include

#include

#include

#include"dingyi.h"

#include"jiegouti.h"

#include"find.h"

#include"kfxinxi.h"

#include"zuizhongfeiyong.h"

#include"quit.h"

#include"zhujiemian.h"

#include"dengji.h"

#include"dangqianruzhu.h"

#include"dangqianfeiyong.h"

#include"tuifang.h"

#include"mima.h"

#include"save.h"

#include"duru.h"

/*主函数*/

voidmain()

{

inti,j;

mima();//密码//

duru();//读入数据//

welcome();//载入主界面//

scanf("%d",&i);

switch(i)

{

case1:

j=dengji();break;

case2:

j=now_room();break;

case3:

j=now_feiyong();break;

case4:

j=tuifang();break;

case5:

exit(0);

default:

quit();

}

while(j!

=0)//操作结束可返回主界面//

{

welcome();

scanf("%d",&i);

switch(i)

{

case1:

j=dengji();break;

case2:

j=now_room();break;

case3:

j=now_feiyong();break;

case4:

j=tuifang();break;

case5:

exit(0);

default:

quit();

}

}

}

 

/*登记入住*/

intdengji()

{

inti,j,a,k,n;

system("cls");

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

printf("请选择房间类型:

\n\n");

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

scanf("%d",&n);

switch(n)

{

case1:

printf("现在空闲的单人房间有:

\n");

for(i=1,j=0;i<=M;i=i+2)

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

{

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

if(j%5==0)

printf("\n");

}//控制每行输出个数//

printf("安排客户想要的房间:

");

scanf("%d",&k);

while(k%2==0)

{printf("!

房号输入错误,请重新输入\n");

scanf("%d",&k);}

room[k-1].kind=1;

room[k-1].num=k;

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

");

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

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

");

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

while(strlen(room[k-1].ID)!

=18)

{printf("!

输入有误,请重新输入\n");

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

room[k-1].dingjia=100;

printf("\n\n应当缴纳房费%d元",room[k-1].dingjia);

printf("\n\n实际缴纳的金额为:

");

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

while(room[k-1].shiji

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

输入有误,请重新输入!

\n\n");

printf("\n\n实际缴纳的金额:

");

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

printf("\n\n是否确认入住(1-是2-否)\n");

scanf("%d",&a);

while(a!

=1&&a!

=2)

{

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

输入有误,请重新输入:

");

scanf("%d",&a);

}

if(a==1)

{room[k-1].flag=1;

printf("\n已成功登记!

\n\n");

save();

}

break;

case2:

printf("现在空闲的双人房间有:

\n\n");

for(i=2,j=0;i<=M;i=i+2)

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

{

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

if(j%5==0)

printf("\n\n");

}//控制每行输出个数//

printf("安排客户想要的房间:

");

scanf("%d",&k);

while(k%2!

=0)

{printf("!

房号输入错误,请重新输入:

\n");

scanf("%d",&k);}

room[k-1].kind=2;

room[k-1].num=k;

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

");

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

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

");

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

while(strlen(room[k-1].ID)!

=18)

{

printf("!

输入有误,请重新输入:

\n");

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

}

room[k-1].dingjia=200;

printf("\n\n应当缴纳房费%d元",room[k-1].dingjia);

printf("\n\n实际缴纳的金额为:

");

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

while(room[k-1].shiji

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

输入有误,请重新输入:

\n\n");

printf("\n\n实际缴纳金额为:

");

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

printf("\n\n是否确认入住(1-是2-否)\n");

scanf("%d",&a);

while(a!

=1&&a!

=2)

{

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

输入有误,请重新输入:

");

scanf("%d",&a);

}

if(a==1)

{room[k-1].flag=1;

printf("\n已成功登记!

\n\n");

save();

}break;

default:

quit();

}

quit();

return1;

}

//读取函数//

voidduru()

{

FILE*fp;

inti;

if((fp=fopen("kf_dat","rb"))==NULL)

{

printf("cannotopenfile\n");

return;

}

for(i=0;i

{

fread(&room[i],sizeof(structhotel),1,fp);

}

fclose(fp);

}

 

/*查询入住人数*/

intfind()

{

intnumber=0;

inti;

for(i=0;i

if(room[i].flag!

=0)

number++;

return(number);

}

 

/*客户信息*/

intkfxinxi(intk)

{

charzhonglei[10];

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----实收房费:

");

printf("%d元",room[k].shiji);

printf("\n\n");

return

(1);

}

 

//密码//

intmima()

{

system("color8f");

charname[10],mima[20];

printf("进入系统前请输入用户名和密码:

\n");

scanf("%s%s",name,mima);

while((strcmp(name,"CC")!

=0)||(strcmp(mima,"02200059")!

=0))//比较输入的和用户密码是否一致//

{

printf("输入错误,重新输入!

\n");

scanf("%s%s",name,mima);

}

system("cls");

return

(1);

}

/*查询当前费用*/

intnow_feiyong()

{

intmoney,n;

inti,s;

system("cls");

printf("\n\n☆☆☆☆☆☆☆查询当前客户费用☆☆☆☆☆☆☆\n\n");

if(find()==0)

printf("全为空房!

\n\n");

else

{

printf("请输入房间号:

");

scanf("%d",&i);

while

(1)

{

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

{

printf("\n\n该房为空房,1.重输2.退出\n\n");

scanf("%d",&s);

if(s==1)

{

printf("请输入房间号:

");

scanf("%d",&i);}

else

break;

}

else

{

printf("\n\n查询的个人信息为:

");

kfxinxi(i-1);

printf("\n\n当前房间定价为:

%d",room[n-1].dingjia);

break;

}

break;

}

}

quit();

return1;

}

 

/*查询当前房间入住情况*/

intnow_room()

{

inti,j,k,s;

chara[20];

system("cls");

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

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

printf("\n\n请选择:

");

scanf("%d",&i);

while

(1)

{if(i>4||i<1){printf("\n\n\t\t输入有误,请重新输入:

");

scanf("%d",&i);}

elseif(i==1)

{

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

");//按房号查询

scanf("%d",&j);

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

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

else

{

printf("您的个人信息为:

");

kfxinxi(j-1);

}

break;

}

elseif(i==2)

{

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

");//按客户信息查询

scanf("%s",a);

while

(1)

{

for(k=0;k

if(strcmp(a,room[k].ID)==0)break;

if(k!

=M)

{printf("\n\n您的个人信息为:

");

kfxinxi(k);break;

}

else

{printf("\t\t\n\n1.输入有误,请重新输入2.不存在此人信息,退出\n\n");

scanf("%d",&s);

if(s==1)

{

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

");

scanf("%s",a);}

elsereturn

(1);}}break;}

elseif(i==3)break;

else{

printf("\t\t\n\n1.输入有误,请重新输入\n\n");

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

printf("\n\n请选择:

");

scanf("%d",&i);

}

}quit();}

 

/*退出函数*/

intquit()

{

inty;

printf("是否需要返回主界面?

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

scanf("%d",&y);

if(y==1)

welcome();

else

printf("******欢迎下次光临武科大酒店******!

\n\n");

return1;

}

//保存函数//

voidsave()

{

FILE*fp;

inti;

if((fp=fopen("kf_dat","wb"))==NULL)

{

printf("cannotopenfile\n");

return;

}

for(i=0;i

if(fwrite(&room[i],sizeof(structhotel),1,fp)!

=1)

printf("filewriteerror\n");

fclose(fp);

}

/*最终收的费用*/

voidshoufei(intdingjia,intshiji)

{

intyu;

yu=shiji-dingjia;

if(yu==0)

printf("费用刚刚好,不用找零或补钱\n");

elseif(yu>0)

printf("找还顾客%d元\n",yu);

elseprintf("顾客应再支付%d元\n",yu*(-1));

}

/*结账退房*/

inttuifang()

{

charzhonglei[30];

intn,m;

system("cls");

printf("\n\n☆☆☆☆☆☆☆结账退房☆☆☆☆☆☆☆\n\n");

if(find()==0)

printf("房间都是空的!

\n\n");

else

{

printf("请输入需要退房的房号:

");

scanf("%d",&n);

if(n>M||n<1)

{

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

",M);

scanf("%d",&n);

}

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

printf("空房,无法办理退房!

\n\n");

switch(room[n-1].kind)

{

case1:

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

case2:

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

}

printf("房间号:

%d\n房间类型:

%s\n客人姓名:

%s\n身份证号:

%s\n",room[n-1].num,zhonglei,room[n-1].name,room[n-1].ID);

printf("\n\t房间定价为:

%d\n",room[n-1].dingjia);

if(room[n-1].flag==1)

shoufei(room[n-1].dingjia,room[n-1].shiji);

printf("\n\n是否退房(1.是2.否):

");

scanf("%d",&m);

if(m==1)

{

room[n-1].flag=0;

strcpy(room[n-1].name,"0");

room[n-1].shiji=0;

printf("\n\n您已成功退房,欢迎下次光临!

\n\n");

save();

}

}

quit();

return1;

}

 

/*主界面*/

voidwelcome()

{

intn;

n=find();

system("color4F");

printf("--------------------------------------------------------------------------------");

printf("▼▼▼▼▼▼▼▼▼▼▼▼▼▼欢迎进入武科大酒店管理系统▼▼▼▼▼▼▼▼▼▼▼▼▼\n");

printf("\t★★★1.入住登记\n\n");//dengji()//

printf("\t★★★2.查询当前房

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

当前位置:首页 > 人文社科 > 军事政治

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

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