《基于Golang的学生资料网盘系统的设计与实现》由会员分享,可在线阅读,更多相关《基于Golang的学生资料网盘系统的设计与实现(62页珍藏版)》请在人人文库网上搜索。

1、广东东软学院本科毕业设计(论文) 基于Golang的学生资料网盘系统的设计与实现 The Design and Implementation of Study Information Network Disk System Base On Golang 中文摘要近一两个月来,由于新型冠状病毒的影响,学校被迫延迟开学。本认为学生会失去这几个月的求学机会。但是相反,教师们纷纷开启了以直播网上授课的方式教学。如今社会越来越信息化以及新型冠状病毒的影响,学者们乐意地在各类平台分享知识,学子们只要随意打开或者搜索都能学习到自己感兴趣的知识。这一线上学习的浪潮更是推动了文件传输的飞快发展。本文将主要介绍在

2、Golang开发环境以及Mysql数据库下学生资料网盘系统的设计方法和具体的实现过程。针对疫情的影响,结合用户的实际求学需求出发,分析出如何设计并实现功能完善、易于操作、高并发的学生资料网盘系统。关键字:学生资料网盘 文件传输 断点下载 秒传 Golang beego MysqlAbstractIn the past month or two, due to the impact of the new coronavirus, the school was forced to delay the start of school. I believe that students will los

3、e the opportunity to study in these months. But on the contrary, teachers have started teaching by live online teaching. Nowadays, society is becoming more and more informatized and the impact of new coronaviruses. Scholars are willing to share knowledge on various platforms. Students can learn what

4、 they are interested in as long as they open or search at will. This wave of online learning is driving the rapid development of file transfer. This article will mainly introduce the design method and specific implementation process of the student information network disk system in the Golang develo

5、pment environment and Mysql database. According to the impact of the epidemic situation, combining with the actual learning needs of users, we analyzed how to design and implement a complete, easy-to-operate, highly concurrent student data network disk system.Key words: study information network dis

6、k system beego golang file transfer breakpoint download fast upload目录第一章 绪论11.1 课题背景与意义11.2 研究现状11.3 论文研究的主要内容1第二章 相关技术论述32.1 开发环境介绍32.1.1 GO语言环境搭建32.1.2 GO语言简介32.1.3 Beego框架简介42.1.4 MVC模式简介52.1.5 MySQL数据库简介6第三章 可行性分析与需求分析73.1可行性分析73.1.1 技术可行性分析73.1.2 经济可行性分析73.1.3 实施可行性分析73.2需求分析83.2.1 总体需求分析83.2.2

7、 系统其他需求分析10第四章 系统设计124.1 系统总体功能设计124.2 功能设计124.2.1 登录注册模块134.2.2 文件传输模块134.2.3 群聊模块154.3 界面设计15第五章 数据库设计195.1 概念结构设计195.2 物理结构设计205.2.1用户信息表tbl_user205.2.2文件基本信息表tbl_file215.2.3用户文件表tbl_user_file215.2.4用户token表tbl_user_token225.2.5班级信息表tbl_class225.2.6用户班级表tbl_user_class235.2.7班级聊天信息表tbl_class_msg23

8、第六章 系统详细设计与实现246.1 系统核心功能详细设计246.1.1 用户注册详细设计246.1.2 用户登录详细设计246.1.3 忘记密码详细设计256.1.4 文件上传详细设计256.1.5 文件下载详细设计266.1.6 文件断点下载详细设计266.1.7 文件重命名详细设计276.1.8 文件删除详细设计276.1.9 文件分享详细设计286.1.10 更改用户信息详细设计286.1.11 创建班级详细设计296.1.12 加入班级详细设计296.1.13 聊天详细设计306.2 系统编码实现306.2.1 系统各模块的实现306.2.1.1 登录注册模块的实现306.2.1.2

9、 文件模块的实现386.2.1.3 群聊模块的实现466.2.1.4 用户模块的实现50第七章 系统测试537.1 系统测试概述537.2 系统测试环境与测试方法537.3 系统测试步骤与结果53参考文献56致谢57第一章 绪论1.1 课题背景与意义近年来,随着生活水平的提高与技术的发展,市面上出现了各式各样的软件,粗略统计一下少只也有上亿款软件,而目前比较出名的软件占用内存都比较大,更不用说存放一些文件了。因此出现了U盘、移动硬盘这些硬盘虽然能解决需求,但是并不能长期存储,容易丢失毁坏;最好出现了百度网盘,但这需要安装APP,并且必须连接局域网上传且耗费流量,使用上都有限制。而院校学生与学生

10、之间、学生与教师之间、教师与教师之间文件传输显然需要一个更好的文件传输系统。这时可能有人会问在院校内使用FTP文件传输就好了,为什么要使用网盘?虽然他们的本质都是存储空间,但是它们还是有区别的。第一、FTP是文件传输协议的上传支持,侧重的是上传的功能,并且有时间限制,上传后需要把文件转移到永久空间;然而学生资料网盘一般有客户端上传和http本地上传,侧重的是存储功能。基于上述背景分析,本文将在调研微信、QQ、百度网盘等优缺点的基础上,设计和实现了一款基于golang的学生资料网盘系统,可提供文件上传、文件下载、文件分享、班级通讯等功能模块。1.2 研究现状由于传统资料传输行业传输效率慢、有固定

11、的期限。一方面表现在用户下载资料时,有时会发现超过了有效期,资料无法下载的现象;其次高校里每个老师发送资料的方式都不一样,易于混淆,需要一个统一的文件传输系统。学生资料网盘系统从文件处理的实际需求出发,参照FTP存储以及百度网盘的设计理念。在它们基础上完善系统。有用户身份确认、文件处理、内部班级讨论聊天等模块。清晰的业务流程,操作简单,保证学生资料网盘系统有序而高效的运作;简单的维护性使管理员维护容易,不太需要太多的人力物力资源。1.3 论文研究的主要内容本课题的研究目标是以学生资料网盘系统用户群体为核心的发展理念。通过对各大网盘企业的需求进行了解,对市面上的资料管理系统进行了功能上的分析,大

12、致了解系统开发所需要用到的技术,以及结合一些当下流行的开发模式进行初步的模式选择,从而实现学生资料网盘系统进行大概的系统模块上的分析和模块上的设计,划分我们系统所需要的功能模块,从而完成系统的总体设计和各模块的详细设计。本论文研究的主要内容:(1)分析学生资料网盘系统的现状以及研究的意义,确定了研究的目的。(2)研究golang、beego开发框架、MVC模式开发、MySQL数据库等相关技术。(3)详细分析了学生资料网盘系统的功能,并进行了具体的需求分析。(4)研究了学生资料网盘系统的总体设计方案、相关架构和基于视图层、模型层、控制层三层结构的设计方法。(5)对完成的学生资料网盘系统进行测试,

13、提高性能。在测试中发现其中的问题,不断的解决问题,完善系统。第二章 相关技术论述2.1 开发环境介绍本学生资料网盘系统的开发环境包括以下的内容:2.1.1 GO语言环境搭建下载Go语言安装包。环境变量都配置完成之后,打开命令行,通过go env命令来查看go环境是否配置正确。2.1.2 GO语言简介 Go(业内人也管它叫Golang)是谷歌三位大佬开发出来的一种编程语言。它是一种集高并发、天然自动垃圾回收机制、强静态类型以及编译型语言。因为三位大佬的设计思路是根据C语言设计出来的,所以语法跟C语言很类似,它们都拥有指针的概念,只不过Go语言的指针比C语言的简单太多了。所以我们又可以将Golan

14、g看成是一种21世纪的C语言。上面我提到Go语言的指针比C语言的简单,是因为它的设计思路是以简洁的代码做更多的事情。代码简洁,不像Java那样笨重冗余;规范明确,不同开发者编写的代码都是一种风格,使得代码清晰,表达能力强,通俗易懂。每个开发者都能快速读懂代码,不必浪费过多的时间在阅读理解代码上,提高开发效率;我们说Go语言是根据C语言设计出来的,同样Go语言也有高并发这一特性。可以更加有效的利用CPU和联网计算机,做到以有限的资源做更多的事情。因为其拥有丰富的结构类型,使系统结构更加灵活且模块化。Go语言是一种编译型语言,IDE可以进行预编译,当然使用命令也可以快速编译成机器代码,并且还具有自

15、动垃圾机制,再也不用担心垃圾占用内存,不需要开发者自己编写程序对垃圾进行回收。世界上已经有好多的编程语言,为什么还要来一个Go语言呢?第一、高并发;使用Python和Java编写的程序中,有且只有一个主线程,程序只有一条线在执行的。为了提高CPU的多核利用率,这些语言的开发团队开发出来很多框架,典型的框架就是Java的Netty。这确实有效,但它们底层复杂,需要开发者消耗大量的时间和精力去摸索这些框架的底层原理,才能掌握并使用在生产环境中。这就相当于让开发者多学习一种开发框架,虽然是可以取得技术上的突破,但并非每个开发者都能掌握。然而Go语言对开发者良好,Go语言设计者主要以简洁为主,考虑到其

16、他语言的并发问题,从底部开始本地支持并发,只需要在方法前面加上go就能实现并发,而不用依赖第三方库以及开发人员特定的编程技能和开发经验。基于协程(类似于线程,但非线程,可以理解为是一直虚拟线程)配合管道就能实现高并发的需求项目。 目前很多大公司使用Go语言升级改造旧系统。正是因为Go语言的高并发、自动垃圾回收机制,能在更少的硬件资源使用下获取更高的并发以及输入输出吞吐率。之所以说高并发,是因为某些流行的编程语言(如java)编写的程序一般只能使用30-50线程,而Go语言一个程序能轻松开启成千上万个协程。第二、性能强悍;现在高级编程语言(如java、python)是解释型语言,它们在运行时需要

17、先将人类可读的代码编译成能在特定机器上运行的目标代码, 在库里找到所需的函数库与目标代码连接合并,汇编成运行在处理器上的二进制可执行文件。而Golang是编译型语言,不用特定的程序翻译成机器语言可以直接将代码编译成可执行二进制文件,编译型语言与解释型语言相比,不用使用特定环境翻译成中间代码,缺省步骤执行效率更高,消耗内存更少,优化性能。第三、Go语言代码风格统一,通俗易懂,简单易学,入门容易。代码清晰,表达能力强,通俗易懂。每个开发者都能快速读懂代码,不必浪费过多的时间在阅读理解代码上,提高开发效率。可谓是开发效率与执行效率的完美结合。Go语言是由谷歌开发的,出身名门贵族,注定成就一番大事!第

18、一、优秀的开源项目;著名的应用容器引擎docker、用于调度和管理docker的开源容器管理系统kubernetes、一款分布式的,可靠的K-V存储系统etcd、强大的Go Web开发框架以及本身Go语言都是用golang实现的。第二、微服务;微服务的发展让我们把一些模块独立成服务,目前很多中间件、网络服务、高并发的项目都使用Go语言进行研发,优势巨大。第三、区块链;目前圈内著名的以太坊公有链就是完全用Go语言写的、而起到另一个非常大作业的是联盟链Hyperledger Fabric也是使用Go语言编写的。可以说,要想从事区块链开发,基本上都要求会Go语言的。第四、各大公司支持;Google、

19、百度、腾讯等都使用Go语言进行开发。2.1.3 Beego框架简介Beego是一个Go语言的Web开发框架之一,功能强大,上手简单。可以快速开发一个Web应用以及编写一些API接口。该设计规则遵循RESTFul规则,使得代码质量更好,可阅读性更强。里面包含了八大模块。其中orm模块里面封装了添加,删除,检查和修改数据库,主要负责模型层;上下文模块主要用于http请求;封装请求和响应,不需要开发者自己编写函数调用;缓存模块在Beego里面是独立存在的,该模块的设计模式是经典的工厂模式; config模块主要存放配置参数。提供各种方式调用接口,开发者轻松获取配置信息。httplib模块是处理请求方

20、法的类型;session模块存储在服务端,浏览器访问请求时,服务端会创建一块内存。这块内存主要用于保存用户信息以验证用户身份并追踪用户。golang目前支持的后端引擎只有cookie,我相信后面会完善。用户也可以实现自己的引擎, 实现必要的接口即可。Toolbox模块可以实时监控,发现问题及时返回;提供性能调试功能,给我们一个调优以及修复bug的最佳方案;还可以统计访问数量。总体来说,Beego基本上能实现任一需求,而且是功能完善且入门容易的开发框架,对开发者友好的一体式框架。具体Beego执行逻辑图如图2-1所示。图2-12.1.4 MVC模式简介MVC模式(三层架构模型)就是将业务分为三层

21、,做到了前后端分离,降低耦合,可以让开发者专注各模块的开发;View(视图层)是主要存放一些静态页面,用户看到的页面就是写在这次,至于css,js等静态资源可以存放在static文件夹;Model(视图)是对数据库的读写操作;Model(数据)是对数据库的读写操作,可以在这层编写增加、修改、删除、更新数据库。不过站在开发者角度,这层最好只写与数据库相关的,其他逻辑写在逻辑层;Controller(控制)是主要编写一些逻辑分析,并把信息返回给用户。一个功能主要功能有服务端获取请求,逻辑层处理请求,访问数据库。MVC模式使前后端分离,增强可扩展行、可维护性。Beego框架就是完全遵循MVC模式下进

22、行开发。具体MVC模式架构图如图2-2所示。图2-22.1.5 MySQL数据库简介Mysql是Oracle公司旗下的一个产品,基于SQL的B/S(浏览器/服务器)网络架构模式下的关系型数据库管理系统。Mysql主要以表格的方式存储数据,使用简单、管理方便、灵活性强、跨平台性等优点。特别适用于Web端的数据库后端的设计与开发工作。此外,Mysql的源码是开发的,用户可以利用多种语言访问Mysql,进行数据的处理。第3章 可行性分析与需求分析3.1可行性分析通过新型冠状病毒对学业所造成的影响的分析,我进一步明确学生资料网盘系统的业务需求。本系统应建立一个采用B/S(Browser/Server)

23、模型,实现采用Beego框架搭建Web后端的网页设计技术结合Mysql数据库使用。采用Beego作整体开发框架,使用Golang语言编写后端逻辑,HTML+JAVASCRIPT作网页设计,满足客户端在学生资料网盘系统的逻辑业务上的需求。对此,针对逻辑方案的可行性进行了分析。3.1.1 技术可行性分析该系统使用市面上普通计算机即可完成开发,不作对资源的要求。使用到的软件有JetBrains GoLand 2019.3 x64(后端Go语言IDE)、Visual Studio Code(前端IDE)、Navicat Premium 12(Mysql可视化工具)、postman(接口测试工具)等,数

24、据库采用Mysql 8.0.19。采用Golang技术,该技术并发性高、自动垃圾回收机制、功能强大,并结合Javascript,SQL等脚本语言,满足本系统的开发和设计。因此,我觉得在技术层面上,该系统是可行的。3.1.2 经济可行性分析本系统是一个小型的Web应用系统,实现难度中等,文件传输效率高,有很强的实用性。需要一定的开发周期,维护不需要投入大量的人力资源;而对硬件方面没有特别的要求,自己本地作服务端,只需要向聚合数据购买短信验证服务以及身份验证OCR服务,故而需要一定的经济投入。综上所述,此系统在经济上是可行的。3.1.3 实施可行性分析学生资料网盘系统主要服务于教育行业。用户首先进

25、行手机号码以及身份证验证,验证通过后可以简单的文件上传,普通下载,断点下载,并管理服务器端存储的文件。具有成本低、实用性强、维护简单的特点,在管理员了解网站结构目录的基础上,是可以轻松管理项目的。因此,此系统在实施上是可行的。综上所述,本系统的开发是可行的。3.2需求分析学生资料网盘系统主要服务于教育行业。主要针对的用户群体有学生和教师。这是一个文件传输与即时通讯系统,解决文件存储与通讯时需要切换进程的问题,用户可以轻松的将自己的文件上传并保存并使用本系统即时通讯。主要功能有:用户注册需要提供手机号码、身份证以完成简单的验证;用户可以上传、下载、分享文件;用户可以加入群聊,在群聊里交流学习心得

26、以及发送文件;3.2.1 总体需求分析学生资料网盘系统是一个小型的系统,主要服务于学生和教师,而学生和教师这两个角色在开发角度而言仅仅是一个用户群体罢了,并没有过多的角色。用户首先按要求进行身份验证,系统将读取身份证信息写入数据库。注册完毕用户可以将上传文件到服务端。服务端接收请求,将文件元信息写入数据库,并将文件解析成二进制得形式写入服务器特定文件夹。最后返回信息给客户端,并提供已上传文件的下载、断点下载、重命名、删除等功能操作。根据需求分析设计系统业务流程图,首先用户需要登录系统来进入系统主页面;若是新用户则需要提供身份信息完成注册。主页面系统显示文件基本信息,用户可以选择文件进行操作,具

27、体操作有:下载文件、断点下载文件、重命名文件、删除文件、搜索文件以及上传文件等操作。用户还可以加入班级群聊,进入群聊进行文件传输以及学术讨论。具体系统业务流程图如图3-1所示。图3-1根据基本流程图作出系统的顶层数据流图,作为开发者角度而言,系统设计是以单体用户出发,所有单体用户组成一个群体。用户请求访问数据库,服务端返回信息到客户端。系统顶层数据流图如图3-2所示。图3-2根据顶层数据流图分析,我们可以做出进一步的分析出学生资料网盘系统中具体到各模块的数据流向图,可以画出整体数据流图,如图3-3所示。图3-33.2.2 系统其他需求分析通过分析总体设计,基本明确以下功能模块:用户模块、文件模

28、块、通讯模块、登录注册模块。系统可以通过显示文件信息,下载文件等操作把系统内信息反馈给用户,作出功能模块图如图3-4所示。图3-4进一步画出该系统的系统流程图如图3-5所示。图3-5第4章 系统设计学生资料网盘系统主要为用户提供一块网络上的存储服务,用户通过访问请求服务端变更已上传文件信息。4.1 系统总体功能设计本系统实现了三个功能模块,分别登录注册模块、文件传输模块以及群聊模块,系统功能模块图如图4-0所示。图4-04.2 功能设计此个学生资料网盘系统为用户提供的文件操作包括: 上传、下载/断点下载、删除、搜索以及重命名。有了这些功能,用户就可以自己在服务器端操作属于自己那块的文件资源。此

29、外用户还可以加入班级,创建班级(仅教师有权限)来进行交流讨论。4.2.1 登录注册模块登录注册模块用例图如图4-1所示。图4-1(1)注册功能功能设计用户初次使用本系统需要先进行账号注册,注册需要用户输入手机号码、上传身份证正反面,后端通过调用聚合数据的相关API接口来检验信息。校验通过即注册成功,可使用用户名和密码来进行登录。(2)登录功能功能设计用户注册成功后,可使用用户名和密码进行登录,登录成功后即可进入系统主页面。(3)忘记密码功能设计用户若忘记密码,可以点击忘记密码来找回密码。而用户只需要输入手机号码以及身份证号码,后端接收到前端传递来的手机号码和身份证号码,通过调用聚合数据提供的接

30、口判断手机号码与身份证号码是否与用户信息表中的一致,若一致则会以短信的方式返回用户的密码。4.2.2 文件传输模块文件传输模块用例图如图4-2所示。图4-2文件传输模块包含七大需求。第一是文件上传、第二是文件下载、第三是文件断点下载、第四是文件重命名、第五是文件删除、第六是文件搜索、第七是文件分享。(1)文件上传功能设计用户点击文件上传按钮,进入上传页面即可对文件上传服务。若上传成功则主页面会显示该条文件信息,若上传失败则返回相关失败信息。(2)文件下载功能设计该方式适用于小文件下载。(3)文件断点下载功能设计该方式适用于大文件下载。(4)文件重命名功能设计用户点击重命名按钮,界面以弹窗的方式

31、打开编辑器。若编辑成功则主页面显示最新的文件信息,若上传失败则返回相应的失败信息。(5)文件删除功能设计用户点击删除按钮,即可删除相关的文件。对于后端在说,这里的删除并非真正的删除,只是改变文件的状态而已。(6)文件搜索功能设计用户输入文件的唯一标识(filehash)来搜索文件,若文件存在即可看见文件相关信息,并可以对文件进行相关操作;若文件不存在则显示为空。4.2.3 群聊模块群聊模块用例图如图4-3所示。图4-3(1)创建群聊功能设计该功能仅有教师才有权限,教师可以创建属于自己的班级群聊,来组织学生学术交流以及文件传输。(2)加入群聊功能设计用户按照班级唯一标识来加入班级群聊。4.3 界

32、面设计用户首次进入学生资料网盘系统会先进入注册页面如图4-4所示,用户按要求填写正确信息即可完成注册。然后用户输入用户名和密码登录如图4-5所示。接着就进入了如图4-6所示的学生资料网盘系统主界面,在这里用户可以对自己的文件进行管理。用户可以进入班级来讨论学习心得如图4-7所示在如图4-6所示的学生资料网盘系统操作的主界面中,图中列表信息显示的是用户自己已经上传的文件信息。用户可以上传文件、下载文件、断点下载文件、重命名文件、删除文件、搜索文件、分享文件等操作。图4-4图4-5图4-6图4-7第5章 数据库设计5.1 概念结构设计文件与用户存在多对多关系,关系E-R图如图5-1所示。图5-1学

33、生与教师存在多对多关系,关系E-R图如图5-2所示。图5-2用户与班级存在一对多关系,关系E-R图如图5-3所示。图5-3系统整体E-R图如图5-4所示。图5-45.2 物理结构设计5.2.1用户信息表tbl_user注释:引擎:InnoDB编码:utf8_general_ci类型:BASE TABLE序号字段名称字段描述字段类型长度允许空缺省值6create_at创建日期datetimedatetimeYESCURRENT_TIMESTAMP9ext1备用字段1int11YES010ext2备用字段2texttextYESnull5file_addr文件存储位置varchar1024NO3f

34、ile_name文件名varchar256NO2file_sha1文件hashchar40NO4file_size文件大小bigint20YES01idint11NOnull8status状态(可用/禁用/已删除等状态)int11NO07update_at更新日期datetimedatetimeYESCURRENT_TIMESTAMP5.2.2文件基本信息表tbl_file注释:引擎:InnoDB编码:utf8_general_ci类型:BASE TABLE序号字段名称字段描述字段类型长度允许空缺省值6create_at创建日期datetimedatetimeYESCURRENT_TIMEST

35、AMP9ext1备用字段1int11YES010ext2备用字段2texttextYESnull5file_addr文件存储位置varchar1024NO3file_name文件名varchar256NO2file_sha1文件hashchar40NO4file_size文件大小bigint20YES01idint11NOnull8status状态(可用/禁用/已删除等状态)int11NO07update_at更新日期datetimedatetimeYESCURRENT_TIMESTAMP5.2.3用户文件表tbl_user_file注释:引擎:InnoDB编码:utf8mb4_0900_ai

36、_ci类型:BASE TABLE序号字段名称字段描述字段类型长度允许空缺省值6file_name文件名varchar256NO4file_sha1文件hashvarchar64NO5file_size文件大小bigint20YES01idint11NOnull8last_update最后修改时间datetimedatetimeYESCURRENT_TIMESTAMP9status文件状态(0正常1已删除2禁用)int11NO07upload_at上传时间datetimedatetimeYESCURRENT_TIMESTAMP3user_code用户IDvarchar32NO2user_name

37、varchar64NOnull5.2.4用户token表tbl_user_token注释:引擎:InnoDB编码:utf8mb4_0900_ai_ci类型:BASE TABLE序号字段名称字段描述字段类型长度允许空缺省值1idint11NOnull2user_name用户名varchar64NO3user_token用户登录tokenchar40NO5.2.5班级信息表tbl_class注释:引擎:InnoDB编码:utf8mb4_0900_ai_ci类型:BASE TABLE序号字段名称字段描述字段类型长度允许空缺省值4class_aim班级宗旨varchar32NO2class_code班

38、级IDvarchar32NO3class_name班级名称varchar32NO1idint11NOnull6status文件状态(0正常1已删除2禁用)int11NO05upload_at创建时间datetimedatetimeYESCURRENT_TIMESTAMP5.2.6用户班级表tbl_user_class注释:引擎:InnoDB编码:utf8mb4_0900_ai_ci类型:BASE TABLE序号字段名称字段描述字段类型长度允许空缺省值3class_code班级IDvarchar32NO1idint11NOnull5status用户班级状态(0正常1已删除2禁用)int11NO0

39、4upload_at加入时间datetimedatetimeYESCURRENT_TIMESTAMP2user_code用户IDvarchar32NO5.2.7班级聊天信息表tbl_class_msg注释:引擎:InnoDB编码:utf8mb4_0900_ai_ci类型:BASE TABLE序号字段名称字段描述字段类型长度允许空缺省值2class_code班级IDvarchar32NO5content聊天内容varchar1000NO6file_address文件地址varchar32NO1idint11NOnull8status文件状态(0正常1已删除2禁用)int11NO07upload_

40、at发布时间datetimedatetimeYESCURRENT_TIMESTAMP3user_code用户IDvarchar32NO4user_name用户名称varchar32NO第6章 系统详细设计与实现6.1 系统核心功能详细设计6.1.1 用户注册详细设计功能编号01功能名称注册功 能描 述用户初次使用本系统会先进入注册界面,要求用户输入手机号码,然后点击获取验证码按钮,验证码将以短信的形式返回给用户;用户输入验证码,密码以及上传身份证正反面图片文件。输入项手机号码、验证码、密码、身份证正面、身份证反面处理描述用户输入手机号码,获取验证码来验证手机号码;身份证正反面来获取用户基本信息

41、;若注册成功,则后端将信息添加到用户信息表中。若注册失败,则返回失败信息。输出项200界面要求三个输入框:分别输入手机号码、验证码、密码两个普通按钮:获取验证码,注册两个文件上传按钮6.1.2 用户登录详细设计功能编号02功能名称登录功 能描 述用户使用本系统会需要先登录账号,需要用户输入用户名以及密码,点击登录按钮后进入系统主页面。输入项用户名、密码处理描述用户输入用户名和密码后,点击登录按钮;服务端获取请求参数判断用户名是否已注册,若未注册则返回用户不存在的错误信息,若用户已注册接着判断密码是否与注册的一致,若密码不一致,返回错误信息。最后正确无误,返回状态码为200的信息,并且跳转到主界

42、面。输出项200界面要求两个输入框:分别输入用户名和密码一个复选框:忘记密码两个按钮:登录、注册6.1.3 忘记密码详细设计功能编号03功能名称忘记密码功 能描 述用户若忘记密码,可以点击忘记密码复选框来找回密码,点击后弹出模态框,要求输入注册时的用户名、手机号码以及身份证号码。输入项用户名、手机号码、身份证号码处理描述用户输入用户名、身份证号码以及手机号码,后端首先用户是否存在,不存在则返回用户不存在的错误信息,若存在则进一步验证手机号码以及身份证号码。一切无误,调用聚合数据短信验证API接口来返回用户密码给用户。输出项200界面要求三个输入框:分别输入手机号码、手机号码、身份证一个普通按钮

43、:找回密码6.1.4 文件上传详细设计功能编号04功能名称文件上传功 能描 述用户登录成功进入主界面,点击文件上传按钮跳转到上传界面,选择文件进行上传输入项文件二进制数据处理描述用户选择文件上传后,前端会把文件解析成二进制数据传递给后端处理,后端把文件写入服务端,并把文件信息写入文件表以及用户文件表输出项200,文件唯一标识界面要求三个按钮:分别是上传文件、选择文件、撤销上传文件6.1.5 文件下载详细设计功能编号05功能名称文件下载功 能描 述用户可以选择任一文件进行下载输入项文件唯一标识处理描述用户点击文件下载按钮,前端会把文件唯一标识传递给服务端,服务端接收到文件唯一标识,从用户文件表查

44、询是否存在,存在则设置请求头模拟浏览器请求下载。输出项200界面要求一个按钮:下载6.1.6 文件断点下载详细设计功能编号06功能名称文件断点下载功 能描 述用户可以选择任一文件进行断点下载输入项文件唯一标识处理描述用户点击文件下载按钮,前端会把文件唯一标识传递给服务端,服务端接收到文件唯一标识,从用户文件表查询是否存在,存在则设置请求头模拟浏览器请求,使用http请求下载输出项200界面要求一个按钮:断点下载6.1.7 文件重命名详细设计功能编号07功能名称文件重命名功 能描 述用户可以选择任一文件点击重命名按钮。然后页面弹出弹窗,用户输入新文件名,点击确定即可完成。输入项文件唯一标识、新文

45、件名处理描述服务端接收文件唯一标识和新文件名,利用文件唯一标识去查询用户文件表是否存在数据,存在则更新数据。输出项文件信息界面要求一个输入框:新文件名一个按钮:确定6.1.8 文件删除详细设计功能编号08功能名称文件删除功 能描 述用户可以选择任一文件进行删除输入项文件唯一标识处理描述用户点击文件删除按钮,前端会把文件唯一标识传递给服务端,服务端接收到文件唯一标识,从用户文件表查询是否存在,存在则删除文件。这里的删除文件并非真正的从数据库中删除,而是改变数据库中这条数据的字段。输出项200界面要求一个按钮:删除6.1.9 文件分享详细设计功能编号09功能名称文件分享功 能描 述用户可以选择任一

46、文件进行文件分享输入项文件唯一标识处理描述用户点击文件分享按钮,前端会把文件唯一标识传递给服务端,服务端接收到文件唯一标识,从用户文件表查询是否存在,存在则返回下载地址给客服端。输出项200,文件下载地址界面要求一个按钮:分享6.1.10 更改用户信息详细设计功能编号10功能名称更改用户信息功 能描 述用户点击更改个人信息按钮,弹出弹窗输入手机号码,点击获取验证码,最后输入验证码即更改成功。输入项新手机号码处理描述用户输入手机号码,服务端获取号码,聚合数据短信验证API接口获取验证码来验证手机号码。成功则返回状态码200。输出项200界面要求两个输入框:分别是手机号码、验证码两个按钮:分别是获

47、取验证码、确定6.1.11 创建班级详细设计功能编号11功能名称创建班级功 能描 述该功能只有教师才有权限创建。教师点击创建班级按钮,以弹窗的方式打开创建班级编辑框。输入班级名称,班级宗旨来完成创建。输入项班级名称、班级宗旨处理描述判断用户是否是教师,然后接收参数把数据插入班级表来完成创建。成功返回状态码200,失败则返回状态码500。输出项200界面要求两个输入框:分别是班级名称、班级宗旨一个按钮:确定6.1.12 加入班级详细设计功能编号12功能名称加入班级功 能描 述用户输入班级唯一标识来搜索想要创建的班级,若存在点击加入则加入成功。若不存在则返回错误信息输入项班级唯一标识处理描述服务端

48、获取班级唯一标识,查询班级表是否存在。存在则进行进一步操作,查询用户班级表中用户是否已加入,若已加入则返回错误信息,否则把信息插入用户班级表,返回用户班级表信息。输出项200,用户班级信息界面要求一个输入框:班级唯一标识一个按钮:搜索6.1.13 聊天详细设计功能编号13功能名称聊天功 能描 述用户可以在已加入的班级中聊天,发送文件链接。输入项班级唯一标识、用户唯一标识、聊天内容、时间处理描述把聊天信息存入缓存,再插入班级聊天表。输出项200界面要求一个文本框:聊天内容一个按钮: 发送6.2 系统编码实现6.2.1 系统各模块的实现6.2.1.1 登录注册模块的实现注册界面如图6-1所示: 图

49、6-1核心功能实现:1、 使用聚合数据API接口来完成手机号码验证以及身份证验证。身份证验证接口模拟浏览器post请求调头聚合数据API接口,代码如下:前端获取身份证正反面文件,对文件的二进制数据进行处理,代码如下:手机获取验证码,验证码使用随机数的方式生成,保存到内存等待数据校验,代码如下:接入聚合数据API接口代码如下:最后注册逻辑,把数据插入数据库代码如下:登录界面如图6-2所示图6-2服务端获取前端传递的参数,查询数据库是否存在数据,并生成token,插入数据库tbl_user_token。代码如下:6.2.1.2 文件模块的实现文件列表界面如图6-3所示。图6-3首先获取用户sess

50、ion来判断具体用户,然后数据库批量查询数据。代码如下:文件上传界面如图6-4所示。图6-4服务端接收文件流,把文件写入服务端具体文件夹,内存存储文件句柄信息,并把文件信息写入数据库。代码如下:文件下载以及文件断点下载。断点下载如图6-5所示。图6-5文件下载逻辑处理是模拟浏览器请求下载,文件断点下载是使用http请求下载。代码如下:获取文件信息生成文件下载地址,代码如下:文件重命名文件删除。这里的文件删除并非从数据库中移除数据,而是改变文件的状态,代码如下:文件查询6.2.1.3 群聊模块的实现创建群聊界面如图6-6所示图6-6逻辑代码如下,服务端判断用户是否符合权限,而符合权限的要求是用户

51、身份是教师;然后判断班级名字、班级宗旨是否为空;最后生成班级ID,将数据插入数据库。 加入群聊如图6-7所示图6-7 逻辑代码如下,数据库查询获取用户信息以及班级信息;将数据整理插入数据库聊天逻辑代码如下。首先判断班级是否存在,然后构建聊天信息;获取redis连接,把聊天信息写入数据库和以列表的方式插入redis缓存获取聊天记录逻辑代码如下;首先获取redis连接,查询缓存中是否有数据,如果有则返回缓存的数据给前台,没有则查询数据库,将数据返回给前端并插入缓存。6.2.1.4 用户模块的实现获取用户信息修改用户信息。这里只是修改手机号码。因为用户基本信息是根据身份证获取的,所有不必作修改。第七章 系统测试7.1 系统测试概述对系统做整体测试,保证所有流程跑通的同时提高性能,还有就是查找bug导致程序无法正常运行。从而优化程序,令系统更加稳定。因此,我对后端接口做了压力测试,对web页面做了功能测试。7.2 系统测试环境与测试方法类别名称系统环境Windows10家庭中文版测试工具P