目录
一、项目介绍
本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于Java的springboot框架进行开发。
前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用springboot作为开发框架,同时集成MyBatis、Redis等相关技术。
主要实现了首页、轮播图、公告通知管理、校园资讯、系统用户(管理员、学生用户、教师用户)、发布选题、论文选题、论文信息、选题信息、答辩信息、成绩信息等功能。
二、项目主要技术
开发语言:Java
使用框架:spring boot
前端技术:JavaScript、Vue 、css3
开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
数据库:MySQL 5.7/8.0
数据库管理工具:phpstudy/Navicat
JDK版本:jdk1.8
Maven: apache-maven 3.8.1-bin
三、系统设计
毕业论文管理系统的设计基于现有的手机,可以实现轮播图、公告通知管理、校园资讯、系统用户管理(管理员、学生用户、教师用户)、发布选题、论文选题、论文信息、选题信息、答辩信息、成绩信息等功能。方便用户对论文选题、浏览校园资讯、查看论文信息、收藏、发布评论等详细的了解及统计分析。根据系统功能需求建立的模块关系图,管理员用例如下图:
学生用户用例如下图:
教师用户用例如下图:
四、系统实现
4.1 学生前台功能实现
4.1.1 首页实现
首页的实现,首页界面要尽量简洁大方,使学生能够方便找到需要的功能入口,浏览毕业论文相关信息,且要易于修改和维护,同时还要保证系统安全。
首页界面如下图所示。
4.1.2 发布选题页面
4.1.3 论文选题实现
4.1.4 响应式平板端实现
4.1.5 响应式手机端实现
4.2 管理员主要功能实现
4.2.1 轮播图管理
轮播图管理页面,管理员可以查询、重置、删除、添加轮播图标题、图片,如下图所示。
4.2.2 答辩信息页面
管理员可以查询、重置、删除、添加论文题目、论文类型、答辩学生、答辩时间、答辩地点、答辩须知、答辩状态、答辩结果等信息,并可进行详情和发布成绩的操作,如下图所示。
4.2.3 论文信息页面
管理员可以填写和提交论文题目、答辩学生、答辩地点、答辩状态、论文类型、答辩时间、答辩须知、答辩结果等信息,并可进行查询、重置、删除、添加的操作,如下图所示。
4.3 教师用户主要功能实现
4.3.1 发布选题页面
教师可以填写和发布论文题目、题目类型、题目附件、题目详情、题目状态等信息,如下图所示。
4.3.2 选题信息页面
教师可以查询、重置、删除、添加论文题目、指导教师、题目类型、选题学生、选题时间、题目状态、选题状态、选题备注等信息,并可进行详情操作,如下图所示。
4.3.3 论文信息页面
教师可以填写和提交论文题目、论文类、上传时间、论文评优、论文评语、指导教师、上传学生、论文附件、老师意见等信息,如下图所示。
4.4 学生用户主要功能实现
学生用户进入后台管理页面,可以查看首页、发布选题、选题信息、论文信息、答辩信息、成绩信息等模块内容,如下图所示。
4.4.1 发布选题页面
学生可以查看发布学生、学生姓名、发布时间、论文题目、题目类型、题目附件、题目详情、选题状态等信息,并可进行详情、上传论文等操作,如下图所示。
五、实现代码
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
query.put("username",user.getUsername());
List list = service.select(query, new HashMap<>()).getResultList();
if (list.size()>0){
return error(30000, "用户已存在");
}
user.setUserId(null);
user.setPassword(service.encryption(user.getPassword()));
service.save(user);
return success(1);
}
/**
* 用户ID:[0,8388607]用户获取其他与用户相关的数据
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Integer userId;
/**
* 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)
*/
@Basic
@Column(name = "state")
private Integer state;
/**
* 所在用户组:[0,32767]决定用户身份和权限
*/
@Basic
@Column(name = "user_group")
private String userGroup;
/**
* 上次登录时间:
*/
@Basic
@Column(name = "login_time")
private Timestamp loginTime;
/**
* 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时
*/
@Basic
@Column(name = "phone")
private String phone;
/**
* 手机认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "phone_state")
private Integer phoneState;
/**
* 用户名:[0,16]用户登录时所用的账户名称
*/
@Basic
@Column(name = "username")
private String username;
/**
* 昵称:[0,16]
*/
@Basic
@Column(name = "nickname")
private String nickname;
/**
* 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成
*/
@Basic
@Column(name = "password")
private String password;
/**
* 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时
*/
@Basic
@Column(name = "email")
private String email;
/**
* 邮箱认证:[0,1](0未认证|1审核中|2已认证)
*/
@Basic
@Column(name = "email_state")
private Integer emailState;
/**
* 头像地址:[0,255]
*/
@Basic
@Column(name = "avatar")
private String avatar;
/**
* 创建时间:
*/
@Basic
@Column(name = "create_time")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp createTime;
@Basic
@Transient
private String code;
}
gitCode源码入口https://gitcode.com/yuanmadd/ymgg/blob/main/README.md?init=initTree