银行排队系统(C++实现)
该系统项目由本人使用C++完成,源码已放到GitHub上,在之后将会发布Java实现版。
前言
为了方便银行工作者的管理工作以及顾客的便利,特地编写了银行排队系统,以满足管理员对顾客信息的快捷高效管理录入、删除、修改和保存的要求 ,并且实现查询浏览顾客信息以及针对不同类别的顾客的插入功能。
一、需求分析
本系统具有录入、查询、删除、统计、浏览、插入,查找以及保存的功能,系统中关于顾客的信息由账号、年龄、性别、电话号、姓名组成,系统包括两个类,一个是顾客的信息类,该类的设计主要是用于单个顾客对象的各种信息的存储并进行各种功能操作。另一个是银行信息链表类,是用于创建链表来存储多个对象信息,并对整个顾客信息链表进行操作。
客户类分为普通客户和VIP客户,VIP客户具有特殊的权限,在银行排队时可以在普通客户之前完成业务办理,在现实生活中也是如此。
二、系统的实现
1.面向对象的三大特性
三大特性包括继承、多态和封装。继承可以有效的实现代码的重用,因为继承时可以将公共的属性和功能放在父类中,其子类只需要定义自己特有的属性和功能即可,实现了代码的复用。封装是将属于类的方法和属性进行隐藏,对外仅暴露一个接口,通过这个接口完成相应的操作,而使用者并不知道内部的实现形式。多态是针对继承而言的,方法定义时传入父类的参数,然后程序在调用这个方法时可以针对不同的子类做出不同的操作,这里子类对象要对父类的方法进行重写以实现多态。
2. 类的设计
顾客信息类中的属性和成员函数
函数名称 | 函数功能 |
---|---|
customer(string a,char *b,char c,int d,string e) | 构造函数 |
string getID() | 返回顾客账号 |
char* getname() | 返回顾客姓名 |
string gettel() | 返回顾客电话 |
int getage() | 返回顾客年龄 |
char getsex() | 返回顾客性别 |
friend class client_queue | 友元类 |
银行信息链表类中个成员函数的功能:
函数名称 | 函数功能 |
---|---|
client_queue() | 构造函数 |
~client_queue() | 析构函数 |
void Find(char Name[10]) | 按名字查找 |
void Find(string ID) | 按账号查找 |
void common_Add() | 普通顾客添加 |
void Delete() | 用于删除顾客信息 |
int TJ() | 用于统计顾客 |
void Save() | 保存信息 |
void Load() | 数据读入 |
void vip_Add() | VIP顾客添加 |
void customer_Insert(int d) | 在指定位置添加顾客 |
void Modify(string ID) | 修改顾客信息 |
void Output(customer *p) | 预览顾客信息 |
void DesTory() | 清除客户信息 |
3. 部分功能流程图介绍
3.1录入顾客模块
该模块创建新的链表结点来接受输入的数据,当一组数据输入完成后,首先判断是否添加过,如果存在该用户信息则询问是否进行修改;如果没有添加过该客户则进行添加。添加完成后判断是否继续输入,若选择否则返回主界面将其保存;若继续输入则继续创建新的结点继续输入顾客信息数据,将其保存在文件当中。普通用户则是按顺序添加顾客信息,直接在链表的尾部添加顾客;VIP顾客则是在链表的头部添加,如果是第一个VIP用户直接头插法,再有VIP用户则就按照VIP顺序插入到前一个VIP客户的后面。
3.2删除顾客模块
输入要删除的顾客的账号信息,然后在文件中进行查找,若找不到,则提示无该顾客。若是找到,先显示将要删除的顾客的信息,然后询问是否删除,如果选择删除就对存储该数据链的链表结点进行删除,然后它的上一个链表结点的next指向将要被删除结点的next。如果没有找到将要删除的顾客,将会给出相应的提示并等待返回上一级。
3.3修改顾客信息模块
根据用户传入的账号参数,找到将要修改的顾客信息,如果存在显示出顾客的信息,通过选择,修改指定的顾客信息,然后判断是否继续修改;如果不存在,将提示不存在该客户信息。
3.4查询顾客信息模块
查询已存档的顾客信息,可分为按账号查询和按姓名查询以及按手机号查询。在输入对应信息后判断输入是否存在,若存在就将相应的顾客信息显示出来,若不存在就提示不存在该客户查询失败,并退出查询模块。在查询到指定顾客信息并且显示后会提示是否继续查询,如果选择否将会退出该功能模块。
3.5插入顾客信息模块
插入模块首先接受用户输入,将要插入到哪个位置,然后利用链表在该处插入一个新结点,录入顾客信息,这个模块目的是针对年龄比较大的顾客,使其可以优先接受服务。如果输入的顾客已经存在将会询问是否进行修改,如果不存在就会添加新顾客信息,并且询问是否继续添加。
三、实验结果展示
主界面的展示
添加顾客信息模块
修改顾客信息模块
查询顾客信息模块
总结
通过这个实验加深了我对面向对象程序设计的理解,每个类的实现是项目完成的基石,所以要设计好类的功能与类间的关系。
此项目由本人设计实现,可能有考虑不周之处,希望大家能提出宝贵的意见,也希望大家能给我之处不足。