文末获取源码
开发语言:Java
使用框架:spring boot
前端技术:JavaScript、Vue.js 、css3
开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code
数据库:MySQL 5.7/8.0
数据库管理工具:phpstudy/Navicat
JDK版本:Java jdk8
Maven:apache-maven 3.8.1-bin
一、前言介绍
随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于大学毕业设计管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了大学毕业设计管理系统,它彻底改变了过去传统的管理方式,不仅使服务管理难度变低了,还提升了管理的灵活性。这种个性化的平台特别注重交互协调与管理的相互配合,激发了管理人员的创造性与主动性,对大学毕业设计管理系统而言非常有利。
本论文主要论述了如何使用java语言开发一个springboot大学毕业设计管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述大学毕业设计管理系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。
二、系统功能分析和描述
使用大学毕业设计管理系统的分为管理员和用户、两个权限模块。
管理员所能使用的功能主要有首页、站点管理(轮播图、公告栏)用户管理(管理员、学生用户、教师用户、院系领导)内容管理(校园资讯、校园资讯分类)更多管理(毕设课题、选择信息、任务书、开题报告、中期报告、毕业论文、答辩通知、毕设通知、成绩汇总、课题分类)等。
学生可以实现首页、选择信息、任务书、开题报告、中期报告、毕业论文、答辩通知、毕设通知。
教师可以实现首页、毕设课题、选择信息、任务书、开题报告、中期报告、毕业论文、毕设通知、成绩汇总。
院系领导可以实现首页、毕设课题、开题报告、中期报告、毕业论文、答辩通知、毕设通知、成绩汇总。
2.1系统UML用例分析
管理员用例
管理员登录后可进行首页、首页、站点管理(轮播图、公告栏)用户管理(管理员、学生用户、教师用户、院系领导)内容管理(校园资讯、校园资讯分类)更多管理(毕设课题、选择信息、任务书、开题报告、中期报告、毕业论文、答辩通知、毕设通知、成绩汇总、课题分类),管理员的用例如图
学生用例
学生注册登录后可进行首页、选择信息、任务书、开题报告、中期报告、毕业论文、答辩通知、毕设通知管理,学生用例如图
教师用例
教师注册登录后可进行首页、毕设课题、选择信息、任务书、开题报告、中期报告、毕业论文、毕设通知、成绩汇总管理,教师用例如图
院系领导
院系领导注册登录后可进行首页、毕设课题、开题报告、中期报告、毕业论文、答辩通知、毕设通知、成绩汇总管理,院系领导用例如图
2.2系统体系结构
这些功能可以充分满足大学毕业设计管理系统的需求。此系统功能较为全面如下图系统功能结构如图
三、学生功能模块
3.1首页
学生进入到系统操作界面,可以对首页、公告消息、校园资讯、毕设课题等功能模块,如图
3.2个人信息
通过列表可以获取个人信息、进行详情、修改等操作,如图
3.3毕设课题列表管理
毕设课题列表页面可查看课题名称、课题类型、图片等信息如图
3.4校园资讯
通过校园资讯可以查看资讯标题、资讯内容、发布时间、点赞数、浏览数等操作,如图
四、管理员功能模块
管理员通过用户名和密码、角色填写完成后进行登录,如图所示。管理员登录成功后进入到系统操作界面,可以对首页、站点管理(轮播图、公告栏)用户管理(管理员、学生用户、教师用户、院系领导)内容管理(校园资讯、校园资讯分类)更多管理(毕设课题、选择信息、任务书、开题报告、中期报告、毕业论文、答辩通知、毕设通知、成绩汇总、课题分类)等功能模块进行相对应操作。
管理员功能页面:通过首页输入账号、密码等操作登录系统,如图
4.1毕设课题
通过列表可以获取课题名称、课题类型、教师工号、教师姓名等信息,进行删除或修改操作,如图
4.2用户管理
通过列表可以获取用户名、领导工号、领导姓名等信息,进行修改或删除操作,如图
4.3中期报告管理
该页面可以查看课题名称、课题类型、教师工号、教师姓名、学生学号、学生姓名等进行修改操作,以及图片的删除操作,如图
五、部分核心代码
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
public Map<String,Object> readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map<String,Object> body){
StringBuffer sql = new StringBuffer("INSERT INTO ");
sql.append("`").append(table).append("`").append(" (");
for (Map.Entry<String,Object> entry:body.entrySet()){
sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
}
sql.deleteCharAt(sql.length()-1);
sql.append(") VALUES (");
for (Map.Entry<String,Object> entry:body.entrySet()){
Object value = entry.getValue();
if (value instanceof String){
sql.append("'").append(entry.getValue()).append("'").append(",");
}else {
sql.append(entry.getValue()).append(",");
}
}
sql.deleteCharAt(sql.length() - 1);
sql.append(")");
log.info("[{}] - 插入操作:{}",table,sql);
Query query = runCountSql(sql.toString());
query.executeUpdate();
}