客房管理系统.docx

上传人:b****5 文档编号:12332446 上传时间:2023-04-18 格式:DOCX 页数:25 大小:492.56KB
下载 相关 举报
客房管理系统.docx_第1页
第1页 / 共25页
客房管理系统.docx_第2页
第2页 / 共25页
客房管理系统.docx_第3页
第3页 / 共25页
客房管理系统.docx_第4页
第4页 / 共25页
客房管理系统.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

客房管理系统.docx

《客房管理系统.docx》由会员分享,可在线阅读,更多相关《客房管理系统.docx(25页珍藏版)》请在冰豆网上搜索。

客房管理系统.docx

客房管理系统

C语言课程设计

题目:

客房管理系统

设计者:

专业:

班级学号:

学号:

所属院系:

机电学院

指导教师:

以下是报告正文

1.题目与要求:

客房管理系统

系统包括新用户登记功能,统计功能,查询功能,修改功能。

1.1问题提出与要求:

建立如下结构体:

StructClient

{

CharName[20];

intSex;

intAge;

charID-card[];/*居民身份证*/

intyear;

intmonth;

intdate;

};

StructHotel

{

IntRoom-ID;/*房间号*/

IntTel;

intPrice;

boolsign;/*标记房间是否为空房间*/

StructClient

Client-list;/*实现两结构体的嵌套*/

}

Room[NUM]

 

需求分析

根据题目要求,客房信息要用文件存储,提供文件的输入输出操作;在程序中需要对客房具有登记,统计,查询和修改的功能;另外还要用键盘式菜单实现功能选择.

2.功能实现设计:

2.1总体设计:

下面来分析一下整个系统,根据上面的要求分析,可将这个系统设计为五大模块(见下图):

注册模块,统计模块,查询模块,修改模块,退出模块。

其主要功能为:

注册,统计,查询,修改功能。

 

 

2.2详细设计:

2.2.1主函数

主函数一般设计得比较简洁,提供输入,功能处理和输出部分的函数调用。

其中各功能模块用菜单方式选择。

[流程图]

[程序]

voidmain()/*主函数*/

{

intn,w=1;/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应的数字范围之内*/

structHotel*info;

while(w)

{

puts("\t\tC语言课程设计客房管理系统\n");

puts("\t\t072084班丁超学号:

20081003552\n");

puts("\t\t********************************\n");

puts("\t\t****************MENU****************\n");

puts("\t\t**********1registration*****************\n");

/*注册*/

puts("\t\t**********2statistic*********************\n");/*统计*/

puts("\t\t*********3search**********************\n");/*查询*/

puts("\t\t*********4modify*********************\n");

/*修改*/

puts("\t\t**********5exit************************\n");/*退出*/

puts("\t\t***************************************\n");

puts("\t\t************************************\n");

printf("Choiceyournumber(1-5):

[]\b\b");

scanf("%d",&n);

if(n<1||n>5)/*对选择的数字作判断*/

{

w=1;

getchar();

}

switch(n){

case1:

regi();break;/*注册模块*/

case2:

stat();break;/*统计模块*/

case3:

search();break;/*查询模块*/

case4:

modify();break;/*修改模块*/

case5:

tuichu();break;/*退出模块*/

default:

break;

}

getchar();

}

}

 

2.2.2功能模块设计

2.2.2.1注册模块

单独看各数据信息,身份证号码均是字符型,可采用字符型数组;用户在填完个人信息,即可进行房间预定。

[流程图]

[程序]

regi()/*注册模块*/

{

inti,n;

structHotel*info;

chars[10];

chara[10]="have";

printf("peoplenumber:

\n");

scanf("%d",&n);

for(i=0;i

{

info=(structHotel*)malloc(sizeof(Room[NUM]));

if(info==0)

{

printf("memroyusedover\n");

}

inputs("\tRoom_ID:

\n",info->Room_ID,10);

if(!

((char*)(info->Room_ID))[0])break;

inputs("\thavepeopleputhavenopeopleputnull\n",info->person,10);

if(strcmp(a,info->person))

{

inputs("\tname:

\n",info->Client_list.Name,20);

inputs("\tsex:

\n",info->Client_list.Sex,10);

inputs("\tage:

\n",info->Client_list.Age,10);

inputs("\tId_card:

\n",info->Client_list.ID_card,20);

inputs("\tyear:

\n",info->Client_list.year,10);

inputs("\tmonth:

\n",info->Client_list.month,10);

inputs("\tdate:

\n",info->Client_list.date,10);

inputs("\tTel:

\n",info->Tel,10);

inputs("\tPrice:

\n",info->Price,10);

}

printf("\tregistrationdone\n");

start=dls_store(info,start);

}

}

inputs(char*prompt,char*s,intcount)

{

charp[255];

do{

printf("%s",prompt);

scanf("%s",p);

if(strlen(p)>count)

printf("toolong!

\n");

}while(strlen(p)>count);

strcpy(s,p);

}

 

structHotel*dls_store(structHotel*i,structHotel*top)

{

staticstructHotel*last=0;

structHotel*old,*p;

if(last==NULL)

{

i->next=NULL;

i->prior=NULL;

last=i;

returni;

}

p=top;

old=NULL;

while(p)

{

if(strcmp(p->Room_ID,i->Room_ID)<0){

old=p;

p=p->next;

}else{

if(p->prior)

{

p->prior->next=i;

i->next=p;

p->prior=i;

returntop;

}

i->next=p;

i->prior=0;

p->prior=i;

returni;

}

old->next=i;

i->next=0;

i->prior=old;

last=i;

returnstart;

}

}

2.2.2.2统计模块

有两种数据进行统计,被占用的房间和未被占用的房间。

[流程图]

 

[程序]

stat()/*统计模块*/

{

structHotel*info;

chara[10]="null";

charb[10]="have";

intc,count=0;

printf("\tstatistictheusedRoom_IDput1,theunusedRoom_IDput2\n");

scanf("%d",&c);

if(c==1)

{

info=start;

while(info)

{

if(!

strcmp(a,info->person))

{

printf("\Room_ID%s\n",info->Room_ID);

count++;

}

info=info->next;

}

printf("\tusedroomsare%s\n",count);/*统计被占用的房间*/

}

if(c==2)

{

info=start;

while(info)

{

if(!

strcmp(b,info->person))

{

printf("\tRoom_ID%s\n",info->Room_ID);

count++;

}

info=info->next;

}

printf("\tunusedroomsare%s\n",count);/*统计未被占用的房间*/

}

}

display(structHotel*info)

{

{

printf("\t\tname:

%s\n",info->Client_list.Name);

printf("\t\tsex:

%s\n",info->Client_list.Sex);

printf("\t\tage:

%s\n",info->Client_list.Age);

printf("\t\tId_card:

%s\n",info->Client_list.ID_card);

printf("\t\tyear:

%s\n",info->Client_list.year);

printf("\t\tmonth:

%s\n",info->Client_list.month);

printf("\t\tdate:

%s\n",info->Client_list.date);

printf("\t\tTel:

%s\n",info->Tel);

printf("\t\tPrice:

%s\n",info->Price);

}

printf("\n");

}

2.2.2.3查询模块

查询通常可细分为分类查找,此题中分为合适查找,被占用查找,未被占用查找。

再与统计信息进行对应,显示对应数据,则用户即可知道合适房间。

[程序]

search()/*查询模块*/

{

intb;

printf("\tsearchthefixedroomput1\n");

printf("\tsearchtheusedroomput2\n");

printf("\tsearchtheunusedroomput3\n");

printf("\tbacktothemainmenuput4\n");

do{

scanf("%d",&b);

switch(b){

case1:

search1();break;

case2:

search2();break;

case3:

search3();break;

case4:

return;

}

}while(b<1||b>4);

}

structHotel*find(char*Room_ID)

{

structHotel*info;

info=start;

while(info){

if(!

strcmp(Room_ID,info->Room_ID))returninfo;

info=info->next;

}

printf("\tcan'tfind\n");

return(NULL);

}

search1()

{

charRoom_ID[10];

structHotel*info;

printf("\tputtheRoom_ID\n");

scanf("%s",Room_ID);

getchar();

info=find(Room_ID);

if(!

info)printf("\tcan'tfind\n");

elsedisplay(info);

}

search2()

{

structHotel*info;

chara[10]="null";

info=start;

while(info){

if(!

strcmp(info->person,a))

display(info);

printf("\n");

info=info->next;

}

}

search3()

{

structHotel*info;

charb[10]="have";

info=start;

while(info){

if(!

strcmp(b,info->person))

display(info);

printf("\n");

info=info->next;

}

}

save()

{

registerintt,size;

structHotel*info;

char*p;

FILE*fp;

if((fp=fopen("mlist","wb"))==0){

printf("\tfilecan'topen\n");

exit(0);

}

printf("\tsaving\n");

size=sizeof(Room[NUM]);

info=start;

while(info){

p=(char*)info;

for(t=0;t

putc(*p++,fp);

info=info->next;

}

putc(EOF,fp);

fclose(fp);

printf("\tsaved\n");

}

2.2.2.4修改模块

该模块的功能是显示用户要修改的信息。

用户输入要修改的信息,根据输入信息查对应选项,并提示用户修改该记录的那部分信息,根据用户的选项修改相应的信息。

[流程图]

[程序]

modify()/*修改模块*/

{

structHotel*info;

charRoom_ID[10];chara[10]="have";charc[10]="null";

intb,f;

printf("\texaminetheinformation1\n");/*检验信息*/

printf("\tchangetheinformation2\n");/*修改信息*/

printf("\tbacktothemainmenu3\n");/*返回主菜单*/

scanf("%d",&b);

if(b==1)search();

if(b==2){

printf("\tputtheRoom_ID\n");

scanf("%s",Room_ID);

info=find(Room_ID);

if(!

info)printf("\tcan'tfind\n");

else

{

display(info);printf("\tChangeEntry\n");

if(!

strcmp(a,info->person))

inputs("\tputnull:

\n",info->person,10);

if(!

strcmp(c,info->person))

{

inputs("\tname:

\n",info->Client_list.Name,20);

inputs("\tsex:

\n",info->Client_list.Sex,10);

inputs("\tage:

\n",info->Client_list.Age,10);

inputs("\tId_card:

\n",info->Client_list.ID_card,20);

inputs("\tyear:

\n",info->Client_list.year,10);

inputs("\tmonth:

\n",info->Client_list.month,10);

inputs("\tdate:

\n",info->Client_list.date,10);

inputs("\tTel:

\n",info->Tel,10);

inputs("\tPrice:

\n",info->Price,10);

}

}

}

if(b==3)return;

}

2.2.2.5退出模块

该模块需要有保存,退出,返回三个操作。

[程序]

[程序]

tuichu()/*退出模块*/

{

intd;

printf("\tsuggestyousavethemessage,ifsaveput1,suretoexitput2,backtomainmenuput3\n");

scanf("%d",&d);

if(d==1)save();/*保存*/

if(d==2)

printf("\tThankyouforuseingthesystem!

\n");/*退出*/

if(d==3)

{

printf("\tback\n");/*返回*/

exit(0);

}

}

3.学习心得

在老师的带领下进行了C语言程序实践学习。

在短短一周的实习期间使我获取了不少新知识也巩固了许多老知识。

在这之前,我们已经对C语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在学习了解的范围,对里面的好多东西还是很陌生,并不是很熟练,有着许多欠缺,更多的在运用起来的时候还是感到很不好动手。

C语言是需要有一定基础、而且动手能力强的学科。

上机实验是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真正掌握它。

对于程序设计语言的学习目的,可以概括为学习语法规定、巩固贯穿系统知识、掌握程序设计方法、提高程序设计能力,这些都必须通过充分的实际上机操作才能完成。

课堂上许多关于C语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。

然而要使用C语言这个工具解决实际问题,又必须掌握它。

通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握C语言的语法规定。

对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,更加巩固了学过的知识,而且在设计的时候学要系统的知识,也是一个较大的挑战,某一方面知识的欠缺都将影响到整个程序的设计。

这次上机实习让我学到了很多有用的东西,巩固了之前的学习,让我学到了在教室和做题中学不到的一些知识,通过这个程序的学习,使我进一步理解和运用结构化程序设计的思想和方法。

初步掌握开发一个小型实用系统的基本方法,学会调试一个比较长程序的基本方法,学会利用流程图表示算法,进一步掌握和提高利用C语言进行程序设计的能力。

我认为,这次实习对于我是非常有意义的,对我个人的影响比较大,对我的动手能力有了很大的提高。

4.程序运行结果:

(1)对于客房管理系统的首页数据运行结果见下图:

(2)对于注册模块的操作如下:

输入“1”按下”enter”进入注册操作。

数据运行结果见下图:

(3)对于统计模块的操作如下:

输入“2”按下”enter”进入取车操作。

数据运行结果见下图:

(4)对于查询模块的操作如下:

输入“3”按下”enter”进入取车操作。

数据运行结果见下图:

(5)对于修改模块的操作如下:

输入“4”按下”enter”进入取车操作。

数据运行结果见下图:

(6)对于退出模块的操作如下:

输入“5”按下”enter”进入取车操作。

数据运行结果见下图:

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

当前位置:首页 > 初中教育 > 初中作文

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

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