bistu 北京信息科技大学 李春强实验设计五模拟ATM机为用户提供服务Word文档格式.docx
《bistu 北京信息科技大学 李春强实验设计五模拟ATM机为用户提供服务Word文档格式.docx》由会员分享,可在线阅读,更多相关《bistu 北京信息科技大学 李春强实验设计五模拟ATM机为用户提供服务Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
4.实验条件:
(1)主要设备:
586或更高机型,256MB或更高的内存,40G或更大的硬盘。
(2)主要软件:
①操作系统可为Windows9X、WinMe、Win2000或更高版本等;
②开发环境为VC++6.0或者TC++3.0。
(3)参考书目:
①《C++面向对象程序设计》第10章面向对象设计方法与实例陈维兴等编著中国铁道出版社2004年6月第1版
②《C++面向对象程序设计》陈维兴等编著清华大学出版社2004年6月第1版
5.实验方法与步骤:
#include<
iostream>
usingnamespacestd;
classAccoutItem;
classATM//ATM取款机类
{
public:
ATM(AccoutItem&
cn):
cnsm(cn)
{
j=true;
}
voidwelcomeYou();
//登陆界面
boolcheck_passwd(charn[],charpwd[]);
//核对密码
boolcheck_zhang(charnum[]);
//核对转入账号
voidsavemoney();
//存款
voidfetchmoney();
//取款
voidinformation();
//查询信息
voidexitATM();
//退出系统
voidfunctionshow();
//功能界面
voidlock();
//锁机
private:
boolj;
intr;
inttimes;
//记录密码输入次数
AccoutItem&
cnsm;
};
classAccoutItem//用户类
friendclassATM;
AccoutItem(charName[],charNum[],charId[20],floatMoney,charPassword[]);
protected:
char*get_name();
//取得姓名
char*get_num();
//取得卡号
char*get_id();
//取得身份证号
char*get_passwd();
//取得密码
floatget_money1();
//取得余额
voidset_passwd(charpwd[]);
//设置密码
voidset_money1(floatm);
//取钱
charpasswd[8];
//用户密码
charname[20];
//用户姓名
charid[20];
//用户身份证号
charnum[20];
//
floatmoney1;
AccoutItem:
:
AccoutItem(charName[],charNum[],charId[20],floatMoney,charPassword[])
strcpy(name,Name);
strcpy(num,Num);
strcpy(id,Id);
money1=Money;
strcpy(passwd,Password);
}
floatAccoutItem:
get_money1()
returnmoney1;
char*AccoutItem:
get_name()//对于数组的返回操作返回指针
returnname;
get_num()
returnnum;
get_id()
returnid;
get_passwd()
returnpasswd;
voidAccoutItem:
set_money1(floatm)
money1+=m;
set_passwd(charpwd[])
strcpy(passwd,pwd);
voidATM:
welcomeYou()
times=0;
cout<
<
"
欢迎使用银行ATM自动取款机"
endl;
charpwd[8],num1[20],ch;
inti=0;
do
i=0;
cout<
endl<
请输入卡号:
;
do
{
cin.get(ch);
//对于键盘字符串的接收!
num1[i++]=ch;
}
while(ch!
='
\n'
);
num1[i-1]='
\0'
请输入密码:
pwd[i++]=ch;
pwd[i-1]='
if(!
check_passwd(num1,pwd))
cout<
你输入的卡号或密码有误,请重新输入"
times++;
else
functionshow();
while(times<
3);
lock();
boolATM:
check_passwd(charnum[],charpwd[])
if(strcmp(num,cnsm.get_num())==0&
&
strcmp(pwd,cnsm.get_passwd())==0)
returntrue;
else
returnfalse;
functionshow()
intn;
本机可办理以下业务:
********************"
"
1>
取款"
2>
存款"
3>
查询余额"
4>
退出系统"
请您输入相应的操作序号进行操作:
cin>
>
n;
while(n<
1||n>
6)
请输入正确的操作序号!
cin>
switch(n)
case1:
fetchmoney();
break;
case2:
savemoney();
case3:
information();
break;
case4:
exitATM();
while(true);
savemoney()
floatm;
charch;
你要存多少钱:
//两种情况
m;
if(m>
100000){
错误操作,请重新选择"
}else{
while(m<
0)
请输入正确的数字!
cin>
存款成功!
cnsm.set_money1(m);
是否要继续存款:
(y/n)"
ch;
while(ch=='
y'
||ch=='
Y'
fetchmoney()
你要取多少钱:
if(cnsm.get_money1()-m<
对不起,你的余额不足!
取款成功,请收好钱!
cnsm.set_money1(-m);
是否要继续取款:
information()
**********************************"
*用户姓名:
cnsm.get_name()<
*身份证号:
cnsm.get_id()<
*银行卡号:
cnsm.get_num()<
//必须声明友元才能用cnsm调用其成员函数
*存款余额:
cnsm.get_money1()<
lock()
对不起,由于你的操作有误,你的卡已经被没收!
exit
(1);
//系统非正常退出
exitATM()
感谢你对本银行的支持,欢迎下次光临!
请取卡……"
exit(0);
voidmain()
AccoutItemc1("
你的姓名"
"
你的卡号"
你的身份证"
450.8,"
123456"
//先构造一个用户
ATMatm(c1);
atm.welcomeYou();
6.实验总结:
这次课程设计主要用了友元类,指针,数组,get/set函数等知识点,利用面向对象的基本思路将ATM机的基本功能加以实现,例如:
用户登录,密码测试,存款,取款,退出程序等。
主要的欠缺是还没有用界面化的实现,只是在操作台中实现,用户信息没有通过数组,而是在后台录入,这是我的课程设计的基本缺陷,希望老师能提出宝贵的意见和建议从而让我的ATM系统更加全面完善。
附录:
说明:
1.实验过程由学生记录实验的过程,包括画出流程图、操作过程、遇到哪些问题以及如何解决等;
2.实验总结由学生在实验后填写,总结本次实验的收获、未解决的问题以及体会和建议等;
3.源程序(带注释)、代码、具体语句等,若表格空间不足时可作为附录另外附页;
4.程序测试后,将多组测试结果附在程序后;
5.提交报告时请将说明部分去掉。