学生信息管理系统
一 分析
1.1 系统需求分析
1.1.1 业务分析
学生信息管理系统时面向学生和学校教师的一个多功能数据管理平台。
1.1.2 分析系统
本系统所设计到的用户有学校在校学生、教师,对于不同的用户系统所提供给的功能也有所不同,其中对于学生来说,学生可以通过该系统进行学生基本信息查询、考试成绩查询、选修课程查询、住宿基本信息查询,修改自身部分基本信息,教师可以通过该系统实现对自身数据查询、学生成绩管理等。
1.2 功能模块
1.2.1 学生模块
学生是整个系统的使用者,学生可以通过该系统进行学生基本信息查询、考试成绩查询、选修课程查询、住宿基本信息查询,修改自身部分基本信息。
1.2.2 教师模块
教师是整个系统的使用者,教师可以通过该系统实现对自身数据查询、学生成绩管理等,修改自身部分基本信息。
二 构建模型
2.1 概念模型:ERP模型
学生信息管理系统是学生信息进行一体化管理的系统,它提供了学生学生基本信息管理、课程管理、成绩管理、住宿基本信息管理的功能,因此本系统所对应的实体就有学生、教师、课程、成绩、住宿,该系统的E-R图如下图所示。
2.2 数据模型:设计表格
2.2.1 将ERP模型转化为关系模式
按照将E-R图转换为关系模式的规则,将上图所示E-R图转换,得到的关系模式为:
学生(学号,姓名,年龄,院系,专业,住址)
教师(教师编号,教师姓名,教师年龄,教师职位,课程编号)
课程(课程编号,课程名称,开始时间,结束时间)
成绩(成绩编号,学生学号,课程编号,课程名称,学生成绩)
住宿(公寓编号,公寓名称,公寓校区,公寓楼层)
对上述关系模式进行以下优化。“教师”关系中的“教师职位”会出现大量的数据冗余,为了更好体现教师职位和教师之间的关联关系,可以进行拆分成一个职位表;可分出一个“职位”关系,包含“职位编号”和“职位名称”等属性,将“教师”关系中的“教师职位”属性改为“职位编号”。优化后的关系模式为:
学生(学号,姓名,年龄,院系,专业,住址)
教师(教师编号,教师姓名,教师年龄,职位编号,课程编号)
课程(课程编号,课程名称,开始时间,结束时间)
成绩(成绩编号,学生学号,课程编号,课程名称,学生成绩)
住宿(公寓编号,公寓名称,公寓校区,公寓楼层)
职位(职位编号,职位名称)
2.2.2 设计表格
(1)学生实体(学生学号,学生姓名,学生年龄,所在院系,学生专业,学生住址)用于记录保存系统使用用户(学生)的基本信息;该表设计如表2.1所示。
2.1 学生表
字段名数据类型长度是否主键说明stu_idint14是学生表主键stu_namevarchar12否学生姓名stu_ageint2否学生年龄stu_departmentvarcahr10否所在院系stu_majorvarcahr10否学生专业addressvarcahr255否学生住址
(2)教师实体(教师编号,教师姓名,教师年龄,职位编号,课程编号)用于记录保存系统使用用户(教师)的基本信息;该表设计如表2.2所示。
2.2 教师表
字段名数据类型长度是否主键说明t_idint16是教师表主键t_namevarchar12否教师姓名t_ageint2否教师年龄p_idint16否职位编号course_idint16否课程编号
(3)课程实体(课程编号,课程名称,开始时间,结束时间)用于记录保存系统使用用户(学生)的课程信息;该表设计如表2.3所示。
2.3 课程表
字段名数据类型长度是否主键说明c_idint16是课程表主键c_namevarchar12否课程名称start_timedate否开始时间end_timedate否结束时间
(4)成绩实体(成绩编号,学生学号,课程编号,课程名称,学生成绩)用于记录保存系统使用用户(学生)的成绩信息;该表设计如表2.4所示。
2.4 成绩表
字段名数据类型长度是否主键说明score_idint16是成绩表主键s_idint16否学生学号c_idint16否课程编号c_namevarchar12否课程名称scoreint3否课程成绩
(5)住宿实体(公寓编号,公寓名称,公寓校区,公寓楼层)用于记录保存系统使用用户(学生)的住宿信息;该表设计如表2.5所示。
2.5 住宿表
字段名数据类型长度是否主键说明apartment_idint16是住宿表主键apartment_namevarchar12否公寓名称apartment_campusvarchar8否公寓校区apartment_floorint2否公寓楼层
(6)职位实体(职位编号,职位名称)用于记录保存系统使用用户(教师)的职位信息;该表设计如表2.6所示。
2.6 职位表
字段名数据类型长度是否主键说明position_idint16是职位表主键position_namevarchar12否职位名称
三 创建表格
3.1 学生表创建
在这createtable student
(
stu_id int(14)notnullprimarykeyauto_incrementcomment'学生表主键',
stu_name varchar(12)comment'学生姓名',
stu_age int(2)comment'学生年龄',
stu_department varchar(10)comment'所在院系',
stu_major varchar(10)comment'学生专业',
address varchar(255)comment'学生住址')characterset utf8;
3.2 教师表创建
createtable teacher
(
t_id int(16)notnullprimarykeyauto_incrementcomment'教师表主键',
t_name varchar(12)comment'教师姓名',
t_age int(2)comment'教师年龄',
p_id int(16)comment'职位编号',
course_id int(16)comment'课程编号')characterset utf8;
3.3 课程表创建
createtable course
(
c_id int(16)notnullprimarykeyauto_incrementcomment'课程表主键',
c_name varchar(12)comment'课程名称',
start_time datecomment'开始时间',
end_time datecomment'结束时间')characterset utf8;
3.4 成绩表创建
createtable score
(
score_id int(16)notnullprimarykeyauto_incrementcomment'创建表主键',
s_id int(16)comment'学生学号',
c_id int(16)comment'课程编号',
c_name varchar(12)comment'课程名称',
score int(3)comment'课程成绩')characterset utf8;
3.5 住宿表创建
createtable apartment
(
apartment_id int(16)notnullprimarykeyauto_incrementcomment'住宿表主键',
apartment_name varchar(12)comment'公寓名称',
apartment_campus varchar(8)comment'公寓校区',
apartment_floor int(2)comment'公寓楼层')characterset utf8;
3.6 职位表创建
createtable position
(
position_id int(16)notnullprimarykeyauto_incrementcomment'职位表主键',
position_name varchar(12)comment'职位名称')characterset utf8;
四 插入数据
4.1 学生表数据添加
INSERTINTO student (stu_id, stu_name, stu_age, stu_department, stu_major, address)VALUES(101,'张三',18,'计算机','软件工程','湖北武汉'),
(102,'李四',21,'文新','汉语言','湖南长沙')
4.2 教师表数据添加
INSERTINTO teacher (t_id, t_name, t_age, p_id, course_id)VALUES(201,'张三',31,601,301),
(202,'李四',32,602,602)
4.3 课程表数据添加
INSERTINTO course (c_id, c_name, start_time, end_time)VALUES(301,'Java','2022-03-15','2022-06-15'),
(302,'Python','2021-09-16','2021-12-16')
4.4 成绩表数据添加
INSERTINTO score (score_id, s_id, c_id, c_name, score)VALUES(401,101,301,'Java',95),
(402,102,302,'Python',87)
4.5 住宿表数据添加
INSERTINTO apartment (apartment_id, apartment_name,
apartment_campus, apartment_floor)VALUES(501,'楷苑','龙山校区',6),
(502,'桃苑','龙山校区',12);
4.6 职位表数据添加
INSERTINTO position (position_id, position_name)VALUES(601,'讲师'),
(602,'教授')
五 维护数据
5.1 查询学生所有信息
select*from student;
5.2 查询老师所有信息
select*from teacher;
5.3 查询选课了Java科目的学生信息
select s.*,sc.score,c.c_name
from student s
join score sc on s.stu_id = sc.s_id
join course c on sc.c_id = c.c_id where c.c_name='Java';
5.4 对应科目的老师信息
select t.*, c.c_id, c.c_name
from teacher t
join course c on t.course_id = c.c_id;
5.5 查询学号为102的学生选择Python课程
select s.*, c.c_name
from student s
join score sc on s.stu_id = sc.s_id
join course c on sc.c_id = c.c_id
where s.stu_id =102and c.c_name ='Python';
5.6 查询年龄大于20岁的学生信息
select*from student
where stu_age >20;
版权归原作者 Fireloli7 所有, 如有侵权,请联系我们删除。