SpringBoot+Vue+Element-UI实现家庭理财记账管理系统
文末获取源码
开发语言Java
框架springboot
JDK版本JDK1.8
服务器tomcat7
数据库mysql 5.7/8.0
数据库工具Navicat11
开发软件eclipse/myeclipse/idea
Maven包Maven3.3.9
浏览器谷歌浏览器
前言介绍
家庭理财记账系统主要是为了提高用户的工作效率和更方便快捷的满足用户,更好存储所有数据信息及快速方便的检索功能,对家庭理财记账系统的各个模块是通过许多今天的发达家庭理财记账系统做出合理的分析来确定考虑用户的可操作性,遵循开发的系统优化的原则,经过全面的调查和研究。
家庭理财记账系统所要实现的功能分析,对于现在网络方便,家庭理财记账系统要实现管理员、用户可以直接在平台上进行查看自己所需数据信息,这样既能节省管理的时间,不用再像传统的方式,如果用户想要进行交流信息,必须双方见面进行沟通交流所需的信息,由于很多人时间的原因,没有方法进行见面沟通交流,真的很难满足用户的各种需求。所以家庭理财记账系统的开发不仅仅是能满足用户的需求,还能提高用户的使用率。所以系统管理必须要更快捷、有效、长期地为用户或潜在用户传递信息。建立一个家庭理财记账系统更好的交流平台,提高系统对用户交流后的信息服务的效率。此系统可以满足大多数用户所提出的问题,用户可以根据自身的需求获取相应的服务,为系统管理提供了快捷的途径。
家庭理财记账系统用户端要求在浏览器上可以运行,主要实现了管理端;首页、个人中心、用户管理、家庭账户管理、收入分类管理、支出分类信息管理、家庭收入管理、家庭支出管理、银行储蓄管理、系统管理、投资理财管理,用户端;首页、家庭账户管理、收入分类管理、银行储蓄管理、投资理财管理等主要功能模块的操作和管理。
系统结构图
数据库设计表
此系统需要后台数据库,下面介绍数据库中的各个表的详细信息。
表1gonggao表
列名
数据类型
长度
约束
id
bigint
19
NOT NULL
addtime
varchar
2000
NULL DEFAULT
gonggaobianhao
tinyint
2
NULL DEFAULT
biaoti
varchar
2
NOT NULL
xiangguantupian
varchar
2
NOT NULL
gonggaoneirong
varchar
2
NOT NULL
faburiqi
varchar
2
NOT NULL
表2licai表
列名
数据类型
长度
约束
id
int
11
NOT NULL
addtime
varchar
255
NOT NULL
licaihaoma
varchar
255
NOT NULL
licaimingcheng
varchar
2
NOT NULL
licaijianjie
varchar
2
NOT NULL
xiangguantupian
varchar
2
NOT NULL
licaileixing
varchar
2
NOT NULL
fuzeren
varchar
2
NOT NULL
suoshugongsi
varchar
2
NOT NULL
yujinianshouyi
varchar
2
NOT NULL
faburiqi
varchar
2
NOT NULL
表3liushuixinxi表
列名
数据类型
长度
约束
id
int
9
NOT NULL
addtime
char
5
NOT NULL
xiangmubianhao
char
5
NOT NULL
xiaofeimingcheng
char
5
NOT NULL
xiaofeijine
char
5
NOT NULL
xiaofeiriqi
char
5
NOT NULL
gerenzhanghao
char
5
NOT NULL
xingming
char
5
NOT NULL
xiangpian
char
5
NOT NULL
表4mubiaojihua表
列名
数据类型
长度
约束
id
int
9
NOT NULL
addtime
char
5
NOT NULL
jihuabianhao
char
5
NOT NULL
jihuamingcheng
char
5
NOT NULL
shouyifenlei
char
5
NOT NULL
shouyijine
char
5
NOT NULL
gerenzhanghao
char
5
NOT NULL
xingming
char
5
NOT NULL
xiangpian
char
5
NOT NULL
dengjiriqi
char
5
NOT NULL
系统详细设计本系统使用了java和mysql结合的结构开发了家庭理财记账系统应用,系统中所有和数据库有关系的操作都通过一个通用类来实现,大大提高了代码的耦合性,当数据库类型等信息变化后直接修改类文件就可以了,不再需要每个页面都修改。本系统解决了中文的问题,也是在配置文件中添加了编码方式的形式解决的,本系统一个大的特点是系统对数据库的操作都单独的写在了一个类里,这样对系统的所有数据库操作都只访问这个类就可以了,不要每个页面都去写数据库的操作,提高了系统的集成性。
用户端功能模块 用户注册
在用户注册页面可以填写个人账号、姓名、身份证号码、手机号码等信息,进行注册如图
用户登录在用户登录页面填写账号、密码进行登录如图
用户登录到家庭理财记账系统可以查看首页、家庭账户管理、收入分类管理、银行储蓄管理等内容,如图
家庭账户在家庭账户页面可以查看家庭账户号码、家庭账户名称、家庭账户简介、相关图片、家庭账户类型、负责人、所属公司、预计年收益、发布日期、价格等信息,如图
在用户信息页面可以填写个人账号、姓名、性别、年龄、身份证号码、手机号码、头像等信息,并可根据需要进行保存、退出登录,如图
管理端功能界面 用户管理通过填写个人账号、姓名、性别、年龄、身份证号码、手机号码、头像等信息进行详情、修改、删除操作,如图
家庭账户管理通过填写用户名,账户号,用户姓名,金额等信息进行修改、删除操作,如图
收入分类管理
通过填写收入分类名等信息进行详情、修改、删除操作,如图
支出分类信息管理
通过填写支出分类名等信息进行详情、修改、删除操作,如图
家庭收入管理通过填写用户名,用户姓名,账户号,收入分类,金额,日期,备注等信息进行详情、修改、删除操作,如图
家庭支出管理通过填写用户名,用户姓名,账户号,支出分类,金额,日期,备注等信息进行详情、修改操作,如图
部分核心代码 上传文件
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","ratypes"})
public class FileController{
@Autoired
private ConfigService configService;
@RequestMapping("/upload")
public R upload(@RequestParam("file") MultipartFile file,String type) thros Exception {
if (file.isEmpty()) {
thro ne EIException("上传文件不能为空");
}
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
File path = ne File(ResourceUtils.getURL("classpath:static").getPath());
if(!path.exists()) {
path = ne File("");
}
File upload = ne File(path.getAbsolutePath(),"/upload/");
if(!upload.exists()) {
upload.mkdirs();
}
String fileName = ne Date().getTime()+"."+fileExt;
File dest = ne File(upload.getAbsolutePath()+"/"+fileName);
file.transferTo(dest);
if(StringUtils.isNotBlank(type) && type.equals("1")) {
ConfigEntity configEntity = configService.selectOne(ne EntityWrapper().eq("name", "faceFile"));
if(configEntity==null) {
configEntity = ne ConfigEntity();
configEntity.setName("faceFile");
configEntity.setValue(fileName);
} else {
configEntity.setValue(fileName);
}
configService.insertOrUpdate(configEntity);
}
return R.ok().put("file", fileName);
}
@IgnoreAuth
@RequestMapping("/donload")
public ResponseEntity donload(@RequestParam String fileName) {
try {
File path = ne File(ResourceUtils.getURL("classpath:static").getPath());
if(!path.exists()) {
path = ne File("");
}
File upload = ne File(path.getAbsolutePath(),"/upload/");
if(!upload.exists()) {
upload.mkdirs();
}
File file = ne File(upload.getAbsolutePath()+"/"+fileName);
if(file.exists()){
HttpHeaders headers = ne HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", fileName);
return ne ResponseEntity(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
}
} catch (IOException e) {
e.printStackTrace();
}
return ne ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
家庭收入
@RestController
@RequestMapping("/jiatingshouru")
public class JiatingshouruController {
@Autoired
private JiatingshouruService jiatingshouruService;
@RequestMapping("/page")
public R page(@RequestParam Map params,JiatingshouruEntity jiatingshouru,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
jiatingshouru.setYonghuming((String)request.getSession().getAttribute("username"));
}
EntityWrapper e = ne EntityWrapper();
PageUtils page = jiatingshouruService.queryPage(params, MPUtil.sort(MPUtil.beteen(MPUtil.likeOrEq(e, jiatingshouru), params), params));
return R.ok().put("data", page);
}
@RequestMapping("/list")
public R list(@RequestParam Map params,JiatingshouruEntity jiatingshouru, HttpServletRequest request){
EntityWrapper e = ne EntityWrapper();
PageUtils page = jiatingshouruService.queryPage(params, MPUtil.sort(MPUtil.beteen(MPUtil.likeOrEq(e, jiatingshouru), params), params));
return R.ok().put("data", page);
}
@RequestMapping("/lists")
public R list( JiatingshouruEntity jiatingshouru){
EntityWrapper e = ne EntityWrapper();
e.allEq(MPUtil.allEQMapPre( jiatingshouru, "jiatingshouru"));
return R.ok().put("data", jiatingshouruService.selectListVie(e));
}
@RequestMapping("/query")
public R query(JiatingshouruEntity jiatingshouru){
EntityWrapper< JiatingshouruEntity> e = ne EntityWrapper< JiatingshouruEntity>();
e.allEq(MPUtil.allEQMapPre( jiatingshouru, "jiatingshouru"));
JiatingshouruVie jiatingshouruVie = jiatingshouruService.selectVie(e);
return R.ok("查询家庭收入成功").put("data", jiatingshouruVie);
}
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
JiatingshouruEntity jiatingshouru = jiatingshouruService.selectById(id);
return R.ok().put("data", jiatingshouru);
}
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
JiatingshouruEntity jiatingshouru = jiatingshouruService.selectById(id);
return R.ok().put("data", jiatingshouru);
}
@RequestMapping("/save")
public R save(@RequestBody JiatingshouruEntity jiatingshouru, HttpServletRequest request){
jiatingshouru.setId(ne Date().getTime()+ne Double(Math.floor(Math.random()1000)).longValue());
//ValidatorUtils.validateEntity(jiatingshouru);
jiatingshouruService.insert(jiatingshouru);
return R.ok();
}
@RequestMapping("/add")
public R add(@RequestBody JiatingshouruEntity jiatingshouru, HttpServletRequest request){
jiatingshouru.setId(ne Date().getTime()+ne Double(Math.floor(Math.random()1000)).longValue());
//ValidatorUtils.validateEntity(jiatingshouru);
jiatingshouruService.insert(jiatingshouru);
return R.ok();
}
@RequestMapping("/update")
public R update(@RequestBody JiatingshouruEntity jiatingshouru, HttpServletRequest request){
//ValidatorUtils.validateEntity(jiatingshouru);
jiatingshouruService.updateById(jiatingshouru);//全部更新
return R.ok();
}
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
jiatingshouruService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = ne SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(ne Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(ne Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper rapper = ne EntityWrapper();
if(map.get("remindstart")!=null) {
rapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
rapper.le(columnName, map.get("remindend"));
}
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yonghu")) {
rapper.eq("yonghuming", (String)request.getSession().getAttribute("username"));
}
int count = jiatingshouruService.selectCount(rapper);
return R.ok().put("count", count);
}
}
空调维修
- 我的世界电脑版运行身份怎么弄出来(我的世界
- 空调抽湿是什么意思,设置抽湿的温度有什么意
- 方太燃气灶有一个打不着火 怎么修复与排查方法
- 夏季免费清洗汽车空调的宣传口号
- 清洗完空调后出现漏水现象
- iphone6能玩什么游戏(iphone6游戏)
- 如何设置电脑密码锁屏(如何设置电脑密码锁屏
- win10删除开机密码提示不符合密码策略要求
- 电脑w7显示不是正版(w7不是正版怎么解决)
- 万家乐z8热水器显示e7解决 怎么修复与排查方法
- 1匹空调多少瓦数(1匹空调多少瓦)
- 安卓手机连接电脑用什么软件好(关于安卓手机
- 电脑网页看视频卡是什么原因(爱拍看视频卡)
- 华帝燃气灶点火器一直响然后熄火怎么办:问题
- 电脑壁纸怎么换(关于电脑壁纸怎么换的介绍)
- 冬天空调的出风口应该朝什么方向(冬天空调风