MySQL课程设计——简易学生信息管理系统
作者:mmseoamin日期:2023-12-27

学生信息管理系统

  • 一 分析
    • 1.1 系统需求分析
      • 1.1.1 业务分析
      • 1.1.2 分析系统
      • 1.2 功能模块
        • 1.2.1 学生模块
        • 1.2.2 教师模块
        • 二 构建模型
          • 2.1 概念模型:ERP模型
          • 2.2 数据模型:设计表格
            • 2.2.1 将ERP模型转化为关系模式
            • 2.2.2 设计表格
            • 三 创建表格
              • 3.1 学生表创建
              • 3.2 教师表创建
              • 3.3 课程表创建
              • 3.4 成绩表创建
              • 3.5 住宿表创建
              • 3.6 职位表创建
              • 四 插入数据
                • 4.1 学生表数据添加
                • 4.2 教师表数据添加
                • 4.3 课程表数据添加
                • 4.4 成绩表数据添加
                • 4.5 住宿表数据添加
                • 4.6 职位表数据添加
                • 五 维护数据
                  • 5.1 查询学生所有信息
                  • 5.2 查询老师所有信息
                  • 5.3 查询选课了Java科目的学生信息
                  • 5.4 对应科目的老师信息
                  • 5.5 查询学号为102的学生选择Python课程
                  • 5.6 查询年龄大于20岁的学生信息

                    一 分析

                    1.1 系统需求分析

                    1.1.1 业务分析

                    学生信息管理系统时面向学生和学校教师的一个多功能数据管理平台。

                    1.1.2 分析系统

                    本系统所设计到的用户有学校在校学生、教师,对于不同的用户系统所提供给的功能也有所不同,其中对于学生来说,学生可以通过该系统进行学生基本信息查询、考试成绩查询、选修课程查询、住宿基本信息查询,修改自身部分基本信息,教师可以通过该系统实现对自身数据查询、学生成绩管理等。

                    1.2 功能模块

                    1.2.1 学生模块

                    学生是整个系统的使用者,学生可以通过该系统进行学生基本信息查询、考试成绩查询、选修课程查询、住宿基本信息查询,修改自身部分基本信息。

                    1.2.2 教师模块

                    教师是整个系统的使用者,教师可以通过该系统实现对自身数据查询、学生成绩管理等,修改自身部分基本信息。

                    二 构建模型

                    2.1 概念模型:ERP模型

                    学生信息管理系统是学生信息进行一体化管理的系统,它提供了学生学生基本信息管理、课程管理、成绩管理、住宿基本信息管理的功能,因此本系统所对应的实体就有学生、教师、课程、成绩、住宿,该系统的E-R图如下图所示。

                    MySQL课程设计——简易学生信息管理系统,在这里插入图片描述,第1张

                    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 学生表创建

                    在这create table student
                    (
                    ​    stu_id  int(14) not null primary key auto_increment comment '学生表主键',
                    ​    stu_name  varchar(12) comment '学生姓名',
                    ​    stu_age  int(2) comment '学生年龄',
                    ​    stu_department  varchar(10) comment '所在院系',
                    ​    stu_major  varchar(10) comment '学生专业',
                    ​    address  varchar(255) comment '学生住址'
                    ) character set utf8;
                    

                    3.2 教师表创建

                    create table teacher
                    (
                    ​    t_id  int(16) not null primary key auto_increment comment '教师表主键',
                    ​    t_name  varchar(12) comment '教师姓名',
                    ​    t_age  int(2) comment '教师年龄',
                    ​    p_id  int(16) comment '职位编号',
                    ​    course_id  int(16) comment '课程编号'
                    ) character set utf8;
                    

                    3.3 课程表创建

                    create table course
                    (
                    ​    c_id  int(16) not null primary key auto_increment comment '课程表主键',
                    ​    c_name  varchar(12) comment '课程名称',
                    ​    start_time  date comment '开始时间',
                    ​    end_time  date comment '结束时间'
                    ) character set utf8;
                    

                    3.4 成绩表创建

                    create table score
                    (
                    ​    score_id  int(16) not null primary key auto_increment comment '创建表主键',
                    ​    s_id  int(16) comment '学生学号',
                    ​    c_id  int(16) comment '课程编号',
                    ​    c_name  varchar(12) comment '课程名称',
                    ​    score  int(3) comment '课程成绩'
                    ) character set utf8;
                    

                    3.5 住宿表创建

                    create table apartment
                    (
                    ​    apartment_id  int(16) not null primary key auto_increment comment '住宿表主键',
                    ​    apartment_name  varchar(12) comment '公寓名称',
                    ​    apartment_campus  varchar(8) comment '公寓校区',
                    ​    apartment_floor  int(2) comment '公寓楼层'
                    ) character set utf8;
                    

                    3.6 职位表创建

                    create table position
                    (
                    ​    position_id  int(16) not null primary key auto_increment comment '职位表主键',
                    ​    position_name  varchar(12) comment '职位名称'
                    ) character set utf8;
                    

                    四 插入数据

                    4.1 学生表数据添加

                    INSERT INTO student (stu_id, stu_name, stu_age, stu_department, stu_major, address)
                    VALUES (101, '张三', 18, '计算机', '软件工程', '湖北武汉'),
                    ​        (102, '李四', 21, '文新', '汉语言', '湖南长沙')
                    

                    4.2 教师表数据添加

                    INSERT INTO teacher (t_id, t_name, t_age, p_id, course_id)
                    VALUES (201, '张三', 31, 601, 301),
                    ​       (202, '李四', 32, 602, 602)
                    

                    4.3 课程表数据添加

                    INSERT INTO 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 成绩表数据添加

                    INSERT INTO score (score_id, s_id, c_id, c_name, score)
                    VALUES (401, 101, 301, 'Java', 95),
                    ​       (402, 102, 302, 'Python', 87)
                    

                    4.5 住宿表数据添加

                    INSERT INTO apartment (apartment_id, apartment_name, 
                    apartment_campus, apartment_floor)
                    VALUES (501, '楷苑', '龙山校区', 6),
                    ​       (502, '桃苑', '龙山校区', 12);
                    

                    4.6 职位表数据添加

                    INSERT INTO position (position_id, position_name)
                    VALUES (601, '讲师'),
                    ​       (602, '教授')
                    

                    五 维护数据

                    5.1 查询学生所有信息

                    select * from student;
                    

                    MySQL课程设计——简易学生信息管理系统,在这里插入图片描述,第2张

                    5.2 查询老师所有信息

                    select * from teacher;
                    

                    MySQL课程设计——简易学生信息管理系统,在这里插入图片描述,第3张

                    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';
                    

                    MySQL课程设计——简易学生信息管理系统,在这里插入图片描述,第4张

                    5.4 对应科目的老师信息

                    select t.*, c.c_id, c.c_name
                    from teacher t
                    ​         join course c on t.course_id = c.c_id;
                    

                    MySQL课程设计——简易学生信息管理系统,在这里插入图片描述,第5张

                    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 = 102
                      and c.c_name = 'Python';
                    

                    MySQL课程设计——简易学生信息管理系统,在这里插入图片描述,第6张

                    5.6 查询年龄大于20岁的学生信息

                    select *
                    from student
                    where stu_age > 20;
                    

                    MySQL课程设计——简易学生信息管理系统,在这里插入图片描述,第7张