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 项目概述某银行计算机储蓄系统的工作流程大致如下: 储户填写的存款单或取款单由业务员键入系统, 如果是存款则系统记录存款人的姓名、 住址( 或电话号码) 、 身份证号码、 存款类型、 存款日期、 到期日期、 利率及密码( 可选) 等信息, 完成后由系统打印存款单给储户。如果是取款, 而且存款时留有密码, 则系统首先核对储户密码, 若密码正确或存款时未留密
5、码, 则系统计算利息并印出利息清单给储户。2.2 可行性分析的前提2.2.1 项目的目标所建议系统的开发目标包括: 人力与设备费用的减少及合理利用; 处理速度的提高及准确度的保证; 人员利用率的改进及合理调度; 改进管理和服务。建立高效的信息传输和服务平台, 提高信息处理速度和利用率等等。a. 用系统的高速特性来节省大量的人力, 而且能够极大程度上简化操作人员的工作, 使得操作人员只需要做简单的输入输出以及对于本系统的管理就能够简便的完成自己的工作; b. 将人工计算的部分更改为系统运算处理极大的提升了速度, 这样就提高了工作效率, 也极大程度缩短了用户的等待时间, 这样能够提高银行在行业中的
6、竞争力。c. 利用计算机的系统优势, 能够弥补人工作业时的出错率高的缺陷, 使得每一笔业务都能最大限度避免核实以及复工。d. 利用计算机大容量存储数据库的模式来完成记录的存储, 这样在工作中能够及时查证任意一条记录。2.2.2 项目的环境采用WindowsXP操作系统MySQL先进的数据库系统, JSP技术, 采用B/S框架。2.3 可选的方案2.3.1 方案一经过与银行熟练业务员进行深入讨论, 制定详细用户调查问卷, 真正了解用户以及银行业务员的实际需求, 根据业务员提供的信息以及问题定义再综合调查问卷中用户提出的意见进行改进。最终确定项目需要解决的问题, 并确定问题能不能被解决。2.3.2
7、 方案二项目的另一种实现方案是直接购买现有的计算机储蓄系统。但银行业是个对安全性要求很高的行业, 如果选用现有计算机储蓄系统, 有可能会使得未公开的漏洞对本银行造成冲击, 需要承担更高的安全风险; 为适应该系统有可能需要更改现有存款系统的数据结构, 转换成本高; 软件授权方式的差异可能导致系统开销更高。2.4 所建议的系统2.4.1 系统说明系统架构为星状架构, 每个分行办事处连接到中心数据库, 每台分行电脑与一台打印机相连以输出信息。储户填写的存款单或取款单由业务员输入系统, 系统自动更新中心数据库的内容, 如果是存款, 系统记录存款人姓名、 住址、 存款类型、 存款日期、 利率等信息, 并
8、印出存款单给储户; 如果是取款, 系统计算利息并印出利息清单给储户。2.4.2 系统流程图本系统的系统流程图如下图所示: 银行管理系统存钱页面取款页面余额页面修改密码注销页面登录界面注册开户主界页面注销退出图2.1系统流程图2.4.3 高级数据流图业务员1接收事物储户2处理存款3处理取款储户本系统的数据流图如下图所示: 图2.2银行储蓄管理系统基本系统模型2.5 经济可行性2.5.1系统开发费用人员费用。本系统开发期六个月, 试运行期为二个月。开发期需要开发人员5人, 试运行期需开发人员2人。开发需八个月, 员工工资费用为大约10万元。硬件设备费。本系统所需的硬件设备费为大约12万元, 其中包
9、括: 服务器1台PC机8台打印机8台条形码扫描仪10台网络设备和布线不间断电源1台工作台8台软件费用。系统所需的软件费用大约为1000元, 其中包括: 正版WindowsXP正版SQLserver MicrosoftOfficeAccess 、 MicrosoftVisualC+6.0可免费下载耗材费。所需耗材费用估计为1.0万元咨询和评审费、 调研和差旅费: 约2.0万元其它不可预见费。按开发总费用的10%计算。综上, 系统开发总费用为28万元。 2.5.2系统运行费用假定本系统运行期为5年, 每年的运行费用为: 系统维护费。每年需要人员进行系统维护, 维护费为1.8万元。设备维护费。建设设
10、备的运行更新期为5年。假设设备日常故障维护费每年0.6万元。消耗材料费。每年耗材费按0.8万元计算。系统年运行费用为4万元, 则5年累计系统运行费用为21万元。综上, 系统开发和运行总费用为49万元, 折合10万元/年。2.5.3效益一次性收益。提高工作效率, 减少工作人员人数。本系统运行能够提高业务处理, 核算信息管理的效率。累计能够综合提高工作效率达30%。能够减少现有15%的工作人员, 节约人员工资大约12万元/年。经常性收益。办公设备、 纸张等使用量减少可节约成本每年约1万元。不可定量收益。业务量的增加使直接经济效益每年上升约7万元。综上所述, 每年可增加收益20万元。收益/投资比20
11、/10=2, 投资回收周期为三年。由此可见, 此系统一经使用, 可给用户带来很大收益, 过一段时间后即可收回成本, 带来盈利。在经济上具有可行性。2.6技术可行性开发系统的计算机硬件已经非常普及, 能够适应银行系统的快速和大容量存储, 硬件方面完全没有问题; 现在的计算机各方面的技术都非常成熟, 相对来说开发此系统的技术也要求比较简单, 因此在技术方面是可行的; 同时银行还必须有一定量的系统管理和维护的专业人员, 在这方面能够经过培训原来的技术人员成为新的需要的技术人员, 也能够雇用所需这方面的专业技术员; 若按计划, 在规定的期限内, 本系统的开发是能够完成的。2.7 操作可行性该系统可采用
12、C/S模式开发, 提供窗体界面, 操作简单。银行业务员要求有基本的计算机使用技能, 经过简单培训后将会熟练使用本软件系统管理员要求有一定计算机的专业知识, 需要经过专业培训, 以能够熟练管理本系统, 使其正常运行。3 需求分析3.1 需求概述随着人民生活水平的提高, 餐饮, 住宿, 娱乐业在服务行业中占有越来越重要的地位。要使在当前酒店行业日趋激烈的竞争中脱颖而出, 必须努力发展自己的特色。在管理方面也要有自己的管理特色, 避免传统管理方法的失误, 使得酒店的信誉以及各个管理方面都能够出现零失误, 以及能够给管理者和普通的营业员带来操作上的方便, 对整个酒店各个方面的业务带来快捷, 方便, 高
13、效的服务, 使用户能够对这个软件感到满意, 那么才是管理软件的成功之处。酒店管理系统一个现代化的管理系统, 系统给出了实际酒店管理中遇到的所有情况, 此酒店管理系统软件是为了代替酒店管理者更好的管理而制作的, 软件给出了酒店管理中的各种细节问题, 使得管理变的更加的轻松。它符合人们平时的使用习惯,使用性强,能较好的实现各方面的功能。3.2 需求模型3.2.1 数据模型本系统的E-R图如下图所示: 存款存款单类型利率金额账号到期日期存款日期取款取款单金额取款日期账号姓名住址电话身份证号储户拥有账户账号开户日期户主密码余额 图3.1银行储蓄E-R图储户( 身份证号码, 姓名, 电话号码, 住址)
14、银行( 名称, 电话号码, 地址) 存取款( 类型, 数额, 利率, 密码, 到期日期) 3.2.2 功能模型功能级数据流图如下所示: 业务员2.2 打印存单储户储户1 接收事物2.1录入存款信息3.1验证账户3.3 计算利息3.2 核对密码3.4打印利息清单 存款信息 存单 存款单 事务 存款信息 取款单 取款额 利息清单账户信息 利息取款额 密码 图3.2数据流图3.2.3 行为模型本系统的状态图如下图所示: 处理存款事务重新输入结束do/打印存款单等待输入密码取消do/显示取消信息验证密码处理取款事务打印利息清单验证账户新开账户显示无效账户等待输入存款信息等待输入取款信息主屏do/要求事
15、务类型 选择存款选择取款输入存款单信息 输入取款单信息【新用户】【无效】 确认有效、 有密码老用户 取消 确认【无效】 输入密码【无效】 【有效】处理成功 图4.状态图 3.2.4 数据字典本系统数据字典如下所示: 储户名字: 储户信息描述: 存储用户的个人详细信息定义: 储户信息=储户姓名+储户住址+储户身份证号码+储户帐号+帐户金额+储户密码位置: 储户信息名字: 存款信息描述: 存款储户一次存款的存款信息定义: 存款信息=存款类型+存取日期+存款金额+利率位置: 输出到打印机名字: 取款信息( 利息清单) 描述: 储户一次取款的取款信息定义: 取款信息=取款日期+取款金额+利息位置: 输
16、出到打印机名字: 密码描述: 储户存/取款时必须的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 系统体系结构 随着社会经济的发展, 信息化程度的不断深入, 银行的传统业务已经愈来愈不能满足银行客户的需要。现今, 人们的金融意识、 科技意识已经有了很大的提高, 在紧张忙碌的生活中, 已经越来越来不习惯每月恩忙于各银行营业柜台之问去排队取款。本银行
17、账户管理信息系统能实现的主要功能有: 管理员信息管理; 用户信息修改、 开户、 销户; 办卡、 挂失卡、 换卡; 存款、 取款。系统的总体功能模块图如图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表系统: 银行储蓄管理系统 作者: 张芸 模块: 开户 日期: .3.7编号: 1.1调用: 1.1.1-1.1.7被调用: 1.0输出: 账户号输入: 户主信息及密码处理: 根
18、据接收到的账户信息。局部数据元素: 注释: 表1.IPO表IPO表系统: 银行储蓄管理系统 作者: 模块: 登录 日期: .3.7编号: 1.1调用: 1.1.1-1.1.7被调用: 1.0输出: 账户信息输入: 账号及密码处理: 根据接收到的账户信息, 打开账号。局部数据元素: 注释: 表2.IPO表4.3 数据库设计 经过对银行账户管理的内容和数据关系分析, 设计的数据项和数据结构。表4-1登录的设计表列名数据类型允许null值账号( 主键) nChar( 10) 密码nChar( 10) 表4-2登录的内容表账号密码zy123456kris654321表4-3账户信息的设计表列名数据类型
19、允许null值姓名 nChar( 10) 身份证号nChar( 20) ( 主键) nChar( 10) 账户nChar( 10) 余额Float表4-4账户信息的内容表姓名身份证号账户余额zy1100Kris210005 详细设计5.1 人机界面设计进入银行储蓄管理系统的界面, 开户界面如下图所示: 图5.1开户界面运行结果图开户功能部分代码如下: void YH:set_account() int id; string nam; string passw; float m;string company;string address;int number;double in; cout请输入
20、开户号: id; cout请输入开户人姓名: nam; cout请输入开户密码: passw; cout请输入存入金额:m;cout请输入开户人电话: number;cout请输入开户人公司: company;cout请输入开户人地址: address;cout请输入开户人身份证号码: in; while(m=0) cout请输入正确的数字!m; consumer * acc = new consumer(id,nam,number,in,company,address,passw,m); accountacnum = acc; cout开户成功!endlendl; acnum+;save()
21、;cin.get();return;void YH:del_account()int id; coutendlid;int flag = 1; int i = 0; while(iget_id() flag = 0; else i+; if(flag) cout该帐号不存在, 请重新输入!endl; return; /返回到登陆界面 登录界面如下图所示: 图5.2登陆界面运行结果图 图5.3登陆界面运行结果图登录功能部分代码如下: void YH:enter_account()int id; coutid; int flag = 1; int i = 0; /_page_break_while
22、(iget_id() flag = 0; else i+; if(flag) cout帐号不存在!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 测
23、试6.1 白盒测试登陆模块过程的流图如下: 1 243657 图6.1 登录过程的流图 路径一: 17 路径二: 12357路径三: 12467按照此部分采用路径测试, 测试用例如下: 路径一的测试用例: 输入: 不匹配的用户名和密码 预计结果: 提示”用户名或密码错误, 请重新输入! ”信息; 路径二的测试用例: 输入: 正确的用户名、 密码和登录账户信息系统的权限且该用户拥有该权限 预计结果: 账户信息系统界面弹出 路径三的测试用例: 输入: 正确的用户名、 密码和登录消费信息系统的权限且该用户没有该权限 预计结果: 提示”您没有该权限! ”信息。 6.2黑盒测试根据登录模块, 能够划分出
24、如下等价类。1. 有效等价类(1) 输入的用户名存在(2) 输入与用户名匹配的正确的密码(3) 选择符合用户名的正确权限2. 无效等价类( 5) 用户名不存在( 6) 输入与用户名不匹配的密码( 7) 选择不符合用户名的权限( 8) 输入为空根据上面划分出的等价类, 设计出下述测试方案。(1) 用户名存在, 与用户名匹配的正确的密码, 选择符合用户名的正确权限输入: 用户名zy, 密码123, 选择储蓄系统预计输出: 进入账户信息界面(2) 用户名不存在输入: 用户名zzy, 密码321, 选择储蓄系统预计输出: 用户名或密码错误, 请重新输入! (3) 用户名存在, 密码不匹配输入: 用户名
25、zy, 密码321, 选择储蓄系统预计输出: 用户名或密码错误, 请重新输入! 7 结论首先由衷感谢老师给我们这样一个锻炼自己的机会, 经过两周的设计我的收获还是很大的。不但巩固了以前学过的知识, 还学到了很多以前不知道的东西。理论跟实际的差别还是很大的, 以后要学会用理论联系实际。从而提高动手实践能力和独立思考能力。课程设计过程中遇到了很多问题, 而且有很多的不足之处, 发现自己对以前的知识理解的不够透彻, 掌握的不够牢固, 有待加强。我们的工作是一个团队的工作, 大家一起交流与合作, 发扬团队协作精神, 学会了合作与交流。要想有成功必须要有合作, 这是我学到的一点很重要的。如果这次设计只有
26、我一个人的话, 我想我是不会这么快做出来的, 在同学的帮助下, 和查资料( 包括百度) 写出了这个程序, 心里很有成就感。经过设计, 感觉自己的理解更加深入了, 以前不太明白的, 现在也都理解了, 使我更加对这些东西感兴趣了, 经过此次课程设计也使我学会独立思考, 与人沟通等能力。熟练了对VC6.0的使用, 此次设计由于自己水平的限制, 还存在很多不足之处, 比如说程序的效率比较低! 这次程序设计让我体验到了失败的痛苦和成功后的欣喜, 这将是我人生中一笔重要的财富, 是人生拥有的美好的回忆。 8参考文献1 软件工程导论( 第5版) 张海藩编着清华大学出版社出版2 软件工程原理, 方法与应用 吴
27、钦藩 编着 人民交通出版社出版 3 软件工程导论( 第四版) 张海藩 编着 清华大学出版社出版 4 软件工程 任胜兵 邢琳 编着 北京邮电大学出版社5 王瑞等, Visual C+数据库系统开发完全手册, 人民邮电出版社, 6 于永彦, C+程序设计基础案例教程, 北京大学出版社, 7 数据库系统概述第四版王珊主编高等教育出版社9 附录9.1程序代码#include#include #includeusing namespace std;class consumer;class YH /银行类public:void set_account();/银行开户功能void del_account()
28、; /注销账户功能void transfer(int); /转账功能void enter_account(); /进入用户个人信息功能void addmoney(int,float);/存款功能void exitYH();/ 退出系统void functionshow();void save();void load();/ 功能界面protected: consumer *account20; static int acnum;/账户数;class consumer:public YH/用户类,继承银行类的属性public: friend class YH; consumer(int id,s
29、tring Name,int Number,double IN,string Company,string Address,string PassWord,float m) ID=id;name=Name;number=Number;in=IN;company=Company;address=Address;money=m;passwd=PassWord; consumer()ID=0;name=0;number=0;in=0;company=0;address=0;money=0;passwd=0; int get_id()return ID; void savemoney();/ 取钱 s
30、tring get_passwd()return passwd;/ 取得密码 void display(); void fetchmoney(); /取钱 void change_passwd(); void add_money(float);/计算余额 void dec_money(float);/计算余额 float get_money();/卡卡转帐private: int ID; /开户帐号 string passwd; / 用户密码 string name; / 用户姓名 float money; /开户金额int number;string company;string addre
31、ss;double in;void YH:save()ofstream ofile(bankdat.dat,ios:out);/以输出方式打开文件 ofstream outfile(bankdat.dat,ios:out);/以输出方式打开文件 bankdat.dat接收从内存输出的数据int n=0;outfileacnum ;for(n=0;nacnum;n+)outfileID ;/把信息写入磁盘文件bankdat.datoutfilemoney ;outfilename ;outfilepasswd ;outfilenumber ;outfilecompany ;outfileaddr
32、ess ;outfilein ;outfile.close(); /*读入用户信息功能实现*/void YH:load()ifstream infile(bankdat.dat,ios:in);/以输入方式打开文件if(!infile)cerr读取错误,无资料中!acnum;for(n=0;nid;/从磁盘文件bankdat.dat读入信息infilem;infilenam;infilepassw;infilecompany;infilenumber;infileaddress;infilein;accountn-passwd;consumer * acc = new consumer(id,
33、nam,number,in,company,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; else i+; if(flag) cout帐号不存在!endlendl; return ; float b; coutendlb; while(b=0) cout请输入正确的数字!end
34、l;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.functionshow();/*主界面显示*/void YH:functionshow() int n;dosystem(cls); load();coutendl请输入相应的操作序号进行操作:endl;coutendl;cout
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100