摘 要
学生每学期开学都需要购买教材。目前,在我国大部分学校都是以班级为单位,统一向学校购买教材。首先学校根据每学期所开的课程,向各大书商或出版社购买课本,然后学生以班级为单位向学校领书交费。这项工作在大部分学校还是手工操作,工作起来效率很低,并且不能及时了解教材库存和领取的具体情况。
随着计算机网络的发展,信息的交流越来越趋于高效,准确,快速等现象。信息管理系统是一个利用计算机软硬件资源以及数据库的人机系统,它能提供信息并支持企业或组织的运行、管理和决策。由于信息世界的发展,教材对于学校和学生来说变得越来越重要,教材管理系统是一种能够方便有效地管理教材信息的管理系统。其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。因此,建立一套与选课相配套的教材管理模式和管理系统具有十分重要的意义和实际应用的迫切性,而且现有的条件、管理理念和技术水平已使之成为可能。
开发该教材管理系统是为了更好地管理学校的各类教材,便于教材管理人员操作、学生领书、查询教材资料及其库存情况。使教材信息管理工作系统化、规范化、自动化,从而达到提高教材管理效率的目的。综合以上的各种因素,在这次开发的这个系统中主要设计以下几个功能模块:学生(教材列表、学生领书);教师(班级信息、教材补货、教材入库、教材统计等);管理员(教材分类、班级信息、教材补货、学生领书、教材统计、教师领书等)。可以方便大家的使用。
关键词 :教材管理系统;java技术;Mysql数据库;
Spring boot teaching material management system
Abstract
Students need to buy textbooks at the beginning of each semester. At present, most schools in China purchase textbooks from schools in a unified way, taking classes as a unit. First, the school buys textbooks from major booksellers or publishers according to the courses offered each semester, and then the students collect books from the school and pay fees based on the class. This work is still manual in most schools, which is very inefficient, and can not timely understand the specific situation of textbook inventory and collection.
With the development of computer network, information exchange is becoming more and more efficient, accurate and fast. Information management system is a man-machine system using computer software and hardware resources and database, which can provide information and support the operation, management and decision-making of enterprises or organizations. Due to the development of the information world, textbooks are becoming more and more important for schools and students. The textbook management system is a management system that can easily and effectively manage textbook information. Its development mainly includes the establishment and maintenance of the background database and the development of front-end applications. Therefore, it is of great significance and urgency to establish a set of teaching material management mode and management system matching the course selection, and the existing conditions, management concepts and technical level have made it possible.
The purpose of developing this teaching material management system is to better manage all kinds of teaching materials of the school, facilitate the operation of teaching material management personnel, the collection of books by students, and the inquiry of teaching material and its inventory. Make the teaching material information management systematic, standardized and automatic, so as to improve the efficiency of teaching material management. Based on the above factors, the following functional modules are mainly designed in this system: students (list of teaching materials, students receiving books); Teachers (class information, textbook replenishment, textbook warehousing, textbook statistics, etc.); Administrator (textbook classification, class information, textbook replenishment, student book collection, textbook statistics, teacher book collection, etc.). It is convenient for everyone to use.
Key words: teaching material management system; Java technology; MySQL database;
目 录
1 绪论
1.1研究背景
教材管理对齐个学校而言,都是一项复杂、烦琐的工作,是高校教务管理中的一个重要环节,由丁学校中专业设置门类多,各专业每每期开设课程种类多,其业务不仅涉及出版部门,而且耍而对全校各系、部的授课教师, 齐班级的学生,教材科涉及管理的入出库教材种类非常多,涉及人员广,工作量大,再者是近年来,我国高等教育规模的不断扩大,学校学生人数迅速增加,使教材管理工作更加繁重不堪。因此,一套好的教材管理软件,不但能大大降低工作人员的劳动强度,还能提高学校的管理效率和教学水平。
1.2研究现状
由于学校的学科种类和数量不断增加,学院的规格不断扩大,学生的数量大幅上升,加上选修,限选科目的开展使得每一位学生的课表都可能不同。这些变化已经突现出个性化的特点,在需教材尽管一些主干课程相同,但已有相当一部分管理上实现了针对学生个人的管理。
在这种形势下,每位学生每学期出现了差异。一个班的学生在购买教材时首先以班级为单位到教材管理部门将绝大部分学生都要使用的教材先买回来,再由每个学生分别到教材管理部门购买其它教材;或者是一个班首先统计所需的每一种教材的名称和数量以及订购的同学姓名,然后统一到教材管理部门购买回来再分别发放。在这种加大的学年学分管理模式下,原有的教材管理系统,尽管在一定程度上可适应这些变化,但问题也越来越突出。
1.3 研究意义
教材管理是教学管理中的组成部分,学校的教材管理模式是在学年制基础上以班级为单位进行处理的。院校的教材管理在学生规模日益增大、教材日益多样化、学生个人之问教材差异越来越大的现实面前已呈现出无法应对的局面。因此,建立一套与选课相配套的教材管理模式和管理系统具有十分重要的意义和实际应用的迫切性,而且现有的条件、管理理念和技术水平已使之成为可能。
1.4研究目的
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,
它已进入人类社会的各个领域并发挥着越来越重要的作用。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。作为计算机应用的一部分,使用计算机对教材信息进行管理,有着手工管理所无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学校办公管理的效率,也使学校步入了科学化、正规化的管理。
2 系统开发环境
为了能够使本系统较好、较为完善的被设计实现出来,在功能上,我对新系统进行了细致的分析。通过详细的分析,前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于Java的springboot框架进行开发。
前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用springboot作为开发框架,同时集成MyBatis、Redis等相关技术。
2.1 系统开发平台
在该教材管理系统中,java技术可以给用户带来极大方便,其主要特点就是可以使用户使用起来更方便、快捷,另一方面就是信息储存量也是非常大的,该功能主要被应用为数据库中进行查询和编程。并且该功能的数据应用比较灵活,通过我们现在的发展可以得知,只要利用一小部分代码就可以来实现非常强大的功能。
2.2 平台开发相关技术
2.2.1 B/S架构
B/S结构的特点也非常多,例如在很多浏览器中都可以做出信号请求。并且可以适当的减轻用户的工作量,通过对客户端安装或者是配置少量的运行软件就能够逐步减少用户的工作量,这些功能的操作主要是由服务器来进行控制的,由于该软件的技术不断成熟,最主要的特点就是与浏览器相互配合为软件开发带来了极大的便利,不仅能够减少开发成本,还能够不断加强系统的软件功能,层层相互独立和展现层是该B/S结构完成相互连接的主要特性。
2.2.2 Java技术介绍
Java语言擅长开发互联网类应用和企业级应用,现在已经相当的成熟,而且也是目前使用最多的编程语言之一。Java语言具有很好的面向对象性,可以符合人的思维模式进行设计,封装是将对象的属性和方法尽可能地隐藏起来,使得外界并不知道是如何实现的,外界能通过接口进行访问,继承是指每个类都会有一个父类,所有的子类都有父类的方法,可以进行继承,但是只有final修饰的类不能被继承,通过继承可以使得代码得到重新利用,能够提高软件的开发效率,也是多态的前提。
Java就像C语言、C#语言等,也是一种程序开发语言,而它的特点就是面向对象。作为一种程序开发与设计的语言,它有很多特性,主要特性就是面向对象、夸平台以及可以分布式运行。Java语言项目不但安全性高、稳定性强,而且可以并发运行。
为了提高开发的速度及效率,必须做到代码的重复使用和简化程序的复杂度,要达到上述的要求java语言通过封装、继承与多态等方式实现,这样可以很大程度上达到信息的封装,提高代码复用率,减少冗余度,提高效率。在Java中难能可贵的一点就是它的垃圾回收机制,它使得以往程序中大量存在的内存泄漏的问题得到了较好的缓解。所谓的内存泄漏就是程序向操作系统申请了一块存储空间,比如定义了一个变量,但是由于某种原因,这个变量一直没有使用,但是仍然占用着系统的内存空间,可能一两个这样的变量对程序和操作系统造不成什么大的影响,但是试想如果这样的变量定义的多了系统的内存空间就会一步步减少,从而造成机器的性能降低甚至宕机。但是在Java中有垃圾回收机制的存在,这种机制极大地避免了内存泄漏的出现,在Java虚拟机中,垃圾回收机制会对长时间没有引用变量指向的对象实施垃圾回收,简单的说就是将这个对象销毁,以避免内存泄漏的情况出现。
2.2.3 mysql数据库介绍
MySQL是一款Relational Database Management System,直译过来的意思就是关系型数据库管理系统,MySQL有着它独特的特点,这些特点使他成为目前最流行的RDBMS之一,MySQL想比与其他数据库如ORACLE、DB2等,它属于一款体积小、速度快的数据库,重点是它符合本次毕业设计的真实音乐环境,拥有成本低,开发源码这些特点,这也是选择它的主要原因。
本系统使用了MySQL数据库,建立了多张数据库表来存储音乐以及音乐网站相关数据。系统中主要应用查询(select),修改(update),删除(delete)以及增加(insert)等语句来实现系统功能。
2.2.4 spring boot框架介绍
Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。
所以结合教材管理系统系统的需求及功能模块的实现,使用springboot技术是最合适的,而且springboot的拓展性比较好,对于教材管理系统系统在后期使用过程中可以不断对系统功能进行拓展,使系统更完善,更方便的满足用户需求。
3 需求分析
所谓需求分析就是,需求人员通过与客户的沟通,所获取的信息,然后把这些信息通过需求说明书的方式展示给用户和开发人员。
3.1系统目标
开发教材管理系统的目的就是充分利用计算机和现代办公软件,摆脱传统办公工具,用计算机实现集中方便的管理工作,把学校教材科的工作人员从繁重的体力劳动中解脱出来以达到提高工作效率和质量,最终实现教政材管理的全面自动化和现代化。因此系统主要是实现教材管理信息的输入包括入库、 出库、需求信息的输入等。教材管理各种信息的查询、修改等。教材采购报表的生成以及名各系各部门的教材需求管理等。
3.2系统功能
此系统的功能分为用户和管理员模块:
学生功能模块用户模块包括:个人中心、教材列表,学生领书;
教师功能模块包括:班级信息、教材补货、教材入库、教材统计、教师领书等;
管理员功能模块包括:教材分类、班级信息、教材补货、学生领书、教材统计、教师领书等。
3.3系统流程和逻辑
系统业务流程图,如图所示:
图3-1登录流程图
图3-2添加信息流程图
图3-3注册信息流程图
4系统概要设计
4.1 概述
教材管理系统基于Web服务模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在不受时间、地点的限制来使用这个系统。教材管理系统工作原理图,如图4-1所示:
图4-1 系统工作原理图
4.2 系统结构
本系统架构网站系统,本系统的具体功能如下:
图4-2系统功能结构图
管理员功能结构图,如图4-3所示:
图4-3 管理员功能结构图
学生后台功能结构图,如图4-4所示:
图4-4 学生后台功能结构图
4.3. 数据库设计
4.3.1 数据库实体
教师信息结构图,如图4-5所示:
图4-5 教师信息实体结构图
管理员功能实体属性图,如图4-6所示:
图4-6管理员功能实体属性图
学生个人资料实体属性图,如图4-7所示:
图4-7学生个人资料实体属性图
4.3.2 数据库设计表
此系统需要后台数据库,下面介绍数据库中的各个表的详细信息。
replenishment_of_textbooks | |||||
字段名称 | 类型 | 长度 | 不是null | 主键 | 字段说明 |
replenishment_of_textbooks_id | int | 11 | 是 | 否 | 教材补货ID |
textbook_no | varchar | 64 | 否 | 否 | 教材编号 |
name_of_textbook | varchar | 64 | 否 | 否 | 教材名称 |
picture | varchar | 255 | 否 | 否 | 图片 |
category | varchar | 64 | 否 | 否 | 类别 |
replenishment_quantity | int | 11 | 否 | 否 | 补货数量 |
replenishment_unit_price | int | 11 | 否 | 否 | 补货单价 |
total | varchar | 64 | 否 | 否 | 总额 |
replenishment_time | date | 0 | 否 | 否 | 补货时间 |
remarks | varchar | 64 | 否 | 否 | 备注 |
teacher_no | int | 11 | 否 | 否 | 教师编号 |
full_name | varchar | 64 | 否 | 否 | 姓名 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 是 | 更新时间 |
class_information | |||||
字段名称 | 类型 | 长度 | 不是null | 主键 | 字段说明 |
class_information_id | int | 11 | 是 | 否 | 班级信息ID |
college | varchar | 64 | 否 | 否 | 学院 |
class_name | varchar | 64 | 否 | 否 | 班级名称 |
number_of_students | varchar | 64 | 否 | 否 | 学生人数 |
remarks | varchar | 64 | 否 | 否 | 备注 |
teacher_no | int | 11 | 否 | 否 | 教师编号 |
full_name | varchar | 64 | 否 | 否 | 姓名 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 是 | 更新时间 |
students_receive_books | |||||
字段名称 | 类型 | 长度 | 不是null | 主键 | 字段说明 |
students_receive_books_id | int | 11 | 是 | 否 | 学生领书ID |
textbook_no | varchar | 64 | 否 | 否 | 教材编号 |
name_of_textbook | varchar | 64 | 否 | 否 | 教材名称 |
picture | varchar | 255 | 否 | 否 | 图片 |
category | varchar | 64 | 否 | 否 | 类别 |
quantity_received | int | 11 | 否 | 否 | 领取数量 |
student_code | int | 11 | 否 | 否 | 学生编码 |
full_name | varchar | 64 | 否 | 否 | 姓名 |
class_name | varchar | 64 | 否 | 否 | 班级名称 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 是 | 更新时间 |
classification_of_textbooks | |||||
字段名称 | 类型 | 长度 | 不是null | 主键 | 字段说明 |
classification_of_textbooks_id | int | 11 | 是 | 否 | 教材分类ID |
category | varchar | 64 | 否 | 否 | 类别 |
remarks | varchar | 64 | 否 | 否 | 备注 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 是 | 更新时间 |
pay_state | varchar | 16 | 是 | 支付状态 | |
pay_type | varchar | 16 | 否 | 支付类型 微信、支付宝、网银 | |
recommend | int | 11 | 是 | 智能推荐 | |
create_time | datetime | 0 | 是 | 创建时间 | |
update_time | timestamp | 0 | 是 | 更新时间 | |
teachers_receive_books | |||||
字段名称 | 类型 | 长度 | 不是null | 主键 | 字段说明 |
teachers_receive_books_id | int | 11 | 是 | 否 | 教师领书ID |
textbook_no | varchar | 64 | 否 | 否 | 教材编号 |
name_of_textbook | varchar | 64 | 否 | 否 | 教材名称 |
picture | varchar | 255 | 否 | 否 | 图片 |
category | varchar | 64 | 否 | 否 | 类别 |
quantity_received | int | 11 | 否 | 否 | 领取数量 |
teacher_no | int | 11 | 否 | 否 | 教师编号 |
full_name | varchar | 64 | 否 | 否 | 姓名 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 是 | 更新时间 |
textbook_warehousing | |||||
字段名称 | 类型 | 长度 | 不是null | 主键 | 字段说明 |
textbook_warehousing_id | int | 11 | 是 | 否 | 教材入库ID |
textbook_no | varchar | 64 | 否 | 否 | 教材编号 |
name_of_textbook | varchar | 64 | 否 | 否 | 教材名称 |
picture | varchar | 255 | 否 | 否 | 图片 |
category | varchar | 64 | 否 | 否 | 类别 |
unit_price | varchar | 64 | 否 | 否 | 单价 |
quantity | int | 11 | 否 | 否 | 数量 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 是 | 更新时间 |
the_administrator_receives_the_book |
字段名称 | 类型 | 长度 | 不是null | 主键 | 字段说明 |
the_administrator_receives_the_book_id | int | 11 | 是 | 否 | 管理员领书ID |
textbook_no | varchar | 64 | 否 | 否 | 教材编号 |
name_of_textbook | varchar | 64 | 否 | 否 | 教材名称 |
picture | varchar | 255 | 否 | 否 | 图片 |
category | varchar | 64 | 否 | 否 | 类别 |
class | varchar | 64 | 否 | 否 | 所属班级 |
number_of_students | varchar | 64 | 否 | 否 | 学生人数 |
quantity_received | int | 11 | 否 | 否 | 领取数量 |
remarks | varchar | 64 | 否 | 否 | 备注 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 是 | 更新时间 |
5 系统详细设计
5.1 系统功能模块
教材管理系统设计,当进入教材管理系统的时候,首先映入眼帘的是学生注册使用页面,其注册界面展示如下图5-1所示。
如图5-1所示。
图5-1学生注册登录界面图
首页代码如下:
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
Query select = service.select(service.readQuery(request), service.readConfig(request));
List resultList = select.getResultList();
if (resultList.size() > 0) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
} else {
return success(null);
}
}
public Query select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return runEntitySql(sql.toString());
}
学生注册好后,通过登录界面,输入账号密码,就能看到首页界面,可对教材列表详情进行浏览,领书等,如图5-2所示。
图5-2学生首页界面图
教师注册,在注册页面可以填写用户名、密码、姓名、身份证、手机,教师编号等信息进行注册,如图5-3所示。在个人中心页面可以填写用户名、密码、姓名、性别、图片、身份证、手机等信息进行更新操作,还可以根据班级的信息、教材补货、教材入库、教材统计、教材领书等进行相应操作;如图5-4所示。
图5-3教师注册界面图
注册代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
query.put("username",user.getUsername());
List list = service.select(query, new HashMap<>()).getResultList();
if (list.size()>0){
return error(30000, "用户已存在");
}
user.setUserId(null);
user.setPassword(service.encryption(user.getPassword()));
service.save(user);
return success(1);
}
/**
* 用户ID:[0,8388607]用户获取其他与用户相关的数据
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Integer userId;
/**
* 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)
*/
@Basic
@Column(name = "state")
private Integer state;
/**
* 所在用户组:[0,32767]决定用户身份和权限
*/
@Basic
@Column(name = "user_group")
private String userGroup;
/**
* 上次登录时间:
*/
@Basic
@Column(name = "login_time")
private Timestamp loginTime;
/**
* 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
*/
@Basic
@Column(name = "phone")
private String phone;
/**
* 手机认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "phone_state")
private Integer phoneState;
/**
* 用户名:[0,16]用户登录时所用的账户名称
*/
@Basic
@Column(name = "username")
private String username;
/**
* 昵称:[0,16]
*/
@Basic
@Column(name = "nickname")
private String nickname;
/**
* 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成
*/
@Basic
@Column(name = "password")
private String password;
/**
* 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
*/
@Basic
@Column(name = "email")
private String email;
/**
* 邮箱认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "email_state")
private Integer emailState;
/**
* 头像地址:[0,255]
*/
@Basic
@Column(name = "avatar")
private String avatar;
/**
* 创建时间:
*/
@Basic
@Column(name = "create_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp createTime;
@Basic
@Transient
private String code;
}
图5-4教师中心界面图
教材补货:可对教材进行查询、添加、导出、打印、重置、删除等,如图5-5所示。
图5-5教材补货界面图
教师登录进入系统后台可以查看教材入库对书籍的补货数量、补货时间、教材名称等信息进行查看等操作,如图5-6所示。
图5-6教材入库功能界面图
教师登录进入系统后台可以查看教师领书,可以进行删除、添加、重置等相应操作;如图5-7所示。
图5-7教师领书界面图
5.2管理员功能模块
管理员登录,管理员通过输入账号,密码,权限等信息即可进行系统登录,如图5-8所示。
图5-8管理员登录界面图
登录代码如下:
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.select(map, new HashMap<>()).getResultList();
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
String res = String.valueOf(service.runCountSql(sql).getSingleResult());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
管理员登录进入教材管理系统设计可以查看首页、用户管理(管理员、学生用户、教师)、更多管理(教材分类、班级信息、教材补货、学生领书、教材统计、教师领书)等内容进行操作,如图5-9所示。
图5-9管理员功能界面图
用户管理,在用户管理页面可以对管理员、学生、教师、等信息进行删除,修改等操作,如图5-10所示。
图5-10用户管理界面图
用户管理,在学生管理页面可以对学生信息进行删除,修改等操作,如图5-11所示。
图5-11学生管理界面图
用户管理:在教师管理页面可以对教师信息进行删除,修改等操作,如图5-11所示。如图5-12所示。
图5-12教师管理界面图
更多管理中,在教材分类中,可对书籍信息进行查询、重置、删除、添加等信息进行操作;如图5-13所示。
图5-13教材分类管理界面图
更多管理中,在学生领书管理中,可对领书信息进行查询、重置、删除、添加等信息进行操作;如图5-14所示。
图5-14学生管理界面图
6 系统测试
6.1系统测试的目的
程序设计不能保证没有错误,这是一个开发过程,在错误或错误的过程中都是难以避免的。虽然这是不可避免的,但我们不能使这些错误始终存在于系统中,错误可能会造成无法估量的后果,如系统崩溃,安全信息泄露,系统无法正常启动等,为了避免这些问题,我们需要测试程序,再测试过程中发现问题,并纠正它们,从而使系统更长时间稳定成熟。
本章的作用是发现这些问题,并对其进行修改,虽然耗时费力,但对于长期使用而言是非常重要和必要系统的开发。
软件在设计后必须进行测试,调试过程中使用的方法是软件测试方法。在开发新软件时,系统测试是检查软件是否合格的关键步骤,以及是否符合设计目标的参考。测试主要是查看软件中数据的准确性,正确的操作与否,以及操作的结果,还有哪些方面需要改进。
教材管理系统的实现,对于系统中功能模块的实现及操作都必须通过测试进行来评判系统是否可以准确的实现。在系统正式上传使用之前必须做的一步就是系统测试,对于测试发现的错误及时修改处理,保证系统准确无误的供给用户使用。
6.2测试策略
测试系统主要针对以下三个方面进行测试:
1、基于springboot的系统代码的单元测试,集成测试,系统测试和验收测试结果;
2、测试对象中列出的可测试或不可接受的特征和功能;
3、分析并记录测试要求:日期的书面文件不影响测试的设计、开发和执行。
6.3测试特性及分析
(1)挑剔性:测试是为了找出系统的错误,在系统测试时我们要严格苛刻,十分挑剔。
(2)复杂性:测试是一个非常复杂的过程。
(3)不彻底性:虽然系统经过测试,但测试仍然会存在不够彻底的问题,测试不能保证系统后期运行完整无误,所以要在后期不断的检查、修改。
(4)经济性:通场这种测试称为“选择测试(Selective Testing)”。在测试时要遵守经济性的原则。
经过测试,产品的稳定性和成熟度可以大大提高,产品质量也可以得到保证。
6.4功能测试
系统测试方面,我们通常运用的是白盒测试以及黑盒测试这两种方法。白盒测试是指在了解系统内部工作流程的前提下,可以根据需求规范验证系统内部操作是否能够正常运行的测试;而黑盒测试指的是,倘若知道了这个系统的全部功能,可以进行测试检测系统中的每一个功能是否满足正常使用。
功能测试,主要是对系统的用户登录进行详细的测试,但是登录不可以是任何人都可以登录成功的,所以对登录进行详细测试。
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
登录模块 | 用户名:258 密码:123 | 弹出错误提示,提示密码错误 | 弹出错误提示,提示密码错误 | 通过 |
登录模块 | 用户名:123 密码:admin | 弹出错误提示,提示用户名错误 | 弹出错误提示,提示用户名错误 | 通过 |
登录模块 | 用户名:admin 密码:admin | 管理员登录成功 | 管理员登录成功 | 通过 |
删除分类测试:
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
删除分类模块 | 分类名:最新通知 | 删除成功、页面自动跳转 | 删除成功、页面自动跳转 | 通过 |
修改密码测试:
模块名称 | 测试用例 | 预期结果 | 实际结果 | 是否通过 |
修改密码模块 | 原密码:666 新密码:123 确认密码:123 | 弹出错误提示,提示原密码错误 | 弹出错误提示,提示原密码错误 | 通过 |
修改密码模块 | 原密码:admin 新密码:123 确认密码:333 | 弹出错误提示,提示确认密码不一致 | 弹出错误提示,提示确认密码不一致 | 通过 |
修改密码模块 | 原密码:admin 新密码:123 确认密码:123 | 密码修改成功 | 密码修改成功 | 通过 |
通过对功能的测试,教材管理系统的基本功能都是可行的,不管是系统里面的功能,还是界面的设计都是可值得推广宣传的。
6.5测试结果
系统软件可以在运行过程中执行其相关功能,可以完成查询,添加,删除,修改等功能,并且运行显示信息都正常,后端管理数据库查询也可以正常工作,数据信息确保一致性和
教材管理系统为用户提供了公平的、相互包容的、操作方便的使用系统,基本满足了用户的使用需要,以及我最初的开发目标和方向。Java语言、MySQL数据库等技术时是我开发的基础,这些技术都有各自的优点,学好这些技术,至关重要。通过这些优点设计出来的系统能够正常稳定的运行,并且可以满足人们的所有需求,在对系统的需求以及各个模块进行了详细的分析后,有针对性的进行设计,最后通过测试,系统能够正常的运行,该教材管理系统管理平台设计完成。
本次开发过程中使用的是Java技术,该技术具有代码编写简单方便,对平台没有要求对技术方面也没有要求,并且有很好的面像对象性,所以在技术方面是相当成熟的。利用java技术作为系统主要的技术支持可以使得系统能够正常的运行并且实现相应的功能。在这次的系统的设计过程中遇到了很多的困难,幸好有老师同学们的帮助,在他们的帮助下完成了这次系统的设计。
通过这次教材管理系统管理平台的开发,我参考了很多相关系统的例子,取长补短,吸取了其他系统的长处,逐步对该系统进行了完善,但是该系统还是有很多的不足之处,有待以后进一步学习。
实践证明,教材管理系统管理平台有着非常好的发展前景,经过测试运行,系统各项功能都十分完善,界面漂亮,使用方便,操作容易,在技术理论上已经成熟。
毕业设计结束的同时也意味着四年的大学生活就要结束了。教材管理系统的完成以及如何在系统运行过程中实现的更好,这其中付出了很大的努力,这段时光将会终身难忘。
在毕业设计的这一段时间里,离不开导师的细心指导,还有同学们的热情帮助,有时候几个同学在一起讨论系统中的某个功能模块如何实现,如何实现的更好,或是问题没得到有效的解决,就会没有心思做其他的事情,让我们对学习充满了动力。
在毕业设计即将结束之时,首先要感谢我的指导老师,谢谢您在毕业设计和毕业论文中对我的指导。在您的细心指导下我才能快速的掌握系统的相关功能,在您的大力帮助下我才能将课本上的知识与自己的项目结合,真正的做到学以致用。感谢您经常牺牲自己的休息时间,利用其丰富的教学和项目经验对我进行指导。 课堂上,您教会我们如何学习、教会我们新的知识,在课下,您又像朋友一样亲切,教会了我很多道理,让我意识到先做人、后做事。感谢所有教过我的老师,为我倾注了大量的心血,正是你们的谆谆教诲、严谨教学才使我能顺利的完成学业,再此向你们表示深深的感谢。感谢大学里教过我的每一位老师,真心祝福您们。
在这里还得感谢我的战友们,也就是同学们对我的大力支持及帮助。正是因为有你们的不断帮助、鼓励,熬夜通宵,不停的调试、测试程序,给我带来了极大的动力,才能最终完成系统的运行。我们在一起交流、谈论的时光,都将是我们在通往未来道路上的宝贵财富。我要深深地感谢你们!
毕业在即,在今后的工作和生活中,我会铭记师长们的教诲、同学们的帮助,继续不懈努力和追求,来报答所有支持和帮助过我的人!
最后,我要向牺牲了休息时间来对本文进行审阅,评议和参与论文答辩的各位老师表示深深的感谢。在此,衷心的谢谢您们!
[1]向兵,董晓红.基于SpringBoot的高校教材管理系统的设计与实现[J].电脑知识与技术,2022,18(14):12-15.DOI:10.14004/j.cnki.ckt.2022.0827.
[2]石佳璇. 高等学校内部教材管理制度研究[D].沈阳师范大学,2021.DOI:10.27328/d.cnki.gshsc.2021.000859.
[3]张珍源. 教材管理的基本理论研究[D].沈阳师范大学,2021.DOI:10.27328/d.cnki.gshsc.2021.001028.
[4]宋建. 一种高校教材征订管理系统[P]. 浙江省:CN112232991A,2021-01-15.
[5]崔钟锐. 互联网背景下高校教材管理系统的设计与实现[D].郑州大学,2020.DOI:10.27466/d.cnki.gzzdu.2020.003813.
[6]魏兴锴.B/S模式下教材管理系统的设计与实现[J].企业科技与发展,2020(03):42-43.
[7]孙菁.高校教材管理系统的研究[J].中国校外教育,2020(06):66.
[8]陈昊. 农林院校教材管理系统的建设与分析[D].浙江海洋大学,2019.DOI:10.27747/d.cnki.gzjhy.2019.000193.
[9]Lin Weiliang. Research on Teaching Materials Management of Track and Field Web Course in College of Physical Education[J]. International Journal of Emerging Technologies in Learning (iJET),2016,11(06).
[10]安文. 基于B/S结构的高校教材管理系统的设计与实现[D].吉林大学,2016.
[11]缐金秋, 怀柔区教科研中心 市网络教材管理系统研讨会在怀召开. 丁学济 主编,北京怀柔年鉴,2014,463-464,年鉴.
[12]李爱萍,孟东霞,雷红,杨崇艳. 系统分析与设计[M].人民邮电出版社:, 201508.276.
[13]张敏. 红河学院教材管理系统的研究与分析[D].云南大学,2015.
[14]Jing Xin Wei,Chun Sun. The Design and Implementation of College Textbooks Management System of Information[J]. Advanced Materials Research,2014,3181(926-930).
[15]. 强化出版创新机制 打造一流教育品牌[N]. 中国教育报,2012-11-19(010).
[16]刘昊. 中小学生明日开学用上“升级版”学生卡[N]. 北京日报,2010-02-22(006).
[17]章潮晖,庄灵. 北京体育大学教材选用管理系统的分析与设计[C]//.探索的脚步——“十一五”北京高等教育教材建设论文集.,2010:251-255.
[18]刘翠芬. 基于三层架构的教材管理系统设计之系统功能分析[C]//.OA’2007办公自动化学术研讨会论文集.,2007:296-299.
[19]崔正昀, 基于校园网的教材管理系统. 天津市,天津工程师范学院,2005-10-06.
[20]苏英如, 教材管理系统. 河北省,北华航天工业学院,2005-01-01.
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~