宾馆客房管理系统说明书_第1页
宾馆客房管理系统说明书_第2页
宾馆客房管理系统说明书_第3页
宾馆客房管理系统说明书_第4页
宾馆客房管理系统说明书_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、*实践教学*兰州理工大学计算机与通信学院2012年春季学期数据结构 课程设计题 目: 宾馆客房管理系统 专业班级: 姓 名: 学 号: 指导教师: 成 绩: 目 录摘 要11.采用类c语言定义相关的数据类型22.各模块的伪码算法23.函数的调用关系图64.调试分析65.测试结果76.源程序(带注释)10总 结15参考文献16致 谢17附件 任务一源程序代码18摘 要为了实现酒店能够及时地录入客房和顾客信息,以备对客房的各项管理,实现顾客的定房、推房操作。以简单,易读友好的界面面向用户,以易于理解的方式提醒用户如何操作。该程序以菜单的形式清楚地展示在DOS环境下系统的各块的功能,当录入的住房和顾

2、客信息需要修改,删除,查询等时如何进行操作。该系统满足了客房管理的基本要求,以简单的思维方式展示界面,尽量满足用户的要求。关键词: 信息管理1. 采用类c语言定义相关的数据类型顾客类(person)的成员:1、 NO(顾客编号),int2、 Name(顾客姓名),char3、 ID(顾客身份证号),int4、 Intime(入住时间),int5、 Outtime(离开时间),int6、 Borrow(所住房间),int房间类(room)的成员:1、 NO(房间编号),int2、 Price(住宿费),int3、 Level(房间等级),char2. 各模块的伪码算法1) 房间类private:

3、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,int

4、 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()RDatabase(

5、)/析构函数,将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() retur

6、n 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 addperson(

7、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 ou

8、t,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(per

11、i.getID(),personid)=0)&& peri.getstate()=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)

12、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) cout<<endl<<endl;cout<<" 顾客管理 "<<endl<<endl;cout<<"1.-> 新增 2.-> 更改 3.

13、-> 删除 4.->清除数据 0.-> 退出"<<endl;cin >> choice;switch (choice) case 0:cout<<"已退出"<<endl;break; case 1:cout << "输入顾客编号:"cin >> pno;cout << "输入顾客姓名:"cin >> pname; cout<<"输入顾客身份证号:" cin>>pid;

14、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 << " 不存在该

15、顾客 "<<endl; break;int k;cout <<"输入要修改的内容:1.-> 姓名 2.-> 身份证号 3.-> 入住时间 4.-> 离开时间 5.-> 房间号 0.-> 退出"<<endl;cin >>k;switch(k)case 0: cout<<"已退出" break;case 1: cout << "输入新的姓名:" cin>>pname; r->setname(pname);

16、 break;case 2: cout<<"输入新的身份证号:" cin>>pid; r->setID(pid); break;case 3:cout<<"输入新的入住时间:" cin>>pin; r->setintime(pin);break;case 4:cout<<"输入新的离开时间:"cin>>pout; r->setouttime(pout);break;case 5:cout<<"输入新的房间号:"ci

17、n>>pout; r->setborroom(pbor); break;default :cout<<"输入有误"break; case 3: cout << " 输入顾客编号:" cin >> pno;int d; cout<<"请慎重操作,是否真的删除所有顾客信息?"<<endl; cout<<"1.是 2.否"<<endl; cin>>d; if(d=1) r=query(pno);if (r=N

18、ULL) cout <<" 不存在该顾客" << endl; break;r->delroom();cout<<"该顾客信息已被删除!"<<endl;break;case 4:int c;cout<<"请慎重操作,是否真的删除所有顾客信息?"<<endl;cout<<"1.是 2.否"<<endl;cin>>c;if(c=1)clear();break;default:cout<<"

19、;输入有误,请重试:"break;总 结调试过程中文件的操作是觉得最麻烦的,可是经过多次的修改,终于还是掌握了一定的办法。因此对类中文件操作、构造函数、析构函数和成员函数有了更深刻的认识,加深了对成员函数调用方法的认识。同时指针也起了不少的作用。通过对客房管理系统的课程设计,利用面向对象的办法,基本满足了设计要求,使我对所学的知识有所深入认识和了解。也发现自己有许多不足的地方,并且对课本知识的领悟还有所欠缺。我想只有更多的加以练习、实践,才会让自己提高水平。C+语言是基础的学科,它的运用是广泛而且不可或缺的。我希望自己能够在以后的学习中进一步完善自己,使自己能够真正掌握这门语言。参考

20、文献1 严蔚敏,吴伟民.数据结构(C语言版).清华大学出版社.2 严蔚敏,吴伟民.数据结构题集(C语言版).清华大学出版社.3 DATA STRUCTURE WITH C+. William Ford,William Topp .清华大学出版社(影印版).致 谢首先感谢指导老师在我的课程设计过程中给予了巨大的帮助和悉心的指导,帮我解决了许多课程设计中的问题,使我得到了很多的启示,让我少走了很多的弯路,使我的课程设计顺利进行.在我的课程设计过程中,我也得到了其他老师的帮助,在这里,我对你们表示感谢.当然,同班同学们同样给予了我很多的帮助与指导,再一次表示感谢!附件 任务一源程序代码#includ

21、e <iostream>#include <string>#include <fstream>/用于对文件读写的操作using namespace std;/顾客类class Person private: int state; int NO; char name20; char ID20; int borroom; int intime; int outtime; public:Person() int getstate() return state; int getNO() return NO; char *getname() return name;

22、char *getID() return ID; int getintime()return intime; int getouttime()return outtime; void setname(char na) strcpy(name,na);void setID(char i) strcpy(ID,i); void setborroom(char bor) borroom=bor;void setintime(char in) intime=in;void setouttime(char out) outtime=out; void delroom() state=1; void ad

23、dperson(int n,char *na,char *i,int in,int out,int bor) NO=n;strcpy(name,na);strcpy(ID,i);intime=in;outtime=out;borroom=bor;state=0; void borrowroom(int roomID) borroom=roomID;return; int retroom(int roomID) if(borroom=roomID)borroom=0;return 1;return 0; void disp() cout <<"顾客编号:"<

24、<NO<<endl<<"顾客姓名:"<<name<<endl<<"顾客身份ID:"<<ID<<endl<<"入住时间:"<<intime<<endl<<"离开时间:"<<outtime<<endl;cout<<"所住房间:"<<borroom<<endl;/顾客数据类const int Maxp=10

25、0;class PDatabase private: int top; Person perMaxp;public:PDatabase() /将reader.txt读到read中Person s;top=-1;fstream file("person.txt",ios:in);/打开一个输入文件while (1)file.read(char *)&s,sizeof(s);if (!file)break;top+;pertop=s;file.close();/关闭 reader.txt void clear()top=-1;int addperson(int n,ch

26、ar *na,char *i,int in,int out,int bor)Person *p=query(n);if (p=NULL) top+; pertop.addperson(n,na,i,in,out,bor); return 1;return 0;Person *query(int personno)/按编号查找for (int i=0;i<=top;i+)if (peri.getNO()=personno && peri.getstate()=0)return &peri;return NULL;Person *queryn(char personn

27、ame20)/按姓名查找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.getstate()=0)return &peri;return NULL;void

28、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

29、 choice;char pname20; int pno; char pid20; int pin,pout,pbor;Person *r;while (choice!=0) cout<<endl<<endl;cout<<" 顾客管理 "<<endl<<endl;cout<<"1.-> 新增 2.-> 更改 3.-> 删除 4.->清除数据 0.-> 退出"<<endl;cin >> choice;switch (choice)

30、 case 0:cout<<"已退出"<<endl;break; case 1:cout << "输入顾客编号:"cin >> pno;cout << "输入顾客姓名:"cin >> pname; cout<<"输入顾客身份证号:" cin>>pid; cout<<"请输入入住时间:" cin>>pin;cout<<"请输入离开时间:"cin&g

31、t;>pout; cout<<"请输入房间号:"cin>>pbor; addperson (pno,pname,pid,pin,pout,pbor); break; case 2:cout << "输入顾客编号:"cin >> pno; r=query(pno);if (r=NULL)cout << " 不存在该顾客 "<<endl; break;int k;cout <<"输入要修改的内容:1.-> 姓名 2.-> 身份证

32、号 3.-> 入住时间 4.-> 离开时间 5.-> 房间号 0.-> 退出"<<endl;cin >>k;switch(k)case 0: cout<<"已退出" break;case 1: cout << "输入新的姓名:" cin>>pname; r->setname(pname); break;case 2: cout<<"输入新的身份证号:" cin>>pid; r->setID(pid); br

33、eak;case 3:cout<<"输入新的入住时间:" cin>>pin; r->setintime(pin);break;case 4:cout<<"输入新的离开时间:"cin>>pout; r->setouttime(pout);break;case 5:cout<<"输入新的房间号:"cin>>pout; r->setborroom(pbor); break;default :cout<<"输入有误"bre

34、ak; case 3: cout << " 输入顾客编号:" cin >> pno;int d; cout<<"请慎重操作,是否真的删除所有顾客信息?"<<endl; cout<<"1.是 2.否"<<endl; cin>>d; if(d=1) r=query(pno);if (r=NULL) cout <<" 不存在该顾客" << endl; break;r->delroom();cout<&l

35、t;"该顾客信息已被删除!"<<endl;break;case 4:int c;cout<<"请慎重操作,是否真的删除所有顾客信息?"<<endl;cout<<"1.是 2.否"<<endl;cin>>c;if(c=1)clear();break;default:cout<<"输入有误,请重试:"break;/房间类class Roomprivate: int state;int NO;int price;char level20;

36、int onshelf;public:Room()int getstate() return state; int getNO() return NO; int getprice() return price;char *getlevel() return level; void setprice(int pri)price=pri;void setlevel(char le)strcpy(level,le);void delroom() state=1;void addroom(int n,int pri,char *le)state=0;NO=n;price=pri;strcpy(leve

37、l,le);onshelf=1;int borrowroom()/入住if (onshelf=1)onshelf=0;return 1;return 0;void retroom()/退房onshelf=1;void disp()cout <<"房间编号: "<<NO<<endl<<"房间费用: "<<price<<endl<<"房间级别: "<<level<<endl;/房间数据类 const int Maxr=100;cla

38、ss RDatabaseprivate: int top; Room roomMaxr; public:RDatabase()/将book.txt读到book中 Room b;top=-1;fstream file("room.txt",ios:in);while (1)file.read(char *)&b,sizeof(b);if (!file) break;top+;roomtop=b;file.close(); void clear()top=-1; int addroom(int n,int pri,char *le)/增加住房Room *p=query(

39、n);if (NULL=p)top+;roomtop.addroom(n,pri,le);return 1;return 0;Room *query(int roomID)/查找住房for (int i=0;i<=top;i+)if (roomi.getNO()=roomID&&roomi.getstate()=0)return &roomi;return NULL;void roomdata();/维护void disp() for (int i=0;i<=top;i+) if (roomi.getstate()=0) roomi.disp(); RDat

40、abase()/将book写到book.txt文件中fstream file("room.txt",ios:out); for (int i=0;i<=top;i+)if (roomi.getstate()=0)file.write(char *)&roomi,sizeof(roomi);file.close();void RDatabase:roomdata() int choice;char rlevel40;int rno,rpri;Room *b;while (choice!=0) cout<<endl<<endl;cout&l

41、t;<" 房间管理 "<<endl<<endl;cout<<"1.-> 增加 2.-> 更改 3.-> 删除 4.-> 清除信息 0.-> 退出"<<endl;cin >> choice;switch (choice) case 0:cout <<"已退出!"<<endl;break; case 1:cout << "输入住房编号:"<<endl;cin >>

42、rno;cout <<"输入住宿费:"<<endl;cin >> rpri; cout << "输入住房等级:"<<endl;cin >> rlevel;addroom(rno,rpri,rlevel);break; case 2:cout << "输入住房编号:"<<endl;cin >> rno;b=query(rno);if (b=NULL)cout << "不存在该房间"<<e

43、ndl; break;int k;cout <<"输入要修改的内容:1.-> 住宿费,2.-> 客房等级,0.-> 退出"<<endl;cin>>k;switch(k)case 0: cout <<"已退出" break;case 1:cout <<"输入新的住宿费:"<<endl;cin >> rpri;b->setprice(rpri);break;case 2:cout << "输入新的住房等级:&q

44、uot;<<endl;cin >> rlevel;b->setlevel(rlevel); break;break; case 3: cout <<" 请输入房间编号:"<<endl; cin >> rno;int d; cout<<"请慎重操作,是否真的删除所有顾客信息?"<<endl; cout<<"1.是 2.否"<<endl; cin>>d; if(d=1)b=query(rno);if (b=NULL

45、)cout <<" 不存在该房间"<<endl;break;b->delroom();cout<<"该房间信息已被删除!"<<endl;break;case 4:int c;cout<<"请慎重操作,是否真的删除所有房间信息?"<<endl;cout<<"1.-> 是 2.-> 否"<<endl;cin>>c;if(c=1)clear();break;default:cout<<

46、"输入有误,请重试: "break;/主界面入口void main() int choice;int roomno,personno; char name6; char code9;PDatabase PersonDB;Person *r;RDatabase RoomDB;Room *b;cout<<"请输入用户名和密码(用空格隔开): "<<endl;cin>>name>>code;while(strcmp(name,"lyw")!=0)|(strcmp(code,"000&

47、quot;)!=0) cout<<"用户名或密码错误,请重试!"<<endl; cin>>name>>code;cout<<"登陆成功!"<<endl;while(choice!=0) cout<<endl<<endl<<endl;cout<<""<<endl;cout<<" "<<endl;cout<<" 欢迎使用宾馆与客房管理系统! "<<endl;cout<<" "<<endl;cout<<""<<endl;cout<<endl;cout <<"1.-> 房间管理 2.-> 顾客管理 3.-> 查询浏览 4.-> 退房管理 0.-> 退出"<<endl;cin >> choice;switch (choice)case 0:cout<<"已退出,谢谢使用!&q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论