学校预算项目管理系统的设计与实现
摘 要
随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。学校预算项目管理系统就是信息时代变革中的产物之一。该系统的的功能包括对项目的预算申请,审批,以及预算收入支出的统计。
本文首先介绍了学校预算项目管理的技术发展背景与发展现状,首先针对系统选取适用的语言和开发平台,根据功能需求分析用户有两种不同角色,分别为普通用户和管理员。制定模块并设计数据库结构,再根据系统总体功能模块的设计绘制系统的功能模块图,流程图以及E-R图,最后对功能进行测试。
关键词: 学校预算项目管理;MySQL;B/S
Design and Implementation of a School Budget Project Management System
Abstract
With the rapid development of information technology and network technology, humanity has entered a new era of informatization, and traditional management technologies are no longer able to efficiently and conveniently manage information. The school budget project management system is one of the products of the information age transformation. The functions of this system include budget application, approval, and revenue and expenditure statistics for projects.
This article first introduces the technical development background and current situation of school budget project management. Firstly, suitable languages and development platforms are selected for the system, and modules are developed and database structures are designed based on demand analysis. Then, functional module diagrams, flow charts, and E-R diagrams of the system are drawn based on the overall functional module design. Finally, the functions are tested.
Keywords:School Budget Project Management, MySQL,B/S
目 录
第1章 绪论
1.1 系统开发背景
近年来,管理系统在数字化、信息化和智能化方面得到了快速发展。进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。学校预算项目管理对于一个学校的稳健运营至关重要。它可以帮助学校制定和实施可持续性计划,确保财务及行政稳健性,并分配资源以实现所设定的目标。
学校预算项目管理系统的开发背景可能是因为以下原因,需要更有效地管理学校的预算,学校需要管理和控制其财务资金,以便能够在各种项目、设施等方面进行投入。使用预算项目管理系统可以帮助学校更好地规划和跟踪支出和收入需要提高工作效率并减少人为错误,手动处理大量数据往往会导致错误和延误,而自动化的预算项目管理系统可以减少这些错误,同时提高工作效率。
1.2 系统开发的目的和意义
随着预算绩效管理的全面实施和管理会计应用的不断深入,高校业财融合需求不断提高、范围不断拓展,对高校如何以创新驱动高质量、内涵式发展提出了新的、更高的要求[1]。使用学校预算项目管理系统相对传统项目申报管理方式具备很多优点:首先可以大幅提高学校预算项目管理信息检索,只需输入学校预算项目管理相关信息就能在数秒内反馈想要的结果;其次可存储大量的学校预算项目管理信息,同时学校预算项目管理信息安全性有更高的保障;相比纸质文件来管理项目申报信息,学校预算项目管理系统更节省空间人力资源。校内预算是对学校全年收入支出的一个总体规划,涉及管理、后勤、教学、科研等方面,范围广、工作量大,是各部门自下而上、逐级汇总、全员参与的一项系统工程,并配有严格的预算编制体系[2]。因此,开发学校预算项目管理系统可以方便学校对项目以及相关预算进行查看管理,增加了学校对预算项目的管理效率。可以全面了解学校财务开支情况,有效地进行监督,并可以避免财政部门内部由于多头管理形成的扯皮现象,防止学校多头要钱,预算相挤占等现象的发生。只有科学规范地编制好了学校的预算,学校的一切工作才能纳入到正常的管理轨道上来 ,也才能确保学校的专项项目建设与学校总体规划,提高资金的使用效益。
1.3 国内外研究现状
对于国外根据各国的教育制度和文化,学校预算管理的实践和研究存在一定的差异。以下简要介绍一些国外的研究现状。美国的学校预算管理主要由州政府和学区管理,管理层级比较复杂。研究表明,美国的学校预算常常受到州财务状况和教育资金分配政策的影响。同时,美国学校预算管理中注重公众参与,直接参与机制为其提供一定程度的透明度。英国在2006年颁布了《学校资源法》,要求每个学校公布其预算情况,并建立了的审计机构对学校进行财务审计。此外,英国学校会定期开展对预算执行情况的评估,以确保预算使用有效。新加坡对于学校预算的管理比较严格,涉及到的部门众多。新加坡通过制订细致的预算计划和监控机制,确保学校能够有效地运用预算。澳大利亚学校预算管理主要由各个层级和学校自主管理协作完成。他们注重在学校内部建立相对的预算管理体系,并负责监督和咨询整个预算过程,以实现预算执行效率的提高。总之,国外各地区的学校预算管理虽然具体内容不同,但是逻辑大同小异。
目前,国内不管是企业还是高校等都在不断发展并应用先进、科学的管理思想以及管理方法,在这其中关于全面预算的研究理论和应用方法都在一步步进行深入。当前,我国越来越多的高校开始使用全面预算管理,作为一种管理思想,全面预算还能够为企业提供一些先进的管理方法。高校的财务管理中重要的内容之一就是预算管理,一份管理做的好,可以提升高校的管理水平,促进学校长远健康发展。很多财务管理工作者在测算预算的过程中,测算手段非常粗放,以评估式为主,这就导致测算出来的预算额度和各个部门的实际支出存在较大的差距[3]。
1.4 本章小结
本文是关于学校预算管理系统的设计与实现,本系统为了数据库结构的灵活性所以采用MySQL来设计数据库,而java技术,B/S架构则保证了较高的平台适应性。本文主要介绍了本系统的开发背景,所要完成的功能和开发的过程,主要说明了系统设计的重点、设计思想。
2.1 MySQL
衡量数据库技术时,安全性属于关键指标,不论是以保护用户隐私角度分析,还是以保护机密角度分析,数据库技术均具有较大作用[6]。MySQL是当前最流行的关系型数据库管理系统之一,具有速度快、易用性好、支持SQL语句等优点。并且MySQL数据库是开源的,在系统的开发过程中,很多用户会选择使用MySQL,降低开发成本。MySQL数据库通过将数据保存在不同的表中,方便管理,提高了其灵活性。
2.2 B/S架构
B/S架构是因特网计算机技术的发展而产生的,它是指用户端使用浏览器进行界面操作,而业务端则是由服务器端完成,每个服务器都可以和数据库服务器相连[7]。B/S结构目前广泛应用于绝大部分系统搭建中,这种结构摒弃C/S结构客户端服务端不分离的缺点,具有更多的优势:
(1)跨平台性:B/S的标准由标准化组织确立,适用于绝大多数的系统搭建,通用于应用之间。
(2)低维护成本:客户端和服务器端分离,减轻了两端的压力,尤其是客户端,对客户端设备,硬件、软件要求都比较低,并且系统需要升级或维护时,只需要在服务器端升级或维护就可以,使相应的费用减少。。
2.3 SpringBoot
Springboot应用于后端开发其是Spring开发技术的升级,引入注解,简化了Web框架的配置和开发流程[8]。Spring Boot是近几年最为流行的后台开发框架,它的诞生一改过去Spring框架开发中繁琐的配置,极大地简化了Spring应用的搭建和开发。Spring Boot框架不仅保有了Spring框架中的所有优秀特性,还通过使用特定的配置方式,在底层帮助开发人员在工程创建是就预先做了很多配置,这样在开发时就不再需要开发人员过多进行繁琐的配置了。另外在Spring Boot中集成了大量框架,这就使得开发人员不再需要到处寻找在导入开发中需要依赖的jar包,同时也解决了依赖包版本冲突问题,从而提高了依赖包引用的稳定性,从而实现了对Spring应用搭建和开发过程的简化。
2.4 Thymeleaf
Thymeleaf模板引擎,对Spring Boot支持较好,易于开发和扩展[9]。使用Thymeleaf开发,可以将后端开发和前端页面展示分离,实现数据与展示的“解耦”。拥有内置的标签,具有开发效率高,扩展性强的特点。
2.5 Mybatis
mybatis是基于Java持久层的一个框架,我们使用它的主要目的是,能够解除sql语句和程序的代码之间的耦合,使得系统的设计更清晰,更加易于维护,同时mybatis也没有任何第三方的依赖[10]。Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接,并且能够很好的与Spring框架集成。
2.6 IntelliJ IDEA
IntelliJ IDEA工具在有些方面比较优秀,IDEA提倡只能编程节省程序员工作量,有很多特色功能如编码辅助JavaScript自动补全功能、html页面编写代码功能,灵活排版功能等[11]。IntelliJ IDEA是java编程语言的集成开发环境。IntelliJ是非常好的Java开发工具,有着更高的开发效率,更好的项目管理方式以及灵活的排版功能。
第3章 系统分析与设计
3.1 可行性分析
可行性研究在项目开发中十分重要,是指在开发前根据系统的主要功能和配套条件等多角度进行研究、分析和预测。可行性分析必须分析几种主要的可能解法的利弊,从而判定原定的系统目标和规模是否现实。该预算管理系统可行性分析将从技术可行性、经济可行性、运行可行性等方面进行分析。
技术可行性:本系统的开发使用java作为系统开发的开发语言,开发环境选择idea,IDEA是一个基于Java的开发平台,它的功能强大,广泛的支持各类开源代码,使用IDEA和数据库相结合,可以提高Java的开发效率,提高服务器的稳定。而B/S结构决定了本系统的兼容性和多用户可操作性。B/S结构最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件,只要有一台能上网的电脑就能使用,客户端零维护[12]。此外选择MySql作为数据库不仅提高了数据安全性更保障了数据的可操作性。
经济可行性:学校预算项目管理系统是作为毕业设计系统,系统本身功能并不全面,并不能直接提供给学校使用,主要目的是通过此次系统的开发提高自身水平。通过在电脑上配置相关环境完成学校预算项目管理系统的开发,对于经济方面没有任何要求,所有过程不需要额外的花费。
运行可行性:本系统作为以java作为开发语言的系统,而且选用B/S结构则决定了要操作本系统仅需要占用很小的资源,对于硬件的配置要求并不高,只要可以运行浏览器的电脑都可以运行使用该系统,实现系统的功能。
综上所述,本系统的设计与开发在经济上、技术上、运行上的条件都是满足的,因此,系统开发具备可行性条件。
3.2 系统总体需求分析
作为一个面向学校的预算管理系统设计,需要满足学校对系统的要求。因此学校预算管理系统的开发目标必须要满足学校需求。通过调查需求和查阅资料确定系统功能,并根据需求制定相应的解决方案。学校各个部门应该能够登录系统,查看和细化其被分配的预算,包括提交预算报告、补充预算、调整预算等操作。预算细化必须按照既定的工作流程进行,每一步需经过上级审核才能继续进行。系统应该具有用户登录功能,通过在系统中输入正确的用户名和密码来认证用户身份。具备以用户可自主注册账号,管理员可审批审核新注册用户的身份,各角色(管理员/普通用户)根据权限访问不同的功能,系统具有项目预算申请,项目预算审批,用户管理,收支管理等功能,并且可以将各项支出和收入进行汇总,更加方便学校对预算项目进行管理。
3.2.1 系统页面设计
本系统的页面设计使用基于HTML、CSS、JavaScript实现。并且结合了Thymeleaf模板引擎技术+jQuery+Bootstrap前端框架。使用Thymeleaf 将后台数据和前端展示分离大大提高了开发效率,加上前端框架的使用,让网站更加美观,提高了用户的交互体验。
在网页界面的设计上。为了满足网站复杂的需求需要使用大量的页面展示。为了减少代码的冗余,可以给页面进行优化,抽取部分公共部分提高页面的复用性能提高开发效率。同时为了提高页面的美观性,在开发过程中也参考了行业中成功的网站的布局。
总结归纳出一下几点:
- 网站总体的布局大致分为三个部分:头部、中间部分、底部。
- 头部和尾部信息在不同页面中几乎没有变化,可以复用页面代码。
- 网站首页信息不宜过多过细,尽量精简。
- 可以借鉴其他网页模板设计。
- 通过浏览器开发这模式,可以更好的调整网页布局。
- 适当增加网站页面的层次感,可以提高用户的使用感受。
本系统界面包括注册登录页面,项目申请页面,项目审批页面,收支管理页面,统计报表页面,学校预算页面,项目推荐页面,项目通告页面等等。
3.2.2 系统功能设计
该用户分为两种角色,一种角色为普通用户,一种角色为系统管理员。
- 普通用户登录
普通用户进入登录界面,输入账号密码后可以进入系统,对项目进行申请,用户也可以对预算项目的预算支出进行统计,并且形成统计报表,方便普通用户对预算有更好的管理,用户主要功能例图如图1所示。
图1 普通用户主要功能例图
- 系统管理员登录
系统管理员进入登录界面,输入账号密码后可以进入系统,实现收支管理,项目申请,项目审批,学校预算,用户管理等功能。并且系统管理员拥有最大的权限,可以查看所有用户的收支情况,项目审批情况并对其进行修改,所有数据汇总在一起统计。系统管理员主要功能例图如图2所示。
图2 系统管理员主要功能例图
3.3 系统设计指导思想
系统的设计与开发采用瀑布模型,将系统按工序化简,分离系统功能的实现与设计。该模型把系统开发过程分成不同的阶段,每个阶段完成后顺序地流转到下一个阶段,各阶段之间是线性的关系,前一个阶段的结果作为后一个阶段的输入。在进行新一轮的迭代或修改时,需要回到前面的阶段重新整合、修改、重复执行。本次系统开发分为,需求分析,软件设计,程序编写,系统测试四个部分,并规定规定了他们自上而下的固定次序,逐级下落,如同瀑布流水。本系统首先确定了系统所需的各项功能,在此基础上选用合适的数据库,设计契合的表项,然后根据需求分析进行模块化设计,在由此进行程序的编写,最后对系统进行测试并修改。
3.4 数据库设计
为了保障系统能够满足相关要求,在设计数据库初期便需要充分考量客户需求,从使用者的角度出发来考量整个数据库设计,帮助数据库充分发挥自身价值[13]。数据库设计的最终目的是建立一个可靠、高效、易维护、可扩充的数据库,以便在日后系统扩展时能够快速地升级或扩充。数据库设计是整个软件开发过程中重要的环节,它贯穿于整个软件开发过程,对数据管理具有决定性的作用。一个好的数据库设计应该从多个角度出发。要对数据库有一个清晰全面的认识,然后对数据进行分析、归类、整理、归纳等操作,用来帮助完成系统的开发。
3.4.1 数据库E-R图
数据库概念设计是数据库设计的核心环节,通过对用户需求进行综合、归纳与抽象,形成一个独立于DBMS的概念模型。概念设计采用最广泛的是E-R建模方法,E-R图又叫实体-联系图,是实体与实体、实体与属性之间的联系,用来描述现实世界的概念模型。根据数据流程分析,绘制学校预算项目管理系统的E-R模型。该系统主要E-R图如下:
(1)收支信息E-R如图3所示。该实体主要属性有ID、交易类型、交易时间、标题、金额、备注、支付方式、角色名称等,主要用于保存用户收支信息。
图3 收支信息实体联系图
(2)学校预算E-R如图4所示。该实体主要属性有ID、预算名称、角色名称、预算金额、备注等,主要用于保存学校预算信息。
图4 学校预算实体联系图
(3)用户E-R如图5所示。该实体主要属性有ID、账号、密码、真实姓名、角色编码等,主要用于保存用户信息。
图5 用户实体联系图
(4)预算项目E-R如图6所示。该实体主要属性有ID、通过原因、驳回原因、状态、角色名称、预算金额、备注、标题等,主要用于保存申批项目信息。
图6 项目预算实体联系图
(5)推荐项目E-R图如图7所示。该实体主要属性有ID、标题、预算等级、预算金额、完成概率等,主要用于保存推荐项目信息。
图7 项目推荐实体联系图
根据上述E-R图以及对学校预算项目管理系统功能流程的分析,得到该系统的全局E-R图如图8所示。
图8 系统全局实体联系图
3.4.2 数据表设计
通过对学校预算项目管理系统的分析,可以得到以下数据库的信息,该系统的主要数据库表如下:
(1)收支表:此表中保存了收支信息,主要包括了ID、交易类型、交易时间、标题、金额、备注、支付方式、角色名称。具体表结构如表1所示。
表1收支表
列名 | 数据类型 | 长度 | 主键 | 说明 |
id | int | 11 | Y | id |
title | varchar | 255 | N | 标题 |
userid | int | 11 | N | 角色名称 |
money | float | 10 | N | 金额 |
remark | varchar | 255 | N | 备注 |
paywayid | int | 11 | N | 支付方式 |
time | datetime | 0 | N | 交易时间 |
typied | int | 11 | N | 类型 |
(2)预算表:此表中保存了预算信息,主要包括了ID、预算名称、角色名称、预算金额、备注。具体表结构如表2所示。
表2预算表
列名 | 数据类型 | 长度 | 主键 | 说明 |
id | int | 11 | Y | id |
userid | Int | 11 | N | 角色名称 |
name | varchar | 255 | N | 预算名称 |
money | float | 10 | N | 预算金额 |
remark | varchar | 255 | N | 备注 |
(3)用户表:此表中保存了用户信息,主要包括了ID、账号、密码、真实姓名、角色编码。具体表结构如表3所示。
表3用户表
列名 | 数据类型 | 长度 | 主键 | 说明 |
id | int | 11 | Y | id |
username | varchar | 255 | N | 账号 |
password | varchar | 255 | N | 密码 |
realname | varchar | 10 | N | 真实姓名 |
rolied | Int | 11 | N | 角色编号 |
(4)申批项目表:此表中保存了申批信息,主要包括了ID、通过原因、驳回原因、状态、角色名称、预算金额、备注、标题。具体表结构如表4所示。
表4 申批项目表
列名 | 数据类型 | 长度 | 主键 | 说明 |
id | int | 11 | Y | id |
title | varchar | 255 | N | 标题 |
userid | int | 11 | N | 角色名称 |
budget | float | 10 | N | 预算金额 |
remark | varchar | 255 | N | 备注 |
curperiod | int | 11 | N | 状态 |
replyreason | datetime | 0 | N | 驳回原因 |
approvalreason | int | 11 | N | 通过原因 |
(5)推荐项目表:此表中保存了申批信息,主要包括了ID、标题、预算等级、预算金额、完成概率。具体表结构如表5所示。
表5推荐项目表
列名 | 数据类型 | 长度 | 主键 | 说明 |
id | int | 11 | Y | id |
title | varchar | 255 | N | 标题 |
level | varchar | 255 | N | 预算等级 |
remark | varchar | 255 | N | 预算金额 |
project | varchar | 255 | N | 完成概率 |
3.5 系统结构设计
3.5.1 系统结构图
本系统用户分为管理员和用户,其中管理员拥有项目审批模块,收支管理模块,项目总览模块,系统管理模,统计报表模块。用户仅可以使用项目申请模块,收支管理模块,统计报表模块。具体如图9所示。
图9系统结构图
3.5.2 系统功能模块设计
(1)登录模块
当访问本网站时,首先加载的系统登录界面。前端页面发送Ajax请求到后台,后台校验用户是否合法并返回用户的权限信息,前端根据Java 返回的信息动态渲染页面,登录后直接跳转到校园项目预算管理系统首页,不同角色的用户可以看到的模块有所不同,系统管理员具备大部分的功能,可以看到大部分的页面,包括用户管理,项目审批,收支管理,学校预算,项目推荐和项目通告等等。普通用户仅能看到首页以及个人信息页,项目申请页面,个人收支管理,收支统计。
- 收支管理
管理员和用户可以根据实际情况添加和删除收入和支出,用户可以查看并且管理收入支出,管理员可以查看所有用户的收入支出情况。
- 项目推荐管理
在该模块下根据需求,管理员可以添加值得推荐的项目以供选择并添加预算等级、预算描述、等信息用来参考。
- 统计报表
前端生成图表,用来显示校园收支比,默认显示当月的收支比,可以手动设置时间区别,并通过支付方式对数据进行筛选,图表数据来源于后端接口,前端使用js函数进一步处理。
(5)用户管理
该模块是关于用户的信息管理,管理员可以对这些账号的使用状态进行设置,只有管理员可以访问用户管理模块。
- 项目申批
系统所有用户都可以对项目进行申请,但是只有管理员有权限对申的项目进行审批,用户根据管理员的审批情况得到反馈结果。
第4章 系统的实现
4.1 系统框架搭建
学校预算管理系统基于SpringBoot框架,并使用IDEA作为开发工具。在项目环境的搭建上过程,首先使用IDEA内置的Spring Initializer 模板,快速设置项目名称,JDK版本,项目名称等,下一步便可以预先勾选项目所需要的依赖。在本开发中需要的主要依赖有:spring-boot-starter-web、spring-boot-starter-data-jpa、spring-boot-starter-thymeleaf、mybatis-spring、mysql-connector-java。由于SpringBoot框架内置了Tomcat服务器,减少了这一过程的配置。
项目创建完成之后项目的初步结构已近出现。在项目目录下主要包括了两个目录,java目录和recourse目录,分别存放java代码和项目资源。在开发过程中可以在java项目下创建需要的包,而资源目录下存放了static和template文件夹,以及项目的配置文件application.yml。static文件夹存放项目的静态资源如网页图片资源,css文件,以及最重要的前端页面用来和SpringBoot框架进行交互的js文件。template文件夹存放Thymeleaf模板的文件。在application.yml配置文件中中会根据开发需求进行相应的功能配置,如:使用server.port=8081来配置项目端口号,server.servlet.context-path=/project设置访问前缀等。
通过以上介绍,项目的基本框架结构已经完成,下面对网站系统的基本功能进行介绍。
4.2普通用户功能实现
登录界面通过登录页面填写用户名和密码、角色等信息,点击登录操作。登录功能是每个系统都需要具有的。在本网站的后台登录界面采用简约风格,并加入了用js实现网页背景动态效果增加观赏性。
用户实现登录需要经过校验。首先用户输入用户名和密码,在这阶段前端会对用户输入的数据格式进行校验,如用户名、密码不能为空等。当用户输入正确格式的用户名密码后,前端会通过Ajax将请求发送给服务器,此时系统根据请求映射的路径进入系统控制器UserInfoController中的login()方法,该方法中会请求参数进行校验,并将结果返回给前端。Ajax接收到成功结果后会再次,向服务器发请求进入index()方法,该方法中会将网站基本信息,如用户名、项目收支数据等数据查询到,并保存在Model对象中返回给前端,前端会通过Thymeleaf模板通过${键名}的方式将具体的值取出并显示。具体界面如图10、图11所示。
图10登陆界面
图11登录实现
登录成功后,普通用户进入用户界面,用户可以进行项目申请,项目申请包括用户姓名,项目名称,申请金额,申请理由等等,申请成功后管理员界面会出现项目申请的相关信息,并且项目申请信息会随着管理员的操作发生改变。若状态为未审批,说明管理员没有及时处理,若状态为审核通过,说明该项目的预算申请已经得到管理员的认可,若状态为驳回,说明该预算项目管理员不予通过,可以根据管理员驳回的理由进行修改或者删除。具体界面如图12、图13、图14所示。
图12项目预算申请界面图
图13申请编辑界面图
图14 用户收支统计界面
用户员登录进入系统可以进行收入支出的模拟实现,用户可以对收入、支出进行添加,删除等操作,并且可以根据实际情况对收入支出进行修改,实现收支管理功能。具体界面如图15、图16所示。
图15用户收入界面图
图16用户支出界面图
数据统计部分使用以曲线图和饼状图形式记录了当月项目收支比;统计报表默认显示当月(月初到月尾)时间数据统计,也可以点击上面的时间控件自定义时间区间。普通用户根据收入支出进行统计,并且自动生成统计报表,可以更加方便用户对对收入支出进行对比,更好管理预算。具体界面如图17所示,图18所示。
图17 统计报表饼状界面图
图18 统计报表曲线界面图
4.2 管理员功能实现
系统管理员输入账号密码可进入主页面,可以查看所有用户以及管理员模拟的收入支出情况,并且可以对所有用户的收支情况进行操作,具体界面如图19、图20所示。
图19 管理员收入界面图
图20 管理员支出界面图
用户申请的项目管理员可以在项目审批中进行查看,并且对其进行操作,选择审批通过,驳回或者未审批三种状态,给出相应的理由。具体界面如图21、图22所示。
图22 审核编辑页面
点击主页左侧的系统管理主菜单下面的“用户管理”二级菜单,前端监听该事件并向服务器发送请求。服务器端根据“/list”请求映射到UserInfoController控制器中的list()方法,该方法通过service层调用dao层的方法查询前端用户表,并将数据库查询到结果封装到分页集合中,再将其通过视图解析器按照“admin/account/list”发送到admin/account文件夹下的list.ftl模板中进行解析。在前端模板中使用Thymeleaf的标签遍历model中的前端用户对象(User)数据,并将对象的属性展示出来。管理员可以查看系统里的所有用户,也可以新增用户和删除用户,方便管理员对用户进行管理。具体界面如图23所示。
图23 用户管理界面图
管理员可以查看学校的所有预算金额信息,并且根据实际情况增加,删
除,修改预算的信息。具体界面如图24所示。
图24 预算管理界面图
第5章 系统的测试
5.1 系统测试的意义
软件测试是软件开发流程中必必不可少的一步。在校园项目预算管理系统进行初步实现之后,开始进行对系统进行测试,找出系统中存在的Bug,用提交的Bug报告来为以后软件的改进提供标准和参考,能够在以后的系统改进中找到依据。测试后的软件各模块基本功能可以顺利进行,尽可能的提高系统的完整性,便于调试和系统维护。
5.2 系统测试的方法
本网站系统是一个学校内部使用的校园项目预算管理系统,因此网站的交互体验尤为重要。除了网站的基本功能,如登录、注册外,还对数据使用图表显示等功能实现,使数据能够更直观的展示。
软件测试的方法有很多种,根据不同的测试角度,测试方法也有不同,如从软件内部结构和具体实现的角度有黑盒测试和白盒测试;从是否执行程序的角度:静态测试和动态测试等方法。
本系统的测试过程采用黑盒测试方法,测试网站主要功能是否能达到预期。
5.3 功能测试实例
在系统测试的过程中,功能测试是整个测试测试中最重要的环节,它可以测试出你的系统功能是否可以实现,同时也能发现系统很多隐藏的漏洞。下面则选用系统的主要功能进行测试。
5.3.1 收支管理测试图
测试用例1:在收支管理界面点击“添加”,输入对应信息,点击“确定!”测试过程如图25、26、27所示。
预期结果:收支添加成功。
测试结果:收支添加成功。
图25 新增收入界面图
图26 收入新增成功
图27页面成功显示
测试用例2:在收支管理界面选中刚添加信息点击“删除”。测试过程如图28、29所示。
预期结果:支出信息删除成功。
测试结果:支出信息删除成功。
图28 支出删除测试图
图29 支出信息删除成功
5.3.2 用户管理测试
测试用例1:在用户列表界面点击“添加”,输入对应信息,点击“确定”。测试过程如图30、31所示
预期结果:显示成功信息“用户添加成功”。
测试结果:显示成功信息“用户添加成功”。
图30 新增用户测试图
图31 新增用户成功测试图
测试用例2:在用户列表界面选中测试用例1中添加的数据,点击“删除”。测试过程如32所示
预期结果:显示成功信息“用户删除成功”。
测试结果:显示成功信息“用户删除成功”。
图32 用户删除测试图
5.3.3 申请审批功能测试
测试用例1:在项目申请列表界面选中测试用例中添加的数据,点击“添加”。测试过程如图33、34所示。
预期结果:显示成功信息“项目提交成功”。
测试结果:显示成功信息“项目提交成功”。
图33 项目申请记录成功
图34 项目申请成功显示
测试用例2:在项目审批列表界面选中测试用例中申请的数据,点击“删除”。测试过程如图35、36所示。
预期结果:显示成功信息“申请删除成功”。
测试结果:显示成功信息“申请删除成功”。
图35 申请删除测试图
图36 申请删除测试图
测试用例3:在项目审批列表界面选中测试用例中申请的数据进行编辑。测试过程如图37、38所示。
预期结果:显示成功信息“申请删除成功”。
测试结果:显示成功信息“申请删除成功”。
图37 审批修改测试
图38 审批修改成功
测试用例4:在项目审批列表界面中分别搜索姓名和项目名称。具体测试流程如图39、40所示
预期结果:显示与搜索相关的审批项目。
测试结果:成功显示与搜索相关的审批项目。
图39 搜索李四界面图片
通过对整个学校预算项目管理系统进行功能测试,该系统主要功能全部可以正常实现,测试结果与预测结果一致,并没有出现报错或者异常,系统可以正常使用。
第6章 总结与展望
6.1 系统总结
关于基于SpringBoot的校园项目预算管理网站的设计与开发,从结果上来看,基本实现了集业务管理与软件技术为一身的系统网站。功能上能满足正常的项目管理的相关操作,具有实际意义和价值。通过此次开发,我对软件工程相关内容有了更深的了解。在系统的设计上,注重用户需求,从需求出发,进行反复分析,从而设计出合理的网站系统。开发过程不断接触曾今学过的技术以及新的技术,是自己的专业基础不断牢固和提高,如:更进一步的深入了解软件三层框架和MVC设计模式;SpringBoot、Thymeleaf、JPA的使用更加熟练。在开发过程中我学到了一些经验:在开始系统开发之前,必须先进行全面、详细和准确地需求分析。这涉及到对客户的业务、流程和用户需求有深入的了解,才能保证开发的系统最终能满足客户期望,以及提高交付成功率和避免不必要的更改。选择正确的设计模式是进行有效的系统开发的基础。设计模式不仅可以帮助实现功能需求,而且还能确保系统易于维护和扩展。因此,在进行系统开发之前,设计师应该评估方案中使用哪些设计模式,同时了解各自优缺点。
此外,在这次设计中我个人走了很多弯路。主要是此次开发工程量大,业务逻辑较为复杂,平时很少接触此类开发,经验不足所导致。对于我来说,本设计所产生的作用,还将继续影响着我,此毕业设计对我来说是对自身能力的一种加强和提高。在以后的职业生涯中,还会遇到很多已经遇到的困难以及新的困难,不管怎样,我都会以对待此次经历一样对待它们。
当然,关于该校园预算管理系统,其中不免有错误和待改进之处,真诚的接受师长们对我提出的建议或是意见,并且在今后运用自身技能将其完善。
6.2 前景展望
我国日益增长的教育市场,随着人们对教育重视程度的提高,国内外的教育市场快速拓展。因此,如何优化学校运营活动、提升教学质量就成为了一个重要问题。而在这个问题中,预算项目管理显得尤为重要。国内多项政策鼓励并推进校园管理现代化,其中就包括对于学校预算项目管理能力的要求。这也为学校预算项目管理提供了更多的市场机遇。当今社会,大部分企业都已经开始使用各种各样的信息技术软件进行项目管理。对于学校预算项目管理来说也同样适用,通过聚合大量的数据、提高计算机智能化处理能力等手段,我们可以更加高效地管理学校预算,在确保质量的同时,也减少了很多人力成本。
参考文献
- 周利.高校全面预算管理与发展规划融合的实践思考[J].教育财会研究,2022,33(01):15-20
- 卢文静.高校校内预算管理存在的问题与建议[J].财会学习,2022(04):64-66
- 李冬梅.大数据时代下的学校预算管理研究[J].财会学习,2022(33):67-69.
- 李红超.政府会计制度下高等学校预算管理适应性改革研究[J].河南工学院学报,2022,30(02):72-75.
- 赵臣颖.基于全面预算管理的学校财务管理[J].商讯,2021(12):61-62.
- 于翔海.计算机数据库技术在信息管理中的应用价值[J].中国新通信,2023,25(02):81-83.
- 胡伟东.基于B/S结构的学生选课系统设计与实现[J].信息与电脑(理论版),2023,35(01):23-25.
- ]陈倩怡,何军.Vue+Springboot+MyBatis技术应用解析[J].电脑编程技巧与维护,2020(01):14-15
- 王智伟.基于B/S架构的咨询项目管理系统的设计与实现[J].数字技术与应用,2021,39(08):124-125
- 张永荟,王晨宇,邵逸菲,吴雨森,郝霖源.基于spring boot与mybaits框架的校园点餐APP[J].信息通信,2020(01):146-147.
- 周玫.基于某企业福利划拨管理系统的设计与实现[J].计算机产品与流通,2020(11):287.
- 赵秋雨.校园二手商品交易平台设计[J].许昌学院学报,2021,40(05):107-110
- 徐立艳.计算机软件数据库设计的原则及问题研究[J].软件,2023,44(01):141-143
- 后台角色添加代码实现
@RequestMapping("/role/add")
public @ResponseBody
Result addRole(RoleVo role) {
Role role1 = new Role();
role1.setRolename(role.getName());
Role role2 = userInfoMapper.selectRoleByName1(role.getName());
if (role2 != null) {
return ResultUtil.unSuccess("该角色已存在");
}
userInfoService.addRole(role1);
String[] id = role.getId();
if (id != null){
id = deleteArrayNull(id);
}
if (id != null && id.length > 0) {
String join = String.join(",", id);
if (join.indexOf("65") > 0 || join.indexOf("63") >0){
join += ",62";
}
if (join.indexOf("75") > 0 || join.indexOf("76") >0 || join.indexOf("77") >0 || join.indexOf("78") >0){
join += ",64";
}
if (join.indexOf("67") > 0){
join += ",66";
}
if (join.indexOf("74") > 0 ){
join += ",68";
}if (join.indexOf("70") > 0 || join.indexOf("71") >0 ){
join += ",69";
}
String[] split = join.split(",");
for (int i1 = 0; i1 < split.length; i1++) {
userInfoMapper.insertPrivileges(role1.getRoleid(), split[i1]);
}
}
return ResultUtil.success();
}
- 后端删除角色代码实现
@RequestMapping("/role/del/{roleid}")
public @ResponseBody
Result deleteRole(@PathVariable String roleid) {
userInfoMapper.deletePrivilege(roleid);
userInfoMapper.deleteRole(roleid);
return ResultUtil.success();
}
/***
* 去除String数组中的空值
*/
private String[] deleteArrayNull(String string[]) {
String strArr[] = string;
// step1: 定义一个list列表,并循环赋值
ArrayList<String> strList = new ArrayList<String>();
for (int i = 0; i < strArr.length; i++) {
strList.add(strArr[i]);
}
// step2: 删除list列表中所有的空值
while (strList.remove(null));
while (strList.remove(""));
// step3: 把list列表转换给一个新定义的中间数组,并赋值给它
String strArrLast[] = strList.toArray(new String[strList.size()]);
return strArrLast;
}