SpringBoot项目练习—个人记账笔记

【spring boot】初学者项目快速练手 快速生成一个初始的项目代码,会生成一个demo文件打开intellj idea,导入demo文件。 阅读详情

SpringBoot项目—个人记账笔记

这部分的学习内容主要在于维护我的个人笔记,将springboot步骤以博客的形式作为笔记。谢谢大家的阅读。

1、项目的简单介绍

首先是任务目标:

  • 业务目标:使用 Spring Boot + Mybatis + tk Mybatis + Thymeleaf 完成个 人记账管理
  • 技能目标: Spring Boot、tk Mybatis、Thymeleaf、MySQL

其中的任务过程如下:

1.账单分类查询 
2.账单分页查询 
3.账单添加 
4.账单修改 
5.账单删除

部分截图实现如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

大致是三个页面,其中第三个页面是修改,跟添加账单的显示类似。

以上的项目加上数据库目前已经打包成gitee打包:小艾扶/记账管理系统 - 码云

其中注意,我的MySQL使用的是8以上的版本,使用5的伙伴们就需要注意编码格式。

2、数据库表示

在这里插入图片描述

首先是账单的内容,它里面还有包含账单分类。

这里稍微介绍一下数据库即可。

3、项目的环境构建&编写

首先就是创建一个Maven项目,项目导入如下:

    <dependencies>
        <!-- 通用Mapper启动器 -->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
        </dependency>

        <!-- mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.11</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
    </dependencies>

添加依赖,其中包括分页、tkmybatis和springboot加上thymeleaf的前端编辑。

启动类加载:

@SpringBootApplication
@MapperScan("com.xaf.dao")
public class BillManagerApplication {
    public static void main(String[] args) {
        SpringApplication.run(BillManagerApplication.class, args);
    }
}

将src/main/resource拷贝到resource下继续使用,稍微在配置文件稍作修改:

server:
  port: 8001
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/bill-manager
  thymeleaf:
    cache: false #关闭thymeleaf缓存
  #整合mybatis
mybatis:
  type-aliases-package: com.xaf.entity #别名搜索
  mapper-locations: classpath:/mybatis/*.xml

里面根据自己的需要进行修改。

实体类:

@Table(name = "bill_")
public class Bill implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_")
    private Long id;
    @Column(name = "title_")
    private String title;
    @Column(name = "bill_time_")
    private Date billTime;
    @Column(name = "type_id_")
    private Long typeId;
    @Column(name = "price_")
    private Double price;
    @Column(name = "explain_")
    private String explain;
    /**
     * 类别名称
     */
    @Transient
    private String typeName;
    /**
     * 开始时间:用于查询
     */
    @Transient
    private Date date1;
    /**
     * 结束时间:用于查询
     */
    @Transient
    private Date date2;
    
    /**
    *加入getter和setter方法
    */
@Table(name = "bill_type_")
public class BillType implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_")
    public Long id;
    @Column(name = "name_")
    public String name;
}

简单介绍一下:

@Table(name = "bill_"):将数据库表指向里面内容
@GeneratedValue(strategy = GenerationType.IDENTITY):设置表排列
@Column(name = "id_"):对应数据库表对应名称
@Transient:设置其中的属性不随着其他属性一样被直接显示或者调用

Dao层:

public interface BillMapper extends Mapper<Bill> {
    public List<Bill> select(Bill b);
}
public interface TypeMapper extends Mapper<BillType> {
}

Service:

@Service
public class BillService {
    @Autowired
    private BillMapper billMapper;

    public List<Bill> list(Bill b) {
        return billMapper.select(b);
    }
    public int add(Bill b) {
        return billMapper.insert(b);
    }
    public Bill get(Long id) {
        return billMapper.selectByPrimaryKey(id);
    }
    public int update(Bill b) {
        return billMapper.updateByPrimaryKey(b);
    }
    public int delete(Long id) {
        return billMapper.deleteByPrimaryKey(id);
    }
    public PageInfo<Bill> listPage(Bill b, int pageNum, int pageSize) {
        return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> {
            billMapper.select(b);
        });
    }

}
@Service
public class TypeService {
    @Resource
    private TypeMapper typeMapper;
    public List<BillType> list() {
        return typeMapper.selectAll();
    }
}

跟前面学习spring一样。

Controller:

@Controller
@RequestMapping("/bill")
public class BillController {
    @Resource
    private TypeService typeService;
    @Resource
    private BillService billService;
    /**
     * 查询
     * @param b
     * @param model
     * @return
     */
    @RequestMapping("/list")
    public String list(Bill b, Model model) {
        List<BillType> types = typeService.list();
        model.addAttribute("types", types);
        List<Bill> list = billService.list(b);
        model.addAttribute("list", list);
        model.addAttribute("bill", b);
        return "/bill/list";
    }
    /**
     * 调到添加页面
     * @return
     */
    @GetMapping("/toAdd")
    public String toAdd(Model model) {
        List<BillType> types = typeService.list();
        model.addAttribute("types", types);
        return "/bill/add";
    }
    /**
     * 添加
     * @param b
     * @return
     */
    @GetMapping("/add")
    public String add(Bill b) {
        billService.add(b);
        return "redirect:/bill/list";
    }
    /**
     * 删除
     * @param id
     * @return
     */
    @GetMapping("/delete/{id}")
    public String delete(@PathVariable("id") Long id) {
        billService.delete(id);
        return "redirect:/bill/list";
    }
    /**
     * 修改
     * @param id
     * @return
     */
    @GetMapping("/toUpdate/{id}")
    public String toUpdate(@PathVariable("id") Long id, Model model) {
        List<BillType> types = typeService.list();
        model.addAttribute("types", types);
        Bill bill = billService.get(id);
        model.addAttribute("bill", bill);
        return "/bill/update";
    }
    /**
     * 修改
     * @param b
     * @return
     */
    @GetMapping("/update")
    public String update(Bill b) {
        billService.update(b);
        return "redirect:/bill/list";
    }

    /**
     * 查询
     * @param b
     * @param model
     * @return
     */
    @GetMapping("/list-page")
    public String listPage(@RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "10") int pageSize, Bill b, Model model) {
        List<BillType> types = typeService.list();
        model.addAttribute("types", types);
        PageInfo<Bill> pageInfo = billService.listPage(b, pageNum, pageSize);
        model.addAttribute("page", pageInfo);
        model.addAttribute("bill", b);
        return "/bill/list-page";
    }
}

最后就是resource下的mybatis-xml映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xaf.dao.BillMapper">
    <sql id="selectSql">
        SELECT
            b.id_ as id,
            b.title_ as title,
            b.bill_time_ as billTime,
            b.type_id_ as typeId,
            b.price_ as price,
            b.explain_ as `explain`,
            t.name_ as typeName
        FROM
            bill_ as b
        left join
            bill_type_ as t
        on
            b.type_id_ = t.id_
    </sql>
    <select id="select" resultType="bill">
        <include refid="selectSql"/>
        <where>
            <if test="typeId !=null">
                b.type_id_ = #{typeId}
            </if>
            <if test="title !=null">
                and b.title_ like '%${title}%'
            </if>
            <if test="date1 !=null">
                and b.bill_time_ &gt;= #{date1}
            </if>
            <if test="date2 !=null">
                and b.bill_time_ &lt;= #{date2}
            </if>
        </where>
    </select>
</mapper>

其中如下代码要看一下是否对应自己的项目路径下。

<mapper namespace="com.xaf.dao.BillMapper">

剩下的就是静态资源了,里面的静态资源需要通过后端Controller中的model.addAttribute("bill", bill);进行传值。目前我的项目时已经完成了这部分的内容。

4、附加 时间转换

@Component
public class DateConverterConfig implements Converter<String, Date> {
    private static final List<String> formarts = new ArrayList<>(4);
    static{
        formarts.add("yyyy-MM");
        formarts.add("yyyy-MM-dd");
        formarts.add("yyyy-MM-dd hh:mm");
        formarts.add("yyyy-MM-dd hh:mm:ss");
    }
    @Override
    public Date convert(String source) {
        String value = source.trim();
        if ("".equals(value)) {
            return null;
        }
        if(source.matches("^\\d{4}-\\d{1,2}$")){
            return parseDate(source, formarts.get(0));
        }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){
            return parseDate(source, formarts.get(1));
        }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")){
            return parseDate(source, formarts.get(2));
        }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){
            return parseDate(source, formarts.get(3));
        }else {
            throw new IllegalArgumentException("Invalid boolean value '" + source + "'");
        }
    }
    /**
     * 格式化日期
     * @param dateStr String 字符型日期
     * @param format String 格式
     * @return Date 日期
     */
    public Date parseDate(String dateStr, String format) {
        Date date=null;
        try {
            DateFormat dateFormat = new SimpleDateFormat(format);
            date = dateFormat.parse(dateStr);
        } catch (Exception e) {
        }
        return date;
    }
}

就简单介绍一下,后面的Date parseDate方法是将String类型字符转换成Date类型字符;前面添加一个list放置格式内容,后面就对格式内容进行比较并返回。

5、前端回显(粗略)

这里稍微介绍一部分内容即可。

<div class="with:80%">
    <table class="table table-striped table-bordered">
        <thead>
        <tr>
            <th>ID</th>
            <th>标题</th>
            <th>时间</th>
            <th>金额</th>
            <th>类别</th>
            <th>说明</th>
            <th>操作</th>
        </tr>
        </thead>
        <tbody >
		<!-- TODO 回显查询结果-->
        <tr th:each="b,status: ${list}" th:style="${status.odd} ? 'background-color:#A3C6C8'">
            <td th:text="${b.id}">id</td>
            <td th:text="${b.title}">name</td>
            <td th:text="${b.billTime} ? ${#dates.format(b.billTime, 'yyyy-MM-dd')}">time</td>
            <td th:text="${b.price}">price</td>
            <td th:text="${b.typeName}">typeName</td>
            <td th:text="${b.explain}">explain</td>
            <td>
                <a th:href="|/bill/delete/${b.id}|">删除</a>
                <a th:href="|/bill/toUpdate/${b.id}|">修改</a>
            </td>
        </tr>
        </tbody>
    </table>
</div>

这里面显示内容时,我们使用的是thymeleaf,用th:each在行标签设置循环,将内容以行的形式呈现出来才能完成最上面展示的样式。然后设置b以list类型,将list中的各个属性输出到内容上。

List<Bill> list = billService.list(b);
model.addAttribute("list", list);

这样子就完成了基本的显示内容。

再举例一个地方:

<select name="typeId" id="typeId" class="form-control" >
	<option value="">全部</option>
	<option th:each="t: ${types}" th:value="${t.id}" th:text="${t.name}" th:selected="(${bill.typeId} == ${t.id})" ></option>
</select>

这里面就是进行下拉框的显示,也是在选择标签下设置循环,将value值传进去再显示文本。(前面的展示不需要value在于只需要能够显示即可,而这里设置value是因为还要将相关的值作为记录并回响数据。)

总结

完成了以上的步骤,就基本上离完成项目项目的基本构建不远了。这部分笔记稍微作为个人笔记使用,也希望能够被大佬批评指正。谢谢阅读。

SpringBoot:Spring Boot练习 弹簧靴 Spring启动实践 立即下载

相关推荐

springboot练习用的小项目

简单的功能

适合新手的springboot的练手项目

环境:jdk1.8 + maven+idea 1:首先我们在idea上创建一个springboot的项目。 2:我这里的java version选择的是8 3:先勾选一个spring web 4:先编写一个Controller类,在测试我们的springboot能正常运行 5: 默认端口是8080,在浏览器上访问我们@RequestMapping上的地址,看是否能返回我们定义的字段 6:在pom.xml导入我们需要的maven依赖 <de...

Cc_app的博客 4234

[FPGA高速以太网]基于Verilog与1G/2.5G Ethernet PCS/PMA IP核的2.5G UDP通信实战

本文详细介绍了基于FPGA与1G/2.5G Ethernet PCS/PMA IP核实现2.5G UDP通信的完整实战方案。文章以黑金AX7A200开发板为硬件平台,深入讲解了从硬件选型、IP核配置、Verilog测试逻辑编写到系统调试与性能验证的全过程,重点剖析了利用SGMII接口与GTP收发器实现高速数据传输的关键技术与避坑指南,为FPGA高速以太网应用开发提供了宝贵经验。

sql99的博客 568

spring boot 项目练习

spring boot官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/ 浏览器发送hello请求,服务器接受请求并处理,响应Hello World字符串; 1.创建一个maven工程 2.导入依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>sprin

qq_42020405的博客 630

STM32嵌入式开发实战:如何用miniLZO压缩算法节省70%存储空间(附完整工程)

本文详细介绍了如何在STM32嵌入式开发中使用miniLZO无损压缩算法实现高达70%的存储空间节省。通过对比分析不同轻量级算法,重点讲解miniLZO的内存优化配置、分块压缩策略和完整工程实现,帮助开发者有效解决嵌入式系统中的存储瓶颈问题。

ss78901的博客 881

ROS应用之如何配置RTOS满足机器人系统中的实时要求

实时操作系统(RTOS)基本概念实时操作系统(RTOS)是设计用于实时应用的操作系统,其主要目标是在确定的时间内完成任务。RTOS的任务调度算法和优先级控制机制能够确保高优先级任务按时完成。精确的传感器数据采集:传感器数据需要在规定时间内采集并传输给控制系统。快速响应外部事件:对于控制系统,需要确保指令在最短的时间内得到响应。任务的调度周期:任务的周期可以通过公式计算,其中 ftask 是任务的调度频率。优先级分配。

weixin_68094467的博客 1008

springboot练习

file-》import-》搜索maven-》maven project-》导入成功修改properties中相关的数据库连接参数。

qq_65450191的博客 417

跨越移植陷阱:ESP-IDF下LVGL与ILI9341的组件化集成与常见避坑指南

本文详细解析了在ESP-IDF环境下将LVGL图形库与ILI9341显示屏驱动进行组件化集成的完整流程。重点介绍了移植过程中的关键配置策略、内存管理优化技巧以及常见问题解决方案,帮助开发者有效规避内存溢出、显示异常等典型陷阱,实现高效稳定的嵌入式GUI开发。

yhn456789的博客 623

基于SpringBoot的个人记账系统 功能完善 界面漂亮 下载即可以运行

本次介绍的基于SpringBoot的个人记账系统的涉及到数据库技术、UI技术、多线程技术、文件技术、图表技术等,是一个实战性很强的项目。基于SpringBoot的个人记账系统中具备的功能包括:登陆、记账、历史消费查询、分类设置、每月阈值设置、统计分析、消费账单删除、消费账单修改、预算设置、愿望管理、个人信息维护等功能。整个系统界面漂亮,有完整得源码。

bangxiecode的博客 989

C语言获取硬件信息(CPU序列号,硬盘序列号,网卡IP、MAC地址、是否插入网线)

本文主要介绍Linux和Windows下使用C语言获取各种硬件信息,包括CPU序列号、硬盘序列号、网卡信息(包括网卡名字、IP地址、MAC地址、网卡是否插入网线等)。

叶落花枯的博客 9378

iPhone用户必看:不装App也能搞定GitHub 2FA验证的3种方法(附恢复码管理技巧)

本文为iPhone用户提供了无需安装第三方App即可完成GitHub双重身份验证(2FA)的三种原生方案:利用相机扫码与iCloud钥匙串自动填充、使用iCloud钥匙串内置的TOTP验证码生成器,以及借助Safari浏览器扩展。文章详细解析了每种方法的操作步骤、适用场景,并重点强调了恢复码的安全管理与多层备份策略,帮助开发者在提升账户安全的同时,享受苹果生态的无缝便捷体验。

weixin_29324401的博客 654

springboot个人记账管理系统设计与实现 (案例分析)-附源码

个人记账管理系统主要功能模块包括用户管理、收入类型管理、财务收入管理、支出类型管理、财务支出管理、资金计划管理,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,使用Java语言,基于B/S架构,后端部分采用Springboot框架进行开发,数据方面主要采用的是微软的MySQL关系型数据库来作为数据存储媒介,实现了本系统的全部功能。

VX_BSDZ1988的博客 5014

遥感数据下载——FIRM:VIIRS火点数据、MODIS火点数据简介及下载

一、FIRMS(Fire Information for Resoutce Management System) 网站链接:https://firms.modaps.eosdis.nasa.gov/map/ 这个网站上对VIIRS及MODIS的火灾数据进行了显示,可以进行按日期、产品类别等动态的展示火点数据或火烧迹地,同时也提供了数据下载控件。高级选择中还可以进行数据统计结果展示。 二、VIIR...

knkn123的博客 3万+

springboot个人记账系统--附源码70415

该系统采用Java语言进行后端开发,并以MySQL作为数据库支撑,系统前端界面简洁直观,后端通过Springboot框架实现业务逻辑分层。在开发系统前先对用户的需求进行深入分析,通过详细的需求分析,明确了系统需要支持的主要功能模块包括账户信息管理、收入信息管理、支出信息管理、提醒条件管理、提醒信息管理、预算信息管理等............

DZBS2000的博客 816

pycharm一直选择不了conda正确路径弹框报错:latinit property envs_dirs has not been initialized...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 2917

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【可白嫖源码】毕业设计—springboot个人记账管理系统设计与实现 (案例分析)

个人记账管理系统主要功能模块包括用户管理、收入类型管理、财务收入管理、支出类型管理、财务支出管理、资金计划管理,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,使用Java语言,基于B/S架构,后端部分采用Springboot框架进行开发,数据方面主要采用的是微软的MySQL关系型数据库来作为数据存储媒介,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。

VX_BYSJ8341的博客 2175

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【原创】springboot+vue个人财务记账管理系统设计与实现

基于springboot+vue的个人财务记账管理系统,主要在提供管理员和广大用户使用。 管理员:用户信息管理;收支类型管理;公告信息管理;个人信息;密码修改; 用户:注册、登录系统;首页(收入支出图表统计);银行卡号管理;收支类型查看;收支账单;心愿目标;备忘录;公告信息;修改个人信息;修改密码。

计算机软件编程,包含Java、Php、Python、前后端、数据库等实战项目 2769

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

springboot毕设个人记账软件程序+论文

最后,我的便签模块为用户提供灵活的笔记记录功能,用户可以在此记录与财务相关的任何信息,如财务目标、投资心得等,增强软件的个性化与实用性。因此,开发一款集记录、分析、提醒等功能于一体的个人记账软件,不仅能够帮助用户清晰地掌握个人财务状况,还能提供合理的消费建议和预算规划,从而提高财务管理效率,成为当前市场上亟待解决的问题。此外,通过引入便签功能,增强软件的实用性,使用户能够记录与财务相关的其他重要信息,如账单提醒、投资计划等,进一步提升用户的财务管理体验。任务分析、设计与实现,文档撰写。

嘉佑学姐--毕设 937

基于SpringBoot的家庭记账管理系统的设计与实现

它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个开发过程首先对家庭记账系统进行需求分析,得出家庭记账系统主要功能。接着对家庭记账系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计等;详细设计主要包括家庭记账系统数据库访问的实现,主要功能模块的具体实现,模块实现关键代码等。最后对家庭记账系统进行了功能测试,并对测试结果进行了分析总结,得出家庭记账系统存在的不足及需要改进的地方。

各类程序设计成品、文档、学习资料 6599

个人记账|基于springboot + vue个人记账系统(源码+数据库+文档)

本文介绍了一个基于SpringBoot+Vue的个人记账系统开发项目。系统采用前后端分离架构,后端使用SpringBoot框架简化配置,前端采用Vue.js实现响应式界面,数据库选用MySQL存储数据。文章详细说明了系统设计原则、技术选型依据,并提供了功能演示、代码示例和测试用例。项目由大厂开发经验的技术专家指导,包含完整源码和开发文档,适合作为计算机专业毕业设计选题参考。文末提供了获取源码的联系方式,该项目具有实际应用价值和技术学习意义。

Coder-coco的博客 648

Springboot基于springboot线上记账本y8xwk

Springboot基于springboot线上记账本y8xwk本系统(程序源码数据库调试部署开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容。

cccc_cz的博客 856

springboot毕设个人记账服务系统程序+论文

在当今快节奏的生活中,个人财务管理成为了许多人关注的重点。通过智能化的数据分析和处理,系统能够为用户提供个性化的财务管理建议,帮助用户合理规划财务,避免不必要的开支,实现财富的稳健增长。[4] 刘小玲, 李慧云, 殷珊珊, 贾少华, 许杰辉, 郝颖. 一种基于软件测试任务的信息化管理系统的原型设计[J]. 现代信息科技, 2024, 8 (12): 91-95。[5] 陈湘瑾, 于孔亮, 祖子帅, 修昂. 基于数据库和Java的宿舍管理系统[J]. 科学技术创新, 2021, (09): 96-97。

嘉佑学姐--毕设 1191

vue+springboot+个人财务记账系统

基于vue+springboot个人财务记账系统通过MySQL数据库与springboot+vue框架进行开发

wanglindda的博客 458

springboot基于Android的记账系统

Spring Boot基于Android的记账系统是一款结合了Spring Boot后端框架与Android前端平台的财务管理工具。以下是对该系统的详细介绍:一、系统概述该系统充分利用了Spring Boot的轻量级、高效和RESTful API支持,以及Android平台的便捷性和用户基础,为用户提供了随时随地的记账服务。它旨在帮助用户更好地管理个人或家庭的财务,实现财务目标。二、技术架构。

qq_1406299528的博客 908

贝格个人记账系统springboot+vue

这是一个基于JavaWeb和MySQL开发的个人记账系统,适合编程初学者学习参考。系统采用SpringBoot+Vue技术栈,包含管理员和用户两个角色:管理员可管理新闻、收支信息、预算、备忘录等数据;用户端可记录收支、设置预算、管理投资理财等功能。开发环境为IDEA2021+Tomcat8+JDK1.8+MySQL5.7+Maven3.8,包含完整的前后端代码和运行说明,项目经过调试确保可正常运行。

wanglindda的博客 734
上一篇: 关于配置远程仓库gitee无法连接配置微服务的问题
下一篇: 3分钟上传文件资源到本地仓库?看着一片就够啦
Xiao艾扶
博客等级 码龄7年 187粉丝 93原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xiao艾扶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值