一 序言
本文主要阐述的是一个数据可视化学生成绩分析系统的软件系统设计方案。这个项目来源于我的工程实践任务。
项目简介:建立一个系统,这个系统采用经典架构,具有一定的安全性、稳定性。在具体功能上,要实现对于成绩最基本的管理功能,包括录入、查看、修改等。此外最重要的一点是,该系统被期望能够根据现有各科成绩的离散情况,依比例完成数据转换,使得各类数据的离散值均匀,并可以根据不同类别对数据进行统计分析。最后,系统还应当能对大数据进行分析并推导出有预测性的结论。
关于此系统的需求分析与概念原型部分的讨论,有兴趣的读者可移步至我之前在博客园上的博文:
https://www.cnblogs.com/wonaicaocao/p/14082428.html
本文将从软件系统的设计方面进行探讨,争取给出一个合理实用的设计方案。
二 软件架构风格
软件架构风格,又称软件体系结构风格,是描述某一特定应用领域中系统组织方式的惯用模式。软件架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。对软件体系结构风格的研究和实践促进对设计的重用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。
考虑本项目,很明显,该系统要被多用户进行使用,而且要为这些用户所操作的信息提供存储空间与反应机制,而且为了适应现代化办公的需要,该系统需要可以被手机、平板、计算机等各种设备访问。因此,B/S架构成为了实现这一系统的不二选择。在上次作业完成后,经过考虑,与老师商讨,决定不再采用上次文章所提到的C/S架构,转而使用便捷灵活的B/S架构。
B/S架构主要使用不断成熟的浏览器技术,结合客户端脚本语言和ActiveX技术来实现。对于C/S架构中要使用复杂软件实现的功能,本架构采用电脑自带的浏览器便可实现。它不仅业务扩展方便,而且维护成本低且共享性强,已经成为当今应用程序的首选体系结构。
三层结构中,数据库服务器和客户端不直接耦合,而是通过中间层进行耦合,与两层结构相比它具有更加优秀的维护性、灵活性与可扩展性。目前三层结构常应用于B/S架构系统中。用户通过浏览器访问web服务器,服务器从数据库中调动、修改数据。
三 软件设计模式
软件设计模式又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。算法不是设计模式,因为算法致力于解决问题而非设计问题。设计模式通常描述了一组相互紧密作用的类与对象。设计模式提供一种讨论软件设计的公共语言,使得熟练设计者的设计经验可以被初学者和其他设计者掌握。
本项目从各种意义上考虑都是一个面向对象的项目,不论是语言(Java)还是架构(B/S)等,故而采用观察者模式作为行为模式,定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新;采用原型模式作为创建模式,用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。采用适配器模式为结构模式,将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
四 软件开发环境
本系统在Microsoft Windows10系统上进行开发。设计并实现过程中采用了以下开发环境:
(1)Eclipse。它是一款开源的Java语言开发工具,属于IBM公司的产品。它可以通过添加插件来扩展各种开发软件所需功能,是当下利用Java语言进行系统设计最常用的平台之一;
(2)Java SE 8.0版本。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE是基础包,但是也包含了支持 Java Web 服务开发的类,并为其它Java版本提供基础;
(3)Tomcat服务器。Tomcat是Apache软件基金会的一个核心项目,它的代码完全开源且免费,拥有技术先进、性能稳定的优点,目前已经成为比较流行的web应用服务器,它是一个可以独立运行的Servlet容器;
(4)MySQL数据库。最初由MySQL AB公司开发,其社区版本完全免费,同时具有各种优良特性,已经成为目前最流行的关系数据库管理系统之一。
本系统采用目前设计上流行的SSM框架,即Spring+SpringMVC+MyBatis。
(1)Spring。Spring是一款完全开源且免费的框架,可以实现一站式编程。它采用模块化的组织方式,可以用于声明式事务的处理,具有灵活多样的特点。
(2)SpringMVC。它将各个层进行解耦操作,极大地简化了代码。它采用工作者模式,前端控制器负责接受请求,而应用控制器负责执行请求。客户端向Web容器发命令,由前端控制器进行拦截,将业务需求发给应用控制器,二者又分别在视图层与模型层进行交互操作,最终将结果返回。
(3)MyBatis。MyBatis是一款开源且轻量的持久层框架,支持动态SQL、调用存储过程以及高级映射。它可以通过简单的XML文件或注解进行配置与映射,自动将Java对象映射成数据库中的记录。它实现了代码与SQL语句的隔离管理,降低了二者之间的耦合度,因此它得到了广泛使用。
五 系统数据库设计
我在数据库中设计了如下几张表:管理员账户表、教师账户表、学生账户表、成绩表、通知表、学生资料表和教师资料表。通过这些表来存放数据,从而完成预期的任务。
(1)管理员账户表
中文名称 |
字段名称 |
类型 |
长度 |
是否允许为空 |
账号 |
Mcount |
varchar |
20 |
主键,非空 |
密码 |
Mpwd |
varchar |
15 |
可空 |
密保问题 |
Mquestion |
varchar |
30 |
可空 |
(2)教师账户表
中文名称 |
字段名称 |
类型 |
长度 |
是否允许为空 |
账号 |
Tcount |
varchar |
20 |
主键,非空 |
密码 |
Tpwd |
varchar |
15 |
可空 |
密保问题 |
Tquestion |
varchar |
30 |
可空 |
工号 |
Tnum |
varchar |
10 |
可空 |
(3)学生账户表
中文名称 |
字段名称 |
类型 |
长度 |
是否允许为空 |
账号 |
Scount |
varchar |
20 |
主键,非空 |
密码 |
Spwd |
varchar |
15 |
可空 |
密保问题 |
Squestion |
varchar |
30 |
可空 |
学号 |
Snum |
varchar |
10 |
可空 |
(4)成绩表
中文名称 |
字段名称 |
类型 |
长度 |
是否允许为空 |
学期 |
Sem |
varchar |
20 |
联合主键,非空 |
课程号 |
C'no |
varchar |
15 |
联合主键,非空 |
课程名 |
Course |
varchar |
30 |
可空 |
授课老师 |
Teacher |
varchar |
10 |
可空 |
学号 |
Snum |
varchar |
10 |
可空 |
分数 |
Score |
double |
20 |
可空 |
备注 |
Extra |
varchar |
20 |
可空 |
(5)通知表
中文名称 |
字段名称 |
类型 |
长度 |
是否允许为空 |
编号 |
ID |
Int |
10 |
主键,非空 |
种类 |
Type |
varchar |
15 |
可空 |
内容 |
Infor |
varchar |
30 |
可空 |
接收者 |
Reciever |
varchar |
10 |
可空 |
(6)学生资料表
中文名称 |
字段名称 |
类型 |
长度 |
是否允许为空 |
学号 |
Snum |
varchar |
20 |
主键,非空 |
姓名 |
Sname |
varchar |
15 |
可空 |
性别 |
Ssex |
varchar |
30 |
可空 |
班级 |
Sclass |
varchar |
10 |
可空 |
状态 |
Ssitu |
varchar |
10 |
可空 |
(7)教师资料表
中文名称 |
字段名称 |
类型 |
长度 |
是否允许为空 |
工号 |
Tnum |
varchar |
20 |
主键,非空 |
姓名 |
Tname |
varchar |
15 |
可空 |
性别 |
Tsex |
varchar |
30 |
可空 |
部门 |
Tdepart |
varchar |
10 |
可空 |
职称 |
Tjob |
varchar |
10 |
可空 |
六 软件系统视图
接下来将展示基于本数据可视化学生成绩分析系统绘制的各种视图,通过这些视图,整个软件系统的层次、逻辑、布局以及运作方式将详尽展示出来。
分解视图
分解视图通过将软件系统进行层次化解析来绘制出视图,使得整个软件系统可以层次分明的展示出来。本项目的分解视图如下:
依赖视图
依赖视图详细展示了一个软件系统内各模块之间的依赖关系。依赖视图基于分解视图的基础上进行绘制,用虚线箭头表示两个模块间的数据依赖关系。
泛化视图
泛化视图展现了软件模块之间的一般化或具体化的关系,描述了软件在抽象层面上的关系,进一步展示了整个软件系统的各层架构。
其中,Manager、Student、Teacher均继承自账户管理;TData、SData均继承自信息管理。
执行视图(流程图)
执行视图的表现形式有多种,如流程图、时序图等。本文选择自己最熟悉、最常用的流程图来表征。
部署视图
部署视图有助于设计人员分析一个设计的质量属性,比如软件处理网络高并发的能力、软件对处理器的计算需求等。它将执行实体和计算机资源建立映射关系。
工作分配视图
工作分配视图有利于跟踪不同项目团队和成员的工作任务的进度,也有利于在项目团队和成员之间合理地分配和调整项目资源。
实现视图(项目结构)
以下是目前构建出的项目结构,在接下来的日子里会根据具体要求进行调整。
七 概念模型的工作机制
程序=算法+数据结构,这个规约我们并不陌生,早在刚开始接触计算机专业时就已经理解。那么概念原型是什么呢?类比程序的“等式”,可以分析出,概念原型=用例+数据模型,这样一来这一概念就显得有尤为清晰了。
由上的所有归纳汇总,不难分析出系统细节,下面根据不同的用例来阐述整个整个概念模型的工作过程:
①管理员:登陆之后,可以管理各类账号,包括添加、移除等操作;也可以对成绩类进行管理,如多开一门课、安排一次考试等;还可以管理信息,如调整教师职位、改变学生状态;
②教师:登陆之后,可以更改自己的密码(要回答密保问题)、可以录入最近的考试成绩,还可以对成绩进行分析,看看教学情况是否理想,并预测下一次的考试结果;
③学生:登陆之后可以看看系统通知,了解一下最新的成绩动态,可以按单科或总学年查看自己的成绩;若对自己的成绩不满意,可以查看经由系统分析后得出的见解,从而更好地鼓励自己学习。
八 总结
本文详细论述了一个基于B/S模式的数据可视化学生成绩分析系统的详细软件设计方案,给出了它的设计模式、设计风格、设计视图、数据库与概念模型工作过程,既为接下来的工程实践操作打下了基础,又实践、巩固了软件工程的相关知识。对于过程中出现的不足,在日后的项目开发中会进行不断地改进。
参考资料
1.https://www.cnblogs.com/wonaicaocao/p/14082428.html
2.https://www.cnblogs.com/fanlinglong/p/12583902.html
3.https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84%E9%A3%8E%E6%A0%BC/11004536?fr=aladdin
4.https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/2117635?fr=aladdin