# network_HomeWork **Repository Path**: CodeCompilerConduct/network_-home-work ## Basic Information - **Project Name**: network_HomeWork - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-04-27 - **Last Updated**: 2021-06-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # help-teacher 开发文档,用于定义使用说明,开发内容,制定开发规范等。于 2021 年 5 月 26 日编写。 ## 整体概述 本项目旨在用最快的方式,帮助老师完成所需的工作量,同时为广大师生提供更快捷与方便的工具使用。 ### 选题背景 在校园中,不论什么课程,作业都是必不可少的,因为他是一种有效的监督学生学习的方式,不仅起到督促的作用,更多的是温习或预习需要我们掌握的知识。老师不仅可以及时的通过作业了解学生的学习情况,也可以通过作业提高学生对知识点的了解程度。然而,这件事情却带来了以下的问题 1. 作业管理:每次的作业交付都需要进行统计,当人数过多时,就是十分繁琐的工作 2. 作业交付:现在作业的交付多种多样,但是都需要一位一位同学的进行作业交付,即使使用了互联网,作业速度上传以及安全性也是让人堪忧 3. 学生以及班级的复杂性:由于一个老师教的班级过多,每次管理都是一个让人头疼的过程。 除了作业以外,我们也是想到啦很多当前老师急需要解决的一些问题,例如: 1. 点名问题:每次都需要找名单等复杂的操作流程。 2. 资料传输问题:在没有机房的场合,都需要传到Q群或者使用U盘进行拷贝,十分麻烦 ### 功能介绍 我们将从 **作业管理** 和 **其他工具** 两方面进行简述 #### 作业管理 教师端 —— 本地 - 班级管理 老师可以有效的建立、管理自己的班级,简单的只需要导入 excel 表格即可,同时可以管理班级上的所有学生,一次导入后无需重复导入 - 学生管理 老师可以管理每个班级的每个学生的信息,可以自由增加、删除学生的信息。 - 作业管理 可以对作业创建,管理好已经创建的作业,创建后可以设置截止时间等参数,同时可以选择是否开启作业。可以对现在或曾经创建的作业进行查看交付情况,进行数据统计,考虑加入数据分析。 - 作业收取 老师可以开启一次已经创建的作业任务,开启后,学生只要连接校园网,访问指定地址即可完成作业交付,同时可以实时看到每个学生的传输进度,因为为一个局域网,所以传输速度极快且安全系数高。 #### 作业管理 学生端 —— 本地 - 作业上传 学生直接通过电脑或者手机访问老师指定的 ip 地址即可在网页上进行文件上传。 #### 其他工具 - 随机点名回答问题 提供随机点名功能,对当前已有的班级进行随机点名回答课题问题。 ### 技术选型 - 依赖管理:npm / yarn - 构建工具:webpack 4 - 核心框架:electron - 打包工具:electron-packager - 前端界面:vue - 模板引擎:pug - CSS框架:element-ui - 图标仓库:awesome - 加密算法:base64 多重加密 - 核心编译器:babel - CSS预处理:less/sass/stylus 均支持 - HTTP客户端:axios - Web应用程序开发框架:experss - 版本控制工具:git ### 软件特点 1. 跨平台,所有的操作系统和均可运行。 2. 技术先进,使用 electron + vue + express 进行构建,为当前前端的优秀技术与框架。 3. 无需部署任何数据库也可以数据持久化。 4. 随时携带,几百M的大小可以让他随时携带,无需安装即可使用。 5. 安全快捷,局域网传输速度快捷,并且相对于外网传输安全许多。 6. 数据简便,可以支持excel快速导入,极其方便。 7. 实时监控,能够实时监控作业收取情况 ### 系统运行要求 本软件为跨平台式,支持linux、mac、以及window32位和64位系统等拥有图形界面的系统。 ## 软件开发规范 此处定义了整个过程的开发规范,开发者共同遵守 ### 人员分工 - RuiFG:全名黄国立,2018级软件工程1班学生。 - 开发环境:win 10/Kubuntu + vscode + pycharm - 主要负责环境搭建,打包部署,前端数据库服务,前后端连接业务,流程构建,自动化测试构建。 - EchoCoK:全名阿冰,2018级软件工程2班学生。 - 开发环境:win 10/manjaro + webstorm + idea - 主要负责所有前端页面,负责远程服务java端,bug修复,文档书写,规范制作等 ### 本地和远程服务 - 本地: src 文件夹 - 远程: RemoteService ### 数据库设计 使用非关系型数据库 nedb,此数据库小巧可以随身携带 #### 表设计如下 - 班级表Class ```json { "className":"2018级软件工程1班", "students":[ { "id":"1708082803130", "name":"黄国立", "sex":"男" }, { "id":"1708082803130", "name":"黄国立", "sex":"男" } ], } ``` - 作业表Job ```json { "jobName": "第一次作业", "jobContent": "具体详情是做什么的", "jobTypes": [ "excel", "ppt" ] } ``` - 班级作业表ClassToJob ```json { "className":"2018软件工程", "jobName":"作业名字", "startTime":"时间戳", "stopTime":30分钟(计算时间戳), "studentNum":68(总人数), "timestamp":时间毫秒, "status": 0(异常暂停) 1(收取中) 2(收取完成) "unfinishedStudents": [ { "name":"黄国立", "id":"1708082803130", "sex":"男" } { "name":"黄国立", "id":"1708082803130", "sex":"男" } ... ] } classToJob: [{ className: "2018软件工程", jobName: "作业名字", startTime: "时间戳", stopTime: 30, studentNum: 68, status: 0, unfinishedStudents:[{ name: "黄国立", id: "1708082803130", sex: "男" },{ name: "黄国立", id: "1708082803130", sex: "男" }] }] ``` ### 前端代码规范 参见 [Vue 风格指南](https://cn.vuejs.org/v2/style-guide/),使用 优先级 B:强烈推荐 > 这些规则能够在绝大多数工程中改善可读性和开发体验。即使你违反了,代码还是能照常运行,但例外应该尽可能少且有合理的理由。 ### 后端代码规范 使用 vertx 异步编程,具体参见 RemoteService 模块下的 README ### 需求分析 #### 模块一:作业管理 - 功能1:班级学生管理 此处可以管理当前教师的所有班级信息,教师可以对班级进行创建,填写的数据如下如下: ``` 班级名称:className ``` 创建完成后,显示与页面之中,可以分别对每个班级进行 **编辑、删除**操作。显示每个班级的数据均包括创建时填写数据。 **可以查找,根据班级名称进行筛选。** 编辑分为两种 第一种,进入当前班级的学生信息编辑,此时,可以对**创建时的所有数据**进行修改。同时可以对学生信息进行**导入**。 第二种,进入当前班级的作业统计,显示当前班级已经交付过的作业信息,可删除,但是不可编辑和增加。点击每个作业信息可以进入到作业详情,查看已交人员和未交人员。 删除时,需要提醒此操作不可逆,等待确认才能删除。 点击进入某个班级,然后页面跳转显示当前点击班级的所有学生,可以增加单个学生,也对单个学生进行编辑删除操作,需要填写的数据如下: ``` 学号:id 学生姓名:name 性别:sex ``` 显示当前班级所有学生的时候,**可以查找,根据学号、姓名、性别进行筛选。** - 功能2:作业管理 页面显示所有已有的作业数据,可以创建新的作业,需要填写如下参数 ``` 作业名称:jobName 作业详情:jobContent 收取作业类型:jobTypes ``` 可对已经有的作业进行编辑、删除。编辑可以编辑如上数据,删除需要给出提示。**可以查找,根据名称或收取作业类型进行筛选。** 点击当前作业跳转至与当前作业关联的所有班级页面,仅可查看和删除,点击班级名称,跳转到此次作业此班级的作业详情页面,显示数据如下: ``` 已交作业学生:多个学生信息 未交作业学生:多个学生信息 ``` **可以查找,根据学号、姓名、性别、是否已交进行筛选。** - 功能3:作业收取 核心功能,可以在此页面直接创建作业,可以对已有的作业进行开启作业收发,需要填写如下参数: ``` 作业名称:选择已经创建的作业 班级名称:选择已经创建的班级 开始时间:选择开始的时间 结束时间:选择多少分钟后结束,默认30分钟 ``` 填写完毕后,点击开启服务按钮,即可开启作业收发,同时此页面自动跳转到监控页面。 监控页面主要用来监控学生实时上传进度,显示每个学生的上传进度信息,显示主要数据如下: ``` 哪些学生已经上传 哪些学生没有上传 已交学生数 未交学生数(正在上传视为未交) ``` 同时可以手动停止此次作业收取 之后只要进入作业收发页面,如果还在此次作业收发的时间返回内,即服务还在开启状态,都会自动跳转至监控页面,监控实时作业实时进度。 流程图如下: ![img](https://resources.echocow.cn/image/gak/one/job/1.1.png) #### 模块二:随机点名 直接选择已经创建的班级进行点名即可, 具体使用如下:当选择好班级后底部出现绿色start(开始)按钮,点击此按钮后,页面出现随机的名字且快速的闪过,点击红色的stop(停止)按钮闪烁停止此时页面会正常显示出一名学生的名字。 #### 模块三:随机回答问题(待定) 此功能还在研发中...... #### 模块四: 学生作业提交(WEB端) - 接收作业: WEB端的用途是教师向学生提供一个接收作业的平台,当教师端创建作业收取任务,设置接收作业的时间,开启作业接收服务后,WEB端接收服务开始接受访问,并能接收学生上传的作业文件,当学生填写学号并提交作业文件,点击提交按钮后上传的文件会根据学号、学生姓名以及学生所在的班级和作业名进行归档并进行重命名,省去人工收取作业每一次都需要为每个学生的文件名进行规范化的命名。 - 方便打包: 接收作业的时间截止后,WEB端会自动停止服务,作业停止接收,学生将无法进行作业文件的提交,此时教师就可以方便的将已经分类好的文件进行打包存放。 - 数据图表: 在WEB端显示有已交和未交作业的图表,课方便清晰的看出已交和未交作业的比例。 #### 构建脚本 ``` bash # 安装依赖 npm install # 开发环境 npm run dev # 环境打包 npm run build ``` ---