目录
一、设计目标
用C++实现岳麓书院参观预约系统,系统应具有以下功能:
1.所有游客都必须先注册才能预约,注册需要游客提供身份信息、姓名、联系方式、身份证号等信息;
2.上述身份信息是将游客分类的依据,系统将根据游客的身份来收费,如:湖南大学学生免收费、普通社会人士全价票以及其他学校学生、老人、小孩、军人等半价票;
3.可提供未来三天的预约服务(包含当天),每天有N位游客预约的限额,达到限额,将不允许预约;预约时系统需要显示每日可预约余量供预约者参考;
4.预约者若计划有变,可登陆系统取消预约;
5.系统管理者可获得每日预约总人数,预约总门票收入,以及各类游客游览人数,门票收入等信息。
二、设计思路
2.1游客信息记录
创建一个类来存放游客信息,信息包括身份类别、姓名、手机号码、身份证号码、预约情况、门票价格等,每项信息都分别定义成私有数据成员,再定义相应的公有成员函数来对数据成员进行读写操作,体现C++的封装性。
2.2系统基本功能
注册、预约、系统管理等功能分别写成独立的子函数,通过在主函数中调用来完成相应操作。
2.3记忆功能
创建一个文本文件,用来记忆游客信息,保证已输入的游客信息在退出程序后不会丢失,在运行程序时能正常读入。
三、设计方案
3.1总体框图
根据设计需求,列出参观预约系统的总体结构框图如下:
其中包含了注册、预约、查询预约、取消预约和系统管理几个系统功能,下面分别对类、主函数、系统功能和文件功能的设计进行介绍。
3.2类
3.2.1类的声明
1.创建一个头文件Visitor.h,定义类class Visitor,包含七个私有数据成员,分别表示身份类别、姓名、手机号码、身份证号码、是否预约、预约日期和门票价格:
private:
string m_Identity;
string m_Name;
string m_Phone;
string m_Id;
string m_Isorder;
string m_Date;
int m_Price;
2.每一个数据成员对应两个公有成员函数set和get,分别进行写操作和读操作:
public:
void setIdentity(string _Identity);
void setName(string _Name);
void setPhone(string _Phone);
void setId(string _Id);
void setIsorder(string _Isorder);
void setDate(string _Date);
void setPrice(int _Price);
string getIdentity();
string getName();
string getPhone();
string getId();
string getIsorder();
string getDate();
int getPrice();
3.2.2成员函数的定义
在另一个文件Visitor.cpp中定义上述成员函数,如读写身份类别的函数定义为:
void Visitor::setIdentity(string _Identity)
{
m_Identity=_Identity;
}
string Visitor::getIdentity()
{
return m_Identity;
}
其他成员函数类似。
3.3主函数
1.主函数文件中要包含类、系统功能和文件功能的头文件:
#include "Visitor.h"
#include "Enroll_Order.h"
#include "File.h"
2.在主函数中创建一个类Visitor的对象数组vis[1000],用来存放游客对象。定义N=100,表示每天的预约限额为100人。定义一个数组sum[3],用来存放三天的预约人数。
3.在主函数开头调用一次读文件的子函数,将历史游客信息读入,并存到数组v