• 【计算机毕业设计】基于SpringBoot+Vue记帐理财系统的设计与实现


    博主主页:一季春秋
    博主简介:专注Java技术领域和毕业设计项目实战、Java、微信小程序、安卓等技术开发,远程调试部署、代码讲解、文档指导、ppt制作等技术指导。
    主要内容:毕业设计(Java项目、小程序、安卓等)、简历模板、学习资料、技术咨询。

    精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

    SpringBoot+Vue项目持续更新中

    http://t.csdn.cn/1mgm8

    🍅文末获取联系🍅

    目录

    一、项目介绍 

    二、项目主要技术 

    三、系统功能描述

    3.1 系统功能结构

    四、系统实现

    4.1 系统前台用户功能实现

    4.2 后台管理员模块实现

    4.3 后台用户模块实现

    五、实现代码

    5.1 协同算法关键代码

    5.2 支出记账关键代码


    一、项目介绍 

    记帐理财系统采用B/S模式、后端采用JAVA语言、SpringBoot作为开发框架,同时集成MyBatis、Redis等相关技术、数据库使用的是mysql数据库、前台使用的是Vue技术。

    二、项目主要技术 

    1. 开发语言:Java
    2. 使用框架:spring boot
    3. 前端技术:JavaScript、Vue 、css3
    4. 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
    5. 数据库:MySQL 5.7/8.0
    6. 数据库管理工具:phpstudy/Navicat
    7. JDK版本:jdk1.8
    8. Maven: apache-maven 3.8.1-bin

    三、系统功能描述

    (1)登陆注册(用户账号,密码,再次确认密码,手机号)
    (2)用户注销功能,用户能注销,管理员不需要注销功能
    (3)用户个人信息修改删除(头像,性别,账号,密码,手机号,地址)
    (4)新闻页面供用户浏览新闻内容由管理员添加、修改、册除,作为新闻发布和推荐管理两部分
    (5)收入、支出类型的添加修改删除收入、支出的添加修改删除,收入、支出分别用Echarts出统计图,根据用户记录收支时的收益类别看出类别占比
    (6)浏览理财信息用户入口可以进行理财产品购买
    (7)理财订单,用户查看已购买的理财产品管理,用户可以终止理财审核,管理员对理财产品能添加、修改、册除

    3.1 系统功能结构

    四、系统实现

    4.1 系统前台用户功能实现

    系统首页

    理财产品

    理财产品详情

    4.2 后台管理员模块实现

    系统首页

    理财产品管理

    理财订单管理

    支出记账管理

    系统管理

    4.3 后台用户模块实现

    理财订单管理

    收入记账管理

    五、实现代码

    5.1 协同算法关键代码

    1. /**
    2. * 协同算法(按收藏推荐)
    3. */
    4. @RequestMapping("/autoSort2")
    5. public R autoSort2(@RequestParam Map params,ChanpinxinxiEntity chanpinxinxi, HttpServletRequest request){
    6. String userId = request.getSession().getAttribute("userId").toString();
    7. String inteltypeColumn = "chanpinfenlei";
    8. List storeups = storeupService.selectList(new EntityWrapper().eq("type", 1).eq("userid", userId).eq("tablename", "chanpinxinxi").orderBy("addtime", false));
    9. List inteltypes = new ArrayList();
    10. Integer limit = params.get("limit")==null?10:Integer.parseInt(params.get("limit").toString());
    11. List chanpinxinxiList = new ArrayList();
    12. //去重
    13. if(storeups!=null && storeups.size()>0) {
    14. for(StoreupEntity s : storeups) {
    15. chanpinxinxiList.addAll(chanpinxinxiService.selectList(new EntityWrapper().eq(inteltypeColumn, s.getInteltype())));
    16. }
    17. }
    18. EntityWrapper ew = new EntityWrapper();
    19. params.put("sort", "id");
    20. params.put("order", "desc");
    21. PageUtils page = chanpinxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, chanpinxinxi), params), params));
    22. List pageList = (List)page.getList();
    23. if(chanpinxinxiList.size()
    24. int toAddNum = (limit-chanpinxinxiList.size())<=pageList.size()?(limit-chanpinxinxiList.size()):pageList.size();
    25. for(ChanpinxinxiEntity o1 : pageList) {
    26. boolean addFlag = true;
    27. for(ChanpinxinxiEntity o2 : chanpinxinxiList) {
    28. if(o1.getId().intValue()==o2.getId().intValue()) {
    29. addFlag = false;
    30. break;
    31. }
    32. }
    33. if(addFlag) {
    34. chanpinxinxiList.add(o1);
    35. if(--toAddNum==0) break;
    36. }
    37. }
    38. } else if(chanpinxinxiList.size()>limit) {
    39. chanpinxinxiList = chanpinxinxiList.subList(0, limit);
    40. }
    41. page.setList(chanpinxinxiList);
    42. return R.ok().put("data", page);
    43. }
    44. }

    5.2 支出记账关键代码

    1. /**
    2. * 支出记账
    3. * 后端接口
    4. * @author
    5. * @email
    6. * @date 2023-05-12 22:58:08
    7. */
    8. @RestController
    9. @RequestMapping("/zhichujizhang")
    10. public class ZhichujizhangController {
    11. @Autowired
    12. private ZhichujizhangService zhichujizhangService;
    13. /**
    14. * 后端列表
    15. */
    16. @RequestMapping("/page")
    17. public R page(@RequestParam Map params,ZhichujizhangEntity zhichujizhang,
    18. HttpServletRequest request){
    19. String tableName = request.getSession().getAttribute("tableName").toString();
    20. if(tableName.equals("yonghu")) {
    21. zhichujizhang.setYonghuzhanghao((String)request.getSession().getAttribute("username"));
    22. }
    23. EntityWrapper ew = new EntityWrapper();
    24. PageUtils page = zhichujizhangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zhichujizhang), params), params));
    25. return R.ok().put("data", page);
    26. }
    27. /**
    28. * 前端列表
    29. */
    30. @IgnoreAuth
    31. @RequestMapping("/list")
    32. public R list(@RequestParam Map params,ZhichujizhangEntity zhichujizhang,
    33. HttpServletRequest request){
    34. EntityWrapper ew = new EntityWrapper();
    35. PageUtils page = zhichujizhangService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zhichujizhang), params), params));
    36. return R.ok().put("data", page);
    37. }
    38. /**
    39. * 列表
    40. */
    41. @RequestMapping("/lists")
    42. public R list( ZhichujizhangEntity zhichujizhang){
    43. EntityWrapper ew = new EntityWrapper();
    44. ew.allEq(MPUtil.allEQMapPre( zhichujizhang, "zhichujizhang"));
    45. return R.ok().put("data", zhichujizhangService.selectListView(ew));
    46. }
    47. /**
    48. * 查询
    49. */
    50. @RequestMapping("/query")
    51. public R query(ZhichujizhangEntity zhichujizhang){
    52. EntityWrapper< ZhichujizhangEntity> ew = new EntityWrapper< ZhichujizhangEntity>();
    53. ew.allEq(MPUtil.allEQMapPre( zhichujizhang, "zhichujizhang"));
    54. ZhichujizhangView zhichujizhangView = zhichujizhangService.selectView(ew);
    55. return R.ok("查询支出记账成功").put("data", zhichujizhangView);
    56. }
    57. /**
    58. * 后端详情
    59. */
    60. @RequestMapping("/info/{id}")
    61. public R info(@PathVariable("id") Long id){
    62. ZhichujizhangEntity zhichujizhang = zhichujizhangService.selectById(id);
    63. return R.ok().put("data", zhichujizhang);
    64. }
    65. /**
    66. * 前端详情
    67. */
    68. @IgnoreAuth
    69. @RequestMapping("/detail/{id}")
    70. public R detail(@PathVariable("id") Long id){
    71. ZhichujizhangEntity zhichujizhang = zhichujizhangService.selectById(id);
    72. return R.ok().put("data", zhichujizhang);
    73. }
    74. /**
    75. * 后端保存
    76. */
    77. @RequestMapping("/save")
    78. public R save(@RequestBody ZhichujizhangEntity zhichujizhang, HttpServletRequest request){
    79. zhichujizhang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    80. //ValidatorUtils.validateEntity(zhichujizhang);
    81. zhichujizhangService.insert(zhichujizhang);
    82. return R.ok();
    83. }
    84. /**
    85. * 前端保存
    86. */
    87. @RequestMapping("/add")
    88. public R add(@RequestBody ZhichujizhangEntity zhichujizhang, HttpServletRequest request){
    89. zhichujizhang.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    90. //ValidatorUtils.validateEntity(zhichujizhang);
    91. zhichujizhangService.insert(zhichujizhang);
    92. return R.ok();
    93. }
    94. /**
    95. * 修改
    96. */
    97. @RequestMapping("/update")
    98. @Transactional
    99. public R update(@RequestBody ZhichujizhangEntity zhichujizhang, HttpServletRequest request){
    100. //ValidatorUtils.validateEntity(zhichujizhang);
    101. zhichujizhangService.updateById(zhichujizhang);//全部更新
    102. return R.ok();
    103. }
    104. /**
    105. * 删除
    106. */
    107. @RequestMapping("/delete")
    108. public R delete(@RequestBody Long[] ids){
    109. zhichujizhangService.deleteBatchIds(Arrays.asList(ids));
    110. return R.ok();
    111. }
    112. /**
    113. * (按值统计)
    114. */
    115. @RequestMapping("/value/{xColumnName}/{yColumnName}")
    116. public R value(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName,HttpServletRequest request) {
    117. Map params = new HashMap();
    118. params.put("xColumn", xColumnName);
    119. params.put("yColumn", yColumnName);
    120. EntityWrapper ew = new EntityWrapper();
    121. String tableName = request.getSession().getAttribute("tableName").toString();
    122. if(tableName.equals("yonghu")) {
    123. ew.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));
    124. }
    125. List> result = zhichujizhangService.selectValue(params, ew);
    126. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    127. for(Map m : result) {
    128. for(String k : m.keySet()) {
    129. if(m.get(k) instanceof Date) {
    130. m.put(k, sdf.format((Date)m.get(k)));
    131. }
    132. }
    133. }
    134. return R.ok().put("data", result);
    135. }
    136. /**
    137. * (按值统计(多))
    138. */
    139. @RequestMapping("/valueMul/{xColumnName}")
    140. public R valueMul(@PathVariable("xColumnName") String xColumnName,@RequestParam String yColumnNameMul, HttpServletRequest request) {
    141. String[] yColumnNames = yColumnNameMul.split(",");
    142. Map params = new HashMap();
    143. params.put("xColumn", xColumnName);
    144. List>> result2 = new ArrayList>>();
    145. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    146. EntityWrapper ew = new EntityWrapper();
    147. String tableName = request.getSession().getAttribute("tableName").toString();
    148. if(tableName.equals("yonghu")) {
    149. ew.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));
    150. }
    151. for(int i=0;i
    152. params.put("yColumn", yColumnNames[i]);
    153. List> result = zhichujizhangService.selectValue(params, ew);
    154. for(Map m : result) {
    155. for(String k : m.keySet()) {
    156. if(m.get(k) instanceof Date) {
    157. m.put(k, sdf.format((Date)m.get(k)));
    158. }
    159. }
    160. }
    161. result2.add(result);
    162. }
    163. return R.ok().put("data", result2);
    164. }
    165. /**
    166. * (按值统计)时间统计类型
    167. */
    168. @RequestMapping("/value/{xColumnName}/{yColumnName}/{timeStatType}")
    169. public R valueDay(@PathVariable("yColumnName") String yColumnName, @PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType,HttpServletRequest request) {
    170. Map params = new HashMap();
    171. params.put("xColumn", xColumnName);
    172. params.put("yColumn", yColumnName);
    173. params.put("timeStatType", timeStatType);
    174. EntityWrapper ew = new EntityWrapper();
    175. String tableName = request.getSession().getAttribute("tableName").toString();
    176. if(tableName.equals("yonghu")) {
    177. ew.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));
    178. }
    179. List> result = zhichujizhangService.selectTimeStatValue(params, ew);
    180. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    181. for(Map m : result) {
    182. for(String k : m.keySet()) {
    183. if(m.get(k) instanceof Date) {
    184. m.put(k, sdf.format((Date)m.get(k)));
    185. }
    186. }
    187. }
    188. return R.ok().put("data", result);
    189. }
    190. /**
    191. * (按值统计)时间统计类型(多)
    192. */
    193. @RequestMapping("/valueMul/{xColumnName}/{timeStatType}")
    194. public R valueMulDay(@PathVariable("xColumnName") String xColumnName, @PathVariable("timeStatType") String timeStatType,@RequestParam String yColumnNameMul,HttpServletRequest request) {
    195. String[] yColumnNames = yColumnNameMul.split(",");
    196. Map params = new HashMap();
    197. params.put("xColumn", xColumnName);
    198. params.put("timeStatType", timeStatType);
    199. List>> result2 = new ArrayList>>();
    200. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    201. EntityWrapper ew = new EntityWrapper();
    202. String tableName = request.getSession().getAttribute("tableName").toString();
    203. if(tableName.equals("yonghu")) {
    204. ew.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));
    205. }
    206. for(int i=0;i
    207. params.put("yColumn", yColumnNames[i]);
    208. List> result = zhichujizhangService.selectTimeStatValue(params, ew);
    209. for(Map m : result) {
    210. for(String k : m.keySet()) {
    211. if(m.get(k) instanceof Date) {
    212. m.put(k, sdf.format((Date)m.get(k)));
    213. }
    214. }
    215. }
    216. result2.add(result);
    217. }
    218. return R.ok().put("data", result2);
    219. }
    220. /**
    221. * 分组统计
    222. */
    223. @RequestMapping("/group/{columnName}")
    224. public R group(@PathVariable("columnName") String columnName,HttpServletRequest request) {
    225. Map params = new HashMap();
    226. params.put("column", columnName);
    227. EntityWrapper ew = new EntityWrapper();
    228. String tableName = request.getSession().getAttribute("tableName").toString();
    229. if(tableName.equals("yonghu")) {
    230. ew.eq("yonghuzhanghao", (String)request.getSession().getAttribute("username"));
    231. }
    232. List> result = zhichujizhangService.selectGroup(params, ew);
    233. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    234. for(Map m : result) {
    235. for(String k : m.keySet()) {
    236. if(m.get(k) instanceof Date) {
    237. m.put(k, sdf.format((Date)m.get(k)));
    238. }
    239. }
    240. }
    241. return R.ok().put("data", result);
    242. }
    243. /**
    244. * 总数量
    245. */
    246. @RequestMapping("/count")
    247. public R count(@RequestParam Map params,ZhichujizhangEntity zhichujizhang, HttpServletRequest request){
    248. String tableName = request.getSession().getAttribute("tableName").toString();
    249. if(tableName.equals("yonghu")) {
    250. zhichujizhang.setYonghuzhanghao((String)request.getSession().getAttribute("username"));
    251. }
    252. EntityWrapper ew = new EntityWrapper();
    253. int count = zhichujizhangService.selectCount(MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, zhichujizhang), params), params));
    254. return R.ok().put("data", count);
    255. }
    256. }
  • 相关阅读:
    分享计算机msvcp100.dll,丢失或找不到的7个解决方法
    hadoop集群安装(四):安装hadoop集群
    思路迪通过港交所上市聆讯:前五个月收入1.6亿元,专利储备丰富
    spark—KV算子解析
    十年前对敏捷开发的体会
    9.8day58 单调栈
    MyBatisPlus的in方法入参数量过多导致的JVM频繁FullGC案例
    自动化测试-Xpath
    静态博客搭建工具汇总
    VoLTE基础自学系列 | 什么是SIP和IMS中的Forking
  • 原文地址:https://blog.csdn.net/m0_49113107/article/details/133233988