基于Java和MySQL实现的在线银行系统

magipige

发布日期: 2021-01-06 12:46:59 浏览量: 172
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

一、概述

本系统提供客户端及服务器端两个可以独立运行的程序。在服务器开启的前提下,客户端可以进行注册、登录、存款、取款、查询余额、申请贷款、还款等操作。服务器端可以对客户端的消息进行相应的响应,并且将信息存在数据库中。

二、客户端说明

客户端提供控制台界面,在控制台中根据提示输入相应的数字即可进行操作。下面对客户端提供的功能作简单说明:

  • 注册:根据软件提示,输入要注册的用户名和密码即可注册

  • 登录:输入用户名密码即可登录,服务器会返回登录结果

  • 存款:向活期存款账户存入款项

  • 取款:从货期存款账户中取款,可能存在余额不足的情况

  • 查询余额:查询当前账户的活期存款账户与定期存款账户的余额

  • 贷款申请:根据要求,输入贷款数目与贷款期限,服务器会返回是否同意贷款。贷款审批通过后,所贷款项会被即时存入活期存款账户。具体贷款同意规则为: 客户为活跃用户,也就是去年有三次以上的交易(包括存款、取款、查询);客户当前没有其他未还清贷款;贷款申请额度不超过活期存款、定期存款总额之和

  • 还款:用于偿还贷款

    • 退出登录:退出当前登录的用户

除了以上功能,当登录用户因为逾期未还款而处于冻结状态时,取款、查询、贷款申请操作将会被服务器拒绝,登录用户仅能通过存款、还款功能偿还欠款。当还清所有欠款后,账户会自动解冻。

三、服务器端说明

服务器端使用了多线程技术,使用了主线程控制至多10个客户端响应线程,以及用于增加利息、查询贷款状态、处理活跃状态等功能的管理线程。同时使用了JDBC进行数据库连接。此外,在具体细节的实现上,服务器端具有审批贷款和到期贷款按次序扣费的功能,并能会在登录时验证用户冻结状态。

在用户端和服务器端的通信上,我使用了Java网络编程中的相关类,利用TCP/IP协议进行通信。同时约定了消息类型,用于请求和响应的识别。如A型消息用于用户创建请求与响应,B型消息用于登录请求与响应等等(具体消息类型的具体用途在类中有相关注释说明)。

四、数据库说明

数据库使用MySQl,在数据库onlinebanksystem中有三个表:account_information、loaniterms_information、savingiterms_information。

其中,account_information用于存储用户的基本信息。存有帐户名的hashcode,帐户名,密码(hashcode),活期账户余额,定期存款项目数,有无贷款,是否被冻结,上一年度活跃操作数量。

loaniterms_information用于存储所有的贷款信息。存有帐户名的hashcode,贷款金额,贷款类型,贷款开始时间,当前贷款已还金额,当前应还款金额。

savingiterms_information用于存储所有的定期存款信息。存有账户的hashcode,金额,定期存款类型,定期存款开始时间,是该用户的第几笔定期存款。

五、软件特点及部分细节

5.1 软件特点

  • 程序采用UTF-8编码,如果数据库编码方式也全设置为UTF-8,则可以支持所有Unicode字符作为帐户名

  • 数据库存储中对重要信息进行了简单的加密(hashcode)

  • 服务器中提供运行日志功能,运行的各个函数会将关键信息打印在控制台上,可用于监控服务器运行状态。可以利用文件输入输出流将运行日志导出到文本文档中

5.2 实现细节

  • 系统中设置1分钟为系统中的一年,活期账户加息、去年账户活动次数均是一年进行一次操作

  • 贷款偿还的方式为等额本息还款,即每期应还款金额=(贷款本金+贷款本金*年利率*贷款年限)÷ 贷款年限

  • 本系统不提供定期存款的自动转存功能,所有到期的定期存款自动连本金带利息存入货期存款账户

数据库中的表

使用实际情况截图

测试过程中,不知什么原因,服务器端无法通过java -jar server.jar调用,但是在eclipse中运行正常。在eclipse正常运行服务器端的状态下,可通过java -jar client.jar在命令行中使用客户端。

上传的附件 cloud_download 基于Java和MySQL实现的在线银行系统.7z ( 3.13mb, 3次下载 )
error_outline 下载需要8点积分

发送私信

生活不会因为你是女孩子就善待你

11
文章数
15
评论数
最近文章
eject