面象程序设计课程设计
题 目 模拟ATM机存取款理系统
院 系 计算机系
专 业 计算机科学技术
学生姓名
学 号
指导教师
二O六年X月X日
目 录
1.前言
11选题目意义
2.系统分析
21需求分析
22功求
23软硬件环境
3.系统概设计
31系统总体架构设计
4.系统详细设计
41理模块
42类定义
5.系统实现
51类实现
52程序实现
6.系统测试
7收获体会
8参考文献
9附录
1.前言
11选题目意义
总结运学期学知识训练灵活应学C++知识应继承抽象类虚函数虚基类态文件输入输出够巩固深化理知识提高编程水分析问题解决问题力
12研究容
模拟银行动取款机程中界面户交互程实现查询银行卡余额取款修改密码退出系统等功
2系统分析
21需求分析
金融意识科技意识提高紧张忙碌生活中越越惯月奔忙银行营业柜台问排队缴种样费时种营单位电信移动供电煤气水证券等等提高服务质量方便客户二减轻日趋繁重工作量纷纷委托银行开展代收代付业务
银行天处理量存取款事件做存取款银行工作重环节然效处理必须良程序数理系统建立良软件系统实现快速效准确安全处理银行事物
22功求
(1)卡号密码输入三次否直接退出系统
(2)取款功:取款金额受卡余额机单笔取款金额机前剩余金额限制
(3)查询功:实现查询余额功
(4)更改密码:实现密码更改功密码2次验证
(5)锁卡功:实现卡锁功
(6)退卡功:实现退出系统功
23软硬件环境
环境:Visual c++ 60
硬件:lenovo ideapad
3系统概设计
31系统整体架构设计
系统总体框架
银行理系统
存钱页面
取款页面
余额页面
修改密码
注销页面
登录界面
注册开户
界页面
注销退出
4.系统详细设计
41理模块
(1)登录页面
输入卡号密码根户输入卡号密码台文件查询正确登录成功保存卡信息已备
卡号存密码匹配该卡号已注销提示该卡号已存已注销保持界面三次变等户重新输入
(2)界面页面
导航栏:欢迎储蓄卡理(存款取款修改密码转账功注销退出)
(3)储蓄卡开户页面
提供开户界面户输入新储蓄卡信息该信息保存文件中开户金额作该卡第次存款记录存文件
(4)存钱页面
登录界面卡号提供数输入界面等户输入存款金额台数库中找该户余额记录修改余额该存款事件相应信息写数库时存钱金额显示页面
(5)取款页面
登录界面卡号提供数输入界面等户输入取款金额果取款金额该户卡余额取款者新余额写文件次取款事件写入文件时取钱金额显示页面
(6)注销页面
关闭文件状态注销关闭整系统
42类定义
(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()
成员方法
退出系统功
5系统实现
51类实现
(1)consumer类
class consumerpublic YH户类继承银行类属性
{
public
friend class YH
consumer(int idstring Nameint Numberdouble INstring Companystring Addressstring PassWordfloat m)
{
IDidnameNamenumberNumberinINcompanyCompanyaddressAddressmoneympasswdPassWord
}
consumer(){ID0name'0'number0in0company'0'address'0'money0passwd'0'}
int get_id(){return ID}
void savemoney() 取钱
string get_passwd(){return passwd} 取密码
void display()
void fetchmoney() 取钱
void change_passwd()
void add_money(float)计算余额
void dec_money(float)计算余额
float get_money()卡卡转帐
private
int ID 开户帐号
string passwd 户密码
string name 户姓名
float money 开户金额
int numberstring companystring addressdouble in
}
(2)银行类:
class YH 银行类
{
public
void set_account()银行开户功
void del_account() 注销账户功
void transfer(int) 转账功
void enter_account() 进入户信息功
void addmoney(intfloat)存款功
void exitYH() 退出系统
void functionshow()
void save()
void load() 功界面
protected
consumer *account[20]
static int acnum账户数
52程序实现
(1)读入户信息功实现:
void YHload()
{ifstream infile(bankdatdatiosin)输入方式开文件
if(infile)
{cerr<<读取错误资料中<
}
int n0
int idm
string nampasswint numberstring companystring addressdouble in
infile>>acnum
for(n0n
infile>>m
infile>>nam
infile>>passw
infile>>company
infile>>number
infile>>address
infile>>in
account[n]>passwd
consumer * acc new consumer(idnamnumberincompanyaddresspasswm) 读入n开辟段存
account[n] acc 赋值首址
}
infileclose()
cout<<读取资料正常<
(2)转账功实现:
void YHtransfer(int x)
{int id
cout<<请输入帐号
cin>>id
int flag 1
int i 0
while((i
if(idaccount[i]>get_id()) flag 0 else i++
}
if(flag)
{
cout<<帐号存<
}
float b
cout<
while(b<0)
{
cout<<请输入正确数字<
cin>>b
}
if(account[x]>get_money() cout<<起金额够<
cout<<转账成功<
return
}
(3)账户金额计算实现:
void consumeradd_money(float x)
{moneyx+money}
void consumerdec_money(float x)
{moneymoneyx}
void YHaddmoney(int xfloat y)
{account[x]>moneyaccount[x]>moneyy
}
float consumerget_money()
{return money}
void main()
{YH yh
yhfunctionshow()
}
(4)界面显示
void YHfunctionshow()
{
int n
do
{system(cls)
load()
cout<
cin>>n
while(n<1||n>4)
{
cout<<操作错误请输入正确操作序号<
cin>>n
}
switch(n)
{
case 1 set_account()开户
break
case 2enter_account()登录
break
case 3 del_account()注销
break
case 4 exitYH()退出
break
}
cinget()输入流类istream成员函数
}
while(true)
}
void YHenter_account()
{int id
cout<<请输入帐号
cin>>id
int flag 1
int i 0 __page_break__
while((i
if(idaccount[i]>get_id()) flag 0 else i++
}
if(flag)
{
cout<<帐号存<
}
cout<<请输入密码
string passw
cin>>passw
if(passwaccount[i]>get_passwd()) return返回登录界面
account[i]>display()cinget()cinget()
int n
do{system(cls)
cout<<请选择列操作:<
cin>>n
(5)添加删账户功实现:
switch(n)
{case 1 account[i]>display()break
case 2 account[i]>fetchmoney()save()break25功执行次调次save函数重新写入数
case 3account[i]>savemoney()save()break
case 4account[i]>change_passwd()save()break
case 5transfer(i)save()break
case 6return
}cinget()cinget()
}
while(1)
}
void YHset_account()
{
int id
string nam
string passw
float m
string companystring addressint numberdouble in
cout<<请输入开户号:<
cout<<请输入开户姓名:<
cout<<请输入开户密码:<
cout<<请输入存入金额<
cout<<请输入开户电话:<
cout<<请输入开户公司:<
cout<<请输入开户址:<
cout<<请输入开户身份证号码:<
while(m<0)
{
cout<<请输入正确数字<
}
consumer * acc new consumer(idnamnumberincompanyaddresspasswm)
account[acnum] acc
cout<<开户成功<
save()
cinget()
return
}
void YHdel_account()
{
int id
cout<
int flag 1
int i 0
while((i
if(id account[i]>get_id())
{
flag 0
}
else
{
i++
}
}
if(flag)
{
cout<<该帐号存请重新输入<
}
for(int jij
account[j] account[j+1]
}
account[acnum1]NULL
acnum 账号总数减次
cout<<账号已注销<
cinget()
return
}
(6)修改密码实现:
void consumerchange_passwd()
{
string pwdrepwd
cout<<请输入新密码:
cin>>pwd
cout<<请输入次新密码:
cin>>repwd
if(pwdrepwd)
cout<<输入两次密码样输入键返回层菜单<
cout<<密码修改成功请牢记<
(7)取存款实现:
void consumerfetchmoney()
{
float m
char ch
do
{
cout<
while(m<0)
{
cout<<请输入正确数字<
cin>>m
}
if(money
cout<<起余额足<
else
{moneymoneym
cout<
}
cout<<否继续该项操作:(YN)
<
cin>>ch
while(ch'n'&&ch'N'&&ch'Y'&&ch'y')选择错误时判定
{
cout<<→
cin>>ch
}
}while(ch'y'||ch'Y')
}
void consumersavemoney()存钱函数功实现
{
float c
char ch
do
{
cout<
while(c<0)
{
cout<<输入错误请重新输入<
cin>>c
}
moneymoney+c
cout<<操作已成功<
cin>>ch
while(ch'n'&&ch'N'&&ch'Y'&&ch'y')
{
cout<<→
cin>>ch
}
}while(ch'y'||ch'Y')
}
int YHacnum0
(8)户信息显示:
void consumerdisplay()户信息界面
{system(cls)
cout<<#####################################<
}
6.系统测试
61首页
62开户页面
63储蓄卡理页面
64存取款页面
65密码修改页面
66转账页面
67查询户信息页面
68销户页面
7.收获体会
次课程设计收获通次课设进步巩固课知识更加熟练继承抽象类虚函数虚基类态文件输入输出功提高编程水分析问题解决问题力
8参考文献
[1]高俊文cc++程序设计 北京:民邮电出版社2005
[2]谭浩强C++程序设计北京:清华学出版社2004
9附录
源程序:
#include
#include
#include
using namespace std
class consumer
class YH 银行类
{
public
void set_account()银行开户功
void del_account() 注销账户功
void transfer(int) 转账功
void enter_account() 进入户信息功
void addmoney(intfloat)存款功
void exitYH() 退出系统
void functionshow()
void save()
void load() 功界面
protected
consumer *account[20]
static int acnum账户数
}
class consumerpublic YH户类继承银行类属性
{
public
friend class YH
consumer(int idstring Nameint Numberdouble INstring Companystring Addressstring PassWordfloat m)
{
IDidnameNamenumberNumberinINcompanyCompanyaddressAddressmoneympasswdPassWord
}
consumer(){ID0name'0'number0in0company'0'address'0'money0passwd'0'}
int get_id(){return ID}
void savemoney() 取钱
string get_passwd(){return passwd} 取密码
void display()
void fetchmoney() 取钱
void change_passwd()
void add_money(float)计算余额
void dec_money(float)计算余额
float get_money()卡卡转帐
private
int ID 开户帐号
string passwd 户密码
string name 户姓名
float money 开户金额
int numberstring companystring addressdouble in
}
void YHsave()
{ofstream ofile(bankdatdatiosout)输出方式开文件
ofstream outfile(bankdatdatiosout)输出方式开文件 bankdatdat接收存输出数
int n0
outfile<
outfile<
outfile<
outfile<
outfile<
outfile<
outfile<
outfile<
}
outfileclose()
}
*读入户信息功实现*
void YHload()
{ifstream infile(bankdatdatiosin)输入方式开文件
if(infile)
{cerr<<读取错误资料中<
}
int n0
int idm
string nampasswint numberstring companystring addressdouble in
infile>>acnum
for(n0n
infile>>m
infile>>nam
infile>>passw
infile>>company
infile>>number
infile>>address
infile>>in
account[n]>passwd
consumer * acc new consumer(idnamnumberincompanyaddresspasswm) 读入n开辟段存
account[n] acc 赋值首址
}
infileclose()
cout<<读取资料正常<
*转账功实现*
void YHtransfer(int x)
{int id
cout<<请输入帐号
cin>>id
int flag 1
int i 0
while((i
if(idaccount[i]>get_id()) flag 0 else i++
}
if(flag)
{
cout<<帐号存<
}
float b
cout<
while(b<0)
{
cout<<请输入正确数字<
cin>>b
}
if(account[x]>get_money() cout<<起金额够<
cout<<转账成功<
return
}
*账户金额计算*
void consumeradd_money(float x)
{moneyx+money}
void consumerdec_money(float x)
{moneymoneyx}
void YHaddmoney(int xfloat y)
{account[x]>moneyaccount[x]>moneyy
}
float consumerget_money()
{return money}
void main()
{YH yh
yhfunctionshow()
}
*界面显示*
void YHfunctionshow()
{
int n
do
{system(cls)
load()
cout<
cin>>n
while(n<1||n>4)
{
cout<<操作错误请输入正确操作序号<
cin>>n
}
switch(n)
{
case 1 set_account()开户
break
case 2enter_account()登录
break
case 3 del_account()注销
break
case 4 exitYH()退出
break
}
cinget()输入流类istream成员函数
}
while(true)
}
void YHenter_account()
{int id
cout<<请输入帐号
cin>>id
int flag 1
int i 0 __page_break__
while((i
if(idaccount[i]>get_id()) flag 0 else i++
}
if(flag)
{
cout<<帐号存<
}
cout<<请输入密码
string passw
cin>>passw
if(passwaccount[i]>get_passwd()) return返回登录界面
account[i]>display()cinget()cinget()
int n
do{system(cls)
cout<<请选择列操作:<
cin>>n
switch(n)
{case 1 account[i]>display()break
case 2 account[i]>fetchmoney()save()break25功执行次调次save函数重新写入数
case 3account[i]>savemoney()save()break
case 4account[i]>change_passwd()save()break
case 5transfer(i)save()break
case 6return
}cinget()cinget()
}
while(1)
}
void YHset_account()
{
int id
string nam
string passw
float m
string companystring addressint numberdouble in
cout<<请输入开户号:<
cout<<请输入开户姓名:<
cout<<请输入开户密码:<
cout<<请输入存入金额<
cout<<请输入开户电话:<
cout<<请输入开户公司:<
cout<<请输入开户址:<
cout<<请输入开户身份证号码:<
while(m<0)
{
cout<<请输入正确数字<
}
consumer * acc new consumer(idnamnumberincompanyaddresspasswm)
account[acnum] acc
cout<<开户成功<
save()
cinget()
return
}
void YHdel_account()
{
int id
cout<
int flag 1
int i 0
while((i
if(id account[i]>get_id())
{
flag 0
}
else
{
i++
}
}
if(flag)
{
cout<<该帐号存请重新输入<
}
for(int jij
account[j] account[j+1]
}
account[acnum1]NULL
acnum 账号总数减次
cout<<账号已注销<
cinget()
return
}
void consumerchange_passwd()
{
string pwdrepwd
cout<<请输入新密码:
cin>>pwd
cout<<请输入次新密码:
cin>>repwd
if(pwdrepwd)
cout<<输入两次密码样输入键返回层菜单<
cout<<密码修改成功请牢记<
void consumerfetchmoney()
{
float m
char ch
do
{
cout<
while(m<0)
{
cout<<请输入正确数字<
cin>>m
}
if(money
cout<<起余额足<
else
{moneymoneym
cout<
}
cout<<否继续该项操作:(YN)
<
cin>>ch
while(ch'n'&&ch'N'&&ch'Y'&&ch'y')选择错误时判定
{
cout<<→
cin>>ch
}
}while(ch'y'||ch'Y')
}
void consumersavemoney()存钱函数功实现
{
float c
char ch
do
{
cout<
while(c<0)
{
cout<<输入错误请重新输入<
cin>>c
}
moneymoney+c
cout<<操作已成功<
cin>>ch
while(ch'n'&&ch'N'&&ch'Y'&&ch'y')
{
cout<<→
cin>>ch
}
}while(ch'y'||ch'Y')
}
int YHacnum0
void consumerdisplay()户信息界面
{system(cls)
cout<<#####################################<
}
void YHexitYH()退出系统
{
cout<
}
南京信息工程学滨江学院
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档