




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录一、题目要求(3)二、需求分析(3)三、 总体设计(4)四、 详细设计(5)1、 主函数main(5)2、 主菜单函数 menu(6)3、 登录模板enter(8)4、 统计模板count(10)5、 查询模板search(12)6、 修改模板modify(14)7、 离开模板leave(16)五、运行结果(19)六、总程序七、总结(30)一、 题目要求要求编写一个旅馆客房管理系统,系统包括新用户登录功能、统计功能、查询功能、修改功能。建立如下结构体:struct Clientchar name20; int sex; int age; char ID_card20;/身份证号码; int year; int month; int date;/居住时间; ;struct Hotel int room_ID;/房间号; int tel; int price; int sign;/标记房间是否为空; struct Client Client_list;/实现结构体的嵌套; sumN;二、需求分析根据题目要求,房间信息数据存放在一个文本文件中;通过文件的输入和输出来实现新用户登录、统计、查询、修改等各项功能;且各项功能能独立完成,不受其它工程是否完成的影响;程序中应设有主菜单函数,通过主菜单函数可以调用各个功能函数,各个功能函数操作完成后可以回到主菜单,等待下一个操作;还应设有菜单选项,能通过键盘操作实现选择;同时,应有通道退出程序;三、总体设计通过分析,整个系统应包括以几个模板:登录模板enter、统计模板count、查询模板search、修改模板modify、离开模板leave、退出。系统功能模块图客房管理系统统计模板count查询模板search修改模板modify离开模板leave退出登录模板enter主菜单函数menu四、详细设计1、 主函数main通过主函数,可以实现数据赋初值,函数的原形声明,为以后的操作做准备。流程图N变量i加1YNY变量i加1YNYNY是否新建数据库数据赋初值用fwrite向文件写入数据新建file.txt是否成功读取file.txt是否成功输出错误信息输出错误信息NNY用fread从文件读入数据判断是否读完判断是否写完变量i加1判断i是否小于房间数NY判断房间是否有人Left-调用住菜单函数menu关闭文件进入系统程序main()int i;char c;FILE *fp;void menu();void enter();void count();void search();void modify();void leave();printf(nnnnt-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-);printf(nnnttWelcome to the systerm of hotel management!nnn);printf(t-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-nnn);printf(ttAre you going to new the file:(y/n)tI choose bb); scanf(%c,&c);if(c=y) for(i=0;iN;i+) sumi.room_ID=i+1; sumi.tel=800+i; sumi.price=100; sumi.sign=0; if(fp=fopen(file.txt,w)=NULL) printf(nCan not open the file!n);exit(0); for(i=0;iN;i+) fwrite(&sumi,sizeof(struct Hotel),1,fp); else if(fp=fopen(file.txt,r)=NULL) printf(nCan not open the file!n);exit(0); for(i=0;iN;i+) fread(&sumi,sizeof(struct Hotel),1,fp); for(i=0;iN;i+) if(sumi.sign) left-; fclose(fp);menu();2、 主菜单函数menu为了使系统执行完没部分功能模快后能通过调用函数方便的返回到系统界面,设次函数。同只这个函数中能设置了各个功能的入口。流程图YN显示一系列的功能选项输入n,判断n是否1-6之内调用enter函数调用count函数调用search函数调用modify函数调用leave函数退出程序void menu()int n,a;do printf(nnnnt*MENU*nn); printf(tttt1.New customern); printf(tttt2.Count roomsn); printf(tttt3.Search roomn); printf(tttt4.Modify customern); printf(tttt5.Leaven); printf(tttt6.Exitnn);printf(t*nn); printf(You choose number(1-6) bb); scanf(%d,&n); if(n6)a=1; printf(nWrong number!nnPrint any key to continue .n); getch(); else a=0; while(a=1); switch(n)case 1:enter();break; case 2:count();break; case 3:search();break; case 4:modify();break; case 5:leave();break; case 6:exit(0);break; 3、 登录模板enter此模块用于新用户的登录,在此模块中要求输入新用户的姓名、性别,年龄,身份证号,入住时间。并将数据存入名为file.txt的文件中。流程图NYNYYNNNY打开file.txt文件是否成功开始输出错误信息从文件中读如数据输入想租用的房间号e判断e是否在1-N之内判断n房间是否被占用Y输入新用户信息是否保存输出错误房间号输出该房间以被占用向文件输出数据输出保存成功,并输出结果,left-是否还需要房间调用主菜单函数程序void enter() FILE *fp; char c; int i,t=0; int e; clrscr(); do if(fp=fopen(file.txt,r)=NULL) printf(nCan not open the file!n);exit(0); for(i=0;i=1&e=N) e-; if(sume.sign=0) printf(nPlease input your name:); scanf(%s,sume.Client_); printf(ntsex:(1 stands for F,2stands for M); scanf(nt%d,&sume.Client_list.sex); printf(ntage:); scanf(%d,&sume.Client_list.age); printf(ntID_card:); scanf(%s,sume.Client_list.ID_card); printf(ntdate(year month date):); scanf(%d%d%d,&sume.Client_list.year,&sume.Client_list.month,&sume.Client_list.date); printf(nThis is the data you just input:n);printf(%st%dt%dt%s,sume.Client_,sume.Client_list.sex,sume.Client_list.age,sume.Client_list.ID_card);printf(t%d.%d.%d,sume.Client_list.year,sume.Client_list.month,sume.Client_list.date); printf(ntSave?(y/n):); c=getchar();c=getchar(); if(c=y) sume.sign=1; left-; if(fp=fopen(file.txt,w)=NULL) printf(nCan not open the file!n);exit(0); for(i=0;iN;i+) fwrite(&sumi,sizeof(struct Hotel),1,fp); printf(nSuccessful!n);printf(Your room number: %dnttel: %dntprice: %d ,sume.room_ID,sume.tel,sume.price); fclose(fp); else printf(nSorry!This room has been taken!nn); else printf(nWrong number!n);printf(nnttttAgain?(y/n):);getchar();c=getchar();if(c=y) t=1;else t=0; while(t=1); printf(Print any key to continue .n); getch();menu();4、 统计模板count此部分用于对客房数据进行统计管理。包括客房占用情况,占用人的各项数据,总房间数,客房剩余数。应输出所有房间的情况,以便进行统计。流程图NNYYNY开始打开file.txt文件是否成功输出错误信息从文件中读如数据输出房间数及剩余房间数i是否小于N输出用户及房间信息输出数据组数是否为5的倍数从外界得到任意一个字符关闭文件调用主菜单函数程序void count()FILE *fp;int i,j;if(fp=fopen(file.txt,r)=NULL)printf(nCan not open the file!n);exit(0);for(i=0;iN;i+)fread(&sumi,sizeof(struct Hotel),1,fp);printf(Room %dntname:%sntsex:%d (1 stand for female,2 stand for male)ntage:%dntID_card:%s,i+1,sumi.Client_,sumi.Client_list.sex,sumi.Client_list.age,sumi.Client_list.ID_card);printf(nttime:%d.%d.%dn,sumi.Client_list.year,sumi.Client_list.month,sumi.Client_list.date);if(sumi.sign)printf(tttTaken!n);else printf(tttUntaken!n);if(i%3=2) printf(nnPrint any key to next page!n); getch(); printf(nEnd!nn); printf(There are %d rooms with %d empty.n,N,left);fclose(fp);printf(Print any key to continue .n);getch();menu();5、 查询模板search此部分用于客户对某一客房进行查询,包括房间占用情况,客户信息,房间的各种数据。流程图YNYYNNYN开始输入房间号nn是否大于0小于N打开file.txt文件是否成功输出错误信息从文件中读入数据输出指定客房的信息判断是否被占用输出已经被占用判断是否想租用调用enter函数调用主菜单函数程序void search()int n,i,a;FILE *fp;char c;printf(Which room are you going to search?(1-%d):Room bb,N);do scanf(%d,&n); if(nN) a=1; printf(nWrong number!ntPlease input again:(1-%d),Room bb,N); else a=0; while(a=1); if(fp=fopen(file.txt,r)=NULL) printf(nCan not open the file!n); exit(0); for(i=0;iN;i+) fread(&sumi,sizeof(struct Hotel),1,fp); printf(Room %dntname:%sntsex:%d (1 stand for female,2 stand for male)ntage:%dntID_card:%snttime:%d.%d.%dn,n,sumn-1.Client_,sumn-1.Client_list.sex,sumn-1.Client_list.age,sumn-1.Client_list.ID_card,sumn-1.Client_list.year,sumn-1.Client_list.month,sumn-1.Client_list.date); printf(This rooms telephone number:%dntttprice:%dnt,sumn-1.tel,sumn-1.price); if(sumn-1.sign) printf(nHas been taken!nn); else printf(ntEmpty!tAre you going to rent it?(y/n) bb); c=getchar(); c=getchar(); printf(n); if(c=y) enter(); fclose(fp);printf(Print any key to continue .n);getch();menu();6、 修改模板modify此部分用于修改客户及客房各项信息,包括客户的姓名、年龄、性别、身份证号码、入住时间,客房的电话号码,价格等。流程图NYNYYNYN输入房间号nn是否大于0小于N打开file.txt文件是否成功输出错误信息从文件中读入数据开始输入拟修改选项t输入新姓名输入新性别输入新年龄输入新身份证号输入新日期输入新电话号码输入新价格放弃保存数据是否继续判断t是否大于0小于N134567182调用主菜单函数程序void modify()int i,n,t,a;char c;FILE *fp;struct Hotel sumN;printf(Which room are you going to modify:(1-%d)Room bb,N);scanf(%d,&n);n-;if(fp=fopen(file.txt,r)=NULL)printf(nCan not open the file!n);exit(0);for(i=0;iN;i+) fread(&sumi,sizeof(struct Hotel),1,fp); do printf(Which part are you going to modify:nn);printf(nttt2.sexnttt3.agenttt4.ID_cardnttt5.datenttt6.telnttt7.pricenttt8.give upnnn); do printf(nI choose bb); scanf(%d,&t); if(t8) a=1; printf(nWrong number!ntPlease input again:(1-%d),Room bb,N); else a=0; while(a=1); switch(t) case 1:printf(nThe former name is %s.Please input new name:,sumn.Client_); scanf(%s,sumn.Client_);break; case 2:printf(nThe former sex is %d.Please input new sex:,sumn.Client_list.sex); scanf(%s,&sumn.Client_list.sex);break; case 3:printf(nThe former age is %d.Please input new age:,sumn.Client_list.age); scanf(%s,&sumn.Client_list.age);break; case 4:printf(nThe former ID_card is %s.Please input new ID_card:,sumn.Client_list.ID_card); scanf(%s,sumn.Client_list.ID_card);break; case 5:printf(nThe former time is %d.%d.%d.Please input new date:(year month date),sumn.Client_list.year,sumn.Client_list.month,sumn.Client_list.date);scanf(%s,&sumn.Client_list.year,&sumn.Client_list.month,&sumn.Client_list.date);break; case 6:printf(nThe former tel is %d .Please input new tel:,sumi.tel); scanf(%d,&sumn.tel); case 7:printf(nThe former price is %d.Please input new price:,sumi.price); scanf(%d,&sumi.price); case 8:menu(); fclose(fp); if(fp=fopen(file.txt,w)=NULL)printf(nCan not open the file!n);exit(0); for(i=0;iN;i+) fwrite(&sumi,sizeof(struct Hotel),1,fp); printf(ntSuccessfull!n); printf(nModify other?(y/n) bb); getchar(); c=getchar(); while(c=y); fclose(fp); printf(nPrint any key to continue .n); getch(); menu();7、 离开模板leave此部分用于客户离开时删除其数据。在次部分程序中需要房间数据恢复到初始状态。流程图NYNYYYNYNYN输入房间号nn是否大于0小于N打开file.txt文件是否成功输出错误信息从文件中读入数据开始该房间是否被占用客房是否都为空输出房间信息确定离开输入当前日期输出所需付租金将数据置为原始值,left+保存数据,关闭文件输出所有房间都为空调用主菜单函数程序void leave()FILE *fp;char c;int t=0,p,i,n,year,month,date;if(fp=fopen(file.txt,r)=NULL)printf(nCan not open the file!n);exit(0);for(i=0;iN;i+)fread(&sumi,sizeof(struct Hotel),1,fp); if(sumi.sign) t=1;if(t=1) dop=0; printf(Please input your room number:(1-%d)Room bb,N); scanf(%d,&n); if(nN) p=1,printf(nWrong number!n); else if(sumn-1.sign=0) printf(nnThis room has not been taken!nnPlease input again!n);while(p=1|sumn-1.sign=0); printf(This is your information:n);printf(name:%snsex:%dnage:%dnID_card%sn,sumn-1.Client_,sumn-1.Client_list.sex,sumn-1.Client_list.age,sumn-1.Client_list.ID_card);printf(entertime:%d.%d.%dn,sumn-1.Client_list.year,sumn-1.Client_list.month,sumn-1.Client_list.date);printf(nnAre you sure to leave?(y/n):); getchar(); c=getchar(); if(c=y) printf(nInput the time now:); scanf(%d%d%d,&year,&month,&date); printf(You shoud pay:%d,sumn-1.price*(year-sumn-1.Client_list.year)*365+(month-sumn-1.Client_list.month)*30+date-sumn-1.Client_list.date); left+; sumn-1.sign=0; strcpy(sumn-1.Client_,); sumn-1.Client_list.age=0; sumn-1.Client_list.sex=0; strcpy(sumn-1.Client_list.ID_card, ); sumn-1.Client_list.year=0; sumn-1.Client_list.month=0; sumn-1.Client_list.date=0; fclose(fp); if(fp=fopen(file.txt,w)=NULL) printf(nCan not open the file!n);exit(0); for(i=0;iN;i+) fwrite(&sumi,sizeof(struct Hotel),1,fp); fclose(fp); printf(nntSuccessfull!n); else printf(nSorry!All the room is empty.n);printf(nnPrint any key to contimue .n);getch();menu();五、 运行结果程序启动界面说明:当初次新建数据时选择“y”,再次进入时选择“n”。新用户登录界面统计模块(说明:每次显示三个用户)统计结果(说明:最后显示统计结果)查询模板查询模板(说明:可以通过查询租用房间)修改模板离开模板六、 总程序#include#include#define N 10int left=N;struct Client char name20; int sex; int age; char ID_card20; int year; int month; int date; ;struct Hotel int room_ID; int tel; int price; int sign; struct Client Client_list; sumN;main()int i;char c;FILE *fp;void menu();void enter();void count();void search();void modify();void leave();printf(nnnnt-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-);printf(nnnttWelcome to the systerm of hotel management!nnn);printf(t-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-nnn);printf(ttAre you going to new the file:(y/n)tI choose bb); scanf(%c,&c); if(c=y) for(i=0;iN;i+) sumi.room_ID=i+1; sumi.tel=800+i; sumi.price=80; sumi.sign=0; if(fp=fopen(file.txt,w)=NULL) printf(nCan not open the file!n); exit(0); for(i=0;iN;i+) fwrite(&sumi,sizeof(struct Hotel),1,fp); fclose(fp); else if(fp=fopen(file.txt,r)=NULL) printf(nCan not open the file!n);exit(0); for(i=0;iN;i+) fread(&sumi,sizeof(struct Hotel),1,fp); for(i=0;iN;i+) if(sumi.sign) left-; fclose(fp); menu();void menu()int n,a;doprintf(nnnnt*MENU*nn); printf(tttt1.New customern); printf(tttt2.Count roomsn); printf(tttt3.Search roomn); printf(tttt4.Modify customern); printf(tttt5.Leaven); printf(tttt6.Exitnn); printf(t*nn); printf(You choose number(1-6) bb); scanf(%d,&n); if(n6)a=1;printf(nWrong number!nnPrint any key to continue .n);getch(); else a=0; while(a=1); switch(n) case 1:enter();break; case 2:count();break; case 3:search();break; case 4:modify();break; case 5:leave();break; case 6:exit(0);break; void enter() FILE *fp; char c; int i,t=0; int e; clrscr(); doif(fp=fopen(file.txt,r)=NULL) printf(nCan not open the file!n);exit(0); for(i=0;i=1&e=N) e-; if(sume.sign=0) printf(nPlease input your name:); scanf(%s,sume.Client_); printf(ntsex:(1 stands for F,2stands for M); scanf(nt%d,&sume.Client_list.sex); printf(ntage:); scanf(%d,&sume.Client_list.age); printf(ntID_card:); scanf(%s,sume.Client_list.ID_card); printf(ntdate(year month date):);scanf(%d%d%d,&sume.Client_list.year,&sume.Client_list.month,&sume.Client_list.date); printf(nThis is the data you just input:n);printf(%st%dt%dt%s,sume.Client_,sume.Client_list.sex,sume.Client_list.age,sume.Client_list.ID_card); printf(t%d.%d.%d,sume.Client_list.year,sume.Client_list.month,sume.Client_list.date); printf(ntSave?(y/n):); c=getchar();c=getchar(); if(c=y) sume.sign=1; left-; if(fp=fopen(file.txt,w)=NULL) printf(nCan not open the file!n);exit(0); for(i=0;iN;i+) fwrite(&sumi,sizeof(struct Hotel),1,fp); printf(nSuccessful!n); printf(Your room number:%dnttel:%dntprice:%d,sume.room_ID,sume.tel,sume.price); fclose(fp); else printf(nSorry!This room has been taken!nn); else printf(nWrong number!n);printf(nnttttAgain?(y/n):);getchar();c=getchar();if(c=y) t=1;else t=0; while(t=1); printf(Print any key to continue .n); getch(); menu(); void count() FILE *fp;int i,j;if(fp=fopen(file.txt,r)=NULL)printf(nCan not open the file!n);exit(0);for(i=0;iN;i+)fread(&sumi,sizeof(struct Hotel),1,fp);printf(Room %d:ntname:%s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 油罐系统施工方案(3篇)
- 消声雨棚施工方案(3篇)
- 尾矿砂回采施工方案(3篇)
- 中级考试题库大全及答案
- 手工帐教学的课件
- 北京市昌平区2024-2025学年八年级下学期期末考试道德与法制试题及答案
- 心理医生测试的题目及答案
- 心怀善意申论题目及答案
- 时间都去哪了450字(10篇)
- 销售合同管理标准化模板合同条款及风险评估
- 新版外研版九年级英语上单词-默写纸-完整
- 设备预防性维修管理
- 经阴道后穹窿穿刺课件
- 去极端化自我剖析
- 船舶压载水取样与检测技术
- 人工流产后避孕服务规范
- 环境、社会与公司治理(ESG)
- 学校食堂食材配送服务方案(肉类、粮油米面、蔬菜水果类)(技术标)
- 物理学与人类文明(绪论)课件
- 《圆的周长》说课ppt
- 2023年临沧市市级单位遴选(选调)考试题库及答案
评论
0/150
提交评论