1、*实践教学*兰州理工大学计算机与通信学院2012年春季学期数据结构 课程设计题 目: 宾馆客房管理系统 专业班级: 姓 名: 学 号: 指导教师: 成 绩: 目 录摘 要11.采用类c语言定义相关的数据类型22.各模块的伪码算法23.函数的调用关系图64.调试分析65.测试结果76.源程序(带注释)10总 结15参考文献16致 谢17附件 任务一源程序代码18摘 要为了实现酒店能够及时地录入客房和顾客信息,以备对客房的各项管理,实现顾客的定房、推房操作。以简单,易读友好的界面面向用户,以易于理解的方式提醒用户如何操作。该程序以菜单的形式清楚地展示在DOS环境下系统的各块的功能,当录入的住房和顾
2、客信息需要修改,删除,查询等时如何进行操作。该系统满足了客房管理的基本要求,以简单的思维方式展示界面,尽量满足用户的要求。关键词: 信息管理311. 采用类c语言定义相关的数据类型顾客类(person)的成员:1、 NO(顾客编号),int2、 Name(顾客姓名),char3、 ID(顾客身份证号),int4、 Intime(入住时间),int5、 Outtime(离开时间),int6、 Borrow(所住房间),int房间类(room)的成员:1、 NO(房间编号),int2、 Price(住宿费),int3、 Level(房间等级),char2. 各模块的伪码算法1) 房间类privat
3、e:int state;int NO/住房编号int price;/住宿费char level20;/级别public:Room()/构造函数int getstate() return state; int getNO() return NO; /获取住房编号int getprice() return price;/获取住宿费char *getlevel() return level/获取房间级别void setprice(int pri)/设置住宿费void setlevel(char le)/设置等级void delroom()state=1;/删除void addroom(int n,i
4、nt pri,char *le)/增加房间int borrowroom()/入住void retroom()/退房void disp()/输出2) 房间数据类class RDatabaseprivate:int top; /住房记录指针Room roomMaxr; /住房记录public:RDatabase()/将book.txt读到book中void clear()/清除所有信息int addroom(int n,int prichar *le)/增加房间Room *query(int roomID)/查找住房void roomdata();/住房库维护void disp()RDatabas
5、e()/析构函数,将book写到book.txt文件中其中:void roomdata()实现对住房信息的增加,更改,删除,查找,显示,清除信息功能。3) 顾客类:class Personprivate:int stateint NO /顾客编号char name20; /顾客姓名long ID /顾客身份证号int borroom;/所住房间int intime;/入住时间int outtime; /离开时间public:Person() int getstate () return state;int getNO() return NO;/获取顾客编号char *getname() ret
6、urn name;int getID() return ID;/获取顾客身份证号int getintime()return intime;/获取入住时间int getouttime()return outtime;/获取离开时间void setname(char na) /设置姓名void setID(char i) /设置身份号void setborroom(char bor) /设置预定房间void setintime(char in) /设置入住时间void setouttime(char out) /设置离开时间void delroom() state=1; void addperso
7、n(int n,char *na,long i,int in,int out,int bor)/增加顾客void borrowroom(int roomID) /定房int retroom(int roomID) /退房void disp() /显示信息4) 顾客数据类class PDatabaseprivate:int top; /顾客记录指针Person perMaxp;/顾客记录public:PDatabase() /将reader.txt读到read中void clear()/清除所有顾客信息int addperson(int n,char *na,long i,int in,int
8、out,int bor)/添加顾客时先查找是否存在Person *query(int personNO)/按编号查找Person *queryn(char personname20)/按姓名查找Person *queryi(int personID)/按身份证号查找void disp() /显示信息void persondata();/顾客数据操作PDatabase() /将read写到reader.txt文件中其中void persondata()实现对顾客信息的增加,更改,删除,查找,显示,清除功能。主模块3. 函数的调用关系图菜单模块退出房间管理查询浏览顾客管理4. 调试分析在显示顾客的
9、所有信息时,只能同时显示住房的编号,不能同时把住房的所有信息显示。顾客类和住房类之间没能很好的沟通。在程序的严谨性和规范化上还不是很好。按姓名查询的时候如果姓名一样,则只能显示一个,不能够将所有的信息都显示出来。算法的时间复杂度:时间复杂度为O(n).5. 测试结果 图1(登录界面) 图2(房间管理) 图3(顾客管理) 图4(按房间编号查询浏览) 图5(按顾客信息查询浏览) 图6(退房管理) 图7(退出界面)6. 源程序(带注释)Person *query(int personno)/按编号查找for (int i=0;i=top;i+)if (peri.getNO()=personno &
10、peri.getstate()=0)return &peri;return NULL;Person *queryn(char personname20)/按姓名查找for (int i=0;i=top;i+)if (strcmp(peri.getname(),personname)=0)& peri.getstate()=0)return &peri;return NULL;Person *queryi(char personid20)/按身份证号查找for (int i=0;i=top;i+)if (strcmp(peri.getID(),personid)=0)& peri.getstat
11、e()=0)return &peri;return NULL;void disp() for (int i=0;i=top;i+) if (peri.getstate()=0) peri.disp(); void persondata();PDatabase() /将read写到reader.txt文件中fstream file(person.txt,ios:out); for (int i=0;i=top;i+)if (peri.getstate()=0)file.write(char *)&peri,sizeof(peri);file.close();void PDatabase:persondata() int choice;char pname20; int pno; char pid20; int pin,pout,pbor;Person *r;while (choice!=0) coutendlendl;cout 顾客管理 endlendl;cout 新增 2.- 更改 3.- 删除 4.-清除数据 0.- 退出 choice;switch (choice) case 0:cout已退出endl;break; case 1:cout pno;cout pname; cout输入顾客身份证号:; c
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1