🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。
- 代码可以私聊博主获取。🌹
- 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
- 赠送开题报告模板,帮助书写开题报告。
作者完整代码目录供你选择:
- 《Springboot网站项目》400套
- 《ssm网站项目》800套
- 《小程序项目》300套
- 《App项目》500套
- 《python网站项目》600套
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡
项目演示
摘要
随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,网络化和电子化。网上管理,它将是直接管理家庭理财系统app的最新形式。本论文是以构建家庭理财系统app为目标,使用java技术制作,由前台和后台两大部分组成。着重论述了系统设计分析,系统主要包括首页、个人中心、用户管理、账户信息管理、账户支出管理、账户收入管理、系统管理等功能,以及后台数据库管理。从app设计到详细实现都根据了app的建设思想和mysql数据库的设计方法。
该系统它可以使家庭理财操作简单,使家庭理财的管理向一个更高层次前进。
本系统尝试使用ssm框架在网上架构一个动态的家庭理财系统app,以使每一用户在家就能通过系统来进行家庭理财管理。
关键词:家庭理财;ssm框架;mysql数据库
1 绪论
1.1项目背景介绍
近几年来,网络事业,特别是Internet发展速度之快是任何人都始料不及的。目前,由于Internet表现出来的便捷,快速等诸多优势,已经使它成为社会各行各业,甚至是平民大众工作,生活不可缺少的一个重要组成部分。
随着社会的发展线下管理的方式已经不可避免的显示出它在时间与空间等方面的局限性,广大的人民群众迫切的需要打破这种局限性。在这种要求下,基于网络的电子商务产生了。它的出现不但解决了传统管理方式的缺点,而且给了广大用户更大的选择空间,促进了家庭理财的优化管理,有效的避免了家庭理财管理缭乱的局面。所以像家庭理财系统app这种电子商务的发展壮大也是不可避免的。
家庭理财系统app作为一种典型的电子商务系统也迅速的发展并深入人们的日常生活中,它使用户足不出户就可以管理自己的账户信息、账户支出、账户收入等,最大化减缩了用户的管理时间,提高了管理效率。
1.2课题研究现状
在国外很多发达国家,软件产业早已得到全面普及,但我国经济已不断发展,不断引进国外信息化建设,使国内软件行业得以不断发展,在摸索中进步,最终也得到一些成果,我国的软件业迎来了高速的发展,使更多的软件系统得以开发出来,从此逐渐地改变人们的生活工作方式。但是,对于信息化的建设,与很多发达国家相比,由于信息化程度的落后以及经费的不足,我国的家庭理财系统app开发方面还是相对落后的,因此,要不断的努力探索,争取开发出一个实用的信息化的家庭理财系统app,来实现行家庭理财管理的信息化。因此本课题以家庭理财为例,目的是开发一个实用的家庭理财系统app。
家庭理财系统app的开发运用java技术,MIS的总体思想,以及MYSQL等技术的支持下共同完成了该系统的开发,实现了家庭理财管理的信息化,使用户体验到更优秀的家庭理财系统app,管理员管理操作将更加方便,实现目标。
1.3本论文的研究内容
本文主要探讨了家庭理财系统app。针对线下管理方式中管理不便与效率低的缺点,本文将电子商务和计算机技术结合起来,开发出管理更便捷,效率更高的家庭理财系统app。本文并对其详细的设计方案,实现技术和运行情况做了分析和研究,最后对未来的工作做了研究与探讨。本文重点研究了以下几个方面:
(1)系统的体系结构,主要功能模块,主要数据的工作流程,后台数据库的设计,数据库配置与连接;
(2)系统各功能模块的详细设计,开发及其关键技术。
1.4本论文的组织结构
全文主要包括以下几个部分:
第一部分主要介绍了项目背景以及课题研究现状和论文的主要内容等。
第二部分介绍了系统设计与实现涉及到的技术知识和相关开发工具,主要包括java技术,Android技术,B/S架构和mysql 数据库管理系统。
第三部分在系统设计目标,系统功能需求,系统性能需求,开发环境等方面对系统进行了详细的论述分析。
第四部分对系统总体设计,数据库设计等几个方面进行了详细的论述。
第五部分主要对系统的主要功能模块的实现细节进行了详细的阐述。
第六部分对系统的功能测试以及测试结果进行了描述。
最后得出了结论,说明了系统的功能完整性和实用性以及系统的不足之处和对系统的进一步展望。
2系统关键技术及工具简介
系统开发过程中设计的关键技术是系统的核心,而开发工具则会影响的项目开发的进程和效率。第二部分便描述了系统的设计与实现等相关开发工具。
2.1 Java语言简介
Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备了显著的优势和广阔的前景,它是面向对象的,分布式的,动态的,具有平台无关性、安全性、健壮性。Java语言的基本语句语法和C++一样,但是它面向对象的技术更加彻底,因为Java要求将所有的内容都必须封装成类,把类作为程序的基本单位。由于不允许类外有变量、方法。 Java语言的分布式体现在数据分布和操作分布,它是面向网络的语言,可以处理TCP/IP协议,它也支持客户机/服务器的计算模式。Java语言的动态性是指类在运行时是动态安装的,使得Java可以动态的维护程序。Java不支持指针,对内存访问的所有操作都是通过对象实例化实现的,这样就避免了指针操作中易产生的错误,同时也预防了病毒对系统的破坏和威胁。
Java语言的编程风格与C语言非常接近,它继承了C++面向对象技术的核心,它面世之后发展迅速,非常流行,对高级C语言形成了很大的冲击。业内人士称之为“一次编译、到处执行”。当然java也有缺点,在每次执行编译后,字节码都需要消耗一定的时间,在某些程度上降低了性能。但是这并不影响java成为此次设计语言的选择。Java语言简单易学,使用它的编程时间短,功能性强,开发者学习起来更简便、更快。Java的主要特性有以下几个:
1.面向对象
面向对象有四个特点:封装、继承、多态、抽象。抽象是指忽略一个问题中的次要部分,关注主要部分。多态是指对同一种消息做出的不同反应。继承是指在原有的父类方法基础上增加自己独有的方法,而不改变原来父类。
2.平台无关性、
Java编译出来的是字节码,直接由虚拟机执行。在任何平台上,只要有Java虚拟机,Java代码都能运行。
3.可靠性和安全性
Java对内存的访问都必须通过对象的实例变量来实现,避免了指针中出现的错误。
4. 多线程
Java提供了多线程功能,利用编程实现同一时间同时工作的功能。
2.2 Android技术
Android平台市场份额所占比例越来越大,使用Java语言的Android应用程序的发展将会越来越多。然而,不太可能在Android平台上部署大型企业应用,所以Android应用可能会出现在纯粹客户端的应用角色,然后通过网络和传统的大型应用互动,充当大型企业应用的客户端。
2.3 MySQL数据库简介
利用MYSQL的数据独立性、安全性等特点,在软件项目中对数据进行操作,可以保证数据准确无误,并降低了程序员的应用开发时间。
MYSQL的特点是支持多线程,能方便的对系统资源充分利用,有效提高速度,还提供多种方式途径来对数据库进行连接;MYSQL的功能相对弱小、规模也小,但本系统要求不高,MYSQL完全可以满足本网站使用。
利用MYSQL建立系统数据库,不仅有利于数据处理业务的早期整合,还能利于发展后两种数据扩展的操作。
2.4 MySQL环境配置
本系统的数据使用的是MySQL,所以要将MySQL安装到指定目录,如果下载的是非安装的MySQL压缩包,直接解压到指定目录就可以了。然后点击C:\Program Files\MySQL\bin\winMySQLadmin.exe这个文件其中C:\Program Files\MySQL是MySQL安装目录。输入winMySQLadmin的初始用户、密码(注:这不是MySQL里的用户、密码)随便填不必在意,确定之后右下角任务的启动栏会出现一个红绿灯的图标,红灯亮代表服务停止,绿灯亮代表服务正常,左击这个图标->winnt->install the service 安装此服务,再左击这个图标->winnt->start the service 启动MySQL服务。
修改MySQL数据库的root密码。用cmd进入命令行模式输入如下命令:
cd C:\Program Files\MySQL\bin
MySQLadmin -u root -p password 123
回车出现Enter password: ,这是要输入原密码. 刚安装时密码为空,所以直接回车,此时MySQL 中账号 root 的密码被改为 123 安装完毕。
2.5 B/S架构
B/S的系统是通过能上网的电脑就可以使用,它最大的优点是不需要安装专门的软件,首先浏览器向服务器发出请求,然后服务器处理请求把信息再返回给浏览器。不需要再次对数据进行存取与计算数据,只要负责显示数据来降低要求,如果说客户端像个“瘦子”,而服务器会越来越“胖”。B/S体系结构与C/S体系结构相比,最大的不同是:B/S体系的应用软件使用网络浏览器作为与用户交互的平台,而C/S则需要开发专用的应用程序。
图2-1 B/S结构图
2.6 SSM框架
开发信息管理系统的主流框架是SSM(Spring + Spring MVC + MyBatis),SSM框架web层使用Spring MVC框架,使传输前后端数据变得简单;对于业务层使用Spring作为轻量级控制反转和面向切面的容器框架;对于相关SQL操作,采用Mybatis作为持久层框架,对JDBC进行封装,使得数据库的底层面向开发者操作处于一种透明状态。
3系统需求分析
本章节主要是对系统设计目标,系统功能需求,系统性能需求,开发环境等方面对系统进行了详细的论述分析。
3.1系统设计的目标
本系统主要是针对线下管理方式中管理不便与效率低的缺点,将电子商务和计算机技术结合起来,开发出管理便捷,效率高的家庭理财系统app。该系统操作简单方便,界面友好,容易管理和维护;而且对家庭理财和管理具有较强的针对性,实用性和可操作性,可初步解决线下管理因各种因素限制,高成本等因素造成的一系列不便。
3.2系统功能性需求
对功能需求的定义,一个软件系统或组件的功能,也是网页所需提供的功能和服务。本系统的功能需求按模块进行分析,主要有用户和管理员两个功能模块。
3.2.1 功能需求
本系统的用户可分为用户模块和管理员模块两个界面组成。一个界面用于管理员登录,管理员可以管理系统内所有功能,主要有首页、个人中心、用户管理、账户信息管理、账户支出管理、账户收入管理、系统管理等功能;另外一个界面用于用户登录,用户登录系统可以实现首页、我的等功能。
3.2.2 系统用例
本系统有主要分为两大部分组成,有用户,管理员等用例。
(1)用户模块中的用户角色是用户,用户可以通过登录进入首页后,浏览首页、我的,在我的页面可以对个人中心、账户信息、账户支出、账户收入等信息进行操作,用户模块用例图如图3-1所示。
图3-1 用户用例图
(3)管理员模块中的用户角色是管理员,管理员通过系统对可以实现app系统管理,主要包括首页、个人中心、用户管理、账户信息管理、账户支出管理、账户收入管理、系统管理等功能。管理员模块用例图如图3-2所示。
图3-2 管理员用例图
3.3系统性能需求
操作简单方便:对于该系统应便于管理员的使用,系统不应太复杂和繁琐,因此要求系统的操作尽可能简单易行。
实时性:为了展示实时性这一特点,家庭理财系统app采用精确的时间,及时更新账户信息信息等。
针对性:本系统是针对家庭理财系统app,操作简单,具有一定的针对性。
3.4对功能的总体规定
软件系统的优劣很大程度上是由系统设计的完善与否决定的。世间万物都必须遵循生老病死的法则,这是大自然的规则不能违反,软件设计也一样需要遵循系统设计规则。因此,在设计过程中必须遵循系统设计规则。
规则如下:
方便性:操作方便,操作流程合理;尽量从用户角度出发,以方便使用。如:光标移动到可点击区域时显示提示信息;操作按钮后伴随提示信息等。还支持没有计算机使用经验,使用经验较少及有较多使用经验的用户均能方便地使用本系统。
针对性:一个系统针对性越强,所能提供的功能必然越完善,用户体验肯定更好,所以应该明确指定系统针对性。
实用性:实用永远是检验一个系统是否成功的唯一标准,使用的语言再高端,使用的结构再新颖但不能满足管理员及用户的要求那就是失败。
3.5对运行环境的总体规定
系统需要在Windows XP、Win7或更新版本Windows10操作系统平台上运行,并需要安装2.0或以上版本的。
3.6开发环境
硬件需求:
CPU:Pentium以上计算机
内存: 512M以上
软件需求:
操作系统版本:Windows 7 浏览器:谷歌浏览器
开发工具:Vscode
开发语言:java
数据库:MYSQL。
4系统设计
这章节主要是对系统总体设计,数据库设计等几个方面进行了详细的论述。
4.1系统总体设计
系统总体设计即对有关系统全局问题的设计,也就是设计系统总的处理方案,又称系统概要设计。它包括系统规划与系统功能设计等内容。
家庭理财系统app主要有2类用户,可分为2个模块。分别是用户模块,管理员模块,详细规划如图4-1所示。
图4-1 家庭理财系统app规划图
其中各子模块的主要功能如下:
1、用户登录:用户进入网页先输入用户名与密码,选择权限登录。
2、新用户注册:新用户填写用户账号、密码、确认密码、用户姓名、性别、手机号码、邮箱、身份证号;完成注册。
3、查看账户信息:用户登录成功后,能够查找账户信息进行管理。
4、首页内容管理:管理员登录以后,可以对首页、个人中心、用户管理、账户信息管理、账户支出管理、账户收入管理、系统管理等进行管理。
4.2数据库设计
数据库是一个软件项目的根基,它决定了整个项目代码的走势,同时也决定了整个项目在后期的维护以及升级的难易程度。
4.2.1 数据库概念设计
根据家庭理财系统app的功能需求,对数据库进行分析,得到相应的数据,设计用户需要的各种实体,以及相互之间的关联,为逻辑结构设计铺好路。根据所实体内的各种具体信息得于实现。
1. 账户信息实体
账户信息实体包括账户名称、金额、登记时间、备注、用户账号、用户姓名、头像。账户信息实体图如图4-2所示:
图4-2. 账户信息实体图
2. 账户支出实体
账户支出实体包括账户名称、金额、支出时间、用户账号、用户姓名、头像、支出详情;账户支出实体图如图4-3所示:
3. 用户信息实体
用户信息实体包括用户账号、密码、用户姓名、头像、性别、手机号码、邮箱、身份证号等属性。用户信息实体图如图4-4所示:
4.2.2 数据库逻辑设计
数据库概念结构设计完成后,就可以将数据库概念转为数据库支持的数据模型。一个符合规范的数据库设计不仅可以在设计的时候让程序设计员逻辑更为清晰,更能让分析程序的人容易理清数据间的关系。本家庭理财系统app的主要数据库,根据上述的实体对象以及功能分析可得出需要设计的表,表的逻辑结构如下:
表4-1:配置文件
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 |
表4-2:账户支出
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
zhanghumingcheng | varchar | 200 | 账户名称 | ||
jine | int | 金额 | |||
zhichuxiangqing | longtext | 4294967295 | 支出详情 | ||
zhichushijian | datetime | 支出时间 | |||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
touxiang | varchar | 200 | 头像 | ||
userid | bigint | 用户id |
表4-3:账户信息
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
zhanghumingcheng | varchar | 200 | 账户名称 | ||
jine | int | 金额 | |||
dengjishijian | datetime | 登记时间 | |||
beizhu | varchar | 200 | 备注 | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
touxiang | varchar | 200 | 头像 | ||
userid | bigint | 用户id |
表4-4:账户收入
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
zhanghumingcheng | varchar | 200 | 账户名称 | ||
jine | int | 金额 | |||
shouruxiangqing | longtext | 4294967295 | 收入详情 | ||
shourushijian | datetime | 收入时间 | |||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
touxiang | varchar | 200 | 头像 | ||
userid | bigint | 用户id |
表4-5:用户
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
yonghuzhanghao | varchar | 200 | 用户账号 | ||
mima | varchar | 200 | 密码 | ||
yonghuxingming | varchar | 200 | 用户姓名 | ||
touxiang | varchar | 200 | 头像 | ||
xingbie | varchar | 200 | 性别 | ||
shoujihaoma | varchar | 200 | 手机号码 | ||
youxiang | varchar | 200 | 邮箱 | ||
shenfenzhenghao | varchar | 200 | 身份证号 |
表4-6:用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
username | varchar | 100 | 用户名 | ||
password | varchar | 100 | 密码 | ||
role | varchar | 100 | 角色 | 管理员 | |
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP |
表4-7:token表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
userid | bigint | 用户id | |||
username | varchar | 100 | 用户名 | ||
tablename | varchar | 100 | 表名 | ||
role | varchar | 100 | 角色 | ||
token | varchar | 200 | 密码 | ||
addtime | timestamp | 新增时间 | CURRENT_TIMESTAMP | ||
expiratedtime | timestamp | 过期时间 | CURRENT_TIMESTAMP |
表4-8:理财资讯
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
introduction | longtext | 4294967295 | 简介 | ||
picture | varchar | 200 | 图片 | ||
content | longtext | 4294967295 | 内容 |
app实现是新系统开发工作的最后一个阶段。它是将结构化系统设计的成果变成可实际运行的系统的过程。这一部分主要对app的主要功能模块的实现细节进行了详细的阐述。
5.1用户功能实现(app端)
按照不同功能模块,在此对系统所涉及的关键页面的实现细节进行阐述,包括页面功能描述,页面涉及功能分析,介绍以及界面展示。
系统登录: 运行系统,首先进入登录界面,按照登录界面的要求填写相应的“用户名”和“密码”以及用户类型,点击“登录”然后系统判断填写是否正确,若正确进入相应的界面,否则给出要求先注册信息。具体流程如图5-1所示。
图5-1 登录流程图
用户登录,通过输入用户名,密码,选择角色并点击登录进行系统登录操作,如图5-2所示。
图5-2用户登录界面图
用户注册,在用户注册页面通过填写用户账号、密码、确认密码、用户姓名、性别、手机号码、邮箱、身份证号等信息完成用户注册操作,如图5-3所示。
图5-3用户注册界面图
家庭理财系统app,在app首页可以查看首页、我的等内容进行详细操作,如图5-4所示。
图5-4 app首页界面图
我的,在我的页面可以对个人中心、账户信息、账户支出、账户收入等功能进行详细操作,如图5-5所示。
图5-5我的界面图
账户信息,在账户信息页面可以查看账户名称、金额、登记时间、备注、用户账号、用户姓名、头像等详细内容,进行账户支出、账户收入操作,如图5-6所示。
图5-6账户信息界面图
账户支出,在账户支出页面可以查看账户名称、金额、支出时间、用户账号、用户姓名、头像、支出详情等详细内容,如图5-7所示。
图5-7账户支出界面图
账户收入,在账户收入页面可以查看账户名称、金额、收入时间、用户账号、用户姓名、头像、收入详情等详细内容,如图5-8所示。
图5-8账户收入界面图
用户信息,在用户信息页面通过填写用户账号、密码、用户姓名、头像、性别、手机号码、邮箱、身份证号等详细内容进行保存操作,如图5-9所示。
图5-9用户信息界面图
5.2管理员功能模块
管理员登录,通过输入用户名,密码,选择角色并点击登录进行系统登录操作,如图5-10所示。
图5-10管理员登录界面图
管理员登录系统后,可以对首页、个人中心、用户管理、账户信息管理、账户支出管理、账户收入管理、系统管理等功能进行相应操作,如图5-11所示。
图5-11管理员功能界面图
用户管理,在用户管理页面可以查看索引、用户账号、用户姓名、头像、性别、手机号码、邮箱、身份证号等内容,并根据需要进行详情,修改和删除等操作,如图5-12所示。
图5-12用户管理界面图
账户信息管理,在账户信息管理页面可以查看索引、账户名称、金额、登记时间、备注、用户账号、用户姓名、头像等内容,并根据需要进行详情,删除等操作,如图5-13所示。
图5-13账户信息管理界面图
账户支出管理,在账户支出管理页面可以查看索引、账户名称、金额、支出时间、用户账号、用户姓名、头像等内容,并根据需要进行详情,删除等操作,如图5-14所示。
图5-14账户支出管理界面图
账户收入管理,在账户收入管理页面可以查看索引、账户名称、金额、收入时间、用户账号、用户姓名、头像等内容,并根据需要进行详情,删除等操作,如图5-15所示。
图5-15账户收入管理界面图
系统管理,在理财资讯页面可以查看索引、标题、图片等内容,并根据需要进行详情,修改和删除等操作,还可对轮播图管理进行详细操作,如图5-16所示。
图5-16系统管理界面图
6系统测试
系统测试是软件开发过程中最后一步,但也是不可或缺的重要的一步,没有人可以保证一次性编写完成的系统不会出错,而系统测试就是将自己开发的系统成为成品前的最后一步。在测试过程中需要进行严谨细致的测试,要尽可能全面地在不同情况下运行该系统,排除一切出现错误的可能。
系统测试不仅仅是发现系统潜在的BUG或错误,而更为重要的是为用户提供一个良好的体验和安全可使用的产品服务。而通过发现错误或潜在的问题,将有助于提升产品的竞争力,这也是软件测试的其中的重要目的之一。
软件测试的方法有好几种,但目前主要采用的是包括以功能为主要测试方向的黑盒测试以及以逻辑为主要测试方向的白盒测试,这是两种不同的测试方法,针对的测试侧重点不同,本课题根据实际需求情况,选择以功能为主要的黑盒测试方法,同时测试是要遵循一定的规则来执行的,一个测试要执行其执行的依据一般是由测试用例来规定的,而测试用例一般是依据需求或说明书来综合制定的,测试在硬件出厂前是十分重要的一个过程,本课题由于时间和精力的关系,选择以实现的功能作为测试要点来进行测试。具体测试过程如下:
测试用例1及测试过程:
登录:录入登录信息,账号,密码,权限,然后单击登录进行操作,会出现两种情况:一种情况是登录成功,进入用户相应的功能界面进行下一步操作;另一种情况是提示登录失败,系统会弹出一个对话框要求重新登录操作;
测试用例2及测试过程:
管理员登录:录入登录信息,管理员账号,密码,权限,然后单击登录进行操作,会出现两种情况:登录成功进入管理员具有权限的功能界面和提示登录失败。一种情况是登录成功,进入管理员界面进行下一步操作;另一种情况是提示登录失败,系统会弹出一个对话框要求重新登录操作;
经过对上述测试结果分析,本系统能够在不同电脑上使用运行,具备一定安全性,用户信息不易泄露,能够日后再增删功能,能够实现所有功能,产品运行性能良好,能达到毕业设计要求。
7总结与展望
经过三个月的努力,终于完成了家庭理财系统app。有成功,引以为豪的地方,也有失败的诸多环节。
整个毕设工作从研究现状出发,了解了系统所需技术,查阅了相关文献,熟悉系统领域知识与相关软件环境,找出了系统开发所遇到的难点和重点。结合自身水平,进行了系统需求分析,总体规划,数据库设计,详细设计与编码测试等各项工作,最终实现了一个具有较完整功能的家庭理财系统app。
家庭理财系统app只对普通用户,管理员管理等基本模块进行了设计,在今后具体的工作中,还应添加更多的功能模块,并加强现有模块的细化工作,使系统能够真正实现。
系统的开发和完善是一个长期的过程,需要在实际应用中不短积累和完善。根据课题研究现状以及社会实际需求,对于本系统,在一下几方面可以进行进一步的改进和完善:
1、随着计算机的发展,管理网站的普及,家庭理财系统app要增加更多的功能模块,特别是管理员模块,可以让更多的管理员入驻。
2、管理方面的多功能性也是需要扩展的,因为时间关系,管理的功能不能被满足,以后可以进一步对家庭理财的分类等进行补充与完善。
3、系统提供的搜索功能比较简单,还可以进一步的完善。
参考文献
[1] 陈昱, 江兰帆. 基于Google Android 平台的移动开发研究[J]. 福建电脑, 2018, 24(11).
[2] 杨丰盛. Android 应用开发揭秘[M]. 北京: 机械工业出版社, 2016
[3] 李宁. Android/ Ophone 开发完全讲义[M]. 北京: 中国水利水电出版社, 2019.
[4] 白文江. 基于Android平台的移动应用开发研究[J].太原大学学报,2017 (03).
[5] 李刚. 疯狂安卓讲义. 北京:电子工业出版社[M], 2016.
[6] 杨丰盛. Android 应用开发揭秘[M]. 北京: 机械工业出版社, 2018.
[7] 姚昱旻,刘卫国. Android的架构与应用开发研究[J].计算机系统应用, 2018(11).
[8] 蔡罗成. Android后台监听实现机制浅析[J]. 信息安全与通信保密, 2018(6).
[9] 王会进, 方锦亮. 基于JAVA 的自定义控件应用技术研究[J] . 微型机与应用, 2018(5).
[10] 杨杰.基于Android的多线程处理技术[J]. 电脑知识与技术,2019,18:4251-4254.
[11] 方锐.基于APPCAN平台的Android手机电商客户端的设计与实现[J].电子商务,2016,(11):54-56.
[12] 曾立鸥,唐泉彬,牛斗.Android系统应用程序组件安全性分析[J].软件,2017,(3):147-151.
核心代码展示
/*** 公告通知* 后端接口* @author * @email * @date 2021-03-09 11:33:59*/
@RestController
@RequestMapping("/news")
public class NewsController {@Autowiredprivate NewsService newsService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( NewsEntity news){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); return R.ok().put("data", newsService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(NewsEntity news){EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); NewsView newsView = newsService.selectView(ew);return R.ok("查询公告通知成功").put("data", newsView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody NewsEntity news, HttpServletRequest request){//ValidatorUtils.validateEntity(news);newsService.updateById(news);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){newsService.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<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new 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(new 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(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}int count = newsService.selectCount(wrapper);return R.ok().put("count", count);}}