基于某面向对象思想地ATM系统设计与实现.docx

上传人:b****8 文档编号:28555805 上传时间:2023-07-19 格式:DOCX 页数:18 大小:149.14KB
下载 相关 举报
基于某面向对象思想地ATM系统设计与实现.docx_第1页
第1页 / 共18页
基于某面向对象思想地ATM系统设计与实现.docx_第2页
第2页 / 共18页
基于某面向对象思想地ATM系统设计与实现.docx_第3页
第3页 / 共18页
基于某面向对象思想地ATM系统设计与实现.docx_第4页
第4页 / 共18页
基于某面向对象思想地ATM系统设计与实现.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

基于某面向对象思想地ATM系统设计与实现.docx

《基于某面向对象思想地ATM系统设计与实现.docx》由会员分享,可在线阅读,更多相关《基于某面向对象思想地ATM系统设计与实现.docx(18页珍藏版)》请在冰豆网上搜索。

基于某面向对象思想地ATM系统设计与实现.docx

基于某面向对象思想地ATM系统设计与实现

 

基于面向对象思想的ATM系统设计与实现

课程名称:

VC++面向对象思想程序设计

班级:

电子信息工程2班指导教师:

刘帅

日期:

2016年10月

小组编号:

电二一组

成员:

摘要:

在控制台编程中共设置了3个类,ATM类和card类和bankcard类,设计的程序完美的实现了设计要求,具有登陆、查询、取款、转账、修改密码、回到登录系统、退出系统等功能。

程序实现分为两个部分,其一是mfc部分,其二是控制台部分。

在要求的基础之上,改程序还增添了部分新功能,并对原有功能做了许多个性化修改,例如在登陆界面输入错误三次就会冻结账号退出系统,在mfc对话框中加入图片更加仿真系统。

在可视化控件编程中,通过建立多个对话框,并实现信息交流,完整的实现了要求的内容。

程序编辑较为复杂。

前言:

随着市场经济的繁荣发展,人们的物质生活得到极大的提高,手中的剩余资金也日益增多。

受传统观念影响,绝大多数人喜欢把资金投进银行,而在需要使用现金的时候再到银行提取现金。

这就导致银行业务的急剧增加。

虽然银行网点越来越多,银行的工作效率也随着信息化有较明显的增长,但是依旧不能满足广大用户的需要。

而一味的增加营业网点,从理论上虽然能稍微的缓解银行的压力,但是治标不治本,而且每增加一个网点,不仅要付出昂贵的资金成本,还需要长期投入人力资本,成本非常之昂贵。

这时候就迫切的需要一种自动的,易于普及的,低成本的设备来解决这一问题。

于是ATM机系统应运而生了。

银行提款机已经发展成各大银行金融服务战略中的重要一环,为广大用户提供了更加快捷和人性化的服务,银行提款机成为我们日常生活中不可缺少的一部分。

该项目正是通过设计一个ATM模拟模拟程序来实现ATM机系统的基本功能,充分运用自己所学的c++知识进行设计编程。

研究报告:

一、项目需求:

总体思路

模拟自助取款机,通过两种编程实现

1、C++控制台编程实现ATM,至少实现提款机登陆、取款、修改密码、查询余额。

2、MFC控件编程实现ATM,至少实现提款机登陆、查询余额、取款和退出系统功能。

项目实际达成效果:

1、实现提款机登陆、修改密码、查询信息、汇款转账、回到登陆界面、取款、退卡等功能;

2、提款机登陆自动验证密码,密码错误无法登陆;

3、在登陆、修改密码等操作过程中,连续输入三次密码错误则无法完成相关操作,自动退出程序。

4、在任何情况下输入错误的序号均有提示。

特色:

控制台程序部分:

1、在基础要求的基础上在程序中添加了延迟函数Sleep,使整个界面更加仿真ATM机。

2、加入清屏函数与暂停函数,等待用户进行响应后再进行下一个进程,更加人性化。

3、在欢迎界面会输出用户的姓名,如“欢迎您,李四”。

4、在原本单用户系统的基础上进行修改,使其增加了多个用户,多个用户之间可以通过汇款实现金额的增减。

5、汇款的实现,即当用户选择汇款账号以后,被汇款的一方金钱真的会增加。

6、程序本身并没有将帐号和密码导入文件,实际上,我们组经过讨论后一致认为,这样做其实很有风险,如果有黑客修改了文件中的数据,那么系统将会无法正确读取数据,系统将会崩溃。

为了弥补这一不足,我们将用户的数据直接写入程序,同时增加了回到登录界面的选项。

MFC部分:

1、MFC主界面中增加了图片,更加仿真银行ATM.

2、修改了TAB键顺序,使用户可以不再用鼠标操作。

二、项目实施

由于代码太过冗长影响阅读,已将代码和mfc的展示调至本文结尾。

通过程序要求,我们可以清楚的知道本次设计的ATM柜员模拟程序需要实现四大功能,即查询余额、取款、汇款、修改密码。

除此之外,作为ATM系统,还需要最基本的两大功能,即登陆和退出(还应包括回到登陆界面)。

在程序的大体框架确定之后,我们需要了解各个模块所要实现和需要具有的功能。

根据现有的银行ATM系统,我们可以很快就可以了解本次设计的ATM系统应该具有的操作。

Ⅰ控制台部分

(1)登陆界面

总共设定了三个用户,帐号密码分别为“001”“111111”“002”“222222”“003”“333333”,

帐号密码均正确方可进入。

(2)主界面

主界面包括查询、取款、汇款、修改密码、回到登陆界面、退出的功能选项,输入正确序号可进行相关操作。

(3)查询界面

在主界面中按下查询按钮可以进行查询操作。

通过查询功能我们可以查询账户的余额,在查询过程中我们可以选择取款的业务,除此之外,查询界面之中还有返回的操作。

返回的操作会使用户回到主界面。

(4)取款界面

取款界面可以通过主界面进入。

取款功能在控制台中输入你想要取出的金额。

在控制台编程中,为了实现在不取钱的情况下返回主菜单,添加了一个设定,即输入取款0元即可返回主菜单。

(5)转账界面

转账界面需要通过主界面进入。

可以根据提示输入汇款账号和汇款金额,汇款金额超出当前用户最高金额时会提示汇款失败。

(6)修改密码

选择修改密码按钮可以进行修改密码操作,但是要先输入就密码正确并且两次输入新密码一致才可以修改密码。

修改完成后,会返回登陆界面重新登录,此时,若输入修改之前的密码,将会导致无法进入系统。

(7)回到登陆界面

回到可以再次输入帐号和密码的界面。

(8)退出系统

直接退出系统,程序控制台关闭。

ⅡMFC部分

(1)登陆界面

单用户系统,账号为001,密码为123456。

错误三次直接退出系统。

(2)主界面

主界面包括查询、取款、修改密码、退出的功能选项,可通过鼠标点击,也可通过TAB键控制(TAB键顺序已经被设定好了)进行相关操作。

(3)查询界面

在主界面中按下查询按钮可以进行查询操作。

通过查询功能我们可以查询账户的余额,除此之外,查询界面之中还有返回的操作。

返回的操作会使用户回到主界面。

(4)取款界面

取款界面可以通过主界面进入。

取款功能在控制台中输入你想要取出的金额。

在控制台编程中,为了实现在不取钱的情况下返回主菜单,添加了一个按钮,点击即可返回主菜单。

(5)修改密码

选择修改密码按钮可以进行修改密码操作,但是要先输入就密码正确并且两次输入新密码一致才可以修改密码。

修改完成后,会返回登陆界面重新登录,此时,若输入修改之前的密码,将会导致无法进入系统。

(6)退出系统

弹出提示,确认是否要退出系统,点击取消返回主界面,点击确认退出系统。

三、体会与参考文献

在这次的项目中,我们主要运用了mfc与控制台编程方面的知识,加深了对C++语言中各个基础知识点的了解和应用,将自己所学的知识运用到实际操作当中,而不再是纸上谈兵。

通过这次设计,我们深刻感受到了面向对象语言中类库的强大功能,掌握了运用C++中的类实现某些基本功能,并学会了自己查询使用类的方法,为以后的面向对象语言的自学奠定了基础。

由于时间仓促,脑中有许多想法仍然没有实现,比如加入定时器,实现将账号与密码导入到文件并将文件隐藏,在MFC中实现语音提示等等,也还有一些不足,比如:

在控制台程序中实现了将输入的密码输出为“******”,但还没有解决按退格键无法删除字符的问题;当在登陆界面校验账号与密码时,如果添加一条语句实现不存在账户的提醒,exe文件就会停止运行的问题等等,尽管我们的项目还有很多不足,它仍然帮助我们加深了对课堂上知识的理解。

参考文献

CSDN论坛,XX文库,豆丁网,C++面向对象程序设计教程第三版(陈维兴林小茶编著)

控制台代码展示:

#include

#include

#include

#include

#include

usingnamespacestd;

classcard{//基类:

卡类

protected:

stringname;

stringaccount;

stringpassword;

public:

card(stringn,stringa,stringp);

voidmodifypsw();//修改密码功能

};

classATM;

classbankcard:

publiccard{//共有派生类:

银行卡类

intmoney;//比卡类多出了一个金钱属性

friendATM;//友元类ATM,使ATM类能够访问银行卡类的私有成员

public:

bankcard(stringn="0",stringa="0",stringp="0",intm=0);

};

classATM{//ATM类,模拟自助取款机主系统·

public:

voidtakemoney(bankcard&);//取款函数

voidmodifypsw(bankcard&);//修改密码函数

voidrestmoney(bankcard);//查询余额函数

voidwelcome();//欢迎界面函数

voidbye();//再见函数

voidtest(bankcard*);//用来检验账号与密码是否匹配

voidprintname(bankcardx)

{

Sleep(1000);

cout<<"--------------------------------"<

cout<<"欢迎您,"<

cout<<"--------------------------------"<

Sleep(500);

}

voidtransport(bankcard&,bankcard*);

};

card:

:

card(stringn,stringa,stringp)

{

name=n;

account=a;

password=p;

}

voidATM:

:

modifypsw(bankcard&x)//修改密码

{

inta=0;

stringpsw1,psw2,password;

do{

cout<<"请输入原密码:

"<

charch;

while((ch=_getch())!

=13){password+=ch;cout<<"*";}

cout<

if((x.password==password))a=1;

else{password="";cout<<"密码错误,请重新输入!

"<

}while(!

a);

cout<<"请输入新密码:

"<

charch1;

while((ch1=_getch())!

=13){psw1+=ch1;cout<<"*";}

cout<

cout<<"请再次输入新密码:

"<

charch2;

while((ch2=_getch())!

=13){psw2+=ch2;cout<<"*";}

cout<

if(psw1==psw2)

{

x.password=psw1;

cout<<"修改密码成功!

请重新登录系统!

\n";

Sleep(1000);

system("pause");

system("cls");

welcome();

test(&x);

}

else{

cout<<"密码修改失败,两次密码输入不一致!

"<

Sleep(1000);

}

}

bankcard:

:

bankcard(stringn,stringa,stringp,intm):

card(n,a,p)

{

money=m;

}

voidATM:

:

takemoney(bankcard&x)//取款

{

intm;

cout<<"请输入想要取款的金额:

"<

cin>>m;

if((x.money-m)<0){

Sleep(1000);

cout<<"余额不足,取款失败!

"<

}

else{

Sleep(1000);

x.money-=m;cout<<"取款成功!

"<

}

}

voidATM:

:

restmoney(bankcardx)//查询余额

{

Sleep(1000);

cout<<"余额为"<

Sleep(1000);

}

voidATM:

:

transport(bankcard&y,bankcard*x)

{

intk;

bankcard*t;

stringaccount1;

intmoney1;

cout<<"请输入汇款账户号:

"<

cin>>account1;

for(k=0;k<10;k++)

{

t=&x[k];

if(t->account==account1)break;

}

//if(t->account=="0")cout<<"查无此人,无法转账!

"<

//else{

Sleep(1000);

cout<<"请输入汇款金额:

"<

cin>>money1;

if((x[k].money-money1)<0){

Sleep(1000);

cout<<"余额不足,转账失败!

"<

}

else{

x[k].money+=money1;

y.money-=money1;

Sleep(1000);

cout<<"汇款中,请稍后。

"<

Sleep(1000);

cout<<"汇款成功!

"<

}

//}

 

}

staticinti=0;

voidATM:

:

test(bankcard*x)//检验账号与密码是否匹配

{

bankcard*p;

stringaccount1,password1;

staticinta=0;

intt=0;

do{

{

cout<<"请输入账号:

"<

cin>>account1;

for(i=0;i<10;i++)

{

p=&x[i];

if(p->account==account1)break;

}

{

cout<<"请输入密码:

"<

//cin>>password1;

charch;

while((ch=_getch())!

=13){password1+=ch;cout<<"*";}

cout<

if((p->password==password1))t=1;

else{

{if(a>1){cout<<"您的账号已被冻结!

"<

password1="";

cout<<"账号或密码错误,您还有"<<2-a<<"次机会重新输入!

"<

}

}

}

}while(!

t);

}

voidATM:

:

welcome(){

cout<<"--------------------------------"<

cout<<"|欢迎使用中国银行自助取款系统!

|"<

cout<<"--------------------------------"<

Sleep(1000);

}

voidATM:

:

bye(){

Sleep(200);

cout<<"----------------------"<

cout<<"|感谢您的使用,再见!

|"<

cout<<"----------------------"<

Sleep(500);

}

intmain()//主函数

{

bankcardb[3]{bankcard("张三","001","111111",10000),bankcard("李四","002","222222",20000),bankcard("王五","003","333333",30000)};

ATMa;

intt=1;

a.welcome();

a.test(b);

do{

a.printname(b[i]);

cout<<"--------------------------------"<

cout<<"|请输入对应数字以选择服务项目|"<

cout<<"|<1>取款|"<

cout<<"|<2>查询余额|"<

cout<<"|<3>转账|"<

cout<<"|<4>修改密码|"<

cout<<"|<5>回到登陆界面|"<

cout<<"|<6>退出系统|"<

cout<<"--------------------------------"<

intc;

cin>>c;

switch(c)

{

case1:

a.takemoney(b[i]);break;

case2:

a.restmoney(b[i]);break;

case3:

a.transport(b[i],b);break;

case4:

a.modifypsw(b[i]);break;

case5:

a.bye();a.test(b);break;

case6:

a.bye();t=0;break;

default:

cout<<"输入无效!

"<

}

}while(t);

return0;

}

MFC部分界面展示

1.登陆界面

 

2.主界面

 

3.取款界面

.

 

4.查询余额界面

 

5.修改密码界面

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1