银行排队系统(C++实现)

该系统项目由本人使用C++完成,源码已放到GitHub上,在之后将会发布Java实现版。


文章目录

  • 银行排队系统(C++实现)
  • 前言
  • 一、需求分析
  • 二、系统的实现
    • 1.面向对象的三大特性
    • 2. 类的设计
    • 3. 部分功能流程图介绍
  • 三、实验结果展示
  • 总结

前言

为了方便银行工作者的管理工作以及顾客的便利,特地编写了银行排队系统,以满足管理员对顾客信息的快捷高效管理录入、删除、修改和保存的要求 ,并且实现查询浏览顾客信息以及针对不同类别的顾客的插入功能。


一、需求分析

本系统具有录入、查询、删除、统计、浏览、插入,查找以及保存的功能,系统中关于顾客的信息由账号、年龄、性别、电话号、姓名组成,系统包括两个类,一个是顾客的信息类,该类的设计主要是用于单个顾客对象的各种信息的存储并进行各种功能操作。另一个是银行信息链表类,是用于创建链表来存储多个对象信息,并对整个顾客信息链表进行操作。
客户类分为普通客户和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插入顾客信息模块

插入模块首先接受用户输入,将要插入到哪个位置,然后利用链表在该处插入一个新结点,录入顾客信息,这个模块目的是针对年龄比较大的顾客,使其可以优先接受服务。如果输入的顾客已经存在将会询问是否进行修改,如果不存在就会添加新顾客信息,并且询问是否继续添加。

三、实验结果展示

主界面的展示

添加顾客信息模块

修改顾客信息模块

查询顾客信息模块

总结

通过这个实验加深了我对面向对象程序设计的理解,每个类的实现是项目完成的基石,所以要设计好类的功能与类间的关系。
此项目由本人设计实现,可能有考虑不周之处,希望大家能提出宝贵的意见,也希望大家能给我之处不足。

银行排队管理系统(C++实现)相关推荐

  1. 基于java+ssm+vue+mysql的银行排队叫号系统

    项目介绍 银行排队叫号系统是以科学合理的机构组织合作.流畅疏通的信息渠道为平台,以客户基本信息.计算机.Internet网络.网络管理软件信息技术为手段建立的信息服务管理系统.系统将借助高速和先进的计 ...

  2. 基于单片机的银行排队叫号系统(Keil工程文件+Proteus仿真原理图+过程详解+全套文档)

    目 录 摘 要 I ABSTRACT II 1 绪论 1 1.1 课题来源 1 1.2 国内外发展状况 1 1.3 有线系统与无线系统 3 1.4 发展前景 4 1.5 系统的设计目的 4 2 系统的 ...

  3. 基于STC单片机的排队管理系统的设计

    摘要:为改善营业窗口的服务质量和工作效率,解决枯燥无序的排队问题,采用STC89C52单片机控制语音芯片.打印机.LCD显示屏来模拟人工叫号过程,完成号码的打印.存储.显示及播报工作:采用MAX485 ...

  4. 某银行大型管理系统端到端持续集成和交付实践

    背景 传统的银行IT系统研发流程从需求提出到产品交付往往具有较长的研发周期,纵观银行当下面临的市场环境,个人信贷消费升级,资管需求旺盛,普惠金融成为国家战略,来自银行同业和互联网金融的压力扑面而来,谁 ...

  5. c 语言银行排队系统,C++实现银行排队系统

    #include #include #include int cnt=0; //当日客流量 int sum=0; //当日客户排队总时间 typedef struct pnode{ int numbe ...

  6. mfc 子窗体 按钮不触发_资深程序员用c++开发MFC银行排队叫号系统,小白看了也能学会...

    这个C++ 银行排队叫号系统是看了书后写出来的程序,运用于MFC理念编写,我看的书是谭浩强的<C++面向对象程序设计>相对计科的书少了前六章 直接从对象讲起,这本书也是本班使用人数最多的一 ...

  7. 银行排队系统的设计与实现(源代码)

    (该系统在DEV编译器中不出现问题,在VC6.0中,要注意这样子设置就可以了,在"工程"->"设置"->"C/C++"-> ...

  8. 数据结构大作业——银行排队系统

    数据结构大作业--银行排队系统 离散事件模拟--银行业务处理 题目分析 声明部分 辅助函数 初始化窗口节点 创建顾客节点 比较四个窗口的排队人数 输出离开顾客的信息 主要函数 完整的头文件代码 离散事 ...

  9. C#——Windows银行储蓄管理系统

    在银行储蓄管理系统中,普通帐户(Account)和VIP账号(VipAccount)都包含账户(CreditNo),余额(Balance)等基本数据信息,都提供创建帐户,存款(Withdtaw),取款 ...

  10. 银行信贷管理系统的客户关系管理子模块

    一.概要 作为<银行信贷管理系统>项目开发组的程序员,按要求完成: 数据库的创建: 数据表的创建: 数据的操作. 二.实施步骤和内容 <银行信贷管理系统>的E-R图如图2.7 ...

最新文章

  1. ext 动态赋值text_JQuery中html,val,text-取值赋值的区别-
  2. BZOJ 2288 贪心 +链表
  3. 线性代数在计算机视觉的应用,10种线性代数在数据科学中的强大应用(内附多种资源)...
  4. requirej入门(一)
  5. 沙场白帽老兵聊未来的挖洞方向及其它
  6. discuz6.1.0 弹出无效的图片文件解决办法
  7. google 插件_Google浏览器常用插件与使用小技巧
  8. json数组转json对象(利用map()函数)
  9. 如何导入支付宝的SDK及其模拟使用
  10. xml中外部引用DTD文档
  11. android照片裁剪
  12. win10新建虚拟机网络配置未连接服务器,Win10系统VMWare虚拟机无法连接网络怎么办?...
  13. 归并排序---------数构
  14. 初识-Python-day03
  15. Android 解决 adapter.notifyDataSetChanged() 不起作用
  16. python打地鼠游戏代码_Python 0基础开发游戏:打地鼠(详细教程)VS code版本
  17. 30天简单了解Java-Day5深入类和对象
  18. 手机无网状态下获取经纬度,离线定位的方法。
  19. 分享3款在线图片处理工具,解决图片问题不用担心
  20. Java人员该如何站稳脚跟 需要具备哪些技能

热门文章

  1. android视频裁剪工具类,裁剪切视频工具
  2. 深信服测试开发日常实习岗位一面凉经(来自李某)
  3. 关于数据库时区,这么多奥秘你都知道么?
  4. G Parenthesis
  5. 带你走进多媒体世界:视频文件是怎么播放出来的
  6. DBA_实践指南系列9_Oracle Erp R12应用补丁AutoPatch/AutoControl/AutoConfig(案例)
  7. 华为云学院给大学生的献礼:轻松玩转微认证
  8. Calibre转换电子书格式
  9. 数学建模——相关系数(1)——皮尔逊相关系数(Person)
  10. 日积(Running)月累(ZSSURE):Learning How to Learn,学习习惯