C++模拟ATM机存取款管理系统设计.docx

上传人:b****3 文档编号:6251684 上传时间:2023-05-09 格式:DOCX 页数:22 大小:24.11KB
下载 相关 举报
C++模拟ATM机存取款管理系统设计.docx_第1页
第1页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第2页
第2页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第3页
第3页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第4页
第4页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第5页
第5页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第6页
第6页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第7页
第7页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第8页
第8页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第9页
第9页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第10页
第10页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第11页
第11页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第12页
第12页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第13页
第13页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第14页
第14页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第15页
第15页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第16页
第16页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第17页
第17页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第18页
第18页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第19页
第19页 / 共22页
C++模拟ATM机存取款管理系统设计.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++模拟ATM机存取款管理系统设计.docx

《C++模拟ATM机存取款管理系统设计.docx》由会员分享,可在线阅读,更多相关《C++模拟ATM机存取款管理系统设计.docx(22页珍藏版)》请在冰点文库上搜索。

C++模拟ATM机存取款管理系统设计.docx

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

温馨提示

程序语言:

C、C++、C#、Python(红色字体表示本课设使用的程序设计语言)

图形功能选项:

Win32控制台程序(黑框、文本界面)、Win32程序、MFC、WinForm、DirectX10

(黑体标明表示本课设的程序图形类别,默认为非图形界面Win32控制台程序)

数据结构:

基础类型、数组、链表、双向链表、搜索树(非平衡二叉树)、平衡二叉树、链表与

平衡二叉树相结合、堆栈、队列、串、图(黑体标明表示本课设使用的数据结构)

C++语言项:

STL库(黑体标明表示使用C++的STL库)

编译环境:

Windows764位旗舰版(Linux及其他环境请谨慎下载)

集成开发环境:

VisualC++6.0、DEVC++、CodeBlocks、VisualStudio2015均可通过编译。

(浅蓝

色字体表示需要运行修改后的版本,请用户自行选择源代码测试)

分多头文件编译:

否(所有代码基本都包含在一个文件内,如需试验头文件功能,请自行参考

相关文献)

内容说明:

1、课设题目及预览内容将在第二页开始展示。

2、代码行数:

241行

3、目录所示内容,本文基本涵盖,如无内容,会在本页进行说明。

4、附录绝对包含用户使用手册及程序完整源代码和详细注释。

5、如需下载其他头文件(例如DirectX需另行配置),本文会在此进行说明。

6、本文撰写内容仅供学习参考,另外,由于本人水平有限,编写之处难免存在错误和纰漏,

恳请各位老师或同学批评指正。

《面向对象程序设计》课程设计报告书

设计题目:

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

指导老师:

学生班级:

学生学号:

学生姓名:

同组人员:

时间:

2017.12.

课程设计任务书

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

一、设计内容及要求

(1)卡号、密码输入最多三次,否则直接退出系统。

(2)取款功能:

取款金额受卡余额、机单笔最大取款金额及机当前

剩余金额的限制。

(3)查询功能:

实现查询余额功能。

(4)更改密码:

实现密码更改功能,对于密码要有2次验证。

(5)锁卡功能:

实现卡被锁的功能。

(6)退卡功能:

实现退出系统功能。

二、设计原始资料

三、设计完成后提交的成果及其相关资料。

四、主要参考资料

《c++程序设计(第二版)》

五、进程安排

12.25:

类的设计

12.26:

模块4.2、4.3的设计

12.27:

模块4.4、4.5的设计

12.28:

完成课程设计报告

0

第一章概述

使用ATM柜员机可以节约人力资源,方便用户进行简单常用的操

作,并且为用户全天候的服务,提高银行效率,给人们提供了非常大

的便利。

本文就以C++语言设计一项简单的模拟ATM柜员机程序。

运行程序时,当输入给定的卡号和密码(初始卡号和密码都为

123456)后,系统就能登录ATM柜员机系统,用户可以进入功能实现

界面,有查询余额,取款,存款,修改密码等功能。

设计要点:

使用文本命令行界面。

当输入给定的卡号和密码(初始卡

号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按

照以下规则进行:

查询余额:

初始余额为10000元

ATM取款:

每次取款金额为100的倍数,总额不超过5000元,支

取金额不允许透支。

ATM存款:

不能出现负存款。

修改密码:

新密码长度不小于6位,不允许出现6位完全相同的情况,

只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以

成功修改密码。

1

第二章设计内容

12.29功能:

设计一个模拟ATM柜员机的程序,输入你需要的操作(选择相对

的括号里的阿拉伯数字)程序具体功能有:

(1)查询余额

(2)ATM取款

(3)ATM存款

(4)修改密码

(5)退出系统

12.30操作:

本程序通过键盘操作。

在运行过程中,当用户输入正确的账号和

密码时,会出现一个功能界面,按照功能界面操作。

只需输入所需操

作的序号,便可执行其中相应的功能。

但是需要小心的是如果输错密

码三次,便会锁卡,这时将无法操作。

2

第三章总体设计

12.31模块化设计

为实现系统功能,本程序主要分为六个模块。

它们分别为:

主界

面、查询余额、ATM取款、ATM存款、修改密码、退出系统。

这六个

函数再通过主函数调用分别得以实现。

主函数,首先提供了程序运行时的友好界面,提供客户选择的菜

单。

然后,通过执行多分支选择语句——switch语句,分别实现其

它各个函数的调用功能。

其它各个函数的功能分别如下:

ATM()构造函数

face()构造函数

checkout()检验卡号密码

lock()锁卡

checkmoney()查询余额

getmoney()ATM取款

savemoney()ATM存款

change()修改密码

exitsystem()退出系统

show()打印界面

3

12.32程序运行示意图

主界面

输入卡号、密码

退出系统查询余额修改密码

取款存款

4

第四章详细设计

12.33类的设计

设计了两个类,ATM类和face类。

ATM类完成ATM柜员机的模拟,

包括:

验证卡号密码,查询余额,修改密码,取款,存款,退出系统

等功能。

face类完成显示登陆界面的功能,显示查询余额,修改密

码,取款,存款,退出系统的选项。

ATM类的设计:

classATM

{

protected:

stringcard;

stringpassword;

floatmoney;staticinttimes;

public:

ATM(stringc,stringp,floatm)//构造函数

{

card=c;

password=p;

money=m;

}

intcheckout();//验证卡号密码

voidlock();//锁卡

voidcheckmoney();//查询余额

voidgetmoney();//取款

voidsavemoney();//存款

5

voidchange();//修改密码

voidexitsystem();//退出系统

};

face类的设计

classface:

publicATM

{

protected:

intx;

public:

face(stringc,stringp,floatm):

ATM(c,p,m)//构造函数

{

}

voidshow();//显示界面

};

12.34ATM柜员机的登陆

在main主函数中实例化一个face类的对象,卡号密码都为

123456,默认余额为10000.在程序运行中输入卡号密码,若都正确

即可进入主界面,选择ATM柜员机的功能。

程序运行首先要求用户输入卡号和密码,卡号和密码首先由main

主函数构造默认,然后用checkout()函数判断卡号密码是否一致,

一致则登陆,如果连续3次输入错误,则用lock()函数锁定卡号

密码。

相关代码:

voidATM:

:

lock()

{

if(times==3)

{

6

cout<<"输入密码3次错误,该卡已被锁"<

exitsystem();

}

}

intATM:

:

checkout()

{

stringa;

stringb;

while

(1)

{

cout<<"请输入您的卡号:

";cin>>a;

cout<<"请输入您的密码:

";

cin>>b;

if(card!

=a||password!

=b)

{

times++;

lock();

cout<<"卡号或密码有误,请重新输入"<

}

else

{

break;

}

}

return1;

}

12.35ATM柜员机修改密码功能

新密码长度不小于6位,不允许出现6位完全相同的情况,只有

旧密码正确,新密码符合要求,且两次输入相同的情况下才能成功修

改密码。

输入正确卡号密码后,或者实现其他功能退回主界面后都可以选

择柜员机的修改密码功能,在运行过程中先要求用户输入旧密码,判

断用户输入的旧密码是否与默认密码相同,若相同则继续运行,若不

7

同则需要重新输入。

验证旧密码正确后系统会要求用户定义新密码,

新密码要重复输入两次,要求两次必须重复正确且新密码符合要求才

能修改成功。

相关代码:

voidATM:

:

change()

{

intcount=0,i,j,flag=1;

stringsecondpassword;

stringnewpassword;

stringoldpassword;

cout<<"请输入旧密码:

";cin>>oldpassword;

if(password==oldpassword)

{

cout<<"请输入新密码:

";

cin>>newpassword;

if(newpassword.size()>=6)

{

for(i=0;i

{

for(j=i+1;j

{

if(newpassword[i]==newpassword[j])

{

count++;

}

}

}

if(count<6)

{

while(flag)

{

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

";

cin>>secondpassword;

if(newpassword==secondpassword)

{

cout<<"密码修改成功!

"<

flag=0;}

else

{

8

cout<<"两次密码输入不一样,请重新输入"<

flag=1;

}

}

}

else

{

cout<<"修改密码失败,请重新修改"<

}

}else

{

cout<<"修改密码失败,请重新修改"<

}

}

else

{

cout<<"修改密码失败,请重新修改"<

}

}

12.36ATM柜员机存款取款功能

输入正确卡号密码后,即可登录柜员机主界面,其中可以选择取

款,存款功能。

取款功能要求用户输入取钱金额,取钱功能用if语句判断金额是

否是100的倍数且金额是否大于5000或小于0,若符合要求,则顺

利运行。

用getmoney()函数实现更新用户余额,余额为账户余额减

去取钱金额,当取钱成功时,系统会提示用户是否继续取钱,若输入

“Y”则继续,若输入“N”则退回主界面,若输入其他字符则要重新

输入。

存款功能要求用户不能输入负值的金额,用if语句判断,若符合

条件,则成功取款,并且用savemoney()函数更新余额,余额为账

9

户余额加上存款金额,当成功存款时,系统会提示是否继续存款,若

输入“Y”则继续,若输入“N”则退回主界面,若输入其他字符则要

重新输入。

存款功能代码:

voidATM:

:

savemoney()//存款

{

charch;

floatsave;//存入金额

do

{

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

";

cin>>save;

if(save<0)

{

cout<<"存款金额有误,请重新输入"<

}

else

{

cout<<"正在存款中,请稍候......"<

money=money+save;

cout<<"交易成功!

"<

}

cout<<"请问是否继续存款?

(Y/N)"<

cin>>ch;

while(ch!

='Y'&&ch!

='N')

{

cout<<"该操作无效,请重新输入:

"<

cin>>ch;

}

}while(ch=='Y');

}

取款功能代码:

voidATM:

:

getmoney()//取款

{

intget;//取款金额charch;

do

{

10

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

";

cin>>get;

if(get>5000||get<0||get%100!

=0)

{

cout<<"支取金额有误,请重新输入"<

}

elseif((money-get)<0)

{

cout<<"对不起,您的余额不足,请重新输入"<

}else

{

cout<<"正在取款中,请稍候......"<

money=money-get;

cout<<"取款成功!

"<

}

cout<<"请问是否继续取款?

(Y/N)"<>ch;

while(ch!

='Y'&&ch!

='N')

{

cout<<"该操作无效,请重新输入:

"<

cin>>ch;

}

}while(ch=='Y');

}

12.37ATM柜员机查询余额功能

输入正确卡号密码后,即可登录柜员机主界面,其中可以选择查询余额功能。

余额主

要调用checkmoney()函数。

代码如下:

voidATM:

:

checkmoney()//查询余额

{

cout<<"余额:

"<

cout<<"查询余额成功!

"<

}

11

第五章调试与测试

12.38调试过程中的主要问题

由于本程序的运行是当输入卡号密码成功后登陆主界面,在主界

面中执行完一个功能后再次回到主界面进行操作,而程序大体上是没

问题的,但是还是有一些小问题:

当执行完存款或取款后,没有提示是否继续执行此操作,而是直

接退回主界面,这是一处不善人意的地方,但是经过修改,已将此功

能加入程序。

12.39具体测试过程

(1)检验卡号密码(如下图)

(2)卡号密码输入成功(如下图)

12

(3)卡号密码输入有误(如下图)

(4)查询余额(如下图)

(5)ATM取款成功(如下图)

13

(6)ATM取款不成功(如下图)

(7)ATM存款成功(如下图)

(8)ATM存款不成功(如下图)

14

(9)修改密码成功(如下图)

(10)修改密码失败(如下图)

(11)退出系统(如下图)

15

第六章心得体会

经过一个学期对《C++程序设计》的学习,我学习到了基本的理论知识,了

解到了C++语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打

下了坚实的基础。

在为期近两周的C++课程设计中,我体会颇多,学到了很多

东西。

我加强了对C++程序设计这门课程的认识,并且复习了自己以前学习到的

知识。

这些都使得我对计算机语言的学习有了更深入的认识!

总之,通过这次课

程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。

像职工

信息表这样的程序设计,经历了平时在课堂和考试中不会出现的问题和考验。

这些问题,这并不是我们平时只靠课本,就可以轻易解决的。

所以,锻炼了我们

挑战难题,学会用已掌握的知识去解决具体问题的能力,进一步培养了独立思考

问题和解决问题的能力。

特别是学会了在VisualC++中如何调试程序的方法。

当然,老师的指导和同学的帮助也是不可忽视的,他们给了我许多提示和帮助,

教会了我编译复杂程序的方法。

在老师和同学的帮助下,通过自己的努力,终于完成了这次职工信息表的简

单课程设计。

我经过这段时间的编程,对其中的艰辛,我是深有体会。

从刚开始

的选择程序、理解程序到后来的调试程序以及改进程序这个过程中,我遇到了各

种各样的困难和挫折。

但是我坚定信念,对自己充满了信心,想尽一切办法克服

重重困难。

通过课程设计的训练,我进一步学习和掌握了对程序的设计和编写,从中体

会到了面向对象程序设计的方便和巧妙。

懂得了在进行编写一个程序之前,要有

明确的目标和整体的设计思想。

另外某些具体的细节内容也是相当的重要。

这些

16

宝贵的编程思想和从中摸索到的经验都是在编程的过程中获得的宝贵财富。

这些

经验对我以后的编程会有很大的帮助的,我要好好利用。

虽然这次课程设计是在参考程序的基础之上进行的,但是我觉得对自己是一

个挑战和锻炼。

我很欣慰自己能在程序中加入自己的想法和有关程序内容,也就

是对它的程序改进了一番改进,并有创新。

但是我感觉自己的创新还不够典型,

总之还不是很满意。

另外由于时间的紧迫和对知识的了解不够广泛,造成了系统

中还存在许多不足,功能上还不够完善。

以后我会继续努力,大胆创新,争取能

编写出透射着自己思想的程序。

这次课程设计让我充分认识到了自己的不足,认

识到了动手能力的重要性。

我会在以后的学习中更加努力锻炼自己,提高自己,

让自己写出更好更完善的程序,为以后的编程打好基础!

17

附录

用户使用手册

1、卡号:

123456密码:

123456

2、根据提示,输入指定内容即可。

程序源代码

//#include"stdafx.h"

#include

#include

#include

#include

#include

#include

#pragmawarning(disable:

4996)

usingnamespacestd;

/***************************类******************************/

classATM

{

protected:

stringcard;

stringpassword;

floatmoney;

staticinttimes;

public:

ATM(stringc,stringp,floatm):

card(c),password(p),money(m){}//构造

函数

intcheckout();//验证卡号密码

voidlock();//锁卡

voidcheckmoney();//查询余额

voidgetmoney();//取款

voidsavemoney();//存款

voidchange();//修改密码

voidexitsystem();//退出系统

};

intATM:

:

times=0;

classface:

publicATM

{

protected:

18

intx;

public:

face(stringc,stringp,floatm):

ATM(c,p,m){}//构造函数

voidshow();//显示界面

};

voidface:

:

show()

{

cout<

cout<<"1.查询余额"<

cout<<"2.ATM取款"<

cout<<"3.ATM存款"<

cout<<"4.修改密码"<

cout<<"5.退出"<

cout<<"**********************"<

cout<<"请输入您需要查询的信息:

";

}

voidATM:

:

lock()

{

if(times==3)

{

cout<<"输入密码3次错误,该卡已被锁"<

exitsystem();

}

}

intATM:

:

checkout()

{

stringa;

stringb;

while

(1)

{

cout<<"请输入您的卡号:

";

cin>>a;

cout<<"请输入您的密码:

";

cin>>b;

if(card!

=a||password!

=b)

{

times++;

lock();

cout<<"卡号或密码有误,请重新输入"<

}

else

break;

19

}

return1;

}

voidATM:

:

change()

{

intcount=0,i,j,flag=1;

stringsecondpassword;

stringnewpassword;

stringoldpassword;

cout<<"请输入旧密码:

";

cin>>oldpassword;

if(password==oldpassword)

{

cout<<"请输入新密码:

";

cin>>newpassword;

if(newpassword.size()>=6)

{

for(i=0;i

{

for(j=i+1;j

{

if(newpassword[i]==newpassword[j])

{

count++;

}

}

}

if(count<6)

{

while(flag)

{

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

";

cin>>secondpassword;

if(newpassword==secondpassword)

{

cout<<"密码修改成功!

"<

flag=0;

}

else

{

cout<<"两次密码输入不一样,请重新输入"<

flag=1;

}

20

}

}

else

cout<<"修改密码失败,请重新修改"<

}

else

cout<<"修改密码失败,请重新修改"<

}

else

cout<<"修改密码失败,请重新修改"<

}

voidATM:

:

exitsystem()

{

exit(0);

}

voidATM:

:

savemoney()//存款

{

charch;

floatsave;//存入金额

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

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2