1、目录一、题目规定(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
2、 year; int month; int date;/居住时间; ;struct Hotel int room_ID;/房间号; int tel; int price; int sign;/标记房间与否为空; struct Client Client_list;/实现构造体嵌套; sumN;二、需求分析依照题目规定,房间信息数据存储在一种文本文献中;通过文献输入和输出来实现新顾客登录、记录、查询、修改等各项功能;且各项功能能独立完毕,不受其他工程与否完毕影响;程序中应设有主菜单函数,通过主菜单函数可以调用各个功能函数,各个功能函数操作完毕后可以回到主菜单,等待下一种操作;还应设有菜单选项,能
3、通过键盘操作实现选取;同步,应有通道退出程序;三、总体设计通过度析,整个系统应涉及以几种模板:登录模板enter、记录模板count、查询模板search、修改模板modify、离开模板leave、退出。系统功能模块图客房管理系统记录模板count查询模板search修改模板modify离开模板leave退出登录模板enter主菜单函数menu四、详细设计1、 主函数main通过主函数,可以实现数据赋初值,函数原形声明,为后来操作做准备。流程图N变量i加1YNY变量i加1YNYNY与否新建数据库数据赋初值用fwrite向文献写入数据新建file.txt与否成功读取file.txt与否成功输出错
4、误信息输出错误信息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 syst
5、erm 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
6、 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为了使系统执行完没某些功能模快
7、后能通过调用函数以便返回到系统界面,设次函数。同只这个函数中能设立了各个功能入口。流程图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.Leave
8、n); 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();bre
9、ak; 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()
10、; 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_list.name); printf(ntsex:(1 stands for F,2stands for M); scanf(nt%d,&sume.Client_list.sex); printf(ntage:); scanf(%d,&sume.Client_l
11、ist.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_list.name,sume.Client_list.sex,sume.Clien
12、t_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,s
13、izeof(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
14、); 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(n
15、Can 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_list.name,sumi.Client_list.sex,sumi.Client_list.age,sumi.Client_list.ID_card);printf(nttime:%d.%d.%dn,sumi.C
16、lient_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(
17、);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; prin
18、tf(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:%sntti
19、me:%d.%d.%dn,n,sumn-1.Client_list.name,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 ta
20、ken!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文献与否成功输出错误信息从
21、文献中读入数据开始输入拟修改选项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
22、);for(i=0;iN;i+) fread(&sumi,sizeof(struct Hotel),1,fp); do printf(Which part are you going to modify:nn);printf(nttt1.namenttt2.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-%
23、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_list.name); scanf(%s,sumn.Client_list.name);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:pri
24、ntf(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
25、 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
26、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=getch
27、ar(); 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;ch
28、ar 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); els
29、e 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_list.name,sumn-1.Client_list.sex,sumn-1.Client_list.age,sumn-1.Client_list.ID_card);printf(entertime:%d
30、.%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
31、-1.Client_list.month)*30+date-sumn-1.Client_list.date); left+; sumn-1.sign=0; strcpy(sumn-1.Client_list.name,); 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(f
32、p=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”
33、。新顾客登录界面记录模块(阐明:每次显示三个顾客)记录成果(阐明:最后显示记录成果)查询模板查询模板(阐明:可以通过查询租用房间)修改模板离开模板六、 总程序#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;m
34、ain()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-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
35、*-*-*-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+)
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100