# 迷你银行系统 **Repository Path**: UtoCoo/mini-banking-system ## Basic Information - **Project Name**: 迷你银行系统 - **Description**: No description available - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-07 - **Last Updated**: 2025-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 迷你银行系统 ## 概述 这是一个使用C++编写的迷你银行系统控制台应用程序,可以模拟基本的银行操作,包括创建客户账户、存款、取款、转账以及生成交易报告等功能。 ## 系统架构 系统采用面向对象设计,主要包括以下几个组件: ### 架构图 ``` +----------------+ | BankSystem | +----------------+ | +-------------------------+-------------------------+ | | | +---------------+ +----------------+ +----------------+ | Customer | | Account | | Transaction | +---------------+ +----------------+ +----------------+ / \ +--------------+ +------------------+ | SavingsAccount| | CheckingAccount | +--------------+ +------------------+ ``` ### 类设计 1. **Utils 类**: - 提供工具函数,如账号生成、交易ID生成、日期时间处理和货币格式化 2. **Transaction 类**: - 记录交易信息,包括交易ID、日期时间、交易类型、金额、相关账户和备注 - 提供交易详情和描述的方法 3. **Account 类**(抽象基类/接口): - 定义账户基本属性:账号、客户名、余额 - 声明所有账户共有的方法:转账、添加交易记录、生成报告等 - 纯虚函数:getAccountType()、transfer() 4. **SavingsAccount 类**: - 继承自Account类 - 实现储蓄账户特有的限制:只能转账到同一客户的支票账户 5. **CheckingAccount 类**: - 继承自Account类 - 实现支票账户特有功能:可以存款、取款,可以转账到任何账户 6. **Customer 类**: - 管理客户信息和关联的账户(一个储蓄账户和一个支票账户) - 提供查看客户所有交易和生成客户报告的功能 7. **BankSystem 类**: - 作为主控制类,管理所有的客户和账户 - 提供客户注册、账户查询、显示所有账户和生成全局交易报告的功能 ## 关键特性 1. **账户类型和限制**: - 储蓄账户:只能转账到同一客户的支票账户 - 支票账户:可以存款、取款,可以转账到任何账户 2. **交易记录**: - 所有的存款、取款和转账操作都会创建一条交易记录 - 交易记录包含详细信息:交易ID、日期时间、类型、金额、相关账户和备注 3. **报告生成**: - 全局交易报告:包含系统中所有交易 - 客户报告:包含特定客户的所有交易 - 账户报告:包含特定账户的所有交易 4. **中国风格的账号生成**: - 格式:62XX-YYYY-ZZZZ-AAAA - 62:中国卡号标准前缀 - XX:账户类型(21为储蓄,22为支票) - YYYY:分行代码(随机生成) - ZZZZ-AAAA:账户号码(随机生成) - 系统确保生成的账号唯一性 ## 程序界面 系统提供基于控制台的交互式菜单界面,主要包括以下几个菜单: 1. **主菜单**: - 注册新客户 - 访问客户账户 - 显示所有银行账户 - 交易报告 - 退出 2. **客户菜单**: - 访问储蓄账户 - 访问支票账户 - 查看客户所有交易 - 生成客户报告 - 返回主菜单 3. **账户菜单**: - 存款(仅支票账户) - 取款(仅支票账户) - 转账 - 查看交易历史 - 生成账户报告 - 返回客户菜单 ## 面向对象设计原则的应用 1. **单一职责原则**:每个类都有明确的职责,如Transaction类专注于交易信息的管理。 2. **开放/封闭原则**:系统设计允许添加新的账户类型而无需修改现有代码。 3. **接口隔离原则**:Account类作为抽象接口,定义了所有账户共有的方法。 4. **依赖倒置原则**:高层模块不依赖于低层模块的实现细节,而是依赖于抽象。 ## 如何编译和运行 ### 编译需求 - C++17编译器(如g++) - Make工具(用于使用Makefile) ### 编译步骤 ```bash # 使用Makefile编译 make # 或者直接使用g++编译 g++ -std=c++17 -Wall -Wextra main.cpp -o bank_system ``` ### 运行程序 ```bash # 在Linux/macOS上 ./bank_system # 在Windows上 bank_system.exe ``` 使用vscode,移植的g++程序编译 ## 使用示例 ### 注册新客户 1. 从主菜单选择"1"进入注册界面 2. 输入客户名称 3. 系统会自动创建一个储蓄账户和一个支票账户 ### 访问客户账户 1. 从主菜单选择"2"进入客户访问界面 2. 输入客户名称 3. 选择要访问的账户或查看交易 ### 存款/取款/转账 1. 访问支票账户后,选择相应的操作 2. 按照提示输入金额和备注信息 3. 系统会记录交易并更新账户余额 ### 生成报告 1. 可以在不同级别生成报告:全局、客户级或账户级 2. 报告将保存为文本文件,包含相关的交易记录