教务管理系统工作总结

  • 1.数据库设计阶段
  • 2.概要设计阶段
  • 3.编码阶段
  • 1.管理员:课程管理模块
  • 2.教师:选择题题库管理模块
  • 学生
  • 1.完善技能模块
  • 2.查看班级模块
  • 3.企业报名模块
  • 4.报名结果
  • 5.学生注册
  • 6.个人生涯

1.数据库设计阶段

1.参与数据库字段的设计,外键的存储方式,以及表之间的引用关系
2.根据建成的数据库,编写数据库设计文档。

2.概要设计阶段

1.参与编写《教务系统-概要设计说明书》,分析教师权限功能并设计功能流程图。
用到的技术
使用visio完成功能流程图的设计

3.编码阶段

我主要负责课程管理模块,选择题题库模块,技能完善模块,企业报名和报名结果模块,学生注册功能,个人生涯,班级历史变更

1.管理员:课程管理模块



1.点击新增课程按钮,弹出课程添加模态框。填写合理的课程名称后点击确定进行添加(如果是添加过的但是被删除了,则将被删除的记录重新修改为可用状态)
2.点击修改按钮,弹出模态框。填写正确的课程名称后点击确定按钮进行修改(如果修改的名称已经存在且处于可用状态,提示修改失败。如果修改的名称已经存在但处于不可用状态,将其状态改为可用,将修改之前的设置为不可用状态)
3.点击删除(如果课程在被别处引用,提示不可删除)

2.教师:选择题题库管理模块



1.点击查看大题题库 转向大题题库管理页面
2.点击添加单选题 弹出模态框
3.可根据 课程名和题干进行模糊查询
4.点击导出选择题表头,下载excel格式的表头
5.选择所属科目后点击导入选择题,可以批量导入选择题

接口:/*** */
package com.hpe.ts.utils.other;/**   * @Description:TODO描述:   * @author: 何思勇* @date:   2018年11月7日 上午10:05:28       */public interface QuestionRedis <T>{/*** * @Description:TODO描述:   Question存入redis* @author: 何思勇* @date:   2018年11月7日 上午11:47:36    * @param question* @return*/void putQuestion(T question);/*** * @Description:TODO描述:   从redis取出单个题* @author: 何思勇* @date:   2018年11月7日 上午10:10:57    * @param question* @return*/T getQuestion(T question);
}
实现:package com.hpe.ts.utils.other;import java.util.List;
import java.util.Set;import javax.annotation.Resource;import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;import com.hpe.ts.enums.CommonStatus;
import com.hpe.ts.pojo.ChoiceQuestion;/*** * @Description:TODO描述: 选择题redis操作类* @author: 何思勇* @date: 2018年11月6日 下午7:01:53*/
@Component
public class ChoiceQuestionRedis implements QuestionRedis<ChoiceQuestion> {@Resource(name = "redisTemplate")private RedisTemplate<String, Object> redisTemplate;@Overridepublic void putQuestion(ChoiceQuestion choiceQuestion) {redisTemplate.opsForValue().set("c:" + choiceQuestion.getCourseId() + ":" + choiceQuestion.getDifficulty() + ":"+ choiceQuestion.getDisable() + ":" + choiceQuestion.getChoiceId(), choiceQuestion);}@Overridepublic ChoiceQuestion getQuestion(ChoiceQuestion choiceQuestion) {return (ChoiceQuestion) redisTemplate.opsForValue().get("c" + ":" + choiceQuestion.getCourseId() + ":" + choiceQuestion.getDifficulty() + ":"+ choiceQuestion.getDisable() + ":" + choiceQuestion.getChoiceId());}/*** * @Description:TODO描述: 通配方法获取key集合根据课程号和难度进行模糊搜索* @author: 何思勇* @date: 2018年11月7日 下午2:10:49* @param courseId* @param difficulty* @param questionId* @param disable* @return*/public Set<String> keys(Integer courseId, Integer difficulty, CommonStatus disable, Integer questionId) {String str = null;if (questionId != null) {str = "c" + ":" + "*" + questionId;} else {str = "c" + ":" + courseId + ":" + difficulty + ":" + disable + "*";}return redisTemplate.keys(str);}/*** * @Description:TODO描述: 通配方法获取value集合根据课程号和难度进行模糊搜索时题号赋值null* @author: 何思勇* @date: 2018年11月7日 上午11:28:17* @param courseId* @param difficulty* @param questionId* @return*/public List<Object> getQuestions(Integer courseId, Integer difficulty, Integer questionId) {Set<String> keys = keys(courseId, difficulty, CommonStatus.ENABLE, questionId);return redisTemplate.opsForValue().multiGet(keys);}/*** * @Description:TODO描述: 更新redis中选择题的value* @author: 何思勇* @date: 2018年11月7日 下午9:35:11* @param str* @param cq*/public void updataChoiceValue(String str, ChoiceQuestion cq) {redisTemplate.opsForValue().set(str, cq);}/*** @Description:TODO描述: 更新redis中选择题的key* @author: 何思勇* @date: 2018年11月7日 下午10:13:59* @param str* @param str1*/public void updataKey(String oldKey, String newKey) {redisTemplate.rename(oldKey, newKey);}
}

遇到的问题:
1.导入选择题时 如果导入出错 无法将错误定位到单元格。
2.上传文件的同时传递其他参数
3.MySql5.7group by 问题[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
解决:
1.使用孙士林修改后的导入工具类(思路为将异常信息获取,在工具类中接收后获取需要的信息 (第i行j列出现…),然后放到map中,输出到导入失败前端提示中)
2.创建一个空的FormData对象,然后再用append方法逐个添加键值对:
var data = new FormData();
data.append(‘uploadpic’, $(’#licensefile’)[0].files[0]);//可以是文件
data.append(‘type’,“license”);

// 导入选择题题库
function uploadCQ() {var data = new FormData();var courseId = vm.courseId;var difficulty = vm.difficulty;if (!checkFileExt(($('#uploadCQ')[0].files[0]).name)) {alert('文件格式有误,请导入.xls或.xlsx后缀文件。');return;}data.append('CQFile', $('#uploadCQ')[0].files[0]);data.append('courseId', vm.courseId);data.append('difficulty', vm.difficulty);$.ajax({type : "post",url : baseURL + "/teacher/choiceQuestion/uploadCQBatch",processData : false,contentType : false,data : data,success : function(data1) {if (data1.result > 0) {layer.msg('上传成功!');$("#jqGrid").jqGrid("setGridParam").trigger("reloadGrid");} else {alert(data1.err);}$('#uploadCQ').val('');}});
}

3.去掉ONLY_FULL_GROUP_BY,重新设置值。

set @@global.sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

学生

1.完善技能模块



1.点击完善技能 进入技能完善标签页。左侧显示教师添加的技能名称全部词条;点击技能词条可将技能加入到个人技能框中,下拉选择好难度(难度最大为教师添加技能时设置的最大级别) 点击提交按钮,将技能存储到个人技能中(可回显 也可以在个人生涯标签页中查看)

2.在技能框中点击(x)可直接移除技能,在技能等级下拉中选择级别然后点击提交按钮 可以修改技能的等级。
遇到的问题
1.词条用span标签实现,开始只能存技能名称,并不能将技能的最大等级隐藏在词条中。
解决
1.用html5中新增的data-xxx属性,将最大等级存储在词条的span标签中然后在js中用var level = $("#spanid").attr(“data-xxx”)来获取。

2.查看班级模块



点开此标签页可以查看学生自己的班级变动历史和当前所在班级

3.企业报名模块



1.点击企业报名 弹出标签页
展示学生所选方向跟企业发布的招聘信息方向一致的招聘信息(对于过期的招聘信息 只显示过期未超过两周的信息)
2.对于招聘已经开始的招聘 选择岗位后可以点击报名 进行对相关招聘的报名。招聘未开始 和 招聘结束均不能点击
遇到的问题
1.sql语句出现问题
问题sql:

  select r.*,e.name eName,e.introduce eIntroduce,e.addresseAddress,d.name dName,s.sign_up_id sId,s.pass,s.position_id spid from recruitment rLEFTJOINdirection d ON r.direction_id = d.direction_idLEFT JOIN enterpriseeON e.enterprise_id = r.enterprise_idLEFT JOIN sign_up s ONs.recruitment_id = r.recruitment_id where s.student_id = #{stuId}

解决:

select r.*,e.name eName,e.introduce eIntroduce,e.addresseAddress,d.name dName,s.sign_up_id sId,s.pass,s.position_id spid from recruitment rLEFTJOINdirection d ON r.direction_id = d.direction_idLEFT JOIN enterpriseeON e.enterprise_id = r.enterprise_idLEFT JOIN sign_up s ONs.recruitment_id = r.recruitment_id and s.student_id = #{stuId}

4.报名结果


1.点开标签页可以查看自己报名的企业以及录取结果(已经录取,未录取,等待录取),根据请求的数据通过js进行显示。

5.学生注册


完成学生注册功能,注册后跳转到登录页面。

6.个人生涯

function download() {$('#download').hide();$('.father').removeClass('father');$('#father').attr('style', 'background-color: #ffffff;');$('.breadcrumb').hide();$('#hr').hide();var w = $("#father").width();var h = $("#father").height();//要将 canvas 的宽高设置成容器宽高的 2 倍var canvas = document.createElement("canvas");canvas.width = w * 2;canvas.height = h * 2;canvas.style.width = w + "px";canvas.style.height = h + "px";var context = canvas.getContext("2d");//然后将画布缩放,将图像放大两倍画到画布上context.scale(2,2);html2canvas(document.querySelector("#father"), {canvas: canvas,onrendered : function(canvas) {var contentWidth = canvas.width;var contentHeight = canvas.height;// 一页pdf显示html页面生成的canvas高度;var pageHeight = contentWidth / 592.28 * 841.89;// 未生成pdf的html页面高度var leftHeight = contentHeight;// 页面偏移var position = 0;// a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高var imgWidth = 595.28;var imgHeight = 592.28 / contentWidth * contentHeight;var pageData = canvas.toDataURL('image/jpeg', 1.0);var pdf = new jsPDF('', 'pt', 'a4');// 有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)// 当内容未超过pdf一页显示的范围,无需分页if (leftHeight < pageHeight) {pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight);} else {while (leftHeight > 0) {pdf.addImage(pageData, 'JPEG', 0, position, imgWidth,imgHeight)leftHeight -= pageHeight;position -= 841.89;// 避免添加空白页if (leftHeight > 0) {pdf.addPage();}}}pdf.save(stu.student.stuName+'个人生涯.pdf');}});

使用到的技术:

jQuery,SSM,Vue.js,Ajax
MySql,Html2canvas

收获与不足

通过这个项目的磨练,意识到团队协作的重要性。从项目一开始的不从下手,到最后项目成功完成。少不了团队每个人的努力。
在这个过程中,我学到了很多新东西,一开始对于网站开发,完全是用jsp进行页面渲染,这个项目教会我怎么使用js和html完成来更高效的完成界面的渲染与值传递。对ssm框架有了更深一层的理解。

同时,也感到了压力,很多东西都从未接触过,生怕自己完不成而耽误项目进度。幸运的是有一帮乐于助人的队员,互相帮忙,共度难关。

教务管理系统工作总结[何思勇]相关推荐

  1. (fym)ssm基于web的教务管理系统 毕业设计261620

    ssm 教务管理系统 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理.在现实运用中,应用软件的工作规则和开发步骤,采用J ...

  2. 岭南师范学院计算机二级查询,岭南师范学院教务管理系统入口http://d.lingnan.edu.cn/jwc/...

    一.岭南师范学院教务管理系统入口及简介 岭南师范学院(原湛江师范学院)是一所具有百年师范教育历史的广东省属普通本科院校,坐落在中国大陆最南端的美丽港城湛江市.学校1904年始设师范科教育,1978年更 ...

  3. 学校教务管理系统的设计与实现--Word文档可在最后链接处下载,无code

    一 设计背景 1.1 课题现状 国家经济水平逐渐的提升,各行各业发展也稳步向前,其业务也繁多起来.慢慢的对其管理需求也要求提高,因此很多行业临着新的困难和机遇,现如今要怎么利用利于对自身发展需要的而且 ...

  4. 教务处管理系统c语言编程,基于C语言的教务管理系统的设计

    基于C语言的教务管理系统的设计(任务书,开题报告,论文12000字,程序代码) 摘要 教务管理系统是现代化教育的重要组成部分,在现代高校管理中,一个高效的.准确的教务系统不仅能大大提高教学管理效率,还 ...

  5. python实现高校教务管理系统_基于Python技术的教务管理系统的研究与开发

    龙源期刊网 http://www.qikan.com.cn 基于 Python 技术的教务管理系统的研究与 开发 作者:戴雯惠 来源:<价值工程> 2018 年第 27 期 摘要:随着教育 ...

  6. 新开普自助查询 单点登录 php,综合教务管理系统,高校教务管理系统,教务管理系统 - 新开普(NewCapec)...

    教务管理系统 实施数字化校园下的一卡通系统,为客户提供全面的信息化解决方案,保护客户原有系统投资,需要接入许多第三方应用系统,如图书馆管理系统.教务管理系统.学校医疗管理系统.网络计费系统.资产管理系 ...

  7. 莆田学院c语言怎么查成绩,莆田学院教务管理系统成绩查询、网上选课查分登录入口...

    莆田学院教务管理系统成绩查询.网上选课查分登录入口 莆田学院教务处 2019年7月10日 - 教务处首页 办事指南 莆田学院正方教务系统教务处简介 岗位职责 教师办事指南 学生办事指南 ...2019 ...

  8. 苏州职业大学计算机考试成绩查询系统,苏州工业园区职业技术学院教务管理系统登录入口、成绩查询网上选课查分...

    苏州工业园区职业技术学院教务管理系统登录入口.学生期末考试成绩查询网上选课查分 苏州工业园区职业技术学院教务系统 - 登录官方 迎新管理信息系统||学期项目管理系统||顶岗实习管理系统||IVT教学信 ...

  9. 项目实战:PB/ORACLE:C/S架构 学生成绩教务管理系统

    项目实战:PB/ORACLE:C/S架构 学生成绩教务管理系统 目录 项目实战:PB/ORACLE:C/S架构 学生成绩教务管理系统 1.编辑环境: 2.项目: 3.项目简介: 4.其他: 5.项目运 ...

最新文章

  1. tools。php,phpTools/tools.php at master · superve/phpTools · GitHub
  2. 更新WordPress4.0访问速度慢问题解决办法
  3. 什么是 Go runtime.KeepAlive?
  4. 怎样把java项目转换成web项目_Eclipse中将Java项目转换成Web项目的方法
  5. leetcode题解70-爬楼梯
  6. mysql jsp分页技术_一个非常简单的分页技术MYSQL JSP 利用了mysql的LIMIT参数
  7. 字符串(AC自动机):COCI 2015 round 5 divljak
  8. layui多文件上传讲解_layui文件上传的实际应用实例
  9. java基于springboot的毕业生简历模板分享管理系统
  10. windows蓝屏dump分析方法
  11. 怎么在苹果手机上添加无线网络连接服务器,如何通过苹果iOS设备管理无线网络(图文解析)...
  12. PHP——常用的魔术方法(保姆级教学)
  13. 【在esp32的3D打印机主板上配置marlin固件OLED】
  14. java异常之-Caused by: java.lang.IllegalStateException: Method has too many Body parameters
  15. java split 字符串作为分隔符_Java 字符串分隔 split
  16. 2012蓝桥杯C++本科 取球游戏
  17. python利用flask_mail、sendgrid发送邮件
  18. cmd命令打开文本文档_Windows10家庭版打开「本地组策略」
  19. 10-3-查看文章详情
  20. 【就业必备知识】大学毕业如何处理档案和户口,小心变成死档和黑户

热门文章

  1. WEXT和NL80211区别
  2. MAXHUB会议门牌正式发售:始于简约,不止于艺术
  3. 可编辑的绿色发光文字js特效
  4. idea2020shezhi代码检查级别_深度解密:机械设备安装工证考试时间分几个级别?工作内容...
  5. Can‘t locate Bio/SeqIO.pm in @INC问题极简解决
  6. WIN10 完美安装运行BCB6
  7. MOTO G一键解锁Root权限获取教程
  8. 攻防世界新手村初探:MISC篇(1-5)
  9. 管理类联考——逻辑——技巧篇——形式逻辑——考官出题套路
  10. html转换成keynote,Keynote教程(一)——隐藏的功能知识