系列文章目录
第一章 基础知识、数据类型学习
第二章 万年历项目
第三章 代码逻辑训练习题
第四章 方法、数组学习
第五章 图书管理系统项目
第六章 面向对象编程:封装、继承、多态学习
第七章 封装继承多态习题
第八章 常用类、包装类、异常处理机制学习
第九章 集合学习
第十章 IO流、多线程学习
第十一章 仓库管理系统项目
第十二章 员工管理系统、多表查询、反射实现DBHelper学习
第十三章 DML、DDL、数据库对象学习
第十四章 网络编程、各种标签、CSS学习
第十五章 ECMAScript、BOM学习
第十六章 DOM、jQuery学习
第十七章 Servlet、jsp、Cookie、Ajax学习
第十八章 融资管理系统项目
文章目录
- 系列文章目录
- 前言
- 一、项目需求
- 1. 项目背景
- 2. 功能描述
- 1. 登录
- 2. 凭证管理
- 2.1 融资列表
- 2.2 融资详情
- 3. 我的凭证
- 3.1 凭证列表
- 3.2 凭证详情
- 3.3 融资
- 3.3.1 凭证基本信息
- 3.3.2 融资业务信息
- 3.3.3 金融机构信息
- 3.3.4 提交
- 3. 数据库表
- 二、项目分析
- 三、项目分析
- 1. 查询难点分析
- 2. 融资难点分析
- 3. 分页难点分析
- 总结
前言
本文我们将介绍这两天做的融资管理系统项目,是管理凭证(类似支票
)和融资(从凭证里取钱),主要用到的技术包括
1、Java的三层架构
2、ajax异步发送
3、JavaScript页面编码技术
4、css技术
5、jdbc技术
融资管理系统
通过百度网盘分享的文件:小组项目2.zip
链接:https://pan.baidu.com/s/1y0yujuEquC7CfdoqfpBcgw?pwd=0803
提取码:0803
消失了好多天,我去‱∮∑⋙星吃鸭货来着,我吃了很多麻辣的鸭肠、鸭肚、鸭翅、鸭头、鸭锁骨,好好吃!
一、项目需求
1. 项目背景
电子债权凭证作为一种金融工具,可看做企业中的一种流动资产,其本质与应收账款相似。电子债权凭证是卖方企业与买方企业兑现现金的重要凭证。由于现阶段信息技术的快速发展,基于区块链的电子债权凭证越来越得到各个金融机构的认可,卖方企业可依托手中的电子债权凭证向金融机构申请融资,以解决自身现金流的问题。
2. 功能描述
1. 登录
输入账号和密码登录
2. 凭证管理
2.1 融资列表
展示当前登录企业发起融资的记录。
注意: 凭证金额一般比较大,所以按照融资金额查询时单位是万元。
2.2 融资详情
回显融资申请的详细信息。
注意:
1.预计到账日期后面的剩余10天代表当前日期和预计到账日期之间的差值,与申请日期没有关系。
例如:预计到账日期是2022年4月28日,今天是2022年4月18日,那么显示剩余10天。
2.凭证编号是融资时选择的凭证的编号。
3. 我的凭证
3.1 凭证列表
展示当前登录企业所拥有的凭证。
注意:
1.凭证编号是模糊查询。
2.凭证金额一般比较大,所以查询时单位是万元。
3.凭证状态是未融资时操作中才有融资。
3.2 凭证详情
凭证详情查询我的凭证表数据。
注意: 到期日期后面的剩余10天代表当前日期和到期日期之间的差值,与开单日期没有关系。
3.3 融资
凭证融资页面包含三部分内容,凭证基本信息.融资业务信息和金融机构信息。
3.3.1 凭证基本信息
从我的凭证表中查询基本信息,回显到页面中,到期日期后的剩余时间的计算规则同上。
3.3.2 融资业务信息
融资金额可以自由填写,也可以点击全部融资,全部融资就是把当前凭证的所有金额进行融资,即凭证基本信息的凭证金额填入融资金额中。
注意:
1.剩余凭证金额 : 凭证金额 . 融资金额
2.融资金额只能输入数字,且不能大于凭证金额,做好校验。
3.3.3 金融机构信息
查询金融机构表数据,将金融机构展示到金融机构信息的列表中。
注意:
1.预计到账 : 融资金额 . 融资成本
2.融资成本 : 融资金额 * 融资利率(利息)
3.融资金额在融资业务信息中获取,要根据填入的数据动态变化,这也意味着预计到账和融资成本的数据也会随着融资金额的修改而同步变化。
3.3.4 提交
点击提交后,要在融资表添加一条记录,并修改我的凭证表数据状态为已融资。
注意:
1、如果融资金额和凭证金额相同,那么只需要修改凭证数据的凭证状态即可。
2、如果融资金额小于凭证金额,那么除了要修改原凭证的凭证状态外,还要在我的凭证表中添加一条新的记录,用于保存剩余金额的数据,其他字段规则如下:
(1)凭证编号需要重新生成;
(2)凭证来源为融资留存;
(3)开单企业、所属企业、金融机构、开单日期、到期日期和付息方式为原凭证数据;
(4)来源凭证id为原凭证id。
3、新凭证编号生成规则:R+yyyyMMdd+序列号,序列化长度6位,编号总长度15位。
例如:今天是2022年10月1日,今天开具的第一个凭证编号为:R20221001000001
4、上链地址随机生成一个16位的字符串即可。
3. 数据库表
- 用户表(user)
- 企业表(enterprise)
- 金融机构表(instituty)
- 我的凭证表(voucher)
- 融资表(financing)
二、项目分析
项目可以分为六个功能:
1、登录:跳转到融资列表页,显示登录用户所属企业的全部融资信息
2、融资列表:显示所有符合条件的融资信息(转到融资详情)
3、融资详情:显示他的全部信息
4、凭证列表:显示所有符合条件的凭证信息(转到凭证详情、融资)
5、凭证详情:显示他的全部信息(与)
6、融资:从凭证中取钱,添加一条融资信息
三、项目分析
1. 查询难点分析
查询时,需要获取所有输入的查询条件,然后实时更新。如何实现实时更新这一效果呢?
首先我们定义变量获取所有在上方查询条件获取到值
var enterprise_id = null;
var buttonName = null;
var no = null;
var instituty_id = null;
var amount_low = null;
var amount_high = null;
var create_time = null;
var status = null;
其次我们定义一个方法,每次点击包裹查询条件的div控件都会进行一次向servlet层传值进行查询
$(document).on("click", "#clickPlace", function () {
financeCondition();
$.get("financing/queryByFinancingCondition", {
"enterprise_id":enterprise_id,
"no": no,
"instituty_id": instituty_id,
"amount_low": amount_low,
"amount_high": amount_high,
"create_time": create_time,
"status": status
}, function (pageHelper) {
JSON.stringify(pageHelper);
forFinancing(pageHelper.list);
showButton(pageHelper);
});
});
我们在servlet层添加此方法进行查询并返回结果
public void queryByFinancingCondition(HttpServletRequest request, HttpServletResponse response){
String enterprise_id = request.getParameter("enterprise_id");
String no = request.getParameter("no");
String instituty_id =request.getParameter("instituty_id");
String amount_low = request.getParameter("amount_low");
String amount_high =request.getParameter("amount_high");
String create_time = request.getParameter("create_time");
String status = request.getParameter("status");
String whichPage = request.getParameter("whichPage");
FinancingCondition financingCondition = new FinancingCondition();
if (enterprise_id != null && enterprise_id != "")
financingCondition.setInstituty_id(Integer.parseInt(enterprise_id));
if (no != null && no != "")
financingCondition.setNo(no);
if(instituty_id != null && instituty_id != "")
financingCondition.setInstituty_id(Integer.parseInt(instituty_id));
if (amount_low != null && amount_low != ""){
financingCondition.setAmount_low(Double.parseDouble(amount_low));
financingCondition.setAmount_low(financingCondition.getAmount_low() * 10000);
}
if (amount_high != null && amount_high != ""){
financingCondition.setAmount_high(Double.parseDouble(amount_high));
financingCondition.setAmount_high(financingCondition.getAmount_high() * 10000);
}
if (create_time != null && create_time != "")
financingCondition.setCreate_time(create_time);
if (status != null && status != ""){
if (status.equals("0"));
if (status.equals("1"))
financingCondition.setStatus("成功");
if (status.equals("2"))
financingCondition.setStatus("融资中");
if (status.equals("3"))
financingCondition.setStatus("失败");
}
// System.out.println("servlet层内"+no + ":" + instituty_id + ":" + amount_low + ":" + amount_high + ":" + create_time + ":" + status);
PageHelper pageHelper = new PageHelper();
if (whichPage != null)
pageHelper.setWhichPage(Integer.parseInt(whichPage));
pageHelper.setAllNum(financingService.selectFinancingCount(financingCondition));
ArrayList<FinancingAndInstituty> financingAndInstituties = financingService.selectFinancingList(financingCondition, pageHelper);
pageHelper.setList(financingAndInstituties);
Gson gson = new Gson();
try {
response.getWriter().println(gson.toJson(pageHelper));
} catch (IOException e) {
e.printStackTrace();
}
}
2. 融资难点分析
每次点击金融机构,此凭证信息应随之更改,但本页面无法更改,所以加一个reload函数重新加载本页面
$("#doc-modal-list").on("click", "tr", function () {
location.reload(true);
var thisId = $(this).attr("id");
$.get("financing/updateVoucher", {
"Vid":$("[name='hiddentxt']").val(),
"Iid":thisId
});
});
3. 分页难点分析
总结
没啥好说的了,放段网盘链接吧
融资管理系统