C语言课程设计宾馆客房管理软件.docx
《C语言课程设计宾馆客房管理软件.docx》由会员分享,可在线阅读,更多相关《C语言课程设计宾馆客房管理软件.docx(15页珍藏版)》请在冰豆网上搜索。
C语言课程设计宾馆客房管理软件
《课程名称》
课程设计报告
题目
宾馆客房管理软件
学号
姓名
年级专业
电子信息工程
指导教师
完成日期
2010
年
6
月
22
日
安徽师范大学物理与电子信息学院
CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity
目录
一、程序的具体分工
二、课题要求
三、课题分析与设计
四、选题背景
五、程序介绍
六、源程序代码与调试
七、流程图
八、结语
九、参考书目
一、程序的具体分工
第一部分包括主函数和menu菜单函数,第二部分包括客人的入住(checkin)函数和退房(checkout)函数,第三部分为查询(lookfor)函数。
二、课题要求
1)某宾馆有301、302、303、304、305五个标准间,每个标准间可住2人;
2)链表存储结构:
姓名、性别、房号、后续指针,按房间号有序;
3)能实现入住(注意性别)和退房,能按给定姓名、房号查询;
4)建议采用链表结构,但用其它方法实现也可。
三、课题分析与设计
本程序是非数值计算型算法设计,我们设计出了宾馆客房管理系统的基本功能,并设计了简单的界面。
本程序主要考察对自定义函数的熟悉程度,本程序主要使用的是结构体和数组,包括结构体数组的输入、输出、查找、删除等。
我设计的这个宾馆客房系统也初步实现了人员信息的显示、删除、查找、添加等必要的功能。
四、选题背景
C语言是目前世界上流行、使用最广泛的高级程序设计语言。
1972年,C语言在美国贝尔实验室里问世,后来又被多次改进,并出现了多种版本。
80年代初,美国国家标准化协会(ANSI),根据C语言问世以来各种版本对C语言的发展和扩充,制定了ANSIC标准。
目前,在微机上广泛使用的C语言编译系统有MicrosoftC、TurboC、VisualC++等。
这
C语言版本不仅实现了ANSIC标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。
C语言是一种结构化语言。
它层次清晰,便于按模块化方式组织程序,易于调试和维护。
C语言的表现能力和处理能力极强。
它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。
它还可以直接访问内存的物理地址,进行位(bit)一级的操作。
由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。
既可用于系统软件的开发,也适合于应用软件的开发。
此外,C语言还具有效率高,可移植性强等特点。
因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。
为了将本学期所学C语言知识应用于实际,加深对C语言的理解与掌握,我院开设了C语言课程设计这门课程。
而我们小组选取了宾馆客房管理系统这个课题,以此来锻炼我们编写程序的能力。
五、程序介绍
宾馆客房管理系统由8个函数组成,包括main函数、menu函数、checkin函数、checkout函数、lookfor函数,其中checkin函数又包括一个add子函数,lookfor函数包括search1和search2两个子函数。
main函数主要是对menu函数、checkin函数、checkout函数、lookfor函数进行声明,建立静态链表并且对结构体中num、sex进行赋值。
menu函数是界面函数,有两个功能。
一是输出一个界面,二是作为进入其它函数的入口。
输入1则执行checkin函数;输入2则执行checkout函数,输入3则执行lookfor函数;输入4则执行返回管理系统。
checkin函数的功能是对入住房客的信息进行统计。
首先、函数先对五个房间的入住情况进行检查,并输出相应的信息。
例如、若房间301是空的,则显示可住两人信息;若已住一人,则显示可住一人信息,并且同时显示可住房客的性别;若已有两人入住,则不显示任何信息。
如果房客已决定入住,则输入1,进入add函数,按提示输入房客信息即可。
若要返回menu函数,则输入1。
checkout函数的功能是退房。
按提示信息输入房间号和姓名即可实现退房。
若要返回menu函数,输入1。
lookfor函数的功能是查询房客的信息,有按姓名查找和按房间号查找两种查询方式。
输入1则执行search1子函数,即按姓名查找;输入2则执行search2子函数,即按房号查找;输入3,执行manu函数。
若按姓名查找,则输入姓名即可;若按房间号查找,则输入房间号即可;若要退回lookfor函数,则输入1。
/*房间管理程序*/
#include
#include
#defineN5
structroom
{
charname[2][20];
charsex[2];
intintx[2],roomnum;
};
structroombroom[N]={{{"",""},{'',''},{0,0},301},{{"",""},{'',''},{0,0},302},
{{"",""},{'',''},{0,0},303},{{"",""},{'',''},{0,0},304},
{{"",""},{'',''},{0,0},305}
};
voidcheckin();
voidcheckout();
voidlookfor();
voidmain(void)
{
intintj=0;
while(intj!
=4)//主菜单
{
printf("\t\tPleaseSelect:
\n\t\t1.CheckIn\n\t\t2.CheckOut\n\t\t3.Search\n\t\t4.Exit\n\t\tPleaseSelectaTask:
");
scanf("%d",&intj);
if(intj==1)
{
checkin();
}
elseif(intj==2)
{
checkout();
}
elseif(intj==3)
{
search();
}
elseif(intj==4)
{
charch;
printf("\t\tAreYouSure?
(Y/N):
");
getchar();
ch=getchar();
if(ch!
='Y'&&ch!
='y')
{
intj=0;
}
}
else
{
printf("\t\tWarning:
WrongTask!
PleaseSelectAgain\n");
}
}
}
voidcheckin()//录入模块
{
charname[20],sex,ch;
intinti=0,intj=0;
printf("\t\tInputInformation(Namesex(F/M)):
");
scanf("%s%c",name,&sex);
printf("\t\tAvailable:
\n");
for(inti=0;inti{
if(broom[inti].intx[0]!
=1&&broom[inti].intx[1]!
=1)
{
printf("\t\t%d%d\n\t\t%d%d\n",301+inti,1,301+inti,2);
intj++;
}
elseif(broom[inti].intx[0]==1&&broom[inti].sex[0]==sex)
{
printf("\t\t%d%d\n",301+inti,2);
intj++;
}
elseif(broom[inti].intx[1]==1&&broom[inti].sex[1]==sex)
{
printf("\t\t%d%d\n",301+inti,1);
intj++;
}
else
{
;
}
}
if(intj==0)//录入信息,完成入住
{
printf("\t\tNoBedLeft");
system("cls");
}
else
{
introomnum,bednum;
lp1:
printf("\t\tPleaseSelectRoomAndbed:
");
getchar();
scanf("%d%d",&roomnum,&bednum);
if(roomnum>305||roomnum<301||bednum>2||bednum<1)
{
printf("\t\tWrongRoomNumberOrBedNumber!
\n");
gotolp1;
}
strcpy(broom[roomnum-301].name[bednum-1],name);
broom[roomnum-301].intx[bednum-1]=1;
broom[roomnum-301].sex[bednum-1]=sex;
printf("\t\tSucceed\n\t\tContinueCheckingIn?
(Y/N):
");
getchar();
ch=getchar();
if(ch=='Y'||ch=='y')
{
system("cls");
checkin();
}
system("cls");
}
}
voidcheckout()//注销
{
charname[20],ch;
intinti=0,intj=0,intx=0;
printf("\t\tPleaseInputName:
");
getchar();
gets(name);
for(inti=0;inti{
for(intj=0;intj<2;intj++)
{
if(strcmp(broom[inti].name[intj],name)==0)
{
intx=1;
break;
}
}
if(intx==1)
{
break;
}
}
printf("\t\tAreYouSure?
(Y/N)");
ch=getchar();
if(ch=='Y'||ch=='y')
{
broom[inti].intx[intj]=0;
printf("\t\tSucceed");
}
system("pause");
system("cls");
}
voidlookfor()//查找住客
{
intinti=0,intj=0;
lp2:
printf("\t\t1.ByName\n\t\t2.ByRoomnumber\n\t\tPleaseselect:
");//选择查找方式
scanf("%d",&inti);
if(inti>2||inti<1)
{
printf("\t\tWrongNumber!
\n");
gotolp2;
}
if(inti==1)//根据姓名查找
{
charname[20];
printf("\t\tPleaseInputName:
");
getchar();
gets(name);
for(inti=0;inti{
for(intj=0;intj<2;intj++)
{
if(strcmp(broom[inti].name[intj],name)==0&&broom[inti].intx[intj]==1)
{
printf("\t\t%s%d%d%c\n",broom[inti].name[intj],301+inti,intj+1,broom[inti].sex[intj]);
break;
}
}
}
}
elseif(inti=2)//根据房间号查找
{
intinty=0;
printf("\t\tPleaseInputRoomNumber:
");
scanf("%d",&inty);
if(broom[inty-301].intx[0]==1)
{
printf("\t\t%s%d%d%c\n",broom[inty-301].name[0],inty,1,broom[inty-301].sex[0]);
}
if(broom[inty-301].intx[1]==1)
{
printf("\t\t%s%d%d%c\n",broom[inty-301].name[1],inty,2,broom[inty-301].sex[1]);
}
}
system("pause");
system("cls");
}
六、流程图
七、结语
通过这次课程设计,在我和我们小组成员的共同的努力下,将《宾馆客房管理系统》这个软件编写出来并运行成功。
在此同时,也加深了我对谭浩强的《C语言程序设计》这本书的体会和了解。
我对很多的函数有了新的认识,也学会了运用多种函数,我也明白了写软件的基本过程和基本方法。
写软件的过程中我又学到了曾经自己不知道的函数或是自己不会的
函数的用法。
这次课程设计课总的来说让我受益匪浅。
在软件的设计过程中遇到了很多的困难。
在软件一次一次的调试失败下曾经想过要放弃。
我最后还是让自己坚持了下来,毫不畏惧困难,在同学和老师的帮助与讲解下我总算是顺利的完成了软件的设计。
虽然在调试程序遇到了很多的困难,当软件调试成功时那种喜悦的感觉没有什么东西可以代替的。
在程序的编写过程中我发现我自己有很多的知识漏洞和缺陷,需要进一步努力学习来完善自己。
在这几天的编写过程中我对C语言有了更进一步的认识和了解。
此次编程过程的经验和知识肯定能促进我以后的学习。
此次课程设计不仅给了我很多很好的经验,也让我体会到了失败时的焦急和难受,成功时的兴奋与喜悦。
同时我们小组成员互帮互助,让我认识到团队的力量,团结就是力量。
八、参考书目
[1]谭浩强,C程序设计教程,清华大学出版社,2007年
[2]赵永哲,李雄飞,戴秀英编著,《C语言程序设计》,科学出版社,2003年
[3]夏宽理,赵子正编著,《C语言程序设计》,中国铁道出版社,2006年
[4]谭浩强编著,《C程序设计》,清华大学出版社,1991年
[5]GaryJ.Bronson,AFirstBookofANSIC(FourthEdition),PublishingHouseofElectronicsIndustry,2006.
[6]AlKelley,IraPohl,ABookonC:
ProgramminginC(FourthEdition),ChinaMachinePress,2004.
[7]BrianW.Kernighan,DennisM.Ritchie,TheCProgrammingLanguage,ChinaMachinePress,2006.
物理与电子信息学院课程设计评定意见
指导教师评语
主要内容包括:
设计报告内容的完整性和完成情况、报告格式的规范性、通过课程设计取得的收获等。
成绩:
签名:
年 月 日
注:
本页与上一页用A3纸套印成封面和封底,课程设计报告正文用A4纸打印然后装订