2相关技术
2.1微信小程序
小程序是一种新的开放能力,开发者可以快速地开发一个小程序。小程序可以在微信内被便捷地获取和传播,同时具有出色的使用体验。尤其拥抱微信生态圈,让微信小程序更加的如虎添翼,发展迅猛。
2.2 MYSQL数据库
MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他应用软件的数据库后端的开发工作。此外,用户可利用许多语言编写访问MySQL数据库的程序。作为开放源代码运动的产物之一,MySQL关系数据库管理系统越来越受到人们的青睐,应用范围也越来越广。速度和易用性使MySQL特别适用于Web站点或应用软件的数据库后端的开发工作。
MYSQL数据库具有以下特点:
1、C和C ++中使用和测试,以确保源代码的编译器的便携性和灵活性。
2、支持多种操作系统AIX的,FreeBSD下,HP-UX,Linux和Mac OS中,Novell公司的Netware,OpenBSD系统,OS/2裹时,Solaris,Windows等。
3、提供了用于不同的编程语言的API。编程语言,如C,, C ++,Python和Java的,的Perl,PHP,埃菲尔铁塔,Ruby和Tcl的。
4、以及使用的CPU资源来支持多线程。
5、算法优化查询SQL,切实提高搜索速度。
6、网络上的客户端和服务器可以用来编程任何独立的编程环境,也有中国,GB2312,BIG5,日文写作,一般基金,用于支持多国语言,并且可以嵌入在数据表和其他软件shift_jis访问柱可以用作的名称。
7、TCP / IP,ODBC和JDBC数据库,并提供连接到其他。
8、管理工具的管理,控制和优化数据库的操作。
9、可以数以千万计的记录在一个大的数据库。
2.3 uni-app
uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。
DCloud公司拥有800万开发者、数百万应用、12亿手机端月活用户、数千款uni-app插件。
uni-app在手,做啥都不愁。即使不跨端,uni-app也是更好的小程序开发框架更好的App跨平台框架、更方便的H5开发框架。不管领导安排什么样的项目,你都可以快速交付,不需要转换开发思维、不需要更改开发习惯。
2.4 SSM框架简介
SSM框架,是Spring+Spring MVC+MyBatis的缩写,这个是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统。
1.Spring简介
Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
A.控制反转(IOC)是什么呢?
IOC:控制反转也叫依赖注入。利用了工厂模式将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器来生成类的实例对象以及管理对象。在spring容器启动的时候,spring会把你在配置文件中配置的bean都初始化好,然后在你需要调用的时候,就把它已经初始化好的那些bean分配给你需要调用这些bean的类(假设这个类名是A),分配的方法就是调用A的setter方法来注入,而不需要你在A里面new这些bean了。
B.面向切面(AOP)又是什么呢?
首先,需要说明的一点,AOP只是Spring的特性,它就像OOP一样是一种编程思想,并不是某一种技术,AOP可以说是对OOP的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。在OOP设计中,它导致了大量代码的重复,而不利于各个模块的重用。将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。
实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。
2.Spring MVC简介
Spring MVC属于Spring Framework的后续产品,已经融合在Spring Web Flow里面,它原生支持的Spring特性,让开发变得非常简单规范。Spring MVC分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
3.MyBatis简介
MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。可以这么理解,MyBatis是一个用来帮你管理数据增删改查的框架。
2.5 Tomcat简介
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于小量级的应用服务器,广泛应用于中小型系统和并发访问用户不是很多的场合,是JSP程序首选的开发方式和调试方式。对于一个初学者,这可能是因为当一个好的Apache服务器上配置了一台机器,你可以用它来访问HTML页面的请求作出回应。 Apache Tomcat的实际上是服务器的扩展的一部分,但它是独立运行的,所以当你运行tomcat的,它实际上是作为与Apache单独运行的一个单独进程。
诀窍是,当配置正确时,Apache来提供HTML页面,但实际上运行Tomcat JSP页面和Servlet。另外,Tomcat和IIS,Apache和其他Web服务器,具有处理功能的HTML页面,而这是一个Servlet和JSP容器,独立的Tomcat Servlet容器是默认模式。不过,Tomcat是不如来处理静态HTML的Apache服务器的能力。目前Tomcat最新版本为8.0.0-RC1 (alpha) Released。
2.6 VUE框架
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架。 与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用(SPA)提供驱动。
Vue 介绍
AngularJS是Vue早期开发的灵感来源。然而,AngularJS 中存在的许多问题,在 Vue 中已经得到解决。
Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。
Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
Vue.js 自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时 ,Vue.js 也能地驱动复杂的单页应用。
特点编辑
易用
在有HTML,CSS,JavaScript的基础上,快速上手。
灵活
简单小巧的核心,渐进式技术栈,足以应付任何规模的应用。
性能
20kb min+gzip 运行大小、超快虚拟 DOM 、最省心的优化。
3系统分析
3.1可行性分析
通过对本基于微信小程序的计算机实验室排课与查询系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。
3.1.1技术可行性
本基于微信小程序的计算机实验室排课与查询系统后端采用SSM框架进行开发,是一种成熟的框架,开发有很多教程的,微信开发也有很多教程,并且网络上很多免费的教程。
因此,基于微信小程序的计算机实验室排课与查询系统在开发技术上具有很高可行性,且开发人员掌握了一定的开发技术,所以此系统的开发技术具有可行性。
3.1.2经济可行性
本基于微信小程序的计算机实验室排课与查询系统采用的软件都是开源的,这样能够削减很多的精力和资源,降低开发成本。同时对计算机的配置要求也极低,即使是淘汰下来的计算机也能够满足需要,因此,本系统在经济上是完全具有可行性的,所以在经济上是十分可行的。
3.1.3操作可行性
本基于微信小程序的计算机实验室排课与查询系统的界面简单易操作,用户只要平时有在用过电脑,都能进行访问和操作。本系统具有易操作、易管理、交互性好的特点,在操作上是非常简单的,因此在操作上具有很高的可行性。
综上所述,此系统开发目标已明确,在技术、经济和操作方面都具有很高的可行性,并且投入少、功能完善、管理方便,因此系统的开发是完全可行的。
3.2系统性能分析
3.2.1 系统安全性
此基于微信小程序的计算机实验室排课与查询系统要严格控制管理权限,具体要求如下:
(1)要想对基于微信小程序的计算机实验室排课与查询系统进行管理,首先要依靠用户名和密码在系统中登陆,无权限的用户不可以通过任何方式登录系统和对系统的任何信息和数据进行查看,这样可以保证系统的安全可靠性和准确性。
(2)在具体实现中对不同的权限进行设定,不同权限的用户在系统中登陆后,不可以越级操作。
3.2.2 数据完整性
(1)所有记录信息要保持全面,信息记录内容不可以是空。
(2)各种数据间相互联系要保持正确。
(3)相同数据在不同记录中要保持一致。
3.3系统界面分析
目前,界面设计已经成为对软件质量进行评价的一条关键指标,一个好的用户界面可以使用户使用系统的信心和兴趣增加,从而使工作效率提高。微信小程序页面尽量简洁,让页面清爽,访问速度能提升上去,访问服务端接口的时候相应更快更迅捷。
1.输出设计
输出是由电脑对输入的基本信息进行解决,生成高质量的有效信息,并使之具有一定的格式,提供给管理者使用,这是输出设计的主要责任和目标。
系统开发的过程与实施过程相反,并不是从输入设计到输出设计,而是从输出设计到输入设计。这是由于输出表格与使用者直接相联系,设计的目的应当是确保使用者可以很方便的使用输出表格,并且可以将各部门的有用信息及时的反映出来。输出设计的准绳是既要整体琢磨不同管理层的所有需要,又要简洁,不要提供给用户不需要的信息。
2.输入设计
输入数据的收集和录入是比较麻烦的,需要非常多的人力和一定设备,而且经常出错。一旦输入系统的数据不正确,那么处理后的输出就会扩大这些错误,因此输入的数据的准确性对整个系统的性能起着决定性意义。
输入设计有以下几点原则:
1)输入量应尽量保持在能够满足处理要求的最低限度。输入量越少,错误率就会越少,数据的准备时间也越少。
2)应尽可能的使输入的准备以及输入的过程进行时比较方便,这样使错误的发生率降低。
3)应尽量早检查输入数据(尽量接近原数据发生点),以便使错误更正比较及时。
4)输入数据尽早地记录成其处理所需的形式,以防止数据由一种介质转移到另一种介质时需要转录而可能发生的错误。
3.4系统流程和逻辑
图3-3登录流程图
图3-4修改密码流程图
4系统概要设计
4.1概述
本系统后台采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示:
图4-1系统工作原理图
4.2系统结构
设计的功能结构图如下图所示:
图4-2功能结构图
4.3.数据库设计
4.3.1数据库实体
概念设计的目标是设计出反映某个组织部门信息需求的数据库系统概念模式,数据库系统的概念模式独立于数据库系统的逻辑结构、独立于数据库管理系统(DBMS)、独立于计算机系统。
概念模式的设计方法是在需求分析的基础上,用概念数据模型(例如E-R模型)表示数据及数据之间的相互联系,设计出反映用户信息需求和处理需求的数据库系统概念模式。概念设计的目标是准确描述应用领域的信息模式,支持用户的各种应用,这样既容易转换为数据库系统逻辑模式,又容易为用户理解。数据库系统概念模式是面向现实世界的数据模型,不能直接用于数据库系统的实现。在此阶段,用户可以参与和评价数据库系统的设计,从而有利于保证数据库系统的设计与用户的需求相吻合。在概念模式的设计中,E-R模型法是最常见的设计方法。本系统的E-R图如下图所示:
(1)管理员信息的实体属性图如下:
图4.12 管理员信息实体属性图
(2)教师实体属性图如图4.13所示:
图4.13教师实体属性图
(3)学生信息实体属性图如图4.14所示:
图4.14 学生信息实体属性图
4.3.2数据库设计表
基于微信小程序的计算机实验室排课与查询系统需要后台数据库,下面介绍数据库中的各个表的详细信息:
表4.1 报修信息
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
baoxiumingcheng | varchar(200) | 否 | 报修名称 | |
baoxiuneirong | longtext | 是 | NULL | 报修内容 |
baoxiuriqi | date | 是 | NULL | 报修日期 |
tupian | varchar(200) | 是 | NULL | 图片 |
jiaoshizhanghao | varchar(200) | 是 | NULL | 教师账号 |
jiaoshixingming | varchar(200) | 是 | NULL | 教师姓名 |
xuehao | varchar(200) | 是 | NULL | 学号 |
xingming | varchar(200) | 是 | NULL | 姓名 |
userid | bigint(20) | 是 | NULL | 用户id |
表4.2 教师
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
jiaoshizhanghao | varchar(200) | 否 | 教师账号 | |
mima | varchar(200) | 否 | 密码 | |
jiaoshixingming | varchar(200) | 否 | 教师姓名 | |
nianling | int(11) | 否 | 年龄 | |
gongling | varchar(200) | 否 | 工龄 | |
xingbie | varchar(200) | 是 | NULL | 性别 |
shouji | varchar(200) | 否 | 手机 | |
zhaopian | varchar(200) | 是 | NULL | 照片 |
表4.3 取消预约
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
shiyanshihao | varchar(200) | 是 | NULL | 实验室号 |
mingcheng | varchar(200) | 是 | NULL | 名称 |
tupian | varchar(200) | 是 | NULL | 图片 |
shifouquxiao | varchar(200) | 是 | NULL | 是否取消 |
quxiaoyuanyin | longtext | 是 | NULL | 取消原因 |
quxiaoshijian | datetime | 是 | NULL | 取消时间 |
jiaoshizhanghao | varchar(200) | 是 | NULL | 教师账号 |
jiaoshixingming | varchar(200) | 是 | NULL | 教师姓名 |
sfsh | varchar(200) | 是 | 否 | 是否审核 |
shhf | longtext | 是 | NULL | 审核回复 |
userid | bigint(20) | 是 | NULL | 用户id |
表4.4 实验报告
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
kechengmingcheng | varchar(200) | 是 | NULL | 课程名称 |
xueshengbaogao | varchar(200) | 是 | NULL | 学生报告 |
jiaoshizhanghao | varchar(200) | 是 | NULL | 教师账号 |
jiaoshixingming | varchar(200) | 是 | NULL | 教师姓名 |
tijiaoshijian | datetime | 是 | NULL | 提交时间 |
xuehao | varchar(200) | 是 | NULL | 学号 |
xingming | varchar(200) | 是 | NULL | 姓名 |
userid | bigint(20) | 是 | NULL | 用户id |
表4.5 实验课程
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
kechengmingcheng | varchar(200) | 是 | NULL | 课程名称 |
kechengfenlei | varchar(200) | 是 | NULL | 课程分类 |
kaikeshijian | datetime | 是 | NULL | 开课时间 |
jieshushijian | datetime | 是 | NULL | 结束时间 |
shiyanneirong | longtext | 是 | NULL | 实验内容 |
shiyanbaogao | varchar(200) | 是 | NULL | 实验报告 |
jiaoshizhanghao | varchar(200) | 是 | NULL | 教师账号 |
jiaoshixingming | varchar(200) | 是 | NULL | 教师姓名 |
userid | bigint(20) | 是 | NULL | 用户id |
表4.6 实验室信息
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
shiyanshihao | varchar(200) | 否 | 实验室号 | |
mingcheng | varchar(200) | 否 | 名称 | |
guimo | varchar(200) | 否 | 规模 | |
shiyanshileixing | varchar(200) | 是 | NULL | 实验室类型 |
tupian | varchar(200) | 是 | NULL | 图片 |
zhuangtai | varchar(200) | 是 | NULL | 状态 |
rongnarenshu | int(11) | 是 | NULL | 容纳人数 |
keyueshijian | varchar(200) | 是 | NULL | 可约时间 |
weizhi | varchar(200) | 是 | NULL | 位置 |
xiangqing | longtext | 是 | NULL | 详情 |
clicktime | datetime | 是 | NULL | 最近点击时间 |
clicknum | int(11) | 是 | 0 | 点击次数 |
表4.7 实验室预约
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
shiyanshihao | varchar(200) | 是 | NULL | 实验室号 |
mingcheng | varchar(200) | 是 | NULL | 名称 |
tupian | varchar(200) | 是 | NULL | 图片 |
shifouyuyue | varchar(200) | 是 | NULL | 是否预约 |
yuyueyuanyin | longtext | 是 | NULL | 预约原因 |
yuyueshijian | varchar(200) | 否 | 预约时间 | |
jiaoshizhanghao | varchar(200) | 是 | NULL | 教师账号 |
jiaoshixingming | varchar(200) | 是 | NULL | 教师姓名 |
sfsh | varchar(200) | 是 | 否 | 是否审核 |
shhf | longtext | 是 | NULL | 审核回复 |
userid | bigint(20) | 是 | NULL | 用户id |
表4.8 收藏表
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
userid | bigint(20) | 否 | 用户id | |
refid | bigint(20) | 是 | NULL | 收藏id |
tablename | varchar(200) | 是 | NULL | 表名 |
name | varchar(200) | 否 | 收藏名称 | |
picture | varchar(200) | 否 | 收藏图片 |
表4.9 管理员表
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
id (主键) | bigint(20) | 否 | 主键 | |
username | varchar(100) | 否 | 用户名 | |
password | varchar(100) | 否 | 密码 | |
role | varchar(100) | 是 | 管理员 | 角色 |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 新增时间 |
表4.10 学生
字段 | 类型 | 空 | 默认 | 注释 |
---|---|---|---|---|
id (主键) | bigint(20) | 否 | 主键 | |
addtime | timestamp | 否 | CURRENT_TIMESTAMP | 创建时间 |
xuehao | varchar(200) | 否 | 学号 | |
mima | varchar(200) | 否 | 密码 | |
xingming | varchar(200) | 否 | 姓名 | |
nianling | varchar(200) | 否 | 年龄 | |
xingbie | varchar(200) | 是 | NULL | 性别 |
shouji | varchar(200) | 是 | NULL | 手机 |
zhaopian | varchar(200) | 是 | NULL | 照片 |
5系统详细实现
5.1 管理员模块的实现
5.1.1 学生信息管理
管理员可以管理学生信息,可以对学生信息修改删除。具体界面的展示如图5.1所示。
图5.1 学生信息界面
5.1.2 教师信息管理
管理员可以对教师信息进行查询修改,删除操作。具体界面如图5.2所示。
图5.2 教师信息管理界面
5.1.3 实验室信息管理
系统管理员可以对实验室信息进行增删查改操作。界面如下图所示:
图5.3 实验室信息管理界面
5.1.4 实验室预约管理
系统管理员可以对实验室预约信息进行审核操作。界面如下图所示:
图5.4 实验室预约信息管理界面
5.1.5 轮播图管理
系统管理员可以对轮播图信息进行添加修改删除操作。界面如下图所示:
图5.5 轮播图信息管理界面
5.2 小程序会员模块的实现
5.2.1 系统首页
小程序用户是需要注册才可以进行登录的,登录后在首页可以查看相关信息,并且下面导航可以点击到其他功能模块。界面如下图所示:
图5.6 系统首页
5.2.2 我的菜单
在小程序里点击我的,会出现关于我的界面,在这里可以修改个人信息,以及可以点击其他功能模块。界面如下图所示:
图5.7 我的菜单
5.2.3实验室预约
用户可以进行实验室预约。界面如下图所示:
图5.8 实验室预约界面