GitHub - 2064693012/PersonalBank: 基于MVC的个人网上银行系统,Javaweb项目基于MVC的个人网上银行系统,Javaweb项目. Contribute to 2064693012/PersonalBank development by creating an account it
资源已经分享到github上面,有需要的,自取
目 录
一、 设计背景.... 2
1.1 选题背景.... 2
1.2选题意义.... 2
二、 设计思路.... 2
2.1开发环境与工具.... 2
2.2 技术架构.... 3
三、 需求分析.... 3
3.1 设计目标.... 3
3.2 功能需求.... 3
3.3性能要求.... 4
四、 作品设计.... 4
4.1 总体设计.... 4
4.2 详细设计.... 5
4.3 数据库设计.... 5
五、 功能实现.... 8
5.1. 用户登录功能:.... 8
5.2. 存款:.... 9
5.2.1 存款(存钱).... 9
5.2.2 删除信息.... 10
5.2.3 修改信息.... 10
5.2.4 查询信息.... 11
5.3. 信息的展示功能:.... 12
5.4. 转账功能:.... 12
5.5. 定期存款功能:.... 13
5.6. 查看日志功能:.... 14
5.7. 活期转定期功能:.... 15
六、 作品测试.... 17
6.1 测试概述.... 17
6.2 测试过程.... 17
6.3测试结果.... 18
七、 设计总结.... 20
八、 参考文献(10个,近5年).... 20
1.1 选题背景
在现代社会中,资金流动十分频繁。不单单是企业、厂商。个人也不例外。一行作为一个金融机构,在现在人们的生活中扮演这极其重要的角色。为生活节奏飞快的现代人提供快速、便捷、高效的理财服务,随着互联网的快速发展,人们对于网上银行的需求日益增多。各大银行的储蓄管理系统也随之出现在这一舞台之上。同时网上银行为用户提供了便捷的金融服务,使得用户无需到银行柜台,即可进行账户查询、转账、理财等操作。在这一背景下,结合实际的操作和设计进行设计。开发一个功能完善、安全可靠的个人网上银行系统具有重要意义
1.2选题意义
开发个人网上银行系统可以实现以下重要意义:
(1)方便用户:用户无需出门,即可进行各种银行业务操作,节省了时间和精力;
(2)提高效率:银行的业务处理流程变得更加高效,减少了人工操作的时间和错误率;
(3)提升用户体验:用户可以自主管理自己的账户,随时随地查看账户信息,提高了用户对银行的满意度;
(4)加强金融安全:采用先进的加密技术和身份验证,保护用户的隐私和资金安全;
(5)促进经济发展:个人网上银行的普及和使用可以促进电子商务和经济发展。
2.1开发环境与工具
IntelliJ IDEA 2022.3.1
MYSQL8.0
Tomcat:10.1.7
Jdk:8
2.2 技术架构
个人网上银行系统的技术架构如下:
前端:使用HTML、CSS、JavaScript、jsp进行网页设计和交互操作;
后端:使用Java Servlet技术处理端请求和服务器响应;
数据库:使用MySQL进行数据存储和管理;
系统架构:遵循MVC(模型-视图-控制器)设计模式,实现系统的解耦和可扩展性。
3.1 设计目标
本个人网上银行系统的设计目标如下:
实现用户登录、注册和身份验证功能;
实现账户管理功能,包括账户查询、交易记录查询、转账操作等;
实现安全保护机制,包括加密传输、用户身份验证和授权;
实现系统性能要求,保证系统稳定、高效运行。
3.2 功能需求
本系统有二个角色,一个普通用户,一个是管理员用户。
基于 Java Web 做一个个人网上银行系统,该系统的功能如下
1:登录功能。用户名和密码错误提示“错误的账号或密码”。
2:退出功能。
3:个人首页。显示当前的登录账号。
4:财富总揽。显示当前账户金额。包括定期和活期余额。
5:交易查询。可以分类查询出转账(转入、转出)信息、定转活、活转定的信息。
6:行内转账。实现单笔转账。
7:存款功能。活转定,定转活的功能。
8:收款人名册。可建立收款人的名册。
9:日志功能:登录人做的每一步操作均要有日志。
10:权限功能:实现管理员和用户权限象对应权限。
3.3性能要求
基于MVC的个人网上银行系统的性能要求包括以下几个方面:
4.1 总体设计
界面设计
➢ 登录首页
图 4.11 登录首页
➢ 主界面
图 4.12 主界面
4.2 详细设计
基于MVC的个人网上银行系统的作品设计可以包括以下方面:
4.3 数据库设计
表1-1 account账户表
字段名称 | 数据类型 | 中文说明 | 其他 |
卡号 (cardID) | varchar | 卡号 | 不能为空 |
状态 (status) | Varchar(32) | 状态 | 默认值为"正常" |
信用额度 (credit) | int | 信用额度 | 默认值为100 |
余额 (balance) | double | 余额 | 不能为空 |
表1-2存款人表
字段名称 | 数据类型 | 中文说明 | 其他 |
ID (id) | int | ID | 自增长 |
用户名 (username) - | Varchar(30) | 登录账号 | 非空 |
密码 (password) - | varchar(20) | 登录密码 | 非空 |
姓名 (name) - | varchar(10) | 不能为空 | |
电话号码 (tel) - | varchar(11) | 不能为空 | |
身份证号 (cardid) - | varchar(255) | 不能为空 | |
PID (pid) | varchar(255) | 不能为空 | |
性别 (gender) | varchar(11) | 不能为空 | |
地址 (address) - | varchar(45) |
表1-3 trade交易记录表
字段名称 | 数据类型 | 中文说明 | 其他 |
卡号 (cardId) - | varchar | 卡号 | 不能为空 |
转账金额 (AmountTransferred) | double | 不能为空 | |
收款方 (payee) - | varchar | 可为空 | |
收款方卡号 (cardIdOfPayee) | varchar | 可为空 | |
备注 (remarks) | varchar | 可为空 | |
转账时间 (transferTime) | datetime | 可为空 |
表1-4 bankAdmin银行管理员表
字段名称 | 数据类型 | 中文说明 | 其他 |
管理员ID (AdminId) - | varchar | 不能为空 | |
管理员密码 (AdminPassword) | Varchar(32) | 不能为空 |
表1-5定期存款表
字段名称 | 数据类型 | 中文说明 | 其他 |
ID (id) | int | ID | 自增长 |
ID (id) - int类型,自增主键 | Varchar(30) | 登录账号 | 非空 |
账户号 (account_number) | varchar(20) | 登录密码 | 非空 |
开始日期 (start_date) | DATE | 不能为空 | |
结束日期 (end_date) | DATE | 不能为空 | |
存款金额 (deposit_amount) | double | 不能为空 | |
存款类型 (deposit_type) | varchar(255) | 不能为空 | |
年利率 (interest_rate) | double | 不能为空 | |
到期金额 (maturity_amount) | double | 不能为空 |
表1-6 log日志记录表
字段名称 | 数据类型 | 中文说明 | 其他 |
日志ID (log_id) | int | 卡号 | 自增主键 |
账户ID (cardID) | Varchar(32) | 不能为空 | |
日志内容 (log_content) | text | 不能为空 | |
日志时间 (log_time) | datetime | 不能为空,默认值为当前时间 |
图1:个人网上银行系统ER图
图2:个人网上银行系统模块图
基于MVC的个人网上银行系统可以实现以下功能:
5.1. 用户登录功能:
- 提供登录界面,要求用户输入用户名和密码。
- 验证用户输入的用户名和密码是否正确,如果正确则登录成功,否则显示登录失败提示。
用户登录功能实现代码:
String sql = "select password from depositor where tel = ?";preparedStatement = connection.prepareStatement(sql);preparedStatement.setString(1,tel);resultSet = uteQuery();while (()) {String checkpassword = String(1);System.out.println("Correct password:" + checkpassword);if(checkpassword.equals(password)){flag = true;}else{System.out.println("Your Password is wrong!!!");}
5.2. 存款:
要求用户输入金额等信息,将信息保存到系统中。
图5.21 添加存款信息界面
添加信息功能实现代码:
String sql = "SELECT balance FROM account WHERE cardID = ?";preparedStatement = connection.prepareStatement(sql);preparedStatement.setString(1, cardId);resultSet = uteQuery();double balance = 0;if (()) {balance = Double("balance");System.out.println("当前余额:" + balance);}if (amount > 0) {double newBalance = balance + amount;sql = "UPDATE account SET balance = ? WHERE cardID = ?";preparedStatement = connection.prepareStatement(sql);preparedStatement.setDouble(1, newBalance);preparedStatement.setString(2, cardId);int rowsAffected = uteUpdate();if (rowsAffected > 0) {success = true;System.out.println("存款成功!");transfer(cardId,amount,"存款", cardId, "存款");}} else {System.out.println("存款金额必须大于0!");}
要求用户选择要删除的的,从系统中删除该信息。
图5.22 删除信息界面
删除信息功能实现代码:
String sql = "DELETE FROM FixedDeposit WHERE account_number=? and id=?";try (Connection connection = JDBCTools.getConnection();PreparedStatement preparedStatement = connection.prepareStatement(sql)) {preparedStatement.setString(1, cardID);preparedStatement.setInt(2, id);int rowsAffected = uteUpdate();if (rowsAffected > 0) {success = true;}
}
图 5.23 修改信息功能界面
修改信息功能实现代码:
public boolean changeCustomerBaseInfo(int id, String name, String gender, int age, String phone, String email) {String sql = "update t_customer set name = ?, gender = ?, age = ?, phone= ?, email= ? where id = ?";Customer customer = findCustomer(id, name);if () {XXXX = XXXX();}boolean flag = JdbcUtil.executeUpdate(sql,name,gender,age,phone,email,id);return flag;}
查询信息功能实现代码:
public Customer findCustomerById(int id) {String sql = "select * from t_customer where id = ?";Customer customer = null;List<Map<String, Object>> list = JdbcUtil.executeQuery(sql, id);for (Map<String, Object> map : list) {customer = new Customer((int) ("id"), (String) ("name"),(String) ("gender"), (int) ("age"), (String) ("phone"),(String) ("email"));}return customer;}
5.3. 信息的展示功能:
- 显示信息列表:将系统中的信息以表格或列表的形式展示给用户,包括姓名、联系方式、地址等信息。
图 5.31 显示信息列表界面
信息的展示功能实现代码:
public List<Customer> findCustomerList() {String sql="select *from t_customer";List<Customer> listcustomer=new ArrayList<>();List<Map<String,Object>>list=JdbcUtil.executeQuery(sql);for (Map<String, Object> map : list) {Customer customer= new Customer((int) ("id"), (String) ("name"),(String) ("gender"), (int) ("age"), (String) ("phone"),(String) ("email"));listcustomer.add(customer);}return listcustomer;}
5.4. 转账功能:
- 输入金额,收款人,账户,进行行内转账。
图 5.41 行内转账界面
行内转账实现代码:
String sql = "select balance from account where cardID = ?";preparedStatement = connection.prepareStatement(sql);preparedStatement.setString(1,cardId);resultSet = uteQuery();()){balance = Double(1);System.out.println("转账人余额:"+ balance);}if(money <= balance && money > 0){double sum = balance - money;sql = " update account set balance = ? where cardID = ?";preparedStatement = connection.prepareStatement(sql);preparedStatement.setDouble(1,sum);preparedStatement.setString(2,cardId);uteUpdate();flag = true;System.out.println("转账成功!");}else{System.out.println("转账失败!");}
5.5. 定期存款功能:
- 对用户输入的金额,开始时间,还有选择的存款时间,自动计算年利率,本金和利息
图5.51 定期存款界面
定期存款实现代码:
String sql = "INSERT INTO FixedDeposit (account_number, start_date, end_date, deposit_amount, deposit_type, interest_rate, maturity_amount) VALUES (?, ?, ?, ?, ?, ?, ?)";try (Connection connection = JDBCTools.getConnection();PreparedStatement preparedStatement = connection.prepareStatement(sql)) {preparedStatement.setString(1, ardID());preparedStatement.setDate(2, new java.sql.StartDate().getTime()));preparedStatement.setDate(3, new java.sql.EndDate().getTime()));preparedStatement.setDouble(4, DepositAmount());preparedStatement.setString(5, DepositType());preparedStatement.setDouble(6, InterestRate());preparedStatement.setDouble(7, MaturityAmount());
5.6. 查看日志功能:
- 提供菜单选项供用户选择不同的功能模块,用户通过输入对应的菜单编号或操作符来进行导航。
图5.61 查看日志界面
查看日志实现代码:
List<Log> logs = new ArrayList<>();String sql = "SELECT * FROM log WHERE cardID = ? ORDER BY log_time DESC";try (Connection connection = JDBCTools.getConnection();PreparedStatement preparedStatement = connection.prepareStatement(sql)) {preparedStatement.setString(1, cardID);ResultSet resultSet = uteQuery();while (()) {int log_id = Int("log_id");String log_content = String("log_content");Timestamp log_time = Timestamp("log_time");Log log = new Log(log_id, cardID, log_content, new Timestamp(Time()));logs.add(log);}
5.7. 活期转定期功能:
- 用户可以查看活期与定期的记录,取款,删除记录,还能进行活期与定期的转换
图5.61 活期转定期界面
活期转定期实现代码:
private void updateFixedDeposit(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {int id = Integer.parseInt(Parameter("id"));String cardID = Parameter("cardID");double depositAmount = Double.parseDouble(Parameter("depositAmount"));double interestRate = Double.parseDouble(Parameter("interestRate"));// 计算时间差(单位为天数)// 获取请求参数中的开始日期LocalDate startDate = LocalDate.parse(Parameter("startDate"));// 获取当前日期LocalDate endDate = LocalDate.now();// 计算时间差(单位为天数)long timeDiff = ChronoUnit.DAYS.between(startDate, endDate);// 计算本息+利息的值double maturityAmount = depositAmount + depositAmount * interestRate * timeDiff;transferDepository.deposit(cardID,maturityAmount);if ( fixedDepositService.deleteFixedDeposit(id,cardID)) {diaryDao.insertDiary(cardID,"定期或活期存款转出成功");RequestDispatcher("/WEB-INF/Pages/transfersuccess.jsp").forward(request,response);} else {// Add error handling code here}}
以上是基于MVC的个人网上银行系统的功能实现的基本设计。
6.1 测试概述
该个人网上银行系统是基于MVC的应用程序,用于管理信息。测试的目的是验证系统的功能是否符合预期,包括登录、注册、添加、修改、删除、查询等操作。
6.2 测试过程
6.3测试结果
登录测试结果:登录成功、登录失败等。
图6.31 登录测试结果
图6.32 注册测试结果
图6.35 删除测试结果
图6.36 查询列表
图6.38 管理个人信息测试结果
基于MVC的个人网上银行系统是一个简单而实用的系统,可以帮助用户管理信息。通过在MVC上提供各种功能,用户可以方便地进行信息的增删改查操作。系统具有良好的用户界面和交互体验,能够满足用户对信息管理的基本需求。同时,系统还具备数据持久化和数据校验等功能,确保数据的安全性和准确性。通过系统的设计和实现,可以提高信息管理的效率和便捷性。
1. "Java编程思想"(第4版) - Bruce Eckel (2021)
2. "Java核心技术 卷I"(第10版) - Cay S. Horstmann (2021)
3. "数据结构与算法分析Java语言描述"(第2版) - Mark Allen Weiss (2019)
4. "Java程序设计(基础篇)" - 清华大学计算机系列教材 (2018)
5. "Java编程精解" - Robert Sedgewick、Kevin Wayne (2018)
6. "Java编程实战"(第2版) - Joshua Bloch (2018)
7. "Java并发编程实战" - Brian Goetz等 (2017)
8. "Effective Java"(第3版) - Joshua Bloch (2017)
9. "Java网络编程"(第4版) - Elliotte Rusty Harold (2017)
10. "Java 9编程入门" - Peter Verhas (2016)
本文发布于:2024-01-31 01:07:41,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170663446824238.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |