数据库课程设计

   摘要:

        学生成绩管理与选课系统作为一种高效实用的现代化教学技术而被广泛使用。而数据库能够给管理系统的设计赋予可扩充性与移植性,让开发者与客户都能便捷、轻松地使用系统功能。

本项目通过前后端交互____ MySQL+HTML+CSS+PHP 的技术,解决了学生总体数据庞大难以管理的难题,实现了数据查询、分权限管理数据等功能。

该系统不仅可用于各大高校管理数据,还可为其余业务拓展提供参考,具有实用价值和进一步改良迭代应用的前景。本系统也存在更改单个功能程序繁杂、部分功能校园本地兼容不适配等问题更待改进。

关键词:  学生成绩管理与选课系统

前后端交互  MySQL+HTML+CSS+PHP


  §1.项目概述:前言

——项目的目的、意义,项目的目标,应用的领域,要解决哪些问题。

        数据库是数据管理的有效技术,是计算机科学的重要分支。今天,信息资源已成为各个部门的重要财富和资源。建立一个满足各级部门信息处理要求的行之有效的信息系统也成为一个企业或组织生存和发展的重要条件。

            Ⅰ.学生成绩管理与选课系统作为一种高效实用的现代化教学技术而被广泛使用。而数据库能够给管理系统的设计赋予可扩充性与移植性,让开发者与客户都能便捷、轻松地使用系统功能。

            Ⅱ.学生成绩管理与选课系统为学校管理中不可或缺的部分。与传统纸质教学管理方式相比,在系统下的师生数据管理工作结构化程度、数据的共享性与独立性更高,因而不管是师生使用、管理员维护、程序搬运......“数据库+”的管理方式更具有优势和前瞻性。

             Ⅲ.本实验将设计出一个学生成绩管理与选课系统,其中要解决的问题如下:

(1)系统用户由三类组成:教师、学生和管理员。(怎么设置用户权限?)

(2)管理员负责的主要功能:(怎样实现增删改查等基本操作与用户权限设定?)

            ①用户管理(老师、学生及管理员的增、删、改);

            ②课程管理(添加、删除和修改);

            ③选课管理(实现选课功能开放和禁止、老师成绩输入开放和禁止)。

(3)学生通过登录,可以查询课程的基本信息、实现选课、退课和成绩查询;

(4)老师通过登录,可以查看选课学生的基本信息,可以输入成绩。

    (如何实现不同权限用户的登录?登录后页面改如何设置?)


§2.开发环境及相关技术

               ——采用什么数据库管理系统,操作系统,开发语言及平台,框架,前端技术、后端技  术等等。

           数据库管理系统:WAMPSERVER_sever Offline MySQL console

           操作系统:Microsoft Windows11

           开发语言:Mysql(数据库语言)、HTML和CSS(WEB网页编程前端技术、

                             PHP(后端技术)

            开发平台、框架:Visual Studio Code、

                                         wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b、

                                          WAMPSERVER_sever Offline phpMyAdmin等


§3.系统需求分析

         3.1描述功能性需求

               关系描述:学校中,每个院系有多个专业,每个院系有多个老师。开设了很 多课程,一 个学生对应选择一个课程。开设管理员使用选课控制、成绩录入 控制管理整个系统

             根据关系描述,表述功能性需求

              学生成绩管理与选课系统分为三权限:学生、教师和管理员,各角色对应功能如下:

               (1)学生:选课、退课、查询选课信息、查询成绩信息;

               (2)教师:查询课程信息、查询学生选课信息、录入学生成绩;

               (3)管理员:用户管理、课程管理、选课管理

        3.2描述非功能性需求

①数据库脚本设计

目的:

  1. 便于建表后输入大量师生信息;
  2. 方便在其他服务器直接执行移植数据库;
  3. 提高数据访问的效率;
  4. 便于进行数据处理,以及对数据库的详细设计。

②三种角色的设计和分配角色的数据库对象的操作权限

③用户接口界面、web前端网页的实现

        3.3数据流图DFD

      (0)系统顶层图:根据系统主要信息的处理功能,整个系统可以看作登陆管理,用户选课管理两个部分。从而得出了学生选课管理系统的顶层图如图所示。

注: F1:用户登陆信息  F2:用户注册信息  F3:用户基本信息  F4:用户基本信息

F5:学生选课信息清单 F6:学生选课信息 F7:登陆错误信息  F8:系统反馈用户信息

F9:用户信息清单 F10:修改密码后的用户信息

    (1)数据流程图一层分解图

    (1.1)用户登陆管理用户在登陆时,系统会进行判断。用户一共有三种类型,分别是学生,教师和管理员。其中,一部分教师是管理员。在登陆的只有学生和教师两种类型,管理员的身份由系统自行判断。在判定时需要查询用户信息库。用户信息库,包括学生注册信息,教师注册信息,管理员信息等。学生选课管理系统一层分解图——登陆管理,如下图所示:

注:F2.1:学生登陆信息  F2.2:教师登陆信息  F2.3:管理员登陆信息

F7.1:用户身份信息 F7.2:修改密码的错误信息

(1.2)用户操作管理:在登陆管理进行判断后,发送学生登陆信息,教师登陆信息,管理员登陆信息的其中一种。根据用户身份信息的不同,进入不同的管理界面,相应操作的功能,权限都有所不同。如下图所示:

                注:F3.1:原始学生信息 F5.1:学生更新后的选课信息

                F6.1:学生查询的选课信息 F8.1:学生操作后返回的信息

                   注:F3.2:原始教师信息 5.2:教师更新后的选课信息

                   F6.2:教师查询的选课信息 F8.1:教师操作后返回的信息

注:F3.3:原始管理员信息F9.1更新后的用户信息F6.3:管理员查询的选课信息F8.1:管理员操作后返回的信息 F5.3:管理员更新后的选课信息

(2)数据流程图二层分解图

(2.1)学生管理:将P2.1进行分解,学生管理包括,查看选课信息和个人信息,进行选课、重新选课。学生选课管理系统二层分解图——学生管理如下图所示:

注:F3.1:学生个人信息 F5.1.1:增加后的选课信息F5.1.2: 删除后的选课信息

(2.2)教师管理:将P2.2进行分解,教师管理包括,查看选课信息和个人信息,填写学生的成绩。学生选课管理系统二层分解图——学生管理如下图所示:

注:F3.2.1:教师个人信息  F3.2.2:学生个人信息  

F5.2.2:增加后的学生成绩信息  F5.2.3:修改后的学生成绩信息

  1. 教师管理。将P2.3进行分解,管理员管理包括,
  1. 管理学生信息,包括对学生信息的查询、增加,修改,删除;
  2. 管理教师信息,包括对教师信息的查询、增加,修改,删除;
  3. 选课信息管理,包括发布选课信息,增加,修改,删除选课课程等。学生

管理系统二层分解图——学生管理如下图所示:

注:F3.3.1:原始学生信息  F3.3.2:原始教师信息  F3.3.3:原始课程信息

F3.3.4:原始教室信息 F9.1.1:修改后学生信息 F9.1.2:修改后的教师信息  

F9.1.3:修改后的课程信息 F9.1.3:修改后的班级信息

3.4数据字典DC(对数据流图的进一步描述)
1. 数据项

为方便,根据上述文字描述,用英文简写为表和列取名,确定列的数据类型及必要的约束规则,给出如下所示数据库表的基本结构及说明:

学生信息表

列名

说明

数据类型

约束

StudentNum

学号

char(10)

主码

MajorNum

专业号码

char(10)

not null,引用tb_major的外码

StudentName

姓名

varchar(10)

Not null

StudentSex

性别

char(2)

not null,取“男”或“女”

StudentBirthday

生日

datetime

not null

StudentPassword

密码

varchar(20)

not null,

教师信息表

列名

说明

数据类型

约束

TeacherNum

教师工号

char(10)

主码

DeptNum

院系号码

char(10)

not null,引用tb_dept的外码

TeacherName

姓名

varchar(10)

not null

TeacherSex

性别

char(2)

not null,取“男”或“女”

TeacherBirthday

生日

datetime

not null

TeacherTitle

职称

varchar(20)

管理员信息表

列名

说明

数据类型

约束

ManagerNum

管理员工号

char(10)

主码

ManagerName

姓名

varchar(10)

not null

ManagerSex

性别

char(2)

not null,取“男”或“女”

ManagerBirthday

生日

datetime

not null

专业信息表

列名

说明

数据类型

约束

MajorNum

专业号码

char(10)

主码

DeptNum

系号码

char(10)

not null,引用tb_dept的外码

MajorName

专业名

varchar(20)

not nul

MajorAssistant

辅导员

varchar(10)

not null

MajorTel

联系方式

varchar(15)

not null

院系信息表

列名

说明

数据类型

约束

DeptNum

系号码

char(10)

主码

DeptName

系名称

varchar(20)

not null

DeptChairman

系主任

varchar(10)

not null

DeptTel

联系方式

varchar(15)

not null

DeptDesc

系介绍

text

not null

课程信息表

列名

说明

数据类型

约束

CourseNum

课程号码

char(10)

主码

CourseName

课程名

varchar(20)

not null

CourseCredit

学分

float

not null

CourseClass

学时

smallint

not null

CourseDesc

课程介绍

text

not null

选课信息表

列名

说明

数据类型

约束

StuCourseID

选课编号

int

主码,自动递增

StudentNum

学号

char(10)

not null,引用tb_student的外码

CourseNum

课程号码

char(10)

not null,引用tb_course的外码

TeacherNum

教师工号

char(10)

not null,引用tb_student的外码

Grade

成绩

smallint

控制设置表

列名

说明

数据类型

约束

IfTakeCourse

选课控制

char(1)

not null,取“0”或“1"

IfInputGrade

成绩录入控制

char(1)

not null,取“0”或“1”

备注:选课和成绩录入功能的开放和禁止,0为禁止,1为开放。

2. 数据结构图

3. 数据流

用户登陆信息数据流条目

编号

F1

数据流名称

用户登陆信息

来源

用户

去向

P1:登陆管理

简述

用户在登陆时输入的账号、密码和验证码

组成

用户名+密码+身份+验证码

用户身份信息数据流条目

编号

F2

数据流名称

用户身份信息

来源

P1:登陆管理

去向

P2:用户操作管理

简述

登陆系统判断用户身份后发送的信息

组成

用户名+密码+身份+验证码

用户注册信息数据流条目

编号

F3

数据流名称

用户注册信息

来源

用户信息库

去向

P1:登陆管理

简述

系统从用户信息库中查询出来的用户注册信息

组成

[学生注册信息]+[教师注册信息]+[管理员注册信息]

用户基本信息数据流条目

编号

F4

数据流名称

用户基本信息

来源

D1:用户信息库

去向

P2:用户操作管理

简述

系统从用户信息库中查询出来的用户基本信息

组成

[学生信息]+[教师信息]+[管理员信息]

用户基本信息数据流条目

编号

F5

数据流名称

学生选课信息清单

来源

P2:用户操作管理

去向

D2:选课信息库

简述

用户操作数据后存入选课信息库中的信息

组成

学号+课程号+成绩

用户基本信息数据流条目

编号

F6

数据流名称

学生选课信息

来源

D2:选课信息库

去向

P2:用户操作管理

简述

用户操作数据后存入选课信息库中的信息

组成

学号+课程号+成绩+[班级信息]

用户基本信息数据流条目

编号

F7

数据流名称

登陆错误信息

来源

D2:选课信息库

去向

P2:用户操作管理

简述

用户登陆时,输入的用户名,密码或验证码错误

组成

错误信息

用户基本信息数据流条目

编号

F8

数据流名称

.

来源

D2:选课信息库

去向

P2:用户操作管理

简述

用户进行操作后,系统反馈给用户信息

组成

查询或操作显示的信息,或错误提示信息

用户基本信息数据流条目

编号

F9

数据流名称

用户信息清单

来源

P2:用户选课管理

去向

D1:用户信息库

简述

用户操作数据后存入用户信息库中的信息

组成

[学生信息]+[教师信息]+[管理员信息]

用户基本信息数据流条目

编号

F10

数据流名称

修改密码后的用户信息

来源

P1:登陆管理

去向

D1:用户信息库

简述

用户修改密码后存入用户信息库的信息

组成

用户名+密码+身份

4. 数据存储

编号

数据存储名

输入数据流

删除数据流

流量

D1

用户信息库

F9、F10

F3、F4

D2

选课信息库

F6

F5

5. 处理过程

编号

P1

名称

登陆管理

输入流

F1、F3

输出流

F2、F7、F10

简述

对登陆信息进行管理

处理

判断用户登陆时输入登陆信息是否正确

编号

P2

名称

用户操作管理

输入流

F2、F4、F6

输出流

F5、F8

简述

用户相关操作的管理

处理

根据用户的不同,进行不同的的用户操作管理


§4.系统设计

4.1概念设计

                ——实体关系(ER)图.

     表介绍:一共有八张表,其中有六个实体(如下①~⑥)

            ①学生Students(学号StudentNum,课程号MajorNum,学生姓名StudentName,学生性别StudentSex,学生生日StudentBirthday,学生密码StudentPassword)

            ②教师Teachers (教师号TeacherNum,系号DeptNum,教师姓名TeacherName,教师性别TeacherSex,教师生日TeacherBirthday,教师职称TeacherTitle,教师密码TeacherPassword)

            ③管理员Managers(管理员号ManagerNum,管理员姓名ManagerName,管理员姓名ManagerSex,管理员生日ManagerBirthday)

            ④专业Majors(专业号MajorNum,院系号DeptNum,专业名称MajorName,专业辅导员MajorAssistant,专业辅导员联系电话MajorTel)

            ⑤院系Departments(系号DeptNum,系名DeptName,系主任DeptChairman,系主任联系电话DeptTel,系介绍DeptDesc )

            ⑥课程Courses(课程号CourseNum,课程名字CourseName,课程学分CourseCredit,课程学时CourseClass,课程介绍CourseDesc)

            ⑦选课Choices(选课号码StuCourseID,学号StudentNum,课程号CourseNum,教师号TeacherNum,总学分Grade)

            ⑧控制选择Control(选课控制IfTakeCourse,成绩录入控制IfInputGrade)

      各实体E-R图如下:

    数据库系统E-R图如下:

 4.2逻辑设计

E—R图可以将系统中的概念模型转换为具体的表(即关系)结构,共分为7个关系,详细信息如下所示:

学生(学号、专业号码、姓名、性别、生日、密码)

教师(教师工号、系号码、姓名、性别、生日、密码、职称)

管理员(管理员工号、姓名、性别、生日、密码、权限标志)

专业(专业号码、系号码、专业名、辅导员、联系方式、专业介绍)

院系(系号码、系名称、系主任、联系方式、系介绍)

课程(课程号码、学时、学分、课程介绍)

选课信息(学号课程号码、教师工号、成绩)

各个关系模式的最小依赖集如下:

     学生:F’={(学号,专业号)->姓名,(学号,专业号)->姓别,(学号,专业号)->生日,(学号,专业号)->密码,(学号,专业号)->职称}

     教师:F’={(教师工号,系号)→教师名,(教师工号,系号)→性别,(教师工号,系号)→生日,(教师工号,系号)→密码,(教师工号,系号)->职称}

     管理员:F’={管理员工号->姓名,管理员工号->性别,管理员工号->生日,管理员工号->密码,管理员工号->权限标志}

     专业:F’={(专业号,系号)->专业名,(专业号,系号)->辅导员,(专业号,系号)->联系方式,(专业号,系号)->专业介绍}

     院系:F’={系号码->系名称,系号码->专业名辅导员,系号码->联系方式,系号码->专业介绍}

     课程:F’={课程号->学时,课程号->学分,课程号->课程介绍}

     选课:F’={(学号,课程号)->成绩}

     根据上述分析所归结出来的数据依赖的种类,其关系模式都达到BCNF(即BC范式)。

4.3物理设计
4.3.1索引设计(创建一个索引,加速课程表的查询)

          索引被创建于已有的表中,它可使对行的定位更快速更有效。可以在表格的一个或者多个列上创建索引,每个索引都会被起个名字。用户无法看到索引,它们只能被用来加速查询。

【CREATE INDEX CoursesIndex

ON Courses (CourseNum,CourseName,CourseClass,CourseCredit);】

【查看:show index from courses from studentsystem;】

注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常用于搜索的列上面创建索引。

4.3.2触发器设计

建立一个触发器控制输入的成绩在[0,100]区间内。

【delimiter %%

create trigger prod_ins

before insert on Choices

for each row

begin

if new.grade <=0 or new.grade>=100 then

SIGNAL SQLSTATE '45000'

SET MESSAGE_TEXT = '输入成绩不能小于0或大于100';

end if;

end;

%%】

4.3.3数据库完整性设计

在建立数据库脚本时设计定义好每个表的主码外码,且

在Choices中对于StudentNum建立参照完整性约束

【Alter table Choices add constraint fk_supp foreign key (StudentNum) references Students(StudentNum);\g】

4.4用户模式设计
   4.4.1视图设计

        1. 创建学生专业视图(查看视图语句:select * from 视图名;)

        展示各个专业的学生信息,便于师生查看。

【CREATE VIEW vi_major

AS

SELECT

Majors.MajorName,StudentNum,StudentName,StudentSex,StudentBirthday

FROM Majors,Students

WHERE Majors.MajorNum=Students.MajorNum;\g】

        2.创建学生成绩视图

【CREATE VIEW vi_grade

AS

SELECT

Choices.StudentNum,StudentName,CourseName

,CourseCredit,TeacherName,Grade

FROM Choices,Students,Courses,Teachers

WHERE Choices.StudentNum=Students.StudentNum and

Choices.TeacherNum=Teachers.TeacherNum and

Choices.CourseNum=Courses.CourseNum and

Grade is not null

;\g】

      3. 创建教职员工视图

【CREATE VIEW vi_teacher

AS

SELECT

Teachers.TeacherName,DeptChairman,DeptName

FROM Teachers,Departments

WHERE Teachers.DeptNum=Departments.DeptNum

;\g】

      注:使用视图的原因: 1.视图能够简化用户的操作

  1. 视图使用户能以多种角度看待同一数据
  2. 视图对重构数据库提供了逻辑独立性
  3. 视图能够对机密数据提供安全保护
  4. 适当的利用视图可以更清晰的表达查询

4.4.2存储过程设计

①建立学生专业存储过程

DELIMITER $$

CREATE PROCEDURE OrderPr1 (IN MajorName1 VARCHAR(10),in StudentNum1 CHAR(10), IN StudentSex1 CHAR(2))

BEGIN

     SELECT Majors.MajorName,StudentNum,StudentName,StudentSex

FROM Majors,Students

WHERE Majors.MajorNum=Students.MajorNum;

END $$\g

②建立教职员工存储过程

DELIMITER $$

CREATE PROCEDURE OrderPr2 (IN TeacherName1 VARCHAR(10),in DeptChairman1 VARCHAR(10), IN DeptName1 VARCHAR(10))

BEGIN

SELECT

Teachers.TeacherName,DeptChairman,DeptName

FROM Teachers,Departments

WHERE Teachers.DeptNum=Departments.DeptNum;

END $$

注:此处的存储过程由4.4.1的视图修改而来,目的是:

  1. 预编译:当一个sql语句包含在存储过程中时,服务器不必每次执行它时都要分析和编译它,避免了sql语句在网络中传输然后再解释的低效率问题。
  2. 修改方便:直接修改存储过程,方便代码的管理。
  3. 安全:不会有sql语句注入问题。
  4. 可以建立复杂的查询:可以用存储过程建立非常复杂的查询,以非常复杂的方式更新数据库。
  5. 可以使用参数:在存储过程中可以使用参数,可以传送和返回参数。 

4.4.3 安全性设计

           ——设计最少两种角色(管理员、普通用户),分配角色的数据库对象的操作权限。

       设置三个用户:

【Create user 'stu1'@'localhost' identified by '123';

Create user 'tea2'@'localhost' identified by '456';

Create user 'man3'@'localhost' identified by '456';】

     设置三种角色:

【Create role StudentRole,TeacherRole,ManagerRole;】

     设置角色权限:

①学生(权限:查询6个表信息)

【grant select on  StudentSystem.Students to StudentRole ;

grant select on  StudentSystem.Teachers to StudentRole ;

grant select on  StudentSystem.Majors to StudentRole ;

grant select on  StudentSystem.Departments to StudentRole ;

grant select on  StudentSystem.Courses to StudentRole ;

grant select on  StudentSystem.Choices to StudentRole ;】

②老师(权限:查询6个表信息+选课表信息增删改查)

【grant select on  StudentSystem.Students to TeacherRole ;

grant select on  StudentSystem.Teachers to TeacherRole ;

grant select on  StudentSystem.Majors to TeacherRole ;

grant select on  StudentSystem.Departments to TeacherRole ;

grant select on  StudentSystem.Courses to TeacherRole ;

grant select on  StudentSystem.Choices to TeacherRole ;

grant all on  StudentSystem.Choices to TeacherRole with grant option;】

③管理员(权限:所有表增删改查)

【grant all on  StudentSystem.Students to ManagerRole with grant option;

grant all on  StudentSystem.Teachers to ManagerRole with grant option;

grant all on  StudentSystem.Managers to ManagerRole with grant option;

grant all on  StudentSystem.Majors to ManagerRole with grant option;

grant all on  StudentSystem.Departments to ManagerRole with grant option;

grant all on  StudentSystem.Courses to ManagerRole with grant option;

grant all on  StudentSystem.Choices to ManagerRole with grant option;

grant all on  StudentSystem.Control to ManagerRole with grant option;】

将角色赋予相应用户:

【GRANT NomalRole TO 'stu1'@'localhost';

GRANT NomalRole TO 'tea2'@'localhost';

GRANT ManagerRole TO 'man3'@'localhost';】

(进入stu1客户端【-u stu1 -p123】

检查权限是否生效:

Show grants \G;

use studentsystem;

Show tables;

select * from students;

select * from managers;

注:参照老师提供的实验九数据库安全:基本授权及回收。

4.4.4并发及事务设计

Mysql中,定义一个handler处理一个或多个条件(condition_value ),如果某一个条件被触发, 则会执行定义的SQL语句(statement),然后执行动作(handler_action)。

①设置事务添加一条选课记录,用存储的方式实现。

【  Delimiter //  

Create Procedure transp2()

Begin

declare t_err int default 0;

declare CONTINUE HANDLER FOR SQLEXCEPTION SET t_err = 1;

Start transaction;

insert into Choices values (00003,1003,6003,3001,100);

if t_err =1 then

Rollback;

else

commit;

end if;

end //】

 ②设置事务显示出选课表。

【Create Procedure transp3()

Begin

declare t_err int default 0;

declare CONTINUE HANDLER FOR SQLEXCEPTION SET t_err = 1;

Start transaction;

Select * from choices;

if t_err =1 then

Rollback;

else

commit;

end if;

end ///】

4.4.5 用户界面设计

使用html、php设计学生系统的界面。

使用php连接数据库达到数据展示的效果。

登录界面,教师、学生、管理员对应界面,修改界面。


§5.测试

5.0建立数据库

数据库建立过程

①打开mysql5.6.17模拟器进入数据库,输入命令【source D:\StudentSystem.txt】

导入sql脚本,创建数据库

②检查数据库是否创建成功【show databases;】

检查所有表格是否成功建立【show tables;】

检查表格内容是否插入成功【select * from students;】(以学生表students为例)

即目标数据库studentsystem创建成功

5.1功能性测试

5.1.1索引测试

5.1.2 完整性

在编写数据库脚本时定义主码、外码

以学生表为例:

显示参照性约束【 SHOW CREATE TABLE Choices;\g】

可见约束已经设置成功。

5.1.3触发器测试

5.1.4函数测试

*函数设计:

CREATE FUNCTION welcome (s CHAR(20))

                        RETURNS CHAR(50) DETERMINISTIC

                   RETURN CONCAT('欢迎登录学生选课与成绩管理系统, ',s,'!');\g

【show create function welcome;】

可见函数测试成功。

5.1.5视图测试

      ①学生—专业视图:

       【select * from vi_major;】

②学生选课视图:

【select * from vi_grade;】


③教师视图

【select * from vi_teacher;】

5.1.6存储测试

【SHOW CREATE PROCEDURE 数据库.存储过程名;】

5.1.8事务测试

事务①

事务②

5.2逻辑设计数据库重构及回归测试

                可视化处理:网页显示(略)

5.3逻辑设计数据库系统优化调整

                (略)


                        

§6.开发总结

6.1总结收获

        通过本次课程设计,利用数据库的可扩充性和可 移植性创建系统脚本,并在此基础上进一步设计了索引、事务、触发器和视图等等,不仅加强了本系统的功能性,还增长了使用数据库的熟练度。

        在完成此次课程设计作业的同时,遇到了许多问题。 从“脚本如何写?”这第一个问题开始,便开始学习有关数据 库系统设计制作、数据库与前端连接方法的方方面面。虽然 仍有许多问题仍然未得到解决,系统也有很多需要老师斧正 的地方,但正因制作此次不完美的课程设计作业,了解了数据库系统制作的流程,认识到数据库系统功能的强大,学习了从头开始制作系统并且锻炼了我们发现、分析并解决问题的能力。

6.2参考文献

[数字] 名字.书名.出版社,出版时间

6.3附件

Studentsystem.txt:

/*

  创建学生选课系统数据库脚本

  StudentSystem

  执行下列脚本自动生成数据库

  mysql>source D:\StudentSystem.txt

*/

DROP DATABASE IF EXISTS StudentSystem;

Create database StudentSystem default character set gbk; # 创建数据库Trade 使用缺省字符集gbk

use StudentSystem; -- 切换到StudentSystem 数据库

CREATE TABLE Students (

   StudentNum                CHAR(10)       NOT NULL PRIMARY KEY,

   MajorNum                   CHAR(10)       NOT NULL,

   StudentName               VARCHAR(10)       NOT NULL,  

   StudentSex           CHAR(2)           NOT NULL,

   StudentBirthday   DATE           NOT NULL,

   StudentPassword         VARCHAR(40)      NOT NULL

);

CREATE TABLE Teachers (

   TeacherNum         CHAR(10)      NOT NULL PRIMARY KEY,

   DeptNum             CHAR(10)         NOT NULL,

   TeacherName        VARCHAR(10)      NOT NULL,  

   TeacherSex           CHAR(2)         NOT NULL,

   TeacherBirthday   DATE             NOT NULL,

   TeacherTitle          VARCHAR(40)      NOT NULL,

   TeacherPassword       VARCHAR(40)   NOT NULL

);

CREATE TABLE Managers (

   ManagerNum        CHAR(10)      NOT NULL PRIMARY KEY,

   ManagerName         VARCHAR(10)      NOT NULL,

   ManagerSex        CHAR(2)         NOT NULL,  

   ManagerBirthday       DATE             NOT NULL

);

CREATE TABLE Majors (

   MajorNum        CHAR(10) NOT NULL PRIMARY KEY,

   DeptNum             CHAR(10)        NOT NULL,

   MajorName             VARCHAR(10)        NOT NULL,

   MajorAssistant    CHAR(2)       NOT NULL,  

   MajorTel                    VARCHAR(10)        NOT NULL

);

CREATE TABLE Departments (

   DeptNum        CHAR(10)              NOT NULL PRIMARY KEY,

   DeptName    VARCHAR(10)       NOT NULL,

   DeptChairman             VARCHAR(10)       NOT NULL,

   DeptTel                    VARCHAR(10)       NOT NULL,

   DeptDesc    TEXT          NOT NULL

);

CREATE TABLE Courses (

   CourseNum        CHAR(10)               NOT NULL PRIMARY KEY,

   CourseName    VARCHAR(10)        NOT NULL,

   CourseCredit           CHAR(10)         NOT NULL,

   CourseClass                 CHAR(10)       NOT NULL,

   CourseDesc    TEXT         NOT NULL

);

CREATE TABLE Choices (

   StuCourseID        INT    NOT NULL,

   StudentNum    CHAR(10)    NOT NULL,

   CourseNum            CHAR(10)    NOT NULL,

   TeacherNum                 CHAR(10)    NOT NULL,

   Grade             SMALLINT    NOT NULL

);

CREATE TABLE Control (

   IfTakeCourse    CHAR(1)                 NOT NULL check(IfTakeCourse in ( '0', '1')),

   IfInputGrade            CHAR(1)                 NOT NULL check(IfInputCourse in ( '0', '1'))

);

/*

学生:insert into Students values (1000,2000,'一二三','男',20031012,00000000);

教师:insert into Teachers values (3000,4000,'一二三','男',19831012,'xxx老师',11111111);

管理员:insert into Managers values (5000,'一二三','男',19831012);

专业:insert into Majors values (2000,4000,'xxx专业','一二三',1230610086);

院系:insert into Departments values (4000,'xxx学院','一二三','介绍');

课程:insert into Courses values (6000,'xxx课','2学分','1学时','介绍');

选课:insert into Choices values (01,1000,6000,3000,100);

控制:(IfTakeCourse, IfInputGrade);

*/

(忽略insert语句因为过审)

写在后面

*  为什么发出来

        大二写的数据库期末大作业 现在看很粗糙 内容和排版都是 文章引用也是随便引用的 大概格式是老师给的  里面一些乱乱的层级也是自己乱标 还省略了一些内容因为觉得不太完善 

        但是整理资料的时候感觉自己爱过 想给自己留点学习的痕迹 现在发的版本说不定也会一直修改到比较好 说不定哈哈

*  有版权侵权问题马上处理

        查了很多资料自己消化了 现在不记得有没有引用了 有什么问题私信 会滑跪

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐