ssm+jsp662教务信息平台的设计与实现


博主介绍:专注于Java(springboot ssm 等开发框架) vue  .net  php phython node.js    uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1500+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
更多项目地址 介绍  翰文编程CSDN博客 翰文编程-CSDN博客
文末下方有源码获取地址

4.2 功能结构设计

图4.1即为设计的管理员功能结构,管理员权限操作的功能包括对课程,教师,学生,课表,选课以及成绩等进行管理。

图4.1 管理员功能结构

图4.2即为设计的教师功能结构,教师权限操作的功能包括发布课程,管理选课信息,添加课表,管理成绩,统计成绩等。

图4.2 教师功能结构

图4.3即为设计的学生功能结构,学生权限操作的功能包括查看课表,选择课程,查看成绩,查看选课信息。

图4.3 学生功能结构

4.3 数据库设计

教务信息平台运行中产生的数据需要按照提前设置的存储规则进行保存,设计出一个符合项目的最优数据存储格式,因为它能减少用户的等待时间,还可以对系统的请求在最短时间内进行响应。所以,对数据库设计时,需要对功能需求进行详细的拆分,以及对业务状态的细分,然后设计具体的存储规则,保证数据库能正常运作,缩短数据处理时间,并在一定程度上降低数据冗余,节省存储空间。

4.3.1 数据库概念设计

实体-联系图还有一个名称即E-R图,是Entity Relationship Diagram各英文单词首字母的缩写,它这种概念模型通常用于对现实世界进行描述。同时它还是一种能够直观表达数据中实体,联系,属性的有效手段。绘制E-R图能够选择的工具也有很多,但是Office Visio 这款软件在E-R图的绘制上一般都是作为首选工具,因为它是基于可视化处理,使用它创建E-R图非常简单。使用基本的E-R图构成元素,比如椭圆,菱形,矩形,还有实线段来表达对应的信息,椭圆代表属性,即实体的特征,矩形代表实体,即数据库中的一个具体数据表,菱形代表实体中相互关系,实线段主要是完成椭圆,矩形,菱形的连接。

(1)图4.4即为教师这个实体所拥有的属性值。

图4.4 教师实体属性图

(2)图4.5即为成绩这个实体所拥有的属性值。

图4.5 成绩实体属性图

(3)图4.6即为学生这个实体所拥有的属性值。

图4.6 学生实体属性图

  1. 图4.7即为课程这个实体所拥有的属性值。

图4.7 课程实体属性图

  1. 图4.8即为上面介绍的实体中存在的联系。

图4.8 实体间关系E-R图

4.3.2 数据库物理设计

本小节主要任务即是根据上述内容进行数据存储结构的设计,实体的属性就用来表示字段名称,不同的字段表示的数据类型以及取值都不相同,以及该表各个字段是否能够保持空等进行说明,设计完成一张数据表的结构之后,在保存时同样要命名,尽量选择英文名称进行命名并保存,还不容易导致系统出错。接下来就对设计的表进行简单说明。

表4.1 成绩信息表

字段

注释

类型

id (主键)

主键

bigint(20)

addtime

创建时间

timestamp

xuehao

学号

varchar(200)

xingming

姓名

varchar(200)

kechengmingcheng

课程名称

varchar(200)

fenshu

分数

varchar(200)

chengji

成绩

varchar(200)

fabushijian

发布时间

datetime

gonghao

工号

varchar(200)

jiaoshixingming

教师姓名

varchar(200)

表4.2 课程信息评论表

字段

注释

类型

id (主键)

主键

bigint(20)

addtime

创建时间

timestamp

refid

关联表id

bigint(20)

userid

用户id

bigint(20)

nickname

用户名

varchar(200)

content

评论内容

longtext

reply

回复内容

longtext

表4.3 教师表

字段

注释

类型

id (主键)

主键

bigint(20)

addtime

创建时间

timestamp

gonghao

工号

varchar(200)

mima

密码

varchar(200)

jiaoshixingming

教师姓名

varchar(200)

xingbie

性别

varchar(200)

touxiang

头像

varchar(200)

xueyuan

学院

varchar(200)

zhicheng

职称

varchar(200)

dianhua

电话

varchar(200)

表4.4 课表信息表

字段

注释

类型

id (主键)

主键

bigint(20)

addtime

创建时间

timestamp

mingcheng

名称

varchar(200)

banji

班级

varchar(200)

tupian

图片

varchar(200)

riqi

日期

date

kechengyi

课程一

varchar(200)

kechenger

课程二

varchar(200)

kechengsan

课程三

varchar(200)

kechengsi

课程四

varchar(200)

kechengwu

课程五

varchar(200)

kechengliu

课程六

varchar(200)

gonghao

工号

varchar(200)

jiaoshixingming

教师姓名

varchar(200)

表4.5 课程类型表

字段

注释

类型

id (主键)

主键

bigint(20)

addtime

创建时间

timestamp

kechengleixing

课程类型

varchar(200)

表4.6 课程信息表

字段

注释

类型

id (主键)

主键

bigint(20)

addtime

创建时间

timestamp

kechengmingcheng

课程名称

varchar(200)

kechengleixing

课程类型

varchar(200)

tupian

图片

varchar(200)

shangkeshijian

上课时间

date

shangkedidian

上课地点

varchar(200)

renshu

人数

int(11)

kechengneirong

课程内容

longtext

gonghao

工号

varchar(200)

jiaoshixingming

教师姓名

varchar(200)

表4.7 新闻资讯表

字段

注释

类型

id (主键)

主键

bigint(20)

addtime

创建时间

timestamp

title

标题

varchar(200)

introduction

简介

longtext

picture

图片

varchar(200)

content

内容

longtext

表4.8 收藏表

字段

注释

类型

id (主键)

主键

bigint(20)

addtime

创建时间

timestamp

userid

用户id

bigint(20)

refid

收藏id

bigint(20)

tablename

表名

varchar(200)

name

收藏名称

varchar(200)

picture

收藏图片

varchar(200)

type

类型(1:收藏,21:赞,22:踩)

varchar(200)

inteltype

推荐类型

varchar(200)

表4.9 管理员表

字段

注释

类型

id (主键)

主键

bigint(20)

username

用户名

varchar(100)

password

密码

varchar(100)

role

角色

varchar(100)

addtime

新增时间

timestamp

表4.10 选课信息表

字段

注释

类型

id (主键)

主键

bigint(20)

addtime

创建时间

timestamp

kechengmingcheng

课程名称

varchar(200)

kechengleixing

课程类型

varchar(200)

gonghao

工号

varchar(200)

jiaoshixingming

教师姓名

varchar(200)

renshu

人数

int(11)

xuankeshuoming

选课说明

varchar(200)

caozuoshijian

操作时间

datetime

xuehao

学号

varchar(200)

xingming

姓名

varchar(200)

表4.11 学生表

字段

注释

类型

id (主键)

主键

bigint(20)

addtime

创建时间

timestamp

xuehao

学号

varchar(200)

mima

密码

varchar(200)

xingming

姓名

varchar(200)

xingbie

性别

varchar(200)

touxiang

头像

varchar(200)

xueyuan

学院

varchar(200)

zhuanye

专业

varchar(200)

shouji

手机

varchar(200)


5 系统实现

编程人员在搭建的开发环境中,会让各种编程技术一起呈现出最终效果。本节就展示关键部分的页面效果。

5.1 管理员功能实现

5.1.1 教师管理

图5.1 即为编码实现的教师管理界面,管理员对教师的基础信息包括电话,职称,学院等信息进行更改,查询,在本界面删除需要删除的教师信息。

图5.1 教师管理界面

5.1.2 课程信息管理

图5.2 即为编码实现的课程信息管理界面,管理员查看课程评论,该课程评论是学生评论的信息,管理员除了可以添加课程外,也能更改课程信息。

图5.2 课程信息管理界面

5.1.3 学生管理

图5.3 即为编码实现的学生管理界面,管理员对学生的学院,专业,手机,姓名等进行更改,可以登记新的学生信息,可以删除学生。

图5.3 学生管理界面

5.2 教师功能实现

5.2.1 选课信息管理

图5.4 即为编码实现的选课信息管理界面,学生选择教师发布的课程,那么该选课信息需要对应教师来管理,教师除了对选课信息查询外,也能删除选课信息。

图5.4 选课信息管理界面

主要代码

/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,XuankexinxiEntity xuankexinxi, HttpServletRequest request){String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("jiaoshi")) {xuankexinxi.setGonghao((String)request.getSession().getAttribute("username"));}if(tableName.equals("xuesheng")) {xuankexinxi.setXuehao((String)request.getSession().getAttribute("username"));}EntityWrapper<XuankexinxiEntity> ew = new EntityWrapper<XuankexinxiEntity>();PageUtils page = xuankexinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xuankexinxi), params), params));request.setAttribute("data", page);return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,XuankexinxiEntity xuankexinxi, HttpServletRequest request){EntityWrapper<XuankexinxiEntity> ew = new EntityWrapper<XuankexinxiEntity>();PageUtils page = xuankexinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, xuankexinxi), params), params));request.setAttribute("data", page);return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( XuankexinxiEntity xuankexinxi){EntityWrapper<XuankexinxiEntity> ew = new EntityWrapper<XuankexinxiEntity>();ew.allEq(MPUtil.allEQMapPre( xuankexinxi, "xuankexinxi")); return R.ok().put("data", xuankexinxiService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(XuankexinxiEntity xuankexinxi){EntityWrapper< XuankexinxiEntity> ew = new EntityWrapper< XuankexinxiEntity>();ew.allEq(MPUtil.allEQMapPre( xuankexinxi, "xuankexinxi")); XuankexinxiView xuankexinxiView =  xuankexinxiService.selectView(ew);return R.ok("查询选课信息成功").put("data", xuankexinxiView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){XuankexinxiEntity xuankexinxi = xuankexinxiService.selectById(id);return R.ok().put("data", xuankexinxi);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){XuankexinxiEntity xuankexinxi = xuankexinxiService.selectById(id);return R.ok().put("data", xuankexinxi);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody XuankexinxiEntity xuankexinxi, HttpServletRequest request){xuankexinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(xuankexinxi);xuankexinxiService.insert(xuankexinxi);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody XuankexinxiEntity xuankexinxi, HttpServletRequest request){xuankexinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(xuankexinxi);xuankexinxiService.insert(xuankexinxi);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody XuankexinxiEntity xuankexinxi, HttpServletRequest request){//ValidatorUtils.validateEntity(xuankexinxi);xuankexinxiService.updateById(xuankexinxi);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){xuankexinxiService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<XuankexinxiEntity> wrapper = new EntityWrapper<XuankexinxiEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}String tableName = request.getSession().getAttribute("tableName").toString();if(tableName.equals("jiaoshi")) {wrapper.eq("gonghao", (String)request.getSession().getAttribute("username"));}if(tableName.equals("xuesheng")) {wrapper.eq("xuehao", (String)request.getSession().getAttribute("username"));}int count = xuankexinxiService.selectCount(wrapper);return R.ok().put("count", count);}

5.2.2 添加课表

图5.5 即为编码实现的添加课表界面,课表信息包括了班级,日期,名称等信息,课表信息需要教师进行登记。

图5.5 添加课表界面

5.2.3 成绩信息统计

图5.6 即为编码实现的成绩信息统计界面,教师需要对学生的选课课程进行成绩登记,并统计学生成绩。

图5.6 成绩信息统计界面

大家点赞、收藏、关注、评论啦  其他的定制服务  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

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

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

相关文章

LDA 线性分类

线性判别分析是一种经典的线性分类方法&#xff0c;将高维空间投射到低维空间&#xff0c;如下图。 LDA 的目标就是简单累内距离变小&#xff0c;把类间的距离变大&#xff0c;这样就可以把相似的数据聚集在一起。 u1 和 u2 类间距离&#xff0c;S1、S2 为类内数据点之间的距…

智能离线语音识别不灵敏?如何改善和提升识别率?

前言 有用户反馈离线语音识别不灵敏&#xff0c;跟着笔者一起分析原因吧。笔者知识能力有限&#xff0c;难免会误&#xff0c;还请大家批评指正。 1 影响离线语音识别的因素 笔者分析离线语音识别不灵敏的原因有以下几点 1.1 运行硬件的算力限制 由于离线语音识别在本地MCU…

贪心算法---java---黑马

贪心算法 1)Greedy algorithm 称之为贪心算法或者贪婪算法&#xff0c;核心思想是 将寻找最优解的问题分为若干个步骤每一步骤都采用贪心原则&#xff0c;选取当前最优解因为未考虑所有可能&#xff0c;局部最优的堆叠不一定得到最终解最优 贪心算法例子 Dijkstra while …

使用Docker Compose搭建多服务应用

使用Docker Compose搭建多服务应用 Docker Compose简介 安装Docker Compose 在Linux上安装Docker Compose 在macOS上安装Docker Compose 在Windows上安装Docker Compose 创建项目结构 Flask应用 安装依赖 Dockerfile 配置Docker Compose 构建和运行应用 访问应用 高级配置 环…

【教程】Git 标准工作流

前言 Git 是日常开发中常用的版本控制工具&#xff0c;配合代码托管仓库&#xff08;如&#xff0c;Github&#xff0c;GitLab&#xff0c;Gitee 等&#xff09;用来实现多人多版本的协作开发。 但是 Git 的命令纷繁复杂&#xff0c;多如累卵&#xff0c;不可能也不需要全部搞…

Vue 3 Vite 项目打包优化:自动删除指定文件的方法

程序员必备宝典https://tmxkj.top/#/ 在 Vue 3 项目中&#xff0c;如果你需要在打包之前删除指定的文件&#xff0c;可以使用 Node.js 的 fs 模块来实现。这可以通过在 vue.config.js 文件中配置一个自定义的 Webpack 插件来完成。 1.安装必要的依赖&#xff08;如果还没…

前端通过nginx部署一个本地服务的方法

前端通过nginx部署一个本地服务的方法&#xff1a; 1.下载ngnix nginx 下载完成后解压缩后运行nginx.exe文件 2.打包你的前端项目文件 yarn build 把生成的dist文件复制出来&#xff0c;替换到nginx的html文件下 3.配置conf目录的nginx.conf文件 主要配置server监听 ser…

【网络面试篇】TCP与UDP类

目录 一、综述 1. TCP与UDP的概念 2. 特点 3. 区别 4. 对应的使用场景 二、补充 1. 基础概念 &#xff08;1&#xff09;面向连接 &#xff08;2&#xff09;可靠的 &#xff08;3&#xff09;字节流 2. 相关问题 &#xff08;1&#xff09;TCP 和 UDP 可以同时绑定…

【触想智能】工业平板电脑在智能教育设备上的应用优势分析

随着科技的快速发展&#xff0c;智能教育设备成为现代教育领域的新宠。其中&#xff0c;工业平板电脑作为一种重要的智能教育设备&#xff0c;正逐渐在教育领域得到广泛应用。 工业平板电脑在智能教育设备上的应用具有以下几个优势。 1、工业平板电脑具备便携性。相比传统的教学…

java项目之协力服装厂服装生产管理系统的设计与实现(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的协力服装厂服装生产管理系统的设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; …

C语言之写一个修改数组内容的函数

问题代码: 函数ltrim是为了消除buf字符数组中左边空格&#xff0c; memmove函数介绍 如果对c语言指针运用非常熟练的人,结合函数功能就会发现这个代码非常的傻逼&#xff0c;你会发现为什么需要返回&#xff0c;buf不用接收返回值&#xff0c;执行这个函数后buf中的内容就已经…

基于SSM+VUE宠物医院后台管理系统JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统&#xff1a;Window操作系统 2、开发工具&#xff1a;IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

Cisco Packet Tracer 8.0 路由器静态路由配置

文章目录 静态路由简介一、定义与特点二、配置与命令三、优点与缺点四、应用场景 一&#xff0c;搭建拓扑图二&#xff0c;配置pc IP地址三&#xff0c;pc0 ping pc1 timeout四&#xff0c;配置路由器Router0五&#xff0c;配置路由器Router1六&#xff0c;测试 静态路由简介 …

MPSK(BPSK/QPSK/8PSK)调制解调的Matlab仿真全套

一、概述 MPSK(BPSK、QPSK、8PSK)等是常用的相位调制方式,本文对数据获取、比特流组织、基带调制、上变频发送、添加噪声、接收下变频、基带解调、数据还原等过程进行仿真。 模块化、通用化设计,将函数分为(1)数据读取转比特流;(2)基带调制【参数控制调制类型】;(…

Python-创建并调用自定义文件中的模块/函数

背景&#xff1a;在Python编程中&#xff0c;我们常常需要创建自己的专属文件&#xff0c;以便帮助我们更高效&#xff0c;快捷地完成任务。那么在Python中我们怎么创建并调用自己文件中的模块/函数呢? 在Python中调用自定义文件&#xff0c;通常是指调用自己编写的Python模块…

基于STM32的智能窗帘控制系统设计

引言 本项目将基于STM32微控制器设计一个智能窗帘控制系统&#xff0c;用户可以通过按钮或遥控器控制窗帘的开关&#xff0c;并且系统能够根据光照强度自动调节窗帘的开合状态。该项目展示了STM32微控制器在家居自动化中的应用&#xff0c;以及与光照传感器、直流电机和红外接…

鸿蒙ArkTS中的image组件

开发文档很详尽&#xff0c;就在DevEco中的API参考&#xff0c;可以随时调出来进行学习。 在鸿蒙官网也有非常详尽的资料&#xff0c;地址&#xff1a;开发说明-API参考概述 - 华为HarmonyOS开发者 (huawei.com) 这里&#xff0c;就学习image组件的一般用法以及使用SVG图标和字…

opencv 图像预处理

图像预处理 ​ 在计算机视觉和图像处理领域&#xff0c;图像预处理是一个重要的步骤&#xff0c;它能够提高后续处理&#xff08;如特征提取、目标检测等&#xff09;的准确性和效率。OpenCV 提供了许多图像预处理的函数和方法&#xff0c;以下是一些常见的图像预处理操作&…

kafka里的consumer 是推还是拉?

大家好&#xff0c;我是锋哥。今天分享关于【kafka里的consumer 是推还是拉&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; kafka里的consumer 是推还是拉&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中&#xff0c;消费者&…

第7章 利用CSS和多媒体美化页面作业

2.用表格布局页面&#xff0c;利用CSS技术&#xff0c;及添加多媒体&#xff0c;制作并美化“心灵之音”页面。 浏览效果如下&#xff1a; 实例代码如下&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>心灵…