项目记录 / C++实现景区参观预约系统

目录

一、设计目标

二、设计思路

三、设计方案

四、运行结果

五、可改进部分

六、源代码


一、设计目标

 

用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

  • 12
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现景区参观预约系统,可以按照以下步骤进行: 1. 设计数据结构 首先需要确定系统中需要存储的数据,一般包括景点信息、预约信息、游客信息等。可以使用结构体或来表示这些数据,例如: ```cpp struct Spot { int id; // 景点编号 string name; // 景点名称 int capacity; // 容纳人数 }; struct Reservation { int id; // 预约编号 int spotId; // 预约的景点编号 string visitorName; // 游客姓名 int visitorNum; // 游客人数 Date date; // 预约日期 }; class Visitor { public: string name; // 游客姓名 string phone; // 游客电话 vector<Reservation> reservations; // 游客预约记录 }; ``` 2. 实现增删改查功能 根据需求,实现景点、预约、游客的增加、删除、修改、查询等功能。例如: ```cpp class SpotManager { public: bool addSpot(const Spot& spot); // 添加景点 bool removeSpot(int id); // 删除景点 bool updateSpot(int id, const Spot& spot); // 修改景点信息 Spot* findSpot(int id); // 查找景点 vector<Spot>& getAllSpots(); // 获取所有景点 }; class ReservationManager { public: bool addReservation(const Reservation& reservation); // 添加预约 bool removeReservation(int id); // 删除预约 bool updateReservation(int id, const Reservation& reservation); // 修改预约信息 Reservation* findReservation(int id); // 查找预约 vector<Reservation>& getAllReservations(); // 获取所有预约 }; class VisitorManager { public: bool addVisitor(const Visitor& visitor); // 添加游客 bool removeVisitor(const string& name); // 删除游客 bool updateVisitor(const string& name, const Visitor& visitor); // 修改游客信息 Visitor* findVisitor(const string& name); // 查找游客 vector<Visitor>& getAllVisitors(); // 获取所有游客 }; ``` 3. 实现预约限制 为了确保景区安全和游客体验,需要对预约进行限制。例如,可以限制每个游客每天只能预约一次,每个景点每天最多容纳一定数量的游客等。可以在添加预约时进行判断和限制。 4. 实现交互界面 最后,可以实现一个简单的交互界面,让用户可以方便地进行预约等操作。可以使用命令行界面或者图形界面,根据实际需求选择实现方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值