模拟ATM机存取款管理系统设计(C++)

2023-05-16

模拟ATM机存取款管理系统设计

有问题欢迎私信哦
1.1问题描述:
模拟银行自动存取款机使用过程中的界面和用户交互过程,实现查询银行卡余额、取款、修改密码、退出系统等功能。
1.2基本要求(功能要求)
(1)卡号、密码输入最多三次,否则直接退出系统
(2)取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。
(3)查询功能:实现查询余额功能
(4)更改密码:实现密码更改功能,对于密码要有两次验证。
(5)锁卡功能:实现卡被锁的功能。
(6)退卡功能:实现退出系统功能。

一、 需求分析
1.1问题描述

模拟银行的自动取款机使用过程中的界面和用户交互过程。实现查询银行卡余 额、取款、修改密码、退出系统等功能。
1.2基本要求
(1) 输入的形式和输入值的范围
在这里插入图片描述
(2) 输出的形式
A.登录页面
输入卡号和密码,根据用户输入的卡号和密码,到后台文件查询,若正确则登录成功,并保存好信息已备后用。
若卡号存在和密码不匹配或无该卡号已经注销,提示该卡号已存在或已注销,保持界面三次不变等待用户的重新输入。
B.主界面页面
主要导航栏有:欢迎使用储蓄卡管理(存款、取款、修改密码、转账功能、注销退出)
C.储蓄卡开户页面
提供开户界面,由用户输入新储蓄卡的所有信息,将该信息保存到文件中,并将开户金额作为该卡的第一次存款记录存人文件。
E.存钱页面
从登录界面得到卡号,并提供数据输入界面,等待用户的输入存款金额。从后台数据库中找到该用户余额记录,修改余额,并将该存款事件的相应信息写人数据库,同时将存钱的金额显示在页面上。
F.取款页面
从登录界面得到卡号,并提供数据输入界面,等待用户输入取款金额,如果取款金额大于该用户卡上的余额则不能取款,或者将新的余额写人文件,并将本次取款事件写入文件同时将取钱的金额显示在页面上。
G.注销页面
从关闭文件,状态为注销,最后关闭整个系统。

(3) 程序所能达到的功能
A.卡号、密码输入最多三次,否则直接退出系统。
B.取款功能:取款金额受卡余额、机单笔最大取款金额及机当前剩余金额的限制。
C.查询功能:实现查询余额功能。。
D.更改密码:实现密码更改功能,对于密码要有2次验证。
E.退卡功能:实现退出系统功能
F.锁卡功能:实现卡被锁的功能。

二、概要设计
1.系统整体架构设计

在这里插入图片描述
2.模块设计
A.登录页面
输入卡号和密码,根据用户输入的卡号和密码,到后台文件查询,若正确则登录成功,并保存好信息已备后用。
若卡号存在和密码不匹配或无该卡号已经注销,提示该卡号已存在或已注销,保持界面三次不变等待用户的重新输入。
B.主界面页面
主要导航栏有:欢迎使用储蓄卡管理(存款、取款、修改密码、转账功能、注销退出)
C.储蓄卡开户页面
提供开户界面,由用户输入新储蓄卡的所有信息,将该信息保存到文件中,并将开户金额作为该卡的第一次存款记录存人文件。
E.存钱页面
从登录界面得到卡号,并提供数据输入界面,等待用户的输入存款金额。从后台数据库中找到该用户余额记录,修改余额,并将该存款事件的相应信息写人数据库,同时将存钱的金额显示在页面上。
F.取款页面
从登录界面得到卡号,并提供数据输入界面,等待用户输入取款金额,如果取款金额大于该用户卡上的余额则不能取款,或者将新的余额写人文件,并将本次取款事件写入文件同时将取钱的金额显示在页面上。
G.注销页面
从关闭文件,状态为注销,最后关闭整个系统。

3.类的定义
(1)comsumer 类(用户类)
Class comsumer 主要定制用户的成员数据,并进行登录与保存功能:
Comsumer类说明表
名称 属性 说明
ID 数据成员 用户账户数据
name 数据成员 用户姓名
Money 数据成员 用户首次金额
In 数据成员 用户身份证号
Address 数据成员 用户地址
Number 数据成员 用户电话
Passwd 数据成员 用户密码
Savemoney() 成员方法 存钱
Fetchmoney() 成员方法 取钱
Change_passwd() 成员方法 修改密码
Get_money() 成员方法 卡卡转账

(2)YH类(银行类)
YH类 主要实现用户的各种功能:
YH类说明表
名称 属性 说明
Acnum 数据成员 账户数
Set_account() 成员方法 开户功能
Del_account() 成员方法 注销账户功能
Transfer() 成员方法 转账功能
Functionshow() 成员方法 主界面显示功能
Addmoney() 成员方法 存钱功能
exitYH() 成员方法 退出系统功能

三、程序设计
主界面显示,文本输入,读入用户信息功能实现由我负责,流程图如下:
主界面显示流程
在这里插入图片描述
文本输入流程
在这里插入图片描述
读入用户信息功能实现流程
在这里插入图片描述

                                                                                   相关代码

/主界面显示/
void YH::functionshow()
{ int n;
do
{ system(“cls”);
load();
cout<<endl<<“请输入相应的操作序号进行操作:”<<endl;
cout<<"********************************************************"<<endl;
cout<<"
“<<endl;
cout<<”
1. 开户 “<<endl;
cout<<”
“<<endl;
cout<<”
2.账户登录 “<<endl;
cout<<”
“<<endl;
cout<<”
3.账户注销 “<<endl;
cout<<”
“<<endl;
cout<<”
4.退出系统 “<<endl;
cout<<”
“<<endl;
cout<<”
********************************************************"<<endl;
cout<<“→”;
cin>>n;
while(n<1||n>4)
{
cout<<“操作错误,请输入正确的操作序号!”<<endl;
cout<<“→”;
cin>>n;
}
switch(n)
{
case 1: set_account();//开户
break;
case 2:enter_account();//登录
break;
case 3: del_account();//注销
break;
case 4: exitYH();//退出
break;
}
cin.get();//输入流类istream的成员函数
}
while(true);
}

/读入用户信息功能实现/
void YH::load()
{ifstream infile(“bankdat.dat”,ios::in);//以输入方式打开文件
if(!infile)
{cerr<<“读取错误,无资料中!”<<endl;
return;
}
int n=0;
int id,m;
string nam,passw;string number;string company;string address;string in;
infile>>acnum;
for(n=0;n<acnum;n++)//全部读入
{ infile>>id;//从磁盘文件bankdat.dat读入信息
infile>>m;
infile>>nam;
infile>>passw;
infile>>company;
infile>>number;
infile>>address;
infile>>in;
account[n]->passwd;
consumer * acc = new consumer(id,nam,number,in,company,address,passw,m); //每读入一个n开辟一段内存
account[n] = acc; //赋值首地址
}
infile.close();
cout<<“读取资料正常!”<<endl;
}

四、测试结果与分析

  1. 首页
    在这里插入图片描述

  2. 开户界面

  3. 储蓄卡管理页面(包含存取款界面)
    在这里插入图片描述
    取款界面

存款界面

4.转账
转账需要转给其他账户,先在此建立第二个账户。

转账操作

转账之后根据账户金额判断转账成功。
在这里插入图片描述
4. 账户注销
在这里插入图片描述
五、总结与心得
为期一周的c++实训已经结束,但是给了我很大的影响。通过此次实训,使我明白了c++语言这门课程仅仅听课是远远不够的,上机训练也不容忽视,要把知识运用到这次的课程设计,发现还是有点困难,学到用时方恨少。通过上机训练,才能明白自己知识的不足,才能有的放矢,才能更加深刻的理解c++中的知识点。通过实训,我找到了许多知识漏洞,学到了很多以前不懂的知识,以前认为自己已经懂了的知识点也理解更加深刻了,多样化的处理问题,才是成功之道。尤其是遇到自己当时不知道如何编写的c++语言题目如何编写,通过自己的学习和同学的交流后,试编和改错,最后能够顺利的编写出来,带来了成就感,并增加了我们对c++语言的兴趣和学好c++语言的信心。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模拟ATM机存取款管理系统设计(C++) 的相关文章

随机推荐

  • 进入docker容器

    进入docker容器的三种方法 1 使用ssh登陆进容器 xff1b 2 使用nsenter nsinit等第三方工具 xff1b 3 使用docker本身提供的工具 Docker目前主要提供了docker exec和docker atta
  • docker删除容器

    删除容器使用 docker rm 命令 xff1a 1 删除容器 1 首先需要停止所有的容器 docker stop docker ps a q 2 删除所有的容器 只删除单个时把后面的变量改为container id即可 docker r
  • docker 基于Commit定制镜像

    在Docker中提供了一个命令docker commit xff0c 该命令会把对容器的修改提交成一个镜像 换句话说 xff0c 就是在原有镜像的基础上 xff0c 再叠加上容器的存储层 xff08 该存储层仅仅保存了容器所做的修改 xff
  • Ubuntu 实现shell文件的开机运行(从原理到实现)

    目录 0 Linux的开机启动顺序 1 完善 rc local service 脚本 3 创建 rc local 脚本 4 总结 设置 shell 脚本开机启动的方法有挺多 xff0c 比如 xff1a 添加到 init d 中的方法 xf
  • docker 保存镜像、加载镜像

    将镜像保存到tar包 docker save用来将一个或者多个镜像保存为一个tar文件 xff0c 默认标准输出流的方式输出 xff0c 它的具体语法如下 xff1a docker save OPTIONS IMAGE IMAGE 其中 x
  • docker 导入导出容器

    将 容器的文件系统 保存到tar包 docker export是将 容器的文件系统 导出为一个tar包 注意是操作的对象是容器 xff01 它的具体语法如下 xff1a docker export OPTIONS CONTAINER 其中
  • docker 删除镜像

    删除镜像 如果要删除本地的镜像 xff0c 可以使用 docker rmi xff08 注意rm为删除容器 xff0c 而rmi为删除镜像 xff0c 其中i代表image xff09 命令 xff0c 它的具体语法如下 xff1a doc
  • docker 构建私有Registry、私人仓库

    1 使用docker tag给busybox加上一个标签localhost 5000 busybox latest xff1b docker tag busybox localhost span class token operator s
  • mall在linux环境下的部署(基于docker容器)

    mall在docker容器下部署涉及到MySQL Redis Nginx RabbitMQ MongoDB Elasticsearch Logstash Kibana xff0c 以及Spring Boot应用部署 本人事先已经拉取过镜像了
  • docker拉取镜像速度很慢的解决方法

    将docker修改为国内镜像源 在 etc docker daemon json文件中添加下面参数 xff0c 文件不存在的话创建即可 此处使用的是中国科技大学的docker镜像源 span class token punctuation
  • 解决您的qq.exe已在防护中,链接无法打开的问题

    适用于联想电脑 出现以上情况是由于默认了联想自带的浏览器打开QQ的链接 xff0c 如果不是直接点击的话可以复制到浏览器打开 xff0c 以下内容是方便直接QQ打开链接 问题如图 xff1a 解决方法 打开联想浏览器 设置 智能实验室 管理
  • ubunut16.04 kinetic版本gazebo7升级为gazebo9(完美解决!!!)

    问题 xff1a 我们加载gazebo7发现启动rourun节点有关摄像头的画面加载不出来 xff0c 往往是黑屏或者卡顿中断gazebo 原因 xff1a Gazebo版本太低造成的 因此 xff0c 需要对此升级 Kinetic中的默认
  • 【Java】Java对象的上转型对象与下转型

    Java对象的上转型对象与下转型 1 解释说明2 代码示例2 1 示例一2 2 示例二 3 强制对象类型转换 将一个类型强制转换成另一个类型的过程被称为类型转换 本节所说的对象类型转换 xff0c 是指存在继承关系的对象 xff0c 不是任
  • 虚拟机/云服务器安装docker

    本文基于腾讯云服务器CentOS7 6版本 一 操作步骤 提示 xff1a 执行whoami命令可以查看当前账户 xff0c 如果不是管理员 xff0c 所有命令需要加上sudo 如果需要切换账户 xff0c 可以使用命令 su root
  • Linux SocketCAN 编程(C++,启用多线程接收)

    目录 1 使用指令设置can参数 2 使用 socket 函数创建一个 socketcan 套接字 3 使用 ioctl 函数 将套接字与 can 设备绑定 4 使用 setsockopt 函数设置过滤规则 xff08 接收滤波器 xff0
  • CentOS 7 配置 VNC 服务(单用户单界面)

    CentOS 7 配置 VNC 服务 xff1a 前提图形界面已安装 安装图形仅供参与不同版命令有些区别 yum check update yum groupinstall 34 X Window System 34 yum install
  • CentOS禁止root登录ssh

    为什么要禁止root登录ssh xff0c 为了安全 添加一个用户 为了禁止root登录时候登录的账号密码 useradd admin passwd admin 然后输入两次密码 xff0c 提示的信息可忽略 修改文件sshd config
  • C++复习题(面向对象程序设计)

    C 43 43 复习题 xff08 面向对象程序设计 xff09 一 选择题 C 43 43 语言属于 C A xff09 自然语言 B xff09 机器语言 C xff09 面向对象语言 D xff09 汇编语言下面选项中不属于面向对象程
  • PWM控制直流电机(单片机实验)

    PWM控制直流电机 xff08 单片机实验 xff09 有问题欢迎私信哦 一 题目 设计电路 xff0c 使用定时器实现PWM对直流电机的转速控制 xff0c 并且实现按键切换转动方向 并进行软件仿真 xff0c 做出实物 二 基本要求 1
  • 模拟ATM机存取款管理系统设计(C++)

    模拟ATM机存取款管理系统设计 有问题欢迎私信哦 1 1问题描述 xff1a 模拟银行自动存取款机使用过程中的界面和用户交互过程 xff0c 实现查询银行卡余额 取款 修改密码 退出系统等功能 1 2基本要求 xff08 功能要求 xff0