C语言数据结构酒店信息管理Word下载.docx
- 文档编号:21297998
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:24
- 大小:381.80KB
C语言数据结构酒店信息管理Word下载.docx
《C语言数据结构酒店信息管理Word下载.docx》由会员分享,可在线阅读,更多相关《C语言数据结构酒店信息管理Word下载.docx(24页珍藏版)》请在冰豆网上搜索。
C、要求界面友好,操作方便,容错性强;
D、要求能对输入信息进行判断,如果输入信息错误要有相关提示;
E、要求能利用结构体进行相关信息处理。
(4)、限制条件:
A、限制用C++编程;
B、限制错误信息的录入和保存;
二、总体设计
1.程序设计组成框图:
2.程序流程图:
N
Y
三、详细设计
1.住宿
住宿包括:
姓名登记,身份证登记及其房间定位
【程序】
voidPark(structHotleHot[][13])
{inti;
charnum[19];
charname[20];
printf("
请输入客户入住信息\n"
);
printf("
客户姓名:
"
scanf("
%s"
name);
请输入身份证号:
"
num);
for(i=0;
i<
13;
i++)
{if(Hot[0][i].isempty==1)
{printf("
第一层第%d房间号空着,请在此处入住\n"
i+1);
strcpy(Hot[0][i].IDnum,num);
身份证号:
%s层号:
1房间号:
%d\n"
num,i+1);
AddTime(Hot);
/*在此之前入住的所有房间时间加10*/
Hot[0][i].isempty=0;
/*表示该房间已有人*/
Hot[0][i].time=10;
/*将时间设为10*/
return;
}
}
2.房间住宿情况
用二维数组来第一房间的具体位置,用i表示房间所在的层数,用J表示房间号。
voidInformation(structHotleHot[][13])
{inti,j;
3.住宿时间
在有新客的入住同时,将入住的客户时间加10分钟
voidAddTime(structHotleHot[][13])
{inti,j;
5;
i++)
{for(j=0;
j<
j++)
{if(gar[i][j].isempty==0)
{Hot[i][j].time+=10;
}
4.退房及其费用计算
通过输入身份证号,用for循环来判断该房间的具体位置,在用if来判断该房间是否住人,最后再计算该房间的具体费用。
inti,j;
doublecharge=0;
请输入要退的身份证号:
j++)
{if(!
strcmp(Hot[i][j].IDnum,num))
您在%d层%d号房间入住%d小时\n"
Hot[i][j].lay,Hot[i][j].roomnum,Hot[i][j].time);
charge=Hot[i][j].time/1*30;
退房成功!
住宿费用为每1小时30元,您需交%.2lf元\n"
charge);
Hot[i][j].isempty=1;
returncharge;
四、调试与测试
在程序编写的过程中由于我们对C语言的知识掌握不牢固,了解不透彻,导致了整个程序在运行过程中出现了许多问题:
(1)、首先是主函数的设置还有分模块的时候所遇到的一些棘手且不清楚的问题,例如在设计输入和输出客户姓名时我们起初没有想到要用数组实现,而是想直接进行编程,随着运行的错误,我们也意识到了我们的错误。
于是便对C语言书本实行一趟大概的复习,终于得到了用数组编写的方式,于是便用数组实现算法。
在分模块的时候主函数的设置也存在一定的难度,但是后来由于我们经过翻阅书本上一些例题以及查阅网络一些文档,分模块的难度也得以解决。
(2)、在初始化酒店信息部分由于对姓名,身份证号还有房间号以及住房时间等的编写不清楚从原来的以下程序(即没有输出名字的函数)
for(i=0;
{Hot[0][i].isempty=0;
strcpy(Hot[0][0].IDnum,"
350583199212237422"
/*初始化的房间号*/gar[0][0].time=60;
strcpy(Hot[0][1].IDnum,"
350624199311230521"
Hot[0][1].time=59;
strcpy(Hot[0][2].IDnum,"
350583199212237423"
Hot[0][2].time=55;
strcpy(Hot[0][3].IDnum,"
350583199212237424"
Hot[0][3].time=54;
strcpy(Hot[0][4].IDnum,"
350583199212237425"
Hot[2][4].time=52;
strcpy(Hot[0][5].IDnum,"
350583199212237426"
Hot[0][5].time=49;
strcpy(Hot[0][6].IDnum,"
350583199212237427"
Hot[0][6].time=47;
strcpy(Hot[0][7].IDnum,"
350583199212237428"
Hot[0][7].time=45;
strcpy(Hot[0][8].IDnum,"
350583199212237429"
Hot[0][8].time=41;
strcpy(Hot[0][9].IDnum,"
350583199212237430"
Hot[0][9].time=39;
strcpy(Hot[0][10].IDnum,"
350583199212237431"
Hot[0][10].time=35;
strcpy(Hot[0][11].IDnum,"
350583199212237432"
Hot[0][11].time=30;
strcpy(Hot[0][12].IDnum,"
350583199212237433"
Hot[0][12].time=20;
到最后改进的以下程序(即程序完整化,既有名字又有身份证号等)我们得到了很大的进步
strcpy(Hot[0][0].name,"
洪大云"
strcpy(Hot[0][0].IDnum,"
/*初始化的房间号*/Hot[0][0].time=6;
strcpy(Hot[0][1].name,"
李大玲"
strcpy(Hot[0][1].IDnum,"
Hot[0][1].time=15;
strcpy(Hot[0][2].name,"
林大鹰"
strcpy(Hot[0][2].IDnum,"
Hot[0][2].time=25;
strcpy(Hot[0][3].name,"
王大瑶"
strcpy(Hot[0][3].IDnum,"
Hot[0][3].name;
Hot[0][3].time=14;
strcpy(Hot[0][4].name,"
陈大珠"
strcpy(Hot[0][4].IDnum,"
Hot[0][4].name;
Hot[0][4].time=22;
strcpy(Hot[0][5].name,"
林小三"
strcpy(Hot[0][5].IDnum,"
Hot[0][5].name;
Hot[0][5].time=19;
strcpy(Hot[0][6].name,"
刘诗诗"
strcpy(Hot[0][6].IDnum,"
Hot[0][6].name;
Hot[0][6].time=27;
strcpy(Hot[0][7].name,"
赵薇"
strcpy(Hot[0][7].IDnum,"
Hot[0][7].name;
Hot[0][7].time=48;
strcpy(Hot[0][8].name,"
苏培盛"
strcpy(Hot[0][8].IDnum,"
Hot[0][8].name;
Hot[0][8].time=34;
strcpy(Hot[0][9].name,"
华妃"
strcpy(Hot[0][9].IDnum,"
Hot[0][9].name;
Hot[0][9].time=24;
strcpy(Hot[0][10].name,"
包租婆"
strcpy(Hot[0][10].IDnum,"
Hot[0][10].name;
Hot[0][10].time=13;
strcpy(Hot[0][11].name,"
刘德华"
strcpy(Hot[0][11].IDnum,"
Hot[0][11].name;
Hot[0][11].time=30;
strcpy(Hot[0][12].name,"
安凌容"
strcpy(Hot[0][12].IDnum,"
Hot[0][12].name;
Hot[0][12].time=20;
(3)、在第三部分/*查看所有房间信息*/编写时对输出
printf("
身份证号层号房间号入住时间\n"
和printf("
%22s%8d%8d%10d\n"
Hot[i][j].IDnum,Hot[i][j].lay,Hot[i][j].roomnum,Hot[i][j].time);
中存在着对应不上的问题,如下所对应的图所示,经过我们多次调试运行才得到最后正确的结果:
(4)、在最后函数的设计编写时我们也存在一些难题,例如对doubletotal=0;
这一行没有存在清晰的概念,而且对switch的知识点也有些忘记了,之后我们经过查询资料、询问同学得以解决,具体正确程序如下:
main()
{intchoice;
doubletotal=0;
structHotleHot[5][13];
Init(Hot);
//初始化第一层已经有13间房间已有人
while
(1){Instruction();
请输入要进行的操作:
%d"
&
choice);
while(choice<
0||choice>
3)
{
输入的不合法,请输入0-3选择:
switch(choice)
case1:
Park(Hot);
break;
case2:
total+=Leave(Hot);
IsPrintTotal(total);
case3:
Information(Hot);
case0:
exit(0);
return0;
}
五、测试结果
1.进入界面
2.按“1”进入
3.按“2”进入
当输入的身份证号码不存在时
4.按“0”进入
5.当输入的“0~3”之外的数字时
六、用户手册
七、附录
1.运行程序:
#include<
stdio.h>
string.h>
stdlib.h>
structHotle
{charname[20];
//客户姓名
charIDnum[19];
/*身份证号*/
intlay;
//层号
introomnum;
/*房间号*/
inttime;
/*入住时间*/
intisempty;
/*该房间是否为空,1表示空,0表示已有人*/
};
/*打印使用说明*/
voidInstruction()
{printf("
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"
printf("
※※※※※※※※※※※※※※※1527酒店※※※※※※※※※※※※※※\n"
※--------*^-^*亲!
YOURWELCOME*^-^*--------※\n"
printf("
※※※※※※※※※酒店与房间登记管理系统使用说明※※※※※※※※※\n"
※★★★★★★★★☆★☆★☆★☆★☆★☆★☆★☆★★★★★★★★※\n"
※★※※※※※※※※※☆★入住请输入1★☆※※※※※※※※※★※\n"
※★※※※※※※※※※☆★退房请输入2★☆※※※※※※※※※★※\n"
※★※※※※※※※※※☆★退出请输入0★☆※※※※※※※※※★※\n"
※★※※※※※※※※※☆★查看全部房间和客户信息请输入3※※※★※\n"
/*初始化酒店信息,初始状态为第一层已经停有13间房间已住人,*其房间号依次为1-13,住宿时间依次为6,15,25,14,22,19,27,48,34,24,13,30,20,*/
voidInit(structHotleHot[][13])
{
/*酒店的层号,房间号初始化,入住时间初始化为0,房间全都初始化为空*/
{Hot[i][j].lay=i+1;
Hot[i][j].roomnum=j+1;
Hot[i][j].time=0;
/*第一层的1-13号房间已有人*/
/*新入住的房间,将在此之前的所有房间的入住时间加10*/
{if(Hot[i][j].isempty==0)
/*住宿*/
第一层的房间已满\n"
{
if(Hot[1][i].isempty==1)
第二层第%d号房间空着,请在此处入住\n"
strcpy(Hot[1][i].IDnum,num);
2房间号:
num,i+1);
Hot[1][i].isempty=0;
Hot[1][i].time=10;
对不起,1层都没有空房间\n"
/*查看所有房间和客户信息*/
客户姓名身份证号层号房间号入住时间\n"
for
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 数据结构 酒店 信息管理