宾馆客房管理系统设计说明书

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

实践教学

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

兰州理工大学

计算机与通信学院

2011年秋季学期

面向对象课程设计

专业班级:计算机科学与技术4班 姓 名:杜思远 学 号:指导教师: 成 绩:_______________

目 录

中文摘要........................................................................................................................ 3 序 言.......................................................................................................................... 4 1.采用类C语言定义相关数据类型 ......................................................................... 5 2.各模块流程图及伪码算法...................................................................................... 6 3.函数的调用关系图................................................................................................ 10 4.调试分析.............................................................................................................. 11

A.调试中遇到的问题及对问题的解决方法 .......................................................... 12 B.算法的时间复杂度和空间复杂度 ...................................................................... 13

5.测试结果................................................................................................................ 14 设计总结...................................................................................................................... 16 参考文献...................................................................................................................... 17 致 谢............................................................................................................................ 18

摘 要

该论文分别对软件的需求进行分析,对软件的概要设计和软件的详细设计进行阐述,以及对软件的组装及测试的详细叙述,并附加了软件的使用说明书(操作手册)。程序设计将每个功能分别编译实现,再通过函数包含,调用等方法实现各项功能间的连接为设计思想,并采用将学生当作一个整体,整体类型为结构体,结构体中的域表示学生的属性的这种定义结构作为数据结构。软件将各个模块的功能分为列菜单、表明结构体、录入、排序、查询、插入及读取等来组成整个程序,实现对宾馆客房的系统管理。该程序界面友好,易于操作,使操作者和使用者应用更加方便。

关键字:C++,结构体,软件。

序 言

随着我国经济的迅速发展,人们的生活水平有了显著的提高,假日经济和旅游经济已成为人们消费的热点。各地也把旅游业当作本地经济发展的重要经济支柱之要求越来越高,宾馆酒店业的竞争也愈来愈激烈。如何在激烈的竞争中生从发展,是每一个宾馆酒店必须面临的问题。对宾馆的经营善起决定作用的是宾馆酒店的服务管理水平面。如何利用先进的管理手段,提高宾馆的管理水平,以成为宾馆酒店发展的当务之急。面对住处时代的机遇和挑战,利用科技手段提高企业管理水平是企业管理无疑是一条行之有效的途径。虽然计算机管理并不是宾馆管理走向成功的关键元索,但它可以最大限度地发挥准确,快捷,高效等作用,对宾馆的服务管理提供强有力的支持。因此,采用全新的计算机网络和宾馆管理系统,已成为提高宾馆的管理效率,改善服务的水准备的重要手段之一。在某种意义上,宾馆客房管理方面的信息话已成为现代化宾馆的重要标志。是国家发展必要的软件管理。

该程序采用的是结构体类型来所有基本信息,如下所述。 包含的库函数有:

# include # include #define max1 80 #define max2 10 #define max3 19

包含的结构体: typedef struct Room() {datatype number; datatype dank; datatype state; datatype price;

}; typedef struct Room room[max1]; 包含的类: typedef class Customer() {public: Customer();

void set_name(char *n){strcpy(name,n);} void set_ID(char *p){strcpy(ID,p);}

void set_room_number(int n){room_number=n;} void set_day(int d){day=d;}

void set_prepaid(int p){prepaid=p;} datatype *get_name(){return name;} datatype *get_ID(){return ID;}

datatype get_room_number(){return room_number;} datatype get_day(){return day;} datatype get_prepaid(){return prepaid;} virtual ~Customer(); private:

{datatype name[max2],ID[max3]; datatype room_number; datatype prepaid; datatype change; datatype day; }; }

2.各模块流程图及伪码算法

2.1 订房功能 a.流程图

b.伪码算法 void book_room() {

customer[i]=new Customer; //分配空间 int room_standard,day;

cout

cout

switch(room_standard) {//根据房间的标准运用case语句表示其一等,两等,三等,四等。 int n;

cout

{cout

2.2入住登记功能 a.流程图

b.伪码算法 void check_in()

{char name1[max2],id1[max3]; int ding_or_no,prepaid;

cout

for(int j=0;j

{if((strcmp(customer[j]->get_name(),name1)==0)&&(strcmp(customer[j]->get_ID(),id1)==0)) //查找该顾客的定房信息 {

int num=customer[j]->get_room_number(); //取得定房的房间号

cout

switch(num/100)

{//计算的值,运用case语句分别以计算的值来表示不同等级房间的房费,并修改入住状态。

Case=(num/100)

prepaid=customer[j]->get_day()*150; customer[j]->set_prepaid(prepaid);

cout

room[num%100-1].state=2; //修改房间状态为入住状态 break;}}

else //没定则先分配一个空间custoner[i],输入顾客的姓名,身份证号和要预订的天数。

switch(room_standard)

//根据房间的等级,用case=room_standard语句算出房费,顾客数加1 { int n;

case =room_standard(1.2.3.4)

prepaid=day*150;customer[i]->set_prepaid(prepaid);

for(n=0/20/40/60;n

if(room[n].state==0)

{cout

:

cout

customer[i]->set_room_number(room[n].number) break;}} i++;}}}//顾客数加1

2.3 退房结算功能 a.流程图

b.伪码算法 void check_out() {

char name2[max2],id2[max3];

int standard,j,room_number,day1,day2,day;

cout

{if((strcmp(customer[j]->get_name(),name2)==0)&&(strcmp(customer[j]->get_ID(),id2)==0))

{room_number=customer[j]->get_room_number(); standard=room_number/100; day=day1-day2;

day1=customer[j]->get_day();

switch(standard)

//根据(standard=room_number/100)输出顾客的房间号和费用,在看是否超出预订天数,定下顾客是多住还是提前走,确定其最后的费用。 {

case =standard

cout

cout

if(day>0) cout

if(day

break; cout

char account; //将该顾客的房间信息删除,清除空间 cin>>account; if(account=='1') {

for(int k=0;k

{if(room[k].number==customer[j]->get_room_number()) room[k].state=0;} i--; for(;j

{customer[j]=customer[j+1];}delete customer[i];} } } }

2.4 信息查询功能 a.流程图

b.伪码算法 void inquire() {char inquire_choice;

cout

{int j,k=0; cout

{if(room[j].state==0) { if(k%10==0) cout

房间增加}}

k=0; cout

if(room[j].state==1)

{ if(k%10==0) cout

k=0; cout

if(room[j].state==2)

{ if(k%10==0) cout

else if(inquire_choice=='2') {

cout

if(inquire_choice=='1'/'2')//看程序是按顾客姓名('1')还是身份证号('2')根据情况查询 {

char name3[10],id3[19];

cout

{ if(strcmp(customer[j]->get_name()/get_ID(),name3/id3)==0) { cout

cout

:

3.函数的调用关系图 包含的函数有:

Main() /*主函数*/

Initial_room() /*房间信息函数*/ Welcome() /*欢迎函数*/ Enter() /*进入系统函数*/ Book_room() /*定房函数*/

Check_in() /*入住客房函数*/ Check_out() /*退房函数*/

Inquire() /*信息查询函数*/

4.调试分析

a.调试中遇到的问题以及对问题的解决办法。

在存放房间信息时遇到了一些问题,房间包含的信息较多,在老师的帮助下,我采用了结构体数组struct Room roon[],解决了这个问题。顾客信息较复杂,我采用了类,并利用了构造函数,成员函数,析构函数(虚函数),来解决。

5.测试结果

5.1 进入系统和订房

5.2 入住

5.3 退房

5.4 查询

设 计 总 结

通过三星期的面向对象课程设计的学习,我运用C++语言设计,我从中受益匪浅,并且对C++语言程序设计这两门课程有了更深一步的认识。在实习中,我可以把这学期所学的理论知识和实践联系起来,在所要开发的项目中渐渐成长。虽然我对C++语言知识运用得还不是很熟练,但是相信我也在滴水穿石地成长起来。发现问题,提出问题,解决问题,使我从不足之处出发,寻找新的学习方向。

在实习中,我设计了一组对宾馆客房进行管理的系统,它基本满足了界面友好,易于操作的要求,因此更利于用户操作方便,运行简易,从而达到对宾馆客房更加有效系统的管理,并且速度更快内容更直接地达到用户所想要的效果。我一边实习一边探索,发现理论和实践要充分地结合,是需要扎实的基本功的,这就表明学好基础知识是理论付诸实践的前提。在实习中我学到了很多,希望在以后我们能充分利用实习的机会充实自己,并希望这样的机会能被更好更多地提供。

参考文献

1.江明德. 面向对象程序设计. 电子工业出版社,1993. 2.吕凤翥.C++语言程序设计.电子工业出版社,2001 3.阎龙. C程序员的C++指南. 北京航空航天大学出版社,1992 4.张永. 算法与数据结构. 国防工业出版社, 2008.8 5.严蔚敏,吴伟民. 数据结构. 清华大学出版社,2006.10

致 谢

经过这三周的实习,我们获得了许多在课堂上听课而不能获得的知识,首先我们要感谢学校给我们安排的这次的算法与数据结构程序设计实习,然后我要感谢朱红蕾老师对我热心的指导和帮助,是她教会了我们怎样解决问题的方法,这样我的软件设计才会更加顺利地进行,并且充分掌握了设计程序的方法。我们还要感谢许多同学的帮助,他们的帮助对于我们来说也是必不可少的。

总之,是有了他们的帮助,我们才能顺利地完成软件设计,在这里我们要向他们说一句:非常感谢,你们辛苦了!

附录:源代码 #include using namespace std; #include #define BUFSIZE 50 class cGuestroom;

void FindTheGuestroom(); //查找客房 void FindTheGuestroomById(); //按照编号找客房 void FindTheGuestroomByType(); //按照类型找客房 void FindTheGuestroomByPrice(); //按照价格找客房 void DeleteTheGuestroom(); //删除客房 void AddTheGuestroom(); //客房添加 void ModifyTheGuestroom(); //修改客房

template //template:模板,样板 class cNode //节点 {

public:

T data;

cNode *next; };

template

class tList {

public: //定义成员函数

tList();

void Create(); //创建链表 bool Empty() const; //判断链表是否为空 void Insert(const T e); //从尾部插入一个元素 cNode* GetcNode(int i); //返回第i个节点 bool Find(const T e); //在链表中查找某个值 ~tList(); //销毁链表,析构

cNode *head; };

template

tList::tList() { head=new cNode; head->next=NULL;

}

template void tList::Create() {

cNode *p; p=head; p->next=NULL;

}

template

bool tList::Empty() const { return (head->next==NULL);

}

//头节点 //类的成员函数的实现

void tList::Insert(const T e) //insert:插入 {

cNode *p,*q; p=head;

q=new cNode; q->data=e; while(p->next) { p=p->next;

} p->next=q; q->next=NULL;

}

template

cNode* tList::GetcNode(int i) {

int k=0; cNode *p; p=head; while(p && knext; ++k;

} return p;

}

//返回第i个节点

bool tList::Find(const T e) //在链表中查找某个值 {

bool flag=false;

cNode *p; p=head->next; while(p) { if(p->data==e) { flag=true; break;

} p=p->next;

} return flag;

}

template tList::~tList() { cNode *p; while(head) { p=head->next; delete head; head=p;

}

}

class cGuestroom { public:

memset(ID,0,BUFSIZE);memset(Type,0,BUFSIZE);memset(Book,0,BUFSIZE);

char ID[BUFSIZE]; //客房编号 char Type[BUFSIZE]; //客房类型 char Book[BUFSIZE]; //提前定房日期 char Price[BUFSIZE]; //客房价格 char Function[BUFSIZE]; //客房主要内容 int StayTime; //入住天数有效期 bool flag;//标志

cGuestroom()//构造函数初始化 {

memset(Function,0,BUFSIZE);

};

void ReadData(tList *tListGue)//读取数据库 {

char buf[BUFSIZE];

ifstream ifile(

//创建一个输出文件流对象

memset(Price,0,BUFSIZE);StayTime=0.0;flag=false;

} //memset:把char类型转换成ASCII值

cerr

}

cGuestroom Guestroom;

while(ifile.getline(buf,BUFSIZE)) //遍历文本,读取数据 { ifile.getline(buf,BUFSIZE);

strcpy(Guestroom.ID,buf);//读取客房编号

memset(buf,0,BUFSIZE);

ifile.getline(buf,BUFSIZE);//读取客房类型 strcpy(Guestroom.Type,buf);

memset(buf,0,BUFSIZE);

ifile.getline(buf,BUFSIZE);//读取提前定房日期 strcpy(Guestroom.Book,buf);

memset(buf,0,BUFSIZE);

ifile.getline(buf,BUFSIZE);//读取价格 strcpy(Guestroom.Price,buf);

memset(buf,0,BUFSIZE);

ifile.getline(buf,BUFSIZE);//读取客房主要内容 strcpy(Guestroom.Function,buf);

memset(buf,0,BUFSIZE);

ifile.getline(buf,BUFSIZE);//读取入住有效期 Guestroom.StayTime=atoi(buf);

memset(buf,0,BUFSIZE);

Guestroom.flag=true;

tListGue->Insert(Guestroom);

}

cout

}

void AddtheGuestroom(tList *tListGue)// 输入客房函数{ cGuestroom tempGuestroom; //定义临时客房 cout

cin>>tempGuestroom.ID; //读入客房编号 cout

cin>>tempGuestroom.Type; //读入客房类型 cout

cin>>tempGuestroom.Book; //读入定房日期 cout

cin>>tempGuestroom.Price; //读入价格 cout

cin>>tempGuestroom.Function; //读入主要内容 cout

cin>>tempGuestroom.StayTime; //读入入住有效期 tempGuestroom.flag=true;

tListGue->Insert(tempGuestroom);

}

cout

system(

void SaveData(tList *tListGue) //保存数据 {

int i=0;

ofstream ofile(

cNode *p; p=tListGue->head->next; while(p) {

//从内存中读取cerr

数据,存到外盘

if(p->data.flag) {

ofile

ofiledata).ID

} p=p->next;

}

cout

}

void ModifytheGuestroom(tList *tListGue) { char id[BUFSIZE];

cout

cin>>id; 号

bool flag=false; cNode *p; p=tListGue->head->next; while(p) { if(strcmp(p->data.ID,id)==0 && p->data.flag) { flag=true; break;

} p=p->next;

}

//修改客房信息 //读取客房编

{//显示屏幕

cout

客房编号:

客房类

型:

定房日期:

cout

期:

}

cout

cGuestroom tempGuestroom; //定义临时客房 cout

cin>>tempGuestroom.ID; //读入客房编号 cout

cin>>tempGuestroom.Type; //读入客房类型 cout

cin>>tempGuestroom.Book; //读入定房日期 cout

cin>>tempGuestroom.Price; //读入价格 cout

cin>>tempGuestroom.Function; //读入客房的主要内容 cout

cin>>tempGuestroom.StayTime; //读入入住有效期 tempGuestroom.flag=true; p->data=tempGuestroom; cout

cout

}

void DeletetheGuestroom(tList *tListGue) //删除客房信息 {

char id[BUFSIZE];

cout

cNode *p;

p=tListGue->head->next; while(p) { }

if(flag==false) cout

if(strcmp(p->data.ID,id)==0 && p->data.flag) { } p=p->next;

count++; flag=true; break;

\n

else //如果能删 {

count--;

cout

客房编号:

客房类

型:

定房日期:

cout

期:

}

void FindtheremainGuestroomById(tList *tListGue)//根据客房编号查找

{

char id[BUFSIZE];

cout

cin>>id; //读取 } cout

coutdata).flag=false;

cout

客房编号

bool flag=false;

cNode *p;

p=tListGue->head->next; while(p) {

不到

}

{ } p=p->next;

flag=true; break;

if(flag==false) cout

else

//如果找到了

{

cout

客房编号:

客房类

型:

定房日期:

cout

期:

}

void FindtheremainGuestroomByType(tList *tListGue)//根据客房类型查找客房

{

} cout

system(

cout

cin>>type; //读

取客房类型

bool flag=false;

cNode *p; 满了

else //如if(flag==false) cout

if(strcmp(p->data.Type,type)==0 && p->data.flag) { } p=p->next;

flag=true; break;

果找到了

{

cout

客房编号:

客房类

型:

定房日期:

cout

期:

} cout

}

system(

void FindtheremainGuestroomByPrice(tList *tListGue)//根据价格查找客房

{

char price[BUFSIZE];

cout

cin>>price; //

读取价格

bool flag=false;

cNode *p;

p=tListGue->head->next; while(p) {

if(strcmp(p->data.Price,price)==0 && p->data.flag) {

flag=true;

客房编号:

客房类

cout

型:

定房日期:

cout

期:

} p=p->next;

if(flag==false) cout

如果找不到

}

void FindtheremainGuestroom(tList *tListGue)//查找客房 {

system(

cout

cout

switch(choose) //根据cout

用户选择

查询

break;

{

case 1:FindtheremainGuestroomById(tListGue); //按客房编号

查询

case 2:FindtheremainGuestroomByType(tListGue); //按客房类型

break;

case 3:FindtheremainGuestroomByPrice(tListGue); //按价格查询

break;

case 4: system(

return; 出查询

default:break; }

}

return;

}

void RanktheremainGuestroom(tList *tListGue) 房

{cNode *p,*q; cGuestroom remainGuestroom;

for (p=tListGue->head->next; p!= NULL; p=p->next) { for (q=p; q!= NULL; q=q->next) { if (p->data.StayTime > q->data.StayTime) { remainGuestroom.flag = p->data.flag;

strcpy(remainGuestroom.ID, p->data.ID); strcpy(remainGuestroom.Type, p->data.Type);

strcpy(remainGuestroom.Book, p->data.Book); //退

//排序剩余客//复制

}

strcpy(remainGuestroom.Function, p->data.Function); remainGuestroom.StayTime = p->data.StayTime;

p->data.flag = q->data.flag;

strcpy(p->data.Function, q->data.Function); strcpy(p->data.ID, q->data.ID); strcpy(p->data.Type, q->data.Type); strcpy(p->data.Book, q->data.Book); p->data.StayTime = q->data.StayTime;

}

}

}

q->data.flag = remainGuestroom.flag;

strcpy(q->data.Function, remainGuestroom.Function); strcpy(q->data.ID, remainGuestroom.ID); strcpy(q->data.Type, remainGuestroom.Type); strcpy(q->data.Book, remainGuestroom.Book); q->data.StayTime = remainGuestroom.StayTime;

void OutputtheremainGuestroom(tList *tListGue) //输出剩余房间函数

{

cNode *p; p=tListGue->head->next; while(p) {

{

cout

客房编号:

客房类

型:

cout

期:

} p=p->next;

}

cout

system(

} int main() {

tList tListGue; tListGue.Create(); ReadData(&tListGue); while(1) {

cout

\n\n

\n\n

\n\n

\n\n

cout

cout

cout

cout

cout

cout

\n\n

\n\n

的选择

信息

{

case 1:AddtheGuestroom(&tListGue); break; //输入客房

case 2:SaveData(&tListGue);break; //客房信息

cout

cout

cout

int choose=0; cin>>choose;

switch (choose) //用户

信息保存

信息

case 4:DeletetheGuestroom(&tListGue); break; //删除客房信息

case 5:FindtheremainGuestroom(&tListGue); break; //查询剩余

case 3:ModifytheGuestroom(&tListGue); break; //修改客房

客房信息

case 6:RanktheremainGuestroom(&tListGue); break; //排序剩余

客房信息

房信息

case 7:OutputtheremainGuestroom(&tListGue); break; //输出剩余客

case 8:exit(0); //退出 default : break; } } return 0;

}

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

实践教学

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

兰州理工大学

计算机与通信学院

2011年秋季学期

面向对象课程设计

专业班级:计算机科学与技术4班 姓 名:杜思远 学 号:指导教师: 成 绩:_______________

目 录

中文摘要........................................................................................................................ 3 序 言.......................................................................................................................... 4 1.采用类C语言定义相关数据类型 ......................................................................... 5 2.各模块流程图及伪码算法...................................................................................... 6 3.函数的调用关系图................................................................................................ 10 4.调试分析.............................................................................................................. 11

A.调试中遇到的问题及对问题的解决方法 .......................................................... 12 B.算法的时间复杂度和空间复杂度 ...................................................................... 13

5.测试结果................................................................................................................ 14 设计总结...................................................................................................................... 16 参考文献...................................................................................................................... 17 致 谢............................................................................................................................ 18

摘 要

该论文分别对软件的需求进行分析,对软件的概要设计和软件的详细设计进行阐述,以及对软件的组装及测试的详细叙述,并附加了软件的使用说明书(操作手册)。程序设计将每个功能分别编译实现,再通过函数包含,调用等方法实现各项功能间的连接为设计思想,并采用将学生当作一个整体,整体类型为结构体,结构体中的域表示学生的属性的这种定义结构作为数据结构。软件将各个模块的功能分为列菜单、表明结构体、录入、排序、查询、插入及读取等来组成整个程序,实现对宾馆客房的系统管理。该程序界面友好,易于操作,使操作者和使用者应用更加方便。

关键字:C++,结构体,软件。

序 言

随着我国经济的迅速发展,人们的生活水平有了显著的提高,假日经济和旅游经济已成为人们消费的热点。各地也把旅游业当作本地经济发展的重要经济支柱之要求越来越高,宾馆酒店业的竞争也愈来愈激烈。如何在激烈的竞争中生从发展,是每一个宾馆酒店必须面临的问题。对宾馆的经营善起决定作用的是宾馆酒店的服务管理水平面。如何利用先进的管理手段,提高宾馆的管理水平,以成为宾馆酒店发展的当务之急。面对住处时代的机遇和挑战,利用科技手段提高企业管理水平是企业管理无疑是一条行之有效的途径。虽然计算机管理并不是宾馆管理走向成功的关键元索,但它可以最大限度地发挥准确,快捷,高效等作用,对宾馆的服务管理提供强有力的支持。因此,采用全新的计算机网络和宾馆管理系统,已成为提高宾馆的管理效率,改善服务的水准备的重要手段之一。在某种意义上,宾馆客房管理方面的信息话已成为现代化宾馆的重要标志。是国家发展必要的软件管理。

该程序采用的是结构体类型来所有基本信息,如下所述。 包含的库函数有:

# include # include #define max1 80 #define max2 10 #define max3 19

包含的结构体: typedef struct Room() {datatype number; datatype dank; datatype state; datatype price;

}; typedef struct Room room[max1]; 包含的类: typedef class Customer() {public: Customer();

void set_name(char *n){strcpy(name,n);} void set_ID(char *p){strcpy(ID,p);}

void set_room_number(int n){room_number=n;} void set_day(int d){day=d;}

void set_prepaid(int p){prepaid=p;} datatype *get_name(){return name;} datatype *get_ID(){return ID;}

datatype get_room_number(){return room_number;} datatype get_day(){return day;} datatype get_prepaid(){return prepaid;} virtual ~Customer(); private:

{datatype name[max2],ID[max3]; datatype room_number; datatype prepaid; datatype change; datatype day; }; }

2.各模块流程图及伪码算法

2.1 订房功能 a.流程图

b.伪码算法 void book_room() {

customer[i]=new Customer; //分配空间 int room_standard,day;

cout

cout

switch(room_standard) {//根据房间的标准运用case语句表示其一等,两等,三等,四等。 int n;

cout

{cout

2.2入住登记功能 a.流程图

b.伪码算法 void check_in()

{char name1[max2],id1[max3]; int ding_or_no,prepaid;

cout

for(int j=0;j

{if((strcmp(customer[j]->get_name(),name1)==0)&&(strcmp(customer[j]->get_ID(),id1)==0)) //查找该顾客的定房信息 {

int num=customer[j]->get_room_number(); //取得定房的房间号

cout

switch(num/100)

{//计算的值,运用case语句分别以计算的值来表示不同等级房间的房费,并修改入住状态。

Case=(num/100)

prepaid=customer[j]->get_day()*150; customer[j]->set_prepaid(prepaid);

cout

room[num%100-1].state=2; //修改房间状态为入住状态 break;}}

else //没定则先分配一个空间custoner[i],输入顾客的姓名,身份证号和要预订的天数。

switch(room_standard)

//根据房间的等级,用case=room_standard语句算出房费,顾客数加1 { int n;

case =room_standard(1.2.3.4)

prepaid=day*150;customer[i]->set_prepaid(prepaid);

for(n=0/20/40/60;n

if(room[n].state==0)

{cout

:

cout

customer[i]->set_room_number(room[n].number) break;}} i++;}}}//顾客数加1

2.3 退房结算功能 a.流程图

b.伪码算法 void check_out() {

char name2[max2],id2[max3];

int standard,j,room_number,day1,day2,day;

cout

{if((strcmp(customer[j]->get_name(),name2)==0)&&(strcmp(customer[j]->get_ID(),id2)==0))

{room_number=customer[j]->get_room_number(); standard=room_number/100; day=day1-day2;

day1=customer[j]->get_day();

switch(standard)

//根据(standard=room_number/100)输出顾客的房间号和费用,在看是否超出预订天数,定下顾客是多住还是提前走,确定其最后的费用。 {

case =standard

cout

cout

if(day>0) cout

if(day

break; cout

char account; //将该顾客的房间信息删除,清除空间 cin>>account; if(account=='1') {

for(int k=0;k

{if(room[k].number==customer[j]->get_room_number()) room[k].state=0;} i--; for(;j

{customer[j]=customer[j+1];}delete customer[i];} } } }

2.4 信息查询功能 a.流程图

b.伪码算法 void inquire() {char inquire_choice;

cout

{int j,k=0; cout

{if(room[j].state==0) { if(k%10==0) cout

房间增加}}

k=0; cout

if(room[j].state==1)

{ if(k%10==0) cout

k=0; cout

if(room[j].state==2)

{ if(k%10==0) cout

else if(inquire_choice=='2') {

cout

if(inquire_choice=='1'/'2')//看程序是按顾客姓名('1')还是身份证号('2')根据情况查询 {

char name3[10],id3[19];

cout

{ if(strcmp(customer[j]->get_name()/get_ID(),name3/id3)==0) { cout

cout

:

3.函数的调用关系图 包含的函数有:

Main() /*主函数*/

Initial_room() /*房间信息函数*/ Welcome() /*欢迎函数*/ Enter() /*进入系统函数*/ Book_room() /*定房函数*/

Check_in() /*入住客房函数*/ Check_out() /*退房函数*/

Inquire() /*信息查询函数*/

4.调试分析

a.调试中遇到的问题以及对问题的解决办法。

在存放房间信息时遇到了一些问题,房间包含的信息较多,在老师的帮助下,我采用了结构体数组struct Room roon[],解决了这个问题。顾客信息较复杂,我采用了类,并利用了构造函数,成员函数,析构函数(虚函数),来解决。

5.测试结果

5.1 进入系统和订房

5.2 入住

5.3 退房

5.4 查询

设 计 总 结

通过三星期的面向对象课程设计的学习,我运用C++语言设计,我从中受益匪浅,并且对C++语言程序设计这两门课程有了更深一步的认识。在实习中,我可以把这学期所学的理论知识和实践联系起来,在所要开发的项目中渐渐成长。虽然我对C++语言知识运用得还不是很熟练,但是相信我也在滴水穿石地成长起来。发现问题,提出问题,解决问题,使我从不足之处出发,寻找新的学习方向。

在实习中,我设计了一组对宾馆客房进行管理的系统,它基本满足了界面友好,易于操作的要求,因此更利于用户操作方便,运行简易,从而达到对宾馆客房更加有效系统的管理,并且速度更快内容更直接地达到用户所想要的效果。我一边实习一边探索,发现理论和实践要充分地结合,是需要扎实的基本功的,这就表明学好基础知识是理论付诸实践的前提。在实习中我学到了很多,希望在以后我们能充分利用实习的机会充实自己,并希望这样的机会能被更好更多地提供。

参考文献

1.江明德. 面向对象程序设计. 电子工业出版社,1993. 2.吕凤翥.C++语言程序设计.电子工业出版社,2001 3.阎龙. C程序员的C++指南. 北京航空航天大学出版社,1992 4.张永. 算法与数据结构. 国防工业出版社, 2008.8 5.严蔚敏,吴伟民. 数据结构. 清华大学出版社,2006.10

致 谢

经过这三周的实习,我们获得了许多在课堂上听课而不能获得的知识,首先我们要感谢学校给我们安排的这次的算法与数据结构程序设计实习,然后我要感谢朱红蕾老师对我热心的指导和帮助,是她教会了我们怎样解决问题的方法,这样我的软件设计才会更加顺利地进行,并且充分掌握了设计程序的方法。我们还要感谢许多同学的帮助,他们的帮助对于我们来说也是必不可少的。

总之,是有了他们的帮助,我们才能顺利地完成软件设计,在这里我们要向他们说一句:非常感谢,你们辛苦了!

附录:源代码 #include using namespace std; #include #define BUFSIZE 50 class cGuestroom;

void FindTheGuestroom(); //查找客房 void FindTheGuestroomById(); //按照编号找客房 void FindTheGuestroomByType(); //按照类型找客房 void FindTheGuestroomByPrice(); //按照价格找客房 void DeleteTheGuestroom(); //删除客房 void AddTheGuestroom(); //客房添加 void ModifyTheGuestroom(); //修改客房

template //template:模板,样板 class cNode //节点 {

public:

T data;

cNode *next; };

template

class tList {

public: //定义成员函数

tList();

void Create(); //创建链表 bool Empty() const; //判断链表是否为空 void Insert(const T e); //从尾部插入一个元素 cNode* GetcNode(int i); //返回第i个节点 bool Find(const T e); //在链表中查找某个值 ~tList(); //销毁链表,析构

cNode *head; };

template

tList::tList() { head=new cNode; head->next=NULL;

}

template void tList::Create() {

cNode *p; p=head; p->next=NULL;

}

template

bool tList::Empty() const { return (head->next==NULL);

}

//头节点 //类的成员函数的实现

void tList::Insert(const T e) //insert:插入 {

cNode *p,*q; p=head;

q=new cNode; q->data=e; while(p->next) { p=p->next;

} p->next=q; q->next=NULL;

}

template

cNode* tList::GetcNode(int i) {

int k=0; cNode *p; p=head; while(p && knext; ++k;

} return p;

}

//返回第i个节点

bool tList::Find(const T e) //在链表中查找某个值 {

bool flag=false;

cNode *p; p=head->next; while(p) { if(p->data==e) { flag=true; break;

} p=p->next;

} return flag;

}

template tList::~tList() { cNode *p; while(head) { p=head->next; delete head; head=p;

}

}

class cGuestroom { public:

memset(ID,0,BUFSIZE);memset(Type,0,BUFSIZE);memset(Book,0,BUFSIZE);

char ID[BUFSIZE]; //客房编号 char Type[BUFSIZE]; //客房类型 char Book[BUFSIZE]; //提前定房日期 char Price[BUFSIZE]; //客房价格 char Function[BUFSIZE]; //客房主要内容 int StayTime; //入住天数有效期 bool flag;//标志

cGuestroom()//构造函数初始化 {

memset(Function,0,BUFSIZE);

};

void ReadData(tList *tListGue)//读取数据库 {

char buf[BUFSIZE];

ifstream ifile(

//创建一个输出文件流对象

memset(Price,0,BUFSIZE);StayTime=0.0;flag=false;

} //memset:把char类型转换成ASCII值

cerr

}

cGuestroom Guestroom;

while(ifile.getline(buf,BUFSIZE)) //遍历文本,读取数据 { ifile.getline(buf,BUFSIZE);

strcpy(Guestroom.ID,buf);//读取客房编号

memset(buf,0,BUFSIZE);

ifile.getline(buf,BUFSIZE);//读取客房类型 strcpy(Guestroom.Type,buf);

memset(buf,0,BUFSIZE);

ifile.getline(buf,BUFSIZE);//读取提前定房日期 strcpy(Guestroom.Book,buf);

memset(buf,0,BUFSIZE);

ifile.getline(buf,BUFSIZE);//读取价格 strcpy(Guestroom.Price,buf);

memset(buf,0,BUFSIZE);

ifile.getline(buf,BUFSIZE);//读取客房主要内容 strcpy(Guestroom.Function,buf);

memset(buf,0,BUFSIZE);

ifile.getline(buf,BUFSIZE);//读取入住有效期 Guestroom.StayTime=atoi(buf);

memset(buf,0,BUFSIZE);

Guestroom.flag=true;

tListGue->Insert(Guestroom);

}

cout

}

void AddtheGuestroom(tList *tListGue)// 输入客房函数{ cGuestroom tempGuestroom; //定义临时客房 cout

cin>>tempGuestroom.ID; //读入客房编号 cout

cin>>tempGuestroom.Type; //读入客房类型 cout

cin>>tempGuestroom.Book; //读入定房日期 cout

cin>>tempGuestroom.Price; //读入价格 cout

cin>>tempGuestroom.Function; //读入主要内容 cout

cin>>tempGuestroom.StayTime; //读入入住有效期 tempGuestroom.flag=true;

tListGue->Insert(tempGuestroom);

}

cout

system(

void SaveData(tList *tListGue) //保存数据 {

int i=0;

ofstream ofile(

cNode *p; p=tListGue->head->next; while(p) {

//从内存中读取cerr

数据,存到外盘

if(p->data.flag) {

ofile

ofiledata).ID

} p=p->next;

}

cout

}

void ModifytheGuestroom(tList *tListGue) { char id[BUFSIZE];

cout

cin>>id; 号

bool flag=false; cNode *p; p=tListGue->head->next; while(p) { if(strcmp(p->data.ID,id)==0 && p->data.flag) { flag=true; break;

} p=p->next;

}

//修改客房信息 //读取客房编

{//显示屏幕

cout

客房编号:

客房类

型:

定房日期:

cout

期:

}

cout

cGuestroom tempGuestroom; //定义临时客房 cout

cin>>tempGuestroom.ID; //读入客房编号 cout

cin>>tempGuestroom.Type; //读入客房类型 cout

cin>>tempGuestroom.Book; //读入定房日期 cout

cin>>tempGuestroom.Price; //读入价格 cout

cin>>tempGuestroom.Function; //读入客房的主要内容 cout

cin>>tempGuestroom.StayTime; //读入入住有效期 tempGuestroom.flag=true; p->data=tempGuestroom; cout

cout

}

void DeletetheGuestroom(tList *tListGue) //删除客房信息 {

char id[BUFSIZE];

cout

cNode *p;

p=tListGue->head->next; while(p) { }

if(flag==false) cout

if(strcmp(p->data.ID,id)==0 && p->data.flag) { } p=p->next;

count++; flag=true; break;

\n

else //如果能删 {

count--;

cout

客房编号:

客房类

型:

定房日期:

cout

期:

}

void FindtheremainGuestroomById(tList *tListGue)//根据客房编号查找

{

char id[BUFSIZE];

cout

cin>>id; //读取 } cout

coutdata).flag=false;

cout

客房编号

bool flag=false;

cNode *p;

p=tListGue->head->next; while(p) {

不到

}

{ } p=p->next;

flag=true; break;

if(flag==false) cout

else

//如果找到了

{

cout

客房编号:

客房类

型:

定房日期:

cout

期:

}

void FindtheremainGuestroomByType(tList *tListGue)//根据客房类型查找客房

{

} cout

system(

cout

cin>>type; //读

取客房类型

bool flag=false;

cNode *p; 满了

else //如if(flag==false) cout

if(strcmp(p->data.Type,type)==0 && p->data.flag) { } p=p->next;

flag=true; break;

果找到了

{

cout

客房编号:

客房类

型:

定房日期:

cout

期:

} cout

}

system(

void FindtheremainGuestroomByPrice(tList *tListGue)//根据价格查找客房

{

char price[BUFSIZE];

cout

cin>>price; //

读取价格

bool flag=false;

cNode *p;

p=tListGue->head->next; while(p) {

if(strcmp(p->data.Price,price)==0 && p->data.flag) {

flag=true;

客房编号:

客房类

cout

型:

定房日期:

cout

期:

} p=p->next;

if(flag==false) cout

如果找不到

}

void FindtheremainGuestroom(tList *tListGue)//查找客房 {

system(

cout

cout

switch(choose) //根据cout

用户选择

查询

break;

{

case 1:FindtheremainGuestroomById(tListGue); //按客房编号

查询

case 2:FindtheremainGuestroomByType(tListGue); //按客房类型

break;

case 3:FindtheremainGuestroomByPrice(tListGue); //按价格查询

break;

case 4: system(

return; 出查询

default:break; }

}

return;

}

void RanktheremainGuestroom(tList *tListGue) 房

{cNode *p,*q; cGuestroom remainGuestroom;

for (p=tListGue->head->next; p!= NULL; p=p->next) { for (q=p; q!= NULL; q=q->next) { if (p->data.StayTime > q->data.StayTime) { remainGuestroom.flag = p->data.flag;

strcpy(remainGuestroom.ID, p->data.ID); strcpy(remainGuestroom.Type, p->data.Type);

strcpy(remainGuestroom.Book, p->data.Book); //退

//排序剩余客//复制

}

strcpy(remainGuestroom.Function, p->data.Function); remainGuestroom.StayTime = p->data.StayTime;

p->data.flag = q->data.flag;

strcpy(p->data.Function, q->data.Function); strcpy(p->data.ID, q->data.ID); strcpy(p->data.Type, q->data.Type); strcpy(p->data.Book, q->data.Book); p->data.StayTime = q->data.StayTime;

}

}

}

q->data.flag = remainGuestroom.flag;

strcpy(q->data.Function, remainGuestroom.Function); strcpy(q->data.ID, remainGuestroom.ID); strcpy(q->data.Type, remainGuestroom.Type); strcpy(q->data.Book, remainGuestroom.Book); q->data.StayTime = remainGuestroom.StayTime;

void OutputtheremainGuestroom(tList *tListGue) //输出剩余房间函数

{

cNode *p; p=tListGue->head->next; while(p) {

{

cout

客房编号:

客房类

型:

cout

期:

} p=p->next;

}

cout

system(

} int main() {

tList tListGue; tListGue.Create(); ReadData(&tListGue); while(1) {

cout

\n\n

\n\n

\n\n

\n\n

cout

cout

cout

cout

cout

cout

\n\n

\n\n

的选择

信息

{

case 1:AddtheGuestroom(&tListGue); break; //输入客房

case 2:SaveData(&tListGue);break; //客房信息

cout

cout

cout

int choose=0; cin>>choose;

switch (choose) //用户

信息保存

信息

case 4:DeletetheGuestroom(&tListGue); break; //删除客房信息

case 5:FindtheremainGuestroom(&tListGue); break; //查询剩余

case 3:ModifytheGuestroom(&tListGue); break; //修改客房

客房信息

case 6:RanktheremainGuestroom(&tListGue); break; //排序剩余

客房信息

房信息

case 7:OutputtheremainGuestroom(&tListGue); break; //输出剩余客

case 8:exit(0); //退出 default : break; } } return 0;

}


相关文章

  • 酒店宾馆客房专用插卡取电配电箱及相关回路
  • 酒店宾馆客房专用插卡取电配电箱及相关回路 设计选取要点 酒店宾馆客房专用插卡取电配电箱为宾馆客房的特定环境专用,其基本功能是:①按照功能划分对强电实施回路分支控制,限制和隔离故障回路.②对用线路和用电器出现的过压, 短路,超载,触电实施有效 ...查看


  • 宾馆客房管理系统的实现
  • JIU JIANG UNIVERSITY 毕 业 论 文 题 目 宾馆客房管理系统的实现 英文题目 院 系 信息科学与技术学院 专 业 计算机科学与技术 姓 名 曾志伟 班级学号 指导教师 殷明芳 二○一二年五月 摘 要 计算机的应用普及到 ...查看


  • 石家庄市某宾馆空调系统设计报告书
  • 石家庄市某宾馆空调系 统设计 院校:机械学院 姓名: 学号:20090769 日期:2012/9/25 目 录 石家庄市某宾馆空调系统设计................................................... ...查看


  • 宾馆酒店客房插卡取电及相关回路的设计要点
  • 酒店宾馆客房专用插卡取电配电箱及相关回路 设计选取要点 酒店宾馆客房专用插卡取电配电箱为宾馆客房的特定环境专用,其基本功能是:①按 照功能划分对强电实施回路分支控制,限制和隔离故障回路.②对用线路和用电器出现 的过压, 短路,超载,触电实施 ...查看


  • 宾馆装修改造可行性报告
  • 公司贵宾馆装修改造可行性报告 一.贵宾馆现状 1.年久失修,影响形象 宾馆房屋1988年使用,距离最近一次装修已逾10年.宾馆由于使用时间长,设施.设备老化,维护和保养非常困难,费用很高.客房入住率很低,不到30%.且已经严重影响公司对外形 ...查看


  • 毕业设计(论文)宾馆客房管理信息系统
  • 前 言 在飞速发展的信息时代,信息已经成为所有企业的关键资源.宾馆客房管理信息系统是用来收集.处理.存贮和传播客房.顾客.结算信息,以信息管理为核心的计算机应用系统.利用宾馆客房管理信息系统中合理的数据库结构来保存数据信息,及时了解各个环节 ...查看


  • 宾馆设施装修任务书
  • 一. 设计依据 1.<改造项目设计.施工招标文件>.<设计任务书>.<建筑设 计图>.<结构设计图>.<水.电设计图>及所有图纸的 CDA 电子图. 2. 设计规范及标准: 1)& ...查看


  • 主题酒店开业筹备工作计划书
  • 主题酒店开业筹备工作计划书 内容: 1. 主题酒店开业筹备的任务与要求 2. 主题酒店开业准备计划 3. 主题酒店人员编制图 4. 主题酒店招聘要求 一.主题酒店开业筹备的任务与要求 开业前的准备工作,主要是建立快捷运转系统,为以后的运营在 ...查看


  • 各部门管理制度
  • 宾馆成本管理制度 目的:以加强财务管理.降低成本.获取最大利润为出发点. 1.严格成本费用控制,确保费用目标的实现.对客房各项物资的消耗.洗涤费用.水电支出等,按照入住率制定出科学的消耗百分点,对超出规定损耗率部分,由部门责任人或当事人承担 ...查看


热门内容