宾馆管理

更新时间:2024-03-09 01:17:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

分类号 编 号

North China Institute of Water Conservancy and Hydroelectric Power

课 程 设 计

题目 宾馆管理信息系统

院 系 信息工程学院 专 业 计算机科学与技术

姓 名 学 号 指 导 教 师

2015年1月9日

目 录

一、课程设计题目.............................................................2

二、课程设计要求.............................................................2

三、小组成员分工及任务.................................................2

四、需求分析.....................................................................2

五、设计概述.....................................................................3

六、详细设计和源代码.....................................................3

七、运行结果与分析.........................................................15

八、程序设计总结.............................................................23

九、参考文献.....................................................................23

1

一、课程设计题目

宾馆管理信息系统

问题描述:入住或预订客房时,用户要对客户管理模块或预订管理模块进行核对审查,并进行登记;客户换房时,要对换房信息进行查询和更新;客户退房时,要进行结算,并对更新客房信息。 主要功能模块:

(1)登录模块:对用户身份进行验证,只有合法用户才能进入系统;

(2)系统管理模块:对系统用户进行管理,更改用户名、密码、权限等; (3)客房管理模块:对客房信息的添加、修改和删除等; (4)入住管理模块:对客户入住信息的登记、查询等功能 (5)订房管理模块:对客户订房信息的登记、查询等。 (6)换房管理模块:对客户换房信息的登记、查询等

(7)宾馆结算模块:对已入住宾馆的顾客进行结算及对订房客户已交的押金进行结算、查询。

二、课程设计要求

1、符合课题要求,实现各个模块的功能;

2、要求界面友好美观,操作方便易行; 3、注意程序的实用性、安全性;

4、设计成果:设计报告一份+源程序(能编译成可执行文件并能正常运行)

三、小组成员分工及本人任务

小组成员:

组长:李雍,负责模块为(1)登陆模块(2)系统管理模块(6)换房管理模块; 组内成员:岳艳,负责第(2)系统管理模块,第(7)宾馆结算模块; 组内成员:陈文思,负责第(4)入住管理模块,第(5)订房管理模块。

四、需求分析

总共分为四大块: 1、登陆和管理系统:。登陆之前必须先注册登陆账号和密码,同时账号、密码和权限均可修改,可在系统管理模块自主自改。登陆后,不同身份的人有不同的登陆权限,比如顾客只能进入入住管理模块,订房模块,以及换房模块,经理。。。。。员工。。。。

2、客房管理系统:首先,要有宾馆内部的客房管理模块,用来进行对客房信息的添加修改和删除;还要有换房管理,用来对客户换房信息的登记、查询。

3、客户管理系统:与客户有关的模块有,入住管理模块,用来对客户入住信息的登记、查询;订房管理模块,用来进行对客户订房信息的登记、查询。

4、结算管理:用来来对已入住宾馆的顾客消费进行结算及对订房客户已交的押金进行结算、查询。

2

五、设计概述

针对题目中的要求,我们定义了三个结构体。

一个用来表示客房信息,一个用来表示客户信息,另一个用来表示宾馆信息。在我负责的部分里,主要用到了customer,即用来表示客户信息的结构体,里面有客户姓名,身份证号,性别,联系电话,年龄,押金,入住天数,房间编号,房间标准,房间价格,以及是否入住/订房。其中变量为客户姓名、性别、身份证号、联系方式、房间编号、房间标准定义为字符串类型,长度最大值均为20;还有押金、年龄、入住天数、房间价格等变量定义为整型。添加时还有一些警告提示来控制输入格式,如性别的输入,只能为“男”或“女”;身份证号和联系电话长度均有限制,电话输入必为11位,身份证号必须为10位;房间号只能是3位,房间标准只能为“普通”“标准”“家庭”“豪华”;至于是否入住/订房这个变量,规定:在入住模块里,当变量KFISoccupy值为1时,表示已经入住,为2时表示其他情况(此时可能已经订房未入住或者由于其他原因未按规定时间入住);在订房模块里,当变量KFISoccupy值为2时,表示已经订过房间且还没有入住,当KFISoccupy值为1时,则表示其他情况(可能已经还没订过房间或者已经入住的情况)。

整体结构为:1、总页面——订房模块系统,入住模块系统,退出。

2、入住模块系统页面——登记入住信息,查询入住信息,退出。 查询已入住的信息页面——按姓名查询,按房号查询,返回。 3、订房模块系统页面——添加订房信息,查询订房信息,退出。 查询已订房的客户信息——按姓名查询,按房号查询,返回。

六、详细设计和源代码:

#include #include #include #include

#define maxsize 200//最大客户量 #define N 20//字符串长度 struct customer//客户信息 {

char KFstandar[N];//房间标准 int KFprice;//房间价格

char KFmumber[N];//房间编号 int KFISoccupy;//是否入住 char name[N];//用户姓名 char sex[N];//性别 char ID[N];//身份证号 char tel[N];//电话 int pmoney;//押金 int age;//年龄

int rday;//住的天数

3

}cus[maxsize]; #define PRI1 printf

(\

int sum;//全局变量,用来记录添加的客户个数,方便读写文件,主要用于入住管理模块

int sum1;//全局变量,用来记录添加的客户个数,方便读写文件,主要用于订房管理模块

void save(int sum)//把登记信息写入文件中 {

FILE *fp; int i;

if((fp=fopen(\ printf(\不能打开文件!\\n\ for(i=0;i

if(fwrite(&cus[i],sizeof(struct customer),1,fp)!=1) printf(\写文件错误!\\n\ fclose(fp); }

void add()//添加入住信息 {

int i=sum;//防止覆盖 system(\

printf(\请添加登记入住的客户信息:---**********\\n\ printf(\ <输入客房编号为0退出>! \\n\menu100:

printf(\ 登记客户信息(最多%d种)\\n\\n\ printf(\客户姓名:\ scanf(\menu1:

printf(\性别:\

scanf(\

if(strcmp(\男\女\ {printf(\必须输入“男”或“女”!\\n\ goto menu1;}

menu2:printf(\身份证号:\

4

scanf(\

if(strcmp(\男\女\ {printf(\必须输入“男”或“女”!\\n\ goto menu11;} menu12:

printf(\身份证号:\ scanf(\ for(int m=0;m<10;m++)

if (cus[i].ID[m]<48||cus[i].ID[m]>57)

{ printf(\身份证号格式不符合,请重新输入!\\n\ goto menu12;} menu13:

printf(\电话:\

scanf(\ for(int h=0;h<10;h++)

if (cus[i].tel[h]<48||cus[i].tel[h]>57)

{ printf(\电话格式不符合,请重新输入!\\n\ goto menu13;} menu14:

printf(\年龄:\

scanf(\

if(cus[i].age<0||cus[i].age>150)

{ printf(\年龄不符合,请重新输入!\\n\ goto menu14; } menu15:

printf(\押金(100,150,180,200):\ scanf(\ );

if(cus[i].pmoney!=100&&cus[i].pmoney!=150&&cus[i].pmoney!=180&&cus[i].pmoney!=200)

{ printf(\押金不符合,请重新输入!\\n\ goto menu15; } menu16:

printf(\房号(3位):\

scanf(\ if(strlen(cus[i].KFmumber)!=3)

{ printf(\房号不符合,请重新输入!\\n\ goto menu16; } printf(\价钱:\

scanf(\ ); menu17:

printf(\客房标准:<普通,标准,家庭,豪华>:\

10

scanf(\ );

if(strcmp(\普通\strcmp(\标准\strcmp(\家庭\strcmp(\豪 华\ { printf(\标准不符合,请重新输入!\\n\ goto menu17; } printf(\入住天数:\

scanf(\ ); menu18:

printf(\是否入住(1没有订房,2已订房):\\n\ scanf(\

if(cus[i].KFISoccupy!=1&&cus[i].KFISoccupy!=2) { printf(\不正确,请重新输入!\\n\ goto menu18; } printf(\添加成功!\\n\ getchar();

printf(\想继续注册请按0 返回请按任意键\\n\ if(getchar()=='0') { i++;

goto menu200; } sum1=i; }

int read_book()//从文件中读取入住信息 {

FILE *fp; int i=0;

if((fp=fopen(\ {

printf(\暂时还没有任何信息,按任意键进入主菜单选择注册'--\\n\\n\ return 0;}

while(feof(fp)!=1)

{ fread(&cus[i],sizeof(struct customer),1,fp); if(cus[i].KFprice==0) break; Else i++; } fclose(fp); return (i); }

void select_name_book()//按姓名查询订房 {

char ch[10],a[N];

11

int i;

printf(\按客户姓名查询已订房的客户信息******---\\n\\n\ system(\menu25:

printf(\输入你所查找的姓名:\\n\ scanf(\

for(i=0;i

{ if(strcmp(a,cus[i].name )==0 && cus[i].KFISoccupy ==2)//已找到 { PRI1;

printf(\客户姓名:%s \ printf(\性别:%s \ printf(\:%s \ printf(\电话:%s \\n\

printf(\年龄:%d \ printf(\押金:%d \ printf(\房号:%s \\n\ printf(\价钱:%d \ printf(\标准:%s \ printf(\入住天数:%d \\n\ printf(\客户已订房 \ PRI1; break;}} if (i==sum1)

printf(\该用户没有订房!\\n\ printf(\要继续查找吗?(Y/N)\ scanf(\

if(strcmp(\ { printf(\ <继续>!\\n\ goto menu25; }

printf(\按任意键返回上一层>~~~~~~~~!\\n\ getch(); }

void select_KFmumber_book()//按房号查询 { char ch[10],b[N]; int i;

printf(\按房号查询已订房的客户信息*************---\\n\\n\ system(\menu28:

printf(\输入你所查找的房号:\\n\ scanf(\

12

for(i=0;i

{ if(strcmp(b,cus[i].KFmumber )==0 && cus[i].KFISoccupy ==2)//已找到 { PRI1;

printf(\客户姓名:%s \ printf(\性别:%s \ printf(\:%s \ printf(\电话:%s \\n\

printf(\年龄:%d \ printf(\押金:%d \ printf(\房号:%s \\n\ printf(\价钱:%d \ printf(\标准:%s \ printf(\入住天数:%d \\n\ printf(\客户已订房\ PRI1; break;} } if (i==sum1)

printf(\该用户没有订房!!\\n\ printf(\要继续查找吗?(Y/N)\ scanf(\

if(strcmp(\ { printf(\ <继续>!\\n\ goto menu28; }

printf(\按任意键返回上一层>~~~~~~~~!\\n\ getch(); }

void select_book() {

int ch; do

{ system(\ PRI1;

printf(\查询已订房的客户信息--------****--------\\n\\n\ printf(\ 1. 按姓名查询:\\n\\n\ printf(\ 2. 按房号查询:\\n\\n\ printf(\ 0. 返回主菜单:\\n\\n\ printf(\ 用数字键选择(0--3):\\n\\n\ PRI1;

scanf(\ switch(ch)

13

{ case 1:select_name_book();break;

case 2:select_KFmumber_book();break; case 0:break; } }while(ch!=0); }

void book() { int ch; menu:

sum1=read_book(); system(\

printf(\\\n\\n 订房管理模块 \\n\\n\

printf(\ -------******-------*请选择0,1或2******-------******-------\\n\ printf(\ 1. 添加订房信息:\\n\ printf(\ 2. 查询订房信息:\\n\ printf(\ 0. 退出:\\n\ PRI1;

scanf(\ switch(ch)

{ case 1:add_book();break; case 2:select_book();break; case 0:goto menu30;break; } save_book(sum1);

printf(\以上信息已保存!--(名称:book.txt)\\n\ goto menu; menu30:; }

void main() { int ch; menu30:

system(\

printf(\ 欢迎登陆入住、订房管理模块 \\n\\n\ printf(\请选择0,1或2******-------******-------\\n\ printf(\ 1. 入住管理模块:\\n\ printf(\ 2. 订房管理模块:\\n\ printf(\ 0. 退出:\\n\ PRI1;

scanf(\ switch(ch)

{ case 1:ruzhu();break; case 2:book();break; case 0:system(\

14

printf(\谢谢使用^_^------******-------\\n\\n\\n\ }

goto menu30; }

七、运行结果与分析

1、主页面

2、进入入住管理模块

15

3、添加入住信息

4、查询信息界面

16

5、按姓名查找入住信息。

17

6、按房号查询入住信息。

7、订房管理模块页面

18

8、添加订房信息

19

9、按姓名查询订房信息

10、按房号查询订房信息

20

接10、按房号查询订房信息

11、入住信息-文件“hello”:

再次添加入住信息“妮妮”之后:

21

直接查询文件“hello”得到的查询结果:

12、订房信息-文件“book”

再添加订房信息“Jack”后:

直接查询文件“book”得到的查询结果:

22

八、课程设计总结

为期两周的数据结构课程设计结束了,根据它的要求,是让小组结合,针对具体的实践项目来进行。我们小组拿到的题目是设计一个宾馆管理系统,主要包含有关客房、客户的管理,在客房的管理中就要有对客房的增添,查询以及调配,致力于在各种情况下都能满足客户的退、订、换房需求。登录系统我们设计的是最不同身份的认定,登陆之前必须要有注册账号,以不同的身份注册会有不一样的权限,比如顾客是无法访问内部的结算系统模块,而经理只需要查看宾馆的内部管理,每月收支,而不必关心用户的细节问题,因为用户的服务完全可由员工负责,因此,员工所既有的 权限最大。在做这个设计之前,我和小组的伙伴们讨论了很久有关需求分析的问题,因为对需求分析的定位决定了我们对各自任务的分配,最后在已到了各种困难之后完成了各自的部分,并最后融合为一个主系统。之前有不少问题把我们困扰的焦头烂额,但是现在看来,感触颇多,因为我们从中学到了很多,我们尝到了付出后收获的甘甜。

下面简要说一下我负责的入住、订房模块中遇到过一些疑问以及不足。首先,在返回主界面的时候,因为有两层,返回的时候的要一层一层的进行,比如在入住模块查询过后,需要键入0来返回到最初进入的主界面,可是我在进行的时候总是无法正确返回,经过一番思考,才知道原来是没有明确告诉程序应该返回到主页面而不是直接结束,于是我在主页面设置了一个menu30,退出时goto menu30就可以了,灵活的应用menu语句也是在这次课程设计新学到的,很好用。还有一个令我印象深刻的就是读写文件的时候,第一次在终端写入的能正确读出,而再次就显示错误,经过一番检查后才,才知道在添加函数add(add_book)首句添加i=sum后才能实现多次正确添加。最后,虽然这两个模块在经过我一番番修改后,但我深知还不是最完美的,但是我不会放弃,接下来我会尽一步完善它,总之,通过这次课程设计,学到了很多,我会继续努力的!

九、参考文献

【1】谭浩强著.C程序设计(第四版).北京:清华大学出版社,2010

【2】李春葆主编.数据结构教程(第四版).北京:清华大学出版社,2013

23

本文来源:https://www.bwwdw.com/article/wz3a.html

Top