magipige
本系统提供客户端及服务器端两个可以独立运行的程序。在服务器开启的前提下,客户端可以进行注册、登录、存款、取款、查询余额、申请贷款、还款等操作。服务器端可以对客户端的消息进行相应的响应,并且将信息存在数据库中。
客户端提供控制台界面,在控制台中根据提示输入相应的数字即可进行操作。下面对客户端提供的功能作简单说明:
注册:根据软件提示,输入要注册的用户名和密码即可注册
登录:输入用户名密码即可登录,服务器会返回登录结果
存款:向活期存款账户存入款项
取款:从货期存款账户中取款,可能存在余额不足的情况
查询余额:查询当前账户的活期存款账户与定期存款账户的余额
贷款申请:根据要求,输入贷款数目与贷款期限,服务器会返回是否同意贷款。贷款审批通过后,所贷款项会被即时存入活期存款账户。具体贷款同意规则为: 客户为活跃用户,也就是去年有三次以上的交易(包括存款、取款、查询);客户当前没有其他未还清贷款;贷款申请额度不超过活期存款、定期存款总额之和
还款:用于偿还贷款
除了以上功能,当登录用户因为逾期未还款而处于冻结状态时,取款、查询、贷款申请操作将会被服务器拒绝,登录用户仅能通过存款、还款功能偿还欠款。当还清所有欠款后,账户会自动解冻。
服务器端使用了多线程技术,使用了主线程控制至多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,金额,定期存款类型,定期存款开始时间,是该用户的第几笔定期存款。
程序采用UTF-8编码,如果数据库编码方式也全设置为UTF-8,则可以支持所有Unicode字符作为帐户名
数据库存储中对重要信息进行了简单的加密(hashcode)
服务器中提供运行日志功能,运行的各个函数会将关键信息打印在控制台上,可用于监控服务器运行状态。可以利用文件输入输出流将运行日志导出到文本文档中
系统中设置1分钟为系统中的一年,活期账户加息、去年账户活动次数均是一年进行一次操作
贷款偿还的方式为等额本息还款,即每期应还款金额=(贷款本金+贷款本金*年利率*贷款年限)÷ 贷款年限
本系统不提供定期存款的自动转存功能,所有到期的定期存款自动连本金带利息存入货期存款账户
数据库中的表
使用实际情况截图
测试过程中,不知什么原因,服务器端无法通过java -jar server.jar调用,但是在eclipse中运行正常。在eclipse正常运行服务器端的状态下,可通过java -jar client.jar在命令行中使用客户端。
keyboard_arrow_left上一篇 : 基于JSP和MySQL的宿舍财产管理系统 基于汇编语言的多任务飞机大战游戏 : 下一篇keyboard_arrow_right