基于Java的记账管理系统论文
- 引言
记账在个人和企业管理中扮演着重要的角色,它能够帮助我们记录和管理个人或企业的财务状况。随着信息化时代的到来,传统的手工记账方式已经无法满足人们对高效、准确和便捷的需求。因此,开发一款基于Java的记账管理系统成为了迫切的需求。
本论文的研究背景是针对目前记账管理领域存在的问题和需求进行探讨和解决。首先,记账在个人和企业管理中的重要性不言而喻。通过记账,我们可以清楚地了解自己的收入和支出情况,合理规划和管理资金流动,提高财务决策的准确性和效率。然而,传统的手工记账方式存在着诸多不便之处,如数据易丢失、查询繁琐等问题。因此,需要一种更现代化、智能化的方式来替代传统的手工记账方式。
其次,信息化时代对记账管理的需求日益增长。随着互联网的普及和移动设备的广泛应用,人们希望能够随时随地进行记账操作,并能够方便地查看和管理自己的账单信息。此外,对于企业来说,更需要一个集中管理和监控财务流程的系统,以提高财务管理的效率和准确性。因此,基于Java的记账管理系统具有广阔的应用前景和市场需求。
最后,基于Java的记账管理系统具有一定的优势。Java作为一种跨平台、面向对象的编程语言,具有良好的可移植性和可扩展性。基于Java开发的记账管理系统可以在不同的操作系统和设备上运行,并且可以方便地进行功能扩展和升级。此外,Java拥有丰富的开发工具和框架,可以提高开发效率和代码质量。因此,选择Java作为开发语言是明智的选择。
综上所述,本论文旨在设计和实现一款基于Java的记账管理系统,以满足个人和企业对高效、准确和便捷的记账管理需求。通过对系统的需求分析、设计与实现、测试与评估以及部署与维护等方面的研究,旨在提供一个功能完善、稳定可靠的记账管理系统,为个人和企业提供更好的财务管理解决方案。
附有源码:
- 准备工作
创建数据库
创建项目
修改pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.8.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <groupId>com.sxt</groupId> <artifactId>0520Bills</artifactId> <version>0.0.1-SNAPSHOT</version> <name>0520Bills</name> <description>记帐本</description> <properties> <java.version>1.8</java.version> <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version> <mybatisplus.version>3.2.0</mybatisplus.version> <druid.version>1.1.18</druid.version> <log4j.version>1.2.17</log4j.version> <hutool.version>4.6.6</hutool.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>${mybatisplus.version}</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>${druid.version}</version> </dependency> <!--log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <!--hutool-all --> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>${hutool.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> |
修改yml
#配置数据源的属性 spring: datasource: druid: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/bills?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=UTC username: root password: 123456 max-active: 20 max-wait: 5000 initial-size: 1 filters: stat,log4j,wall validationQuery: SELECT 'x' #验证连接 enable: true #监控配置 stat-view-servlet: enabled: true login-username: root login-password: 123456 allow: deny: url-pattern: /druid/* #thymeleaf的配置 thymeleaf: cache: false enabled: true # web-stat-filter: # enabled: true # exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" #配置mybatisplus mybatis-plus: mapper-locations: - classpath:mapper/*Mapper.xml global-config: db-config: id-type: auto banner: true |
- 生成代码
- 导入资源文件
- 完成登陆
创建ResultObj
创建LoginController
/** * <p> * 前端控制器 * 登陆控制 * </p> * * @author 老雷 * @since 2019-09-20 */ @Controller @RequestMapping("/login") public class LoginController { @Autowired private UserService userService; /** * 跳转到登陆页面 */ @RequestMapping("toLogin") public String toLogin() { return "login"; } @RequestMapping("login") @ResponseBody public ResultObj login(String loginname,String pwd,String code,HttpSession session) { Object codeSession = session.getAttribute("code"); if(code!=null&&code.equals(codeSession)) { QueryWrapper<User> queryWrapper=new QueryWrapper<>(); queryWrapper.eq("loginname", loginname); queryWrapper.eq("pwd", pwd); User user = userService.getOne(queryWrapper); if(null!=user) { session.setAttribute("user", user); return new ResultObj(200, "登陆成功"); }else { return new ResultObj(-1, "用户名或密码不正确"); } }else { return new ResultObj(-1, "验证码错误"); } } @RequestMapping("getCode") public void getCode(HttpServletResponse resp,HttpSession session) throws IOException { CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(116, 36, 4, 5); //得到code String code = captcha.getCode(); System.out.println(code); //放到session session.setAttribute("code", code); ServletOutputStream outputStream = resp.getOutputStream(); captcha.write(outputStream); outputStream.close(); } } |
创建static/index.html
创建templates/login.html
<!DOCTYPE html> <html class="loginHtml" xmlns:th="http://www.thymeleaf.org" > <head> <meta charset="utf-8"> <title>登录</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="format-detection" content="telephone=no"> <link rel="icon" th:href="@{/resources/favicon.ico}"> <link rel="stylesheet" th:href="@{/resources/layui/css/layui.css}" media="all" /> <!-- <link rel="stylesheet" href="/resources/layui/css/layui.css" media="all" /> --> <link rel="stylesheet" th:href="@{/resources/css/public.css}" media="all" /> </head> <body class="loginBody"> <form class="layui-form"> <div class="login_face"><img th:src="@{/resources/images/face.jpg}" class="userAvatar"></div> <div class="layui-form-item input-item"> <label for="userName">用户名</label> <input type="text" placeholder="请输入用户名" autocomplete="off" name="loginname" class="layui-input" lay-verify="required"> </div> <div class="layui-form-item input-item"> <label for="password">密码</label> <input type="password" placeholder="请输入密码" autocomplete="off" name="pwd" class="layui-input" lay-verify="required"> </div> <div class="layui-form-item input-item" id="imgCode"> <label for="code">验证码</label> <input type="text" placeholder="请输入验证码" autocomplete="off" name="code" class="layui-input"> <img src="/login/getCode" onclick="this.src='/login/getCode?'+new Date()"> </div> <div class="layui-form-item"> <button class="layui-btn layui-block" lay-filter="login" lay-submit>登录</button> </div> </form> <script type="text/javascript" th:src="@{/resources/layui/layui.js}"></script> <script> layui.use(['form','layer','jquery'],function(){ var form = layui.form, layer = parent.layer === undefined ? layui.layer : top.layer $ = layui.jquery; //登录按钮 form.on("submit(login)",function(data){ var btn = $(this); //设置登录按钮 为不可点击 btn.text("登录中...").attr("disabled","disabled").addClass("layui-disabled"); $.post("/login/login",data.field,function(rs){ //设置登录按钮 恢复可点击 在前端防止 重复点击 btn.text("登录").attr("disabled",false).removeClass("layui-disabled"); layer.msg(rs.msg); if(rs.code != 200){ layer.msg(rs.msg); }else{ //跳转到templates/list.html页面
|