C/C++ 课程设计 | 银行管理系统

news2024/11/19 19:39:49

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 关注专栏: 数据结构和算法成神路【精讲】优质好文持续更新中……🚀🚀🚀

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


本篇文章实现了一个很简单的银行管理系统,主要包括:查询、存款、提款、转移等功能,下面就来详细讲解下。

一、设计思路

银行管理系统的整体流程图如下所示。

图1 流程图

如上图所示,用户首先通过登录界面登录系统,系统中已提前存储了用户信息。登录成功后即可对当前账户进行操作,主要包括:查询、存款、提款、转移等。

类的结构设计如下所示。

#ifndef BANK_H
#define BANK_H

#include <iostream>
#include <sstream>
#include <string>
#include <fstream>
#include <unistd.h>
#include <windows.h>
#include <stdio.h>
#include <ctime>
#include<iomanip>

using namespace std;

struct Node{
    string accountNo;
    string accountName;
    int password;
    double ballance;
    char vip;
};


class Bank_System{
public:
    Bank_System();
    ~Bank_System();
    void Menu();
    bool Verify_Identity();
    void Read_Information();
    void Write_Information();
    void Analysis(const string &str);
    void Inquiry();
    void Deposit();
    void Withdraw();
    void Transfer();
    void Quit();
    void delay(int time);
    bool Get_Accountinfo(const string &accountNo);
    int Get_Accountinfo_by_accountName(const string &accountNo);
    void Input();
    void Return_Confirm();
    void Print_Start();
    void Update();
    void Print_Space(int num, const string &str);
private:
    Node member_current;
    Node member[1000];
    int num;
    bool flag;
    int id;
    string fileName;
};



#endif // BANK_H

二、功能实现

2.1 查询

查询功能主要是对当前账户的余额进行查询,界面如下所示。

图2 查询界面

 如上图所示,显示了当前账户的余额,然后输入 continue 或 Quit 进行下一步的操作。

查询功能的主要代码实现如下所示。

void Bank_System::Inquiry()
{
    Print_Start();
    Print_Space(38, "Inquiry\n\n\n");
    cout.setf(ios::fixed);
    Print_Space(20, "");
    cout<<"Dear "<<member_current.accountName<<", your balance is "
        <<setprecision(2)<<member_current.ballance<<endl;
    cout.unsetf(ios::fixed);
    Return_Confirm();
}

2.2 存款

存款功能可以向账户里存入资金,界面如下所示。

图3 存款

 如上图所示,显示了对当前账户存入100,然后输入 continue 或 Quit 进行下一步的操作。

存款功能的主要代码实现如下所示。

void Bank_System::Deposit()
{
    Print_Start();
    Print_Space(38, "Deposit\n\n");
    Print_Space(3, "Please input the amount to save: ");
    double tmp_balance = 0;
    cin>>tmp_balance;
    member_current.ballance += tmp_balance;
    cout<<endl;
    cout.setf(ios::fixed);
    Print_Space(17, "");
    cout<<"Dear Ryan, your balance has been updated to "<<fixed<<setprecision(2)<<member_current.ballance<<endl;
    cout.unsetf(ios::fixed);
    Update();
    Write_Information();
    Return_Confirm();
}

2.3 提款

提款功能是从当前账户中取出资金,界面如下所示。

图4 提款

 如上图所示,显示了对当前账户取款 100,然后输入 continue 或 Quit 进行下一步的操作。

提款功能的主要代码实现如下所示。

void Bank_System::Withdraw()
{
    Print_Start();
    Print_Space(38, "Withdraw\n\n\n");
    Print_Space(3, "Please input the amount to withdraw: ");
    double money;
    cin>>money;
    if(money > member_current.ballance){
        cout<<endl;
        cout.setf(ios::fixed);
        Print_Space(25, "");
        cout<<"Sorry, "<<money<<"  > "<<setprecision(2)<<member_current.ballance<<endl;
        cout.unsetf(ios::fixed);
        Return_Confirm();
        return;
    }else if(member_current.vip == 'V' && money > 3000){
        cout<<endl;
        Print_Space(25, "Sorry, Remove up to 3000!\n");
        Return_Confirm();
        return;
    }else if(member_current.vip == 'N' && money > 2000){
        cout<<endl;
        Print_Space(25, "Sorry, Remove up to 2000!\n");
        Return_Confirm();
        return;
    }
    member_current.ballance -= money;
    cout<<endl;
    Print_Space(17, "");
    cout.setf(ios::fixed);
    cout<<"Dear Ryan, your balance has been updated to "
        <<setprecision(2)<<member_current.ballance<<endl;
    cout.unsetf(ios::fixed);
    Update();
    Write_Information();
    Return_Confirm();
}

2.4 转移

转移是将当前账户中的钱转移到其它账户,界面如下所示。

图5 转移

 如上图所示,对账户 0123 转移了 100,然后输入 continue 或 Quit 进行下一步的操作。

转移功能的主要代码实现如下所示。

void Bank_System::Transfer()
{
    Print_Start();
    Print_Space(38, "Transfer\n\n");
    Print_Space(0, "Please input the target account number: ");
    string accountNo = "";
    cin>>accountNo;
    int target_id = Get_Accountinfo_by_accountName(accountNo);
    if(target_id == -1) {
        cout<<endl;
        Print_Space(28, "error accountNo\n\n");
        Return_Confirm();
        return;
    }
    cout<<endl;
    cout<<"Please input the amount to transfer: ";
    double money;
    cin>>money;
    if(member_current.vip == 'V' && money > 20000){
        cout<<endl;
        Print_Space(28, "error, Transfer up to 20000\n\n");
        Return_Confirm();
        return;
    }else if(member_current.vip == 'N' && money > 10000){
        cout<<endl;
        Print_Space(28, "error, Transfer up to 10000\n\n");
        Return_Confirm();
        return;
    }
    member_current.ballance -= money;
    member[target_id].ballance += money;
    double d_money = money;
    if(member_current.vip == 'V')
        member_current.ballance -= d_money*0.005;
    else if(member_current.vip == 'N')
        member_current.ballance -= d_money*0.001;
    cout.setf(ios::fixed);
    cout<<endl;
    Print_Space(13, "");
    cout<<"Transfer success! Your balance has been updated to "
        <<fixed<<setprecision(2)<<member_current.ballance<<endl;
    cout.unsetf(ios::fixed);
    Update();
    Write_Information();
    cout<<endl;
    Return_Confirm();
}

三、总结

本篇文章的银行管理系统功能比较简单,有需要的同学可以在本篇文章的基础上增加其它新功能,比如:注册账户,转账功能更详细的操作等。


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/62683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DP83TG720SWRHARQ1 IC TRANSCEIVER 接口芯片、TCAN1051VDRBTQ1

1、TCAN1051VDRBTQ1 具有 CAN FD 和故障保护功能的汽车类 CAN 收发器。 详细参数 类型&#xff1a;收发器 协议&#xff1a;CANbus 驱动器/接收器数&#xff1a;1/1 双工&#xff1a;半 接收器滞后&#xff1a;120 mV 数据速率&#xff1a;2Mbps 电压 - 供电&#xff1a;4.5V ~…

黄菊华老师,Java Servlet毕业设计毕设辅导课(5):Servlet配置虚拟路径映射

Servlet配置虚拟路径映射 在 web.xml 文件中&#xff0c;一个 <servlert-mapping> 元素用于映射一个 Servlet 的对外访问路径&#xff0c;该路径也称为虚拟路径。例如&#xff0c;在《第一个Servlet程序》教程中&#xff0c;hello 所映射的虚拟路径为“/hi”。 创建好的…

数据结构—平衡二叉树

文章目录查询数据的时间复杂度平衡二叉树旋转策略1、LL型旋转&#xff1a;2、RR型旋转&#xff1a;3、LR型旋转&#xff1a;4、RL型旋转&#xff1a;补充&#xff1a;————————————————————————————————查询数据的时间复杂度 首先&#xff0c;…

MySQL学习笔记(十二)锁

1.锁的类型 InnoDB实现了如下两种标准的行级锁&#xff1a; 共享锁&#xff08;S Lock&#xff09;&#xff1a;允许事务对一条行数据进行读取 排他锁&#xff08;X Lock&#xff09;&#xff1a;允许事务对一条行数据进行删除或更新 如果一个事务T1已经获得了行r的共享锁&…

委派设计模式

一、委派模式 1、定义 委派模式&#xff08;Delegate Pattern&#xff09;又称作委托模式&#xff0c;是一种面相对性的设计模式&#xff0c;允许对象组合实现与继承相同的代码重用&#xff0c;属于行为型设计模式&#xff0c;不属于GoF的23种设计模式。 委派模式的基本作用是…

Unity与IOS⭐一、百度语音IOS版Demo调试方法

文章目录 🟥 SDK下载与配置官网包名1️⃣ SDK下载地址2️⃣ 配置官网的包名3️⃣ 百度语音IOS版教程地址🟧 配置SDK Demo1️⃣ 配置License2️⃣ 配置唤醒词文件3️⃣ 打包🟨 Demo测试🟥 SDK下载与配置官网包名 1️⃣ SDK下载地址 SDK下载地址:https://ai.baidu.com…

JAVA中如何精确取到时间间隔

文章目录0 写在前面1 使用方法2 举例3 写在最后0 写在前面 做业务的时候&#xff0c;总要统计数据&#xff0c;几月份到几月份的全部数据。这个时候就要找到起始月份的具体时间和终止月份的具体时间。 此时我们用原始的Date类去处理就比较麻烦&#xff0c;可以自己写一个工具类…

jsp网络申报审批系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 网络申报审批系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql&#xff0c;使用…

[矩阵论] Unit 1. 线性空间与线性变换 - 知识点整理

注: 以下内容均由个人整理, 不保证完全准确, 如有纰漏, 欢迎交流讨论参考: 杨明, 刘先忠. 矩阵论(第二版)[M]. 武汉: 华中科技大学出版社, 2005 1 线性空间与线性变换 1.1 线性空间 线性空间 Def 1.1: 设 VVV 是一个非空集合(V≠∅V\neq \varnothingV​∅)&#xff0c;FF…

Unity与IOS⭐最基础的交互演示

文章目录 🟥 本章的交互效果🟧 创建IOS代码1️⃣ 创建代码文件2️⃣ 代码文件🚩 Interaction.h🚩 Interaction.m🟨 测试试试吧🟥 本章的交互效果 本章演示unity调用IOS代码,IOS并返回值。 🟧 创建IOS代码 我们的Unity代码一个脚本就好了,而IOS代码需要两个脚…

【AI】Python 实现 KNN 手写数字识别

KNN 算法 1. 题目介绍 K近邻&#xff08;K-Nearest Neighbor, KNN&#xff09;是一种最经典和最简单的有监督学习方法之一。K-近邻算法是最简单的分类器&#xff0c;没有显式的学习过程或训练过程&#xff0c;是懒惰学习&#xff08;Lazy Learning&#xff09;。当对数据的分…

如何搭建一个自己的音乐服务器 审核中

点赞再看&#xff0c;动力无限。 微信搜「 程序猿阿朗 」。 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录&#xff0c;有很多知识点和系列文章。 最近发现&#xff0c;经常用的网易云音乐&#xff0c;有很多歌曲下架了&#xff0c;能听的越来越少了&#xff1b;…

设计模式之中介者模式(十五)

目录 1. 背景 1.1 智能家庭管理项目 1.2 中介者模式概述 2. 中介者模式 2.1 中介者模式解决上述问题 1. 背景 1.1 智能家庭管理项目 智能家庭项目&#xff1a; 智能家庭包括各种设备&#xff0c;闹钟、咖啡机、电视机、窗帘 等。主人要看电视时&#xff0c;各个设备可以协…

7 支持向量机

支持向量机 支持向量机(SVM)是在统计学习理论基础上发展起来的一种数据挖掘方法&#xff0c;1992 年由Boser, Guyon和Vapnik提出&#xff0c;在解决小样本、非线性、高维的回归和分类问题上&#xff0c; 有许多优势。 1 支持向量分类概述 支持向量分类以训练样本集为数据对象…

支持向量机核技巧:10个常用的核函数总结

支持向量机是一种监督学习技术&#xff0c;主要用于分类&#xff0c;也可用于回归。它的关键概念是算法搜索最佳的可用于基于标记数据(训练数据)对新数据点进行分类的超平面。 一般情况下算法试图学习一个类的最常见特征(区分一个类与另一个类的特征)&#xff0c;分类是基于学…

[附源码]JAVA毕业设计律师事务所网站(系统+LW)

[附源码]JAVA毕业设计律师事务所网站&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&a…

ubuntu20.04安装anaconda3搭建python环境

1.清华源下载anaconda3 清华源anaconda软件镜像网站&#xff1a; Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 下载完成在终端打开Downloads 运行 bash Anaconda3-5.3.1-Linux-x86_64.sh 进入到下载页面 紧接着你可以使用conda --…

HTTP抓包神器---Fiddler

今天我们介绍一个好用的抓包工具.是针对于HTTP协议的抓包工具. Fiddler 下载地址 下载工具当然是要去官网下载啦. 这里为了防止有些人在网上找不到下载路径.我们直接把下载路径放在下面. https://www.telerik.com/download/fiddler 下载 点击上述链接以后会直接跳转到下…

蓝海创意云·11月大事记 || 12月,暖心相伴

秋尽冬生&#xff0c;日短天寒 告别了立冬与小雪 时光不紧不慢开启了新一月的篇章 万物冬藏&#xff0c;沉淀酝酿 站在十二月的路口 蛰伏打磨&#xff0c;静待厚积而薄发 导 读 ● 客户端更新&#xff1a;新增PSD通道合成选项 ● 渲染案例&#xff1a;绝代双骄重启江湖…

K8S - Pod 的概念和简介

1. POD的基本概念 Pod 是K8s 系统中可以创建&#xff08;部署&#xff09;和管理的最小单元。 Pod 里面可以包含多个容器(多实例&#xff09;&#xff0c;是一组容器的集合。 也就是讲K8S 不会直接管理容器 1个POD中的容器共享网络命名空间&#xff08;共享ip&#xff09; P…