基于springboot的作业管理系统设计与实现
创始人
2024-03-20 17:06:55
0

项目描述

临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问题,今天给大家介绍一篇基于springboot的作业管理系统设计与实现。

功能需求

本系统设计是基于springboot的作业管理系统的设计与实现,可以提供给学校管理、教职工、学生更便捷的操作和服务功能。经过需求分析后首先对系统主要功能进行设计,搭建出总体的框架和划分主要模块,对系统的数据库也进行设计流程进行搭建。根据线上作业管理系统的特点,可以将其分为学生、教师、管理员三个橘色进行设计。

具备以下功能:

1、学生的功能:
登录、个人中心、公告查看、作业上传、在线提问。
2、教师的功能:
登录、公告管理、查看学生、课后作业管理、在线答疑、退出系统、修改信息。
3、系统管理功能:
登录、公告管理、教师管理、院校管理、学生管理、学生分配管理、退出系统、修改信息。

部分效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

部分代码
/*** websocket类** @ServerEndpoint: socket链接地址*/
@ServerEndpoint("/websocket/{username}")
@Controller
public class WebSocketController {private Logger logger = LoggerFactory.getLogger(this.getClass());/*** 在线人数*/public static int onlineNumber = 0;/*** 以用户的姓名为key,WebSocket为对象保存起来*/private static Map clients = new ConcurrentHashMap();/*** 会话*/private Session session;/*** 用户名称*/private String username;/*** 进入聊天室 --> 项目中读取用户信息获取用户名*/@RequestMapping("/websocket")public String webSocket(Model model, HttpSession session) {//定义随机时间戳名称String name = "用户:";
//        String sRealName = session.getAttribute("sRealName").toString();
//        String tRealName = session.getAttribute("tRealName").toString();//String  datename = new SimpleDateFormat("yyyyMMddHHmmsss").format(new Date());String datename = new SimpleDateFormat("msss").format(new Date());
//        sRealName = sRealName + datename;
//        tRealName = tRealName + datename;
//        Map map = new HashMap<>();
//        map.put("username",sRealName);
//        Map map1 = new HashMap<>();
//        map1.put("username",tRealName);name = name + datename;//websock链接地址+游客名-->  项目中请定义在配置文件 -->或直接读取服务器,ip 端口// 读取服务器,ip 端口可看:https://blog.csdn.net/qq_41463655/article/details/92002474String path = "ws://localhost:9050/websocket/";model.addAttribute("path", path);model.addAttribute("username",name);return "student/talk/studentTalk";}/*** 监听连接(有用户连接,立马到来执行这个方法)* session 发生变化** @param session*/@OnOpenpublic void onOpen(@PathParam("username") String username, Session session) {onlineNumber++;//把新用户名赋给变量this.username = username;//把新用户的 session 信息赋给变量this.session = session;//输出 websocket 信息logger.info("现在来连接的客户id:" + session.getId() + "用户名:" + username);logger.info("有新连接加入! 当前在线人数" + onlineNumber);try {//把自己的信息加入到map当中去,this=当前类(把当前类作为对象保存起来)clients.put(username, this);//获得所有的用户Set lists = clients.keySet();// 先给所有人发送通知,说我上线了//messageType 1代表上线 2代表下线 3代表在线名单 4代表普通消息Map map1 = new HashMap();//  把所有用户列表map1.put("onlineUsers", lists);//  返回上线状态map1.put("messageType", 1);//  返回用户名map1.put("username", username);//  返回在线人数map1.put("number", onlineNumber);//  发送全体信息(用户上线信息)sendMessageAll(JSON.toJSONString(map1), username);// 给自己发一条消息:告诉自己现在都有谁在线Map map2 = new HashMap();//messageType 1代表上线 2代表下线 3代表在线名单 4代表普通消息map2.put("messageType", 3);//把所有用户放入map2map2.put("onlineUsers", lists);//返回在线人数map2.put("number", onlineNumber);// 消息发送指定人(所有的在线用户信息)sendMessageTo(JSON.toJSONString(map2), username);} catch (IOException e) {logger.info(username + "上线的时候通知所有人发生了错误");}}/*** 监听连接断开(有用户退出,会立马到来执行这个方法)*/@OnClosepublic void onClose() {onlineNumber--;//所有在线用户中去除下线用户clients.remove(username);try {//messageType 1代表上线 2代表下线 3代表在线名单  4代表普通消息Map map1 = new HashMap();map1.put("messageType", 2);//所有在线用户map1.put("onlineUsers", clients.keySet());//下线用户的用户名map1.put("username", username);//返回在线人数map1.put("number", onlineNumber);//发送信息,所有人,通知谁下线了sendMessageAll(JSON.toJSONString(map1), username);} catch (IOException e) {logger.info(username + "下线的时候通知所有人发生了错误");}logger.info("有连接关闭! 当前在线人数" + onlineNumber);}@OnErrorpublic void onError(Session session, Throwable error) {logger.info("服务端发生了错误" + error.getMessage());//error.printStackTrace();}/*** 监听消息(收到客户端的消息立即执行)** @param message 消息* @param session 会话*/@OnMessagepublic void onMessage(String message, Session session) {try {logger.info("来自客户端消息:" + message + "客户端的id是:" + session.getId());//用户发送的信息com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(message);//发送的内容String textMessage = jsonObject.getString("message");//发送人String fromusername = jsonObject.getString("username");//接收人  to=all 发送消息给所有人 || to= !all   to == 用户名String tousername = jsonObject.getString("to");//发送消息  -- messageType 1代表上线 2代表下线 3代表在线名单  4代表消息Map map1 = new HashMap();map1.put("messageType", 4);map1.put("textMessage", textMessage);map1.put("fromusername", fromusername);if (tousername.equals("All")) {//消息发送所有人(同步)map1.put("tousername", "所有人");sendMessageAll(JSON.toJSONString(map1), fromusername);} else {//消息发送指定人(同步)map1.put("tousername", tousername);sendMessageTo(JSON.toJSONString(map1), tousername);}} catch (Exception e) {logger.info("发生了错误了");}}/*** 消息发送指定人*/public void sendMessageTo(String message, String ToUserName) throws IOException {//遍历所有用户for (WebSocketController item : clients.values()) {if (item.username.equals(ToUserName)) {//消息发送指定人(同步)item.session.getBasicRemote().sendText(message);break;}}}/*** 消息发送所有人*/public void sendMessageAll(String message, String FromUserName) throws IOException {for (WebSocketController item : clients.values()) {//消息发送所有人(同步)getAsyncRemoteitem.session.getBasicRemote().sendText(message);}}public static synchronized int getOnlineCount() {return onlineNumber;}
}
安装部署需求

eclipse、idea运行启动

系统部署

系统开发后,在生产环境配置项目运行环境,具体步骤如下:
安装linux或者windows10操作系统;
安装JDK1.8并配置环境变量;
安装MySQL5.7版本以上版本数据库,创建数据库并执行脚本创建表;
在eclipse中编辑进行打包;
下载并配置Tomcat8.0服务器,配置系统服务,上传项目打包文件

本项目用到的技术和框架

1.开发语言:Java
2.开发模式:B/S
3.数据库:MySQL
4.框架:jsp+Springboot+Mybatis

本项目中的关键点

此系统的开发采用java语言开发,基于B/S结构,这些开发环境使系统更加完善。使用到的工具和技术都是开源免费的。

环境工具

开发工具 Eclipse/IDEA
语言 JDK1.8 、jsp、CSS、Springboot
硬件:笔记本电脑;
软件:Tomcat8.0 Web服务器、Navicat数据库客户端、MySQL;
操作系统:Windows 10;
其它软件:截图工具、常用浏览器;
以上是本系统的部分功能展示,如果你的选题正好相符,那么可以做毕业设计或课程设计使用。

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...