文末联系获取源码
开发语言:Java
框架:ssm
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7/8.0
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器
小程序框架:uniapp
小程序开发软件:HBuilder X
小程序运行软件:微信开发者
一、前言介绍
高校毕业论文管理系统小程序能够通过互联网得到广泛的、全面的宣传,让尽可能多的用户了解和熟知高校毕业论文管理系统小程序的便捷高效,不仅为学生和教师提供了服务,而且也推广了自己,让更多的学生和教师了解自己。对于高校毕业论文而言,若拥有自己的系统,通过系统得到更好的管理,同时提升了形象。
本系统设计的现状和趋势,从需求、结构、数据库等方面的设计到系统的实现,分别为管理员、学生和教师的实现。论文的内容从系统的设计、描述、实现、分析、测试方面来表明开发的过程。本系统根据现实情况来选择一种可行的开发方案,借助java编程语言和MySQL数据库等实现系统的全部功能,接下来对系统进行测试,测试系统是否有漏洞和测试用户权限来完善系统,最终系统完成达到相关标准。
二、功能需求分析
考虑到实际生活中在高校毕业论文管理方面的需要以及对该系统认真的分析,将系统权限按管理员,学生和教师这三类涉及用户划分。
2.1管理员功能需求
管理员登陆后,主要模块包括首页,个人中心,学生管理,教师管理,课程信息管理,选题信息管理,论文信息管理,疑惑留言管理,疑惑解答管理,答辩名单管理,系统管理等功能。管理员用例图如图
2.2学生功能需求
学生登陆后进入小程序在我的页面,可以对课题信息,论文信息,疑惑留言,疑惑解答,答辩名单,我的收藏管理等功能进行操作管理。学生用例图如图
2.3教师功能需求
教师登陆后进入小程序我的页面,可以对课题信息,选题信息,论文信息,疑惑留言,疑惑解答,答辩名单,我的收藏管理等功能进行操作管理。教师用例图如图
2.4功能结构
三、小程序端
3.1登录
学生和教师通过输入账号和密码,选择角色并点击登录进行系统登录操作,如图
3.2教师注册
在教师注册页面通过填写工号,密码,确认密码,教师姓名,性别,邮箱,联系手机,所在院系,职称等信息进行注册操作;如图
3.3小程序首页
用户登陆小程序端,可以对首页,课程信息,我的等功能进行详细操作,如图
3.4课程信息
在课程信息页面可以查看课题名称,难度,来源,类型,状态,工号,教师姓名,所在院系,描述等信息,并进行选题操作;如图
3.5学生我的页面
在我的页面可以对课题信息,论文信息,疑惑留言,疑惑解答,答辩名单,我的收藏管理等详细信息进行操作,如图
3.6教师我的页面
在我的页面可以对课题信息,选题信息,论文信息,疑惑留言,疑惑解答,答辩名单,我的收藏管理等详细信息进行操作,如图
四、管理员功能模块
管理员登录,管理员通过输入账号、密码,点击登录进行系统登录操作,如图
4.1管理员首页
管理员登陆系统后,可以对首页,个人中心,学生管理,教师管理,课程信息管理,选题信息管理,论文信息管理,疑惑留言管理,疑惑解答管理,答辩名单管理,系统管理等功能进行相应操作,如图
4.2学生管理
在学生管理页面可以对索引,学号,学生姓名,性别,邮箱,手机号码,年级,所在院系,相片等内容进行详情、修改或删除等操作,如图
4.3教师管理
在教师管理页面可以对索引,工号,教师姓名,性别,邮箱,联系手机,所在院系,职称,相片等内容进行详情,修改或删除等操作,如图
4.4课题信息管理
在课题信息管理页面可以对索引,课题名称,课题封面,难度,来源,类型,状态,工号,教师姓名,所在院系等内容进行详情、删除等操作,如图
4.5选课信息管理
在选课信息管理页面可以对索引,课题名称,课题封面,难度,来源,类型,工号,教师姓名,所在院系,学号,学生姓名,年级,申请日期,审核回复吗,审核状态等内容进行详情,删除等操作,如图
4.6论文信息管理
在论文信息管理页面可以对索引,课题名称,难度,来源,类型,工号,教师姓名,所在院系,论文名称,论文图片,学号,学生姓名,年级,提交日期,审核回复,审核状态等内容进行详情、删除等操作,如图
五、部分核心代码
5.1登录系统主要代码
/**
* 登录
*/
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", username));
if(user==null || !user.getMima().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(), username,"yonghu", "用户" );
return R.ok().put("token", token);
}
5.2上传文件关键代码
@RequestMapping("/upload")
public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
if (file.isEmpty()) {
throw new EIException("上传文件不能为空");
}
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
File path = new File(ResourceUtils.getURL("classpath:static").getPath());
if(!path.exists()) {
path = new File("");
}
File upload = new File(path.getAbsolutePath(),"/upload/");
if(!upload.exists()) {
upload.mkdirs();
}
String fileName = new Date().getTime()+"."+fileExt;
File dest = new File(upload.getAbsolutePath()+"/"+fileName);
file.transferTo(dest);
/**
* 如果使用idea或者eclipse重启项目,发现之前上传的图片或者文件丢失,将下面一行代码注释打开
* 请将以下的"D:\\springbootq33sd\\src\\main\\resources\\static\\upload"替换成你本地项目的upload路径,
* 并且项目路径不能存在中文、空格等特殊字符
*/
// FileUtils.copyFile(dest, new File("D:\\springbootq33sd\\src\\main\\resources\\static\\upload"+"/"+fileName)); /**修改了路径以后请将该行最前面的//注释去掉**/
if(StringUtils.isNotBlank(type) && type.equals("1")) {
ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
if(configEntity==null) {
configEntity = new ConfigEntity();
configEntity.setName("faceFile");
configEntity.setValue(fileName);
} else {
configEntity.setValue(fileName);
}
configService.insertOrUpdate(configEntity);
}
return R.ok().put("file", fileName);
}