当前位置: 首页 > article >正文

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.kler.cn/a/376990.html

相关文章:

  • 【深度学习】深度(Deep Learning)学习基础
  • 比较procfs 、 sysctl和Netlink
  • 【单片机】实现一个简单的ADC滤波器
  • 2025新春烟花代码(二)HTML5实现孔明灯和烟花效果
  • 高山旅游景区有效降低成本,无人机山下到山上物资吊运技术详解
  • Mysql 性能优化:索引条件下推(ICP)
  • 如何将MySQL彻底卸载干净
  • 【MySQL】 运维篇—故障排除与性能调优:常见故障的排查与解决
  • STM32之串口字库更新
  • 安装双系统后ubuntu无法联网(没有wifi标识)网卡驱动为RTL8852BE
  • clickhouse运维篇(三):生产环境一键生成配置并快速部署ck集群
  • HTML 基础标签——元数据标签 <meta>
  • vue路由两种数据类型引用
  • vue3中使用mqtt数据传输(封装)
  • 使用Postman进行API测试
  • 论文翻译 | Ignore Previous Prompt: Attack Techniques For Language Models
  • 【OD-支持在线评测】周末爬山(200分)
  • 移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (2) - 移植 nanovg
  • 《深入浅出HTTPS​​​​》读书笔记(4):密码学
  • Flutter报错信息Unhandled Exception: Binding has not yet been initialized.
  • Facebook直播按钮缺失现象的深入分析
  • expand,None索引,permute【pytorch】
  • 数据结构之——选择树
  • leetcode hot100【LeetCode 322. 零钱兑换】java实现
  • Linux下Nginx的安装与使用
  • 红队-shodan搜索引擎篇