《软件工程课程设计报告银行储蓄管理系统.doc》由会员分享,可在线阅读,更多相关《软件工程课程设计报告银行储蓄管理系统.doc(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、. .目录1 问题定义22 可行性研究22.1 工程概述22.2 可行性分析的前提22.2.1 工程的目标22.2.2 工程的环境32.3 可选的案32.3.1 案一32.3.2 案二32.4 所建议的系统32.4.1 系统说明32.4.2 系统流程图32.4.3 高级数据流图42.5 经济可行性52.5.1系统开发费用52.5.2系统运行费用52.5.3效益52.6技术可行性62.7 操作可行性63 需求分析63.1 需求概述63.2 需求模型63.2.1 数据模型63.2.2 功能模型83.2.3 行为模型93.2.4 数据字典104 总体设计114.1 系统体系构造114.2 模块详细说
2、明124.3 数据库设计135 详细设计145.1 人机界面设计145.2 过程设计176 测试186.1 白盒测试186.2黑盒测试197 结论198参考文献209 附录209.1程序代码201 问题定义账户管理是银行业务流程过程中十分重要且必备的环节之一,在银行业务流程当中起着承上启下的作用,其重要性不言而喻。但是,目前多银行在具体的业务流程处理过程中仍然使用手工操作的式来实施,不仅费时、费力,效率低下,而且无法到达理想的效果。本文针对上述问题,采用软件工程的开发原理,依据软件流程过程规,按照需求分析、概要设计、详细设计、程序编码、测试、软件应用、软件维护等过程开发了一个银行账户管理系统。
3、采用VSC+作为开发工具,数据库设计遵循3式,主要设计了用户根本信息表、用户卡信息表、ATM取款机根本信息表、用户银行存款信息表、管理系统的用户口令表、银行系统的用户信息表等数据表。解决了银行系统中存在的数据平安性、数据一致性以及系统运行速度等问题。系统实现的主要有账户管理、取款机管理、用户查询等功能;*账户管理模块:存款、取款、开户、销户、修改信息、办卡、挂失卡;*用户查询模块;*取款机信息管理模块:管理员管理查询和维护、客户查询和取款等功能;通过该银行账户管理系统地运行,是办公人员可以轻松快捷的完成对账户管理的任务,提高账目管理效率,使银行的账目管理工作系统化、规化、自动化。该银行账目管理
4、信息系统,优点是设计过程思路清晰、模块划分简洁,设计个阶段分工明确。经过实践证明,该划分是合理的,极大地提高了本系统的实现。2 可行性研究2.1 工程概述某银行计算机储蓄系统的工作流程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款那么系统记录存款人的XX、住址或、XX、存款类型、存款日期、到期日期、利率及密码可选等信息,完成后由系统打印存款单给储户。如果是取款,而且存款时留有密码,那么系统首先核对储户密码,假设密码正确或存款时未留密码,那么系统计算利息并印出利息清单给储户。2.2 可行性分析的前提2.2.1 工程的目标所建议系统的开发目标包括: 人力与设备费用的减少及合理利用;
5、 处理速度的提高及准确度的保证; 人员利用率的改进及合理调度; 改进管理和效劳。建立高效的信息传输和效劳平台,提高信息处理速度和利用率等等。a. 用系统的高速特性来节省大量的人力,并且能够极大程度上简化操作人员的工作,使得操作人员只需要做简单的输入输出以及对于本系统的管理就可以简便的完成自己的工作;b. 将人工计算的局部更改为系统运算处理极大的提升了速度,这样就提高了工作效率,也极大程度缩短了用户的等待时间,这样可以提高银行在行业中的竞争力。c. 利用计算机的系统优势,可以弥补人工作业时的出错率高的缺陷,使得每一笔业务都能最大限度防止核实以及复工。d. 利用计算机大容量存储数据库的模式来完成记
6、录的存储,这样在工作中可以及时查证任意一条记录。2.2.2 工程的环境采用WindowsXP操作系统MySQL先进的数据库系统,JSP技术,采用B/S框架。2.3 可选的案2.3.1 案一通过与银行熟练业务员进展深入讨论,制定详细用户调查问卷,真正了解用户以及银行业务员的实际需求,根据业务员提供的信息以及问题定义再综合调查问卷中用户提出的意见进展改进。最终确定工程需要解决的问题,并确定问题能不能被解决。2.3.2 案二工程的另一种实现案是直接购置现有的计算机储蓄系统。但银行业是个对平安性要求很高的行业,如果选用现有计算机储蓄系统,有可能会使得未公开的漏洞对本银行造成冲击,需要承担更高的平安风险
7、;为适应该系统有可能需要更改现有存款系统的数据构造,转换本钱高;软件授权式的差异可能导致系统开销更高。2.4 所建议的系统2.4.1 系统说明系统架构为星状架构,每个分行办事处连接到中心数据库,每台分行电脑与一台打印机相连以输出信息。储户填写的存款单或取款单由业务员输入系统,系统自动更新中心数据库的容,如果是存款,系统记录存款人XX、住址、存款类型、存款日期、利率等信息,并印出存款单给储户;如果是取款,系统计算利息并印出利息清单给储户。2.4.2 系统流程图本系统的系统流程图如以下列图所示:银行管理系统存钱页面取款页面余额页面修改密码注销页面登录界面注册开户主界页面注销退出图2.1系统流程图2
8、.4.3 高级数据流图业务员1接收事物储户2处理存款3处理取款储户本系统的数据流图如以下列图所示:图2.2银行储蓄管理系统根本系统模型2.5 经济可行性2.5.1系统开发费用人员费用。本系统开发期六个月,试运行期为二个月。开发期需要开发人员5人,试运行期需开发人员2人。开发需八个月,员工工资费用为大约10万元。硬件设备费。本系统所需的硬件设备费为大约12万元,其中包括:效劳器1台PC机8台打印机8台条形码扫描仪10台网络设备和布线不连续电源1台工作台8台软件费用。系统所需的软件费用大约为1000元,其中包括:正版WindowsXP正版SQLserver2021MicrosoftOfficeAc
9、cess2003、MicrosoftVisualC+6.0可免费下载耗材费。所需耗材费用估计为1.0万元咨询和评审费、调研和差旅费:约2.0万元其他不可预见费。按开发总费用的10%计算。综上,系统开发总费用为28万元。2.5.2系统运行费用假定本系统运行期为5年,每年的运行费用为:系统维护费。每年需要人员进展系统维护,维护费为1.8万元。设备维护费。建立设备的运行更新期为5年。假设设备日常故障维护费每年0.6万元。消耗材料费。每年耗材费按0.8万元计算。系统年运行费用为4万元,那么5年累计系统运行费用为21万元。综上,系统开发和运行总费用为49万元,折合10万元/年。2.5.3效益一次性收益。
10、提高工作效率,减少工作人员人数。本系统运行可以提高业务处理,核算信息管理的效率。累计可以综合提高工作效率达30%。可以减少现有15%的工作人员,节约人员工资大约12万元/年。经常性收益。办公设备、纸等使用量减少可节约本钱每年约1万元。不可定量收益。业务量的增加使直接经济效益每年上升约7万元。综上所述,每年可增加收益20万元。收益/投资比20/10=2,投资回收期为三年。由此可见,此系统一经使用,可给用户带来很大收益,过一段时间后即可收回本钱,带来盈利。在经济上具有可行性。2.6技术可行性开发系统的计算机硬件已经非常普及,能够适应银行系统的快速和大容量存储,硬件面完全没有问题;现在的计算机各面的
11、技术都非常成熟,相对来说开发此系统的技术也要求比较简单,因此在技术面是可行的;同时银行还必须有一定量的系统管理和维护的专业人员,在这面可以通过培训原来的技术人员成为新的需要的技术人员,也可以雇用所需这面的专业技术员;假设按方案,在规定的期限,本系统的开发是可以完成的。2.7 操作可行性该系统可采用C/S模式开发,提供窗体界面,操作简单。银行业务员要求有根本的计算机使用技能,经过简单培训后将会熟练使用本软件系统管理员要求有一定计算机的专业知识,需要经过专业培训,以能够熟练管理本系统,使其正常运行。3 需求分析3.1 需求概述随着人民生活水平的提高,餐饮,住宿,娱乐业在效劳行业中占有越来越重要的地
12、位。要使在当前酒店行业日趋剧烈的竞争中脱颖而出,必须努力开展自己的特色。在管理面也要有自己的管理特色,防止传统管理法的失误,使得酒店的信誉以及各个管理面都能够出现零失误,以及能够给管理者和普通的营业员带来操作上的便,对整个酒店各个面的业务带来快捷,便,高效的效劳,使用户能够对这个软件感到满意,那么才是管理软件的成功之处。酒店管理系统一个现代化的管理系统,系统给出了实际酒店管理中遇到的所有情况,此酒店管理系统软件是为了代替酒店管理者更好的管理而制作的,软件给出了酒店管理中的各种细节问题,使得管理变的更加的轻松。它符合人们平时的使用习惯,使用性强,能较好的实现各面的功能。3.2 需求模型3.2.1
13、 数据模型本系统的E-R图如以下列图所示:存款存款单类型利率金额账号到期日期存款日期取款取款单金额取款日期账号XX住址XX号储户拥有账户账号开户日期户主密码余额 图3.1银行储蓄E-R图储户XX,XX,住址银行名称,地址存取款类型,数额,利率,密码,到期日期3.2.2 功能模型功能级数据流图如下所示:业务员2.2 打印存单储户储户1 接收事物2.1录入存款信息3.1验证账户3.3 计算利息3.2 核对密码3.4打印利息清单 存款信息存单 存款单 事务 存款信息 取款单 取款额利息清单账户信息 利息取款额 密码图3.2数据流图3.2.3 行为模型本系统的状态图如以下列图所示:处理存款事务重新输入
14、完毕do/打印存款单等待输入密码取消do/显示取消信息验证密码处理取款事务打印利息清单验证账户新开账户显示无效账户等待输入存款信息等待输入取款信息主屏do/要求事务类型 选择存款选择取款输入存款单信息 输入取款单信息【新用户】【无效】 确认有效、有密码老用户 取消确认【无效】 输入密码【无效】【有效】处理成功图4.状态图3.2.4数据字典本系统数据字典如下所示:储户名字:储户信息描述:存储用户的个人详细信息定义:储户信息=储户XX+储户住址+储户XX+储户XX+XX金额+储户密码位置:储户信息名字:存款信息描述:存款储户一次存款的存款信息定义:存款信息=存款类型+存取日期+存款金额+利率位置:
15、输出到打印机名字:取款信息利息清单描述:储户一次取款的取款信息定义:取款信息=取款日期+取款金额+利息位置:输出到打印机名字:密码描述:储户存/取款时必须的6位验证定义:密码=0|1|2|3|4|5|6|7|8|9+0|1|2|3|4|5|6|7|8|9+0|1|2|3|4|5|6|7|8|9+0|1|2|3|4|5|6|7|8|9+0|1|2|3|4|5|6|7|8|9+0|1|2|3|4|5|6|7|8|9位置:储户信息4 总体设计4.1 系统体系构造随着社会经济的开展,信息化程度的不断深入,银行的传统业务已经愈来愈不能满足银行客户的需要。现今,人们的金融意识、科技意识已经有了很大的提高,
16、在紧忙碌的生活中,已经越来越来不习惯每月恩忙于各银行营业柜台之问去排队取款。本银行账户管理信息系统能实现的主要功能有:管理员信息管理;用户信息修改、开户、销户;办卡、挂失卡、换卡;存款、取款。系统的总体功能模块图如图4.1所示:银行储蓄系统1.0输入事务2.0处理存款3.0处理取款1.1输入存款事务1.2输入取款事务2.1录入存款信息3.2计算利息3.1验证账户2.2打印存单3.1.1输入密码3.1.2核对密码3.3打印利息清单 图4.1 系统功能模块图4.2 模块详细说明IPO表系统:银行储蓄管理系统 芸 模块:开户 日期:2021 .3.7编号:1.1调用:1.1.1-1.1.7被调用:1
17、.0输出:账户号输入:户主信息及密码处理:根据接收到的账户信息。局部数据元素:注释:表1.IPO表IPO表系统:银行储蓄管理系统 模块:登录 日期:2021 .3.7编号:1.1调用:1.1.1-1.1.7被调用:1.0输出:账户信息输入:账号及密码处理:根据接收到的账户信息,翻开账号。局部数据元素:注释:表2.IPO表4.3 数据库设计通过对银行账户管理的容和数据关系分析,设计的数据项和数据构造。表4-1登录的设计表列名数据类型允null值账号主键nChar10密码nChar10表4-2登录的容表账号密码zy123456kris654321表4-3账户信息的设计表列名数据类型允null值XX
18、 nChar10XX号nChar20主键nChar10账户nChar10余额Float表4-4账户信息的容表XXXX号账户余额zy1234567891100Kris987654321210005 详细设计5.1 人机界面设计进入银行储蓄管理系统的界面,开户界面如以下列图所示: 图5.1开户界面运行结果图开户功能局部代码如下:void YH:set_account() int id; string nam; string passw; float m;string pany;string address;int number;double in; cout请输入开户号:id; cout请输入开户
19、人XX:nam; cout请输入开户密码:passw; cout请输入存入金额:m;cout请输入开户人:number;cout请输入开户人公司:pany;cout请输入开户人地址:address;cout请输入开户人XX:in; while(m=0) cout请输入正确的数字!m; consumer * acc = new consumer(id,nam,number,in,pany,address,passw,m); accountaum = acc; cout开户成功!endlendl; aum+;save();cin.get();return;void YH:del_account()
20、int id; coutendlid;int flag = 1; int i = 0; while(iget_id() flag = 0; else i+; if(flag) cout该XX不存在,请重新输入!endl; return; /返回到登陆界面 登录界面如以下列图所示: 图5.2登陆界面运行结果图 图5.3登陆界面运行结果图登录功能局部代码如下:void YH:enter_account()int id; coutid; int flag = 1; int i = 0; /_page_break_while(iget_id() flag = 0; else i+; if(flag)
21、coutXX不存在!endl; return; coutpassw;if(passw!=accounti-get_passwd() return;/返回到登录界面accounti-display();cin.get();cin.get();int n;dosystem(cls); 5.2 过程设计登录系统窗体算法描述如下:If 账户和密码一致 If 储蓄系统被选中 If 该账号有权限登录储蓄系统 进入储蓄系统界面;Else该账号无权限登录储蓄系统 提示“用户名或密码错误,请重新输入!信息;Endif6 测试6.1 白盒测试登陆模块过程的流图如下:1243657 图6.1 登录过程的流图 路径一
22、:17 路径二:12357路径三:12467按照此局部采用路径测试,测试用例如下:路径一的测试用例: 输入:不匹配的用户名和密码 预计结果:提示“用户名或密码错误,请重新输入!信息; 路径二的测试用例: 输入:正确的用户名、密码和登录账户信息系统的权限且该用户拥有该权限 预计结果:账户信息系统界面弹出 路径三的测试用例: 输入:正确的用户名、密码和登录消费信息系统的权限且该用户没有该权限 预计结果:提示“您没有该权限!信息。6.2黑盒测试根据登录模块,可以划分出如下等价类。1. 有效等价类(1) 输入的用户名存在(2) 输入与用户名匹配的正确的密码(3) 选择符合用户名的正确权限2. 无效等价
23、类5用户名不存在6输入与用户名不匹配的密码7选择不符合用户名的权限8输入为空根据上面划分出的等价类,设计出下述测试案。(1) 用户名存在,与用户名匹配的正确的密码,选择符合用户名的正确权限输入:用户名zy,密码123,选择储蓄系统预计输出:进入账户信息界面(2) 用户名不存在输入:用户名zzy,密码321,选择储蓄系统预计输出:用户名或密码错误,请重新输入!(3) 用户名存在,密码不匹配输入:用户名zy,密码321,选择储蓄系统预计输出:用户名或密码错误,请重新输入!7 结论首先由衷感教师给我们这样一个锻炼自己的时机,经过两的设计我的收获还是很大的。不仅稳固了以前学过的知识,还学到了很多以前不
24、知道的东西。理论跟实际的差异还是很大的,以后要学会用理论联系实际。从而提高动手实践能力和独立思考能力。课程设计过程中遇到了很多问题,而且有很多的缺乏之处,发现自己对以前的知识理解的不够透彻,掌握的不够结实,有待加强。我们的工作是一个团队的工作,大家一起交流与合作,发扬团队协作精神,学会了合作与交流。要想有成功必须要有合作,这是我学到的一点很重要的。如果这次设计只有我一个人的话,我想我是不会这么快做出来的,在同学的帮助下,和查资料包括百度写出了这个程序,心里很有成就感。经过设计,感觉自己的理解更加深入了,以前不太明白的,现在也都理解了,使我更加对这些东西感兴趣了,通过此次课程设计也使我学会独立思
25、考,与人沟通等能力。熟练了对VC6.0的使用,此次设计由于自己水平的限制,还存在很多缺乏之处,比方说程序的效率比较低!这次程序设计让我体验到了失败的痛苦和成功后的欣喜,这将是我人生中一笔重要的财富,是人生拥有的美好的回忆。8参考文献1 ?软件工程导论第5版?海藩编着清华大学出版2 ?软件工程原理,法与应用? 钦藩 编着 人民交通出版 3 ?软件工程导论第四版? 海藩 编着 清华大学出版 4 ?软件工程? 任胜兵 邢琳 编着 邮电大学5 瑞等,Visual C+数据库系统开发完全手册,人民邮电,20066 于永彦,C+程序设计根底案例教程,大学,20217 ?数据库系统概述第四版?珊主编高等教育
26、9 附录9.1程序代码#include#include #includeusing namespace std;class consumer;class YH /银行类public:void set_account();/银行开户功能void del_account(); /注销账户功能void transfer(int); /转账功能void enter_account(); /进入用户个人信息功能void addmoney(int,float);/存款功能void exitYH();/ 退出系统void functionshow();void save();void load();/ 功能
27、界面protected: consumer *account20; static int aum;/账户数;class consumer:public YH/用户类,继承银行类的属性public: friend class YH; consumer(int id,string Name,int Number,double IN,string pany,string Address,string PassWord,float m) ID=id;name=Name;number=Number;in=IN;pany=pany;address=Address;money=m;passwd=PassWo
28、rd; consumer()ID=0;name=0;number=0;in=0;pany=0;address=0;money=0;passwd=0; int get_id()return ID; void savemoney();/ 取 string get_passwd()return passwd;/ 取得密码 void display(); void fetchmoney(); /取 void change_passwd(); void add_money(float);/计算余额 void dec_money(float);/计算余额 float get_money();/卡卡转帐pr
29、ivate: int ID; /开户XX string passwd; / 用户密码 string name; / 用户XX float money; /开户金额int number;string pany;string address;double in;void YH:save()ofstream ofile(bankdat.dat,ios:out);/以输出式翻开文件 ofstream outfile(bankdat.dat,ios:out);/以输出式翻开文件 bankdat.dat接收从存输出的数据int n=0;outfileaum ;for(n=0;naum;n+)outfile
30、ID ;/把信息写入磁盘文件bankdat.datoutfilemoney ;outfilename ;outfilepasswd ;outfilenumber ;outfilepany ;outfileaddress ;outfilein ;outfile.close(); /*读入用户信息功能实现*/void YH:load()ifstream infile(bankdat.dat,ios:in);/以输入式翻开文件if(!infile)cerr读取错误,无资料中!aum;for(n=0;nid;/从磁盘文件bankdat.dat读入信息infilem;infilenam;infilepa
31、ssw;infilepany;infilenumber;infileaddress;infilein;accountn-passwd;consumer * acc = new consumer(id,nam,number,in,pany,address,passw,m); /每读入一个n开辟一段存accountn = acc; /赋值首地址infile.close();cout读取资料正常!endl;/*转账功能实现*/void YH:transfer(int x)int id; coutid; int flag = 1; int i = 0; while(iget_id() flag = 0
32、; else i+; if(flag) coutXX不存在!endlendl; return ; float b; coutendlb; while(b=0) cout请输入正确的数字!endl;coutb; if(accountx-get_money()b) /调用友元类consumer的公有成员函数cout对不起,金额不够!dec_money(b);accounti-add_money(b);cout转账成功!money=accountx-money-y;float consumer:get_money()return money;void main()YH yh;yh.functions
33、how();/*主界面显示*/void YH:functionshow() int n;dosystem(cls); load();coutendl请输入相应的操作序号进展操作:endl;coutendl;cout endl;cout 1. 开户 endl;cout endl;cout 2.账户登录 endl;cout endl;cout 3.账户注销 endl;cout endl;cout 4.退出系统 endl;cout endl;coutendl;coutn; while(n4) cout操作错误,请输入正确的操作序号!endl; coutn; switch(n) case 1: set_account();/开户 break; case 2:enter_account();/