目 录
4.1登录模块 0
结论 31
摘要
客户管理作为一种新的管理模式、业务营销理念和信息技术前沿产品,是信息技术与业务管理相结合的产物,早已引起银行界管理层的关注,也是我们从事科技工作人员所研究的对象。客户管理是客户经理及其他信贷业务人员进行客户信息录入、维护、查询的统一入口,客户在信贷业务活动中收集到的各类客户相关的动态和静态的信息在全行范围内统一管理, 形成统一的客户信息库和客户视图,从而为银行的信贷业务提供最基础的信息支持。
本文针对当前银行客户管理系统的发展现状,在对银行客户管理系统详细介绍的基础上,对整个系统平台的设计与实现进行了详细的说明,在抽象提取了客户管理业务的共性后实现了客户信息管理、客户关系管理等模块化的软件设计,大大增强了系统的可扩展性和可维护性,同时也满足了商业银行对所有跟客户管理业务相关的从前台柜面展示到后台业务逻辑处理功能的不同需求。
本文将一般的定性分析与大量目前数据统计分析相结合,分析项目的前景和必要。进一步,就客户管理最为复杂,最至关重要的技术评估分析采取层层展开,全面论述,对比分析的方式全面评估该工程项目的技术可行性。全文结合大量的图表,生动地将浩大复杂的客户管理系统项目的各种评估方式有效的结合在一起,为全文得出一个一气呵成的系统结论,重点分析了系统实现的关键技术,结合原型界面详细介绍,并给出了相关的源代码。
关键词:springboot技术;MYSQL;银行客户管理系统
Abstract
Customer management, as a new management model, business marketing concept, and cutting-edge product of information technology, is a product of the combination of information technology and business management. It has long attracted the attention of the management in the banking industry and is also the research object of our technology workers. Customer management is a unified entry point for customer managers and other credit business personnel to input, maintain, and query customer information. The dynamic and static information collected by customers in credit business activities is managed uniformly throughout the bank, forming a unified customer information database and customer view, thereby providing the most basic information support for the bank's credit business.
This article focuses on the current development status of bank customer management systems. Based on a detailed introduction to the bank customer management system, it provides a detailed explanation of the design and implementation of the entire system platform. After abstracting the commonalities of customer management business, modular software designs such as customer information management and customer relationship management are implemented, greatly enhancing the scalability and maintainability of the system, At the same time, it also meets the different needs of commercial banks for all customer management business related functions, from front-end counter display to back-end business logic processing.
This article combines general qualitative analysis with a large amount of current data statistical analysis to analyze the prospects and necessity of the project. Furthermore, the most complex and crucial technical evaluation and analysis of customer management will be conducted layer by layer, comprehensively discussing and comparing the technical feasibility of the engineering project. The full text combines a large number of charts to vividly combine various evaluation methods of the vast and complex customer management system project, and draws a coherent system conclusion for the entire text. The key technologies of system implementation are analyzed in detail, combined with the prototype interface, and relevant source code is provided.
Keywords:Springboot technology; MYSQL; Bank Customer Management System
1 绪论
1.1课题研究背景
客户管理系统已经不是一个新的课题,早在十年前就开始传入国内,有的银行也做了一些尝试,这个尝试不是非常成功,有的也做得比较肤浅或者根本没有发挥出它应有的作用。在国内实行客户关系过程中存在一-些问题。一是从 IT环境来说,业务系统必须实现大集中处理,如果分散的情况下,要搞客户关系管理一点意义都没有,真正实现大集中以后,业务量大了以后照顾不过来这些客户关系,这时候信息量大了,才需要客户关系管理。银行业务系统实行业务整合,还是各有各的系统,系统非常分散的话,制定也是不现实的,必须各个系统整合在一起,才更有意义。第三,客户资料相对完备,包括每个客户的收入状况、财务状况、家庭情况,这些信息以及各种产品的信息,相对比较完备的情况错行。因为我们银行管理水平是很多的银行在这方面相当落后,企业帐户就有一个企业名称、编码等等,好多详细资料都没有,在这种情况下,要搞客户关系根本不现实,个人客户更是少得可怜了。
国内商业银行客户管理系统建设兴起的背景主要是近年来私人业务的迅速增加,二十年内国内银行私人业务量仅限于私人存款,最近五年来私人业务发展非常快,私人客户量大量增加,有效客户在七百万到一千万左右。
私人业务品种不断增加,二十年以前我们几乎银行对业务仅仅是属于存款、国库券,现在都是理财产品、信用卡、个贷、汽车消费、小企业贷款等等这些量越来越多。国内的产品和服务严重同质化,所有银行服务几乎都是一样的,同质化也很严重,只能借助客户关系管理提供一个个性化的服务。银行提高盈利能力水平,银行竞争比较激烈,如今外资银行进入零售业务,在这种环境下,提高银行的竞争能力和盈利能力就必须借助一个先进的工具实现。
再一方面是多渠道,银行的服务过去是传统的柜台和营业机构,现在通过互联网和自助设备也增加了一些服务的渠道,也是需要银行的管理模式要改变一下。营销理念的转变,国外的营销理念随着私人业务的发展,随着国际银行竞争能力的提高,营销理念也在发生变化,不再依靠过去很传统的方式。
1.2国内外应用现状
国外银行的应用
这几年来,在世界范围内,随着对客户管理理念认同程度的扩大和行业产品系统的日趋成熟,一些大型银行和新型银行纷纷将客户管理在银行领域的应用实施列入工作日程。如此关注客户管理是金融服务市场开放、竞争的结果,是银行多样化的产品和服务发展的结果,是信息技术突飞猛进的结果,也是银行管理和业务的需要。20世纪90年代初,发达国家的商业银行就已经实现了业务处理的规范化、办公事务的自动化和决策支持的智能化,并在发展网上银行方面先行一步,以数据仓库技术为基础,以联机分析处理和数据挖掘工具为手段的客户管理系统也日趋成熟。国外金融界十分重视对客户管理的开发实施工作,据IDC调查,1998年全球500家大银行中的前100家,已经有近90家建有客户管理。在美国建有客户管理的银行中,以大型银行为主,美国排名前100位的商业银行已有50多家在客户关系管理中实施了数据仓库和数据挖掘项目,剩余的银行正在准备实施。
在个人银行业务方面,澳大利亚的国民银行每天会将所收集的客户数据放到数据仓库中,并且设定了一些智能分析机制,对客户交易状态进行管理,一旦有客户状态异常的情况发生,数据仓库会自动做出相关统计,并将统计的结果提交给营销部门的人员,山营销人员及时与客户进行接触,找出客户状态异常的原因。例如这家银行通过系统发现一位老太太提款很多,是要为女儿买房子,银行就立即与老太太的女儿进行联系,表示愿意为其提供买房的贷款。结果是即将老太太原来要从银行提的款项又全部作为存款留在银行:银行又为其女儿贷出了一笔贷款。
2、国内银行的应用
客户管理系统在国内,特别是金融行业的关注度非常高,但应用较少,属于起步阶段。据计算机世界报介绍,鹏华基金管理公司己开始应用客户管理系统,因为多数基金管理公司的运营模式仍然是基于内部管理和内部核算的需要,并没有建立"以客户为中心"的现代管理模式。随着开放式基金的推出和发展,它特行的可赎回性将客户的重要性提升到了前所未有的高度。如果客户对某家基金管理公司感到不甚满意,很可能会迅速转向其他基金管理公司。客户的满意度和忠诚度成为基金管理公司生存和发展的重要依据,如何留住老客户、争取新客户已成为当务之急。采用客户管理系统可以帮助该公司更好地了解客户需求并进行系统化的分析,在此基础上进行"一对一"的个性化服务,提高客户的满意度和忠诚度,帮助基金管理公司更加明了这样一些问题: "谁是他们的客户?谁是他们的好客户?他们的客户需要什么?如何提升客户价值并使银行获得更多的利润?
进入WTO后,中国金融业这一受保护最久最严的行业也开始了它的开放进程。在这一过程中外有外资金融机构进入中国市场的压力,内有内部竞争环境所导致的市场格局的变化,相接主导着金融业市场环境的变化。在这种迫切需要加强管理、优化产品的形式下,巨通网络科技有限公司开发的银行信贷决策分析系统,采用数据仓库和数据挖掘技术对信贷业务分析的关键问题(客户、机构、产品、行业、项目)进行分析,并运行于交通银行上海分行、江苏省农行。创智软件园开发的PowerCRM系统,提供企业级的客户关系管理解决方案,并运行于中行温州分行。但这些系统离完整地实现客户管理还有很长的路要走。而我们能够去关注客户管理,就是从我行先期推广的大户管理系统中看到了客户管理应用的前景。
1.3系统开发技术的特色
(1)银行客户管理系统中的web后台管理中的后端不再使用古老的jsp+javabean+servlet技术,而是使用当前主流的springboot框架,它减少java配置代码,简化编程代码,目前springboot框架也是很多企业选择的框架之一。
(2)银行客户管理系统中的web后台管理中的前端使用的是JavaScript框架,它配合ajax[8]和jquery[9]可以美化页面设计。
(3)流行vue框架结合jQuery技术,在jQuery基础上扩展一些插件,通过自己定义插件更好的实现前端的设计。
(4)银行客户管理系统中数据库用的mysql5.7,它执行效率高。
1.4论文结构与章节安排
论文将分层次经行编排,除去论文摘要致谢文献参考部分,正文部分还会对网站需求做出分析,以及阐述大体的设计和实现的功能,最后罗列部分调测记录,论文主要架构如下:
第一章:引言。第一章主要介绍了课题研究的背景,系统开发的现状和本文的国内外应用现状与主要工作。
第二章:系统需求分析。第二章主要从系统的用户、功能等方面进行需求分析。
第三章:系统设计。第三章主要对系统框架、系统功能模块、数据库进行功能设计。
第四章:系统实现。第四章主要介绍了系统框架搭建、系统界面的实现。
第五章:系统测试。第五章主要对系统的部分界面进行测试并对主要功能进行测试
2 银行客户管理系统分析
系统分析是开发一个项目的先决条件,通过系统分析可以很好的了解系统的主体用户的基本需求情况,同时这也是项目的开发的原因。进而对系统开发进行可行性分析,通常包括技术可行性、经济可行性等,可行性分析同时也是从项目整体角度进行的分析。然后就是对项目的具体需求进行分析,分析的手段一般都是通过用户的用例图来实现。下面是详细的介绍。
2.1 可行性分析
银行客户管理系统存储所使用的是mysql数据库以及开发中所使用的是IDEA、Tomcat这些开发工具的使用,能够给我们的编写工作带来许多的便利。系统使用springboot框架进行开发,使系统的可扩展性和维护性更佳,减少java配置代码,简化编程代码,目前springboot框架也是很多企业选择的框架之一。
在开发银行客户管理系统中所使用的开发软件像IDEA开发工具、Tomcat8.0服务器、MySQL5.7数据库、Photoshop图片处理软件等,这些都是开源免费的,这些环境在学校都进行了系统的学习,自己能够独立操作完成,不需要额外花费,而且系统的开发工具从网上都可以直接下载,因此在经济方面是可行的。
此次项目设计的时候我参考了很多类似系统的成功案例,对它们的操作界面以及功能都进行了系统的分析,将众多案例结合在一起,突出以人为本简化操作,所以具有基本计算机知识的人都会操作本项目。因此操作可行性也没有问题。
2.2系统业务流程分析
管理员权限下的工作流程主要为:管理员通过系统界面提供登录按钮并点击,转入管理员登录界面,并在界面上填入相应的管理员账户和管理员密码,进入管理员权限下的后台系统,并且在系统左侧导航条设置了相应的操作功能。
用户权限下的工作流程主要为:用户通过系统提供的注册功能,进行身份验证并注册,而后在登录界面进行个人身份验证,并且进入用户的个人后台界面,并进行相应的操作。
银行客户管理系统的业务流程如下图所示。
图3-3 系统业务流程图
2.3 系统功能分析
银行客户管理系统的设计与实现是为了让企业的使用者更加方便的进行管理个人信息相关联的一些信息,使用者查找管理的时候能够节省大量的时间和精力,有效减少不必要的查找时间。系统在功能上划分为普通用户端和管理员端两大部分。
普通用户端:
(1)注册登录:当用户想要对系统中所实现的功能进行查询管理的时候,就必须进行登录到系统当中,如果没有账号的话,在登录界面,点击“注册”按钮就会跳转到注册的界面,根据提示填写好注册信息,添加提交,用户的信息在数据库中就添加完成了,然后再输入填写好的账号和密码进行登录;
(2)个人资料:用户在登录以后可以修改自己的个人资料以及对自己账号登录的密码进行修改;
(3)银行卡信息:用户点击“银行卡信息”会显示出所有的银行卡信息,支持输入银行卡号或者办卡日期对银行卡信息进行查询,如果想要添加新的银行卡信息,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条银行卡信息,点击“删除”进行删除,也可以点击后面的“存款”、“支付”按钮对银行卡信息的存款信息进行更新维护、对银行卡信息的支付信息进行设置;
(4)支付记录:点击“支付记录”这个菜单,可以查看到系统中所有添加的支付记录,支持通过银行卡号或者支付日期对支付记录进行查询,如果想要了解某一支付记录的详细信息,点击后面的“详情”会进入详情界面。
(5)信用卡信息:用户点击“信用卡信息”会显示出所有的信用卡信息,支持输入信用卡号或者办卡日期对信用卡信息进行查询,如果想要添加新的信用卡信息,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条信用卡信息,点击“删除”进行删除,也可以点击后面的“交易”、“还款”按钮对信用卡信息的交易/还款信息进行更新维护;
(6)挂失业务:用户点击“挂失业务”会显示出所有的挂失业务信息,支持输入挂失用户或者用户姓名对挂失业务信息进行查询,如果想要添加新的挂失业务信息,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条挂失业务信息,点击“删除”进行删除;
(7)银行公告:点击“银行公告”这个菜单,可以查看到系统中所有添加的银行公告信息,支持通过公告标题或者公告编号对银行公告信息进行查询,如果想要了解某一银行公告的详细信息,点击后面的“详情”会进入详情界面;
管理员端:
(1)个人资料:管理在登录以后可以修改自己的个人资料以及对自己账号登录的密码进行修改;
(2)用户管理:管理员可以对系统中所有的用户角色进行管控,包含了管理员、普通用户这两种角色,如果需要添加新的用户,点击页面中的“添加”按钮根据提示输入上用户信息,点击“提交”以后在对应的用户界面就可以查看到了,可以点击用户后面的“删除”按钮直接删除某一用户。
(3)信用卡信息:管理员点击“信用卡信息”会显示出所有的信用卡信息,支持输入信用卡号或者办卡日期对信用卡信息进行查询,如果想要添加新的信用卡信息,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条信用卡信息,点击“删除”进行删除,也可以点击后面的“交易”、“还款”按钮对信用卡信息的交易/还款信息进行更新维护;
(4)信用卡交易:点击“信用卡交易”这个按钮可以查看到系统中所有的信用卡交易,支持通过信用卡号或者交易日期进行查询信用卡交易,如果想要添加新的信用卡交易,点击“添加”按钮然后根据提示输入信用卡交易,点击“提交”后,在信用卡交易界面就会显示新增的信用卡交易,可以点击某一组织查看信用卡交易的详情,也可以直接点击“删除”进行删除信用卡交易;
(5)挂失业务:管理员点击“挂失业务”会显示出所有的挂失业务信息,支持输入挂失用户或者用户姓名对挂失业务信息进行查询,如果想要添加新的挂失业务信息,点击“添加”按钮,输入相关信息,点击“提交”按钮就可以添加了,同时可以选择某一条挂失业务信息,点击“删除”进行删除;
(6)银行公告:点击“银行公告”这个菜单,可以查看到系统中所有添加的银行公告信息,支持通过公告标题或者公告编号对银行公告信息进行查询,如果想要添加新的银行公告,点击“添加”按钮,根据提示输入银行公告信息,点击“提交”按钮,新的银行公告信息就在系统中显示出来了,也可以对添加的银行公告信息进行删除;
2.3.2 非功能性分析
银行客户管理系统的非功能性需求比如银行客户管理系统的安全性怎么样,可靠性怎么样,性能怎么样,可拓展性怎么样等。具体可以表示在如下3-1表格中:
表3-1银行客户管理系统非功能需求表
安全性 | 主要指银行客户管理系统数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
可靠性 | 可靠性是指银行客户管理系统能够安装用户的指示进行操作,经过测试,可靠性90%以上。 |
性能 | 性能是影响银行客户管理系统占据市场的必要条件,所以性能最好要佳才好。 |
可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
易用性 | 用户只要跟着银行客户管理系统的页面展示内容进行操作,就可以了。 |
可维护性 | 银行客户管理系统开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
2.4 系统用例分析
通过2.3功能的分析,得出了本银行客户管理系统的用例图:
普通用户角色用例如图2-3所示。
图2-3 银行客户管理系统普通用户角色用例图
web后台管理上的管理员是维护整个银行客户管理系统中所有数据信息的。管理员角色用例如图2-4所示。
本章主要通过对银行客户管理系统的可行性分析、流程分析、功能需求分析、系统用例分析,确定整个银行客户管理系统要实现的功能。同时也为银行客户管理系统的代码实现和测试提供了标准。
3 银行客户管理系统总体设计
本章主要讨论的内容包括银行客户管理系统的功能模块设计、数据库系统设计。
3.1 系统架构设计
本银行客户管理系统从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。
图3-1银行客户管理系统架构设计图
表现层(UI):又称UI层,主要完成本银行客户管理系统的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本银行客户管理系统时的舒适度。UI的界面设计也要适应不同版本的银行客户管理系统以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本银行客户管理系统的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本银行客户管理系统的数据是放在服务端的mysql数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本银行客户管理系统的数据存储和管理功能。
3.2 系统功能模块设计
在上一章节中主要对系统的功能性需求和非功能性需求进行分析,并且根据需求分析了本银行客户管理系统中的用例。那么接下来就要开始对本银行客户管理系统的架构、主要功能和数据库开始进行设计。银行客户管理系统根据前面章节的需求分析得出,其总体设计模块图如图3-2所示。
图3-2 银行客户管理系统功能模块图
3.2 数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
3.2.1 数据库概念结构设计
下面是整个银行客户管理系统中主要的数据库表总E-R实体关系图。
图3-3 银行客户管理系统总E-R关系图
3.2.2 数据库逻辑结构设计
通过前面E-R关系图可以看到项目需要创建很多个数据表。以下是项目中的主要数据库表的关系模型:
表bank_announcement (银行公告)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | bank_announcement_id | int | 10 | 0 | N | Y | 银行公告ID | |
2 | announcement_title | varchar | 64 | 0 | Y | N | 公告标题 | |
3 | announcement_no | varchar | 64 | 0 | Y | N | 公告编号 | |
4 | release_date | date | 10 | 0 | Y | N | 发布日期 | |
5 | announcement_content | text | 65535 | 0 | Y | N | 公告内容 | |
6 | publisher | varchar | 64 | 0 | Y | N | 发布人员 | |
7 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表bank_card_information (银行卡信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | bank_card_information_id | int | 10 | 0 | N | Y | 银行卡信息ID | |
2 | bank_card_number | varchar | 64 | 0 | N | N | 银行卡号 | |
3 | card_application_date | date | 10 | 0 | Y | N | 办卡日期 | |
4 | cardholder | int | 10 | 0 | Y | N | 0 | 持卡用户 |
5 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
6 | id_number | varchar | 64 | 0 | Y | N | 身份证号 | |
7 | card_balance | int | 10 | 0 | Y | N | 0 | 卡内余额 |
8 | customer_group | varchar | 64 | 0 | Y | N | 客户群体 | |
9 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表credit_card_information (信用卡信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | credit_card_information_id | int | 10 | 0 | N | Y | 信用卡信息ID | |
2 | card_number | varchar | 64 | 0 | N | N | 信用卡号 | |
3 | card_application_date | date | 10 | 0 | Y | N | 办卡日期 | |
4 | cardholder | int | 10 | 0 | Y | N | 0 | 持卡用户 |
5 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
6 | id_number | varchar | 64 | 0 | Y | N | 身份证号 | |
7 | limit | int | 10 | 0 | Y | N | 0 | 限制额度 |
8 | available_credit | int | 10 | 0 | Y | N | 0 | 可用额度 |
9 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表credit_card_payment (信用卡还款)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | credit_card_payment_id | int | 10 | 0 | N | Y | 信用卡还款ID | |
2 | card_number | varchar | 64 | 0 | Y | N | 信用卡号 | |
3 | repayment_date | date | 10 | 0 | Y | N | 还款日期 | |
4 | cardholder | int | 10 | 0 | Y | N | 0 | 持卡用户 |
5 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
6 | limit | int | 10 | 0 | Y | N | 0 | 限制额度 |
7 | available_credit | int | 10 | 0 | Y | N | 0 | 可用额度 |
8 | repayment_amount | varchar | 64 | 0 | Y | N | 还款金额 | |
9 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表credit_card_transaction (信用卡交易)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | credit_card_transaction_id | int | 10 | 0 | N | Y | 信用卡交易ID | |
2 | card_number | varchar | 64 | 0 | Y | N | 信用卡号 | |
3 | transaction_date | date | 10 | 0 | Y | N | 交易日期 | |
4 | cardholder | int | 10 | 0 | Y | N | 0 | 持卡用户 |
5 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
6 | transaction_amount | int | 10 | 0 | Y | N | 0 | 交易金额 |
7 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表customer_service_consultation (客服咨询)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | customer_service_consultation_id | int | 10 | 0 | N | Y | 客服咨询ID | |
2 | consult_users | int | 10 | 0 | Y | N | 0 | 咨询用户 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | consultation_date | date | 10 | 0 | Y | N | 咨询日期 | |
5 | type_of_consultation | varchar | 64 | 0 | Y | N | 咨询类型 | |
6 | consultation_status | varchar | 64 | 0 | Y | N | 咨询状态 | |
7 | consultation_content | text | 65535 | 0 | Y | N | 咨询内容 | |
8 | customer_service_reply | text | 65535 | 0 | Y | N | 客服答复 | |
9 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表deposit_record (存款记录)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | deposit_record_id | int | 10 | 0 | N | Y | 存款记录ID | |
2 | bank_card_number | varchar | 64 | 0 | Y | N | 银行卡号 | |
3 | deposit_date | date | 10 | 0 | Y | N | 存款日期 | |
4 | cardholder | int | 10 | 0 | Y | N | 0 | 持卡用户 |
5 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
6 | deposit_amount | int | 10 | 0 | Y | N | 0 | 存款金额 |
7 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表hits (用户点击)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表loss_reporting_business (挂失业务)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | loss_reporting_business_id | int | 10 | 0 | N | Y | 挂失业务ID | |
2 | loss_reporting_user | int | 10 | 0 | Y | N | 0 | 挂失用户 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | date_of_loss_reporting | date | 10 | 0 | Y | N | 挂失日期 | |
5 | bank_card_type | varchar | 64 | 0 | Y | N | 银行卡类型 | |
6 | bank_card_number | varchar | 64 | 0 | Y | N | 银行卡号 | |
7 | reason_for_loss_reporting | text | 65535 | 0 | Y | N | 挂失原因 | |
8 | remarks | text | 65535 | 0 | Y | N | 备注信息 | |
9 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表ordinary_users (普通用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | ordinary_users_id | int | 10 | 0 | N | Y | 普通用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | user_age | varchar | 64 | 0 | Y | N | 用户年龄 | |
5 | id_number | varchar | 64 | 0 | Y | N | 身份证号 | |
6 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
7 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
8 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表payment_record (支付记录)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | payment_record_id | int | 10 | 0 | N | Y | 支付记录ID | |
2 | bank_card_number | varchar | 64 | 0 | Y | N | 银行卡号 | |
3 | payment_date | date | 10 | 0 | Y | N | 支付日期 | |
4 | cardholder | int | 10 | 0 | Y | N | 0 | 持卡用户 |
5 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
6 | payment_amount | int | 10 | 0 | Y | N | 0 | 支付金额 |
7 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表upload (文件上传)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
表user (用户账户:用于保存用户登录信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
表user_group (用户组:用于用户前端身份和鉴权)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
3.4本章小结
整个银行客户管理系统的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。
4 关键模块的设计与实现
4.1登录模块
将首页的左边的功能设计为用户登录的位置,所以在进行登录的地方就会显示首页。在登录后就是大众较为熟悉的位置,也就是让用户进行账号以及密码输入的样式。
当用户输入完信息并点击登录按钮时,Struts就会将用户输入的信息传递进表单并装入相应的对象之中,然后再转到相应位置进行校验。若用户名和密码框都是空的,那么系统就会不可将账号密码均设置为空值。
系统的底层设置要求账号密码不可以都是空值,将这些信息传递给相关的类中的对象方法并调用相关的信息,对于用户输入的数据进行检验。若检验结果正确会自动转到系统首页欢迎页面,如果不正确系统就会返回用户登录界面。
用户登录流程图如下所示。
图4.1用户登录流程
系统登录界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/dcf7b13921a6419cbd7d9d3118e2b163.png)
图4.1 登录界面图
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.select(map, new HashMap<>()).getResultList();
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
String res = String.valueOf(service.runCountSql(sql).getSingleResult());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
4.2注册模块
系统的用户通过自行注册生成,在系统首页点击用户注册菜单,系统跳转到对应的注册页面。点击重置按钮,清空所填数据,点击注册按钮完成注册。
用户注册流程图如下所示。
图4.2 注册流程图
注册界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/d53dc10269c04f01b79d2df9c0666240.png)
图4.2注册界面图
注册关键代码如下所示。
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
query.put("username",user.getUsername());
List list = service.select(query, new HashMap<>()).getResultList();
if (list.size()>0){
return error(30000, "用户已存在");
}
user.setUserId(null);
user.setPassword(service.encryption(user.getPassword()));
service.save(user);
return success(1);
}
/**
* 用户ID:[0,8388607]用户获取其他与用户相关的数据
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Integer userId;
/**
* 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)
*/
@Basic
@Column(name = "state")
private Integer state;
/**
* 所在用户组:[0,32767]决定用户身份和权限
*/
@Basic
@Column(name = "user_group")
private String userGroup;
/**
* 上次登录时间:
*/
@Basic
@Column(name = "login_time")
private Timestamp loginTime;
/**
* 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
*/
@Basic
@Column(name = "phone")
private String phone;
/**
* 手机认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "phone_state")
private Integer phoneState;
/**
* 用户名:[0,16]用户登录时所用的账户名称
*/
@Basic
@Column(name = "username")
private String username;
/**
* 昵称:[0,16]
*/
@Basic
@Column(name = "nickname")
private String nickname;
/**
* 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成
*/
@Basic
@Column(name = "password")
private String password;
/**
* 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
*/
@Basic
@Column(name = "email")
private String email;
/**
* 邮箱认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "email_state")
private Integer emailState;
/**
* 头像地址:[0,255]
*/
@Basic
@Column(name = "avatar")
private String avatar;
/**
* 创建时间:
*/
@Basic
@Column(name = "create_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp createTime;
@Basic
@Transient
private String code;
}
4.3密码修改模块
用户使用该银行客户管理系统注册完成后,用户对登录密码有修改需求时,系统也可以提供用户修改密码权限。系统中所有的操作者能够变更自己的密码信息,执行该功能首先必须要登入系统,然后选择密码变更选项以后在给定的文本框中填写初始密码和新密码来完成修改密码的操作。在填写的时候,假如两次密码填写存在差异,那么此次密码变更操作失败,下面的图片展示的就是该板块对应的工作面。
密码修改流程图如下所示。
图4.3密码修改流程图
密码修改界面如图所示。
![](https://i-blog.csdnimg.cn/direct/7f0392924e7646dc8d133883f5cfeec7.png)
图4.3密码修改界面图
4.4用户管理模块
用户通过注册了方可获得登录使用权限,此时选择注册用户选项,系统就会自动转到用户注册工作面,在注册该部分信息时系统会自动调用add函数,然后在给定的文本框中填写有关该用户的基础信息后选择确认即可完成注册。检索用户信息,在新增用户信息以后,在检索工具栏中填写对应的用户信息,系统就会将该用户有关的所有信息展示出来。
用户管理流程图如下所示。
图4.4 用户管理流程图
用户管理界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/4b1512d878ca4a33bc03bea059e3b376.png)
图4.4用户管理界面图
用户管理界面逻辑代码如下:
@RequestMapping(value = {"/count_group", "/count"})
public Map<String, Object> count(HttpServletRequest request) {
Query count = service.count(service.readQuery(request), service.readConfig(request));
return success(count.getResultList());
}
4.5信用卡信息模块
管理员执行信用卡信息管理,并可以操作相关内容,例如添加,查看,编辑和删除。通过单击“添加信用卡信息”,可以通过信用卡信息添加界面添加详细信息并添加信用卡信息注释。单击查看字段级别链接以查看有关所选字段级别的信息。然后单击“提交”跳转重返到添加页面。添加成功后的信息会载入到信用卡信息查询列表中,管理员可进行编辑以及修改。
信用卡信息流程如下图所示。
图4.5信用卡信息流程
信用卡信息界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/8e8dbfcb68a74689bfffc0b00d269df0.png)
图4.5 信用卡信息界面图
信用卡信息逻辑代码如下:
@RequestMapping(value = {"/avg_group", "/avg"})
public Map<String, Object> avg(HttpServletRequest request) {
Query count = service.avg(service.readQuery(request), service.readConfig(request));
return success(count.getResultList());
}
4.6信用卡还款模块
管理员执行信用卡还款管理,并可以操作相关内容,例如添加,查看,编辑和删除。通过单击“添加信用卡还款”,可以通过信用卡还款添加界面添加详细信息。单击查看字段级别链接以查看有关所选字段级别的信息。然后单击“提交”跳转重返到添加页面。添加成功后的信息会载入到信用卡还款查询列表中,管理员可进行编辑以及修改。
信用卡还款添加流程图如下所示。
图4.6 信用卡还款添加流程图
信用卡还款管理如下图所示。
![](https://i-blog.csdnimg.cn/direct/b95022f236d24f98bd400e7719e21478.png)
图4.6 信用卡还款界面图
4.7挂失业务模块
用户选择挂失业务添加记录,管理员审核挂失业务信息,管理所有用户的挂失业务记录。
挂失业务管理流程图如下所示。
图4.7挂失业务流程图
挂失业务维护界面如下所示。
![](https://i-blog.csdnimg.cn/direct/be5aa28519894f8e98d3f195968327a3.png)
图4.7 挂失业务维护界面
4.8银行公告管理模块
在主页左侧菜单栏中点击“银行公告”按钮,再从二级目录中点击“新增公告”按钮,进入到新增公告界面。在此处公告可以添加公告的标题、编号、内容。
在主页左侧菜单栏中点击“银行公告”按钮,再从二级目录中点击“查询公告”按钮,进入到查询公告界面。在此处公告可以查询当前所有公告记录。
银行公告展示界面如下图所示。
图4.8 银行公告展示界面图
公告管理界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/dba4f0d967034af7871335974339682a.png)
图4.9 公告管理界面图
5系统测试
系统开发到了最后一个阶段那就是系统测试,系统测试对软件的开发其实是非常有必要的。因为没什么系统一经开发出来就可能会尽善尽美,再厉害的系统开发工程师也会在系统开发的时候出现纰漏,系统测试能够较好的改正一些bug,为后期系统的维护性提供很好的支持。通过系统测试,开发人员也可以建立自己对系统的信心,为后期的系统版本的跟新提供支持。
表5.1 用户登录功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
用户登录模块测试 | 用户登录成功的情况 | 点击前登录界面输入账号和密码分别输入admin和admin后点击“登录”按钮。 | 登录成功并调整到用户界面 | 正确 |
信用卡还款信息添加功能测试:
表5.2 信用卡还款信息添加功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
信用卡还款添加模块测试 | 信用卡还款添加成功的情况 | 在信用卡还款的页面中将点击添加,输入信用卡还款关信息,输入正确的信息后然后点击“提交”按钮。 | 提示添加成功 | 正确 |
信用卡还款添加模块测试 | 信用卡还款添加失败的情况 | 在信用卡还款页面中不填写的信用卡号,其他信息正常输入“提交”按钮。 | 提示“添加失败,信息不能为空” | 正确 |
查询信用卡信息功能模块测试:
表5.3 查询信用卡信息功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
查询信用卡信息功能测试 | 查询成功的情况 | 在信用卡信息界面输入信用卡号进行查询 | 查询成功 | 正确 |
信用卡交易信息添加功能测试:
表5.4 信用卡交易添加功能测试表
测试名称 | 测试功能 | 操作过程 | 预期结果 | 测试结果 |
信用卡交易添加模块测试 | 信用卡交易添加成功的情况 | 在信用卡交易的页面中将点击添加,输入交易相关信息,输入正确的信息后然后点击“提交”按钮。 | 提示添加成功 | 正确 |
信用卡交易添加模块测试 | 信用卡交易添加失败的情况 | 在信用卡交易页面中不填写的信用卡号,其他信息正常输入“提交”按钮。 | 提示“添加失败,信息不能为空” | 正确 |
5.3 系统测试结果
通过编写银行客户管理系统的测试用例,已经检测完毕用户的登录模块、信用卡还款信息添加模块、查询信用卡信息模块、信用卡交易添加模块的功能测试,在对以上功能得测试过程中,发现了系统中的很多漏送并进行了完善,经过多人在线进行测试,系统完全可以正常运行,当然在后期的维护中系统将不断完善。
结论
至此,银行客户管理系统已经结束,在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从中我也收获了很多宝贵的方法和设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如Web、springboot技术、MYSQL,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。
当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。
参考文献
[1]余鹏翔,石军锋.基于SpringBoot框架的群养母猪饲喂站管理系统设计与试验[J].中国农机化学报,2023,44(03):149-155+241.DOI:10.13733/j.jcam.issn.2095-5553.2023.03.021.
[2]谭松淇,郭嘉梁,李振兴,俞嘉杰. 基于MySQL数据库日志分析的自动驾驶数据监测方法及监测系统[P]. 黑龙江省:CN115730020A,2023-03-03.
[3]王曼维,杨荻,李岩,及松洁.基于SpringBoot框架的智慧医疗问诊系统设计与实现[J].中国医学装备,2022,19(03):133-136.
[4]高志平. 基于SpringBoot框架与ITIL方法的运维管理系统的设计与实现[D].华东师范大学,2021.DOI:10.27149/d.cnki.ghdsu.2021.001482.
[5]Fuyuan Cheng. Talent Recruitment Management System for Small and Micro Enterprises Based on Springboot Framework[J]. Advances in Educational Technology and Psychology,2021,5(2).
[6]Jian Chen,Chen Jian,Pan Hailan. Design of Man Hour Management Information System on SpringBoot Framework[J]. Journal of Physics: Conference Series,2020,1646(1).
[7]施志晖.大数据时代背景下商业银行客户管理策略研究[J].中国管理信息化,2020,23(13):128-129.
[8]马腾. 银行客户管理系统的设计与实现[D].江苏科技大学,2020.DOI:10.27171/d.cnki.ghdcc.2020.000806.
[9]王宗亚. 一种银行客户服务管理系统[P]. 安徽省:CN110852877A,2020-02-28.
[10]覃玉馨.大数据时代银行客户关系管理研究[J].营销界,2019(32):139-140.
[11]李莹, 电子信息 易云云数据库MySQL上线. 翟立新 主编,中关村年鉴,北京出版集团公司北京出版社,2018,205,年鉴.
[12]阴毅,张智林.基于SSM框架的银行客户积分管理系统设计与实现[J].中国新通信,2019,21(07):122.
[13]肖睿,程宁,田崇峰,金志雄,杜毅. MySQL数据库应用技术及实战[M].人民邮电出版社:, 201801.177.
[14]李娟.银行客户关系管理系统的设计与实现[J].现代经济信息,2017(15):299+355.
[15]SJ/T 11683-2017, Java语言源代码缺陷控制与测试指南[S].
致 谢
逝者如斯夫,不舍昼夜。转眼间,大用户用户活便已经接近尾声,人面对着离别与结束,总是充满着不舍与茫然,我亦如此,仍记得那年秋天,我迫不及待的提前一天到了学校,面对学校巍峨的大门,我心里充满了期待:这里,就是我新生活的起点吗?那天,阳光明媚,学校的欢迎仪式很热烈,我面对着一个个对着我微笑的同学,仿佛一缕缕阳光透过胸口照进了我心里,同时,在那天我认识可爱的室友,我们携手共同度过了这难忘的两年。如今,我望着这篇论文的致谢,不禁又要问自己:现在,我们就要说再见了吗?
感慨莫名,不知所言。遥想当初刚来学校的时候,心里总是想着工科学校会过于板正,会缺乏一些柔情,当时心里甚至有一点点排斥,但是随着我对学校的慢慢认识与了解,我才认识到了她的美丽,她的柔情,并且慢慢的喜欢上了这个校园,但是时间太快了,快到我还没有好好体会她的美丽便要离开了,但是她带给我的回忆,永远不会离开我,也许真正离开那天我的眼里会满含泪水,我不是因为难过,我只是想将她的样子映在我的泪水里,刻在我的心里。最后,感谢我的老师们,是你们教授了我们知识与做人的道理;感谢我的室友们,是你们陪伴了我如此之久;感谢每位关心与支持我的人。
少年,追风赶月莫停留,平荒尽处是春山。
免费领取项目源码,请关注❤点赞收藏并私信博主,谢谢-