高级程序设计客房管理系统.docx
《高级程序设计客房管理系统.docx》由会员分享,可在线阅读,更多相关《高级程序设计客房管理系统.docx(30页珍藏版)》请在冰豆网上搜索。
高级程序设计客房管理系统
高级语言程序设计报告
题目:
客房管理系统
报告目录
1.题目要求...................................................................................
2.需求分析....................................................................................
3.总体分析....................................................................................
4.详细分析....................................................................................
5.系统模块图................................................................................
6.上机操作...................................................................................
7.小结...........................................................................................
8.源代码...........................................................................................
1.题目要求
试设计一客房管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)客户信息登记功能
(3)客户信息统计功能
(4)客户信息查询功能
(5)客户信息修改功能
(6)显示入住费用(自选)
[提示]
建立客户信息结构体,结构体成员包括身份证号、姓名、性别、年龄等
建立客房信息结构体,包括房间号、价格、
建立时间结构体,包括年、月、日
2.需求分析
(1)实现用户登记功能,要提供结构体的输入操作;
(2)实现统计功能,要提供相应的统计操作;
(3)实现查询功能,要提供查找操作;
(4)实现修改功能,要提供修改操作;
(5)显示入住费用
(6)另外还要提供键盘式菜单实现功能选择。
3.总体分析
整个客房管理系统被设计为用户登记模块、统计模块、查询模块和修改模块、显示费用模块。
4.详细分析
数据结构采用结构体,设计如下结构体:
时间结构体:
structdate
{
intmonth;
intday;
intyear;}final;
客房结构体与客户信息结构体嵌套使用:
structhotel
intprice;
introom_ID;
structclient
charname[20];
intsex;
intage;
charID_card[20];
intcount;
structdatestart;
}personal;}room[M];
(1)用户登记模块提示用户输入自身信息以及客房信息,把数据存入room数组中。
(2)统计模块设置计数器,顺序遍历room数组来实现。
实现对房客数的统计。
(3)查询模块通过基本查找算法查找room数组。
可以按房间号、用户姓名、居民身份证查询。
(4)修改模块采用基本查找算法在数组中找到要修改的数据,直接更改。
(5)显示入住费用模块根据客户输入的信息计算总费用
5.系统模块图
6.上机操作
(1)进入客房管理系统初界面
(2)进入主菜单
(3)登记入住信息
(4)进入统计界面
(5)进入查询菜单
按房间号查询:
按姓名查询:
按身份证号查询:
(6)进入修改菜单
修改客户信息:
修改客房信息:
(7)显示入住费用
(7)退出界面
还有两个公共函数模块,一个是保存函数,使用文件指针,把数据保存在文件中,还有一个就是输出函数,把用户相关信息通过调用函数输出。
voidsave()//保存函数
FILE*fp;
inti;
if((fp=fopen("客房管理.txt","w+"))==NULL)//打开输出文件“客房管理.txt”
{printf("cannotopenfile\n");
exit(0);
}
for(i=0;i{if(fwrite((&room[i]),sizeof(room[M]),1,fp)!=1)printf("filewriteerror\n");fflush(fp);}fclose(fp);//关闭文件}intshuchu(intq){printf("姓名:%s",room[q].personal.name);printf("\n性别(其中:1表示男,2表示女!):%d",room[q].personal.sex);printf("\n年龄:%d",room[q].personal.age);printf("\n身份证号:%s",room[q].personal.ID_card);printf("\n入住年份:%d\t\t",room[q].personal.start.year);printf("月:%d\t\t",room[q].personal.start.month);printf("日:%d\t\t",room[q].personal.start.day);printf("\n房间号:%d",room[q].room_ID);printf("\n客房单价:%d",room[q].price);printf("\n入住人数:%d\n",room[q].personal.count);return0;}7.小结经过两、三周的编程、调试、运行,总算是搞完了。老师以前说过,做个课程设计会让你掉一层皮,这话一点也不假!一个课程设计搞下来,原本不熟悉的知识模块经过不断的改错误、调试运行基本上非常熟悉啦。果然还是上机操作好!通过实践掌握C语言快一些。其实C语言并不难,只要把程序分模块,然后再把模块串起来就行了。我觉得自己的程序编的不是很好,虽然基本功能都实现了,可是还是需要完善。比如说统计模块,我只统计了入住的房间数和未住的房间数,统计模块做的太简单,不怎么好。不过,我自己添加了一个输出总费用的函数模块哦。总之,通过这次课程设计,我真的学到了好多东西,最起码动手能力方面大大加强。受益匪浅!8.附上我的源程序#include#include#include//在使用中要用到的字符串都包含在本文件中#include//exit()函数就包含在此文件中#defineM100intz[100]={0};//定义一个数组存放使用的房间的标记的信息,且初始化为0intj,s,i,w=0,h;//定义几个全局变量FILE*fp;//定义一个指向文件的指针变量structdate{intmonth;intday;intyear;}final;structhotel{intprice;introom_ID;structclient{charname[20];intsex;intage;charID_card[20];intcount;structdatestart;}personal;}room[M];intshuchu(intq);voidsave();//声明保存函数voiddengji();//声明客房登记入住函数voidtongji();voidchaxun();//声明查询入住情况函数voidname();voidroom_ID();voidID_card();voidxiugai();//声明客房信息修改函数voidxggr_one();//声明修改客房信息函数中的修改个人函数voidxggr_s(intj);voidxgkf();//声明修改客房信息函数中的修改客房函数voidmoney();//声明显示入住费用函数 intmain(){intmenu();//声明主菜单函数system("color01f");printf("\t*********************************************************************\t");printf("\t******************高级语言程序课程设计*************************\t\t\n");printf("\t*******************客房管理信息系统****************************\t\t\n");printf("\t********************三峡大学理学院*****************************\t\t\n");printf("\t******************周红艳2010146107**************************\t\t\n");printf("\t*******************happyeveryday!*****************************\t\t\n");printf("\t*************^_^****^_^******^_^*******^_^*********************\t\n");printf("\t继续请按1,退出请按0。");scanf("%d",&i);switch(i){case1:menu();break;//把主菜单用函数来实现case0:exit(0);}save();return0;}intmenu()//菜单函数{system("cls");system("color05f");intn;do{printf("\n");printf("\t*********************欢迎登录客房信息管理系统****************\t\t\n");printf("\t\t*********************菜单********************\n\n\n");printf("\t\t\t\t1:登记入住信息\n\n\n");printf("\t\t\t\t2:统计入住信息\n\n\n");printf("\t\t\t\t3:查询客房入住情况\n\n\n");printf("\t\t\t\t4:修改信息\n\n\n");printf("\t\t\t\t5:显示入住费用\n\n\n");printf("\t\t\t\t6:退出\n\n\n");printf("\t\t*********************菜单********************\n");printf("\n\n\t\t\t请选择输入选项[1\\2\\3\\4\\5\\6]:");scanf("%d",&n);while(n<1||n>6){printf("请重新输入选项!\n");scanf("%d",&n);}switch(n){case1:dengji();break;//调用登记函数case2:tongji();break;//调用统计函数case3:chaxun();break;//调用查询函数case4:xiugai();break;//调用修改函数case5:money();break;//调用入住费用函数case6:exit(0);}}while(n!=6);scanf("%d",&n);return0;} voiddengji()//登记函数{system("cls");printf("请输入登记相关信息:\n");printf("\n房间号:");scanf("%d",&j);room[j].room_ID=j;printf("\n姓名:");scanf("%s",&room[j].personal.name);printf("\n性别(其中:1表示男,2表示女!):");scanf("%d",&room[j].personal.sex);printf("\n年龄:");scanf("%d",&room[j].personal.age);printf("\n身份证号:");scanf("%s",&room[j].personal.ID_card);printf("\n入住年份:");scanf("%d",&room[j].personal.start.year);printf("月:");scanf("%d",&room[j].personal.start.month);printf("日:");scanf("%d",&room[j].personal.start.day);printf("\n客房单价:");scanf("%d",&room[j].price);printf("请输入入住人数:");scanf("%d",&room[j].personal.count);z[j]=1;//标记使用的房间为1save();printf("\n");printf("1.继续输入信息2.主菜单3.退出");printf("请输入选项:\n");scanf("%d",&i);switch(i){case1:dengji();break;case2:menu();case3:exit(0);}}intshuchu(intq){printf("姓名:%s",room[q].personal.name);printf("\n性别(其中:1表示男,2表示女!):%d",room[q].personal.sex);printf("\n年龄:%d",room[q].personal.age);printf("\n身份证号:%s",room[q].personal.ID_card);printf("\n入住年份:%d\t\t",room[q].personal.start.year);printf("月:%d\t\t",room[q].personal.start.month);printf("日:%d\t\t",room[q].personal.start.day);printf("\n房间号:%d",room[q].room_ID);printf("\n客房单价:%d",room[q].price);printf("\n入住人数:%d\n",room[q].personal.count);return0;} voidtongji()//统计房客数量函数{system("cls");intg,i=0,count=0;for(g=1;g<=M;g++){if(z[g]==0)++count;elseif(z[g]==1){i++;printf("\n正在使用的房间号:%d\n",g);}}printf("\n未使用的房间数:%d\n",count);//通过循环输出未使用的房间数printf("\n已使用房间总数为:%d。\n",i);printf("\n\n");save();printf("1.返回主菜单2.退出\n");printf("请输入选项:\n");scanf("%d",&i);switch(i){case1:menu();case2:exit(0);}} voidchaxun()//查询模块{system("cls");inti;printf("\t\t\t*******************菜单******************\n\n\n");printf("1.按房间号查询2.按姓名查询3.按身份证号查询4.主菜单5.退出\n");printf("请输入选项:");scanf("%d",&i);switch(i){case1:room_ID();break;case2:name();break;case3:ID_card();break;case4:menu();break;case5:exit(0);}}voidname()//按名字查询函数{charstr[10];printf("\n请输入需查询的姓名:");scanf("%s",str);for(s=0;s<=M;s++)if(strcmp(str,room[s].personal.name)==0)w=1,h=s;if(w==1)shuchu(h);elseprintf("没有您要查找的人!\n");save();printf("1.继续按姓名查询2.返回查询菜单3.主菜单4.退出\n");printf("请输入选项:");scanf("%d",&i);switch(i){case1:name();break;case2:chaxun();break;case3:menu();case4:exit(0);}}voidroom_ID()//按房间号查询函数{inta;printf("\n请输入需查询的房间号:");//查询输入的房间号的信息,且输出该房间的相关信息scanf("%d",&a);for(s=0;sif(a==room[s].room_ID)if(z[s]==1){shuchu(s);printf("\n");}elseprintf("该房间未被使用!");save();//调用保存函数printf("1.继续按房间号查询2.返回查询菜单3.主菜单4.退出\n");printf("请输入选项:");scanf("%d",&i);switch(i){case1:room_ID();break;case2:chaxun();break;case3:menu();case4:exit(0);}}voidID_card()//按身份证号查询函数{charstr[20];printf("\n请输入需查询的身份证号:");scanf("%s",str);for(s=0;s<=M;s++)if(strcmp(str,room[s].personal.ID_card)==0)w=1,h=s;if(w==1)shuchu(h);elseprintf("没有此身份证号的人入住!\n");save();printf("1.继续按身份证号查询2.返回查询菜单3.主菜单4.退出\n");printf("请输入选项:");scanf("%d",&i);switch(i){case1:ID_card();break;case2:chaxun();break;case3:menu();case4:exit(0);}} voidxiugai()//修改信息函数{system("cls");intk,m;do{printf("\t\t\t*******************菜单******************\n\n\n");printf("\t\t\t\t\t1:修改客户信息\n\n\n");printf("\t\t\t\t\t2:修改客房信息\n\n\n");printf("\t\t\t\t\t3:主菜单\n\n\n");printf("\t\t\t\t\t4:退出\n\n\n");printf("\t\t\t*****************************************\n\n\n");printf("\t\t\t请选择输入选项[1\\2\\3\\4]:");scanf("%d",&m);k=m;if(k<1||k>4){printf("请重新输入选项!");}}while(k<1||k>4);switch(m){case1:xggr_one();break;case2:xgkf();break;case3:menu();case4:exit(0);}save();}voidxggr_one()/*****修改用户个人信息*****/{system("cls");charb[20];puts("请输入名字:");scanf("%s",b);for(s=0;s<=M;s++)if(strcmp(b,room[s].personal.name)==0)w=1,h=s;if(w==1)shuchu(h);elseprintf("没有您要查找的人!\n");xggr_s(h);save();puts("1.返回修改菜单2.主菜单3.退出\n");puts("请输入选项:\n");scanf("%d",&i);switch(i){case1:xiugai();break;case2:menu();case3:exit(0);}}
if(fwrite((&room[i]),sizeof(room[M]),1,fp)!
=1)
printf("filewriteerror\n");
fflush(fp);
fclose(fp);//关闭文件
intshuchu(intq)
printf("姓名:
%s",room[q].personal.name);
printf("\n性别(其中:
1表示男,2表示女!
):
%d",room[q].personal.sex);
printf("\n年龄:
%d",room[q].personal.age);
printf("\n身份证号:
%s",room[q].personal.ID_card);
printf("\n入住年份:
%d\t\t",room[q].personal.start.year);
printf("月:
%d\t\t",room[q].personal.start.month);
printf("日:
%d\t\t",room[q].personal.start.day);
printf("\n房间号:
%d",room[q].room_ID);
printf("\n客房单价:
%d",room[q].price);
printf("\n入住人数:
%d\n",room[q].personal.count);return0;
7.小结
经过两、三周的编程、调试、运行,总算是搞完了。
老师以前说过,做个课程设计会让你掉一层皮,这话一点也不假!
一个课程设计搞下来,原本不熟悉的知识模块经过不断的改错误、调试运行基本上非常熟悉啦。
果然还是上机操作好!
通过实践掌握C语言快一些。
其实C语言并不难,只要把程序分模块,然后再把模块串起来就行了。
我觉得自己的程序编的不是很好,虽然基本功能都实现了,可是还是需要完善。
比如说统计模块,我只统计了入住的房间数和未住的房间数,统计模块做的太简单,不怎么好。
不过,我自己添加了一个输出总费用的函数模块哦。
总之,通过这次课程设计,我真的学到了好多东西,最起码动手能力方面大大加强。
受益匪浅!
8.附上我的源程序
#include
#include//在使用中要用到的字符串都包含在本文件中
#include//exit()函数就包含在此文件中
#defineM100
intz[100]={0};//定义一个数组存放使用的房间的标记的信息,且初始化为0
intj,s,i,w=0,h;//定义几个全局变量
FILE*fp;//定义一个指向文件的指针变量
intyear;
}final;
}personal;
}room[M];
intshuchu(intq);
voidsave();//声明保存函数
voiddengji();//声明客房登记入住函数
voidtongji();
voidchaxun();//声明查询入住情况函数
voidname();
voidroom_ID();
voidID_card();
voidxiugai();//声明客房信息修改函数
voidxggr_one();//声明修改客房信息函数中的修改个人函数
voidxggr_s(intj);
voidxgkf();//声明修改客房信息函数中的修改客房函数
voidmoney();//声明显示入住费用函数
intmain()
intmenu();//声明主菜单函数
system("color01f");
printf("\t*********************************************************************\t");
printf("\t******************高级语言程序课程设计*************************\t\t\n");
printf("\t*******************客房管理信息系统****************************\t\t\n");
printf("\t********************三峡大学理学院*****************************\t\t\n");
printf("\t******************周红艳2010146107**************************\t\t\n");
printf("\t*******************happyeveryday!
*****************************\t\t\n");
printf("\t*************^_^****^_^******^_^*******^_^*********************\t\n");
printf("\t继续请按1,退出请按0。
");
scanf("%d",&i);
switch(i)
case1:
menu();break;//把主菜单用函数来实现
case0:
exit(0);}
save();
return0;
intmenu()//菜单函数
system("cls");system("color05f");
intn;
do
printf("\n");
printf("\t*********************欢迎登录客房信息管理系统****************\t\t\n");
printf("\t\t*********************菜单********************\n\n\n");
printf("\t\t\t\t1:
登记入住信息\n\n\n");
printf("\t\t\t\t2:
统计入住信息\n\n\n");
printf("\t\t\t\t3:
查询客房入住情况\n\n\n");
printf("\t\t\t\t4:
修改信息\n\n\n");
printf("\t\t\t\t5:
显示入住费用\n\n\n");
printf("\t\t\t\t6:
退出\n\n\n");
printf("\t\t*********************菜单********************\n");
printf("\n\n\t\t\t请选择输入选项[1\\2\\3\\4\\5\\6]:
scanf("%d",&n);
while(n<1||n>6)
{printf("请重新输入选项!
\n");
scanf("%d",&n);}
switch(n)
dengji();break;//调用登记函数
case2:
tongji();break;//调用统计函数
case3:
chaxun();break;//调用查询函数
case4:
xiugai();break;//调用修改函数
case5:
money();break;//调用入住费用函数
case6:
}while(n!
=6);
voiddengji()//登记函数
system("cls");
printf("请输入登记相关信息:
scanf("%d",&j);
room[j].room_ID=j;
printf("\n姓名:
scanf("%s",&room[j].personal.name);
scanf("%d",&room[j].personal.sex);
printf("\n年龄:
scanf("%d",&room[j].personal.age);
printf("\n身份证号:
scanf("%s",&room[j].personal.ID_card);
printf("\n入住年份:
scanf("%d",&room[j].personal.start.year);
printf("月:
scanf("%d",&room[j].personal.start.month);
printf("日:
scanf("%d",&room[j].personal.start.day);
printf("\n客房单价:
scanf("%d",&room[j].price);
printf("请输入入住人数:
scanf("%d",&room[j].personal.count);
z[j]=1;//标记使用的房间为1
printf("1.继续输入信息2.主菜单3.退出");
printf("请输入选项:
dengji();break;
menu();
voidtongji()//统计房客数量函数
intg,i=0,count=0;
for(g=1;g<=M;g++)
if(z[g]==0)
++count;
else
if(z[g]==1)
{i++;
printf("\n正在使用的房间号:
%d\n",g);}
printf("\n未使用的房间数:
%d\n",count);//通过循环输出未使用的房间数
printf("\n已使用房间总数为:
%d。
\n",i);
printf("\n\n");
printf("1.返回主菜单2.退出\n");
}}
voidchaxun()//查询模块
printf("\t\t\t*******************菜单******************\n\n\n");
printf("1.按房间号查询2.按姓名查询3.按身份证号查询4.主菜单5.退出\n");
{case1:
room_ID();break;
name();break;
ID_card();break;
menu();break;
voidname()//按名字查询函数
charstr[10];
printf("\n请输入需查询的姓名:
scanf("%s",str);
for(s=0;s<=M;s++)
if(strcmp(str,room[s].personal.name)==0)w=1,h=s;
if(w==1)shuchu(h);
elseprintf("没有您要查找的人!
printf("1.继续按姓名查询2.返回查询菜单3.主菜单4.退出\n");
chaxun();break;
voidroom_ID()//按房间号查询函数
inta;
printf("\n请输入需查询的房间号:
");//查询输入的房间号的信息,且输出该房间的相关信息
scanf("%d",&a);
for(s=0;sif(a==room[s].room_ID)if(z[s]==1){shuchu(s);printf("\n");}elseprintf("该房间未被使用!");save();//调用保存函数printf("1.继续按房间号查询2.返回查询菜单3.主菜单4.退出\n");printf("请输入选项:");scanf("%d",&i);switch(i){case1:room_ID();break;case2:chaxun();break;case3:menu();case4:exit(0);}}voidID_card()//按身份证号查询函数{charstr[20];printf("\n请输入需查询的身份证号:");scanf("%s",str);for(s=0;s<=M;s++)if(strcmp(str,room[s].personal.ID_card)==0)w=1,h=s;if(w==1)shuchu(h);elseprintf("没有此身份证号的人入住!\n");save();printf("1.继续按身份证号查询2.返回查询菜单3.主菜单4.退出\n");printf("请输入选项:");scanf("%d",&i);switch(i){case1:ID_card();break;case2:chaxun();break;case3:menu();case4:exit(0);}} voidxiugai()//修改信息函数{system("cls");intk,m;do{printf("\t\t\t*******************菜单******************\n\n\n");printf("\t\t\t\t\t1:修改客户信息\n\n\n");printf("\t\t\t\t\t2:修改客房信息\n\n\n");printf("\t\t\t\t\t3:主菜单\n\n\n");printf("\t\t\t\t\t4:退出\n\n\n");printf("\t\t\t*****************************************\n\n\n");printf("\t\t\t请选择输入选项[1\\2\\3\\4]:");scanf("%d",&m);k=m;if(k<1||k>4){printf("请重新输入选项!");}}while(k<1||k>4);switch(m){case1:xggr_one();break;case2:xgkf();break;case3:menu();case4:exit(0);}save();}voidxggr_one()/*****修改用户个人信息*****/{system("cls");charb[20];puts("请输入名字:");scanf("%s",b);for(s=0;s<=M;s++)if(strcmp(b,room[s].personal.name)==0)w=1,h=s;if(w==1)shuchu(h);elseprintf("没有您要查找的人!\n");xggr_s(h);save();puts("1.返回修改菜单2.主菜单3.退出\n");puts("请输入选项:\n");scanf("%d",&i);switch(i){case1:xiugai();break;case2:menu();case3:exit(0);}}
if(a==room[s].room_ID)
if(z[s]==1)
{shuchu(s);
printf("\n");}
printf("该房间未被使用!
save();//调用保存函数
printf("1.继续按房间号查询2.返回查询菜单3.主菜单4.退出\n");
voidID_card()//按身份证号查询函数
charstr[20];
printf("\n请输入需查询的身份证号:
if(strcmp(str,room[s].personal.ID_card)==0)w=1,h=s;
elseprintf("没有此身份证号的人入住!
printf("1.继续按身份证号查询2.返回查询菜单3.主菜单4.退出\n");
voidxiugai()//修改信息函数
intk,m;
printf("\t\t\t\t\t1:
修改客户信息\n\n\n");
printf("\t\t\t\t\t2:
修改客房信息\n\n\n");
printf("\t\t\t\t\t3:
主菜单\n\n\n");
printf("\t\t\t\t\t4:
printf("\t\t\t*****************************************\n\n\n");
printf("\t\t\t请选择输入选项[1\\2\\3\\4]:
scanf("%d",&m);k=m;
if(k<1||k>4)
");}}
while(k<1||k>4);
switch(m)
xggr_one();break;
xgkf();break;
voidxggr_one()/*****修改用户个人信息*****/
charb[20];
puts("请输入名字:
scanf("%s",b);
if(strcmp(b,room[s].personal.name)==0)w=1,h=s;
xggr_s(h);
puts("1.返回修改菜单2.主菜单3.退出\n");
puts("请输入选项:
xiugai();break;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1