当前位置:文档之家› 最新整理酒店管理系统42320上课讲义

最新整理酒店管理系统42320上课讲义

一、设计内容与设计要求1.设计内容:酒店管理系统问题描述:建立酒店客房管理信息系统,采用计算机对客房信息进行管理,进一步提高酒店的经济效益和现代化水平。

帮助酒店工作人员提高工作效率,实现客房管理工作流程的系统化、规范化和自动化。

功能要求:(1)本系统包括数据录入,数据修改,数据添加,数据查询,数据备份和报表生成。

(2)数据信息包括客房号,客房类型,客房价格,折扣情况,客房状态,入住客人信息(姓名,性别,身份证号,入住时间,预计入住期等),客房负责人等。

(3)查询应可以提供多种查询方式,如按房号查询,按月份查询,按价格查询,按客房状态查询等。

(4)客房入住日报表,客房入住月表等。

问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤:(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系;(3)根据问题描述,设计系统的类层次;(4)完成类层次中各个类的描述;(5)完成类中各个成员函数的定义;(6)完成系统的应用模块;(7)功能调试;(8)完成系统总结报告。

2.设计要求:课程设计报告正文内容(包括系统设计要求,设计思路,系统功能模块图,系统流程图,类的层次图(包括类成员列表),调试过程,关键程序代码,总结,参考书目等)。

(一)需求分析系统设计目的与意义系统功能需求(系统流程图);输入输出的要求;(二)总体设计系统功能分析;系统功能模块划分与设计(系统功能模块图)。

(三)详细设计数据库需求分析数据库概念结构设计(E-R图);数据库逻辑结构设计。

类层次图(四)界面设计与各功能模块实现(五)系统调试调试问题出现的主要问题:编译语法错误及修改,重点是运行逻辑问题修改和调整(六)使用说明及编程体会说明如何使用你编写的程序,详细列出每一步的操作步骤。

(七)关键源程序(带注释)●考核方式指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。

具体考核标准包含以下几个部分:a.平时出勤(占10%)b.系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%)c.程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%)d.设计报告(占30%)注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。

e.独立完成情况(占10%)。

●课程验收要求a.判定算法设计的合理性,运行相关程序,获得正确的数值结果。

b.回答有关问题。

c.提交课程设计报告。

d.提交软盘(源程序、设计报告文档)。

e.依内容的创新程度,完善程序情况及对程序讲解情况打分。

三、教材及参考书朱战立等著, C++面向对象程序设计,人民邮电出版社;郑莉著,C++ 语言程序设计(含实验指导书)。

清华大学出版社( 结构化程序设计部分) 钱能主编,C++ 程序设计教程,清华大学出版社,2000.11戴锋编著,Visual C++ 程序设计基础, 清华大学出版社,2001.4吕日著,C++ 程序设计教程,清华大学出版社,C++ 大学教程,美国Harvey M.Deitel 等四、进度安排目录一、需求分析 (5)1.系统设计目的与意义 (5)2.系统功能需求(系统流程图) (5)3.系统功能流程图 (5)4.输入输出的要求 (6)二、详细设计 (6)1.类设计: (6)三、界面设计与各功能模块的实现 (9)1.界面设计 (9)四、系统调试 (9)1.首页进入客房管理系统主菜单 (9)2录入客户客房信息界面: (9)3.显示客户客房信息界面 (10)4.查找客户客房信息界面 (10)5.删除客户客房信息界面 (10)6.修改客户客房信息 (10)五、使用说明及心得体会 (10)六、附件 (11)一需求分析1.1综述随着人类社会进入信息时代,计算机越来越多地活跃在社会各个领域:管理,网络,计算,控制,多媒体等。

并且在某些方面成为不可缺少的工具,尤其在管理方面,管理软件的出现使大量繁琐复杂的问题变得简单易行。

现今酒店宾馆的规模不断扩大,客户数量急剧增加,有关客户的各种信息也成倍增长,尤其是大量的客房预订信息。

面对庞大的信息量,需要有客户信息管理系统来提高客户管理工作的效率。

通过这样的系统,可以做到信息的规范管理,科学统计和快速的查询,从而减少管理方面的工作量。

当前许多酒店正在逐步完善客户信息管理工作,需要一个能满足内部管理需求,提高管理效率的应用系统进行内部管理。

许多宾馆经过多年的发展,规模不断扩大,客流量成倍增长,积累了大量的客户信息急需进行统一管理以防信息的流失。

因此,许多宾馆需要一个功能全面的客户信息管理系统来进行管理,以使管理客户信息的工作在该系统的配合下更加高效和便捷。

1.2系统功能分析酒店客房预订信息管理系统是一个对客户全方面管理的程序。

该客房预订信息管理系统是在Visual C++ 6.0平台下设计开发,以TXT文档为后台数据库,采用面向对象的语言开发而成,实现对客户预订信息的基本管理,包括客房信息、客户信息的添加,修改和查询。

该系统充分考虑用户的操作简便性,实现快捷操作。

它有以下几个功能:(1)客房设置:可以添加新客房,修改客房描述(房间等级,内部设施等),删除客房。

(2)客户设置:可以添加新客户,修改客户信息,删除已退订客户等。

可准确了解每一客户的预订信息。

(3)房间预订情况查询:可按客户号、房号查询。

方便实用,在众多房间、客户中准确查询到某一个房间或客户。

1.3系统总框图设计一个程序来实现酒店客房预订的管理,该程序应该包含信息录入、输出、修改、删除和查询等功能模块。

本程序各功能模块结构总框图如下:二、详细设计1.类设计类 customerint no; //客户编号char name[10]; //客户姓名int borbook[Maxbor]; //所订房间char *getname() {return name;} //获取姓名int gettag() {return tag;} //获取删除标记int getno() {return no;} //获取客户编号void setname(char na[]) //设置姓名addcustomer(int n,char *na) //增加客户类RDatabaseint top; //客户记录指针customer read[Maxr]; //客户记录void clear() //删除所有客户信void disp() //输出所有客户信息类bookint no; //客房编号char name[20]; //客房描述int onshelf; //是否预订 1:空房 2:已预订void addbook(int n,char *na) //增加客房int borrowbook() //预订操作void retbook() //退订操作void disp() //输出客房类BDatabaseBook book[Maxb]; //客房记录int addbook(int n,char *na) //增加客房Book *query(int bookid) //查找客房三界面设计与各功能模块的实现1.界面设计1.界面设计程序运行后会出现一个简捷的窗口,便于用户查询数据。

2.功能模块实现设计通过主窗体调用其他窗体。

应用系统主控界面包括客户信息录入,查找等功能模块。

客户信息录入功能完成客户信息和客房的输入。

记录查询功能可以对数据各分类的记录进行查询。

四系统调试(1)程序主界面:界面简洁明了,一目了然,便于操作。

选择数字0-4进入相应功能。

(2)客户信息:主界面选择4进入客户信息管理菜单。

(3)客房信息:主界面选择3进入客房信息管理菜单。

(4)订房:主界面选择1进入订房功能。

五使用说明及心得体会此次c++课程设计,在指导教师的精心教导下,我学会了如何用C++编写一个简单的应用程序。

首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。

程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。

六、附件#include <iostream>#include <iomanip>#include <string>#include <fstream> //输入/输出文件流类using namespace std;const int Maxr=100; //最多的客户const int Maxb=100; //最多的客房const int Maxbor=5; //每位客户最多预订五间客房//客户类,实现对客户的信息的描述class customer{ private:int tag; //删除标记1:已删0:未删int no; //客户编号char name[10]; //客户姓名int borbook[Maxbor]; //所订房间public:customer() {}char *getname() {return name;}//获取姓名int gettag() {return tag;} //获取删除标记int getno() {return no;} //获取客户编号void setname(char na[]) //设置姓名{ strcpy(name,na);}void delbook(){ tag=1; } //设置删除标记1:已删0:未删void addcustomer(int n,char *na) //增加客户{ tag=0;no=n;strcpy(name,na);for(int i=0;i<Maxbor;i++)borbook[i]=0;}void borrowbook(int bookid) //预订操作{for(int i=0;i<Maxbor;i++){ if (borbook[i]==0){borbook[i]=bookid;return;}}}int retbook(int bookid) //退订操作{ for(int i=0;i<Maxbor;i++){ if(borbook[i]==bookid){borbook[i]=0;return 1;}}return 0;}void disp() //读出客户信息{cout << setw(5) << no <<setw(10) << name<<"\t 客房编号:[";for(int i=0;i<Maxbor;i++)if(borbook[i]!=0)cout << borbook[i];cout << "]"<<endl;}};class RDatabase //客户库类,实现建立客户的个人资料{ private:int top; //客户记录指针customer read[Maxr]; //客户记录public:RDatabase() //构造函数,将customer.txt读到read[]中{customer s;top=-1;fstream file("customer.txt",ios::in); //打开一个输入文件while (1){file.read((char *)&s,sizeof(s));if (!file)break;top++;read[top]=s;}file.close(); } //关闭customer.txtvoid clear() //删除所有客户信息{top=-1;}int addcustomer(int n,char *na) //添加客户时先查找是否存在{customer *p=query(n);if (p==NULL){top++;read[top].addcustomer(n,na);return 1;}return 0;}customer *query(int customerid) //按编号查找{for (int i=0;i<=top;i++)if (read[i].getno()==customerid &&read[i].gettag()==0){return &read[i];}return NULL;}void disp() //输出所有客户信息{for (int i=0;i<=top;i++)read[i].disp();}void customerdata(); //客户库维护~RDatabase() //析构函数,将read[]写到customer.txt文件中{fstream file("customer.txt",ios::out);for (int i=0;i<=top;i++)if (read[i].gettag()==0)file.write((char *)&read[i],sizeof(read[i]));file.close();}};void RDatabase::customerdata(){char choice;char rname[20];int customerid;customer *r;while (choice!='0'){cout <<"\n\n\t\t\t客户信息\n\n\n\t\t\t1 新增\n\n\t\t\t2 更改\n\n\t\t\t3 删除\n\n\t\t\t4 查找\n\n\t\t\t5 显示\n\n\t\t\t6 全删\n\n\t\t\t0 返回"<<endl;cin >> choice;switch (choice){ case '1':cout << "输入客户编号:";cin >> customerid;cout << "输入客户姓名:";cin >> rname;addcustomer (customerid,rname);break;case '2':cout << "输入客户编号:";cin >> customerid;r=query(customerid);if (r==NULL){cout << " 该客户不存在"<<endl;break;}cout << "输入新的客户姓名:";cin >> rname;r->setname(rname);break;case '3':cout << "输入客户编号:";cin >> customerid;r=query(customerid);if (r==NULL){cout <<" 该客户不存在" << endl;break;}r->delbook();break;case '4':cout << "输入客户编号:";cin >> customerid;r=query(customerid);if (r==NULL){cout <<" 该客户不存在"<< endl;break;}r->disp();break;case '5':disp();break;case '6':clear();break;default:cout<<"正在返回主界面...";break;}}}class Book //客房类,实现对客房的描述,如客房等级,有无宽带等{private:int tag; //删除标记1:已删0:未删int no; //客房编号char name[20]; //客房描述int onshelf; //是否预订1:空房2:已预订public:Book(){}char *getname() { return name; } //获取姓名int getno(){ return no; } //获取客房编号int gettag(){ return tag; } //获取删除标记void setname(char na[]) //设置客房描述{strcpy(name,na);}void delbook(){ tag=1;} //删除客房void addbook(int n,char *na) //增加客房{tag=0;no=n;strcpy(name,na);onshelf=1;}int borrowbook() //预订操作{if (onshelf==1){onshelf=0;return 1;}return 0; }void retbook() //退订操作{onshelf=1;}void disp() //输出客房{cout << setw(6) << no << setw(18) << name << setw(10)<<(onshelf==1? "空房":"已预订") <<endl;}};class BDatabase //客房库类,实现对客房的管理,如查找、删除等{private:int top; //客房记录指针Book book[Maxb]; //客房记录public:BDatabase() //构造函数,将book.txt读到book[]中{ Book b;top=-1;fstream file("book.txt",ios::in);while (1){file.read((char *)&b,sizeof(b));if (!file) break;top++;book[top]=b;}file.close();}void clear() //全删{top=-1;}int addbook(int n,char *na) //增加客房{Book *p=query(n);if (NULL==p){top++;book[top].addbook(n,na);return 1;}return 0;}Book *query(int bookid) //查找客房{ for (int i=0;i<=top;i++)if (book[i].getno()==bookid &&book[i].gettag()==0){return &book[i];}return NULL;}void bookdata(); //客房库维护void disp(){for (int i=0;i<=top;i++)if (book[i].gettag()==0)book[i].disp();}~BDatabase() //析构函数,将book[]写到book.txt文件中{fstream file("book.txt",ios::out);for (int i=0;i<=top;i++)if (book[i].gettag()==0)file.write((char *)&book[i],sizeof(book[i]));file.close();}};void BDatabase::bookdata(){char choice;char bname[40];int bookid;Book *b;while (choice!='0'){cout <<"\n\n\n\t\t\t客房信息"<<endl<<endl;cout<<"\n\t\t\t1 新增\n\n\t\t\t2 更改\n\n\t\t\t3 删除\n\n\t\t\t4 查找\n\n\t\t\t5 显示\n\n\t\t\t6 全删\n\n\t\t\t0 返回"<<endl;cin >> choice;switch (choice){case '1':cout << "输入客房编号:";cin >> bookid;cout << "输入客房描述:";cin >> bname;addbook(bookid,bname);break;case '2':cout << "输入客房编号:";cin >> bookid;b=query(bookid);if (b==NULL){cout <<" 该客房不存在"<<endl;break;}cout << "输入新的客房描述:";cin >> bname;b->setname(bname);break;case '3':cout <<"输入客房编号:";cin >> bookid;b=query(bookid);if (b==NULL){ cout <<" 该客房不存在" << endl;break;}b->delbook();break;case '4':cout << "输入客房编号:";cin >> bookid;b=query(bookid);if (b==NULL){cout <<" 该客房不存在"<< endl;break;}b->disp();break;case '5':disp();break;case '6':clear();break;default:cout<<"正在返回主界面...";}}}void main() //main() 函数的实现,程序的主界面的引导{ char choice;int bookid,customerid;RDatabase customerDB;customer *r;BDatabase BookDB;Book *b;while(choice!='0'){ cout <<endl<<endl<<"\t\t 酒店客房预订管理\n\n\n";cout <<"\t\t\t1 订房\n\n\t\t\t2 退订\n\n\t\t\t3 客房信息\n\n\t\t\t4 客户信息\n\n\t\t\t0 退出"<<endl;cin >> choice;switch (choice){case '1':cout <<"============\n输入客户编号:";cin >>customerid;cout <<"输入客房编号:";cin >>bookid;r=customerDB.query(customerid);//按编号查找if (r==NULL){cout <<" 不存在的客户,不能预订"<< endl;break;}b=BookDB.query(bookid);if (b==NULL){cout <<" 不存在的客房,不能预订"<< endl;break;}if (b->borrowbook()==0){cout << " 该客房已预订,不能预订"<< endl;break;}r->borrowbook(b->getno());break;case '2':cout<<"============\n输入客户编号:";cin >>customerid;cout << "输入客房编号:";cin >>bookid;r=customerDB.query(customerid);if (r==NULL){cout <<" 不存在的客户,不能退订" << endl;break;}b=BookDB.query(bookid);if (b==NULL){cout <<" 不存在的客房,不能退订" <<endl;break;}b->retbook();r->retbook(b->getno());break;case '3':BookDB.bookdata();break;case '4':customerDB.customerdata();break;default:cout<<"正在写入数据库......谢谢使用!";}}}数理系课程设计评分表教师签名:日期:。

相关主题