本文主要是介绍java+mysql+mvc家庭理财管理系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
JavaWeb项目:java+mysql+mvc家庭理财管理系统
此项目为本人的Java大作业。
前台代码;代码已经上传到github上 下载地址Github
一、项目概况
1.1设计内容
一个家庭理财管理系统,家庭理财管理系统,主要包括消费管理模块、收入管理模块、统计汇总模块及理财规划模块等。每个主模块下又分为几个子模块。具体功能描述如下:
着装消费着装消费模块完成家庭成员的衣服、鞋、帽消费记录的功能,主要包括购买物品名称、购买时间、数量、价格,购买者及备注等。完成对着装消费信息的添加与删除的操作。食品消费食品消费模块记录着家庭日常常饮食消费情况,完成对食品消费信息的添加与删除的操作。包括的信息有购买的食品的名称、购买时间、购买数量、价格,备注等。家居消费家居消费记录着家居日杂等消费的功能,完成对家居消费信息的添加与删除的操作。包括的信息有购买物品的名称、购买的时间、数量、价格、备注等。行车消费此系统开发期间我们小组不定时地进行用户使用反馈信息收集,根据收集数据不断对系统进行优化、完善。目的是希望从使用者的角度查找系统的缺陷之处,继而使得整个系统的运行、结构更加清晰化、条理化、自动化。
1.2开发工具
Eclipse或者Myeclipse,Java,MySQL,Redis,Html,CSS,JS。
二、详细设计
2.1网站结构
代码已经上传github,下载地址:Github
开发环境:
Eclipse ,MYSQL,JDK1.8,Tomcat 7
涉及技术点:
MVC模式、SpringMvc、Mybatis、Spring、bootstrap、HTML、JavaScript、CSS、JQUERY、log4j、Ajax、maven等
系统采用Mybatis框架实现ORM对象关系映射,前台JSP实现,后台springMvc映射,使用Spring框架进行整合。适合学习J2EE的一段时间的熟手,代码思路清晰,注解详细,数据库用的是mysql5.1,服务器用的tomcat7,JDK版本1.8. 编程软件Eclispe J2EE版本。是典型MVC架构,并且前后台分离
该系统的功能模块图如下所示:
图4-1系统功能模块图
4.2.2 系统功能模块描述
家庭理财管理系统,主要包括消费管理模块、收入管理模块、统计汇总模块及理财规划模块等。每个主模块下又分为几个子模块。具体功能描述如下:
一、消费管理
消费管理模块记录着家庭消费的相关信息,由四个子模块构成:着装消费、食品消费、家居消费、行车消费。
1.着装消费
着装消费模块完成家庭成员的衣服、鞋、帽消费记录的功能,主要包括购买物品名称、购买时间、数量、价格,购买者及备注等。完成对着装消费信息的添加与删除的操作。
2.食品消费
食品消费模块记录着家庭日常常饮食消费情况,完成对食品消费信息的添加与删除的操作。包括的信息有购买的食品的名称、购买时间、购买数量、价格,备注等。
3.家居消费
家居消费记录着家居日杂等消费的功能,完成对家居消费信息的添加与删除的操作。包括的信息有购买物品的名称、购买的时间、数量、价格、备注等。
4.行车消费
记录家庭汽车支出的信息,完成对汽车消费信息的添加与删除的操作。主要包括支出时间,支出价格,信息描述等。
二、收入管理
收入管理主要完成对家庭收入信息的管理与维护操作。
1. 增加收入
增加收入模块完成对收入信息的添加的功能,包括的内容主要有日期、收入金额、收入类型、备注等。
2. 收入记录管理
收入记录管理模块主要完成对收入记录的管理与维护的操作。
三、统计汇总
统计汇总模块完成对消费信息的统计操作,主要包括当日汇总、月份汇总、年度汇总。
1. 当日汇总
当日汇总模块主要完成对某日消费信息的汇总操作,包括汇总当日的着装消费金额、食品消费金额、家居消费金额、行车消费金额,及总的金额等。
2. 当月汇总
当月汇总模块用于汇总某个自然月的消费支出情况。
3. 当年汇总
当年汇总模块用于汇总某个年度的消费支出信息。
四、理财规划
理财规划模块主要收集一些理财规划的知识,包括家庭财务健康诊断,购房规划,寿险规划,购车规划等。
图5-2系统登录管理模块
5.4.2 着装消费管理模块
着装消费管理模块完成家庭成员的着装消费信息的添加或删除的操作,用户可以添加着装消费信息,也可以删除着装消费信息,着装消费管理模块对应的页面为yifuxiaofeimama.action。着装消费管理模块界面的设计如图5-3所示:
图5-3着装消费页面
在着装消费管理页面中,用户可以添加着装消费的信息,点击添加按钮输入相应的信息,完成着装消费信息的添加功能。着装消费信息的添加界面如图5-4所示:
图5-4 着装消费添加界面
5.4.3 食品消费管理模块
食口消费管理模块完成家庭饮食消费的记录功能,用户可以添加食品消费信息,也可以删除食品消费信息,食品消费管理模块对应的页面文件为shipinxiaofeimama.action。食品消费界面设计如图5-5所示:
图5-5 食品消费界面
食品消费添加
5.4.4 家居消费管理模块
家居消费管理模块用于记录家居日常消费的功能,用户可以添加家居消费信息,也可以对家居消费记录进行删除操作,家居消费信息包括购买物品的名称,数量,价格,购买时间及说明等。家居消费管理模块对应的磁盘文件为jiajuxiaofeimama.action,家居消费界面设计如图5-6所示:
图5-6 家居消费界面
5.4.5 行车消费管理模块
行车消费管理模块完成对行车消费信息的添加、删除等操作,行车消费管理主要包括支出金额,日期,及说明等。行车消费管理模块对应的磁盘文件xiexiaofeimama.action,行车消费管理模块界面设计如图5-7所示:
图5-7行车消费模块界面
5.4.6 增加收入管理模块
增加收入管理模块,完成收入信息的添加功能,在添加收入信息时,输入收入日期,收入金额,类别及说明等进行添加。增加收入管理模块的页面设计如图shouruadd.jsp,增加收入面设计如图5-8所示:
图5-8增加收入窗口界面
5.4.7 收入管理模块
收入管理模块主要完成对收入信息的查看与维护操作,用户可以查看收入信息,也可以对收信息进行删除的操作,收入管理模块对应的磁盘为shourumama.action,收入管理模块对应的界面设计如图5-9所示:
图5-9收入管理界面
5.4.8 当日汇总模块
当日汇总模块用于统计某天的支出消费信息,分类汇总着装消费、食品消费、家居消费、行车消费等分项的和及消费总额,当日汇总模块对应的页面文件为Huizongdangri.action,当日汇总模块的页面设计如图5-10所示:
图5-9当日汇总界面
5.4.9 当月汇总模块
当月汇总模块完成按月份分类汇总的功能,用于统计某个自然月中各项费用的支出汇总及总支出情况,当月汇总模块对应的磁盘文件为Huizongyuefen.action,当月汇总模块的代码设计如图5-11所示:
图5-11月份汇总界面
5.4.10 年份汇总
年份汇总模块统计某年的着装消费合计、食品消费合计、家居消费合计、行车消费合计等功能,年份汇总模块对应的磁盘文件为Huizongnianfen.action。年份汇总模块的设计如图5-12所示:
图5-12年份汇总界面
5.4.11 理财规划模块
理财规划模块主要收集了一些理财规划的知识,主要包括家庭财务健身诊断、购房规划、寿险规划、购车规划等,理财规划模块对应的磁盘文件为Licaiguihua\case.jsp。理财规划模块的页面设计如图5-13所示:
图5-13理财规划界面
package com.linxf.ticketsale.controller;
import com.linxf.ticketsale.pojo.Order;
import com.linxf.ticketsale.pojo.Passenger;
import com.linxf.ticketsale.pojo.Train;
import com.linxf.ticketsale.pojo.User;
import com.linxf.ticketsale.service.OrderService;
import com.linxf.ticketsale.service.UserService;
import com.linxf.ticketsale.util.JedisUtil;
import com.linxf.ticketsale.util.TimeUtil;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@Controller
@RequestMapping("/orderController")
public class OrderController {
private static final Logger LOG = Logger.getLogger(UserController.class);
@Resource
private OrderService orderService;
@Resource
private UserService userService;
// 根据订单号查看订单详情
@RequestMapping("/toOrderShow.action")
public ModelAndView toOrderShow(int oid) {
ModelAndView modelAndView = new ModelAndView();
Order order = null;
try {
if (oid != 0) {
order = orderService.findOrderByOid(oid);
}
} catch (Exception e) {
LOG.info("orderController.toOrderShow e:" + e);
e.printStackTrace();
}
modelAndView.addObject("order", order);
modelAndView.setViewName("WEB-INF/jsp/main/orderShow.jsp");
return modelAndView;
}
/*
* 支付成功,订单状态为已支付,并跳转到订单列表页面
*/
@RequestMapping("/toPay.action")
public String toPay() {
try {
Order order = JedisUtil.get("order");// 从缓存中取
if (order != null) {// 缓存中有
orderService.OtypeToPay(order.getOid());// 改变订单状态为已支付
}
} catch (Exception e) {
LOG.info("orderController.toPay e:" + e);
e.printStackTrace();
}
return "WEB-INF/jsp/main/payUi.jsp";
}
/*
* 从订单列表中出票,并刷新订单列表页面
*/
@RequestMapping("/listToTake.action")
public ModelAndView listToTake(int oid) {
ModelAndView modelAndView = new ModelAndView();
try {
orderService.OtypeToPost(oid);// 改变订单状态为已支付
} catch (Exception e) {
LOG.info("orderController.listToPay e:" + e);
e.printStackTrace();
}
modelAndView.setViewName("forward:orderListUi.action");
return modelAndView;
}
/*
* 从订单列表中支付支付,并跳转到订单列表页面
*/
@RequestMapping("/listToPay.action")
public String listToPay(int oid) {
try {
orderService.OtypeToPay(oid);// 改变订单状态为已支付
} catch (Exception e) {
LOG.info("orderController.listToTake e:" + e);
e.printStackTrace();
}
return "WEB-INF/jsp/main/payUi.jsp";
}
/*
* 确认订单,并跳转到支付页面
*/
@RequestMapping("/sureOrder.action")
public ModelAndView sureOrder(Order order) {
ModelAndView modelAndView = new ModelAndView();
String m = "s" + order.getCreateTime();
double money = Double.parseDouble(m.split("¥")[1]);
order.setMoney(money); // 订单总价
order.setCreateTime(TimeUtil.getTime());// 订单创建时间
// 根据乘客id查询乘客信息
Passenger passenger = null;
int oid = 0;
try {
passenger = userService.findByid(order.getPid());
orderService.addOrder(order); // 添加订单
oid = order.getOid();
} catch (Exception e) {
e.printStackTrace();
}
order.setPassenger(passenger);
order.setOid(oid);
// 将订单信息存入缓存
Order order0 = JedisUtil.get("order");
if (order0 == null) {// 缓存中没有
JedisUtil.put("order", order);
} else {// 缓存中有
JedisUtil.remove("order");
JedisUtil.put("order", order);
}
modelAndView.addObject("order", order);
modelAndView.setViewName("WEB-INF/jsp/main/sureOrder.jsp");
return modelAndView;
}
/*
* 跳转到订单列表页面
*/
@RequestMapping("/orderListUi.action")
public String orderListUi(HttpServletRequest request) {
User user = (User) request.getSession().getAttribute("loginUser");
List<Order> list = null;
Passenger passenger = null;
try {
list = orderService.findAllOrderByUid(user.getUid());
if (list != null) {
for (Order order2 : list) {
int pid = order2.getPid();
passenger = orderService.findNameByUid(pid);
order2.setPassenger(passenger);
// 将订单信息存入缓存
Order order0 = JedisUtil.get("order-" + user.getUid() + order2.getOid());
if (order0 == null) {// 缓存中没有
JedisUtil.put("order-" + user.getUid() + order2.getOid(), order2);
} else {// 缓存中有
JedisUtil.remove("order-" + user.getUid() + order2.getOid());
JedisUtil.put("order-" + user.getUid() + "-" + order2.getOid(), order2);
}
}
}
request.setAttribute("orderList", list);
} catch (Exception e) {
LOG.info("orderController.orderListUi e:" + e);
}
return "WEB-INF/jsp/main/orderList.jsp";
}
/*
* 根据订单状态查询订单,异步加载
*/
@RequestMapping("/findOrderByOtype.action")
@ResponseBody
public List<Order> findOrderByOtype(int otype, HttpSession session) {
User user = (User) session.getAttribute("loginUser");
List<Order> orders = new ArrayList<>();
try {
orders = orderService.findOrderByOtype(otype);
if (orders != null) {
Iterator<Order> it = orders.iterator();
while (it.hasNext()) {
Order orderTemp = it.next();
// 从缓存中获取
Order order0 = JedisUtil.get("order-" + user.getUid() + "-" + orderTemp.getOid());
if (order0 == null) {// 缓存中没有
it.remove();
}
}
}
} catch (Exception e) {
LOG.info("orderController.findOrderByOtype e:" + e);
}
return orders;
}
/*
* 取消订票
*/
@RequestMapping("/deleteOrder")
@ResponseBody
public ModelAndView deleteOrder(int oid) {
ModelAndView modelAndView = new ModelAndView();
try {
orderService.deleteOrderByOid(oid);
modelAndView.addObject("msg", "取消订单成功!");
} catch (Exception e) {
LOG.info("orderController.deleteOrder e:" + e);
}
modelAndView.setViewName("forward:orderListUi.action");
return modelAndView;
}
// 跳转到订单详情页--用户购票下单
@RequestMapping("/toOrderInfo.action")
public ModelAndView toOrderInfo(String tid, String sname1, String sname2, int type, String startDay) {
ModelAndView modelAndView = new ModelAndView();
Train train = null;
if (type == 1) {// 直达车
List<Train> trainList = JedisUtil.get(sname1 + "-" + sname2 + "直达");// 从缓存中获取车辆信息
if (trainList != null) {
for (Train traint : trainList) {
if (tid.equals(traint.getTid())) {
train = traint;
break;
}
}
}
} else if (type == 2) {// 换乘
// 从缓存中获取车辆信息
List<Map<String, Object>> listMap = JedisUtil.get(sname1 + "-" + sname2 + "换乘");
if (listMap != null) {
for (Map<String, Object> map : listMap) {
String saname = (String) map.get("changeState");
Train train1 = (Train) map.get("train1");
Train train2 = (Train) map.get("train2");
if (tid.equals(train1.getTid())) {// 买train1的票
train = train1;
sname2 = saname;
break;
} else if (tid.equals(train2.getTid())) {// 买train2的票
train = train2;
sname1 = saname;
break;
}
}
}
} else {
modelAndView.setViewName("forword:404");
return modelAndView;
}
modelAndView.addObject("train", train);
modelAndView.addObject("sname1", sname1);
modelAndView.addObject("sname2", sname2);
modelAndView.addObject("startDay", startDay);
modelAndView.setViewName("WEB-INF/jsp/main/orderInfo.jsp");
return modelAndView;
}
}
这篇关于java+mysql+mvc家庭理财管理系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!