银行储蓄管理系统实验报告.docx
《银行储蓄管理系统实验报告.docx》由会员分享,可在线阅读,更多相关《银行储蓄管理系统实验报告.docx(31页珍藏版)》请在冰豆网上搜索。
银行储蓄管理系统实验报告
实训报告
题目:
银行储蓄管理系统
院系:
专业:
__
学号:
指导
日期:
2016年1月7日
一、课设目的………………………………….……………..3
二、需求分析…………………………………………………3
三、程序的主要功能…………………………………………3
四、系统总体框架……………………………………………3
五、模块设计与分析…………………………………………4
六、类的设计与分析…………………………………………5
七、存在的不足与解决方法………………………………….7
八、功能测试………………………………………………….7
九、源代码…………………………………………………13
十、课设总结………………………………………………23
一、课设目的
课程设计的目的是总结与运用一学期来所学的知识,训练我们灵活应用所学C++知识,独立完成问题分析、总结设计、详细设计和编程实现等软件开发全过程的综合实践能力。
巩固、深化理论知识,提高编程水平,并在此过程中培养我们严谨的科学态度和良好的工作作风。
二、需求分析:
随着社会经济的发展,信息化程度的不断深入,银行的传统业务已不能满足客户的需求。
现今,人们的科技意识已经有了很大的提高,在紧X忙碌的生活中已越来不习惯每天奔波于银行营业柜台去办理各种业务,利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是当前每个商业银行都要研究的课题。
因此如何应用计算机技术加强银行账户管理是当前迫切需要解决的一个问题。
所以本次课程设计是模拟银行账户的管理,开发一个银行个人账户管理系统。
设计思想是一切为使用者着想,操作尽量简单明了,努力做到每一个用户都可以使用这个系统来办理自己的业务。
并且通过该银行账户管理系统地运行,可以使办公人员轻松快捷的完成对账户管理的任务,提高招募管理效率,是银行的账目管理工作系统化、规X化、自动化。
三、程序的主要功能:
主要用于银行的储蓄卡管理系统,它可以帮组我们有效、准确、并且高效实现的完成存取事件。
系统操作方便效率、安全性高、只要开户并设定好密码就可以轻松的实现存取款。
系统实现的主要有储蓄卡开户管理、存取款管理、用户查询历史数据显示、注销等功能。
储蓄卡开户管理模块:
卡号、XX、开户金额、XX号、地址、、密码、确认密码和保存组成。
〔开户金额必须是数字,密码和确认密码必须一样是六位数字〕
注销模块:
一旦注销卡号就不存在且余额提醒你取出。
四、系统总体框架:
五、模块设计与分析:
储蓄卡开户管理模块
登录页面:
输入卡号和密码,根据用户输入的卡号和密码,到后台文件查询,若正确则登录成功,并保存卡好信息已备后用。
若卡号存在和密码不匹配或无该卡号已经注销,提示该卡号已存在或已注销,保持界面三次不变等待用户的重新输入。
主界面页面:
主要导航栏有[欢迎使用储蓄卡管理〔存款、取款、修改密码、转账功能、注销退出〕]
储蓄卡开户页面:
提供开户界面,由用户输入新储蓄卡的所有信息,将该信息保存到文件中,并将开户金额作为该卡的第一次存款记录存人文件。
存钱页面:
从登录界面得到卡号,并提供数据输入界面,等待用户的输入存款金额。
从后台数据库中找到该用户余额记录,修改余额,并将该存款事件的相应信息写人数据库,同时将存钱的金额显示在页面上。
取款页面:
从登录界面得到卡号,并提供数据输入界面,等待用户输入取款金额,如果取款金额大于该用户卡上的余额则不能取款,或者将新的余额写人文件,并将本次取款事件写入文件同时将取钱的金额显示在页面上,。
注销页面:
从关闭文件,状态为注销,最后关闭整个系统。
列举取款模块进行分析:
voidconsumer:
:
fetchmoney()
{
floatm;
charch;
do
{
cout<"<<"¥>"<cin>>m;
while(m<=0)
{
cout<<"请输入正确的数字!
"<cout<<"→";
cin>>m;
}
if(money{
cout<<"对不起,你的余额不足!
"<}
else
{money=money-m;
cout<"
<}
cout<<"是否要继续该项操作:
(Y/N)"
<cout<<"→";
cin>>ch;
while(ch!
='n'&&ch!
='N'&&ch!
='Y'&&ch!
='y')//选择错误时判定
{
cout<<"→";
cin>>ch;
}
}while(ch=='y'||ch=='Y');
}
在取款页面中,输入取款金额并对取款金额与存款余额进行比较,如果取款金额小于零,请输入正确的数字;如果取款金额大于存款金额,对不起,您的余额不足;如果取款金额小于存款余额的话就执行,并保存记录。
六、类的设计与分析
1.comsumer类
classcomsumer主要制定用户的成员数据,并进行登录与保存功能:
相关代码:
classconsumer:
publicYH//用户类,继承银行类的属性
{
public:
friendclassYH;
consumer(intid,stringName,intNumber,doubleIN,stringCompany,stringAddress,stringPassWord,floatm)
{
ID=id;name=Name;number=Number;in=IN;company=Company;address=Address;money=m;passwd=PassWord;
}
consumer(){ID=0;name='0';number=0;in=0;company='0';address='0';money=0;passwd='0';}
intget_id(){returnID;}
voidsavemoney();//取钱
stringget_passwd(){returnpasswd;}//取得密码
voiddisplay();
voidfetchmoney();//取钱
voidchange_passwd();
voidadd_money(float);//计算余额
voiddec_money(float);//计算余额
floatget_money();//卡卡转帐
private:
intID;//开户XX
stringpasswd;//用户密码
stringname;//用户XX
floatmoney;//开户金额
intnumber;stringcompany;stringaddress;doublein;
};
名称
属性
说明
ID
数据成员
用户账户数据
name
数据成员
用户XX
money
数据成员
用户首次金额
in
数据成员
用户XX号
address
数据成员
用户地址
number
数据成员
用户
Passwd
数据成员
用户密码
savemoney()
成员方法
存钱
fetchmoney()
成员方法
取钱
change_passwd()
成员方法
修改密码
get_money()
成员方法
卡卡转账
comsumer类说明表
2.YH类
YH类主要实现用户的各种功能:
classYH//银行类
{
public:
voidset_account();//银行开户功能
voiddel_account();//注销账户功能
voidtransfer(int);//转账功能
voidenter_account();//进入用户个人信息功能
voidaddmoney(int,float);//存款功能
voidexitYH();//退出系统
voidfunctionshow();
voidsave();
voidload();//功能界面
protected:
consumer*account[20];
staticintacnum;//账户数
};
名称
属性
说明
acnum
数据成员
账户数
set_account()
成员方法
开户功能
del_account()
成员方法
注销账户功能
transfer()
成员方法
转账功能
functionshow()
成员方法
主界面显示功能
addmoney()
成员方法
存钱功能
exitYH()
成员方法
退出系统功能
YH类说明表
七、存在的不足与解决方法
在这设计的过程里,我们遇到了大大小小各个问题,例如:
〔1〕问题:
规划设计做的不够好,没有把类和类的数据成员、成员函数给搞清楚,就急着下手编程,结果把程序搞的乱七八糟的。
解决:
重新认真细心规划设计好所需要的类,弄清楚各个类的作用,在进行编程。
〔2〕问题:
由于不够细心,程序总是出些较低级的错误,例如漏写分号,忘括号等。
解决:
做任何事,都需认真细心,注意好每一步骤
〔3〕问题:
当我们的程序的框架基本搭好,准备填写内容时,却迟迟未能下手,不知道从何写起。
解决:
重温课本,请教同学和老师。
这才知道自己的不足之处,以后定要好好学习,要有坚持不懈和锲而不舍的精神。
八、功能测试
〔1〕首页:
〔2〕储蓄卡开户页面
〔3〕主界面页面
主要导航栏有:
欢迎使用储蓄卡管理〔查看XX信息、存款、取款、修改密码、转账、返回上一菜单〕
〔4〕存钱页面
〔5〕取款页面
从登录界面得到卡号,并提供数据输入界面,等待用户输入取款金额,如果取款金额大于该用户卡上的余额则不能取款,或者将新的余额写人文件,并将本次取款事件写入文件同时将取钱的金额显示在页面上。
当输入取款金额大于现有金额
当输入取款金额小于或等于现有金额:
〔6〕修改密码页面
当两次输入密码相同时:
当两次输入密码不同时:
〔7〕销户页面
(8)退出系统页面
九、源代码:
#include
#include
#include
usingnamespacestd;
classconsumer;
classYH//银行类
{
public:
voidset_account();//银行开户功能
voiddel_account();//注销账户功能
voidtransfer(int);//转账功能
voidenter_account();//进入用户个人信息功能
voidaddmoney(int,float);//存款功能
voidexitYH();//退出系统
voidfunctionshow();
voidsave();
voidload();//功能界面
protected:
consumer*account[20];
staticintacnum;//账户数
};
classconsumer:
publicYH//用户类,继承银行类的属性
{
public:
friendclassYH;
consumer(intid,stringName,intNumber,doubleIN,stringCompany,stringAddress,stringPassWord,floatm)
{
ID=id;name=Name;number=Number;in=IN;company=Company;address=Address;money=m;passwd=PassWord;
}
consumer(){ID=0;name='0';number=0;in=0;company='0';address='0';money=0;passwd='0';}
intget_id(){returnID;}
voidsavemoney();//取钱
stringget_passwd(){returnpasswd;}//取得密码
voiddisplay();
voidfetchmoney();//取钱
voidchange_passwd();
voidadd_money(float);//计算余额
voiddec_money(float);//计算余额
floatget_money();//卡卡转帐
private:
intID;//开户XX
stringpasswd;//用户密码
stringname;//用户XX
floatmoney;//开户金额
intnumber;stringcompany;stringaddress;doublein;
};
voidYH:
:
save()
{ofstreamofile("bankdat.dat",ios:
:
out);//以输出方式打开文件
ofstreamoutfile("bankdat.dat",ios:
:
out);//以输出方式打开文件bankdat.dat接收从内存输出的数据
intn=0;
outfile<for(n=0;n{outfile<ID<<"";//把信息写入磁盘文件bankdat.dat
outfile<money<<"";
outfile<name<<"";
outfile<passwd<<"";
outfile<number<<"";
outfile<company<<"";
outfile<address<<"";
outfile<in<<"";
}
outfile.close();
}
/*读入用户信息功能实现*/
voidYH:
:
load()
{ifstreaminfile("bankdat.dat",ios:
:
in);//以输入方式打开文件
if(!
infile)
{cerr<<"读取错误,无资料中!
"<return;
}
intn=0;
intid,m;
stringnam,passw;intnumber;stringcompany;stringaddress;doublein;
infile>>acnum;
for(n=0;n{infile>>id;//从磁盘文件bankdat.dat读入信息
infile>>m;
infile>>nam;
infile>>passw;
infile>>company;
infile>>number;
infile>>address;
infile>>in;
account[n]->passwd;
consumer*acc=newconsumer(id,nam,number,in,company,address,passw,m);//每读入一个n开辟一段内存
account[n]=acc;//赋值首地址
}
infile.close();
cout<<"读取资料正常!
"<}
/*转账功能实现*/
voidYH:
:
transfer(intx)
{intid;
cout<<"请输入XX:
";
cin>>id;
intflag=1;
inti=0;
while((i{
if(id==account[i]->get_id())flag=0;elsei++;
}
if(flag)
{
cout<<"XX不存在!
"<return;
}
floatb;
cout<";
cin>>b;
while(b<=0)
{
cout<<"请输入正确的数字!
"<cout<<"→";
cin>>b;
}
if(account[x]->get_money()
cout<<"对不起,金额不够!
!
"<else{account[x]->dec_money(b);account[i]->add_money(b);}
cout<<"转账成功!
!
"<return;
}
/*账户金额计算*/
voidconsumer:
:
add_money(floatx)
{money=x+money;}
voidconsumer:
:
dec_money(floatx)
{money=money-x;}
voidYH:
:
addmoney(intx,floaty)
{account[x]->money=account[x]->money-y;
}
floatconsumer:
:
get_money()
{returnmoney;}
voidmain()
{YHyh;
yh.functionshow();
}
/*主界面显示*/
voidYH:
:
functionshow()
{
intn;
do
{system("cls");
load();
cout<"<cout<<"㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣"<cout<<"㊣㊣"<cout<<"㊣1.开户㊣"<cout<<"㊣㊣"<cout<<"㊣2.账户登录㊣"<cout<<"㊣㊣"<cout<<"㊣3.账户注销㊣"<cout<<"㊣㊣"<cout<<"㊣4.退出系统㊣"<cout<<"㊣㊣"<cout<<"㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣"<cout<<"→";
cin>>n;
while(n<1||n>4)
{
cout<<"操作错误,请输入正确的操作序号!
"<cout<<"→";
cin>>n;
}
switch(n)
{
case1:
set_account();//开户
break;
case2:
enter_account();//登录
break;
case3:
del_account();//注销
break;
case4:
exitYH();//退出
break;
}
cin.get();//输入流类istream的成员函数
}
while(true);
}
voidYH:
:
enter_account()
{intid;
cout<<"请输入XX:
";
cin>>id;
intflag=1;
inti=0;//__page_break__
while((i{
if(id==account[i]->get_id())flag=0;elsei++;
}
if(flag)
{
cout<<"XX不存在!
"<return;
}
cout<<"请输入密码:
";
stringpassw;
cin>>passw;
if(passw!
=account[i]->get_passwd())return;//返回到登录界面
account[i]->display();cin.get();cin.get();
intn;
do{system("cls");
cout<<"请选择下列操作:
"<cout<<"◎☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆◎"<cout<<"◎◎"<cout<<"◎1.查看账户信息◎"<cout<<"◎◎"<cout<<"◎2.取款◎"<cout<<"◎◎"<cout<<"◎3.存款◎"<cout<<"◎◎"<cout<<"◎4.修改密码◎"<cout<<"◎◎"<cout<<"◎5.转账◎"<cout<<"◎◎"<cout<<"◎6.返回上一菜单◎"<cout<<"◎◎"<cout<<"◎☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆◎"<cout<<"→";
cin>>n;
switch(n)
{case1:
account[i]->display();break;
case2:
account[i]->fetchmoney();save();break;//从2-5功能,每执行一次调用一次save函数,重新写入数据
case3:
account[i]->savemoney();save();break;
case4:
account[i]->change_passwd();save();break;
case5:
transfer(i);save();break;
case6:
return;
}cin.get();cin.get();
}
while
(1);
}
voidYH:
:
set_account()
{
intid;
stringnam;
stringpassw;
floatm;
stringcompany;stringaddress;intnumber;doublein;
cout<<"请输入开户号:
"<cin>>id;
cout<<"请输入开户人__"<cin>>nam;
cout<<"请输入开户密码:
"<cin>>passw;
cout<<"请输入存入金额:
"<cin>>m;
cout<<"请输入开户人:
"<cin>>number;
cout<<"请输入开户人公司:
"<cin>>company;
cout<<"请输入开户人地址:
"<cin>>address;
cout<<"请输入开户人XX:
"<cin>>in;
while(m<=0)
{
cout<<"请输入正确的数字!
"<cin>>m;
}
consumer*acc=newconsumer(id,nam,number,in,company,address,passw,m);
account