基于Springboot+Mybatis实现个人理财系统

🍅 作者主页:Java李杨勇 

🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌  简历模板、学习资料、面试题库、技术互助【关注我,都给你】

🍅 欢迎点赞 👍 收藏 ⭐留言 📝   

视频演示:文末获取源码联系方式

Springboot个人理财系统

前言:

         随着社会的进步,生活的富裕,科学技术的不断提高,计算机科学日益成熟,电脑已经成为家庭必备的工具之一,利用计算机进行个人理财不失为一种行之有效的方法,实用、美观、高效的同时也给用户带来了极大的便利,达到足不出户就能管理财富的目的。作为计算机应用的一部分,使用计算机对个人财务进行管理,具有手工管理所无法比拟的优点:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成品低等。这些优点能够极大地提高个人财务管理的效率,也是个人理财的科学化、正规化管理,与先进科学技术接轨的重要条件。个人理财是以个人为单位的财务规划,具体来说是按照家庭的实物性财产、现金收支流,围绕家庭的收入、消费、投资、借贷、风险承受能力、心理偏好等情况,形成一套以个人财务自由化为目标的家庭财务安排。从广义的角度来讲,合理的理财会节省社会资源,提高社会福利,促进社会的稳定发展。从技术的角度来讲,个人理财就是利用开源节流的原则,增加收入,节省支出,用最合理的方式来达到一个家庭所希望达到的经济目标。现今国内已有成熟的C/S结构的理财管理系统,而B/S结构的在线实时管理的还尚不发达,因此该课题的研究目的在于开发基于SpringBootB/S的家庭理财平台。

 设计思想:

         每一个系统,都要有一个合适的设计思想和方法,这样才能保证系统的基本思想是贯彻适中的。选择合理的逻辑结构,物理结构,操作系统和外部开发环境,这些对系统的开发起着关键的作用。只有这样才能构成完善的整体的系统。该系统的设计按照下述原则进行。
实用性
       系统以用户需求为目标,以方便用户为原则。根据用户实际的需求情况,完成一个在线理财系统,并且将在统一的界面下提供各种实用功能,尽可能降低使用前的培训、实施和使用中的维护时间。
先进性
       该设计将充分应用现有成熟的计算机技术、。网络技术、软件开发技术,为用户提供高性能的系统。系统将运用先进的客户机/服务器结构,采用Mysql数据库,可以方便的满足用户在线理财的需要。
高可靠性
       一个实用的系统同时必须是可靠的,该设计通过合理而先进的网络设计以及软、硬件的优化选型,可保证系统的可靠性与容错性。
高安全性
     在设计中,将充分利用各种安全措施,既可以保证用户共享资源,同时也可保证关键数据的安全性。
可扩展性及灵活性
     系统的设计以方便未来业务的扩展和系统扩充为目标。

系统主要功能设计:

主要技术:springboot、mybatis、themlefy、Jquery、bootstrap、MySQL

普通用户:登录注册,登录后查看各类理财产品及设置各类理财产品的投资方式,查看自己的理财内容等

管理员:登录后可以管理普通用户、管理各类理财产品信息等,

功能实现关键代码:

后台登录验证:

  @GetMapping("/verifyLogin")@ResponseBodypublic Msg verifyLogin(@RequestParam("username") String username, @RequestParam("password") String password,HttpSession session) {User loginUser = userService.selectUserByTerms(username, password);if (loginUser != null) {//获取当前用户Subject subject = SecurityUtils.getSubject();//封装用户登录数据UsernamePasswordToken token = new UsernamePasswordToken(username, password);try {subject.login(token);return Msg.success().add("url", "/user/index.html");} catch (UnknownAccountException | IncorrectCredentialsException e) {return Msg.fail();}}Admin admin = adminService.selectAdminByTerms(username, password);if (admin != null) {//获取当前用户Subject subject = SecurityUtils.getSubject();//封装用户登录数据UsernamePasswordToken token = new UsernamePasswordToken(username, password);try {subject.login(token);return Msg.success().add("url", "/admin/index.html");} catch (UnknownAccountException | IncorrectCredentialsException e) {//model.addAttribute("msg","密码错误");return Msg.fail();}}return Msg.fail();}

 登录处理

  @GetMapping("/verifyLogin")@ResponseBodypublic Msg verifyLogin(@RequestParam("username") String username, @RequestParam("password") String password,HttpSession session) {User loginUser = userService.selectUserByTerms(username, password);if (loginUser != null) {//获取当前用户Subject subject = SecurityUtils.getSubject();//封装用户登录数据UsernamePasswordToken token = new UsernamePasswordToken(username, password);try {subject.login(token);return Msg.success().add("url", "/user/index.html");} catch (UnknownAccountException | IncorrectCredentialsException e) {return Msg.fail();}}Admin admin = adminService.selectAdminByTerms(username, password);if (admin != null) {//获取当前用户Subject subject = SecurityUtils.getSubject();//封装用户登录数据UsernamePasswordToken token = new UsernamePasswordToken(username, password);try {subject.login(token);return Msg.success().add("url", "/admin/index.html");} catch (UnknownAccountException | IncorrectCredentialsException e) {//model.addAttribute("msg","密码错误");return Msg.fail();}}return Msg.fail();}

 登录拦截器设置:

/*** 登陆拦截器:未登录用户不能访问系统界面*/
public class LoginHandlerInterceptor implements HandlerInterceptor {//目标方法执行之前@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {Object user = request.getSession().getAttribute("loginUser");Object admin = request.getSession().getAttribute("loginAdmin");if(user == null&&admin==null){//未登陆,返回登陆页面request.setAttribute("msg","没有权限请先登陆");System.out.println("LoginHandlerInterceptor.preHandle" + "----------------未登入------拦截请求--------------->");response.sendRedirect("/");return false;}else{//已登陆,放行请求return true;}}

 乱码通用处理:

/*** 对所有乱码进行拦截及纠正,包括get提交方式,解决get提交方式乱码,方式是重写了request的getParameter方法,* 让其在返回值的时候检查提交方式,如果为“get”就进行解码。 使用过滤器的@WebFilter注解进行配置和值的初始化*/
@WebFilter(filterName = "encodingFilter", urlPatterns = "/*", initParams = {@WebInitParam(name = "code", value = "utf-8") })
public class EncodingFilter implements Filter {private String code = null;public void destroy() {}public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {// 设置码表request.setCharacterEncoding(code);response.setCharacterEncoding(code);response.setContentType("text/html;charset=" + code);// 将现在的reuqest对象换成我自己的request对象MyHttpServletRequest myRequest = new MyHttpServletRequest((HttpServletRequest) request);//System.out.println("Filter");// 跳转到请求的资源,并传入自己定义的myRequest对象chain.doFilter(myRequest, response);}

数据库设计:

用户表 

CREATE TABLE `user` (
`id`  int(10) NOT NULL AUTO_INCREMENT COMMENT '用户id 主键自增' ,
`username`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名' ,
`realname`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '真实姓名' ,
`password`  varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '登录密码' ,
`IDcard`  varchar(18) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '身份证号' ,
`phone`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号' ,
`email`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱' ,
`paypwd`  int(40) NULL DEFAULT NULL COMMENT '交易密码' ,
`status`  int(10) NULL DEFAULT NULL COMMENT '用户状态(0:离线   1:在线)' ,
`reputation`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户信誉' ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=7
ROW_FORMAT=COMPACT
;

 理财表:

CREATE TABLE `NewTable` (
`id`  int(10) NOT NULL AUTO_INCREMENT COMMENT '资金记录表 id主键自增' ,
`userId`  int(10) NULL DEFAULT NULL COMMENT '所属用户' ,
`flowMoney`  decimal(20,2) NULL DEFAULT NULL COMMENT '金额' ,
`type`  int(10) NULL DEFAULT NULL COMMENT '类型(1:支出  2:收入)' ,
`source`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '来源' ,
`createTime`  date NULL DEFAULT NULL COMMENT '创建时间' ,
`fundDesc`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注' ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=18
ROW_FORMAT=COMPACT
;

网贷信息表:

CREATE TABLE `NewTable` (
`id`  int(10) NOT NULL AUTO_INCREMENT COMMENT '消息编号 主键自增' ,
`sendId`  int(10) NULL DEFAULT NULL COMMENT '消息发送者id(admin)' ,
`receiveId`  int(10) NULL DEFAULT NULL COMMENT '消息接收者id(user)' ,
`createTime`  date NULL DEFAULT NULL COMMENT '消息创建时间' ,
`title`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '消息标题' ,
`infoDesc`  varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '消息内容' ,
`status`  int(10) NULL DEFAULT NULL COMMENT '消息状态(0:未读  1:已读)' ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=12
ROW_FORMAT=COMPACT
;

获取源码:

总体来说这个项目功能相对还是比较简单优秀的、适合初学者作为课程设计和毕业设计参考 

查看博主主页联系或下方微信公众号获取



往前精彩分享:

Java毕设项目精品实战案例《100套》

HTML5大作业实战案例《100套》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561999.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 递归遍历对象所有属性_Java学习之Xml系列二:xml按条件查询、xml递归遍历所有元素和属性...

xml中加入了几条,为了方便查询时作为示例。话不多说见代码注释:DTD文件:SwordTypeDefinition.dtdXML文件:SwordLib.xmlSwordLibrary SYSTEM "SwordTypeDefinition.dtd">欢欣之刃100010夜叉205030魔棒2000java代码&am…

HTML+CSS+JS实现 ❤️酷炫3D瀑布流动画特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

java 取dataset_Java LineDataSet.getYVals方法代码示例

import com.github.mikephil.charting.data.LineDataSet; //导入方法依赖的package包/类protected void drawCircles(Canvas c) {mRenderPaint.setStyle(Paint.Style.FILL);float phaseX mAnimator.getPhaseX();float phaseY mAnimator.getPhaseY();List dataSets mChart.ge…

HTML+CSS+JS实现 ❤️canvas圆形水波进度条动画特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

HTML+CSS+JS实现 ❤️圆圈波纹动画特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

java 二叉树迭代器_C,为二叉树实现自定义迭代器(长)

请你好 - 这是我的第一个问题 . P基本上作为夏季项目,我一直在浏览wikipedia page上的数据结构列表并尝试实现它们 . 我上学期参加了一门C课程并发现它非常有趣,作为我实施二项式堆的最后一个项目 - 这也非常有趣 . 也许我很讨厌,但我喜欢数…

java防止编码重复_java – 如何避免许多小类的代码重复?

我有不同的课程,分别是英语,西班牙语,法语等:Class English{String name "English";String alias "ENG";}Class French{String name "French";String alias "Fre";}与其他语言类似.还有一个叫做语言的课:Cl…

HTML+CSS+JS实现 ❤️6种transform图片悬停动态效果❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

ldap协议 java_java如何调用ldap协议【LdapContext】

背景:做了个系统需要用集团的用户id登录。而集团用户系统是用ldap做的。关键知识点1. 设置连接ctx new InitialLdapContext(env, connCtls);2.设置url和查询的子路径env.put(Context.PROVIDER_URL, URL);// LDAP serverenv.put(Context.SECURITY_PRINCIPAL, SEARCH…

HTML+CSS+JS实现 ❤️经典霓虹灯英文字母特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

操作系统分区分配java算法_合肥工业大学操作系统课程设计 动态分区分配存储管理java版.doc...

合肥工业大学操作系统课程设计 动态分区分配存储管理java版.doc 1课程设计动态分区分配存储管理设计题目学号专业班级学生姓名号指导教师22010年12月合肥工业大学课程设计任务书设计题目动态分区分配存储管理成绩主要内容动态分区分配存储管理建立描述内存分配状况的数据结构&a…

HTML+CSS+JS实现 ❤️感谢关注3D文字动画特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

java中字符串后加Box_字符串未显示在JavaFX中ComboBox的Tableview上

我一直在尝试在Java中显示我从组合框到表视图的选择 . 我花了好几个小时都在寻找解决方案,但没有用 . 我没有任何错误,但我似乎无法在TableView上显示一个字符串 . 我想请求帮助 .MainView.java有组合框和单击按钮的位置,它应该将组合框中的字…

HTML+CSS+JS实现 ❤️基于Javascript简单计算器特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、Java李杨勇公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &#x1f…

java font 字体 隶书_在font标记对,将字体设置成“隶书”,设置属性( )=隶书。...

字体夏季影响我国大部分地区的大气活动中心是太平洋高压和阿留申低压。Q0.0和Q0.1只要有一个继电器线圈先接通,记对另一个就不能再接通,从而保证任何时候两者都不能同时起动,这种控制方式称为()。按照工作方式的不同,设置书设置属…

HTML+CSS+JS实现 ❤️高光立体游戏卡片悬停ui特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

java获取500错误_HTTP 500错误

IIS5的HTTP 500内部服务器错误是我们经常碰到的错误之一,它的主要错误表现就是ASP程序不能浏览但HTM静态网页不受影响。另外当错误发生时,系统事件日志和安全事件日志都会有相应的记录。具体如下……一.错误表现IIS5的HTTP 500内部服务器错误是我们经常碰…

HTML+CSS+JS实现 ❤️流星天体动画场景特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…

java的uuid有什么用_java – 什么是有效的UUID?

我生成UUID,并在我的代码中对正则表达式进行有效;我刚遇到困扰我的问题以下是生成UUID的代码(在mongodb上下文中)import java.util.UUID;... ...Document setOnInsert new Document(Params.sender, UUID.randomUUID()).append(Params.userDevice, userDevice).append(Params.h…

HTML+CSS+JS实现 ❤️创意几何love字母特效❤️

🍅 作者主页:Java李杨勇 🍅 简介:Java领域优质创作者🏆、【java李杨勇】公号作者✌ 简历模板、学习资料、面试题库、技术互助【关注我,都给你】 🍅 欢迎点赞 👍 收藏 ⭐留言 &…