客房管理程序设计说明书

上传人:wuy****ng 文档编号:134647054 上传时间:2022-08-13 格式:DOC 页数:36 大小:153KB
返回 下载 相关 举报
客房管理程序设计说明书_第1页
第1页 / 共36页
客房管理程序设计说明书_第2页
第2页 / 共36页
客房管理程序设计说明书_第3页
第3页 / 共36页
点击查看更多>>
资源描述
目 录一、设计题目1二、设计目的1三、设计分析1四、总体设计1五、详细设计3六、程序调试7七、结论8一、设计题目 简单的宾馆客房管理系统设计二、设计目的1. 运用已学过的知识进行一个简单的应用程序的开发。2. 基本掌握设计课题的基本步骤和方法。3. 掌握应用系统开发中的需求分析与数据库设计方法。4. 基本掌握应用系统开发中设计文档的编制。三、设计分析本系统是在vc6.0的环境下进行开发的。系统按功能将分为四个模块,分别为查询模块,修改模块,删除模块,添加模块四部分。以上功能将通过为四个函数实现,其中查询函数拟可以实现按姓名查询和按房间号码查询。修改函数拟可以实现全部选项的修改并且选择一项后都会列出以前这项的存储信息。删除函数将实现了后一个结构体数组的数据来覆盖前一个结构体数组数据以达到删除的效果。添加函数拟实现分别列出已住房间的详细信息和未住房间的详细信息以供用户选择。四、总体设计(1)用户登录时将会选择y或n,y表示用户第一次使用此系统,这时我们需要将结构体数组数组的内容初始化,如果选择n则表示用户不是第一次使用该系统可以继续进行上一次的操作。(2)数据载入管理:系统的数据载入将是由文件写入定义的结构体数组数组里,这样方便了管理者维护和查询数据。 (3)可视化界面:为了方便管理者使用系统,系统的大多数界面将是采用汉英双字幕显示并且界面将简单明了的显示出各选项。(4)查询函数:查询函数中将提供按姓名查询和按房间号码查询两种方法以方便用户查询。(5)删除函数:在此函数中系统将利用后一个结构体数组的数据来覆盖前一个结构体数组数据以达到删除的效果,并同时改变此时房间的容纳量。(6)修改函数:首先从指定文件写入基本数据到指定的结构体数组,然后请用户输入想修改的房间号码,然后会列出修改的全部选项以供用户选择,并且选择一选项后都会列出以前这项的存储信息以方便用户修改。(7)添加函数:在添加函数里系统将会分别列出已住房间的详细信息和未住房间的详细信息以供用户方便的选择。在此函数中系统中添加了一些容错代码防止用户由于疏忽而导致的输入错误,比如判断用户输入的数据是否在系统容许的范围内,系统的系统功能结构图如图1所示。查询模块修改模块添加模块删除模块客房管理系统按姓名查询按房间号码查询修改用户信息添加新用户删除用户信息图1 系统功能结构图2. 结构体设计结构体中一共包含住户个人信息、客房基本信息这两部分。现在列举出了本系统比较重要的结构体数组的详细结构,包括字段名、数据类型以及它的说明,是否可以为空等。具体设计如下:如表1所示,该表用于记录本系统用到住户个人结构体数组里分量的基本信息,包括的分量项目有name、sex、age、id_card、year、month、date。表1住户个人结构体分量信息表字段名数据类型长度说明NameChar20姓名sexint4性别ageInt4年龄Id_cardChar20身份证号yearInt4年monthInt4月dateInt4日如表2所示,该表用于记录本系统用到的客房结构体数组里分量的基本信息,包括的分量项目有room_id、tel、price、sign。表2客房结构体分量信息表字段名数据类型长度说明Room_idChar20姓名telint4性别priceInt4年龄signChar20身份证号五、详细设计1.查询模块本系统分两种方式来完成查询功能即按姓名查询和按房间号码查询。在如图2所示界面中显示两种查询方式及信息,接收用户输入选项后进入相应查询界面。图 2查询函数功能图当用户选择1后进入按房间号码查询界面如图3所示。图 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.删除模块 在此函数中我们利用后一个结构体数组的数据来覆盖前一个结构体数组数据以达到删除的效果。如图5所示。图 5删除函数效果图3.修改模块首先从指定文件写入基本数据然后请用户输入想修改的房间号码然后会列出修改的全部选项并且每一项都会列出以前这项的存储信息以方便用户修改,其中选项包括房间号码、电话号码、价格、标记、姓名、性别、年龄、身份证号码、年、月、日。如图6所示。图6修改函数功能图 当你选择修改的选项后系统会列出以前此项的存储信息和“修改成功”的字样如图7所示。图7修改函数选项修改功能图4.添加模块在添加函数里系统会分别列出已住房间的详细信息和未住房间的详细信息以供用户方便的选择,如图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_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);这段代码段来实现写入数据,但这个代码段是以数据块的形式写入,不能准确断定文件的开头和结尾从而导致输出乱码。七、结论首先是整个系统比较适合小型的宾馆客房使用。没有过多的其他附加功能,只是简单的将如何添加、删除、修改,查询功能实现,然后在此基础上进行了递阶性的开发,比如将查询功能方式扩展成按姓名查询和按房间号码查询两种。修改函数中将修改部分逐一展开方便用户选择性修改,使修改的目的性增强,添加函数中实现了已住房间信息和未住房间信息分开显示的功能删除函数中利用了后一个结构体数组数据覆盖前一结构体数组数据的方法。为了更好的展现该系统,考虑用户的使用的方便以及网络因素,系统采用的是单一的页面反复使用,更好的实现了系统的连接性。开发过程中,由于是开发者自身的设计和编写,所以在某些功能上可能与实际的需求有出入,主要是在是技术上和需求分析上问题。因此该系统还是有尚需要改进的部分,主要有按姓名查询和删除功能编辑的不是很完善与现实有冲突。附录(程序源代码):#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_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-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-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(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 open 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;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) bb);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 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);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.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 %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请输入年龄:);scanf(%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);printf( %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)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);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();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 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_list.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 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已经被占用!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;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 open 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_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 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 %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.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.month,sumu.Client_list.date);elseprintf(can not open the file.);do printf(你想修改哪一部分:nn);printf(nttt1.姓名nttt2.性别nttt3.年龄nttt4.身份证号nttt5.日期nttt6.电话号码nttt7.价格nttt8.放弃nnn);doprintf(n我选择 bb);scanf(%d,&t);if(t8)a=1;printf(n错误!nt请再次输入:(1-%d),房间 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: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(d:/ff.txt,r+)=NULL)printf(nCan not open the file!n);exit(0);fprintf(fp,房间号码 电话号码 价格 标记 姓名 性别 年龄 身份证号码 年 月 日n);for(i=0;inownumber;i+)fprintf(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);printf(nt修改成功!n);printf(nModify other?(y/n) bb);getchar(); c=getchar();while(c=y);fclose(fp);printf(nPrint any key to continue .n);getch();menu();void leave()int o,p,i; char a100;char b100;char c100;char d100;char e100;char f100;char j100;char k100;char l100;char m100;char z100;char buffer1000;FILE *fp;if(fp=fopen(d:ff.txt,r)int i;fscanf(fp,%s %s %s %s %s %s %s %s %s %s %s,a,b,c,d,e,f,j,k,l,m,z);printf(%s %s %s %s %s %s %s %s %s %s %sn,a,b,c,d,e,f,j,k,l,m,z);for(i=0;iN;i+)fgets(buffer,100,fp);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);printf( %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);elseprintf(can not open the file.);doprintf(请输入删除房间的房间号: bbbb);scanf(%d,&o);for(i=0;iN;i+)if(sumi.room_ID=o) break;if(i=N)printf(不在查询范围之内);p=1;elsep=0;while(p);for(;iN-2;i+)sumi=sumi+1;nownumber-;if(fp=fopen(d:ff.txt,r+)=NULL)printf(nCan not open the file!n);exit(0); fprintf(fp,房间号码 电话号码 价格 标记 姓名 性别 年龄 身份证号码 年 月 日n);for(i=0;iN;i+)fprintf(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);printf(删除成功!);printf(nnPrint any key to contimue .n);getch();menu();
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 中学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!