(芙蓉学院)(芙蓉学院)软件工程实验报告课题: 银行储蓄管理系统*名:**学号:同组姓名:专业班级:芙蓉计科0701指导教师:***设计时间:2011/3/20评阅意见:评定成绩:指导老师签名:年月日银行储蓄管理系统目录1.需求分析1.1系统的功能性需求1.2系统需求分析规格说明书1.3系统实体联系(ER)图1.4系统数据流(DFD)图1.5系统数据字典1.6面向数据流的设计方法1.需求分析系统中要求每个人银行管理者都有一个系统帐号,并每个帐号都有密码,系统的一切操作(如:增加存储用户,提高利率等)都由管理者执行,而不是由存诸用户执行,也主是说存储用户并不直接与系统交互,而是通过管理员与系统交互。
该系统主要有两部份业务功能,存款与取款。
储户填写的存款单或取款单由业务员输入系统,如果是存款则系统记录存款人姓名,住址(或电话号码),身份证号码,存款类型,存款日期,到期日期,利率及密码(可选)等信息,并打印存单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算得利息并打印出利息清单给储户。
1.1系统的功能性需求系统为管理者提供主功能界面系统在启动时要求管理者输入登录帐号与密码系统要通过管理员执行一系操作(如:添加用户,修改,查询,删除等)管理员代用户实现存款,取款,查询等操作储户的一切信息,存储在数据库表中1.2系统需求分析规格说明书●实现储户开户登记●办理定期存款帐●办理定期存款手续●办理活期取款帐●办理活期取款手续●实现利息计算●输出明细表●数据备份和数据恢复功能●查看帐户信息1.3系统ER图系统主要关系模式:1.储户(储户姓名,住址,身份证号码)2.管理员(员工号,姓名)3.存款(储户姓名,员工号,金额,存款类型,到期日期,存款日期)4.查询(储户姓名,员工号)5.取款(储户姓名,员工号,金额,取款日期)1.5系统顶层数据流(DFD)图打印存单打印清单1.6系统0层数据流(DFD)图储户信息文件1.8第3层数据流图储户信息文件储户信息文件1.10数据字典1.6.1确定输入流和输出流的边界,从而孤立出变换中心。
如图:1.1图1.11.6.2完成“第一级分解”基于书上第三章第三题实现在银行储蓄管理系统在一级分解中,可将系统分解成三个子功能模块:用户操作,业务员操作,系统输出。
如下图所示:业务员操作 银行存储管理系统用户操作 系统输出1.6.3完成“第二级分解”<1> 用户操作的分解可将用户操作分解为:开户民,存款,取款,查询。
如下图所示:<2>业务员操作的分解业务员的操作是将用户的操作传送给系统,代替用户与系统交互,所以,业务员的操作与系统的操作基本类似,也可以近似地将业务员看作用户。
所以操作员操作可分解为:开户,存款,取款,查询并且如用户在开户时设有密码,则进行密码验证。
所以分解图如下:<3> 系统输出分解系统输出可分解为:计算利息-打印清单,保存新用户信息,更新用户信息,打印存单分解图如下:1.6.4使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化。
由于业务员的操作与用户的操作基本相似,可以简单化地认为系统只与业务员交互,基于这个思想,将有利与简化以后系统程序的设计与开发。
精化图如下:#include<iostream.h>#include<string.h>class Bank{private:Account * account[50];int maxID;int accNum;public:Bank();void Append();void Delete();void Query();};class Account{private:int ID;char * Name;//int Year;double Balance;public:Account();Account(int,const char * ,double); void Saving();int Withdraw();void ShowMe();int getID(){return ID;}};Account::Account(){ID = 0;strcpy(Name," ");Balance = 0;}Account::Account(int id,const char * name,,double balance){ID = id;Name = new char[50];strcpy(Name,name);//Year=year;Balance = balance;}void Account::Saving(){double number;cout<<"Please input saving number:";cin>>number;Balance = Balance + number;cout<<"Now the balance of your account is "<<Balance<<endl;return;}int Account::Withdraw(){double number;cout<<"Please input withdraw number:";cin>>number;if(Balance<number){cout<<"Sorry,now the balance of your accout is less than "<<number<<"."<<"So you can not withdraw!"<<endl;return 0;}elseBalance = Balance - number;cout<<"Now the balance of your account is"<<Balance<<endl;return 1;}void Account::ShowMe(){cout<<"Account ID:"<<ID<<endl;cout<<"Name:"<<Name<<endl;// cout<<"Year:"<<Year<<endl;cout<<"Balance:"<<Balance<<endl;return;}//int Accout::getID()//{//return ID;//}Bank::Bank(){for(int i=0;i<50;i++){account[i] = NULL;}maxID = 0;accNum = 0;}void Bank::Append(){if(accNum == 50){cout<<"Sorry,the bank is full,so can not add new account!"<<endl; return;}int id;char * name = new char[50];double balance;cout<<"Please input the name of the account:";cin>>name;id = maxID;balance = 0;Account * acc = new Account(id,name,balance);account[accNum] = acc;cout<<"Append successful!"<<endl;account[accNum]->ShowMe();maxID++;accNum++;return;}void Bank::Delete(){int ID;cout<<"Please input the accout ID that you want to delete:"; cin>>ID;int flag = 1;int i = 0;while((i<accNum)&&(flag)){if(ID == account[i]->getID()){//flag = 0 indicate had found the accountIDflag = 0;}else{i++;}}if(flag){cout<<"The account does not exists!"<<endl;return;}for(int j=i;j<accNum;j++){account[j] = account[j+1];}delete account[accNum-1];accNum--;cout<<"Delete successful!"<<endl;return;}void Bank::Query(){int ID;cout<<"Please input the account ID that you want to query:"; cin>>ID;int flag = 1;int i=0;while((i<accNum)&&(flag)){if(ID == account[i]->getID())flag = 0;}else{i++;}}if(flag){cout<<"The account does not exist!"<<endl<<endl; return;}account[i]->ShowMe();int choice=0 ;while(choice!=3){cout<<" 1:Save money"<<endl;cout<<" 2:Withdraw money"<<endl;cout<<" 3:Return"<<endl;cout<<" Please input the choice:";cin>>choice;cout<<endl;switch(choice){case 1:account[i]->Saving();break;case 2:account[i]->Withdraw();break;case 3:break;}}return;}void main(){Bank bank;int choice = 0;cout<<"Welcome to bank system"<<endl;while(choice != 4)cout<<"1: Add an account"<<endl; cout<<"2: Delete an account"<<endl; cout<<"3: Query an account"<<endl; cout<<"4: Exit"<<endl<<endl;cout<<"Please input your choice:"; cout<<endl;cin>>choice;switch(choice){case 1:bank.Append();break;case 2:bank.Delete();break;case 3:bank.Query();break;case 4:break;}cout<<endl;}//return;}。