软件工程课程设计银行储蓄管理系统.docx
- 文档编号:9057882
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:72
- 大小:295.16KB
软件工程课程设计银行储蓄管理系统.docx
《软件工程课程设计银行储蓄管理系统.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计银行储蓄管理系统.docx(72页珍藏版)》请在冰豆网上搜索。
软件工程课程设计银行储蓄管理系统
(芙蓉学院)
(芙蓉学院)
软件工程实验报告
课题:
银行储蓄管理系统
*****
学号:
******15
同组姓名:
专业班级:
芙蓉计科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.取款(储户姓名,员工号,金额,取款日期)
11
n
nn
nnn
nnn
111
11
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使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化。
由于业务员的操作与用户的操作基本相似,可以简单化地认为系统只与业务员交互,基于这个思想,将有利与简化以后系统程序的设计与开发。
精化图如下:
银行储蓄管理系统实验项目:
银行储蓄
实验项目一、银行储蓄系统主菜单模块设计与实现
1.1库函数描述(原型、功能、头部文件)及其作用
Time显示当前时间类#include
System()调用dos命令_sleep()停息#include
String字符串流#include
#include"myheader.h"中有调用的全部函数声明
1.2编码(必须附加注释)
#include"myheader.h"
voidmain()
{
//背景颜色设置
system("COLOR16");
/*
颜色属性由两个十六进制数字指定--第一个为背景,第二个则为
前景。
每个数字可以为以下任何值之一:
0=黑色8=灰色
1=蓝色9=淡蓝色
2=绿色A=淡绿色
3=湖蓝色B=淡浅绿色
4=红色C=淡红色
5=紫色D=淡紫色
6=黄色E=淡黄色
7=白色F=亮白色
*/
//输出=============★欢迎进入银行活期存款系统★=============
inti;
for(i=0;i<13;i++)
cout<<'=';
cout<<"★欢迎进入银行活期存款系统★";
for(i=0;i<13;i++)
cout<<'=';
cout< //列示当前时间 cout<<"当前时间: "; for(i=0;i<6;i++) cout<<""; Timet=latesttime(); t.print(); //列示菜单 mylist(); cout<<"如果您不了解该系统请按N否则按Y: "; //核实输入是否为字符 stringcheck; while (1) { cin>>check; if(check.length()>1) { cout<<"您的输入有误请重新输入: "; continue; } if(check[0]! ='Y'&&check[0]! ='N') cout<<"您的输入有误请重新输入: "; else break; } intmark=1; if(check[0]=='N') { mark=0; cout<<"友情提示: 按对应业务的编号即可进行该业务! "< "< } intflag=1; while(flag++) { if(flag>2) { system("cls"); mylist(); } if(mark) cout<<"请选择业务: "; stringservicenum; //核实输入是否为字符 while (1) { cin>>servicenum; if(servicenum.length()>1) { cout<<"您的输入有误请重新输入: "; continue; } else break; } cout<<"确认请按Y,修改请按N,请选择: "; stringmark; //核实输入是否为字符 while (1) { cin>>mark; if(mark.length()>1) { cout<<"您的输入有误请重新输入: "; continue; } if(mark[0]! ='Y'&&mark[0]! ='N') cout<<"您的输入有误请重新输入: "; else break; } if(mark[0]=='N') continue; if(servicenum[0]=='0') break; cout<<"正在处理请稍等."; _sleep(1000); cout<<"."; _sleep(1000); cout<<".\n"; _sleep(1000); switch(servicenum[0]) { //开户 case'1': creaccount();break; //存款 case'2': deposit();break; //取款 case'3': withdraw();break; //计息 case'4': computeprofit();break; //查询 case'5': checkbalance();break; //排序 case'6': order();break; //系统介绍 case'7': about();break; default: cout<<"对不起,您的选择超出了我们的业务范围。 "< } } cout<<"交易完毕,谢谢合作"< } 1.3mylist.Cpp主函数显示菜单 voidmylist() { inti; for(i=0;i<11;i++) cout<<''; cout<<"*************主菜单*************"< for(i=0;i<12;i++) cout<<""; cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"< for(i=0;i<12;i++) cout<<""; cout<<"☆0.................退出☆"< for(i=0;i<12;i++) cout<<""; cout<<"☆1.................开户☆"< for(i=0;i<12;i++) cout<<""; cout<<"☆2.................存款☆"< for(i=0;i<12;i++) cout<<""; cout<<"☆3.................取款☆"< for(i=0;i<12;i++) cout<<""; cout<<"☆4.................计息☆"< for(i=0;i<12;i++) cout<<""; cout<<"☆5.................查询☆"< for(i=0;i<12;i++) cout<<""; cout<<"☆6.................排序☆"< for(i=0;i<12;i++) cout<<""; cout<<"☆7.................关于☆"< for(i=0;i<12;i++) cout<<""; cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"< } voidabout() { cout<<"银行活期存款系统作者: 张瑞"< cout<<"该系统严格按照国际银行活期存款规则编写,"< cout<<"如果您什么不懂,请在第一步操作中输入N."< cout<<"注意: 请按照提示进行操作.否则后果自负"< cout<<"版权所有,打击盗版"< over(); return; } 1.4实验小结(实验遇到的问题,解决方法) 1.调用外部函数时光简单声明不行必需加个外部修饰extern 2.也可调用外部变量同样用extern 3.把定义的函数都放到myheader.H的头文件中声明 实验项目二、银行储蓄系统开户模块设计与实现 2.1库函数描述(原型、功能、头部文件)及其作用 #include #include #include #include #include #include #include #include usingnamespacestd; 2.2帐户类定义 #include"myheader.h" //帐号类是定义在myhead.H头文件里 classTime{ public: intyear,month,day,hour,minute,second; Time(inta=0,intb=0,intc=0,intd=0,inte=0,intf=0): year(a),month(b),day(c),hour(d),minute(e),second(f){} voidprint() { cout< } voidprint1() { cout< } //两个时间段相距的天数 intisHalfYear(Timet) { intct; if(year>t.year) ct=(year-t.year-1)*360+(month-t.month+11)*30+day+30-t.day; else ct=(month-t.month-1)*30+day+30-t.day; returnct; } voidcopy(Timef)//时间拷贝 { year=f.year; month=f.month; day=f.day; hour=f.hour; minute=f.minute; second=f.second; } //判断时间是否大 booltimebig(Timet) { if(year>t.year) returnfalse; elseif(year returntrue; elseif(year==t.year) { if(month>t.month) returnfalse; elseif(month returntrue; elseif(month==t.month) { if(day>t.day) returnfalse; elseif(day returntrue; elseif(day==t.day) { if(hour>t.hour) returnfalse; elseif(hour returntrue; elseif(hour==t.hour) { if(minute>t.minute) returnfalse; elseif(minute returntrue; elseif(minute==t.minute) { if(second>t.second) returnfalse; elseif(second returntrue; } else returntrue; } else returntrue; } else returntrue; } else returntrue; } returntrue; } }; //检查输入的字符产是否全是数字 boolchecknum(constchar*); //重载比较函数 intstrcmp(constchar*s1,constchar*s2); //钱数大些函数声明 voidreadmoney(char*); //定义帐号类 classAccount { public: charname[20],ID[20],balance[15],code[10]; Timetime; Account(constchar*a="",constchar*b="",constchar*c="",constchar*d="",Timee=Time(0,0,0,0,0,0)) { strcpy(name,a); strcpy(ID,b); strcpy(code,c); strcpy(balance,d); time=e; } voidprint1() { inti; for(i=0;i<30;i++) cout<<"{}"; cout< cout<<"姓名: "< cout<<"身份证号: "< cout<<"余额: "< cout<<"余额大写: "; readmoney(balance); cout<<"开户时间: "; time.print(); } voidprint2() { inti; for(i=0;i<30;i++) cout<<"{}"; cout< cout<<"姓名: "< cout<<"身份证号: "< cout<<"余额: "< cout<<"余额大写: "; readmoney(balance); cout<<"上次计息时间(开户时间): "; time.print(); } }; classRem{ public: charID[20],money[10]; intflag; Timet; Rem(char*a="",char*b="",intc=0,Timed=Time(0,0,0,0,0,0)) { strcpy(ID,a); strcpy(money,b); flag=c; t=d; } voidprint() { if(flag==0) { t.print1(); cout<<""<<"取款"< } if(flag==1) { t.print1(); cout<<""<<"存款"< } } }; //菜单 voidmylist(); //开户 voidcreaccount(); //存款 voiddeposit(); //取款 voidrevisecode(); //计息 voidcomputeprofit(); //查询 voidcheckbalance(); //排序色 voidcreatcolor(); //关于系统介绍 voidabout(); //大写读取金额 voidreadmoney(char*s); //重载比较函数 intstrcmp(constchar*s1,constchar*s2); //结束 voidover(); //求两字符串之和 voidplus(char*s1,char*s2); //求两字符串之差 voidminus(char*s1,char*s2); //将字符串倒置 voidopposition(char*s); //检查输入的金额是否合法并对其进行规范性修改 boolcheckmoney(char*s); //计算利息专用 booljixi(Account&a); //校验身份证号是否正确 boolcheckID(constchar*s); //检查所输入的身份证号是否已开过户,开过户返回true,未开过返回false boolfinID(constchar*s); //获取当前时间的time函数 Timelatesttime(); //移位 voidchange(char*ch); //输出备忘录 voidoutput(constchar*s); 2.3编码(必须附加注释) #include"myheader.h" voidcreaccount()//开户 { cout<<"『欢迎您在此开户』"< charID[20]=""; //检查该身份证号是否符合中华人民共和国身份证号码的编制规则 while (1) { cout<<"请输入您的身份证号: "< cin>>ID; if(checkID(ID)) break; else { cout<<"您的输入有误请重新输入您的身份证号: "< } } //检查是否在此开过户 if(finID(ID)) { cout<<"您已在次开过户。 "<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 课程设计 银行 储蓄 管理 系统