ATM自动取款机程序设计.docx
《ATM自动取款机程序设计.docx》由会员分享,可在线阅读,更多相关《ATM自动取款机程序设计.docx(26页珍藏版)》请在冰点文库上搜索。
ATM自动取款机程序设计
大连科技学院
面向对象程序设计(A)课程设计
题目ATM自动取款机程序设计
学生姓名x'x'x专业班级软件工程12-1
指导教师李孝贵职称讲课老师
所在单位信息科学系软件工程教研室
教课部主任王立娟
达成日期2014年7月6日
课程设计报告单
学号Xxx姓名xxsx
考核项目
平常工作态度及恪守纪律状况
1
(10分)
掌握基本理论、重点知识、基本技术的程度和
2阅读参照资料的水平
(10分)
独立工作能力、综合运用所学知识剖析和解决
3问题能力及实质工作能力提升的程度
(20分)
达成课程设计说明书及软件的状况与水平(小组分工状况、规范性、整齐清楚、表达完好性、
4思路清楚程度、工作量及实质运转状况和创新性)
(60分)
总评成绩
专业班级软件工程12-1
评分备注
综合评定:
(优、良、中、及格、不及格)
指导教师署名:
年月日
《面向对象程序设计(A)课程设计》任务书
一、课程设计任务及要求:
任务:
针对小型信息管理系统或若干综合性设计题目,选择一种软件开发模型,完
成从需求剖析、系统设计、系统实现,软件测试的全过程。
要求:
(1)依据软件系统开发的一般原则,达成相应系统的功能设计,达成主要功能模块
的程序实现并进行测试训练,给出代码运转结果和相应的设计文档。
能够分组进行,但所有学生一定经历整个系统的开发全过程,以便加深对系统开发全过程的认识。
(2)提交课程设计报告。
(3)指标:
要求达成课程设计报告3000字以上(约二十页);达成所设计的题目,设计题目的语句行数的和在200行语句以上。
二、工作量
2周(10个工作日)时间
三、计划安排
第1个工作日:
查找有关资料、书本,阅读示例文档,选择题目。
第2个工作日-第4个工作日:
设计程序结构、模块图。
第5个工作日-第9个工作日:
达成程序的编码,而且自己调试、测试。
穿插进行课程设计报告的撰写。
第10个工作日:
上交课程设计报告,由教师检查软件测试成效、检查课程设计报告,给出学生成绩。
指导教师署名:
年月日
题目:
1
1.需求剖析1
2.纲要设计1
3.详尽设计错误!
不决义书签。
4.编码4
5.调试剖析5
6.测试结果及运转成效5
7.系统开发所用到的技术8
参照文件9
附录所有代码10
题目:
ATM自动取款机程序设计剖析与设计
1.需求剖析
为了方面用户的实时取款,查问,实时改正密码的方便,本课题设计并模拟银行的
自动取款机使用过程中的界面和用户交互过程。
实现查问银行卡余额、取款、改正密码、退出系统等功能。
2.纲要设计
1登录功能。
输入帐号和密码进行登录,如密码错误提示从头输入密码,如帐号错误提示无此帐户。
2查问功能。
查问账户余额。
3取款功能。
取款,更新余额。
4挂失功能。
挂失后,该账户不可以进行任何操作。
5改正密码。
输入原密码和新设置密码。
6转账。
输入转账的转出账户和转入账户以及转账金额,进行转账。
流程图
ATM自动
取款系统
开户存款取款查问余额改正密码转账
图2—1atm设计框图
1
3.详尽设计
输入卡号和密码
正确否
是
服务界面
查问
取款
输入金额
显示用户
信息和余
正确
额
否
是
取款
挂失改正密码
挂失
退出
操作成功
返回
退出
转账
是
输入转账卡号
挂失改正密码
挂式界面
输入旧密码
正确输入新密码
否
是
输入新密码
挂失成功
退卡正确
否是
改正成功
返回退出
否
输入转账金额
高出余额
转账成功
返回退出
图3—1程序流程图
1登岸模块
主要达成功能为:
当用户开始使用本系统,进入登岸模块。
屏幕显示菜单提示,用
户可依据需要选择相应功能。
详细以下:
开户、存款、取款、查问余额、改正密码、转账
主要合用技术:
登岸函数主假如使用了循环函数和dowhile函数,还有很多的成
员函k.OpenAccount()、k.SaveMoney()、k.TakeMoney()、k.Inquiry()、k.Changepsw()、
2
k.Transfer();
重点代码以下:
voidmain();主函数;
do{}while
(1);//循环结构语句
switch(i);case1:
default:
bankk;//默认结构函数
k.OpenAccount();break;//开户
k.SaveMoney();break;//存款
k.TakeMoney();break;//取款
k.Inquiry();break;//查问余额
k.Changepsw();break;//改正密码
k.Transfer();break;//转账
2开户模块
主要达成功能为:
进入开户模块。
屏幕显示菜单提示,可依据要求挨次输入姓名、
卡号、密码和预存款金额,达成以上操作以后,屏幕上显示恭贺您,开户成功。
主要合用技术:
开户函数使用了基本函数;
主要代码以下:
voidOpenAccount()//开户函数
3存款模块
主要达成功能为:
当开始使用本系统,进入存款模块。
屏幕显示菜单提示,依据要
求挨次输卡号和密码,假如卡号和密码正确,而后输入存款金额,存款成功后显示卡上
余额,(当密码不正确的时候,能够有三次时机输入自己的正确密码,假如三次都没有
输入正确,卡将会被吃掉,以下同);
主要使用技术:
存款函数使用了循环语句函数、判断函数和选择函数
主要代码以下:
voidSaveMoney()//存款函数
for(inti=1;i<=N;i++)else//循环函数语句
exit
(1);//结束函数
4取款模块
主要达成功能为:
进入取款模块。
屏幕显示菜单提示,依据要求挨次输卡号和密码,假如卡号和密码正确,而后输入取款金额,假如全款金额小于或许等于卡上余额,则取
款进行,不然从头输入取款金额。
取款成功后显示卡上余额
主要合用技术:
存款函数使用了循环语句函数、判断函数和选择函数主要代码以下:
voidTakeMoney()//取款函数
for(inti=1;i<=N;i++)else//循环函数语句
3
exit
(1);//结束函数
5查问余额
主要达成功能为:
进入查问余额模块。
屏幕显示菜单提示,依据要求挨次输卡号和
密码,假如卡号和密码正确,屏幕大将显示你的余额,而后进入改正密码模块;
主要合用技术:
存款函数使用了循环语句函数、判断函数和选择函数
主要代码以下:
voidInquiry()//查问余额函数
for(inti=1;i<=N;i++)else//循环结果语句
exit
(1);//结束函数
6改正密码
主要达成功能为:
进入改正密码模块。
屏幕显示菜单提示,依据要求挨次输卡号和
密码,假如卡号和原始密码正确,则将进行改正密码的步骤,先输入原始密码,而后再
输入新密码,以后确认新密码,确认正确以后,密码改正成功,接下来进入转账模块;
主要合用技术:
存款函数使用了循环语句函数、判断函数和选择函数
主要代码以下:
voidChangepsw()//改正密码函数
for(inti=1;i<=N;i++)else//循环结果语句
exit
(1);//结束函数
7转账模块
主要达成功能为:
进入转账模块。
屏幕显示菜单提示,依据要求挨次输卡号和密码,假如卡号和原始密码正确,输入所要转账的账号并输入转账金额,假如转账金额小于余
额,转账成功输出卡上余额,
主要合用技术:
存款函数使用了循环语句函数、判断函数和选择函数主要代码以下:
voidTransfer()//转账函数
for(inti=1;i<=N;i++)else//循环结果语句
exit
(1);//结束函数
4.编码
classATM//ATM取款机
{
public:
//公有类
ATM(consumer&cn):
cnsm(cn){}
voidwelcome();//登岸界面
boolcheck_passwd(charn[],charpwd[]);//查对密码
voidchange_passwd();//改正密码
4
voidfetchmoney();//取款
voidinformation();//查问信息
voidfunctionshow();//功能界面
voidguashi();//挂失
voidzhuanzhang();//转账
voidexitATM();//退出系统
voidlock();//锁机
private:
//私有类
inttimes;//记录密码输入次数
intmoney;
consumer&cnsm;
};
5.调试剖析
主要问题:
错误许多,因为改正了很多次,程序中的血多代码都出现了不一样程度上
的错误,特别是bank和bank[i]之间常常出现问题,我经过调试,发现了很多这样的问题,经过帮助和自己的经验,解决了这个问题;还有就是程序后边那个能否持续,比如:
cout<<"能否持续操作1是2否"<实现程序的完满,以后经过上网查资料和借鉴书上的程序,实现了这个功能;还有就是
调试过程中发现程序不完好,有很多功能没有实现,比如:
关于用户要求输入相应的帐
号和密码,假如三次犯错则将卡吃掉并打印出相应凭条,没有实现,以后经过增添代码,
实现了这个功能。
6.测试结果及运转成效1登岸模块
图6-1登录模块
2开户模块
5
图6-2开户模块
3存款模块
图6-3存款模块
4取款模块
图6-4取款模块
5查问模块
6
图6-5查问模块
6改正密码
图6-6改正密码
7转账模块
图6-7转账模块
7
8退出登录
图6-8退出登录
7.系统开发所用到的技术
应用语言C++
说明:
C++是在C语言引入了面向体制而形成的一种程序设计语言,程序结构灵巧,代码简短清楚,可移植性强,支持数据抽象,面向对象程序设计和泛型程序设计。
因此它是一种应用宽泛的系统语言。
8
参照文件
[1]张红梅,于明,程序设计实验教程,中国铁道第一版社,2004
[2]徐武,周启涛,葛卉娟,VisualC++与Oracle数据库编程事例,电子工业第一版社,2004
[3]网冠科技,VisualC++6.0时髦编程百例,机械工业第一版社,2003
[4]求是科技,VisualC++6.0程序设计与开发技术大全,人民邮电第一版社,2004
[5]广正工作室《C++Builder适用教程》[M].机械工业第一版社1998年
[6]MattTells《高级编程指南——C++Builder》[M].中国水利水电第一版社
1998年
9
附录所有代码
#include
#include
#include
classBank
{
public:
Bank(){};//默认结构函数
voidOpenAccount()//开户
{
cout<<"欢迎开户:
"<cout<<"请输入您的姓名:
"<cin>>name;
cout<<"请输入您的卡号:
"<cin>>cardID;
cout<<"请输入您的密码:
"<cin>>psw;
cout<<"请输入您的预存金额:
"<cin>>money;
cout<<"恭贺您,开户成功!
"<}
voidSaveMoney()//存款
{
longID;
longpsw1;
intmoney1;
cout<<"欢迎使用取款业务:
\n";
cout<<"请输入您的卡号:
"<cin>>ID;
cout<<"请输入您的密码:
"<cin>>psw1;
if(ID==cardID&&psw1==psw)
{
cout<<"请输入您的存款金额:
"<cin>>money1;
10
money=money+money1;
cout<<"存款成功,卡上余额为:
"<}
else
{
cout<<"您的卡号或许密码错误,请从头输入!
"<cout<<"请从头输入您的密码:
"<cin>>psw1;
if(psw1==psw)
{
cout<<"请输入您的存款金额:
"<cin>>money1;
money=money+money1;
cout<<"存款成功,卡上余额为:
"<}
else
{
cout<<"温馨提示:
密码错误,卡已被吃掉(打印出凭条,您的
卡已经暂停全部业务):
"<exit
(1);
}
}
}
voidTakeMoney()//取款
{
longID;
longpsw1;
intmoney1;
cout<<"欢迎您使用取款业务\n";
cout<<"请输入您的卡号:
"<cin>>ID;
cout<<"请输入您的密码:
"<cin>>psw1;
if(ID==cardID&&psw1==psw)
{
11
cout<<"请输入您取款的金额:
"<cin>>money1;
if(money>=money1)
{
money=money-money1;
cout<<"取款成功,您卡上余额为:
"<}
else
{
cout<<"取款金额高出账户余额,请从头输入取款金额:
";
cin>>money1;
money=money-money1;
cout<<"取款成功,您卡上余额为:
"<}
}
else
{
cout<<"温馨提示:
您的卡号或密码错误,请从头输入!
"<cout<<"请从头输入您的密码:
"<cin>>psw1;
if(psw1==psw)
{
cout<<"请输入您的取款金额:
"<cin>>money1;
if(money>=money1)
{
money=money-money1;
cout<<"取款成功,您卡上余额为:
"<}
else
{
cout<<"取款金额高出账户余额,请从头输入取款金额:
";cin>>money1;
money=money-money1;
cout<<"取款成功,您卡上余额为:
"<12
}
}
cout<<"温馨提示:
密码错误,卡已被吃掉(打印出凭条,您的卡
已经暂停全部业务):
"<exit
(1);
}
}
voidInquiry()//查问余额
{
longID;
longpsw1;
cout<<"欢迎进行查问余额业务\n";
cout<<"请输入您的卡号:
"<cin>>ID;
cout<<"请输入您的密码"<cin>>psw1;
if(ID==cardID&&psw1==psw)
{
cout<<"卡上余额为:
"<}
else
{
cout<<"您的卡号或许密码错误,请从头输入!
"<cout<<"请从头输入您的密码:
"<cin>>psw1;
if(psw1==psw)
{
cout<<"卡上余额为:
"<}
else
cout<<"温馨提示:
密码错误,卡已被吃掉(打印出凭条,您的
卡已经暂停全部业务):
"<exit
(1);
}
}
13
voidChangepsw()//改正密码
{
longID;
longpsw1;
longpsw2;
cout<<"欢迎使用改正密码业务\n"<cout<<"请输入您的卡号:
"<cin>>ID;
cout<<"请输入您的密码:
"<cin>>psw1;
if(ID==cardID&&psw1==psw)
{
cout<<"请输入您的原始密码:
"<cin>>psw1;
cout<<"请输入您的新密码:
"<cin>>psw2;
cout<<"确认新密码:
请从头输入新密码:
"<cin>>psw2;
psw=psw2;
cout<<"改正密码成功!
"<}
else
{
cout<<"您的卡号或许密码错误!
"<cout<<"请从头输入您的原始密码:
"<cin>>psw1;
if(psw1==psw)
{
cout<<"请输入您的新密码:
"<cin>>psw2;
cout<<"确认新密码:
请输入新密码:
"<cin>>psw2;
psw=psw2;
cout<<"改正密码成功!
"<}
14
else
{
cout<<"温馨提示:
密码错误,卡已被吃掉(打印出凭条,您的卡已经暂停全部业
务):
"<exit
(1);
}
}
}
voidTransfer()//转账
{
longID;
longID2;
longpsw1;
intmoney1;
cout<<"欢迎使用转账业务\n"<cout<<"请输入您的卡号:
"<cin>>ID;
cout<<"请输入您的密码:
"<cin>>psw1;
if(ID==cardID&&psw1==psw)
{
cout<<"请输入您要转账的卡号:
"<cin>>ID2;
cout<<"请输入您要转账的金额:
"<cin>>money1;
if(money>=money1)
{
money=money-money1;
cout<<"转账成功,您卡上余额为:
"<}
else
{
cout<<"金额高出账户余额,请从头输入取款金额:
";cin>>money1;
15
money=money-money1;
cout<<"转账成功,您卡上余额为:
"<}
}
else
{
cout<<"温馨提示:
您的卡号或密码错误,请从头输入!
"<cout<<"请从头输入您的密码:
"<cin>>psw1;
if(psw1==psw)
{
cout<<"请输入您的转账金额:
"<cin>>money1;
if(money>=money1)
{
money=money-money1;
cout<<"转账成功,您卡上余额为:
"<}
else
{
cout<<"转账金额高出账户余额,请从头输入转账金额:
";
cin>>money1;
money=money-money1;
cout<<"转账成功,您卡上余额为:
"<}
}
cout<<"温馨提示:
密码错误,卡已被吃掉(打印出凭条,您的卡已
经暂停全部业务):
"<exit
(1);
}
}
private:
charname[20];
longcardID;
16
longpsw;
intmoney;
};
voidmain()
{
inti;
Bankk;
do
{
cout<<"欢迎进入中国工商银行"<cout<<"ICBC"<cout<<"请选择您要办理的手续:
\n";
cout<<"1.开户\n";
cout<<"2.存款\n";
cout<<"3.取款\n";
cout<<"4.查问余额\n";
cout<<"5.改正密码\n";
cout<<"6.转账\n";
cout<<"7.退出系统\n";
cout<<"请输入您要办理业务的序号:
";
cin>>i;
if(i==7)
break;
switch(i)
{
case1:
k.OpenAccount();break;//开户
case2:
k.SaveMoney();break;//存款
case3:
k.TakeMoney();break;//取款
case4:
k.Inquiry();break;//查问余额
case5:
17
k.Changepsw();break;//改正密码
case6:
k.Transfer();break;//转账
default:
{cout<<"你的输入有误,请输入1-7之间的整数!
\n";}
}
}
while
(1);
}
18