高级程序设计客房管理系统.docx
- 文档编号:25252214
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:30
- 大小:327.85KB
高级程序设计客房管理系统.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 #defineM100 intz[100]={0};//定义一个数组存放使用的房间的标记的信息,且初始化为0 intj,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;//标记使用的房间为1 save(); 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; else if(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;s if(a==room[s].room_ID) if(z[s]==1) {shuchu(s); printf("\n");} else printf("该房间未被使用! "); 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); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 程序设计 客房 管理 系统