银行信贷风险控制系统设计与实现
摘 要
互联网的普及给人们带来的便利不需多说。因此如果把银行信贷风险控制与互联网结合起来,利用java技术建设银行信贷风险控制系统,实现银行信贷风险控制的网络化。
银行信贷风险控制系统能够通过互联网得到广泛的、全面的宣传,让尽可能多的银行、银行信贷风险控制者了解和熟知银行信贷风险控制系统的产品以及产品特色,银行信贷风险控制系统服务等,不仅为用户提供了服务,而且也推广了自己,让更多的用户了解自己。对于银行而言,若拥有自己的银行信贷风险控制系统,通过银行信贷风险控制系统让银行的宣传、营销提上一个新台阶,同时提升了银行形象。
根据本系统的研究现状和发展趋势,系统从需求分析、结构设计、数据库设计,在到系统实现,分别为前端实现和后端实现。论文内容从系统描述、系统分析、系统设计、系统实现、系统测试来阐述系统的开发过程。本系统力求结合实际找出一种切实可行的开发方案,经过反复研究和学习,借助java编程语言、jsp技术、MySQL数据库和tomcat服务器来完成系统的所有功能,最后进行系统测试,来检测系统的权限和漏洞,从而将系统完善,达到符合标准。
关键字:银行信贷风险控制系统,java编程语言,MySQL数据库
ABSTRACT
The popularization of the Internet brings convenience to people without needing to say more. Therefore, if the bank credit risk control is combined with the Internet, the bank credit risk control system can be used to realize the network of bank credit risk control.
Bank credit risk control system can widely through the Internet and comprehensive propaganda, let as many Banks, the bank credit risk control to understand and be familiar with the bank credit risk control system of the products and product features, bank credit risk control system, etc., not only provides service to our customers, but also to promote yourself, let users know more about myself. For Banks, if have their own bank credit risk control system, through the bank credit risk control system for bank of publicity and marketing on a new step, at the same time enhance the bank image.
According to the current research status and development trend of the system, the system is implemented from demand analysis, structural design and database design to the realization of the system and the back-end implementation respectively. The paper elaborates the development process of the system from system description, system analysis, system design, system implementation and system test. The system tries to combine the actual find out a feasible development plan, after repeated research and study, using the Java programming language, JSP technology and MySQL database and the tomcat server to accomplish all functions of the system, and finally to the system test, to detect system permissions and loopholes, thus the system perfect, to conform to the standard.
Key words:Bank credit risk control system, Java programming language, MySQL database
目 录
第1章 绪论
1.1开发背景
1.2开发意义
1.3研究内容
1.4论文结构
1.5本章小结
第2章 系统开发技术的介绍
2.1 MyEclipse与tomcat简介
2.2HTML/CSS简介
2.3JSP简介
2.4MySQL数据库概念和特点
2.5本章小结
第3章 系统分析
3.1功能需求分析
3.2业务流程分析
3.3数据流程分析
3.4本章小结
第4章 系统设计
4.1系统设计思想
4.2系统总体设计
4.3系统功能模块设计
4.4数据库设计
4.4.1概念模型设计
4.4.2数据库表设计
4.4.3数据库连接计
4.5本章小结
第5章 系统的实现
5.1实现环境说明
5.2前台页面的实现
5.3密码修改模块的实现
5.4登录模块的实现
5.5用户信息模块的实现
5.6银行信息管理模块的实现
5.7贷款管理模块的实现
5.8还款管理模块的实现
5.9风险评估管理模块的实现
5.10分页算法的实现
5.11本章小结
第6章 系统测试
6.1测试目的
6.2界面测试
6.3功能测试
6.4测试结果
6.5本章小结
第7章 总结
致 谢
参考文献
第1章 绪论
1.1开发背景
21世纪,早已进入互联网信息快速发展的时代,互联网的普及给人们带来了许多便利。像大部分的组团社、综合社、酒店等都有自己银行的系统,而银行也由之前传统的模式转移到互联网上来,这时银行建立属于自己的系统就势在必行。那么银行信贷风险控制系统建设的作用和意义有哪些呢?
1.首先提升银行形象:这是每个企事业单位建站的目的之一。系统对于一个银行来说就像是一个无形的广告。在现在这个信息时代,如果一个银行连系统都没有做过,往往给银行留下的印象就是这是一个跟不上时代潮流的银行。
2.加强银行服务:教育行业性质要求您定期提供资料给银行,或者随时接受银行的建议。如果用户需要,可以通过系统进行管理。
3.同时一个好的系统能将银行的宣传、营销手段提上一个新的台阶。系统内容可以随时更新,这点对于现代银行来说是很重要,但画册、产品手册等都无法做到的。银行系统就可以每天更新,随时反映您银行的最新情况。
银行信贷风险控制系统能够通过互联网得到广泛的、全面的宣传,让尽可能多的银行信贷风险控制系统、银行信贷风险控制者了解和熟知银行信贷风险控制系统的产品以及产品特色,银行信贷风险控制系统服务等,不仅为用户提供了服务,而且也推广了自己,让更多的用户了解自己。
1.2开发意义
通过银行信贷风险控制系统的设计与实现,应用相应的管理法规,保障管理系统的完整性;提高了管理环境;保障银行信贷风险控制系统工作正常秩序,确保工作有序进行;提高监督使用者的自觉性,达到宣传教育的作用。使用本系统极大的提高了管理监督的方便性、管理系统的使用者的自觉性、资源的节约性、维护的及时性。本系统实施后,使管理提升到了一个新的台阶,跟上社会发展的水平。
1.3研究内容
随着银行信贷风险控制需求和在线银行信贷风险控制渗透率的提升,中国银行信贷风险控制在线市场将释放巨大潜力,银行信贷风险控制系统的建设和发展成为业界广泛关注的重点,本文将对此进行分析,以期为我国银行信贷风险控制电子商务的发展提供参考。目前对于国内外知名银行,各媒体都已经宣传的比较到位,为了促进地方教育发展,发展地方银行特色银行信贷风险控制,本系统的开发针对这一现状,可以对地方性银行起到不小的宣传效果。
根据已经确定的板块状况,整个系统除后台管理模块(对前台内容进行增、删、改、查等操作)外需要:银行信息、贷款、还款管理等内容。
1.4论文结构
(1)绪论
从开发系统的背景、意义、以及系统的发展状况,详细描述了系统的在哪些方面能得到应用、然后对本章进行总结。
(2)系统分析
概述、用户需求调研、系统业务流程分析、系统数据组成、本章小结。
(3)系统设计
系统网络结构设计、系统总体设计、系统功能模块的划分、系统功能模块的需求,数据库设计概述、数据库概述结构设计、数据库逻辑结构设计。
(4)系统开发环境介绍
Microsoft MyEclipser简介、HTML简介、MySQL简介、JSP简介、数据库概念和特点、本章小结。
系统的实现
登录模块的实现、管理员模块设计、银行信息管理模块的实现、留言模块的实现。
(6)系统测试
系统编码实现后,需要进行测试,测试包括黑盒测试和白盒测试,本系统采用黑盒测试,通过输入不同组的测试数据进行测试的功能模块测试。
1.5本章小结
本章主要对该系统的选题背景、选题意义,分析本人为什么要做这个系统,和这个系统给人们带来什么好处,有什么作用,以及论文的组成部分,还总述了整个系统的组成及实现的功能。
第2章 系统开发技术的介绍
2.1 MyEclipse与tomcat简介
在java的web程序设计中,常使用MyEclipse做编辑工具,在J2EE和数据库开发领域里,十分通用。通过对应用程序服务器进行整合,可以大大的增强运算速度。
Tomcat是一种小型web程序服务器,由于它是免费开源的,并且支持访问量较少,所以常常被用来私人使用,J2EE程序设计中成为最好的选择。
换句话说,将Tomcat服务器安装到一台电脑上时,可通过它对HTML页面的访问请求进行配合。事实上,Tomcat可以看成Apache 服务器基础上的延伸,但它工作时相对比较独立,因此当tomcat工作时,事实上它是看成一个与Apache 服务器相对独立的进程运行的。
2.2HTML/CSS简介
HTML全称为Hyper Text Markup Language,是一种超文本标记语言或超文本链接语言,被用来制作万维网页面的简单标记语言,计算机通过他来完成互联网的信息交流,借助浏览器在万维网中信息传递,是一种十分通用的标准语言。
在目前,它在网络上被广泛应用,是大众普遍接受的一种通用制作网页的语言。HTML主要用于制作静态页面,HTML命令可以说明图形信息、表格信息、文字信息、链接信息等。HTML作为制作系统最基础的语言,它主要由头部(head)和主体(body)组成,头部可以加标题,展示浏览器所需信息,主体则是包含网页显示的内容。作为最基础的语言,在HTML文件中可以插入JSP语言形成JSP文件,也可以插入JavaScript语言形成不同风格的功能特效。
2.3JSP简介
JSP是一种开放动态系统的编程语言,它能嵌入在html中使用,也能单独使用,同时具有多种有优点,可以说,JSP已经成为Web脚本技术的先驱。它融合了现代编程语言(如C,Java和Perl)的一些最佳特性。Linux、JSP、Tomcat和MySQL的组合已经成为Web服务器的一种配置标准。JSP可以用来:收集表单数据、生成动态网页、字符串处理、动态输出图片、处理服务器端文件系统、编写数据库支持的网页、会话跟踪控制、处理XML文件、支持利用大量的网络协议、服务器端的其他相关操作。目前能够用在所有的主流操作系统上,包括Linux、UNIX的各种变种、Microsoft Windows等。今天,JSP已经支持了大多数的Web服务器,包括Tomcat、IIS、PWS、Netscape等。JSP提供了一个模块;还有一些JSP支持CGI标准,使得JSP能够作为CGI处理器来工作。
2.4MySQL数据库概念和特点
现代计算机中存储的数据呈现暴涨的趋势,工程师便设计了数据库及其管理工具来帮助程序员解决这一问题,使用数据库后,计算机的存储数据更加有秩序,数据的冗余度大大降低,数据的独立性大大提高,程序员操作数据更加方便。MySQL采用图形界面,使用方法一目了然。
(1)MySQL是一款关系数据库管理系统。
(2)MySQL与Windows系统完美结合
(3)MySQL对计算机的硬件条件要求不高
(4)MySQL具有良好的可伸缩性
(2)MySQL具有良好的灵活性,它可以适应快速变化的环境[5]。
2.5本章小结
本章主要论述了开发本系统用到的技术和工具,分别对web前端设计工具myeclipse,前端开发语言html+css+javascript,jsp后端语言和MySQL数据库进行详细介绍。
第3章 系统分析
3.1功能需求分析
根据调查得知用户的需求,从而对系统的功能进行分析,系统应该包括了系统用户管理、银行信息管理、贷款管理、还款管理等功能模块,其中以模块最为重要。
表3-1 功能需求列表
编号 | 功能名称 | 功能描述 | 输入内容 | 输出内容 |
1. | 用户注册 | 对普通用户进行检测,信息通过检测之后成为本系统的用户 | 用户名,密码、性别、QQ、邮箱等 | 注册的结果(提醒“用户注册成功”或者“用户注册失败”) |
2. | 用户登录 | 保证用户通过身份验证进入系统进行操作 | 用户名、密码 | 用户登录是否成功和用户登录状态 |
3. | 修改个人信息 | 用户可以根据自己当前的情况修改个人的信息 | 要修改的信息 | 提示修改的结果 |
4. | 添加银行信息 | 用户添加银行信息 | 银行信息的相关信息 | 银行信息列表 |
5. | 编辑银行信息 | 用户修改银行信息 | 银行信息相关信息 | 是否编辑成功 |
6. | 删除银行信息 | 用户删除银行信息 | 银行信息 | 银行信息删除成功或失败 |
7. | 银行信息审核 | 管理员给用户添加的银行信息审核 | 银行信息审核 | 银行信息审核是否通过 |
8. | 添加贷款 | 管理员添加贷款 | 维修的相关信息 | 贷款列表 |
9. | 编辑贷款 | 管理员修改贷款 | 编辑贷款 | 是否编辑成功 |
10. | 删除贷款 | 管理员删除贷款 | 贷款 | 贷款删除成功或失败 |
11. | 添加还款 | 管理员添加还款 | 还款 | 还款列表 |
12. | 编辑还款 | 管理员修改还款 | 还款 | 是否编辑成功 |
13. | 删除还款 | 管理员删除还款 | 还款 | 还款删除成功或失败 |
14. | 添加 用户信息 | 管理员添加 用户信息 | 用户信息 | 用户信息列表 |
15. | 编辑 用户信息 | 管理员修改 用户信息 | 用户信息 | 是否编辑成功 |
16. | 删除 用户信息 | 管理员删除 用户信息 | 用户信息 | 用户信息删除成功或失败 |
本系统的需求用例图如下图所示。
图3-1系统用例图
普通用户的用例有用户信息,银行信息,还款,个人信息等;管理员的用例有信息增加管理,删除管理,修改管理,查询管理等。
3.2业务流程分析
业务流程图基本符号如下图所示:
图3-1业务流程图基本符号
具体如下图所示:
图3-2总体业务流程图
总体业务流程:以用户的身份在登录页面输入账号和密码,经过数据库身份验证,验证成功后登录系统主页,可以使用系统,管理系统等功能操作,以管理员的身份在登录页面输入账号和密码,经过数据库身份验证,验证成功后登录系统主页,可以使用系统,管理系统等功能操作。
3.3数据流程分析
本系统根据上节所设计的各个业务流程图,采用逐层细化的方法,画的每一部分各层的数据流图如下:
1.0层数据流图
普通用户和管理员都可以通过登录系统的界面来进入系统,如下图所示:
图3-8 0层数据流图
系统根据登录的数据,判断是该用户是哪种角色,仍然后跳转至相应的功能页面,系统用户在系统内进行数据操作,此时数据流的有效数据流流向数据库中心执行相应的数据Oracle语句,反馈结果到显示页面上。
2.1层数据流图
1层为系统的详细数据流图。如下图所示:
图3-9 1层数据流图
1层数据流图中,数据实体包括普通用户和管理员,普通用户数据流程包括功能选择、个人资料管理等;管理员用户数据流程包括银行信息管理、贷款管理、还款管理;普通用户数据流包括操作信息、添加信息、浏览信息;管理员数据流包括添加信息、删除信息、修改信息、查询信息、浏览信息、提示信息等,数据表包括。
3.2层数据流图
2层为管理员操作后台数据流图,管理员可以分别通过添加、修改和删除来对系统进行管理,如下图所示:
图3-10 2层数据流图
2层数据流图中,数据流实体主要是管理员,数据流程包括;数据流包括添加信息、删除信息、修改信息、查询信息、浏览信息、提示信息;数据表包括。
3.4本章小结
本章主要论述了对用户的需求调研,系统业务功能,用例分析,系统业务流程分析、数据流程分析,其中数据的组成包括前端和后端的详细数据。
第4章 系统设计
4.1系统设计思想
本课题的目的是设计一款基于jsp的银行信贷风险控制系统以实现¥。本系统采用B/S模式不仅可以避免用户必须安装专业软件才能开发系统或者访问系统的局限性,而且更加便利。该系统在不改变和影响用户操作习惯的前提下主要完成对有用信息的记录。
整个软件采用MVC(Model,View,Controller)框架,分别对以下三块进行详细介绍:
(1)Model(模型):
Model模块主要负责应用的核心加密解密功能,以及对数据库和文件的读写功能。该模块在接收 Controller传来的控制信息和信息数据的同时就要做出相应反应,及时把数据和文件记录在案,以及完成加密解密等操作。
(2)View(视图):
该模块是应用的界面版块,完成系统与用户的交互功能,将用户定制的加密保护策略更新至相应的数据库中,以更新控制模块的监控项。
(3)Controller(控制器):
该模块通常依据View模块传来的加密保护策略来及时更新监控列表,监控并记录接收监控列表内应用的数据,为了能按时完成加密解密操作,并在第一时间更新数据库或者文件,我们要把相关的重要信息传至Model版块。
4.2系统总体设计
根据前面的各项设计分析,按照系统开发的基本理念对系统进行分解,从模块上主要可分为用户模块和管理员模块。
用户模块只要是让普通用户使用,管理员模块只要是让管理员使用,可以对数据进行添加、删除、修改及查询等操作。
系统总体功能结构图如下图所示。
图4-2系统功能结构图
4.3系统功能模块设计
1.系统登录:系统登录是用户访问系统的路口,设计了系统登录界面,包括用户名、密码和验证码,然后对登录进来的用户判断身份信息,判断是管理员用户还是普通用户。
2.系统用户管理:不管是超级管理员还是普通管理员都需要管理系统用户,包括普通管理员的添加、删除、修改、查询,修改管理员的登录密码,新添加的管理员用户可以登录系统。
3.普通用户管理:管理员可以管理系统的其他普通用户的账号,包括录入新用户,删除现有的普通用户,修改现有的普通用户的信息,并可以通过用户名和姓名等关键字搜索普通用户,打印用户列表页面,导出用户列表至excel中。
4.修改密码:系统所有用户(管理员和普通用户)应该都要能修改自己的登录密码,修改后需要重新登录。
5.个人资料管理:由普通用户使用,普通用户登录系统后,可以修改个人原始信息,如修改电话号码、邮箱等,用户的用户名是无法修改的。
1.登录情况管理:系统每个用户应该都能查看个人的历史登录情况,如登录IP、登录时间、登录地址等,防止用户账号被盗,加强用户账号安全。
2.操作日志管理:系统每个用户应该都能查看个人的历史操作日志,如用户添加了某条数据,历史操作日志需要展示操作人,操作描述,操作时间等信息。防止系统被黑客攻击,加强系统的安全性。
3.用户信息管理:管理员发布用户信息后,普通用户便可以查询到该用户信息,用户选择某个用户信息,查询用户信息,管理员审核添加,或删除用户信息。
4.银行信息管理:管理员发布银行信息后,普通用户便可以查询到该银行信息,用户选择某个银行信息,查询银行信息,管理员审核添加,或删除银行信息。
5.贷款管理:管理员发布贷款后,普通用户便可以查询到该贷款,用户选择某个贷款,查询贷款,管理员审核添加,或删除贷款。
6.还款管理:管理员发布还款后,普通用户便可以查询到该还款,用户选择某个还款,查询还款,管理员审核添加,或删除还款。
7.风险评估管理:管理员发布风险评估后,普通用户便可以查询到该风险评估,用户选择某个风险评估,查询风险评估,管理员审核添加,或删除风险评估。
4.4数据库设计
4.4.1概念模型设计
建立数据库之前,要对系统的数据进行概念模型设计,设计实体包含哪些属性,实体和实体直接的关系是怎么样的,根据概念设计,得到下图的系统总体ER图。
图4-2系统总体ER图
4.4.2数据库表设计
在服务器上建立名为jspmyhxdfxkzxtmjma9的数据库,其中包括以下表:
allusers表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | ID | Int | 4 | 自增编号 | 10 | |
2 | username | VarChar | 50 | 是 | 255 | |
3 | pwd | VarChar | 50 | 是 | 255 | |
4 | cx | VarChar | 50 | 是 | 255 | |
5 | addtime | DateTime | 8 | 是 | 23 |
daikuanfafang表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | ID | Int | 4 | 自增编号 | 10 | |
2 | daikuandanhao | VarChar | 50 | 是 | 255 | |
3 | yonghuming | VarChar | 50 | 是 | 255 | |
4 | xingming | VarChar | 50 | 是 | 255 | |
5 | shenfenzheng | VarChar | 50 | 是 | 255 | |
6 | shoujihao | VarChar | 50 | 是 | 255 | |
7 | kaihuxing | VarChar | 50 | 是 | 255 | |
8 | yinhangzhanghao | VarChar | 50 | 是 | 255 | |
9 | daikuanjine | VarChar | 50 | 是 | 255 | |
10 | daikuannianxian | VarChar | 50 | 是 | 255 | |
11 | daikuanlilv | VarChar | 50 | 是 | 255 | |
12 | yinghuanjine | VarChar | 50 | 是 | 255 | |
13 | yihuanjine | Float | 8 | 是 | 15 | |
14 | fafangyinhang | VarChar | 50 | 是 | 255 | |
15 | yinhangmingcheng | VarChar | 50 | 是 | 255 | |
16 | beizhu | VarChar | 500 | 是 | 255 | |
17 | addtime | DateTime | 8 | 是 | 23 |
daikuanjilu表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | ID | Int | 4 | 自增编号 | 10 | |
2 | zhanghao | VarChar | 50 | 是 | 255 | |
3 | yinhangmingcheng | VarChar | 50 | 是 | 255 | |
4 | didian | VarChar | 50 | 是 | 255 | |
5 | fuzeren | VarChar | 50 | 是 | 255 | |
6 | lianxidianhua | VarChar | 50 | 是 | 255 | |
7 | yonghuming | VarChar | 50 | 是 | 255 | |
8 | xingming | VarChar | 50 | 是 | 255 | |
9 | shenfenzheng | VarChar | 50 | 是 | 255 | |
10 | shoujihao | VarChar | 50 | 是 | 255 | |
11 | kaihuxing | VarChar | 50 | 是 | 255 | |
12 | yinhangzhanghao | VarChar | 50 | 是 | 255 | |
13 | daikuanjine | VarChar | 50 | 是 | 255 | |
14 | daikuannianxian | VarChar | 50 | 是 | 255 | |
15 | daikuanhetong | VarChar | 50 | 是 | 255 | |
16 | shenqingyuanyin | VarChar | 500 | 是 | 255 | |
17 | issh | VarChar | 2 | 是 | 255 | |
18 | addtime | DateTime | 8 | 是 | 23 |
fengxianxishu表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | ID | Int | 4 | 自增编号 | 10 | |
2 | gerenziliaoheshi | VarChar | 500 | 是 | 255 | |
3 | yonghuxinxiheshi | VarChar | 500 | 是 | 255 | |
4 | xinyongheshi | VarChar | 500 | 是 | 255 | |
5 | heshishijian | VarChar | 50 | 是 | 255 | |
6 | shenqingyonghu | VarChar | 50 | 是 | 255 | |
7 | heshiren | VarChar | 50 | 是 | 255 | |
8 | issh | VarChar | 2 | 是 | 255 | |
9 | addtime | DateTime | 8 | 是 | 23 |
huankuanjilu表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | ID | Int | 4 | 自增编号 | 10 | |
2 | daikuandanhao | VarChar | 50 | 是 | 255 | |
3 | daikuanjine | VarChar | 50 | 是 | 255 | |
4 | daikuannianxian | VarChar | 50 | 是 | 255 | |
5 | daikuanlilv | VarChar | 50 | 是 | 255 | |
6 | yinghuanjine | VarChar | 50 | 是 | 255 | |
7 | fafangyinhang | VarChar | 50 | 是 | 255 | |
8 | yinhangmingcheng | VarChar | 50 | 是 | 255 | |
9 | huankuanren | VarChar | 50 | 是 | 255 | |
10 | xingming | VarChar | 50 | 是 | 255 | |
11 | shenfenzheng | VarChar | 50 | 是 | 255 | |
12 | shoujihao | VarChar | 50 | 是 | 255 | |
13 | kaihuxing | VarChar | 50 | 是 | 255 | |
14 | yinhangzhanghao | VarChar | 50 | 是 | 255 | |
15 | huankuanjine | VarChar | 50 | 是 | 255 | |
16 | beizhu | VarChar | 500 | 是 | 255 | |
17 | issh | VarChar | 2 | 是 | 255 | |
18 | iszf | VarChar | 2 | 是 | 255 | |
19 | addtime | DateTime | 8 | 是 | 23 |
pinkundangan表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | ID | Int | 4 | 自增编号 | 10 | |
2 | xuehao | VarChar | 50 | 是 | 255 | |
3 | xingming | VarChar | 50 | 是 | 255 | |
4 | xuexiaomingcheng | VarChar | 300 | 是 | 255 | |
5 | yuanximingcheng | VarChar | 50 | 是 | 255 | |
6 | zhuanyemingcheng | VarChar | 300 | 是 | 255 | |
7 | suozainianji | VarChar | 50 | 是 | 255 | |
8 | banjimingcheng | VarChar | 50 | 是 | 255 | |
9 | xuezhi | VarChar | 50 | 是 | 255 | |
10 | shenfenzheng | VarChar | 300 | 是 | 255 | |
11 | kaoshenghao | VarChar | 50 | 是 | 255 | |
12 | shengyuandi | VarChar | 50 | 是 | 255 | |
13 | pinkundengji | VarChar | 50 | 是 | 255 | |
14 | kunnanyuanyin | VarChar | 50 | 是 | 255 | |
15 | diaochajianjie | VarChar | 500 | 是 | 255 | |
16 | addtime | DateTime | 8 | 是 | 23 |
weiyuejilu表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | ID | Int | 4 | 自增编号 | 10 | |
2 | daikuandanhao | VarChar | 50 | 是 | 255 | |
3 | xuehao | VarChar | 50 | 是 | 255 | |
4 | xingming | VarChar | 50 | 是 | 255 | |
5 | xuexiaomingcheng | VarChar | 50 | 是 | 255 | |
6 | shenfenzheng | VarChar | 50 | 是 | 255 | |
7 | daikuanjine | VarChar | 50 | 是 | 255 | |
8 | daikuannianxian | VarChar | 50 | 是 | 255 | |
9 | fafangyinhang | VarChar | 50 | 是 | 255 | |
10 | yinhangmingcheng | VarChar | 50 | 是 | 255 | |
11 | daikuanlilv | VarChar | 50 | 是 | 255 | |
12 | yinghuanjine | VarChar | 50 | 是 | 255 | |
13 | yihuanjine | VarChar | 50 | 是 | 255 | |
14 | jiqianbenjin | VarChar | 50 | 是 | 255 | |
15 | lixie | VarChar | 50 | 是 | 255 | |
16 | yuqishijian | VarChar | 50 | 是 | 255 | |
17 | buliangxinyongdengji | VarChar | 50 | 是 | 255 | |
18 | beizhu | VarChar | 500 | 是 | 255 | |
19 | addtime | DateTime | 8 | 是 | 23 |
xueshengxinxi表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | ID | Int | 4 | 自增编号 | 10 | |
2 | yonghuming | VarChar | 50 | 是 | 255 | |
3 | mima | VarChar | 50 | 是 | 255 | |
4 | xingming | VarChar | 50 | 是 | 255 | |
5 | xingbie | VarChar | 50 | 是 | 255 | |
6 | shenfenzheng | VarChar | 300 | 是 | 255 | |
7 | gongzuodanwei | VarChar | 300 | 是 | 255 | |
8 | zhiwei | VarChar | 50 | 是 | 255 | |
9 | nianshouru | VarChar | 50 | 是 | 255 | |
10 | minzu | VarChar | 50 | 是 | 255 | |
11 | xueli | VarChar | 50 | 是 | 255 | |
12 | hukouxingzhi | VarChar | 50 | 是 | 255 | |
13 | shoujihao | VarChar | 50 | 是 | 255 | |
14 | zhaopian | VarChar | 50 | 是 | 255 | |
15 | beizhu | VarChar | 500 | 是 | 255 | |
16 | addtime | DateTime | 8 | 是 | 23 |
yinhangxinxi表:
序号 | 字段名称 | 字段类型 | 大小 | 允许为空 | 最大长度 | 备注 |
1 | ID | Int | 4 | 自增编号 | 10 | |
2 | zhanghao | VarChar | 50 | 是 | 255 | |
3 | mima | VarChar | 50 | 是 | 255 | |
4 | yinhangmingcheng | VarChar | 50 | 是 | 255 | |
5 | didian | VarChar | 300 | 是 | 255 | |
6 | fuzeren | VarChar | 50 | 是 | 255 | |
7 | lianxidianhua | VarChar | 50 | 是 | 255 | |
8 | beizhu | VarChar | 500 | 是 | 255 | |
9 | addtime | DateTime | 8 | 是 | 23 |
4.4.3数据库连接计
由于系统采用java语言和MySQL数据库,那么java如何连接MySQL数据库,完成本系统的数据操作。
1. 需要MS MySQL的连接驱动jar包——Oraclejdbc4.jar,将jar包加入到工程中,并设置好Build Path 。
2. 编写专门的数据库操作类,实现数据库的连接和操作:
public Connection getConn()
{
try
{
if(conn==null||conn.isClosed()){
// Class.forName("com.Oracle.jdbc.Driver");
// conn = DriverManager.getConnection("jdbc:Oracle://localhost:3306/javatemp","root","");
Class.forName("com.microsoft.MySQL.jdbc.MySQLDriver");
conn = DriverManager.getConnection("jdbc:MySQL://localhost:1433;databaseName=jspmyhxdfxkzxtmjma9","sa","sa123456");
}}
catch(Exception e)
{
e.printStackTrace();
}
return conn;
}
4.5本章小结
本章主要论述了开发本系统时对系统进行的总体设计,包括网络设计采用B/S结构,然后对系统的普通用户模块和管理员模块分别进行功能的设计,最后对系统的各个模块进行划分,详细介绍如何设计。
第5章 系统的实现
5.1实现环境说明
运行环境包括硬件要求及软件要求如下表所示。
表5-1硬件要求
设备名称 | 说明 |
处理器 | 奔腾III以上,2GB |
内 存 | 2GB,内存越大,速度越快 |
硬 盘 | 500GB以上 |
鼠 标 | 双飞燕2D鼠标 |
表5-2软件要求
名 称 | 说明 |
操作系统 | Windows XP或 Windows7以上 |
应用软件 | myeclipse |
5.2前台页面的实现
本系统设计的是一个银行信贷风险控制系统。该系统总共分为系统首页、关于我们、新闻动态、银行信贷风险控制路线、在线咨询、联系我们等多个模块。通过对此系统的开发,达到了用户对银行信贷风险控制的了解。实现系统的实用性和易管理性。主页面如下图所示。
图5-3系统主界面
其中载入页面的主要代码如下:
<%@ Page Language="java" AutoEventWireup="true" CodeFile="Default.jsp" Inherits="_Default" %>
<%@ Register src="qttop.jsp" tagname="qttop" tagprefix="uc1" %>
<%@ Registerjsp" tagname="qtleft" tagprefix="uc2" %>
<%@ Register src="qtdown.jsp" tagname="qtdown" tagprefix="uc3" %>
数据准备,系统基本信息显示,主要代码如下:
<TR
align=middle bgColor=#ffffff>
系统基本信息</strong></td>
</TR>
<TR align=middle
bgColor=#ffffff>
当前用户:</TD>
<TD width="37%" align="left" valign="bottom" ><font class="t4"><%=request.getSession().getAttribute("username")%></font></TD>
您的权限:</TD>
<TD width="40%" align="left" valign="bottom" ><font class="t4"><%=request.getSession().getAttribute("cx")%></font></TD>
</TR>
<TR align=middle
bgColor=#ffffff>
当前日期:</TD>
<TD align="left" valign="bottom" ><%jsp.util.Date date = new jsp.util.Date();
jsp.text.SimpleDateFormat format = new jsp.text.SimpleDateFormat("yyyy-MM-dd", jsp.util.Locale.CHINA);
5.3密码修改模块的实现
密码修改是对当前登录用户的密码进行修改,在用户登录后左上方也能进行密码修改。
密码修改流程图如下所示。
图5-8密码修改流程图
密码修改界面如图所示。
图5-9修改密码
密码修改关键代码为:
protected void Button1_Click(object sender, EventArgs e)
{
if (TextBox1.Text.ToString().Trim() == "" || TextBox2.Text.ToString().Trim() == "" || TextBox3.Text.ToString().Trim() == "")
{
请填写完整');history.back();</script>");
}
else
{
if (TextBox2.Text.ToString().Trim() != TextBox3.Text.ToString().Trim())
{
两次密码不一至,请确认');history.back();</script>");
}
else
{
string sql;
sql = "select * from allusers where username='" + Session["username"].ToString().Trim() + "' and pwd='" + TextBox1.Text.ToString().Trim() + "'";
DataSet result = new DataSet();
result = new Class1().hsggetdata(sql);
5.4登录模块的实现
用户登录与用户管理模块相关联,超级管理员可以对用户(管理员)进行添加、删除、修改等操作。登录模块界面如下图所示。
图5-5登录流程图
图5-4管理员登录界面
随着系统规模的壮大,系统发布更新的信息及对普通用户量会越来越多,只有超级管理员负责系统后台恐怕任务艰巨,本系统考虑到这一问题后开发了超级管理员有权限可以增加管理员的模块。管理员角色不同对应权限亦不相同。添加管理员操作界面如下图所示。
图5-5 管理员管理界面
5.5用户信息模块的实现
管理员添加用户信息是在点击添加按钮的前提下操作的,当页面跳转至yonghuxinxi_add.jsp,添加成功后,管理员在yonghuxinxii_list.jsp进行用户信息管理,yonghuxinxi_ list.jsp通过查询数据库的用户信息表列出所有用户信息,每条用户信息对应一个删除按钮和修改按钮,当管理员点击删除按钮,直接在数据库删除用户信息,并重定向当前页面,当管理员选择点击修改,则进入yonghuxinxi_update.jsp页面,进行用户信息的修改。
用户信息流程图如下图所示。
图5-6 用户信息流程图
用户信息界面如下图所示。
图5-7 用户信息界面
用户信息管理界面如下图所示。
图5-8用户信息管理界面
5.6银行信息管理模块的实现
管理员添加银行信息是在点击添加按钮的前提下操作的,当页面跳转至yinhangxinxi_add.jsp,添加成功后,管理员在yinhangxinxii_list.jsp进行银行信息管理,yinhangxinxi_ list.jsp通过查询数据库的银行信息表列出所有银行信息,每条银行信息对应一个删除按钮和修改按钮,当管理员点击删除按钮,直接在数据库删除银行信息,并重定向当前页面,当管理员选择点击修改,则进入yinhangxinxi_update.jsp页面,进行银行信息的修改。
银行信息管理流程图如下图所示。
图5-9 银行信息管理流程图
银行信息添加页面设计效果如下图所示。
图5-10 银行信息添加界面
银行信息管理页面效果如下图所示。
图5-11 银行信息管理界面
5.7贷款管理模块的实现
管理员添加贷款是在点击添加按钮的前提下操作的,当页面跳转至daikaun_add.jsp,添加成功后,管理员在daikaun_list.jsp进行贷款管理,daikaun_ list.jsp通过查询数据库的贷款表列出所有贷款信息,每条贷款对应一个删除按钮和修改按钮,当管理员点击删除按钮,直接在数据库删除贷款信息,并重定向当前页面,当管理员选择点击修改,则进入daikaun_update.jsp页面,进行贷款信息的修改。
贷款管理流程图如下图所示。
图5-12 贷款管理流程图
贷款管理页面效果如下图所示。
图5-14 贷款管理界面
贷款管理页面效果如下图所示。
图5-14 贷款管理界面
5.8还款管理模块的实现
管理员添加还款是在点击添加按钮的前提下操作的,当页面跳转至huankuan_add.jsp,添加成功后,管理员在huankuan_list.jsp进行还款管理,huankuan_ list.jsp通过查询数据库的还款表列出所有还款信息,每条还款对应一个删除按钮和修改按钮,当管理员点击删除按钮,直接在数据库删除还款信息,并重定向当前页面,当管理员选择点击修改,则进入huankuan_update.jsp页面,进行还款信息的修改。
还款管理流程图如下图所示。
图5-15还款管理流程图
还款管理页面设计效果如下图所示。
图5-16 还款管理界面
还款管理页面效果如下图所示。
图5-17 还款管理界面
5.9 风险评估管理模块的实现
管理员添加风险评估是在点击添加按钮的前提下操作的,当页面跳转至hetongzhixing_add.jsp,添加成功后,管理员在hetongzhixing_list.jsp进行风险评估管理,hetongzhixing_ list.jsp通过查询数据库的风险评估表列出所有风险评估信息,每条风险评估对应一个删除按钮和修改按钮,当管理员点击删除按钮,直接在数据库删除风险评估信息,并重定向当前页面,当管理员选择点击修改,则进入hetongzhixing_update.jsp页面,进行风险评估信息的修改。
风险评估管理流程图如下图所示。
图5-15风险评估管理流程图
风险评估添加页面设计效果如下图所示。
图5-16 风险评估添加界面
风险评估管理页面效果如下图所示。
图5-17 风险评估管理界面
5.10分页算法的实现
当数据过多,1个页面不能完全显示时,就需要通过实现数据分页,可以将海量数据显示在页面,用户只需要点击上一页、下一页、首页、尾页,即可将数据库的数据通过条件查询语句查询显示出来。
数据分页页面设计效果如下图所示。
图5-18数据分页界面
首先要定义四个变量:
int pageSize:每页显示多少条记录
int pageNow:希望显示第几页
int pageCount:一共有多少页
int rowCount:一共有多少条记录
说明:
pageSize是指定的 pageNow是用户选择的
rowCount是计算出来的 该计算式为
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/pageSize+1;
}
select top pageSize字段名列表from表名where id not in
(select top pageSize*(pageNow-1)id from 表名)
以我们前面的users表为例,显示第二页,该查询语句就是:
select top 3 * from users where userId not in(select top 3 userId from users)
(select top 3 userId from users):选出这个表的前三条 前面再选三条
private void bindZC(int pageIndex,int pageSize) {
string strOracle = @"select EMS_NO,TRADE_NAME,datediff(day,end_Date,getdate()) DAYS from dbo.EMS_PTS_HEAD where DECLARE_CODE='" + CurrentUser.Extends["AGENT_CODE"].ToString() + "' and datediff(day,end_Date,getdate()) between 0 and 7";
PageSpliter pageSpliter = new PageSpliter(strOracle, ""/*在此配置排序子句*/, "OracleCOM");
pageSpliter.PageSize = pageSize;
strOracle = pageSpliter.GetPageOracle(pageIndex);
strOracle +=" order by days ";
DataTable dt = DBUtil.FillAt("OracleCOM", strOracle);
repZC.DataSource = dt;
repZC.DataBind();
}
public void lbPage_Command(object sender, CommandEventArgs e)
{
Pager pager =ViewState["pager"] as Pager ;
string para = e.CommandArgument.ToString();
首页
if (para == "F") {
pager.pageIndex = 0;
}
前一页
if (para == "P")
{
pager.pageIndex = pager.pageIndex-1;
}
下一页
if (para == "N")
{
pager.pageIndex = pager.pageIndex+1;
}
尾页
if (para == "L")
{
pager.pageIndex = pager.totalPages;
}
5.11本章小结
本章节主要论述了登录模块用户的登陆、用户的注册、贷款管理、还款管理、银行信息管理等功能模块的设计与代码的编写,以及最终实现的步骤。
第6章 系统测试
6.1测试目的
软件测试能够识别项目风险,为开发人员和程序经理提供软件测试的反馈结果,为风险评估提供必要的信息。再者,软件测试确保在上线日前达到上线标准。包括持续追踪项目进度和严格把控各个开发阶段的产品质量。
本系统主要测试客户端的使用和后台服务器的使用。客户端主要是测试用户注册、用户登录、用户完善信息、页面是否进行跳转、¥等功能是否实现。后端主要是测试¥的功能是否实现。
6.2界面测试
使用黑盒测试方法测试本系统的界面,测试界面是否正常、可用。
用户界面测试检查表如下表。
表6-1用户界面测试表
检查项 | 测试人 | 测试结果 |
窗口切换、移动、改变大小时正常吗? | 本人 | 正常 |
各种界面元素的文字正确吗?(如标题、提示等) | 本人 | 正常 |
各种界面元素的状态正确吗?(如有效、无效、选中等状态) | 本人 | 正常 |
各种界面元素支持键盘操作吗? | 本人 | 正常 |
数据项能正确回显吗? | 本人 | 正常 |
执行有风险的操作时,有“确认”、“放弃”等提示吗? | 本人 | 正常 |
有联机帮助吗? | 本人 | 正常 |
各种界面元素的布局合理吗?美观吗? | 本人 | 正常 |
6.3功能测试
1.用户登录测试
当用户以“admin”身份登录,密码为空或不是“admin”时,提示框会提示“密码不能为空,请输入密码!或密码错误,请输入正确地密码!”
图6-2用户登录测试界面
当用户以“admin”身份登录,密码为 “admin”时,提示框会提示“已成功登陆!欢迎你使用本系统!”
图6-3用户登录测试界面
2.贷款管理测试
对系统进行功能测试,利用黑盒法的等效性法和边界值法相结合的测试方法,测试系统功能,例如对某些关键数据输入有错误的数据;处理业务使某个数据超过常规,如用户年龄输入负值或域值上溢等,测试表如下。
表6-4贷款管理测试
功能A描述 | 以管理员身份登录,添加、修改、查询贷款 | ||
用例目的 | 是否能够正确修改信息 | ||
前提条件 | 用户安全登录系统界面 | ||
输入/动作 | 输入 | 实际情况 | |
示例:典型值… | 年龄 53 | 53 | |
示例:边界值… | 年龄 —10 | 输入数据有误 | |
示例:异常值… | 年龄 a | 输入数据有误 |
如果输入的测试数据无误,则添加用户成功,如下图所示。
图6-5录入贷款成功界面图
在MySQL数据库中贷款表中编号设定的为5位,当输入12524时,用户姓名为“张三”时,点击添加按钮后提示框会提示“添加成功!”
3.部分功能测试
依据黑盒测试的方法和步骤,对系统做了相关测试,部分测试实例如下表所示。
表6-1 部分测试用例表
模块 | 用例描述 | 预期结果 | 备注 |
用户注册 | 用户名文本框中不输入任何数据 | 提示“请填写完整的信息” | 测试用户名是否为空 |
在密码文本框中输入“123”三个字符 | 提示“密码长度最少为6位” | 测试密码位数是否正确 | |
在密码文本框和确认密码文本框中分别输“123456”和“258769” | 提示“两次输入的密码不匹配” | 测试用户两次输入的密码是否匹配 | |
密码修改 | 在用户管理中修改密码,原始密码若输入不正确 | 提示“原始密码错误” | 测试原始密码是否正确 |
银行信息 | 银行信息内容为空 | 系统提示银行信息内容为空,银行信息失败 | 测试银行信息是否为空 |
输入银行信息内容 | 系统提示银行信息成功,银行信息板显示新银行信息 | 测试银行信息是否成功 | |
贷款 | 用户未登录时,点击贷款按钮 | 系统提示请先登录 | 测试是否能不用登录用户发表贷款 |
用户登录后,贷款内容为空 | 系统提示贷款内容不能为空 | 测试贷款内容是否能为空 | |
用户信息 | 用户未登录时,点击用户信息按钮 | 系统提示请先登录 | 测试是否能不用登录用户添加用户信息 |
用户登录后,点击用户信息按钮 | 系统提示用户信息成功 | 测试用户信息功能是否可用 |
6.4测试结果
银行信贷风险控制系统经测试和调试后能够按照需求正常运行,基本没有错误,能够满足开发者和用户的需求。在系统整体测试过程中,系统功能相对来说比较简单,数据源的配置,需进一步改善。
6.5本章小结
本章主要论述了系统开发结束后,要对系统进行各方面的测试,开头介绍了系统的运行环境,需要哪些工具,由于本系统属于毕业设计,是小型的系统,所以本人只对系统进行黑盒测试,采用一些单独的测试数据对系统进行输入输出的结果判断,最后对测试结果进行总结。
第7章 总结
在老师的悉心指导下,在自己不断拼搏下经过一百多天的努力我的毕业设计终于接近了尾声,这段日子里有过心酸有过坎坷,感觉自己收获了许多的知识。此次毕业设计的要求是要创建一个银行信贷风险控制系统,使用的开发软件是jsp技术以及MySQL数据库。为了更好的开发和设计银行信贷风险控制系统,本人尽可能多的去了解并掌握有关java语言和数据库的专业知识,通过查找资料和教学视频来自主学习。对书中的一些经典案例,不断的揣摩他的编程技巧,尽可能的弄明白每行代码的意思,老师也不厌其烦为我解答困惑。积累了大量基本知识之后,开始构思毕业设计。根据老师及任务书的要求,将整个系统分为若干个模块进行设计以满足程序所需要的功能。由于实战经验的不足,在设计过程的当中走了许多弯路,及时停止毕业设计的开发,通过不断的充电和学习来调整自己的心态,老师也为我传授了许多心得与经验,让我学会了一些巧妙的方法来改进程序。
完成之后,立马对程序进行了调试,由于前期充分的准备和积累大量的经验,调试过程当中相对比较顺利。虽然开发的过程当中无比艰辛但我也从里面学到了十分昂贵的经验,这是一生用之不竭的财富。
这些日子以来,让我明白了一个道理:不要害怕困难,不要恐惧,坚持才是胜利。这次的毕业设计不仅是让我对这些年所学知识有了更好的综合性整理,同样也让我学会了遇事不慌、沉着冷静的解决问题的方式,明白了团队协作的不可或缺,打开了视野,增长了知识,为我以后进一步走向社会打下了最坚实的基础。
致 谢
大学的学习生活总是感觉短暂的,总感到知识还没有学够,但大学毕业就在我们面前,即毕业设计即将的结束,意味着我们的大学生涯即将结束。毕业设计是我们在大学所学知识的一次总结,更是对我们过去所学知识的提炼和升华,通过毕业设计,我们认识到大学学习过程中还有那些知识没有掌握,那些知识需要我们进入深入研究。这次毕业设计让我学到了很多新的知识,研究了一些新的以前自己不熟悉的领域,使我处理问题的能力得到了一定的提升,同时也为今后的继续深造或踏入社会大门提供了很好的锻炼机会。
我也曾经沮丧过,失落过,想放弃过,可是因为你们这不厌其烦的鼓励和支持才使得我坚持了下来,这里我要对我的老师和同学们说句“谢谢你们”。因为我们的知识是有限的,所以本文将不可避免的会出现一些错误和不足之处,还请老师指正。
参考文献
[1]刘晓华,周慧贞.JSP应用开发详解[M].北京:电子工业出版社,2013:35-126
[2]阿斯利森,舒塔,金灵等译.Ajax基础教程[M].北京:人民邮电出版社,2014:15-26
[3]孙鑫.Struts 2深入详解[M].北京:电子工业出版社,2012:8-16
[4]王珊,萨师煊.数据库系统概论[M].北京:高等教育出版社出版社,2010:7-15
[5]王毅,周峰,孙更新.J2EE经典案例设计与实现[M].北京:电子工业出版,2013:6-18
[6]孙鑫.Struts 2深入详解(Java技术大系)[M].北京:电子工业出版社,2012:5-14
[7]郑阿奇.SQL实用教程[M].北京:电子工业出版社,2013:26-42
[8]谭庆平,毛新军编著.软件工程实践[M].北京:高等教育出版社,2014:34-87
[9]林邦杰.Java程序设计入门教程[M]. 北京:中国青年出版社,2011:63-99
[10]谢希仁.计算机网络[M]. 北京:电子工业出版社,2012: 89-125
[11]布朗,戴维斯,斯坦利克,马召等译.Struts 2实战[M].北京:人民邮电出版社,2012:85-136
[12]王行言.Java语言与面向对象程序设计[M].北京:清华大学出版社,2013:36-85
[13]拉夫利,李进华等译.精通Struts 2:Web 2.0开发实战[M].北京:人民邮电出版社,2012:253-276
[14]陈云芳.精通Struts 2基于MVC的Web应用开发实战[M].北京:人民邮电 出版社, 2012:136-187
[15] DavidHopkins.Improvingthe Quality of Teaching and Learning[J].Support for Learning,2014(12):162-165.
[16] Ed Woychowsky.Introducing Ajax[EB/OL]. http://www. webreference.com/programming/ajax_creating_asynchrono us_web_pages/index.html,2015-1-13.
[17] Roberto Latorre,Francisco Lopez,Antonio E.Martinez.Sharing of procompiled database statements in J2EE application[J]. Software: Practice and Experience,2015(35):301-311.
[18] Huang,M.Y,Lin,Y.J,Xu,H.A framework for web-based product data management using J2EE.International Journal of Advanced Manufacturing Technology, 2014:825-847.
[19] Aleassanndro Marchetto,Filippo Ricca,Paolo Tonella.A case study-based comparison of web testing techniques applied to ajax web applications[J].International Journal on software Tools for Technology Transfer(STTT),2015,10(12):477-492.
[20]D.F.Elliott,and K.Rao.Fast Transforms:Algorothms,Analysas,Applications.New York:Academkic Prdss.2014