用C语言实现的宾馆客房管理系统课程设计报告.docx
《用C语言实现的宾馆客房管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《用C语言实现的宾馆客房管理系统课程设计报告.docx(16页珍藏版)》请在冰豆网上搜索。
用C语言实现的宾馆客房管理系统课程设计报告
一、课程设计题目
宾馆客房管理系统。
二、运行环境(软、硬件环境)
中文版WindowsXP和MicrosoftVisualC++6.0。
三、算法设计的思想
1.定义宾馆客房管理信息结构体Hotel-Info。
2.建立一个简易的选择菜单,通过输入选择执行的动作。
3.主函数中,用switchcase实现选择功能,7项功能通过7个分支实现,每个对应一个函数。
4.写函数,包括Insert-插入,Amend-修改,Demand-查询,Del-删除,Skim-浏览,Balance-结算。
5.源程序可运行之后,将其数据、信息输入到文档中,使其能存档,可以写入文件和读出文件。
6.对程序进行修改、完善。
写函数
四、算法的流程图
联系文件
定义结构体Hotel-Info
修改、完善
建立选择菜单
写主函数,实现选择功能
图1算法流程图
五、算法设计分析
1.这是一个小型的管理系统,使用结构体数组存储客房的信息。
2.一般的管理系统都应该具备插入,修改,查询,删除,浏览等功能,通过使用一个简易菜单进行执行动作的选择。
3.用函数实现模块化设计,调理清晰,使程序易读写。
4.把程序与文件联系,使数据能存储在磁盘中,更具实用性。
六、源代码
1结构体
structHotel_Info
{
charname[N],type[N],ID_card[N],in_time[N],leave_time[N];
charidly[N];
intprize,num,ad_payment;
}Info[N];
2主函数
intmain()
{
FILE*fp;
inti=0;
fp=fopen("d:
\\hotelmanagesystem.txt","r");
//fscanf(fp,"%d",&n);
//for(i=0;iwhile(!
feof(fp))
{
inta;
fscanf(fp,"%d",&a);
fscanf(fp,"客房号:
%d",&Info[i].num);
fscanf(fp,"空闲情况:
%s",Info[i].type);
fscanf(fp,"客房类型:
%s",Info[i].idly);
fscanf(fp,"客房价格:
%d",&Info[i].prize);
fscanf(fp,"客户姓名:
%s",Info[i].name);
fscanf(fp,"身份证:
%s",Info[i].ID_card);
fscanf(fp,"预付款:
%d",&Info[i].ad_payment);
fscanf(fp,"入住时间:
%s",Info[i].in_time);
fscanf(fp,"退房时间:
%s",Info[i].leave_time);
i++;
}
fclose(fp);
n=i-1;
intm;
do
{
printf("\n");
printf("***************************************************\n");
printf("1————登记。
\n");
printf("2————修改。
\n");
printf("3————查询。
\n");
printf("4————删除。
\n");
printf("5————浏览。
\n");
printf("6————结算。
\n");
printf("7————退出。
\n");
printf("***************************************************\n");
scanf("%d",&m);
switch(m)
{
case1:
Insert(&count);break;
case2:
Amend(count);break;
case3:
Demand(count);break;
case4:
Del(&count);break;
case5:
Skim(count);break;
case6:
Balance(count);break;
case7:
break;
default:
printf("错误选择!
请重选");break;
}
}while(m!
=7);
return0;
}
3函数
voidInsert(int*count)//定义1————插入函数
{
inti=0,in_num;
n=n+1;
if(*count==N)
{printf("overflow!
");return;}
FILE*fp;
fp=fopen("d:
\\hotelmanagesystem.txt","a");
fprintf(fp,"%d",n);
for(i=*count;i{
printf("编号:
");
scanf("%d",&in_num);
intflag=1;
while(flag)
{
flag=0;
for(intii=0;ii<=N;ii++)
if(Info[ii].num==in_num)
{printf("已经有相同编号!
\n");scanf("%d",&in_num);flag=1;break;}
}
Info[i].num=in_num;
printf("客房号:
");
scanf("%d",&Info[i].num);
fprintf(fp,"客房号:
%d",Info[i].num);
printf("空闲情况:
");
scanf("%s",Info[i].idly);
fprintf(fp,"空闲情况:
%s",Info[i].idly);
printf("客房类型:
");
scanf("%s",Info[i].type);
fprintf(fp,"客房类型:
%s",Info[i].type);
printf("客房价格:
");
scanf("%d",&Info[i].prize);
fprintf(fp,"客房价格:
%d",Info[i].prize);
printf("客户姓名:
");
scanf("%s",Info[i].name);
fprintf(fp,"客户姓名:
%s",Info[i].name);
printf("身份证:
");
scanf("%s",Info[i].ID_card);
fprintf(fp,"身份证:
%s",Info[i].ID_card);
printf("预付款:
");
scanf("%d",&Info[i].ad_payment);
fprintf(fp,"预付款:
%d",Info[i].ad_payment);
printf("入住时间:
");
scanf("%s",Info[i].in_time);
fprintf(fp,"入住时间:
%s",Info[i].in_time);
printf("退房时间:
");
scanf("%s",Info[i].leave_time);
fprintf(fp,"退房时间:
%s\n",Info[i].leave_time);
break;
}
fclose(fp);
(*count)++;
}
voidAmend(intcount)//定义2————修改函数
{
inti,num,payment,tag=0;;
charidly[N],name[N],ID_card[N],in_time[N],leave_time[N];
printf("请输入要修改数据的编号:
");
scanf("%d",&num);
for(i=0;iif(Info[i].num==num)
{
tag=1;
printf("空闲情况:
%s",Info[i].idly);
printf("客人姓名:
%s",Info[i].name);
printf("身份证:
%s",Info[i].ID_card);
printf("入住时间:
%s",Info[i].in_time);
printf("退房时间:
%s",Info[i].leave_time);
printf("预付费用:
%d\n",Info[i].ad_payment);
printf("空闲情况:
");
scanf("%s",idly);
printf("客人姓名:
");
scanf("%s",name);
printf("身份证:
");
scanf("%s",ID_card);
printf("入住时间:
");
scanf("%s",in_time);
printf("退房时间:
");
scanf("%s",leave_time);
printf("预付费用:
");
scanf("%d",&payment);
strcpy(Info[i].idly,idly);
strcpy(Info[i].name,name);
strcpy(Info[i].ID_card,ID_card);
strcpy(Info[i].in_time,in_time);
strcpy(Info[i].leave_time,leave_time);
Info[i].ad_payment=payment;
FILE*fp;
fp=fopen("d:
\\hotelmanagesystem.txt","w");
for(i=0;i{
fprintf(fp,"%d",i+1);
fprintf(fp,"客房号:
%d",Info[i].num);
fprintf(fp,"空闲情况:
%s",Info[i].idly);
fprintf(fp,"客房类型:
%s",Info[i].type);
fprintf(fp,"客房价格:
%d",Info[i].prize);
fprintf(fp,"客户姓名:
%s",Info[i].name);
fprintf(fp,"身份证:
%s",Info[i].ID_card);
fprintf(fp,"预付款:
%d",Info[i].ad_payment);
fprintf(fp,"入住时间:
%s",Info[i].in_time);
fprintf(fp,"退房时间:
%s\n",Info[i].leave_time);
}
fclose(fp);
}
if(!
tag)
printf("没有查询到可修改的数据!
");
}
voidDemand(intcount)//定义3————查询函数
{
intin_num,i=0,flag=1;
printf("请输入要查询的客房号:
");
scanf("%d",&in_num);
inttag=0;
for(i=0;iif(Info[i].num==in_num)
{
tag=1;
printf("客房号:
%d\n",Info[i].num);
printf("空闲情况:
%s\n",Info[i].idly);
printf("客房类型:
%s\n",Info[i].type);
printf("客房价格:
%d\n",Info[i].prize);
printf("客人姓名:
%s\n",Info[i].name);
printf("身份证:
%s\n",Info[i].ID_card);
printf("入住时间:
%s\n",Info[i].in_time);
printf("退房时间:
%s\n",Info[i].leave_time);
printf("预付费用:
%d\n",Info[i].ad_payment);
flag=0;
break;
}
if(!
tag)
{printf("没有查询到!
");}
}
voidDel(int*count)//定义4————删除函数
{
inti,j,num,flag=1,tag=0;
printf("请输入要删除的客房号信息:
");
scanf("%d",&num);
for(i=0;i<*count&&flag;i++)
{
if(Info[i].num==num)
{
for(j=i;j<*count&&flag;j++)
Info[j]=Info[j+1];
Info[*count-1].ad_payment=0;
strcpy(Info[*count-1].ID_card,"");
strcpy(Info[*count-1].idly,"");
strcpy(Info[*count-1].in_time,"");
strcpy(Info[*count-1].leave_time,"");
strcpy(Info[*count-1].name,"");
Info[*count-1].num=0;
Info[*count-1].prize=0;
strcpy(Info[*count-1].type,"");
flag=0,tag=1;
(*count)--;
break;
}
}
if(!
tag)
{printf("没有查询到可以删除的信息!
");}
n=n-1;
FILE*fp;
fp=fopen("d:
\\hotelmanagesystem.txt","w");
for(i=0;i{
fprintf(fp,"%d",i+1);
fprintf(fp,"客房号:
%d",Info[i].num);
fprintf(fp,"空闲情况:
%s",Info[i].idly);
fprintf(fp,"客房类型:
%s",Info[i].type);
fprintf(fp,"客房价格:
%d",Info[i].prize);
fprintf(fp,"客户姓名:
%s",Info[i].name);
fprintf(fp,"身份证:
%s",Info[i].ID_card);
fprintf(fp,"预付款:
%d",Info[i].ad_payment);
fprintf(fp,"入住时间:
%s",Info[i].in_time);
fprintf(fp,"退房时间:
%s\n",Info[i].leave_time);
}
fclose(fp);
}
voidSkim(intcount)//定义5————浏览函数
{
inti,flag=1;
printf("\n");
for(i=0;i{
printf("第%d条记录:
\n",i+1);
printf("客房号:
%d\n",Info[i].num);
printf("客房类型:
%s\n",Info[i].type);
printf("%客房价格:
%d\n",Info[i].ad_payment);
printf("空闲情况:
%d\n",Info[i].prize);
printf("客人姓名:
%s\n",Info[i].idly);
printf("客人身份证号:
%s\n",Info[i].name);
printf("入住时间:
%s\n",Info[i].ID_card);
printf("退房时间:
%s\n",Info[i].in_time);
printf("预付费用:
%s\n",Info[i].leave_time);
printf("\n");
flag=0;
//return;
}
}
voidBalance(intconut)//定义6————结算函数
{
inti,x,fee,time;
printf("请输入要结算的客房号:
");
scanf("%d",&x);
for(i=0;iif(Info[i].num==x)
{printf("住房时间为%s————%s。
\n请输入住房时间:
",Info[i].in_time,Info[i].leave_time);
scanf("%d",&time);
fee=Info[i].ad_payment-time*Info[i].prize;
printf("结余金额为%d",fee);
break;
}
else
{printf("编号输入错误,请重新输入:
");return;}
}
七、运行结果分析
1.运行程序后,按提示选择相应功能。
(1)。
功能1——登记。
(图2)
图2登记数据
(2)。
功能2——修改。
(图3)
图3修改数据
(3)功能3——查询。
(图4)
图4查询信息
(3)功能4——删除。
(图5)
图5删除信息
(5)功能5——浏览。
(图6)
图6浏览信息
(6)功能6——结算。
(图7)
图7结算余额
2.进入相应功能后,进行数据处理。
处理后的数据会保存在磁盘中便于系统的运作和数据的存储。
图8
3.信息可以在d:
\\hotelmanagesystem.txt中查询到。
八、收获及体会
对C语言在编写程序时的用处有了更明确的认识,懂得了编写C程序的一般法方步骤。
最大的收获是,编写程序时一定要有信心和勇气,要相信自己一定可以把这个程序编写出来。
分析问题做出算法,想好思路,在心里有个大致的框架,然后按部就班的记下自己想到的每一点内容,把写下的东西认真整理,查缺补漏,把一些细节的地方补上,就这样一个貌似很难的程序就写出来了(其实编程并不难,关键是要投入,要钻到里面去)。
下一步就是读程序了,读程序时一定要小心仔细,一条语句、一条语句的读,看是否能输出自己想要输出的结果,如果发现错误要马上改过来,再接着向下读,直到把程序调试的完美无缺为至。