银行排队系统

免责声明

以下内容可能引起不适,请18岁以下儿童在大人配同下观看

主要内容:

设计并实现银行取号模拟系统,模拟取号的整个过程,实现取号、排队、服务、及管理等功能。系统能够记录用户及工作人员信息的统计和分析,可以进一步优化银行营业厅的排队问题,提高银行业务办理效率。

基本要求:

(1)首先设计一个含有多个菜单项主控菜单子程序,以链接系统的各项子功能,方便用户使用本系统。
(2)采用链式队列存储银行排队系统中的顾客号信息,用结构数组存放办理银行业务的窗口号信息。
(3)本系统分为一下6个功能模块,分别是:顾客到达,顾客离开,查看业务办理,查看排队情况,系统查询,退出。

关键问题描述

(1)如何将不同优先级的客户放入到对应最优窗口。
(2)如何模拟计算客户的到达,服务,离开的过程。
(3)如何判断当前时间下客户是否已经离开队列。
(4)如何模拟计算客户的等待时间。
(5)如何同一各队列的时间线

拟采用解决问题的方法

(1)建立不同的队列来存储不同优先及的客户,对于优先级相同的客户我们将队列在排人数排序确保客户进入最优队列。
(2)当客户进入时更新当前时间,并建立离开队列,检查客户是否离开,保证各队列的时间线统一。
(3)经验总结,通过大量的实践结合其中的具体情况,进行归纳与分析, 使之系统化、理论化,上升为经验。

各函数申明及作用

1bool comp1(user x, user y) //用于将顾客按到达时间排序2bool comp2(Window x, Window y) //用于选择出最佳窗口3void init() //初始化各变量4void transform(int num) //时间转化5void show() //查看当前各窗口人数6void count_time(user& p) //计算离开时间和更新等待时间7void check_leave(int time) //检查队列中是否有离开的人8void enter_bank(user& p) //进入银行取票9void charts(int n) //打印表单10void automatic() //自动模式11void manual() //手动模式12int manual_interface() //手动模式下的界面13void welcome() //欢迎界面14void strat_interface()//开始动画15main()//主函数

函数调用图
源码
strat_interface.h(开机动画可不要)

#pragma once
#include<iostream>
#include <windows.h>
#include <deque>
#include <vector> 
void SetWindowSize(int cols, int lines){
   //设置窗口大小
    system("title 银行");//设置窗口标题
    char cmd[30];
    sprintf_s(cmd, "mode con cols=%d lines=%d", cols * 2, lines);//一个图形■占两个字符,故宽度乘以2
    system(cmd);//system(mode con cols=88 lines=88)设置窗口宽度和高度
}

void SetCursorPosition(const int x, const int y){
   //设置光标位置
    COORD position;
    position.X = x * 2;
    position.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), position);
}

void SetColor(int colorID){
   //设置文本颜色
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), colorID);
}

void SetBackColor(){
   //设置文本背景色
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
        FOREGROUND_BLUE |
        BACKGROUND_BLUE |
        BACKGROUND_GREEN |
        BACKGROUND_RED);
}

class Point{
   
public:
    Point() {
   }
    Point(const int x, const int y) : x(x), y(y) {
   }
    void Print();
    void PrintCircular();
    void Clear();
    void ChangePosition(const int x, const int y);
    bool operator== (const Point& point) {
    return (point.x == this->x) && (point.y == this->y); }
    int GetX() {
    return this->x; }
    int GetY() {
    return this->y; }
private:
    int x, y;
};

void Point::Print(){
   //输出方块
    SetCursorPosition(x, y);
    std::cout << "■";
}

void Point::PrintCircular(){
   //输出圆形
    SetCursorPosition(x, y);
    std::cout << "●";
}

void Point::Clear(){
   //清除输出
    SetCursorPosition(x, y);
    std::cout << "  ";
}

void Point::ChangePosition(const int x, const int y){
   //改变坐标
    this->x = x;
    this->y = y;
}

class StartInterface{
   
public:
    StartInterface() : speed(35) {
   
        startsnake.emplace_back(Point(0, 14));//Éß
        startsnake.emplace_back(Point(1, 14));
        startsnake.emplace_back(Point(2, 15));
        startsnake.emplace_back(Point(3, 16));
        startsnake.emplace_back(Point(4, 17));
        startsnake.emplace_back(Point(5, 18));
        startsnake.emplace_back(Point(6, 17));
        startsnake.emplace_back(Point(7, 16));
        startsnake.emplace_back(Point(8, 15));
        startsnake.emplace_back(Point(9, 14));

        textsnake.emplace_back(Point(-22, 14));//B
        textsnake.emplace_back(Point(-22, 15));
        textsnake.emplace_back(Point(-22, 16));
        textsnake.emplace_back(Point(-22, 17));
        textsnake.emplace_back(Point(-22, 18));
        textsnake.emplace_back(Point(-21, 14));
        textsnake.emplace_back(Point(-21, 16));
        textsnake.emplace_back(Point(-21, 18));
        textsnake.emplace_back(Point(-20, 14));
        textsnake.emplace_back(Point(-20, 16));
        textsnake.emplace_back(Point(-20, 18));
        textsnake.emplace_back(Point(-19, 15));
        textsnake.emplace_back(Point(-19, 16));
        textsnake.emplace_back(Point(-19, 17));



        textsnake.emplace_back(
  • 18
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值