基于SpringBoot+Vue+uniapp的个人财务系统的详细设计和实现

详细视频演示

请联系我获取更详细的演示视频

项目运行截图

技术框架

后端采用SpringBoot框架

Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约定大于配置的方式,大大简化了应用程序的配置工作。开发者不再需要手动配置大量的 XML 文件或繁琐的注解,框架提供了默认的配置,根据项目的依赖关系和约定,自动完成配置。Spring Boot 使用Maven或 Gradle 进行构建,自动下载项目依赖,并提供了许多插件简化构建过程。开发者可以使用 Spring Initializr 来生成一个基础的项目结构,然后根据需要选择所需的依赖。

前端框架Vue

Vue.js的设计目标之一是使其尽可能简单、易于理解和上手。Vue 提供了直观的 API,使开发者能够轻松地构建交互式的用户界面。Vue.js 提供了简单而强大的数据绑定机制,通过使用指令(例如 v-model)可以实现视图和数据的双向绑定。当数据发生变化时,视图会自动更新,反之亦然,使得开发者不必手动处理 DOM 操作。Vue.js 提供了一组生命周期钩子函数,允许开发者在组件的不同阶段执行自定义逻辑。这包括创建、挂载、更新和销毁等阶段,为开发者提供了更多灵活性。

可行性分析

可行性分析是每开发一个项目必不可少的一部分,可行性分析可以直接影响一个系统的存活问题,针对开发意义进行分析,还有就是是否可以通过所开发的系统来弥补传统手工统计模式的不足,是否能够更好的解决阿博图书馆管理系统存在的问题等,通过对该阿博图书馆管理系统的开发设计,不仅能够逐步减少工作人员的工作量,而且还可以进行高效工作和管理。所以该系统的开发实现了最大的意义和价值,在系统完成后,利益是否大过于成本,是否能够达到预期效果,这些方面都要进行可行性分析,再通过分析之后,就可以决定是否开发此系统。该阿博图书馆管理系统的开发设计中,以下几点进行了可行性分析:技术可行性:通过Java技术的采用,由于该技术不断成熟,所以使用该技术设计阿博图书馆管理系统是具有可行性的。经济可行性:在开发过程中,系统完成后的利益是否大过于开发成本。操作可行性:阿博图书馆管理系统的开发设计中,方便用户的可操作性和实用性。

系统测试

从多个角度进行测试找到系统中存在的问题是本系统首要的测试目的,通过功能测试寻找出系统缺陷并改正,确保系统没有缺陷。在测试过程中证明系统满足客户需求,发现问题和不足及时改正。测试完成之后得出测试结论。

系统测试的目的

系统测试是必不可少且考验耐心的过程。其重要性在于,它是保证系统质量和牢靠性的最后一道关,也是整个系统开发过程的最后一次检查。

系统测试主要是为了避免用户在使用时发生问题,增强用户体验感,为了不影响用户的使用,我们需要从多角度、多思路去考虑系统可能遇到的问题,通过不同的模拟场景来发现缺陷并解决问题。在测试的过程中也可以了解到该系统的质量情况,系统功能是否健全,系统逻辑是否顺畅。一个合格的系统测试过程完成后将大大提升系统质量和使用感。测试的目标是验证系统是否符合需求规格说明书的定义,并找出与需求规格说明书不符合或与之冲突的内容。测试过程中一定站在用户的角度考虑问题,避免一些不切实际的场景,浪费测试时间,从而可能会引起问题导致预期结果与实际结果不符。

系统功能测试

对系统功能模块进行测试,通过点击、输入边界值和必填项非必填项的验证等方法进行一系列的黑盒测试。通过编写测试用例,根据测试用例中的内容进行测试,最后得出测试结论。

登录功能测试方案:当需要登入该系统时,通过账户密码等功能点进行验证,用户在输入时需要输入与数据库内存储的数据匹配的内容,当其中某项输入错误时系统将提示输入错误。此界面对角色权限也有相应的校验,当用户角色的帐号选择管理员角色登录时,也会报错。登录功能测试用例如下表所示。

输入数据

预期结果

实际结果

结果分析

用户名:guanliyuan 密码:123456 验证码:正确输入

登入系统

成功登入系统

和估算结果一样

用户名:guanliyuan 密码:111111 验证码:正确输入

密码错误

密码错误,请重新输入密码

和估算结果一样

用户名:guanliyuan 密码:123456 验证码:错误输入

验证码错误

验证码信息错误

和估算结果一样

用户名:空 密码:123456 验证码:正确输入

用户名必填

请输入用户名

和估算结果一样

用户名:guanliyuan 密码:空 验证码:正确输入

密码错误

密码错误,请重新输入密码

和估算结果一样

用户管理功能测试方案:用户管理主要有添加、编辑、删除、查找用户功能。添加用户时,必填项不填,检验系统是否有非空检验;添加已有的用户信息,检验是否提示用户名已被使用;删除用户信息,系统将检验是否进行此操作;更改用户信息,更改用户信息后页面是否可以展示出来。用户管理测试用例如下表所示。

输入数据

预期结果

实际结果

结果分析

填入用户基本信息

添加成功,在用户列表中显示

该用户出现在在列表中

和估算结果一样

修改用户信息

编辑成功,修改信息成功被修改

用户信息被修改

和估算结果一样

选中删除用户

系统询问是否删除用户,确认后用户被删除

系统询问是否删除用户,确认后查找不到用户信息

和估算结果一样

添加用户时不填用户名

提示用户名不能为空

提示用户名不能为空

和估算结果一样

填入已有用户名

添加失败,提示用户名重复

添加失败,提示用户名重复

和估算结果一样

数据库表设计

列名

数据类型

长度

约束

id

int

11

PRIMARY KEY

addtime

行2内容

行2内容

DEFAULT NULL

jieyuedanhao

varchar

64

DEFAULT NULL

tushubianhao

varchar

64

DEFAULT NULL

tushumingcheng

varchar

12

DEFAULT NULL

fakuanshuoming

varchar

64

DEFAULT NULL

fakuanjine

varchar

64

DEFAULT NULL

fakuanriqi

varchar

64

DEFAULT NULL

yonghuming

varchar

64

DEFAULT NULL

shouji

varchar

64

DEFAULT NULL

代码参考

/**
 * 通用接口
 */
@RestController
public class CommonController{
	@Autowired
	private CommonService commonService;
	
	@Autowired
	private ConfigService configService;
	
	private static AipFace client = null;
	
	private static String BAIDU_DITU_AK = null;
	
	@RequestMapping("/location")
	public R location(String lng,String lat) {
		if(BAIDU_DITU_AK==null) {
			BAIDU_DITU_AK = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "baidu_ditu_ak")).getValue();
			if(BAIDU_DITU_AK==null) {
				return R.error("请在配置管理中正确配置baidu_ditu_ak");
			}
		}
		Map<String, String> map = BaiduUtil.getCityByLonLat(BAIDU_DITU_AK, lng, lat);
		return R.ok().put("data", map);
	}
	
	/**
	 * 人脸比对
	 * 
	 * @param face1 人脸1
	 * @param face2 人脸2
	 * @return
	 */
	@RequestMapping("/matchFace")
	public R matchFace(String face1, String face2) {
		if(client==null) {
			/*String AppID = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "AppID")).getValue();*/
			String APIKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "APIKey")).getValue();
			String SecretKey = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "SecretKey")).getValue();
			String token = BaiduUtil.getAuth(APIKey, SecretKey);
			if(token==null) {
				return R.error("请在配置管理中正确配置APIKey和SecretKey");
			}
			client = new AipFace(null, APIKey, SecretKey);
			client.setConnectionTimeoutInMillis(2000);
			client.setSocketTimeoutInMillis(60000);
		}
		JSONObject res = null;
		try {
			File file1 = new File(ResourceUtils.getFile("classpath:static/upload").getAbsolutePath()+"/"+face1);
			File file2 = new File(ResourceUtils.getFile("classpath:static/upload").getAbsolutePath()+"/"+face2);
			String img1 = Base64Util.encode(FileUtil.FileToByte(file1));
			String img2 = Base64Util.encode(FileUtil.FileToByte(file2));
			MatchRequest req1 = new MatchRequest(img1, "BASE64");
			MatchRequest req2 = new MatchRequest(img2, "BASE64");
			ArrayList<MatchRequest> requests = new ArrayList<MatchRequest>();
			requests.add(req1);
			requests.add(req2);
			res = client.match(requests);
			System.out.println(res.get("result"));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			return R.error("文件不存在");
		} catch (IOException e) {
			e.printStackTrace();
		} 
		return R.ok().put("data", com.alibaba.fastjson.JSONObject.parse(res.get("result").toString()));
	}

数据库脚本

CREATE TABLE `yonghu` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `yonghuming` varchar(200) NOT NULL COMMENT '用户名',
  `mima` varchar(200) NOT NULL COMMENT '密码',
  `xingming` varchar(200) DEFAULT NULL COMMENT '姓名',
  `xingbie` varchar(200) DEFAULT NULL COMMENT '性别',
  `touxiang` varchar(200) DEFAULT NULL COMMENT '头像',
  `shouji` varchar(200) DEFAULT NULL COMMENT '手机',
  `shenfenzheng` varchar(200) DEFAULT NULL COMMENT '身份证',
  PRIMARY KEY (`id`),
  UNIQUE KEY `yonghuming` (`yonghuming`)
) ENGINE=InnoDB AUTO_INCREMENT=1616222324596 DEFAULT CHARSET=utf8mb3 COMMENT='用户';
CREATE TABLE `messages` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `userid` bigint NOT NULL COMMENT '留言人id',
  `username` varchar(200) DEFAULT NULL COMMENT '用户名',
  `content` longtext NOT NULL COMMENT '留言内容',
  `reply` longtext COMMENT '回复内容',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1616222424131 DEFAULT CHARSET=utf8mb3 COMMENT='留言板';
CREATE TABLE `token` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
  `userid` bigint NOT NULL COMMENT '用户id',
  `username` varchar(100) NOT NULL COMMENT '用户名',
  `tablename` varchar(100) DEFAULT NULL COMMENT '表名',
  `role` varchar(100) DEFAULT NULL COMMENT '角色',
  `token` varchar(200) NOT NULL COMMENT '密码',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
  `expiratedtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COMMENT='token表';

获取源码

我们有上万多套源码,欢迎咨询。
可定制、修改、部署、讲解、代写文档、PPT。

获取源码查看底部卡片或者顶部名字

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux下编译鸿蒙版curl、openssl

随着鸿蒙系统的正式发布日益临近&#xff0c;我们预见到在适配过程中&#xff0c;部分开发者可能需要编译特定版本的库以确保兼容性&#xff0c;比如编译curl-7.81和openssl-1.1.1m&#xff08;大家可以直接访问它们的官方网站下载所需的版本&#xff09;。 接下来&#xff0c…

k8s的部署

一、K8S简介 Kubernetes中文官网&#xff1a;Kubernetes GitHub&#xff1a;github.com/kubernetes/kubernetes Kubernetes简称为K8s&#xff0c;是用于自动部署、扩缩和管理容器化应用程序的开源系统&#xff0c;起源于Google 集群管理工具Borg。 Kubernetes集群组件逻辑图…

算法专题七: 分治归并

目录 1. 排序数组2. 交易逆序对的总数3. 计算右侧小于当前元素的个数4. 翻转对 1. 排序数组 算法思路: 本道题使用归并的思路进行排序, 先讲数组分为左右两个区间, 然后合并两个有序数组. class Solution {vector<int> tmp; public:vector<int> sortArray(vector&…

[含文档+PPT+源码等]精品基于php实现的原生微信小程序心理健康服务系统的设计与实现

基于PHP实现的原生微信小程序心理健康服务系统的设计与实现背景&#xff0c;可以从以下几个方面进行详细阐述&#xff1a; 一、技术背景 PHP技术&#xff1a; 广泛应用&#xff1a;PHP是一种开源的服务器端脚本语言&#xff0c;广泛用于Web开发领域。其丰富的函数库和灵活的语…

Redis-04 主从架构原理与搭建及主从优化方案

生产中使用Redis往往非单机部署&#xff0c;虽然根据前文已经对redis做了数据持久化处理&#xff0c;但是如果Redis服务宕机&#xff0c;所有的数据操作都将直接进入数据库&#xff0c;如果操作量很大&#xff0c;则相当于出现缓存穿透的现象。故生产中使用Redis一般采取【主从…

鸿蒙系统开发快速入门教程

一、开发环境准备 1. 下载并安装DevEco Studio DevEco Studio是华为官方提供的鸿蒙应用开发IDE&#xff0c;集成了开发、调试、模拟运行等功能&#xff0c;是鸿蒙开发的首要工具。 下载地址&#xff1a;前往华为开发者官网下载DevEco Studio。安装步骤&#xff1a;按照官方提…

类文件结构

文章目录 类文件结构字节码Class 文件结构总结魔数&#xff08;Magic Number&#xff09;Class 文件版本号&#xff08;Minor&Major Version&#xff09;常量池&#xff08;Constant Pool&#xff09;访问标志(Access Flags)当前类&#xff08;This Class&#xff09;、父类…

Luminar Neo v1.21.0.13934 图像编辑软件绿色便携版

skylum Luminar Neo 是一款由未来 AI 技术驱动的创意图像编辑器。并且支持微软Windows及苹果Mac OX系统&#xff0c;它使创作者能够将他们最大胆的想法变为现实并乐在其中。借助 Luminar Neo 领先的 AI 技术和灵活的工作流程&#xff0c;完成创意任务并获得专业品质的编辑结果。…

Python_函数式编程(内存管理机制)

将压缩文件减压&#xff0c;可以看到有很多文件&#xff0c;主要关心两个&#xff08;Include、Objects&#xff09;在Include目录下object.h中可以查看创建对象的结构体。 在创建对象时&#xff0c;每个对象至少内部4个值&#xff0c;PyObject结构体(上一个对象、下一个对象、…

Docker-Consul概述以及集群环境搭建

文章目录 一、Docker consul概述二、consul 部署1.consul服务器2.registrator服务器&#xff08;客户端&#xff09;2.consul-template&#xff08;在consul服务器&#xff09;3.consul 多节点 一、Docker consul概述 容器服务更新与发现&#xff1a;先发现再更新&#xff0c;…

51单片机快速入门之 LED点阵 结合74hc595 的应用 2024/10/16

51单片机快速入门之 LED点阵 结合74hc595 的应用 74HC595是一种常用的数字电路芯片&#xff0c;具有串行输入并行输出的功能。它主要由两个部分组成&#xff1a;一个8位的移位寄存器和一个8位的存储寄存器。数据通过串行输入管脚&#xff08;DS&#xff09;逐位输入&#xff0…

再Android10上实现检测AHD摄像头是否接入

项目有个需要&#xff0c;需要知道tp9951是否接入AHD摄像头 1&#xff0c;驱动层可以通过读取寄存器的值来检测是否接入AHD摄像头 tp9951_write_reg(0x40, 0x00); //select decoder page tp9951_write_reg(0x41, ch); val tp9951_read_reg(TP_INPUT_STATUS_REG);…

通过华为鲲鹏认证的软件产品如何助力信创产业

软件通过华为鲲鹏认证与信创产业有着密切的联系。鲲鹏认证是华为推动信创产业发展的一项重要举措&#xff0c;通过该认证&#xff0c;软件可以在华为的生态系统中实现更好的兼容性和性能优化&#xff0c;从而推动信创产业的全面发展和国产化替代。 鲲鹏认证的定义和重要性 鲲鹏…

python基于大数据的电影市场预测分析

一、摘要 智慧是改变生活和生产的一种来源&#xff0c;那么智慧的体现更大程度上是对于软件技术的改变。当今社会&#xff0c;好的思路&#xff0c;好的创新方式往往是改变人们生活的一种来源。最常见最直接的形式就是各种软件的创始思路&#xff0c;京东因为非典的流行才能够…

[全国/全省/全市]初赛知识点复习大汇总

目录 计算机结构与组成原理 计算机发展及应用 1、第一台电子计算机的诞生&#xff1a; ENIAC 2、第一台具有存储程序功能的计算机&#xff1a;EDVAC。 图灵 计算机发展阶段 世界上最快的超级计算机 计算机应用 计算机保护知识产权 计算机病毒 硬件系统的组成 概述 …

分享一个图片RGB以及16进制颜色提取的在线网站

IMAGECOLORPICKER.com 网站链接:传送门呢 可以在线上传自己的图片,然后识别图片的颜色,比较方便。

2024年第九届数维杯大学生数学建模挑战赛赛题和数维杯国际数学建模 LaTeX 模板

2024年数维杯国际大学生数学建模挑战赛参赛规则 数维杯大学生数学建模竞赛每年分为两场&#xff0c;每年上半年为数维杯全国赛(5月下旬) &#xff0c;下半年为数维杯国际挑战赛(11月下旬)&#xff0c;已连续成功举办九届&#xff0c;2023年数维杯国际大学生数学建模挑战赛共有近…

【论文阅读】DL-SRIR综述2023

0. 摘要 SISR与DL的介绍 单图像超分辨率(SISR)是计算机视觉的一个重要研究领域,其目的是从低分辨率(LR)图像中恢复清晰、高分辨率(HR)图像。 随着深度学习理论和技术的快速发展,深度学习被引入到图像超分辨率(SR)领域,并在许多领域取得了远远超过传统方法的成果。 本文框架…

Mapbox GL 加载GeoServer底图服务器的WMS source

貌似加载有点慢啊&#xff01;&#xff01; 1 这是底图 2 这是加载geoserver中的地图效果 3源码 3.1 geoserver中的网络请求 http://192.168.10.10:8080/geoserver/ne/wms?SERVICEWMS&VERSION1.1.1&REQUESTGetMap&formatimage/png&TRANSPARENTtrue&STYL…

ImportError: /../lib/libstdc++.so.6: version `GLIBCXX_3.4.29解决方案

今天跑实验遇到了一个头疼的报错&#xff0c;完全看不懂&#xff0c;上网查了一下成功解决&#xff0c;但是网上的指令没法直接拿来用&#xff0c;所以在这里记录一下自己的解决方案。 报错信息&#xff1a; Traceback (most recent call last):File "/home/shizhiyuan/c…