银行定期储蓄管理系统.docx
《银行定期储蓄管理系统.docx》由会员分享,可在线阅读,更多相关《银行定期储蓄管理系统.docx(29页珍藏版)》请在冰豆网上搜索。
银行定期储蓄管理系统
银行定期储蓄管理系统
一、课题内容和要求
银行定期储蓄系统是模拟银行工作人员进行银行定期储蓄基本业务操作的系统,它可以实现如下几个功能:
1、工作人员根据口令进入系统,2、可以录入新的存单信息(存单编号,储户姓名,身份证编号,住址,存款金额,存期,利率,密码),利率在存期决定后自动得到,3、据存单编号可以查询存单信息,4、根据存单编号和密码可以完成储户取款操作,自动算清应支付的利息并显示在屏幕上。
本系统要求界面友好,可操作性强,存单信息可以保存在文件中,在实现基本功能的基础上增加对员工信息维护的功能,比如修改口令。
通过本课题,可以熟练掌握面向对象的设计方法,函数的调用、文件的读写的知识,以及查找的算法等等。
二、需求分析
1)提供界面友好,可操作性强的菜单:
输出菜单,提示工作人员输入密码,正确则进入,不正确,提示是否继续,继续则再次输入密码,否的话则推出系统。
进入后提示若干功能的选项,根据客户不同的需求,工作人员输入选项,调用不同的函数,实现不同的功能。
2)录入新的存单:
根据用户信息,录入存单编号,储户姓名,身份证编号,住址,联系电话,存款金额,存期,利率,密码等信息,利率根据储蓄的年数自动得到。
3)保存存单信息:
录入的存单信息保存在文本文件中,可以查阅。
4)查询存单信息:
根据客户提供的存单编号,显示出客户的账户状况,并输出。
5)取款:
客户提供存单编号和密码,都正确时才可取款,输入两次错误便无法取款。
取款数不得大于剩余的钱数,否则取款失败,取款成功则把利息显示在菜单上。
6)修改口令:
工作人员可进行口令的修改,先输入修改前密码,正确则输入新密码,输入两次,相同则修改成功,不同则修改失败,原密码输入错误同样显示修改失败。
功能框架如图所示:
三、概要设计
1)主要类:
classAccount
{
private:
intID;//存单编号
char*Name;//储户姓名
intIDcard;//身份证编号
char*Address;//住址
intMoney;//存款金额
intYear;//存期
intCode;//密码
floatRate;//利率
public:
Account(intid,char*name,intidcard,char*address,intmoney,intyear,intcode);//类的构造函数
voidShowMe();//显示录入的信息
intgetID();
intgetCode();
intgetYear();
floatgetRate();
intgetMoney();
};
2)主要函数流程图
(1)输入口令:
正确则进入系统,错误提示是否继续,继续则再次输入口令,否则退出系统。
是
否
是否
否
(2)录入新的存单信息:
函数原型:
voidAppend(),将用户的信息写入文本文件中。
(3)查询用户信息:
函数原型:
voidQuery(),根据客户提供的存单编号,显示出客户的账户状况,包括存单编号,储户姓名,身份证编号,住址,存款金额,存期,利率,密码,利率,然后输出。
否
是
真
假
(4)取款:
函数原型voidWithdraw()。
输入帐单号码和密码进行取款,显示利息。
否
是
是否
真
假
否
是
是否
否
是
是否
(5)修改密码:
函数原型:
voidchangecode()。
工作人员可进行口令的修改,先输入修改前密码,正确则输入新密码,输入两次,相同则修改成功,不同则修改失败,原密码输入错误同样显示修改失败。
否
是
否是
四、详细设计
#include
#include
#include
#include
classAccount
{
private:
intID;//存单编号
char*Name;
intIDcard;//身份证编号
char*Address;//住址
intMoney;//存款金额
intYear;//存期
intCode;//密码
floatRate;//利率
public:
Account(intid,char*name,intidcard,char*address,intmoney,intyear,intcode);//类的构造函数
voidShowMe();//显示录入的信息
intgetID();
intgetCode();
intgetYear();
floatgetRate();
intgetMoney();
};
Account:
:
Account(intid,char*name,intidcard,char*address,intmoney,intyear,intcode)
{
ID=id;
Name=newchar[50];//类的构造函数的实现
strcpy(Name,name);
IDcard=idcard;
Address=newchar[50];
strcpy(Address,address);
Money=money;
Year=year;
Code=code;
switch(year)//根据存款期限自动计算利率
{
case1:
Rate=0.0312;//一年期的利率为3.12%
break;
case2:
//二、三年期的利率为3.26%
case3:
Rate=0.0326;
break;
case4:
//四、五年期的利率为3.58%
case5:
Rate=0.0358;
break;
case6:
//六、七、八、九、十年期的利率为3.26%
case7:
case8:
case9:
case10:
Rate=0.0403;
break;
}
}
voidAccount:
:
ShowMe()//把用户的信息显示出来
{
cout<<"ID:
"<cout<<"姓名"<cout<<"ID号码:
"<cout<<"地址:
"<
cout<<"存储金额:
"<cout<<"存储时间:
"<cout<<"存储密码:
"<cout<<"利率:
"<}
intAccount:
:
getID()//得到帐单编号
{
returnID;
}
intAccount:
:
getCode()//得到密码
{
returnCode;
}
floatAccount:
:
getRate()//得到利率
{
returnRate;
}
intAccount:
:
getYear()//得到存期
{
returnYear;
}
intAccount:
:
getMoney()//得到存款
{
returnMoney;
}
classBank
{
private:
Account*account[50];//银行类,定义了50个帐户的数组
intaccNum;
public:
Bank();
voidAppend();//添加帐单信息
voidQuery();//查询帐单
voidWithdraw();//取款
};
Bank:
:
Bank()//初试化bank类
{
for(inti=0;i<50;i++)
{
account[i]=NULL;
}
accNum=0;
}
voidBank:
:
Append()//添加帐户信息函数
{
if(accNum==50)//如果满了,提示无法再存款了
{
cout<<"对不起,系统以满无法存入新信息!
"<}
char*name=newchar[50];char*address=newchar[50];//从键盘录入存单信息
intid,idcard,year,money,code;
cout<<"请输入ID号码:
"<cin>>id;
cout<<"请输入姓名:
"<cin>>name;
cout<<"请输入IDcard号码:
"<cin>>idcard;
cout<<"请输入地址:
"<cin>>address;
cout<<"请输入您的金额:
"<cin>>money;
cout<<"请输入存储时间:
"<cin>>year;
cout<<"请输入密码:
"<cin>>code;
Account*acc=newAccount(id,name,idcard,address,money,year,code);
//开辟一个对象空间
account[accNum]=acc;
cout<<"添加成功!
"<ofstreamfout;//把信息写入文本文件中
fout.open("test.txt",ios:
:
app);
if(!
fout){
cout<<"Cannotopenoutputfile!
"<}
fout<<"Id:
"<fout<<"姓名:
"<fout<<"Idcard号码:
"<fout<<"地址:
"<
fout<<"金额:
"<fout<<"时间:
"<fout<<"密码:
"<fout<<"利率:
"<getRate()<<"\n"<<"\n";
fout<<"***********************************************"<<"\n";
fout.close();//关闭文件
accNum++;//每录入一个帐号,总数加一
}
voidBank:
:
Query()//查询帐单信息
{
intID;
cout<<"请输入您要查询的ID:
";
cin>>ID;
intflag=1;//设置个flag判断
inti=0;
while((i{
if(ID==