C++银行存取款管理程序设计.docx
《C++银行存取款管理程序设计.docx》由会员分享,可在线阅读,更多相关《C++银行存取款管理程序设计.docx(20页珍藏版)》请在冰豆网上搜索。
C++银行存取款管理程序设计
C++银行存取款管理程序设计
第一章需求分析..........................................................2第二章设计内容..........................................................2
2.1设计要求.............................................................................................................................2
2.1.1题目描述..................................................................................................................2
2.1.2题目要求..................................................................................................................2
2.1.3输入要求..................................................................................................................2
2.1.4输出要求..................................................................................................................3
2.1.5实验步骤..................................................................................................................3
2.2概要设计.............................................................................................................................3
2.2.1设计思路..................................................................................................................3
2.2.2类的描述图..............................................................................................................4
2.3详细设计.............................................................................................................................5
2.3.1主要类的结构..........................................................................................................5
2.3.2类的实现程序及流程结构图..................................................................................5
第三章调试报告..........................................................7
3.1修改密码和功能界面的调试............................................................................................7
3.2存款取款............................................................................................................................7
3.3查询余额和查看收支明细................................................................................................8
3.4输入密码错误导致吞卡....................................................................................................8
3.5输入钱数错误的几种情况................................................................................................9
3.6输入代码错误....................................................................................................................9
第四章参考文献........................................................10第五章附录程序源代码..........................................10
1
随着信息的高速发展和办公自动化的日益普及,许多繁杂的办公事务都需要
借助计算机软件进行操作。
本次课程设计研究的就是银行存取款管理程序。
2.1
2.1.1
请设计一个银行存取款管理程序。
假设每位都有帐号,密码和所存款项。
若输入账号不正确则抛出异常,显示
账号异常,并统计抛出次数。
若输入取款额小于存额则输出,取款失败。
该程序应该具有下列功能:
(1)通过键盘输入帐号和款项;
(2)给定操作,完成存取款;
(3)给定帐号可以显示个人信息和余款;
(4)根据给定的密码,修改密码;
(5)提供收支明细的功能。
2.1.2
(1)以面向对象的观点按照分析、设计、编码、调试和测试的软件开发过程
完成这个应用程序;
(2)储户信息应该包括帐号、姓名、余款和信用等级等;
(3)为各项操作功能设计一个菜单。
应用程序运行后,先显示这个菜单,然
后用户通过菜单项选择希望进行的操作项目。
2.1.3
应用程序运行后,在屏幕上显示一个菜单(菜单显示外观见前面的图示)。
用户可以根据需求,选定相应的操作项目。
进入每个操作后,根据应用程序的提
示信息,从键盘输入相应的信息。
2
2.1.4
(1)应用程序运行后,要在屏幕上显示一个菜单;
(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数
据内容、格式及结束方式等。
2.1.5
(1)编写简单程序,运行演示;
(2)根据题目要求,逐步增加功能;
(3)实现功能,并进行测试;
(4)编写实验报告。
2.2
2.2.1
类是C++语言中的一种数据类型,在面向对象程序设计方法中,程序是通过
对象的表现来实现的,而对象的所有行为和特征都是由类来决定的。
所以要建立
对象,首先必须定义类。
在类中添加函数,再定义对象,通过对象调用函数从而
实现其属性和行为。
本程序定义了Customer和ATM自动取款机类。
具体如下:
1.根据课题要求,定义了银行用户Customer类和ATM自动模拟取款机ATM类,要让ATM类中的成员函数访问Customer类,通过友元函数“friendclassATM;”实现。
2.基于本程序需要实现的功能不同,我们在Customer类中定义了数据成员:
用
户姓名、卡号、金额、用户密码;成员函数:
设置密码、存钱、取钱。
ATM类中定义了数据成员:
记录输入密码的次数;成员函数:
登陆界面、核对密码、功能
界面、修改密码、存钱、取钱、查询信息、查看收支明细、吞卡等。
3.通过判断函数:
strcmp(num,ctm.get_num())==0&&strcmp(pwd,ctm.get_password())==0校验密码。
4.同时根据功能界面选择相关功能代号进行相应的操作,以及各种信息的查询。
5.创建Customer类的对象,调用初始化函数,主程序调用开始,程序实现。
3
2.2.2
图1Customer类
图2ATM类
4
2.3
2.3.1
Customer类
数据成员:
char*get_name();//返回用户名
char*get_num();//返回卡号
char*get_password();//返回密码
floatsave_money();//返回存钱金额
floatget_money();//返回取钱金额
charname[20];//用户姓名
charnum[20];//卡号
floatmoney;//金额
charpassword[6];//密码
成员函数:
Customer(charName[],charNum[],floatMoney,charPassword[]);
//自身的构造函数,初使化
voidset_password(charpwd[]);//设置密码
voidadd_money(floatc);//存钱
voiddec_money(floatm);//取钱
ATM类
数据成员:
boolcheck_password(charp[],charpwd[]);//核对密码
inttimes;//记录输入密码的次数成员函数:
ATM(customer&cn):
ctm(cn){};//自身的构造函数
voidwelcome();//登陆界面
voidshow_function();//功能界面
voidchange_password();//修改密码
voidsave_money();//存钱
voidget_money();//取钱
voidget_information();//查询信息
voidchange_money();//查看收支明细
voidexit_ATM();//退出ATM
voidpush_card();//吞卡
2.3.2先设置功能界面,再通过各代码分别实现修改密码、存款、取款、查询余额、查
看收支明细和退出的操作。
具体程序如下:
5
voidATM:
:
show_function()//构造功能界面{intn;
do
{cout<<"1)修改密码"<cout<<"2)存款"<cout<<"3)取款"<cout<<"4)查询余额"<cout<<"5)查看收支明细"<cout<<"6)退出系统"<cout<<"请选择相关功能的代号:
";cin>>n;
while(n<1&&n>>6)
{cout<<"请输入正确的操作序号!
"<cout<<"请选择相关功能的代号:
";cin>>n;
}
switch(n)
{case1:
change_password();break;
case2:
save_money();break;
case3:
get_money();break;
case4:
get_information();break;
case5:
change_money();break;
case6:
exit_ATM();break;
}
}
while(true);
}
其流程结构图
输入n
n=2n=3n=4n=5n=1
n=6
修改密码查看收存钱取钱查询余额查询余额支明细
Change_passsave_moget_monget_informchange_moexit_ATword()ney()ey()ation()ney()M()
6
程序的编写使一个复杂而繁冗的过程。
起初,我们在运行时出现了各类错误,通
过下面的提示和小组的讨论以及向老师的请教,终于得出了最后的结果
7
8
9
1.《C++程序设计教程》;崔志磊,苏涛,杨俊清;西安电子科技大学出版
社,2008年2月。
2.《程序设计基础——C++实验指导与课程设计》;刘玉英;人民邮电出版社,
2007年9月。
3.《C语言程序设计教程》;朱鸣华,刘旭麟,杨微;机械工业出版社,2007
年5月。
4.《标准C程序设计》;金名,张长富;清华大学出版社,2006年5月。
5.《C程序设计》;谭浩强;清华大学出版社,2005年7月。
//C++ATM自动模拟取款机程序
#include
#include
usingnamespacestd;
classcustomer
{
public:
friendclassATM;
customer(charName[],charNum[],floatMoney,charPassword[]);//初
始化
protected:
char*get_name();//返回用户名
char*get_num();//返回卡号
char*get_password();//返回密码
floatsave_money();//返回存钱金额
floatget_money();//返回取钱金额
voidset_password(charpwd[]);//设置密码
voidadd_money(floatc);//存钱
voiddec_money(floatm);//取钱
private:
10
charpassword[7];//用户密码
charname[20];//用户姓名
charnum[20];
floatmoney;
};
char*customer:
:
get_name(){returnname;}//构造返回用户名
char*customer:
:
get_num(){returnnum;}//构造返回卡号
char*customer:
:
get_password(){returnpassword;}//构造返密码
floatcustomer:
:
save_money(){returnmoney;}//构造返回存钱金额
floatcustomer:
:
get_money(){returnmoney;}//构造返回取钱金额
voidcustomer:
:
set_password(charpwd[]){strcpy(password,pwd);}//构造修改密码
voidcustomer:
:
add_money(floatc){money+=c;}//构造存钱
voidcustomer:
:
dec_money(floatm){money-=m;}//构造取钱classATM
{
public:
ATM(customer&cn):
ctm(cn){}
voidwelcome();//登陆界面
boolcheck_password(charp[],charpwd[]);//核对密码
voidshow_function();//功能界面
voidchange_password();//修改密码
voidsave_money();//存钱
voidget_money();//取钱
voidget_information();//查询信息
voidchange_money();//查看收支明细
voidexit_ATM();//退出ATM
voidpush_card();//吞卡
private:
inttimes;//记录输入密码的次数
customer&ctm;
};
//构造ATM的函数
voidATM:
:
welcome()//构造welcome
{
times=0;
11
cout<<"欢迎使用ATM模拟自动取款机"<charpwd[7],num[20];//密码,卡号
inti=0;
do
{
cout<<"请输入卡号";
cin>>num;
cout<<"请输入密码:
";
cin>>pwd;
if(!
check_password(num,pwd))
{
cout<<"你输入的密码有错误,请重新输入"<times++;
}
else
{
show_function();
}
}
while(times<3);
push_card();
}
boolATM:
:
check_password(charnum[],charpwd[])//构造核对密码
{
if(strcmp(num,ctm.get_num())==0&&strcmp(pwd,ctm.get_password())==
0)
returntrue;
else
returnfalse;
}
voidATM:
:
show_function()//构造功能界面
{
intn;
do
{
cout<<"1)修改密码"<cout<<"2)存款"<cout<<"3)取款"<cout<<"4)查询余额"<cout<<"5)查看收支明细"<cout<<"6)退出系统"<cout<<"请选择相关功能的代号:
";
12
cin>>n;
while(n<1&&n>>6)
{
cout<<"请输入正确的操作序号!
"<cout<<"请选择相关功能的代号:
";
cin>>n;
}
switch(n)
{
case1:
change_password();break;
case2:
save_money();break;
case3:
get_money();break;
case4:
get_information();break;
case5:
change_money();
case6:
exit_ATM();break;
}
}
while(true);
}
voidATM:
:
change_password()//构造修改密码
{
charpwd[7],repwd[7];
times=0;
do
{
cout<<"请输入原密码:
";
cin>>pwd;
//if(!
check_password(ctm.get_password(),pwd))
if(!
check_password(ctm.get_num(),pwd))
times++;
else
break;
}
while(times<2);
if(times==2)
push_card();
intm=0;
do
{
cout<<"请输入新密码:
";
cin>>pwd;
cout<<"请再输入一次新密码:
";
cin>>repwd;
13
if((m=strcmp(pwd,repwd))!
=0)
cout<<"你输入的两次密码不一样,请重新输入!
";
}
while(m!
=0);
ctm.set_password(pwd);
cout<<"密码修改成功,请牢记新密码!
"<}
voidATM:
:
save_money()//构造存钱{
floatc;charch;
do
{
cout<<"请输入钱数:
";cin>>c;
while(c<=0)
{
cout<<"请输入正确的数字!
"<>c;
}
cout<<"操作已成功!
"<ctm.add_money(c);
cout<<"是否要继续(Y/N):
";
cin>>ch;
while(ch!
='n'&&ch!
='N'&&ch!
='y'&&ch!
='Y')
{
cout<<"请根据提示输入正确命令!
"<cin>>ch;
}
}while(ch=='y'||ch=='Y');
}
voidATM:
:
get_money()//构造取钱{
floatm;
charch;
do
{
cout<<"请输入所取金额:
";
cin>>m;
while(m<=0)
{
cout<<"请输入正确的数字!
"<cin>>m;
}
if(ctm.get_money()-m<0)
14
{
cout<<"对不起,你的余额不足!
"<}
else
{
ctm.dec_money(m);
cout<<"是否要继续(Y/N):
";
cin>>ch;
while(ch!
='n'&&ch!
='N'&&ch!
='y'&&ch!
='Y')
{
cout<<"请根据提示输入正确命令!
"<cout<<"是否要取出所选金额(Y/N)";
cin>>ch;
}
}
}
while(ch=='y'||ch=='Y');
}
voidATM:
:
get_information()//构造查询信息{
cout<<"********************"<cout<<"用户姓名:
"<cout<<"卡号:
"<cout<<"余额:
"<cout<<"********************"<}
voidATM:
:
pus