🍅 作者主頁:Java李楊勇
🍅 簡介:Java領域優質創作者🏆、Java李楊勇公號作者? 簡歷模板、學習資料、面試題庫、技識訓助【關注我,都給你】
🍅 歡迎點贊 👍 收藏 ?留言 📝
視頻演示:文末獲取原始碼聯系方式
<iframe id="NCm1BeUd-1631196134925" src="https://live.csdn.net/v/embed/176717" allowfullscreen="true" data-mediaembed="csdn"></iframe>Springboot個人理財系統
前言:
隨著社會的進步,生活的富裕,科學技術的不斷提高,計算機科學日益成熟,電腦已經成為家庭必備的工具之一,利用計算機進行個人理財不失為一種行之有效的方法,實用、美觀、高效的同時也給用戶帶來了極大的便利,達到足不出戶就能管理財富的目的,作為計算機應用的一部分,使用計算機對個人財務進行管理,具有手工管理所無法比擬的優點:檢索迅速、查找方便、可靠性高、存盤量大、保密性好、壽命長、成品低等,這些優點能夠極大地提高個人財務管理的效率,也是個人理財的科學化、正規化管理,與先進科學技術接軌的重要條件,個人理財是以個人為單位的財務規劃,具體來說是按照家庭的實物性財產、現金收支流,圍繞家庭的收入、消費、投資、借貸、風險承受能力、心理偏好等情況,形成一套以個人財務自由化為目標的家庭財務安排,從廣義的角度來講,合理的理財會節省社會資源,提高社會福利,促進社會的穩定發展,從技術的角度來講,個人理財就是利用開源節流的原則,增加收入,節省支出,用最合理的方式來達到一個家庭所希望達到的經濟目標,現今國內已有成熟的C/S結構的理財管理系統,而B/S結構的在線實時管理的還尚不發達,因此該課題的研究目的在于開發基于SpringBootB/S的家庭理財平臺,

設計思想:
每一個系統,都要有一個合適的設計思想和方法,這樣才能保證系統的基本思想是貫徹適中的,選擇合理的邏輯結構,物理結構,作業系統和外部開發環境,這些對系統的開發起著關鍵的作用,只有這樣才能構成完善的整體的系統,該系統的設計按照下述原則進行,
實用性
系統以用戶需求為目標,以方便用戶為原則,根據用戶實際的需求情況,完成一個在線理財系統,并且將在統一的界面下提供各種實用功能,盡可能降低使用前的培訓、實施和使用中的維護時間,
先進性
該設計將充分應用現有成熟的計算機技術、,網路技術、軟體開發技術,為用戶提供高性能的系統,系統將運用先進的客戶機/服務器結構,采用Mysql資料庫,可以方便的滿足用戶在線理財的需要,
高可靠性
一個實用的系統同時必須是可靠的,該設計通過合理而先進的網路設計以及軟、硬體的優化選型,可保證系統的可靠性與容錯性,
高安全性
在設計中,將充分利用各種安全措施,既可以保證用戶共享資源,同時也可保證關鍵資料的安全性,
可擴展性及靈活性
系統的設計以方便未來業務的擴展和系統擴充為目標,
系統主要功能設計:
主要技術:springboot、mybatis、themlefy、Jquery、bootstrap、MySQL
普通用戶:登錄注冊,登錄后查看各類理財產品及設定各類理財產品的投資方式,查看自己的理財內容等
管理員:登錄后可以管理普通用戶、管理各類理財產品資訊等,
功能實作關鍵代碼:
后臺登錄驗證:
@GetMapping("/verifyLogin")
@ResponseBody
public 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")
@ResponseBody
public 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 {
//目標方法執行之前
@Override
public 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套》
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/299221.html
標籤:其他
