模拟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;
}
四、测试结果与分析
-
首页
-
开户界面
-
储蓄卡管理页面(包含存取款界面)
取款界面
存款界面
4.转账
转账需要转给其他账户,先在此建立第二个账户。
转账操作
转账之后根据账户金额判断转账成功。
4. 账户注销
五、总结与心得
为期一周的c++实训已经结束,但是给了我很大的影响。通过此次实训,使我明白了c++语言这门课程仅仅听课是远远不够的,上机训练也不容忽视,要把知识运用到这次的课程设计,发现还是有点困难,学到用时方恨少。通过上机训练,才能明白自己知识的不足,才能有的放矢,才能更加深刻的理解c++中的知识点。通过实训,我找到了许多知识漏洞,学到了很多以前不懂的知识,以前认为自己已经懂了的知识点也理解更加深刻了,多样化的处理问题,才是成功之道。尤其是遇到自己当时不知道如何编写的c++语言题目如何编写,通过自己的学习和同学的交流后,试编和改错,最后能够顺利的编写出来,带来了成就感,并增加了我们对c++语言的兴趣和学好c++语言的信心。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)