宾馆客房管理系统.docx

上传人:b****5 文档编号:11640657 上传时间:2023-03-29 格式:DOCX 页数:34 大小:74.82KB
下载 相关 举报
宾馆客房管理系统.docx_第1页
第1页 / 共34页
宾馆客房管理系统.docx_第2页
第2页 / 共34页
宾馆客房管理系统.docx_第3页
第3页 / 共34页
宾馆客房管理系统.docx_第4页
第4页 / 共34页
宾馆客房管理系统.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

宾馆客房管理系统.docx

《宾馆客房管理系统.docx》由会员分享,可在线阅读,更多相关《宾馆客房管理系统.docx(34页珍藏版)》请在冰豆网上搜索。

宾馆客房管理系统.docx

宾馆客房管理系统

*******************

实践教学

*******************

 

兰州理工大学

 

数据结构课程设计

 

题目:

专业班级:

_

姓名__

学号:

指导教师:

成绩:

___________

 

目录

摘要1

前言2

正文3

1.采用类c语言定义相关的数据类型3

2.各模块的伪码算法3

3.函数的调用关系图3

4.调试分析3

5.测试结果3

6.源程序(带注释)3

总结4

参考文献5

致谢6

附件Ⅰ部分源程序代码7

摘要

1〉需求概述:

试设计一客房管理系统,能提供下列服务:

(1)录入顾客信息(顾客信息用文件保存)

(2)浏览顾客信息

(3)查询顾客信息:

按入住号查询

按身份证号查询

按房间查询

(4)定房和退房功能

2〉需求说明:

顾客信息包括顾客编号、姓名、身份证号、入住时间、离开时间、所住房间等,并且要求顾客号不重复;录入的顾客信息要求用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作;顾客信息的显式要求有一定的规范格式;对顾客信息能够分别按编号、姓名及身份证号方式进行查询,要求能返回所有符合条件的顾客的信息;对顾客信息的修改应逐个地进行,一个顾客信息的更改不应影响其他的顾客记录。

客房信息包括客房编号、价钱、等级、是否售出等信息,客房编

号不重复;录入的客房信息要求用文件形式保存,并可以对其进行浏

览、查询、修改、删除等基本操作;客房信息显示要有一定的规范格式;对客房信息的修改要逐个进行,一个客房信息的修改不影响其它客房信息。

所设计的系统应以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进行各种处理,并要求在此过程中能够尽可能的兼容用户使用过程中的异常情况

 

(三)问题分析:

1.设计主函数,以菜单的形式告诉用户系统的功能,以及输入0—4号数字功能键实现所需的功能.

2.如何将各个功能集于一函数之下(用SWITCH)语句调用各函数).

3.如何将大量信息简单方便地输入输出(利用类形式联系各种信息,可设计顾客类、顾客类库,客房类、客房类库).

4.如何实现功能函数的功能(可定义为类和类库中的成员函数).

可行性研究:

利用类的方式实现该编程,以对象的形式依次编写各类的内容。

 

关键词:

浏览;查询;修改;删除

 

前言

为了实现酒店能够及时地录入客房和顾客信息,以备对客房的各项管理,实现顾客的定房、推房操作。

以简单,易读友好的界面面向用户,以易于理解的方式提醒用户如何操作。

该程序以菜单的形式清楚地展示在DOS环境下系统的各块的功能,当录入的住房和顾客信息需要修改,删除,查询等时如何进行操作。

该系统满足了用户对客房管理的基本要求,以大众的思维方式将面向用户的界面展示,以最简单易读的程序面向用户,尽量满足用户的要求。

正文

1.采用类c语言定义相关的数据类型

顾客类的私有成员数据结构表

序号

成员名(字段名)

数据类型

长度

字段含义

1

no

int

2

编号

2

name[]

char

20

姓名

3

id

char

20

身份证号

4

intime

int

2

入住时间

5

outtime

int

2

离开时间

6

borroom

int

2

所住房间

 

数据测试表

no

name

id

intime

outtime

borroom

001

张强

371328198702204526

0110

0113

1

002

王雷

321545************

0220

0228

2

003

李梅

130********3215454

0212

0223

3

………

……

….

…….

…….

………

……

….

……..

…….

….

……..

……

….

……..

……

2).

住房类私有成员数据成员数据表

序号

成员名

数据类型

长度

字段含义

1

no

int

2

编号

2

money

int

2

住宿费

3

dengji[]

char

20

客房等级

4

onshelf

int

2

是否售出

3)数据测试表

no

money

dengji

Onshelf

001

300

A

已售

002

200

B

未售

003

100

C

未售

………

……

….

…….

………

……

….

……..

……..

……

….

……..

 

 

2.各模块的伪码算法

利用面向对象的方法,设计2个类(住房类和顾客类)及对应的类库,来实现对客房和顾客的管理。

1)定义住房类:

private:

inttag;//删除标记1:

已删0:

未删

intno;//住房编号

intmoney;//住宿费

 

chardengji[20];//等级

intonshelf;//是否售出1:

未售2:

已售

publid:

Room(){}//构造函数

intgettag(){returntag;}//获取删除标记

intgetno(){returnno;}//获取住房编号

intgetmoney(){returnmoney;}//获取住宿费

char*getdengji(){returndengji;}//获取住房等级

voidsetmoney(intmon)//设置住宿费

voidsetdengji(chardj[])//设置等级

voiddelroom(){tag=1;}//删除房间

voidaddroom(intn,intmon,char*dj)//增加房间

intborrowroom()//入住操作

voidretroom()//退房操作

voiddisp()//输出住房

2)住房库类,实现对住房的维护,查找,删除等

classRDatabase

{

private:

inttop;//住房记录指针

Roomroom[Maxr];//住房记录

public:

RDatabase()//构造函数,将book.txt读到book[]中

voidclear()//全删

intaddroom(intn,intmon,char*dj)//增加住房

Room*query(introomid)//查找住房

voidroomdata();//住房库维护

voiddisp()

~RDatabase()//析构函数,将book[]写到book.txt文件中

其中:

voidroomdata()实现对住房信息的增加,更改,删除,查找,显示,全删功能。

3)定义顾客类:

classPerson

{

private:

inttag;//删除标记1:

已删0:

未删

intno;//顾客编号

charname[20];//顾客姓名

longid;//顾客身份证号

intborroom;//所住房间

intintime;//入住时间

intouttime;//离开时间

public:

Person(){}

intgettag(){returntag;}//获取删除标记

intgetno(){returnno;}//获取顾客编号

char*getname(){returnname;}//获取姓名

intgetid(){returnid;}//获取顾客身份证号

intgetintime(){returnintime;}//获取入住时间

intgetouttime(){returnouttime;}//获取离开时间

voidsetname(charna[])//设置姓名

voidsetid(chari)//设置身份号

voidsetborroom(charbor)//设置预定房间

voidsetintime(charin)//设置入住时间

voidsetouttime(charout)//设置离开时间

voiddelroom(){tag=1;}//设置删除标记1:

已删0:

未删

voidaddperson(intn,char*na,longi,intin,intout,intbor)/增加顾客

voidborrowroom(introomid)//定房操作

intretroom(introomid)//退房操作

voiddisp()//读出顾客信息,通过循环将所有顾客信息都显示

4)顾客类库,实现建立顾客的个人资料

classPDatabase

{

private:

inttop;//顾客记录指针

Personper[Maxp];//顾客记录

public:

PDatabase()//构造函数,将reader.txt读到read[]中

voidclear()//删除所有读者信息

intaddperson(intn,char*na,longi,intin,intout,intbor)//添加读者时先查找是否存在

Person*query(intpersonno)//按编号查找

Person*queryn(charpersonname[20])//按姓名查找

Person*queryi(intpersonid)//按身份证号查找

voiddisp()//输出所有顾客信息

voidpersondata();//顾客库操作

 

~PDatabase()//析构函数,将read[]写到reader.txt文件中

其中voidpersondata()实现对顾客信息的增加,更改,删除,查找,显示,全删功能。

3.函数的调用关系图

1.1.   该系统可以按功能进行模块划分,其模块图如下

主模块

 

 

1新增

2更改

3删除

4查找

5显示

6全删

0退出

1新增

2更改

3删除

4查找

5显示

6全删

0退出

 

4.调试分析

a、调试中遇到的问题及对问题的解决方法

1.在显示顾客的所有信息时,只能同时显示住房的编号,不能同时把住房的所有信息显示。

顾客类和住房类之间没能很好的沟通。

2.在程序的严谨性和规范化上还不是很好。

3.没有设置密码,顾客和管理员都能对其进行操作。

因此该系统最好只有管理员可见,顾客只是进行咨询,不能直接操作.

4.按姓名查询的时候如果姓名一样,则只能显示一个,不能够将所有的信息都显示出来。

b、算法的时间复杂度和空间复杂度

时间复杂度为O(n).

空间复杂度

整个程序转为.C可执行后整体的空间复杂度为12.6kb.

5.测试结果

执行图示

如果选择1,则

例如:

继续选择5显示,则

 

如果选择2,则

选择3,则要求输入住房编号和顾客编号。

此项的目的是给住房设置标记,以确定该住房已售出。

选择4,也要求输入住房编号和顾客编号。

此项的目的是给住房设置标记,以确定该住房未售出。

选择0,则退出程序。

 

6.源程序(带注释)

程序源代码及注释

#include

#include

#include

#include//输入/输出文件流类

usingnamespacestd;

constintMaxp=100;//最多的顾客

constintMaxr=100;//最多的房间

//顾客类,实现对顾客的信息的描述

classPerson

{

private:

inttag;//删除标记1:

已删0:

未删

intno;//顾客编号

charname[20];//顾客姓名

charid[20];//顾客身份证号

intborroom;//所住房间

intintime;//入住时间

intouttime;//离开时间

public:

Person(){}

intgettag(){returntag;}//获取删除标记

intgetno(){returnno;}//获取顾客编号

char*getname(){returnname;}//获取姓名

char*getid(){returnid;}//获取顾客身份证号

intgetintime(){returnintime;}//获取入住时间

intgetouttime(){returnouttime;}//获取离开时间

voidsetname(charna[])//设置姓名

{

strcpy(name,na);

}

voidsetid(chari[])//设置身份号

{

strcpy(id,i);

}

voidsetborroom(charbor)//设置预定房间

{

borroom=bor;

}

voidsetintime(charin)//设置入住时间

{

intime=in;

}

voidsetouttime(charout)//设置离开时间

{

outtime=out;

}

voiddelroom(){tag=1;}//设置删除标记1:

已删0:

未删

voidaddperson(intn,char*na,char*i,intin,intout,intbor)//增加顾客

{

no=n;

strcpy(name,na);

strcpy(id,i);

intime=in;

outtime=out;

borroom=bor;

tag=0;

}

voidborrowroom(introomid)//定房操作

{

borroom=roomid;

return;

}

intretroom(introomid)//退房操作

{

if(borroom==roomid)

{

borroom=0;

return1;

}

return0;

}

voiddisp()//读出顾客信息

{

cout<<"顾客编号:

"<

"<

"<

"<

"<

cout<<"所住房间:

"<

}

 

};

//顾客类库,实现建立顾客的个人资料

classPDatabase

{

private:

inttop;//顾客记录指针

Personper[Maxp];//顾客记录

public:

PDatabase()//构造函数,将reader.txt读到read[]中

{

Persons;

top=-1;

fstreamfile("person.txt",ios:

:

in);//打开一个输入文件

while

(1)

{

file.read((char*)&s,sizeof(s));

if(!

file)break;

top++;

per[top]=s;

}

file.close();//关闭reader.txt

}

voidclear()//删除所有读者信息

{

top=-1;

}

intaddperson(intn,char*na,char*i,intin,intout,intbor)//添加读者时先查找是否存在

{

Person*p=query(n);

if(p==NULL)

{

top++;

per[top].addperson(n,na,i,in,out,bor);

return1;

}

return0;

}

Person*query(intpersonno)//按编号查找

{

for(inti=0;i<=top;i++)

if(per[i].getno()==personno&&

per[i].gettag()==0)

{

return&per[i];

}

returnNULL;

}

Person*queryn(charpersonname[20])//按姓名查找

{

for(inti=0;i<=top;i++)

if((strcmp(per[i].getname(),personname)==0)&&

per[i].gettag()==0)

{

return&per[i];

}

returnNULL;

}

Person*queryi(charpersonid[20])//按身份证号查找

{

for(inti=0;i<=top;i++)

if((strcmp(per[i].getid(),personid)==0)&&

per[i].gettag()==0)

{

return&per[i];

}

returnNULL;

}

voiddisp()//输出所有顾客信息

{

for(inti=0;i<=top;i++)

if(per[i].gettag()==0)

{

per[i].disp();

}

}

voidpersondata();//顾客库操作

~PDatabase()//析构函数,将read[]写到reader.txt文件中

{

fstreamfile("person.txt",ios:

:

out);

for(inti=0;i<=top;i++)

if(per[i].gettag()==0)

file.write((char*)&per[i],sizeof(per[i]));

file.close();

}

};

voidPDatabase:

:

persondata()

{

charchoice;

charpname[20];

intpno;

charpid[20];

intpin,pout,pbor;

Person*r;

while(choice!

='0')

{

cout<<"\n\t\t对顾客的操作:

\n\n\n\t\t1新增\n\n\t\t2更改\n\n\t\t3删除\n\n\t\t4查找\n\n\t\t5显示\n\n\t\t6全删\n\n\t\t0退出"<

cin>>choice;

switch(choice)

{

case'0':

cout<<"已退出"<

break;

case'1':

cout<<"输入顾客编号:

";

cin>>pno;

cout<<"输入顾客姓名:

";

cin>>pname;

cout<<"输入顾客身份证号:

";

cin>>pid;

cout<<"请输入入住时间:

";

cin>>pin;

cout<<"请输入离开时间:

";

cin>>pout;

cout<<"请输入房间号:

";

cin>>pbor;

addperson(pno,pname,pid,pin,pout,pbor);

break;

case'2':

cout<<"输入顾客编号:

";

cin>>pno;

r=query(pno);

if(r==NULL)

{

cout<<"该顾客不存在"<

break;

}

intk;

cout<<"输入要修改的内容:

1-姓名,2-身份证号,3-入住时间,4-离开时间,5-房间号,0-退出"<

cin>>k;

switch(k)

{

case0:

cout<<"已退出";

break;

case1:

cout<<"输入新的姓名:

";

cin>>pname;

r->setname(pname);

break;

case2:

cout<<"输入新的身份证号:

";

cin>>pid;

r->setid(pid);

break;

case3:

cout<<"输入新的入住时间:

";

cin>>pin;

r->setintime(pin);

break;

case4:

cout<<"输入新的离开时间:

";

cin>>pout;

r->setouttime(pout);

break;

case5:

cout<<"输入新的房间号:

";

cin>>pout;

r->setborroom(pbor);

break;

default:

cout<<"输入有误";

}

break;

case'3':

cout<<"输入顾客编号:

";

cin>>pno;

r=query(pno);

if(r==NULL)

{

cout<<"该顾客不存在"<

break;

}

r->delroom();

break;

case'4':

inti;

cout<<"请输入查找方式:

0-编号,1-姓名,2-身份证号:

"<

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1