宾馆客房管理系统说明书.doc
《宾馆客房管理系统说明书.doc》由会员分享,可在线阅读,更多相关《宾馆客房管理系统说明书.doc(34页珍藏版)》请在冰豆网上搜索。
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2012年春季学期
数据结构课程设计
题目:
宾馆客房管理系统
专业班级:
姓名:
学号:
指导教师:
成绩:
目录
摘要 1
1. 采用类c语言定义相关的数据类型 2
2. 各模块的伪码算法 2
3. 函数的调用关系图 6
4. 调试分析 6
5. 测试结果 7
6. 源程序(带注释) 10
总结 15
参考文献 16
致谢 17
附件Ⅰ任务一源程序代码 18
摘要
为了实现酒店能够及时地录入客房和顾客信息,以备对客房的各项管理,实现顾客的定房、推房操作。
以简单,易读友好的界面面向用户,以易于理解的方式提醒用户如何操作。
该程序以菜单的形式清楚地展示在DOS环境下系统的各块的功能,当录入的住房和顾客信息需要修改,删除,查询等时如何进行操作。
该系统满足了客房管理的基本要求,以简单的思维方式展示界面,尽量满足用户的要求。
关键词:
信息管理
31
1.采用类c语言定义相关的数据类型
顾客类(person)的成员:
1、NO(顾客编号),int
2、Name(顾客姓名),char
3、ID(顾客身份证号),int
4、Intime(入住时间),int
5、Outtime(离开时间),int
6、Borrow(所住房间),int
房间类(room)的成员:
1、NO(房间编号),int
2、Price(住宿费),int
3、Level(房间等级),char
2.各模块的伪码算法
1)房间类
private:
intstate;
intNO//住房编号
intprice;//住宿费
charlevel[20];//级别
public:
Room(){}//构造函数
intgetstate(){returnstate;}
intgetNO(){returnNO;}//获取住房编号
intgetprice(){returnprice;}//获取住宿费
char*getlevel(){returnlevel}//获取房间级别
voidsetprice(intpri)//设置住宿费
voidsetlevel(charle[])//设置等级
voiddelroom(){state=1;}//删除
voidaddroom(intn,intpri,char*le)//增加房间
intborrowroom()//入住
voidretroom()//退房
voiddisp()//输出
2)房间数据类
classRDatabase
{
private:
inttop;//住房记录指针
Roomroom[Maxr];//住房记录
public:
RDatabase()//将book.txt读到book[]中
voidclear()//清除所有信息
intaddroom(intn,intprichar*le)//增加房间
Room*query(introomID)//查找住房
voidroomdata();//住房库维护
voiddisp()
~RDatabase()//析构函数,将book[]写到book.txt文件中
其中:
voidroomdata()实现对住房信息的增加,更改,删除,查找,显示,清除信息功能。
3)顾客类:
classPerson
{
private:
intstate
intNO//顾客编号
charname[20];//顾客姓名
longID//顾客身份证号
intborroom;//所住房间
intintime;//入住时间
intouttime;//离开时间
public:
Person(){}
intgetstate(){returnstate;}
intgetNO(){returnNO;}//获取顾客编号
char*getname(){returnname;}
intgetID(){returnID;}//获取顾客身份证号
intgetintime(){returnintime;}//获取入住时间
intgetouttime(){returnouttime;}//获取离开时间
voidsetname(charna[])//设置姓名
voidsetID(chari)//设置身份号
voidsetborroom(charbor)//设置预定房间
voidsetintime(charin)//设置入住时间
voidsetouttime(charout)//设置离开时间
voiddelroom(){state=1;}
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.函数的调用关系图
菜单模块
退出
房间管理
查询浏览
顾客管理
4.调试分析
在显示顾客的所有信息时,只能同时显示住房的编号,不能同时把住房的所有信息显示。
顾客类和住房类之间没能很好的沟通。
在程序的严谨性和规范化上还不是很好。
按姓名查询的时候如果姓名一样,则只能显示一个,不能够将所有的信息都显示出来。
算法的时间复杂度:
时间复杂度为O(n).
5.测试结果
图1(登录界面)
图2(房间管理)
图3(顾客管理)
图4(按房间编号查询浏览)
图5(按顾客信息查询浏览)
图6(退房管理)
图7(退出界面)
6.源程序(带注释)
Person*query(intpersonno)//按编号查找
{
for(inti=0;i<=top;i++)
if(per[i].getNO()==personno&&
per[i].getstate()==0)
{
return&per[i];
}
returnNULL;
}
Person*queryn(charpersonname[20])//按姓名查找
{
for(inti=0;i<=top;i++)
if((strcmp(per[i].getname(),personname)==0)&&
per[i].getstate()==0)
{
return&per[i];
}
returnNULL;
}
Person*queryi(charpersonid[20])//按身份证号查找
{
for(inti=0;i<=top;i++)
if((strcmp(per[i].getID(),personid)==0)&&
per[i].getstate()==0)
{
return&per[i];
}
returnNULL;
}
voiddisp()
{
for(inti=0;i<=top;i++)
if(per[i].getstate()==0)
{
per[i].disp();
}
}
voidpersondata();
~PDatabase()//将read[]写到reader.txt文件中
{
fstreamfile("person.txt",ios:
:
out);
for(inti=0;i<=top;i++)
if(per[i].getstate()==0)
file.write((char*)&per[i],sizeof(per[i]));
file.close();
}
};
voidPDatabase:
:
persondata()
{
intchoice;
charpname[20];
intpno;
charpid[20];
intpin,pout,pbor;
Person*r;
while(choice!
=0)
{
cout< cout<<"[顾客管理]"<cout<<"1.->新增2.->更改3.->删除4.->清除数据0.->退出"< cin>>choice;
switch(choice)
{
case0:
cout<<"已退出"< break;
case1:
cout<<"输入顾客编号:
";
cin>>pno;
cout<<"输入顾客姓名:
";
cin>>pname;
cout<<"输入顾客身份证号:
";
c