精品软件工程课程设计银行储蓄系统Word格式文档下载.docx
《精品软件工程课程设计银行储蓄系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《精品软件工程课程设计银行储蓄系统Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
系统中要求每个人银行管理者都有一个系统帐号,并每个帐号都有密码,系统的一切操作(如:
增加存储用户,提高利率等)都由管理者执行,而不是由存诸用户执行,也主是说存储用户并不直接与系统交互,而是通过管理员与系统交互。
该系统主要有两部份业务功能,存款与取款。
储户填写的存款单或取款单由业务员输入系统,如果是存款则系统记录存款人姓名,住址(或电话号码),身份证号码,存款类型,存款日期,到期日期,利率及密码(可选)等信息,并打印存单给储户;
如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算得利息并打印出利息清单给储户。
系统为管理者提供主功能界面
系统在启动时要求管理者输入登录帐号与密码
系统要通过管理员执行一系操作(如:
添加用户,修改,查询,删除等)
管理员代用户实现存款,取款,查询等操作
储户的一切信息,存储在数据库表中
●实现储户开户登记
●办理定期存款帐
●办理定期存款手续
●办理活期取款帐
●办理活期取款手续
●实现利息计算
●输出明细表
●数据备份和数据恢复功能
●查看帐户信息
1.3系统ER图
系统主要关系模式:
1.储户(储户姓名,住址,身份证号码)
2.管理员(员工号,姓名)
3.存款(储户姓名,员工号,金额,存款类型,到期日期,存款日期)
4.查询(储户姓名,员工号)
5.取款(储户姓名,员工号,金额,取款日期)
11
n
nn
nnn
111
1.5系统顶层数据流(DFD)图
打印存单
开户
取款存款
存款
查询取款
打印清单
1.6系统0层数据流(DFD)图
打印存单
储户信息文件
存取款信息变动
密码错误读取储户信息
保存新用户信息
密码正确
利息清单
1.7第2层DFD图
储户信息文件
核对错误
读取信息
存款
填写存款信息核对信息
核对
正确
打印
1.8第3层数据流图储户信息文件
核对错误读取信息
更新储户信息
填写取款信息核对信息
核对正确
取款
1.9第5层数据流图
储户信息文件
新用户信息存储信息
取款信息取款通知
存款信息存款通知
查询信息
显示信息
验证错误
1.10数据字典
数据名字:
储户信息表
数据来源:
储户
数据目的:
身份验证
数据组成:
姓名+密码+住址+身份证号码+现有金额
1.6.1确定输入流和输出流的边界,从而孤立出变换中心。
如图:
1.1
图1.1
1.6.2完成“第一级分解”
基于书上第三章第三题实现在银行储蓄管理系统在一级分解中,可将系统分解成三个子功能模块:
用户操作,业务员操作,系统输出。
如下图所示:
1.6.3完成“第二级分解”
<
1>
用户操作的分解
可将用户操作分解为:
开户民,存款,取款,查询。
2>
业务员操作的分解
业务员的操作是将用户的操作传送给系统,代替用户与系统交互,所以,业务员的操作与系统的操作基本类似,也可以近似地将业务员看作用户。
所以操作员操作可分解为:
开户,存款,取款,查询
并且如用户在开户时设有密码,则进行密码验证。
所以分解图如下:
3>
系统输出分解
系统输出可分解为:
计算利息-打印清单,保存新用户信息,更新用户信息,打印存单
分解图如下:
1.6.4使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化。
由于业务员的操作与用户的操作基本相似,可以简单化地认为系统只与业务员交互,基于这个思想,将有利与简化以后系统程序的设计与开发。
精化图如下:
#include<
iostream.h>
string.h>
classBank
{
private:
Account*account[50];
intmaxID;
intaccNum;
public:
Bank();
voidAppend();
voidDelete();
voidQuery();
};
classAccount
intID;
char*Name;
//intYear;
doubleBalance;
Account();
Account(int,constchar*,double);
voidSaving();
intWithdraw();
voidShowMe();
intgetID(){returnID;
}
Account:
:
Account()
ID=0;
strcpy(Name,"
"
);
Balance=0;
Account(intid,constchar*name,,doublebalance)
ID=id;
Name=newchar[50];
strcpy(Name,name);
//Year=year;
Balance=balance;
voidAccount:
Saving()
doublenumber;
cout<
"
Pleaseinputsavingnumber:
;
cin>
>
number;
Balance=Balance+number;
Nowthebalanceofyouraccountis"
Balance<
endl;
return;
intAccount:
Withdraw()
Pleaseinputwithdrawnumber:
if(Balance<
number)
cout<
Sorry,nowthebalanceofyouraccoutislessthan"
number<
."
Soyoucannotwithdraw!
return0;
else
Balance=Balance-number;
Nowthebalanceofyouraccountis"
return1;
ShowMe()
AccountID:
ID<
Name:
Name<
//cout<
Year:
Year<
Balance:
//intAccout:
getID()
//{
//returnID;
//}
Bank:
Bank()
for(inti=0;
i<
50;
i++)
account[i]=NULL;
maxID=0;
accNum=0;
voidBank:
Append()
if(accNum==50)
Sorry,thebankisfull,socannotaddnewaccount!
return;
intid;
char*name=newchar[50];
doublebalance;
Pleaseinputthenameoftheaccount:
name;
id=maxID;
balance=0;
Account*acc=newAccount(id,name,balance);
account[accNum]=acc;
Appendsuccessful!
account[accNum]->
ShowMe();
maxID++;
accNum++;
Delete()
intID;
PleaseinputtheaccoutIDthatyouwanttodelete:
ID;
intflag=1;
inti=0;
while((i<
accNum)&
&
(flag))
if(ID==account[i]->
getID())
{
//flag=0indicatehadfoundtheaccountID
flag=0;
}
else
i++;
if(flag)
Theaccountdoesnotexists!
for(intj=i;
j<
accNum;
j++)
account[j]=account[j+1];
deleteaccount[accNum-1];
accNum--;
Deletesuccessful!
Query()
PleaseinputtheaccountIDthatyouwanttoquery:
inti=0;
Theaccountdoesnotexist!
endl<
account[i]->
intchoice=0;
while(choice!
=3)
1:
Savemoney"
2:
Withdrawmoney"
3:
Return"
Pleaseinputthechoice:
cin>
choice;
switch(choice)
case1:
account[i]->
Saving();
break;
case2:
Withdraw();
case3:
voidmain()
Bankbank;
intchoice=0;
Welcometobanksystem"
while(choice!
=4)
1:
Addanaccount"
2:
Deleteanaccount"
3:
Queryanaccount"
4:
Exit"
Pleaseinputyourchoice:
bank.Append();
bank.Delete();
bank.Query();
case4:
//return;