收藏 分销(赏)

客房管理程序设计说明书.doc

上传人:人****来 文档编号:3429683 上传时间:2024-07-05 格式:DOC 页数:37 大小:186KB
下载 相关 举报
客房管理程序设计说明书.doc_第1页
第1页 / 共37页
客房管理程序设计说明书.doc_第2页
第2页 / 共37页
客房管理程序设计说明书.doc_第3页
第3页 / 共37页
客房管理程序设计说明书.doc_第4页
第4页 / 共37页
客房管理程序设计说明书.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、目 录一、设计题目1二、设计目的1三、设计分析1四、总体设计1五、详细设计3六、程序调试7七、结论8一、设计题目 简单的宾馆客房管理系统设计二、设计目的1. 运用已学过的知识进行一个简单的应用程序的开发。2. 基本掌握设计课题的基本步骤和方法。3. 掌握应用系统开发中的需求分析与数据库设计方法。4. 基本掌握应用系统开发中设计文档的编制。三、设计分析本系统是在vc6.0的环境下进行开发的。系统按功能将分为四个模块,分别为查询模块,修改模块,删除模块,添加模块四部分。以上功能将通过为四个函数实现,其中查询函数拟可以实现按姓名查询和按房间号码查询。修改函数拟可以实现全部选项的修改并且选择一项后都会

2、列出以前这项的存储信息。删除函数将实现了后一个结构体数组的数据来覆盖前一个结构体数组数据以达到删除的效果。添加函数拟实现分别列出已住房间的详细信息和未住房间的详细信息以供用户选择。四、总体设计(1)用户登录时将会选择y或n,y表示用户第一次使用此系统,这时我们需要将结构体数组数组的内容初始化,如果选择n则表示用户不是第一次使用该系统可以继续进行上一次的操作。(2)数据载入管理:系统的数据载入将是由文件写入定义的结构体数组数组里,这样方便了管理者维护和查询数据。 (3)可视化界面:为了方便管理者使用系统,系统的大多数界面将是采用汉英双字幕显示并且界面将简单明了的显示出各选项。(4)查询函数:查询

3、函数中将提供按姓名查询和按房间号码查询两种方法以方便用户查询。(5)删除函数:在此函数中系统将利用后一个结构体数组的数据来覆盖前一个结构体数组数据以达到删除的效果,并同时改变此时房间的容纳量。(6)修改函数:首先从指定文件写入基本数据到指定的结构体数组,然后请用户输入想修改的房间号码,然后会列出修改的全部选项以供用户选择,并且选择一选项后都会列出以前这项的存储信息以方便用户修改。(7)添加函数:在添加函数里系统将会分别列出已住房间的详细信息和未住房间的详细信息以供用户方便的选择。在此函数中系统中添加了一些容错代码防止用户由于疏忽而导致的输入错误,比如判断用户输入的数据是否在系统容许的范围内,系

4、统的系统功能结构图如图1所示。查询模块修改模块添加模块删除模块客房管理系统按姓名查询按房间号码查询修改用户信息添加新用户删除用户信息图1 系统功能结构图2. 结构体设计结构体中一共包含住户个人信息、客房基本信息这两部分。现在列举出了本系统比较重要的结构体数组的详细结构,包括字段名、数据类型以及它的说明,是否可以为空等。具体设计如下:如表1所示,该表用于记录本系统用到住户个人结构体数组里分量的基本信息,包括的分量项目有name、sex、age、id_card、year、month、date。表1住户个人结构体分量信息表字段名数据类型长度说明NameChar20姓名sexint4性别ageInt4

5、年龄Id_cardChar20身份证号yearInt4年monthInt4月dateInt4日如表2所示,该表用于记录本系统用到的客房结构体数组里分量的基本信息,包括的分量项目有room_id、tel、price、sign。表2客房结构体分量信息表字段名数据类型长度说明Room_idChar20姓名telint4性别priceInt4年龄signChar20身份证号五、详细设计1.查询模块本系统分两种方式来完成查询功能即按姓名查询和按房间号码查询。在如图2所示界面中显示两种查询方式及信息,接收用户输入选项后进入相应查询界面。图 2查询函数功能图当用户选择1后进入按房间号码查询界面如图3所示。图

6、 3按号码查询界面当用户选择2后进入按姓名查询界面如图4所示。图4按姓名查询界面按房间号码查询首先从指定文件写入基本数据,为了防止用户错误操作我们设置了容错系统比如有1-50个房间供查询而用户输入的数据不在此范围内编写了do if(nN) a=1; printf(n输入错误!nt请再一次输入:(1-%d),Room bb,N); else a=0; while(a=1);这段代码来防止用户的错误。按姓名查询时首先从指定文件写入基本数据,我们利用strcmp这个函数来比较用户查询的姓名与结构体数组中的姓名是否一样,当一样时会跳出循环这时i的值就是我们要查找的姓名所在结构体数组的标号。2.删除模块

7、 在此函数中我们利用后一个结构体数组的数据来覆盖前一个结构体数组数据以达到删除的效果。如图5所示。图 5删除函数效果图3.修改模块首先从指定文件写入基本数据然后请用户输入想修改的房间号码然后会列出修改的全部选项并且每一项都会列出以前这项的存储信息以方便用户修改,其中选项包括房间号码、电话号码、价格、标记、姓名、性别、年龄、身份证号码、年、月、日。如图6所示。图6修改函数功能图 当你选择修改的选项后系统会列出以前此项的存储信息和“修改成功”的字样如图7所示。图7修改函数选项修改功能图4.添加模块在添加函数里系统会分别列出已住房间的详细信息和未住房间的详细信息以供用户方便的选择,如图8所示。图 8

8、分别显示功能图 在用户选择房间时添加函数会让用户输入姓名,性别,年龄,身份证号等个人信息。如图9所示。图 9添加函数功能图 六、程序调试 1.不熟悉fprintf函数所导致的问题 fprintf(fp,%d %d %d %d %s %d %d %s %d %d %d,sumi.room_ID,sumi.tel,sumi.price,sumi.sign,sumi.Client_list.name,sumi.Client_list.sex,sumi.Client_list.age,sumi.Client_list.ID_card,sumi.Client_list.year,sumi.Client_

9、list.month,sumi.Client_list.date);在括号中的第一项要指出文件的位置,但在编程时由于对函数的不熟悉而造成了遗漏此项,耽误了很多时间。2.在查询函数中遇到了文件写入出错的问题在从文件向指定结构体数组里写入数据时一开始是用以下代码: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);这段代码段来实现写入数据,但这个代码段是以数据块的形式写入,不能准确断定文件的开头和结

10、尾从而导致输出乱码。七、结论首先是整个系统比较适合小型的宾馆客房使用。没有过多的其他附加功能,只是简单的将如何添加、删除、修改,查询功能实现,然后在此基础上进行了递阶性的开发,比如将查询功能方式扩展成按姓名查询和按房间号码查询两种。修改函数中将修改部分逐一展开方便用户选择性修改,使修改的目的性增强,添加函数中实现了已住房间信息和未住房间信息分开显示的功能删除函数中利用了后一个结构体数组数据覆盖前一结构体数组数据的方法。为了更好的展现该系统,考虑用户的使用的方便以及网络因素,系统采用的是单一的页面反复使用,更好的实现了系统的连接性。开发过程中,由于是开发者自身的设计和编写,所以在某些功能上可能与

11、实际的需求有出入,主要是在是技术上和需求分析上问题。因此该系统还是有尚需要改进的部分,主要有按姓名查询和删除功能编辑的不是很完善与现实有冲突。附录(程序源代码):#include#include#include#define N 50int nownumber=3;int left=47;struct Clientchar name20;int sex;int age;char ID_card20;int year;int month;int date;struct Hotelint room_ID;int tel;int price;int sign;struct Client Client

12、_list;sumN;main()int i;char c;FILE *fp;void menu();void enter();void search();void modify();void leave();printf(nnnnt-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-);printf(nnnttWelcome to the systerm of hotel management!nttt(欢迎来到酒店客房管理系统)nnn);printf(t-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

13、-*-*-*-*-*-*-*-*-*-*-*-nnn);printf(tt你想新建文件吗?:(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(d:ff.txt,w)=NULL)printf(nCan not open the file!n);exit(0); fprintf(fp,房间号码 电话号码 价格 标记 姓名 性别 年龄 身份证号码 年 月 日n);for(i=0;iN;i+)fprintf(

14、fp,%d %d %d %d %s %d %d %s %d %d %dn,sumi.room_ID,sumi.tel,sumi.price,sumi.sign,sumi.Client_list.name,sumi.Client_list.sex,sumi.Client_list.age,sumi.Client_list.ID_card,sumi.Client_list.year,sumi.Client_list.month,sumi.Client_list.date);fclose(fp);else if(fp=fopen(d:ff.txt,r)=NULL)printf(nCan not op

15、en the file!n);exit(0); for(i=0;iN;i+)fscanf(fp,%d %d %d %d %s %d %d %s %d %d %d,&sumi.room_ID,&sumi.tel,&sumi.price,&sumi.sign,sumi.Client_list.name,&sumi.Client_list.sex,&sumi.Client_list.age,sumi.Client_list.ID_card,&sumi.Client_list.year,&sumi.Client_list.month,&sumi.Client_list.date);for(i=0;iN

16、;i+)if(sumi.sign)left-;fclose(fp);menu();void menu()int n,a;doprintf(nnnnt*MENU*nn);printf(ttt 1.New customer (添加新用户)nn);printf(ttt 2.Search room (查询房间信息)nn);printf(ttt 3.Modify customer(修改用户信息)nn);printf(ttt 4.Leave (离开删除)nn);printf(ttt 5.Exit (退出程序)nnn);printf(t*nn);printf(You choose number(1-5) b

17、b);scanf(%d,&n);if(n5)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:search();break;case 3:modify();break;case 4:leave();break;case 5:exit(0);break;void enter()FILE *fp; char z100;char x100;char q100;char w100;char r100;char

18、g100;char j100;char k100;char l100;char m100;char v100;char buffer1000;char c;int u;int i;int t;int e;doif(fp=fopen(d:ff.txt,r)fscanf(fp,%s %s %s %s %s %s %s %s %s %s %s,z,x,q,w,r,g,j,k,l,m,v);printf(%s %s %s %s %s %s %s %s %s %s %sn, z,x,q,w,r,g,j,k,l,m,v);for(u=0;unownumber;u+)fgets(buffer,100,fp)

19、;fscanf(fp,%d %d %d %d %s %d %d %s %d %d %d,&sumu.room_ID,&sumu.tel,&sumu.price,&sumu.sign,sumu.Client_list.name,&sumu.Client_list.sex,&sumu.Client_list.age,sumu.Client_list.ID_card,&sumu.Client_list.year,&sumu.Client_list.month,&sumu.Client_list.date);printf( %d %d %d %d %s %d %d %s %d %d %dn,sumu.

20、room_ID,sumu.tel,sumu.price,sumu.sign,sumu.Client_list.name,sumu.Client_list.sex,sumu.Client_list.age,sumu.Client_list.ID_card,sumu.Client_list.year,sumu.Client_list.month,sumu.Client_list.date);elseprintf(can not open the file.);printf(n已经住人房间的基本信息n);printf(n以下是未住人房间的基本信息n);fscanf(fp,%s %s %s %s %s

21、 %s %s %s %s %s %s,z,x,q,w,r,g,j,k,l,m,v);printf(%s %s %s %s %s %s %s %s %s %s %sn, z,x,q,w,r,g,j,k,l,m,v);for(u=nownumber;u=1&e=N)e-;if(sume.sign=0)printf(n 请输入姓名:);scanf(%s,sume.Client_list.name);printf(nt请输入性别:(1 stands for F,2 stands for M);scanf(nt%d,&sume.Client_list.sex);printf(nt请输入年龄:);scan

22、f(%d,&sume.Client_list.age);printf(nt请输入身份证号:);scanf(%s,sume.Client_list.ID_card);printf(nt入住日期(year month date-For example:2009 7 24):);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(n 姓名 性别 年龄 身份证号码 年/月/日 n);pri

23、ntf( %st%dt%dt%s,sume.Client_list.name,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):);getchar();c=getchar();if(c=y)sume.sign=1;nownumber+;left-;if(fp=fopen(file.txt,w)=NULL

24、)printf(nCan not open the file!n);exit(0); for(i=0;iN;i+)fprintf(fp,%d %d %d %d %s %d %d %s %d %d %d,sumi.room_ID,sumi.tel,sumi.price,sumi.sign,sumi.Client_list.name,sumi.Client_list.sex,sumi.Client_list.age,sumi.Client_list.ID_card,sumi.Client_list.year,sumi.Client_list.month,sumi.Client_list.date)

25、;printf(n Successful O(_)O!n);printf( 你房间的电话号码是:%dnt 电话号码是:%dnt 价格:%d,sume.room_ID,sume.tel,sume.price);fclose(fp);else printf(n Sorry!这个房间已经住人!nn);elseprintf(n Wrong number!n);printf(nntttt再一次输入吗?(y/n):);getchar();c=getchar();if(c=y) t=1;else t=0;while(t);printf(Print any key to continue .n);getch(

26、);menu();void search()char z100;char x100;char q100;char w100;char r100;char g100;char j100;char k100;char l100;char m100;char v100;char name20;int u;char buffer1000;FILE *fp;int o,i,a;char c;printf(tt1.按房间号码查询ntt2.按姓名查询n);printf(请选择查询的方式: bb);scanf(%d,&i);switch(i)case 1:if(fp=fopen(d:ff.txt,r)int

27、u;fscanf(fp,%s %s %s %s %s %s %s %s %s %s %s,z,x,q,w,r,g,j,k,l,m,v);for(u=0;uN;u+)fgets(buffer,100,fp);fscanf(fp,%d %d %d %d %s %d %d %s %d %d %d,&sumu.room_ID,&sumu.tel,&sumu.price,&sumu.sign,sumu.Client_list.name,&sumu.Client_list.sex,&sumu.Client_list.age,sumu.Client_list.ID_card,&sumu.Client_lis

28、t.year,&sumu.Client_list.month,&sumu.Client_list.date);elseprintf(can not open the file.);for(u=0;uN;u+)printf(%dn,sumu.room_ID);printf(请输入要查询的房间号码?:Room bbbb,N);scanf(%d,&o);for(u=0;uN;u+)if(sumu.room_ID=o)break;if(u=N)printf(没有您要查询的信息nn);search();elseprintf(房间号码 %d:nt姓名:%snt性别:%d (1 stand for 女,2

29、stand for 男)nt年龄:%dnt身份证号:%snt入住时间:%d.%d.%dn,o,sumu.Client_list.name,sumu.Client_list.sex,sumu.Client_list.age,sumu.Client_list.ID_card,sumu.Client_list.year,sumu.Client_list.month,sumu.Client_list.date);printf(This rooms telephone number:%dntttprice:%dnt,sumu.tel,sumu.price);if(sumu.sign)printf(n已经

30、被占用!nn);elseprintf(nt空房间!t你准备预定吗?(y/n) bb);getchar();c=getchar();printf(n);if(c=y)enter();fclose(fp);printf(Print any key to continue .n);getch();menu();case 2:printf(请输入要查询的姓名:name bbbb);scanf(%s,name);if(fp=fopen(d:ff.txt,r)fscanf(fp,%s %s %s %s %s %s %s %s %s %s %s,z,x,q,w,r,g,j,k,l,m,v);for(u=0;

31、uN;u+)fgets(buffer,100,fp);fscanf(fp,%d %d %d %d %s %d %d %s %d %d %d,&sumu.room_ID,&sumu.tel,&sumu.price,&sumu.sign,sumu.Client_list.name,&sumu.Client_list.sex,&sumu.Client_list.age,sumu.Client_list.ID_card,&sumu.Client_list.year,&sumu.Client_list.month,&sumu.Client_list.date);elseprintf(can not op

32、en the file.);for(i=0;iN;i+)if(strcmp(name,sumi.Client_list.name)=0)break;if(i=N)printf(对不起,没有找到你要查询的信息。n);search();elseprintf(房间号码 %d:nt姓名:%snt性别:%d (1 stand for 女,2 stand for 男)nt年龄:%dnt身份证号:%snt入住时间:%d.%d.%dn,sumi.room_ID,sumi.Client_list.name,sumi.Client_list.sex,sumi.Client_list.age,sumi.Client

33、_list.ID_card,sumi.Client_list.year,sumi.Client_list.month,sumi.Client_list.date);printf(This rooms telephone number:%dntttprice:%dnt,sumi.tel,sumi.price);if(sumi.sign)printf(n已经被占用!nn);elseprintf(nt空房间!t你准备预定吗?(y/n) bb);getchar();c=getchar();printf(n);if(c=y)enter();fclose(fp);printf(Print any key

34、to continue .n);getch();menu();void modify()char z100;char x100;char q100;char w100;char r100;char g100;char j100;char k100;char l100;char m100;char v100;int u;char buffer1000;FILE *fp;int i,n,t,a;char c;printf(请输入你准备修改的房间号码:(1-%d)Room bb,N);scanf(%d,&n);n-;if(fp=fopen(d:ff.txt,r)int u;fscanf(fp,%s

35、%s %s %s %s %s %s %s %s %s %s,z,x,q,w,r,g,j,k,l,m,v);printf(%s %s %s %s %s %s %s %s %s %s %sn, z,x,q,w,r,g,j,k,l,m,v);for(u=0;unownumber;u+)fgets(buffer,100,fp);fscanf(fp,%d %d %d %d %s %d %d %s %d %d %d,&sumu.room_ID,&sumu.tel,&sumu.price,&sumu.sign,sumu.Client_list.name,&sumu.Client_list.sex,&sumu

36、.Client_list.age,sumu.Client_list.ID_card,&sumu.Client_list.year,&sumu.Client_list.month,&sumu.Client_list.date);printf( %d %d %d %d %s %d %d %s %d %d %dn,sumu.room_ID,sumu.tel,sumu.price,sumu.sign,sumu.Client_list.name,sumu.Client_list.sex,sumu.Client_list.age,sumu.Client_list.ID_card,sumu.Client_list.year,sumu.Client_list.mo

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 应用文书 > 技术指导

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服