基于Java(Spring+Struts+Hibernate 框架)实现(Web)学生课程管理系统

news2024/9/29 16:50:17

课程管理系统设计文档

一、更新历史

二、引言

2.1 目的

本文档详细描述了课程管理系统的设计,达到引导开发的作用,同时实现测试人员以及用户的沟通。

本文档面向开发人员,测试人员以及最终用户编写,是了解系统的导航。

2.2 范围

课程管理系统是方便教学管理,有管理员对用户和课程的管理,学生可以方便的查找自己的课程,提交作业,查看课程作业。老师可以布置作业,安排助教批改作业,安排选课学生,安排课程助教。同时有教学管理人员对学生情况,课程情况进行统计。

三、架构设计

此项目采用 MVC 架构,使用 Spring+Struts+Hibernate 框架

四、类的设计

4.1 业务逻辑层分解

4.1.1 业务逻辑层模块职责

模块职责
UserManage负责用户模块所需要的服务
CourseManage负责课程模块所需要的服务
AssignmentManage负责作业模块所需要的服务

4.1.2 业务逻辑层模块接口规范

userManage 模块

模块概述

userManage 模块负责用户的登陆注册,设置个人资料,获得全部用户列表,查找用户等功能。

userManage 接口规范

提供的服务(供接口)提供的服务(供接口)提供的服务(供接口)
userManage. validateUser语法public User validateUser(String userid, String password);
userManage. validateUser前置条件userid 和 password 不为空
userManage. validateUser后置条件验证用户名和密码是否匹配
userManage. registerUser语法public String registerUser(User user);
userManage. registerUser前置条件user 不为空
userManage. registerUser后置条件数据库中添加一条 User 用户
userManage. userList语法public List userList();
userManage. userList前置条件
userManage. userList后置条件返回全部用户列表
userManage. delete语法public void delete(User user);
userManage. delete前置条件user 不为空
userManage. delete后置条件删除此条 user 记录
userManage. update语法public void update(User user);
userManage. update前置条件user 不为空
userManage. update后置条件更新此条 user 记录
userManage. findUser语法public User findUser(String id);
userManage. findUser前置条件id 不为空
userManage. findUser后置条件返回此 id 的 user 记录
CourseManage 模块

模块概述

CourseManage 模块提供课程的添加删除修改,课程老师添加,添加课程助教,选课学生等功能

CourseManage 接口规范

提供的服务(供接口)提供的服务(供接口)提供的服务(供接口)
CourseManage. setCourse语法public String setCourse(Course course);
CourseManage. setCourse前置条件course 不为空
CourseManage. setCourse后置条件数据库中添加一条课程记录
CourseManage. courseList语法public List courseList();
CourseManage. courseList前置条件
CourseManage. courseList后置条件返回全部课程的列表
CourseManage. delete语法public void delete(Course course);
CourseManage. delete前置条件course 不为空
CourseManage. delete后置条件删除数据库中的此课程数据
CourseManage. update语法public void update(Course course);
CourseManage. update前置条件course 不为空
CourseManage. update后置条件更新数据库中的此课程数据
CourseManage. findCourse语法public Course findCourse(String cid);
CourseManage. findCourse前置条件cid 不为空
CourseManage. findCourse后置条件返回符合条件 cid 的课程
CourseManage. addCourseAssistant语法public void addCourseAssistant(String courseid, String assid);
CourseManage. addCourseAssistant前置条件courseid 和 assid 分别有数据库中的数据,且不能重复添加,assid 不能是选课学生
CourseManage. addCourseAssistant后置条件数据库中添加一条数据
CourseManage. findCourseAssistant语法public CourseAssistants findCourseAssistant(String assid, String courseid);
CourseManage. findCourseAssistant前置条件courseid 和 assid 分别有数据库中的数据
CourseManage. findCourseAssistant后置条件返回对应的猪脚信息
CourseManage. findAssistant;语法public List findAssistant(String cid);
CourseManage. findAssistant;前置条件cid 不为空
CourseManage. findAssistant;后置条件返回对应课程的全部猪脚
CourseManage. deleteAssistant;语法public void deleteAssistant(String assid, String courseid);
CourseManage. deleteAssistant;前置条件courseid 和 assid 分别有数据库中的数据
CourseManage. deleteAssistant;后置条件删除数据库中的数据
CourseManage. addCourseStudent;语法public void addCourseStudent(String courseid, String stuid);
CourseManage. addCourseStudent;前置条件courseid 和 stuid 分别有数据库中的数据,且不能重复添加,成为助教的学生不能选课
CourseManage. addCourseStudent;后置条件添加一条选课学生记录
CourseManage. findCourseStudent;语法public CourseStudent findCourseStudent(String stuid, String courseid);
CourseManage. findCourseStudent;前置条件courseid 和 stuid 分别有数据库中的数据
CourseManage. findCourseStudent;后置条件返回一条选课学生记录
CourseManage. findStudent;语法public List findStudent(String cid);
CourseManage. findStudent;前置条件cid 不能为空
CourseManage. findStudent;后置条件返回对应课程的全部学生
CourseManage. deleteStudent;语法public void deleteStudent(String uid, String courseid);
CourseManage. deleteStudent;前置条件courseid 和 stuid 分别有数据库中的数据
CourseManage. deleteStudent;后置条件删除数据库中的选课学生记录
CourseManage. myCourseList;语法public List myCourseList(String userid);
CourseManage. myCourseList;前置条件userid 不为空
CourseManage. myCourseList;后置条件返回 userid 的全部课程
AssignmentManage 模块

模块概述

AssignmentManage 模块提供作业方面的服务,包括老师布置作业,修改作业,删除作业,学生提交作业等

AssignmentManage 接口规范

提供的服务(供接口)提供的服务(供接口)提供的服务(供接口)
AssignmentManage. setAssignment语法public void setAssignment(Assignment assignment);
AssignmentManage. setAssignment前置条件assignment 不为空
AssignmentManage. setAssignment后置条件添加一条作业记录
AssignmentManage. findAssignment语法public List findAssignment(String cid);
AssignmentManage. findAssignment前置条件cid 不为空
AssignmentManage. findAssignment后置条件返回对应课程的全部作业
AssignmentManage. addStudentAssignment语法public void addStudentAssignment(StudentAssignment sa);
AssignmentManage. addStudentAssignment前置条件sa 不为空
AssignmentManage. addStudentAssignment后置条件添加一条学生提交作业记录
AssignmentManage. findStudentAssignment语法public StudentAssignment findStudentAssignment(String studentid, String assignmentid);
AssignmentManage. findStudentAssignment前置条件studentid,assignmentid 不为空,且对应数据库中有数据
AssignmentManage. findStudentAssignment后置条件返回此条学生提交作业的记录
AssignmentManage. findAllStudentAssignment语法public List findAllStudentAssignment(String cid);
AssignmentManage. findAllStudentAssignment前置条件cid 不为空
AssignmentManage. findAllStudentAssignment后置条件返回对应课程所有的学生提交的作业
AssignmentManage. updateStudentAssignment语法public void updateStudentAssignment(StudentAssignment sa);
AssignmentManage. updateStudentAssignment前置条件sa 不为空
AssignmentManage. updateStudentAssignment后置条件更新此条学生作业记录

五、数据库设计

  • 老师布置作业表 assignment
ColumnNameDataTypePKNotNullDefault
idVARCHAR(255)
correctDeadlinedate
deadlinedate
descriptionTEXTNULL
filePathVARCHAR(255)NULL
formatVARCHAR(255)NULL
scoreINTNULL
courseidVARCHAR(255)NULL
fileNameVARCHAR(255)NULL
  • 课程表 course
ColumnNameDataTypePKNotNullDefault
idVARCHAR(255)
descriptionTEXTNULL
semesterdateNULL
instructorVARCHAR(255)NULL
cnameVARCHAR(255)NULL
enddateNULL
  • 课程助教表 courseassistants
ColumnNameDataTypePKNotNullDefault
idVARCHAR(255)
assistantidVARCHAR(255)NULL
courseidVARCHAR(255)NULL
  • 选课学生表 coursestudent
ColumnNameDataTypePKNotNullDefault
idVARCHAR(255)
courseidVARCHAR(255)NULL
studentidVARCHAR(255)NULL
  • 学生作业表 studentassignment
ColumnNameDataTypePKNotNullDefault
idVARCHAR(255)
assignmentidVARCHAR(255)NULL
studentidVARCHAR(255)NULL
fileNameVARCHAR(255)NULL
  • 用户表 user
ColumnNameDataTypePKNotNullDefault
idVARCHAR(255)
idenintNULL
mailVARCHAR(255)NULL
nameVARCHAR(255)NULL
passwordVARCHAR(255)NULL
phoneVARCHAR(255)NULL
sexintNULL
useridVARCHAR(255)NULL
avatarVARCHAR(255)NULL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2177336.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

五金精密加工提升效率的方法与技巧

在五金精密加工领域,提高加工效率是企业增强竞争力的关键。以下是一些有效的提升方法与技巧。 一、优化加工设备 设备升级与更新 定期评估加工设备的性能,引进先进的五金精密加工机床。例如,高精度的数控加工中心能够实现多轴联动加工&#x…

开放式蓝牙耳机哪个品牌更靠谱?5款高性价比开放式耳机推荐

谈到开放式蓝牙耳机哪个品牌更靠谱,市场上有许多优秀的选择。以前也经常使用入耳式耳机,但总是会感觉耳机插在耳朵里不舒服,戴久了耳朵很疼,跑步的时候还总掉。还有在过马路的时候接电话、听音乐,几乎感知不到周围环境…

【HarmonyOS】深入理解LocalStorage之逻辑处理存取

【HarmonyOS】深入理解LocalStorage 一、前言 鸿蒙应用中关于状态管理的处理机制有很多。从状态装饰器State prop等,LocalStrong,AppStrong到首选项,再到数据库。内存到持久化。轻量级到重量级。全方位覆盖。 学习和记忆技术点&#xff0c…

springboot实现沙箱支付退款

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>商城与订单管理</title><link rel"stylesheet" href"https://unpkg.com/element-ui/lib/theme-chalk/index.css"><…

websocket集群部署遇到的一些事

最近刚好有个场景&#xff0c;业务处理一份报告需要关注实时处理的进度。 本来打算使用前端轮训方式&#xff0c;但是考虑到这样效率比较低&#xff0c;也无法精确知道处理进度&#xff0c;就想到用websocket和前端实时交互&#xff0c;进度有更新就通知前端&#xff0c;避免了…

【Qt】系统相关学习--底层逻辑--代码实践

Qt事件 基本概念 理解Qt事件 事件是用户与应用程序之间交互的基础。它允许应用程序对用户的输入做出响应&#xff0c;例如鼠标点击一下又或者用户键盘输入相应内容。也就是说每一次用户与应用程序交互的时候&#xff0c;都会产生一个事件&#xff0c;然后传递给相应的控件或者…

如何制作小程序商城

在这个瞬息万变的数字时代&#xff0c;每一个商业决策的背后都蕴含着对市场趋势的深刻洞察与把握。随着移动互联网的飞速发展&#xff0c;小程序商城以其便捷性、高效性和低门槛的特点&#xff0c;正逐步成为众多企业商家竞相布局的营销新阵地。今天&#xff0c;就让我们一起深…

sql-server【bcp工具】

目录 1.查看bcp是否可用 2.bcp 命令的基本语法 3.数据导出 4.数据导入 bcp&#xff08;Bulk Copy Program&#xff09;是 SQL Server 提供的一个命令行工具&#xff0c;用于在 SQL Server 实例与用户指定格式的数据文件之间批量复制表或视图数据。bcp 工具非常适合进行大量…

雷池 WAF 如何配置才能正确获取到源 IP

经常有大哥反馈说雷池攻击日志里显示的 IP 有问题。 这里我来讲一下为什么一些情况下雷池显示的攻击 IP 会有问题。 问题说明 默认情况下&#xff0c;雷池会通过 HTTP 连接的 Socket 套接字读取客户端 IP。在雷池作为最外层网管设备的时候这没有问题&#xff0c;雷池获取到的…

康谋分享 | 数据隐私和匿名化:PIPL与GDPR下,如何确保数据合规?(一)

目录 一、自动驾驶数据合规挑战 二、PIPL和GDPR的异同点 1、覆盖范围 2、个人信息定义 3、敏感数据 自动驾驶技术的快速发展伴随着数据隐私保护的严峻挑战。中国《个人信息保护法》&#xff08;PIPL&#xff09;与欧盟《通用数据保护条例》&#xff08;GDPR&#xff09;为…

Unity实战案例全解析:RTS游戏的框选和阵型功能(4)阵型功能

前篇&#xff1a;Unity实战案例全解析&#xff1a;RTS游戏的框选和阵型功能&#xff08;3&#xff09;生成范围检测框 重置框选操作-CSDN博客 本案例来源于unity唐老狮&#xff0c;有兴趣的小伙伴可以去泰克在线观看该课程 我只是对重要功能进行分析和做出笔记分享&#xff0c;…

PCIE XDMA

1 硬件电路 2 XDMA IP说明 2.1 Basic Mode:配置模式,选择 Basic 配置模式就可以了,Advanced 高级配置一般用不到; Lane Width:链路宽度,对于 ZYNQ MPSOC开发板,选择x2; Max Link Speed:最大链路速度,选择 8.0GT/s,即 PCIe 3.0 的传输速率; Refere

ultralytics yolo v8 示例:加载官方模型进行推理

Ultralytics YOLO 是计算机视觉和 ML 领域专业人士的高效工具。 安装 ultralytics 库&#xff1a; pip install ultralytics 实现代码如下&#xff1a; import cv2 from ultralytics import YOLO# 加载预训练的 YOLOv8n 模型 ckpt_dir "./ckpt/" # 模型缓存地址…

3、练习常用的HBase Shell命令+HBase 常用的Java API 及应用实例

目录 &#xff08;一&#xff09;练习常用的HBase Shell命令1、启动HBase2、练习shell命令create scan list describe alterputgetdeletedrop 关于NoSQL数据库中的列族和列3、关闭hbase服务 &#xff08;二&#xff09;HBase 常用的Java API 及应用实例1、启动hbase服务2、启动…

C++版本更新历史

前言 C语言发展至今已经迭代了很多版本&#xff0c;而在不同环境中编写代码时经常看到C标准的设定&#xff0c;比如 Leetcode 中可以看到版本信息&#xff1a; 这说明Leetcode已经支持最新C23标准了&#xff0c;但某些环境并不一定支持这些语法&#xff0c;如果不清楚使用的语法…

提示词工程 (Prompt Engineering) 最佳实践

prompt Engineering 概念解析 提示工程是一门较新的学科&#xff0c;关注提示词开发和优化&#xff0c;帮助用户将大语言模型&#xff08;Large Language Model, LLM&#xff09;用于各场景和研究领域。研究人员可利用提示工程来提升大语言模型处理复杂任务场景的能力&#xf…

Jetson nano (4GB版本)跑yolov8n(TensorRT 加速)网络

大家好&#xff0c;我是王硕&#xff0c;项目原因需要在Jetson nano平台上跑yolov8s &#xff0c;需要使用TensorRt加速&#xff0c;看了网上的教程&#xff0c;写的太差了&#xff0c;资料零零散散的&#xff0c;故详细介绍一下步骤。 如果想使用jetson Nano平台部署yolov8&a…

Selenium与数据库结合:数据爬取与存储的技术实践

目录 一、Selenium与数据库结合的基础概念 1.1 Selenium简介 1.2 数据库简介 1.3 Selenium与数据库结合的优势 二、Selenium爬取数据的基本步骤 2.1 环境准备 2.2 编写爬虫代码 2.3 数据提取 2.4 异常处理 三、数据存储到数据库 3.1 数据库连接 3.2 数据存储 3.3 …

windows10录屏工具,四款新手必备软件!

今天要和大家聊的是-——win10的录屏工具。在Win10电脑上&#xff0c;那些让我们爱不释手的录屏神器有很多&#xff0c;不管是哪个行业的人&#xff0c;录屏软件简直是日常工作的得力助手&#xff0c;比如说对于程序员来说&#xff0c;不管是分享代码教程、记录bug复现&#xf…

RKLLM部署

RKLLM 写在前面&#xff1a;建议去阅读官方提供的RKLLM doc&#xff0c;本文基于官方的RKLLM doc制作而成&#xff08;没有将flask相关内容添加进来&#xff09;&#xff0c;仅仅添加了完整流程的执行过程截图和在做这以流程过程中遇到的问题 RKLLM可以帮助用户快速将人工智能…