宾馆管理系统课程设计说明书.docx
《宾馆管理系统课程设计说明书.docx》由会员分享,可在线阅读,更多相关《宾馆管理系统课程设计说明书.docx(24页珍藏版)》请在冰点文库上搜索。
宾馆管理系统课程设计说明书
目录
一设计目的1
二设计内容1
三设计要求2
四设计过程3
1任务解析3
2程序结构分析4
3数据结构分析4
4功能实现4
5系统测试4
五设计总结10
参考文献11
附录12
一设计目的
课程设计的目的与任务:
(1)使学生巩固和加强《C语言程序设计》课程的理论知识。
(2)使学生掌握C语言的基本概念、语法、语义和数据类型的使用特点。
(3)使学生掌握C语言程序设计的方法及编程技巧,能正确使用C语言编写程序。
(4)进一步理解和运用结构化程设计的思想和方法;学会利用流程图或N-S图表示算法。
(5)使学生掌握调试程序的基本方法及上机操作方法。
(6)掌握书写程设计开发文档的能力,使学生学会撰写课程设计总结报告。
课程设计的思想和方法还可以作为学生做毕业论文时的参考资料。
(7)通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。
为学生做毕业设计打好基础。
(8)初步掌握开发一个小型实用系统的基本方法:
结合实际应用的要求,使课程设计既覆盖知识点,又接近工程实际需要。
通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己实际分析问题的能力及编程能力,并养成良好的编程习惯。
(9)培养学生的创新能力和创新思维。
学生可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。
(10)培养学生良好的程序设计习惯。
在实际编程中,为了提高编程质量,对空行、空格和注释均有要求。
学生在课程设计书写代码时,应该严格按要求处理,以便建立良好的程序设计风格。
二设计内容
(一)系统功能要求:
(1)具有宾馆房间的录入功能。
(2)具有数据查询功能,可以实现查询全部信息和按条件执行查询。
显示房间是否有人住。
(3)具有按条件删除数据功能。
(4)具有按条件修改数据功能。
(5)系统以菜单方式工作
(二)性能要求
(1)界面比较美观,易操作;
(2)有一定的容错能力;
(3)最好用文件和链表的方式实现。
(三)算法分析
首先,一个宾馆客房包括这么多的属性,应该考虑定义一个结构,其次,我们应该考虑数据的存储形式:
是定义一个数组来存储,还是定义一个链表呢?
在这里以数组的方式来存储是可以的,那么定义一个数组的话,我们首先必须知道人数大概是多少,以便我们确定数组的大小。
对于菜单的实现,其实也比较简单,首先我们用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。
文件的读写操作大家参照书中的有关文件的章节。
(四)其它要求:
(1)只能使用C语言,采用面向过程方法进行设计,要求源程序要有适当的注释,使程序容易阅读。
(2)系统采用命令行形式。
(3)学生可根据自身情况酌情增加新功能(视情况可另外加分)。
(4)独立完成课程设计,并完成课程设计报告,报告应记录设计的过程,尤其是分析/设计/实现过程中的决策。
三设计要求
(1)只能使用C++语言,采用面向对象方法进行设计,要求使用结构体数组或链表编写程序,源程序要有适当的注释,是程序容易阅读。
(2)程序的界面、逻辑功能和数据的存储尽可能的分开,至少采用文本菜单界面(如果能采用图形菜单界面更好)。
(3)学生可根据自身情况酌情增加新功能(视情况可另外加分)。
(4)独立完成课程设计,并完成课程设计报告,报告应记录设计的过程,尤其是分析/设计/实现过程中的决策。
(5)结合教师指定的题目或自主选择的题目(经教师认可)进行设计。
(6)必须基于面向对象的程序设计思想进行设计
(7)按要求的格式书写设计报告,并在课程设计最后一天提交报告。
四设计过程
1任务解析
要求需要对宾馆所有客房的住宿信息进行管理,主要包括客房基本信息、客户住宿信息。
需要包含的功能:
客房基本信息录入。
允许对已经录入的数据重新进行编辑、修改,各种基本数据的插入、删除,基于各种数据的查询等。
首先,一个客房包括这么多的属性,需定义一个结构,其次,应该考虑数据的存储形式:
是定义一个数组来存储,在这里以数组的方式来存储是可以的,那么定义一个数组的话,我们首先必须知道人数大概是多少,以便我们确定数组的大小。
对于菜单的实现,其实也比较简单,首先我们用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后再进行判断,是否回到主菜单,再次进行操作。
程序采用文本菜单界面,程序数据结构采用数组来处理。
具有对客房基本信息的录入、显示、查询、添加、修改等功能。
程序虽简单,但具有完整的功能。
2程序结构分析
图2-1为主程序结构图
图2-2为录入功能菜单
3数据结构分析
主要数据结构:
typedefstruct
{
intfh;/*客房编号*/
charlx[15];/*客房类型*/
charplace[30];/*客房位置*/
floatarea;/*客房面积*/
intcs;/*床位数量*/
floatprice;/*住房单价*/
chardj[15];/*顾客登记*/
charjs[12];/*顾客结算*/
}kf;
客房信息包含客房编号,客房类型,客房位置,客房面积,床位数量,住房单价,顾客登记,顾客结算。
4功能实现
利用库函数实现输入输出;
利用对文件的操作实现对添加与删除功能;
利用文件实现修改功能;
各函数功能介绍
voidmenu();
宾馆管理系统菜单界面,用户使用系统的主菜单操作界面;
voidinput();
客房信息录入,用户通过这个函数输入客房信息;
voiddisplay();
客房信息显示,用以显示客房信息;
voidsearch();
客房信息查询,查询单个房间的客房信息;
voidincrese();
客房信息添加,用以添加客房信息;
voidmodi();
客房信息修改,用以修改客房信息;
5系统测试
1开始选择功能菜单
图5-1为选择功能菜单
打开程序,管理系统主界面启动,输入相对应的编号,按回车键,进行操作,执行相应的功能。
2录入功能
图5-2为录入功能界面
输入1,回车,按照提示依次输入客房信息,当需要结束时在编号处输入0,
回车,退出录入界面。
3显示功能
图5-3为显示功能界面
在主菜单界面输入2,回车,进入显示功能界面,显示当前已记录的客房信息。
4查询功能
图5-4为查询功能界面
在主界面输入3,回车,进入查询功能界面,输入对应的客房编号,查询单个客房信息。
5添加功能
图5-5为添加功能界面
在主菜单输入4,回车,进入添加功能界面,按提示输入需添加的客房信息。
6修改功能界面
图5-6为修改功能界面
在主菜单输入5,回车,进入修改功能菜单,输入需要修改的客房编号,输入正确的量,系统会显示修改后的客房信息。
五设计总结
通过这次课程设计,我收获很多,原本不太熟悉的编程也有点熟练,真为自己感到高兴。
程序在功能上比较简单,但基本实现了客房管理系统应该具有的基本功能,如录入、查询、添加、修改等功能,客房的结构体使用的数组结构,比链表有不足之处,可以继续修改。
虽然再编程过程中出现了很多问题,但通过我的努力,最终克服一切困难,努力完成了。
参考文献
[1]黄明,梁旭编著.Delphi信息系统设计实例.北京:
机械工业出版社.2005年3月第二版
[2]《 C程序设计语言》,BrianW.KernighanDennisM.Ritchie,清华大学出版社
[3]《C陷阱与缺陷》,AndrewKoenig,人民邮电出版社
[4]《C语言程序设计》,谭浩强编著,清华大学出版社
[5]《 C程序设计语言》,BrianW.KernighanDennisM.Ritchie,清华大学出版社
[6]《C语言参考手册》,哈比森,机械工业出版社
附录
//宾馆管理系统
#include
#include
#include
#defineN10
typedefstruct
{
intfh;/*客房编号*/
charlx[15];/*客房类型*/
charplace[30];/*客房位置*/
floatarea;/*客房面积*/
intcs;/*床位数量*/
floatprice;/*住房单价*/
chardj[15];/*顾客登记*/
charjs[12];/*顾客结算*/
}kf;
kfs[N];
voidmenu();
voiddisplay();
voidinput();
voidsearch();
//voidincrese();
voidmodi();
intm;
//功能菜单模块
voidmenu()
{
printf("\n\n\n\n\n");
printf("◇◆◇◆◇◆◇◆◇◆欢迎进入宾馆管理系统◇◆◇◆◇◆◇◆◇◆\n");
printf("|=======================================================|\n");
printf("@1、客房编号录入@\n");
printf("@2、客房信息显示@\n");
printf("@3、客房信息查询@\n");
printf("@4、客房信息添加@\n");
printf("@5、客房信息修改@\n");
printf("@6、退出宾馆管理系统@\n");
printf("|=======================================================|\n");
printf("◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆\n");
printf("\n");
}
voidinput()
{inti;
FILE*fp;
printf("\n请输入第一个记录:
\n");
printf("编号(用0表示结束输入):
");
scanf("%d",&s[0].fh);
printf("类型:
");
scanf("%s",s[0].lx);
printf("位置:
");
scanf("%s",s[0].place);
printf("面积:
");
scanf("%f",&s[0].area);
printf("床位数量:
");
scanf("%d",&s[0].cs);
printf("住房单价:
");
scanf("%f",&s[0].price);
printf("顾客登记:
");
scanf("%s",s[0].dj);
printf("顾客结算:
");
scanf("%s",s[0].js);
for(i=1;s[i-1].fh!
=0;i++)
{
printf("\n请输入第%d个记录:
\n",i+1);
printf("编号(用0表示结束输入):
");
scanf("%d",&s[i].fh);
printf("类型:
");
scanf("%s",s[i].lx);
printf("位置:
");
scanf("%s",s[i].place);
printf("面积:
");
scanf("%f",&s[i].area);
printf("床位数量:
");
scanf("%d",&s[i].cs);
printf("住房单价:
");
scanf("%f",&s[i].price);
printf("顾客登记:
");
scanf("%s",s[i].dj);
printf("顾客结算:
");
scanf("%s",s[i].js);
m=i;}
fp=fopen("kf.dat","w");
for(i=0;iif(fwrite(&s[i],sizeof(kf),1,fp)!
=1)
printf("文件写入错误\n");
fclose(fp);}
//客房信息录入模块
voiddisplay()
{
FILE*fp;
inti,n=0;
//voidchoice();
//kfs[N];
system("cls");
if((fp=fopen("kf.dat","rb"))==NULL)
{printf("\n打开文件失败\n");return;}
printf("||***********************************************************************||\n");
printf("顾客已登记请输入Y,没登记输入N,当编号输入为0时结束\n");
printf("\n|编号|类型|位置|面积|床位数量|住房单价|顾客登记|顾客结算|\n");
for(i=0;fread(&s[i],sizeof(kf),1,fp)!
=0;i++)
{
printf("|---|-----|------|--------|---------|-----------|----------|----------|\n");
printf("|%4d|%5s|%6s|%5f|%10d|%10f|%10s|%10s|\n",s[i].fh,s[i].lx,s[i].place,s[i].area,s[i].cs,s[i].price,s[i].dj,s[i].js);
n++;}
printf("||**********************************************************************||\n");
if(n==0)printf("\n文件中无记录\n");
elseprintf("\n文件中共有%d个记录\n",n);
fclose(fp);}
//信息查询模块:
voidsearch()
{
FILE*fp;
inti,n=0,flag=0,temp_fh;
system("cls");
if((fp=fopen("kf.dat","rb"))==NULL)
{printf("cannotopenfile!
\n");return;}
printf("\n输入要查客房的编号:
");
scanf("%d",&temp_fh);
for(i=0;fread(&s[i],sizeof(kf),1,fp)!
=0;i++)
{
if(temp_fh==s[i].fh)
{if(flag==0)
printf("||***********************************************************************||\n");
printf("顾客已登记请输入Y,没登记输入N,当编号输入为0时结束\n");
printf("\n|编号|类型|位置|面积|床位数量|住房单价|顾客登记|顾客结算|\n");
printf("|---|-----|------|--------|---------|-----------|----------|----------|\n");
printf("|%4d|%5s|%6s|%5f|%10d|%10f|%10s|%10s|\n",s[i].fh,s[i].lx,s[i].place,s[i].area,s[i].cs,s[i].price,s[i].dj,s[i].js);
printf("||**********************************************************************||\n");
flag=1;}
n++;}
if(n==0)printf("文件里没有记录\n");
elseif(flag==0)
printf("文件中没有这个房间\n");}
//客房信息添加模块
voidincrese()
{
inti;
//kfs[N];
FILE*fp;
system("cls");
if((fp=fopen("kf.dat","rb"))==NULL)
{
printf("cannotopenfile!
\n");
exit(0);
}
fp=fopen("kf.dat","rb");
//for(i=0;i//if(fread(&s[i],sizeof(kf),1,fp)!
=1)
//{printf("文件写入错误\n");exit(0);}
for(i=0;ifread(&s[i],sizeof(kf),1,fp);
fclose(fp);
//k=i;
printf("\n输入添加的客房编号:
");scanf("%d",&s[i].fh);
printf("\n输入添加的客房类型:
");scanf("%s",s[i].lx);
printf("\n输入添加的客房位置:
");scanf("%s",s[i].place);
printf("\n输入添加的客房面积:
");scanf("%f",&s[i].area);
printf("\n输入添加的客房床位数量:
");scanf("%d",&s[i].cs);
printf("\n输入添加的客房住房单价:
");scanf("%f",&s[i].price);
printf("\n输入添加的顾客登记:
");scanf("%s",s[i].dj);
printf("\n输入添加的顾客结算:
");scanf("%s",s[i].js);
fp=fopen("kf.dat","ab+");
fwrite(&s[i],sizeof(kf),1,fp);
fclose(fp);
}
/*for(flag=1,i=0;flag&&i{
while(!
feof(fp))
for(i=0;i{
fread(&s[i],sizeof(kf),1,fp);
if(feof(fp))break;
i++;
}
flag=0;}
if(!
flag)
k=k+1;
//fclose(fp);
//flag=i;
//if(k=0)
{//添加
for(j=flag-1;j>=i;j--)
s[j+1]=s[j];
s[i]=flag;
//写回
if((fp=fopen("kf.dat","wb"))==NULL)
{
printf("不能建立文件!
!
\n");
}
for(i=0;ifwrite((&s[i],sizeof(kf)),1,fp);
m=m+1;
}
else
{
if((fp=fopen("kf.dat","rb"))==NULL)
{
printf("不能建立文件!
!
\n");return;
}
fwrite((&s[i],sizeof(kf)),1,fp);
}
fclose(fp);*/
//客房信息修改:
输入客房的编号,查看客房的状态,修改此客房的单价和床数,并显示修改后的结果;
voidmodi()
{
FILE*fp1,*fp2;
inti,temp_fh,temp_cs;
floattemp_price;
system("cls");
if((fp1=fopen("kf.dat","rb"))==NULL)
{
printf("cannotopenfile\n");
exit(0);
}
if((fp2=fopen("kf3.dat","wb"))==NULL)
{printf("cannotopenfile\n");exit(0);}
for(i=0;iif(fread(&s[i],sizeof(kf),1,fp1)!
=1)
{printf("文件写入错误\n");exit(0);}
printf("\n输入要修改客房的编号:
");
scanf("%d",&temp_fh);
for(i=0;i{
if(s[i].fh!
=temp_fh)
fwrite(&s[i],sizeof(kf),1,fp2);
else
{
printf("\n输入正确的客房床位数量:
");scanf("%d",&temp_cs);
printf("\n输入正确的客房住房单价:
");scanf("%f",&temp_price);
s[i].cs=temp_cs;
s[i].price=temp_price;
fwrite(&s[i],sizeof(kf),1,fp2);
}
}
fclose(fp1);
fclose(fp2);
printf("输出修改后的客房信息如下\n");
if((fp2=fopen("kf3.dat","rb"))==NULL)
{
printf("不能打开这个文件\n");
exit(0);
}
printf("||*****************************宾馆客房管理系统***************************||\n");
printf("\n|编号|类型|位置|面积|床位数量|住房单价|顾客登记|顾客结算|\n");
for(i=0;fread(&s[i],sizeof(kf),1,fp2)!
=0;i++)
{
printf("|---|-----|------|--------|---------|-----------|----------|----------|\n");
printf("|%4d|%5s|%6s|%5f|%10d|%10f|%10s|%10s|\n",s[i].fh,s[i].lx,s[i].place,s[i].area,s[i].cs,s[i].price,s[i].dj,s[i].js);
}
printf("||**********************************************************************||\n");
fclose(f