当前位置:   article > 正文

数据库课程设计(学生成绩管理系统)_学生成绩管理系统物理结构设计

学生成绩管理系统物理结构设计

一、小组成员

丁伊灵,王馨阳,李怡,崔力娅

具体分工:

选题与需求分析:丁伊灵

系统分析与系统设计:李怡

系统实现与系统调试:王馨阳(主要负责),丁伊灵,李怡,崔力娅

系统验收与答辩:崔力娅


二、选题概要

需求描述:

我们打算设计一款学生成绩管理系统,它是一个集成化的信息管理平台,致力于简化学校教务管理,提升运营效能。系统采用vscode作为前端,java作为后端,数据库基础为MySQL,确保数据的高效存储和处理。系统功能丰富,包括成绩监控、用户资料管理、账户权限控制以及课程管理等模块,服务于学生、教师和行政人员,满足他们的不同需求。

功能描述:

2.1 成绩管理:
  • 设计用户友好的界面,支持批量成绩录入和数据校验,确保数据准确性。

  • 提供多种查询和统计方式,如按学生、课程、班级等维度查询成绩,并支持图表展示,方便教师和学生进行成绩跟踪和分析。

  • 支持不同格式的成绩导出,如Excel、PDF等,同时提供自定义导出选项,满足用户个性化需求。

2.2 用户信息管理:
  • 学生、教师和管理员可注册和登录系统,进行账户管理。
  • 用户可以修改个人信息,如密码和联系方式,确保账户信息的更新。
2.3 账号管理:
  • 管理员能在系统中创建学生、教师和管理员账号。

  •  管理员能编辑用户账号信息,包括用户名、密码等。

  • 管理员能在系统中删除用户账号,确保系统账户信息管理的及时性。

2.4专业管理:
  • 管理员可以管理学校的各个专业信息,包括专业名称、专业课程等,确保专业信息的准确性和完整性。
  • 根据各个专业的要求,系统生成对应专业课程规划表,帮助学生合理安排学习计划,并提供选课建议。
  • 提供专业学生人数、学分完成情况等统计分析功能,为学校管理层提供专业发展的数据支持和决策参考。
2.5 课程管理:
  • 教师和管理员可以添加和管理课程,包括课程名称、学分和上课时间等。
  • 学生能通过系统选择或退选课程,课程表的安排因此保持灵活。
  • 除了课程名称、学分和上课时间,还可以包括教师信息、课程编号等详细信息,提供给学生更全面的了解。

三、 系统设计

3.1 系统功能设计

该学生成绩管理系统将分为以下6个部分进行功能设计:

(1)用户登录:用户可以使用学号(学生)、工号(教师)、管理员账号和密码进行登录。

在登陆界面,设置了用户身份验证模式,一旦用户输入与数据库中不符的信息,系统将给出提示信息,以保证该系统的安全性。

(2)主页:展示登录用户姓名、学校等相关基本信息。

(3)成绩管理:学生可以查看个人成绩;教师可以查看和录入学生成绩;管理员可以管理学生成绩信息。

(4)课程管理:学生可以查看可选课程以及个人课表;教师可以查看自己教授的课程和选课学生信息;管理员可以查看和录入课程信息。

(5)用户管理:学生可以查看个人信息,修改密码;教师可以查看个人信息,修改密码;管理员可以管理所有用户信息。

(6)账号管理:管理员可以创建和管理学生、教师的账号。

3.2 数据库设计
3.2.1数据库概念结构设计

局部E-R图

 

全局E-R图

3.2.2 数据库逻辑结构设计 

注:有下划线的为主码,划在字上的为外码

(1)管理员(登录用户名密码姓名,性别,学校,邮箱,联系电话);

CREATE TABLE Admin (

    username VARCHAR(50) PRIMARY KEY,

    password VARCHAR(50) NOT NULL,

    name VARCHAR(50) NOT NULL,

    gender CHAR(1),

    school VARCHAR(100),

    email VARCHAR(100),

    phone VARCHAR(15)

);

(2)学生(学号,密码,姓名,学校,性别,邮箱,联系电话,班级,专业,入学年份);

CREATE TABLE Student (

    student_id VARCHAR(20) PRIMARY KEY,

    password VARCHAR(50) NOT NULL,

    name VARCHAR(50) NOT NULL,

    school VARCHAR(100),

    gender CHAR(1),

    email VARCHAR(100),

    phone VARCHAR(15),

    class VARCHAR(50),

    major_id VARCHAR(20),

enrollment_year YEAR               

FOREIGN KEY (major_id)REFERENCES Major(major_id);

);

(3)教师(工号,密码,姓名,学校,性别邮箱,联系电话,专业名级别);

CREATE TABLE Teacher (

    teacher_id VARCHAR(20) PRIMARY KEY,

    password VARCHAR(50) NOT NULL,

    name VARCHAR(50) NOT NULL,

    school VARCHAR(100),

    gender CHAR(1),

    email VARCHAR(100),

    phone VARCHAR(15),

    major_name VARCHAR(50),

level VARCHAR(20),

FOREIGN KEY (major_name)REFERENCES Major(major_name)

);

(4)课程(课程号专业分,课时,学期,类型,课程名,分数);

CREATE TABLE Course (

    course_id VARCHAR(20) PRIMARY KEY,

    major_id VARCHAR(20),

    credits INT,

    hours INT,

    semester VARCHAR(20),

    type VARCHAR(20),

    course_name VARCHAR(100),

score DECIMAL(5, 2),

FOREIGN KEY (major_id)REFERENCES Major(major_id)

);

(5)学生课表,课程专业号,学分,课程类型课程名,学期,日期);

CREATE TABLE StudentSchedule (

    student_id VARCHAR(20),

    course_id VARCHAR(20),

    major_id VARCHAR(20),

    credits INT,

    course_type VARCHAR(20),

    course_name VARCHAR(100),

    semester VARCHAR(20),

    date DATE,

PRIMARY KEY (student_id, course_id),

FOREIGN KEY (studentr_id)REFERENCES Student(student_id),

FOREIGN KEY (course_id)REFERENCES Major(course_id),

FOREIGN KEY (major_id)REFERENCES Major(major_id)

);

(6)专业表(专业号,专业名,专业课程,学生人数,要求总学分数);

CREATE TABLE Major (

    major_id VARCHAR(20) PRIMARY KEY,

    major_name VARCHAR(100),

    major_courses TEXT,

    student_count INT,

    total_required_credits INT

);

(7)成绩表学号,课程号,课程名,分数)

CREATE TABLE Grade (

    student_id VARCHAR(20),

    course_id VARCHAR(20),

    course_name VARCHAR(100),

    score DECIMAL(5, 2),

PRIMARY KEY (student_id, course_id)FOREIGN KEY (studentr_id),

FOREIGN KEY (course_id)REFERENCES Major(course_id),

);

3.2.3数据库物理结构设计
1、建立索引

有助于唯一性检查和完整性检查,而且可以加快连接查询的速度。

(1)学生表索引:

CREATE INDEX idx_student_major_id ON Student(major_id);

CREATE INDEX idx_student_enrollment_year ON Student(enrollment_year);

(2)教师表索引

CREATE INDEX idx_teacher_major_name ON Teacher(major_name);

(3)课程表索引

CREATE INDEX idx_course_major_id ON Course(major_id);

(4)学生课表索引

CREATE INDEX idx_schedule_student_id ON StudentSchedule(student_id);

CREATE INDEX idx_schedule_course_id ON StudentSchedule(course_id);

(5)成绩表索引

CREATE INDEX idx_grade_student_id ON Grade(student_id);

CREATE INDEX idx_grade_course_id ON Grade(course_id);

2、建立触发器

(1)学生表中加入触发器

CREATE TRIGGER trg_after_student_insert

AFTER INSERT ON Student

FOR EACH ROW

BEGIN

    UPDATE Major SET student_count = student_count + 1 WHERE major_id = NEW.major_id;

END;

(2)学生表中删除触发器

CREATE TRIGGER trg_after_student_delete

AFTER DELETE ON Student

FOR EACH ROW

BEGIN

    UPDATE Major SET student_count = student_count - 1 WHERE major_id = OLD.major_id;

END;

(3)成绩表插入触发器

CREATE TRIGGER trg_after_grade_insert

AFTER INSERT ON Grade

FOR EACH ROW

BEGIN

    UPDATE Course SET score = (SELECT AVG(score) FROM Grade WHERE course_id = NEW.course_id) WHERE course_id = NEW.course_id;

END;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/771201
推荐阅读
相关标签
  

闽ICP备14008679号