注:展示部分文档内容和系统截图,需要完整的视频、代码、文章和安装调试环境请私信up主。
4.3系统结构图
如图4-2是该系统软件的功能结构图。
4.4系统E-R图设计
E-R图(Entity-Relationship Diagram)是一种用于表示实体、属性和实体之间关系的图形化工具,常用于数据库设计和概念建模。
E-R图采用实体(Entity)、属性(Attribute)和关系(Relationship)的概念,以图形的方式描述现实世界中的信息和它们之间的关系。它是一种高级的概念模型,旨在帮助开发人员和设计师更好地理解和规划数据库系统的结构。
在E-R图中,实体表示现实世界中的独立对象或概念,如人、物、事件等。每个实体可以具有属性,描述了实体的特征或特性。属性可以是简单的(如姓名、年龄)或复杂的(如地址、电话号码)。
关系表示实体之间的关联或联系。关系可以是一对一、一对多或多对多的关系,用于描述实体之间的连接方式。关系可以具有自己的属性,称为关系属性,用于描述关系本身的特征。
通过E-R图,可以清晰地展示实体、属性和关系之间的关系,以及它们之间的基本约束。这有助于数据库设计人员了解实体之间的联系,并规划出适当的数据模型,用于存储和管理相关数据。
管理员信息实体包括:编号,用户名,密码等属性,如图4-3所示。
公告实体包括:主键,创建时间,标题,简介,发布时间,封面,内容等属性,如图4-4所示。
用户表信息实体包括:主键,创建时间,账号,密码,姓名,年龄,性别,手机等属性,如图4-5所示。
4.5数据库设计
4.5.1 设计原理
使用MySQL数据库来进行数据库的设计,主要的过程如下:
(1)确定需求:设计一个学生选课系统。系统需要存储学生,教师和课程的信息,并记录学生选修的课程。需求包括学生(教师)信息、课程信息等表以及学生选课关系。
(2)设计概念模型:根据需求,设计概念模型,表示实体、属性和它们之间的关系。我们可以使用实体关系图(ER图)来表示。
(3)转化为物理模型:将概念模型转化为物理模型,即数据库表的设计。根据实体和关系,确定表的结构、字段和约束。
(4)确定约束和索引:根据需求和性能考虑,确定表的约束和索引。例如,对于学生ID和课程ID字段,可以将其设置为唯一键,以确保数据的唯一性。
(5)设计数据类型和长度:根据实际需求和数据的特性,选择合适的数据类型和长度。例如,年龄可以选择整数类型(int)。
(6)创建表并设置关系:在MySQL数据库中,使用CREATE TABLE语句创建表,并使用FOREIGN KEY约束来设置实体之间的关系。
(7)设计索引:根据查询需求和性能优化考虑,可以为表中的某些字段创建索引。
(8)完善表结构和约束:根据具体需求,可以进一步完善表的结构和约束。
(9)进行测试和优化:在设计完表结构后,进行测试和优化是非常重要的。插入一些测试数据并执行常见的查询操作,确保表的结构和关系正确,并检查性能是否满足需求。根据测试结果,可以进行必要的优化和调整。
(10)文档化设计:最后,将数据库表的设计过程和结构文档化,记录表的结构、字段、约束、关系和索引等信息。这将有助于后续开发、维护和团队协作。
4.5.2 数据库表举例
分类表有以下描述信息。主键(id),创建时间(addtime),课程分类(category)。如表4-1所示。
表4-1分类表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
category | varchar | 200 | 课程分类 |
公告表有以下描述信息。主键(id),创建时间(addtime),标题(title),简介(description),发布时间(datetime),封面(pic),内容(content)。如表4-2所示。
表4-2公告表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
title | varchar | 200 | 标题 | ||
description | longtext | 简介 | |||
datetime | date | 发布时间 | |||
pic | varchar | 200 | 封面 | ||
content | longtext | 内容 |
用户表有以下描述信息。主键(userid),创建时间(addtime),账号(accountid),密码(password),姓名(name),年龄(age),性别(sex),手机(tel),头像(pic)。如表4-3所示。
表4-3用户表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
userid | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
accountid | varchar | 200 | 账号 | ||
password | varchar | 200 | 密码 | ||
name | varchar | 200 | 姓名 | ||
age | int | 年龄 | |||
sex | varchar | 200 | 性别 | ||
tel | varchar | 200 | 手机 | ||
pic | varchar | 200 | 头像 |
配置文件表有以下描述信息。主键(id),配置参数名称(name),配置参数值(value)。如表4-4所示。
表4-4配置文件表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
name | varchar | 100 | 配置参数名称 | ||
value | varchar | 100 | 配置参数值 |
选课信息表有以下描述信息。主键(id)创建时间(addtime)教师工号(jiaoshigonghao)教师姓名(jiaoshixingming)课程号(kechenghao)课程名称(kechengmingcheng)课程分类(kechengfenlei)课程课时(kechengkeshi)课程学分(kechengxuefen)课程日期(kechengriqi)课程节数(kechengjieshu)上课地点(shangkedidian)课程图片(kechengtupian)报名人数(kechengrenshu)选课时间(xuankeshijian)学生学号(xueshengxuehao)学生姓名(xueshengxingming)跨表用户id(crossuserid)跨表主键id(crossrefid)。如表4-5所示。
表4-5选课信息表
字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
id | bigint | 主键 | 主键 | ||
addtime | timestamp | 创建时间 | CURRENT_TIMESTAMP | ||
jiaoshigonghao | varchar | 200 | 教师工号 | ||
jiaoshixingming | varchar | 200 | 教师姓名 | ||
kechenghao | varchar | 200 | 课程号 | ||
kechengmingcheng | varchar | 200 | 课程名称 | ||
kechengfenlei | varchar | 200 | 课程分类 | ||
kechengkeshi | varchar | 200 | 课程课时 | ||
kechengxuefen | float | 课程学分 | |||
kechengriqi | varchar | 200 | 课程日期 | ||
kechengjieshu | varchar | 200 | 课程节数 | ||
shangkedidian | varchar | 200 | 上课地点 | ||
kechengtupian | longtext | 4294967295 | 课程图片 | ||
kechengrenshu | int | 报名人数 | |||
xuankeshijian | datetime | 选课时间 | |||
xueshengxuehao | varchar | 200 | 学生学号 | ||
xueshengxingming | varchar | 200 | 学生姓名 | ||
crossuserid | bigint | 跨表用户id | |||
crossrefid | bigint | 跨表主键id |
5.1.4 我的课程界面的实现
功能描述:系统用户可在我的课程界面进行已选课程的查询和退选课程操作。我的课程界面如图5-6,5-7所示。
5.2.3 课程管理界面的实现
管理员通过单击课程信息管理,进入课程管理界面即可对教师所提交的课程进行管理。如图5-12所示。
目录