第六次作业——软件实现

 

一、开始前的话

  在做这个项目的过程中,我们曾遇到了许多问题,比如后台逻辑处理的不够合理,数据分析模型不知道从何入手等。但经过不断的探索和组内讨论,我们在对整个项目进行较大的改进以后,终于实现了本项目,我认为一个项目的完成过程就应该是这样:不断发现问题,对问题进行改正,最后对已完成的部分进行相应修改,我们也正是这样做的。之前,我们最大的问题就是我们自己对项目的实现规划都没有太明确的认识,对此,我们曾在学生会科创部办公室内展开过几次深入的当面交流,来对项目进行具体、深入的讨论。其中做的最大的改动就是我们的数据分析模型了,原本我们是基于Spark框架来进行数据分析的,但在项目的实现过程中我发现其实并不需要使用Spark框架来降低技术成本、让数据高速流转。而由于我们组的刘涛同学对神经网络模型有过深入的研究,所以我们最终敲定了使用神经网络模型来进行数据训练和分析。而整个项目在我们的讨论会上经历了很大的改动,所以我们也在进行相应改动的同时对前面的几次作业进行了精细、全面的重构,观看请移步:

第一次作业(团队介绍及选题背景与意义)     : http://www.cnblogs.com/ylemfei-7797110/p/7758044.html
第二次作业(需求分析)                            : http://www.cnblogs.com/ylemfei-7797110/p/7834929.html
第三次作业(软件设计)                            : http://www.cnblogs.com/ylemfei-7797110/p/7899310.html

 

二、用户简易使用手册

注册模块

 登录模块

 论坛模块

 数据分析模块

 

三、将项目涉及到的代码上传到代码托管网站,并给出代码仓库地址。

  由于我们项目所编写的代码比较多,所以难以一一列举,并且如果把代码写在一篇博客里,可读性也不好,所以如果浏览者有兴趣的话,不妨去我们在Github上传的项目中查看代码,为了方便读者的观看,我们在代码编写的时候尽量加了注释,地址如下:

GitHub Address:https://github.com/ylem10/SoftwareProject

 

四、代码实现:阐述是如何实现产品的。

为了方便浏览者理解,我们制作了下面这张图例用来说明我们的项目设计完成的步骤:

相信这张图片能够很直观的说明我们项目的成型过程。由该图可知,我们的项目代码实现主要包括以下几个模块:

1.数据库设计模块

在我们的项目中使用的数据库管理系统是My Sql,之所以不使用我们最熟悉的Ms Sqlserver,原因是负责后台编写模块的组员反映My Sql可以很好的与他所编写的后台模块对接,即调用语句比较简单。另外一个原因就是我们的项目不需要将数据库内表之间的逻辑关系设计的太复杂,也不需要数据库来实现太多的业务逻辑,因此使用My Sql这个轻量级数据库是非常合适的,数据库相关语句如果直接放在博客里会显得有些臃肿,下面列举几个主要使用到的视图和触发器等数据库对象及其作用,而具体的代码,请感兴趣的读者前往我们的Github地址下载观看。

 

数据库对象名

数据库对象类型

作用

 

 

auto_login_view

 

 

存储过程

用户注册后自动在数据库中创建相应用户并创建相应的视图,使其只能访问自己权限范围内的信息。实现数据库的安全性控制。

 

 

post_comment_view

 

 

视图

对论坛中的每个帖子生成一张视图,视图内包含主贴及评论信息,以便于后台代码编写时无须在代码中编写相应查询语句,而是直接检索视图即可。

 

 

pic_view

 

 

视图

对论坛中的每个帖子及其内的评论所使用的图片地址生成一张视图,这样,在后台编写时要在页面上显示图片,则直接检索该视图即可。

 

 

user_view_feedback

 

 

视图

该视图包含每个普通用户所收到的反馈消息,从数据库安全性方面考虑,将用户与管理员的反馈消息分开在两张视图。用户收到的是管理员对用户反馈的处理信息

 

 

mana_view_feedback

 

 

视图

该视图包含每个管理员所收到的反馈消息,从数据库安全性方面考虑,将用户与管理员

的反馈消息分开在两张视图。

管理员所收到的是用户对平台的反馈消息。

 

 

delete_user

 

 

存储过程

删除一个用户时由于用户表与多张表有关联关系,因此不能直接删除,在后台编写删除代码会非常复杂,该存储过程实现的是一个级联删除,后台传递用户名参数直接调用即可。

 

2.前台页面设计

本项目的前台页面由2个女生负责,她们曾经多次参与学院组织的科研立项,在项目中也是主要负责前端设计的,因此她们在前台设计这方面比较擅长,所以我们的前台页面编写的比较友好,但是因为页面比较复杂,所以难以在这里一一展开细述,感兴趣的浏览者如果想观看我们的页面设计,不妨查看“用户简易使用指南”,而如果想观看代码,请前往我们的Github网址下载。在这里给出前台页面的基本目录:

(直接观看简易使用指南更加直观)

页面

功能及基本

 

注册登录

实现的是用户的注册登录功能,与别人不同的是,我们实现了通过手机号码短信注册和登录。

 

主页面

左上角是用户的昵称以及注销等通道,正中央是数据分析入口,数据分析入口下方则是我们的平台简介。右上角则是论坛入口以及信息反馈入口。

 

 

数据分析页面

在本页面中,用户通过下载我们给出的标准数据文件,根据该文件的各个字段填写一条或多条的学生信息。然后将填写好的文件上传到页面上,然后点击查看结果,即可将数据分析结果以可视化折线图的形式显示出来。

 

 

 

论坛页面

该页面显示出各个帖子的标题,如果打开的话,可以查看帖子的具体内容及其内的评论情况,页面的主要布局参考自“百度贴吧”,其次,用户对自己发布的帖子可以进行删除管理,而管理员则可对所有用户的帖子进行管理。

 

信息反馈页面

该页面提供一个文本框,供用户填写反馈信息,单击发送即可将反馈信息发送到平台的后台,由管理员查看并处理。

 

3.后台逻辑设计

同样,与前台页面相对应的是我们的后台逻辑,虽然数据库内封装的存储过程和视图已经给后台逻辑编写提供了很大的方便,但要把复杂的后台编写代码放在这里还是不太合适,在这里也给出后台逻辑设计的基本目录,请感兴趣的浏览者前往我们的Github网址下载。

目录结构

一级目录

二级目录

Model

View

三级目录

 

4.接口设计

在各个模块设计完以后,就需要进行模块的整合与对接,主要的对接方式如下:

PS:在数据处理模块中,由于神经网络模型的结果一般只有01,所以输出结果总是0-1间的离散值,根据我们的数据,我们把0定义为近阶段学习状况较差的情况,把1定义为近阶段学习状况较好的情况,而0-1间的离散值,如果越贴近1,则说明学习状况越好,越接近0则反之,以此来根据用户输入的学生信息,对一个学生的近期学习情况进行总体的评价,在实际测试中也取得了较好的处理结果。

①View层与Controller层的数据传递

1)  view通过超链接的方式给Controller层传递数据

2) view通过ajax的方式给Controller层传递数据

3)Controller层返回数据给view层

②Model层与Controller层的数据传递

Control层给出参数直接调用Model层中的方法

 

五、软件测试。

在这部分中,我们认为软件测试不是简单的进行一次软件的完整使用过程,所以我们把软件的使用过程放置到“用户简易使用手册”中,而在软件测试部分,我们想写的是我们在整个项目的实现过程中,曾在代码中出现了哪些bugbug是由哪位同学发现的,是在何时解决的。这些信息是我从我们组建立的QQ群中的聊天记录中提取出来的,具体如下:

Bug出现位置

Bug主要描述

发现者

修改时间

 

前台页面

在使用手机号注册登录时,发现有时短信验证码会发送超时。

 

廖文静

 

2017-12-11

 

前台页面

在页面跳转时,由于传递了中文的url参数,出现页面崩溃和乱码现象。

 

刘涛

 

2017-12-07

 

 

数据库

在帖子及评论视图中,因为表与表之间的左外连接和右外连接使用错误,导致最后检索出的信息为空。

 

 

林光涵

 

 

2017-12-10

 

 

数据库

My Sql中的触发器内未进行较严格的代码逻辑审查,因此出现了一个未报错的错误,在实际运行过程中出现了错误。

 

 

林光涵

 

 

2017-12-10

 

 

 

后台逻辑

在论坛主页面,未登录的游客本应该只能访问帖子的主页,但不能进行评论,但有时候会出现问题,即游客能以NULL的名称来评论。

 

 

 

纪芳

 

 

 

2017-12-15

 

 

后台逻辑

在论坛的页面中,一个普通用户甚至可以删除其他用户的评论,这是后台逻辑中出现的bug

 

 

纪芳

 

 

2017-12-15

 

 

数据分析模型

在数据分析时,当数据量比较大时,反馈结果的速度有时候很慢。

 

 

张泽政

 

 

2017-12-17

 

 

数据分析模型

在数据分析时,得出的结论有时偏离真实结果比较远(后来发现是数据量不足的原因)

 

 

林瑞溶

 

 

2017-12-17

 

后台逻辑

用户使用手机登录时,经常在一些页面中显示出“NULL”的用户名。

 

刘涛

 

2017-12-13

后台逻辑

论坛发帖有时图片无法正常显示

林光涵

2017-12-19

 

PS:我们的软件测试分工是这样的:负责数据库设计的同学去验证数据分析模型的输出结果、负责前台页面的同学去验证后台逻辑的处理是否准确、负责后台设计的同学在使用数据库的同时检验数据库语句的逻辑是否准确,检索结果是否正确。)

 

六、其他想说的话。

  1. 在我们这样一个项目中,数据来源相当关键,没有充足的数据,就无法训练出较好的模型,我们的数据来源主要从一个国外的数据分析竞赛网站中获得,在未来将通过我们自己的方式提取出更多的真实数据,在这里对该网站表示感谢: https://www.kaggle.com/

 

   2.在论坛模块中,我们比较满意于百度贴吧的交流方式,因此页面在进行编写时也是主要参照自百度贴吧:https://tieba.baidu.com/

 

   3.在图形可视化部分,我们主要参照自著名的图形绘制平台“echarts”中的一个具体实例,在它的基础上进一步优化和改造,得出了较友好的可视化结果,在此也给出该平台的网址,希望浏览者在需要的时候能够使用。

 

   4.在本博客的编写时,刚开始简易用户指南的书写中使用了截图的方式来展示项目,发现效果不太好,后来参考本学院网络工程专业2016级的同学在编写Java程序设计博客时对自己的输出结果进行展示所使用的Gif绘制软件——LICE Cap,实现了近似录像的功能,也得到了较好的展示效果。

 

   5.在整个项目的实现过程中,无论是在刚开始犯错误、搞不清平台逻辑,还是在后来实际行动时代码编写遇到的困难,都使我们整个小组受益匪浅。其次,本着对项目认真负责的态度,每当我们对项目有任何改动时,都会详细的对前面3次作业中所写的博客进行修改,具体可以看本博客开头中给出的网址。最后,在以后,我们也将不断对本项目进行改进,在这里指出我们平台目前的一些不足之处,以及针对这些不足,我们制定的未来发展目标,为了不让过多的文字使读者眼花缭乱,我们最后通过制作两张图例来更加直观的表达:

 

① 首先总结一下我们平台目前的一些不足之处:

 

② 针对上述问题,我们对平台未来的改进方向也有了明确的目标:

 

posted @ 2017-12-17 21:49  ylemfei  阅读(254)  评论(2编辑  收藏  举报