对教务管理系统进行模块划分,分步进行设计和管理:
1、 学生信息管理
该模块是教务工作人员进行对学生信息的管理,进行学生信息的添加、修改、删除。在进行信息的添加时,首先在新的窗口进行学生信息的录入,在保存的时候要进行学生学号是否有重复的检查,如果添加的学生编号有重复就要对用户进行提示。只有在不重复的情况下才能进行信息的添加。在进行信息的删除时,要首先打开提示窗口让用户确认是否要删除,只有在用户确认的情况下才能进行信息的删除。在进行信息的修改时,要根据用户选定的学生进行修改,即列出用户选定的学生的所有信息,在这个基础上进行学生信息的修改。
2、 教师信息管理
教务工作人员通过此模块来管理教师信息,包括教师信息的添加、修改、删除等。
信息的添加时,需要验证教师的编号是否重复;删除和和修改学生信息,和学生信息管理模块相同。
3、 院系管理
此模块是用来管理院系的信息,包括班级院系的添加,修改,删除等。在进行信息的添加时,需要进行班级的编号是否重复的检查,如院系编号重复则对用户进行提示,不重复则添加成功。院系管理模块的删除和修改和学生信息管理模块相同。
4、 课程信息管理
教务工作人员通过该模块来管理课程的基本信息,包括课程信息的添加,修改,删除和班级课程的设置等,具体做法同前面的模块。
5、 成绩管理
教务工作人员通过该模块来进行学生成绩的管理,在进行学生成绩的添加时,可用它来为学生设置所在班级的课程表来直接输入成绩。
6、 打印管理
教务工作人员可以通过打印模块来打印学生成绩信息,选课表和班级表。可以根据班级、学生学号、课程编号来打印学生成绩单,打印前还要可以预览所要打印的报表。
7、 综合查询
通过该模块可以查询教务所需要的各种信息。如学生信息查询提供了包括学生学号、姓名、所在班级、班主任名字和宿舍等信息,学生信息进行查询的各种查询条件,用户可以根据单个的查询条件或者它们的组合来进行查询。同时,在查询的时候还提供了进行模糊查询的功能,即该模块能够利用读者输入的非完整的查询条件进行查询,这样更加方便了用户的查询管理。综合查询模块包括了学生信息查询、教师信息查询、班级信息查询、院系信息查询、课程信息查询和成绩查询等各种功能查询。
8、 系统管理
该模块可以对系统登录的用户进行管理。在该模块中,教务人员可以添加允许登录的人员名单以及相应的密码,并对已有的用户进行密码修改或删除。
(结构如上图)
综合分析教务管理系统各模块,我们需要对该系统实现基本的功能,并实现对用户对象的使用做出相应的权限。
1、 学生可以查看学生自己的成绩、课程安排、课程表。
2、 教师可以可以查看自己的基本信息、考试安排,可以对学生进行成绩的录入,不能添加、修改、删除系统的用户。
3、 教务人员可以通过系统管理模块对系统用户进行添加、修改、删除;可以对学生的基本信息、成绩、课程、宿舍等进行添加、修改、删除;可以对教师的基本信息、课程安排进行各种操作;可以对各种模块进行更新和删除操作。
概念设计是对整个数据库系统的一个抽象的描述和整体的概括,我们可以更加直观的去理解教务管理系统的结构,形成一个独立于具体DBMS(数据库管理系统)的概念模型,概念设计生成E-R图。
1、学生信息管理:学生的学号、姓名、性别、专业、院系、联系方式(电话)
2、教师信息管理:教师的编号、姓名、性别、主讲课程、联系方式(电话)
3、院系管理:系别编号、系别名称、系主任、系主任联系方式(电话)
4、成绩管理:学生学号、姓名、课程号、课程名称、分数
5、课程信息表:课程号、课程名、任课教师、学分
6、系统管理:管理员姓名、性别、电话
根据这些模块的划分,结合模块的属性,我们需要在数据库中建立以下表:学生信息表(Student)、教师信息表(Teacher)、院系表(Department)、课程信息表(Course)、成绩表(Achievement)、管理员信息表(Administrator)。
学生信息表
属性名 | 类型 | 宽度 | 主键 | 取值范围 |
---|---|---|---|---|
Sid | 字符型 | 10 | 是 | |
Sname | 字符型 | 20 | ||
Ssex | 字符型 | 2 | ||
Spre | 字符型 | 20 | ||
Sdep | 字符型 | 20 | ||
Stel | 字符型 | 13 |
教师信息表
属性名 | 类型 | 宽度 | 主键 | 取值范围 |
---|---|---|---|---|
Tid | 字符型 | 10 | 是 | |
Tname | 字符型 | 20 | ||
Tsex | 字符型 | 2 | ||
Tcou | 字符型 | 20 | ||
Ttel | 字符型 | 13 |
院系表
属性名 | 类型 | 宽度 | 主键 | 取值范围 |
---|---|---|---|---|
Did | 字符型 | 10 | 是 | |
Dmc | 字符型 | 20 | ||
Dname | 字符型 | 20 | ||
Dtel | 字符型 | 13 |
课程信息表
属性名 | 类型 | 宽度 | 主键 | 取值范围 |
---|---|---|---|---|
Cid | 字符型 | 10 | 是 | |
Cname | 字符型 | 20 | ||
Stc | 字符型 | 10 | ||
Cxf | 字符型 | 5 |
成绩信息表
属性名 | 类型 | 宽度 | 主键 | 取值范围 |
---|---|---|---|---|
Sid | 字符型 | 10 | ||
Sname | 字符型 | 20 | ||
Cid | 字符型 | 10 | ||
Cname | 字符型 | 20 | ||
Afs | tinyint, |
系统信息表
属性名 | 类型 | 宽度 | 主键 | 取值范围 |
---|---|---|---|---|
Aname | 字符型 | 20 | ||
Asex | 字符型 | 2 | ||
Atel | 字符型 | 13 |
数据库的物理设计是对前一阶段的逻辑设计进行具体的物理实现,把我们的思想转化为实实在在的物理应用,通过对数据库的实践操作来实现我们的前期设计,良好的物理设计能很好的体现数据库的设计质量。在这阶段,我们需要确定在物理设备上的存储模式和存取方法,反复的思考,多次的评估,以确保物理路径清晰,各个表之间的相互关系明确;理清内模式以及内模式和模式之间的映像关系。具体来说,可以分为五步完成,前三步设计物理结构设计,后两步设计到约束和具体程序的设计:
数据库实施阶段,运用DBMS提供的宿主语言,根据逻辑设计和物理设计的结果,建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
1、创建数据库
(1) 打开SQL工具“查询分析器”
(2) 在查询窗口中键入下列SQL语句
create database Edu_System
执行上述SQL语句即可新建一名为Edu_System的数据库
2、创建数据表
数据表是数据库中一个非常重要的对象,是其他对象的基础。数据库只是一个框架,数据表才是内容的实质,建表的原则:一个完整的数据库不可缺少的就是数据表,若干个数据表的集合成一个数据库。数据表主要用来存放一定格式的记录,数据表中的行被称为记录,列被称为字段。创建数据表的过程其实就是定义字段的过程。
创建数据库后,为Edu_System数据库添加数据表,步骤如下 :
(1) 新建查询窗口
(2) 在查询窗口中键入下列SQL语句创建表,同时建立主键和外键:
(学生信息表)
create table Student( /* 创建学生信息表*/
Sid char(10) primary key, /* 学号*/
Sname varchar(20) not null, /* 姓名*/
Ssex char(2) check (Ssex in ('男','女')), /* 性别*/
Spre varchar(20), /* 专业*/
Sdep varchar(20), /* 院系 */
Stel char(13), /* 联系电话*/
)
(教师信息表)
create table Teacher( /* 创建教师信息表*/
Tid char(10) primary key, /* 编号*/
Tname varchar(20) not null, /* 姓名*/
Tsex char(2) check (Tsex in ('男','女')), /* 性别*/
Tcou varchar(20), /* 主讲课程*/
Ttel char(13), /* 电话*/
)
(院系表)
create table Department( /* 创建院系表*/
Did char(10) primary key, /* 编号*/
Dmc varchar(20) not null, /* 系别名称*/
Dname varchar(20) not null, /* 系主任*/
Dtel char(13), /* 电话*/
)
(课程信息表)
create table Course( /* 创建课程信息表*/
Cid char(10) primary key, /* 课程号*/
Cname varchar(20) not null, /* 课程名*/
Stc varchar(10), /* 任课教师*/
Cxf varchar(5), /* 学分 */
)
(成绩信息表)
create table Achievement( /* 创建成绩信息表*/
Sid char(10) not null foreign key references Student(Sid), /* 学号*/
Sname varchar(20) , /* 姓名*/
Cid char(10) not null foreign key references Course(Cid), /* 课程号*/
Cname varchar(20) , /* 课程名*/
Afs tinyint, /* 分数 */
)
(系统管理表)
create table Administrator( /* 创建系统管理表*/
Aname varchar(20) not null, /* 管理员姓名*/
Asex char(2) check (Asex in ('男','女')), /* 性别*/
Atel char(13) not null, /* 联系电话*/
)
3.运用sql语句向表格中插入数据:
(学生信息表)
INSERT INTO Student(Sid,Sname,Ssex,Spre,Sdep,Stel)
VALUES ('0811090101','熬霞','女','信息管理与信息系统','工商管理学院','15232326361');
INSERT INTO Student(Sid,Sname,Ssex,Spre,Sdep,Stel)
VALUES ('0811090102','陈健','男','信息管理与信息系统','工商管理学院','15232326362');
INSERT INTO Student(Sid,Sname,Ssex,Spre,Sdep,Stel)
VALUES ('0811090103','陈勤','男','信息管理与信息系统','工商管理学院','15232326363');
INSERT INTO Student(Sid,Sname,Ssex,Spre,Sdep,Stel)
VALUES ('0811090104','陈欣欣','女','信息管理与信息系统','工商管理学','15232326364');
INSERT INTO Student(Sid,Sname,Ssex,Spre,Sdep,Stel)
VALUES ('0811090105','戴柯柯','男','信息管理与信息系统','工商管理学','15232326365');
(教师信息表)
INSERT INTO Teacher(Tid,Tname,Tsex,Tcou,Ttel)
VALUES ('101','王刚','男','数据结构 ','15242421001');
INSERT INTO Teacher(Tid,Tname,Tsex,Tcou,Ttel)
VALUES ('102','高星','男','计算机网络','15242421002');
INSERT INTO Teacher(Tid,Tname,Tsex,Tcou,Ttel)
VALUES ('103','肖娟','女','java程序设计','15242421003');
INSERT INTO Teacher(Tid,Tname,Tsex,Tcou,Ttel)
VALUES ('104','许伟丽','女','项目管理','15242421004');
INSERT INTO Teacher(Tid,Tname,Tsex,Tcou,Ttel)
VALUES ('105','刘书霞','男','jsp程序设计','15242421005');
(院系表)
INSERT INTO Department(Did,Dmc,Dname,Dtel)
VALUES ('201','工商管理学院','秦波','15262620011');
INSERT INTO Department(Did,Dmc,Dname,Dtel)
VALUES ('202','数信学院','韩旭','15262620012');
INSERT INTO Department(Did,Dmc,Dname,Dtel)
VALUES ('203','文法学院','陈其','15262620013');
INSERT INTO Department(Did,Dmc,Dname,Dtel)
VALUES ('204','财经学院','魏芳','15262620014');
INSERT INTO Department(Did,Dmc, Dname,Dtel)
VALUES ('205','体育系','李元','15262620015');
(课程信息表)
INSERT INTO Course(Cid,Cname,Stc,Cxf)
VALUES ('301','数据结构','王刚','4');
INSERT INTO Course(Cid,Cname,Stc,Cxf)
VALUES ('302','计算机网络','高星','3');
INSERT INTO Course(Cid,Cname,Stc,Cxf)
VALUES ('303','java程序设计','肖娟','4');
INSERT INTO Course(Cid,Cname,Stc,Cxf)
VALUES ('304','项目管理','许伟丽','2');
INSERT INTO Course(Cid,Cname,Stc,Cxf)
VALUES ('305','jsp程序设计','刘书霞','3');
(系统管理表)
INSERT INTO Administrator(Aname,Asex,Atel)
VALUES ('张操','男','15372720001');
INSERT INTO Administrator(Aname,Asex,Atel)
VALUES ('许杰','男','15372720002');
INSERT INTO Administrator(Aname,Asex,Atel)
VALUES ('吴旭','男','15372720003');
INSERT INTO Administrator(Aname,Asex,Atel)
VALUES ('安鹏','男','15372720004');
INSERT INTO Administrator(Aname,Asex,Atel)
VALUES ('冉静','男','15372720004');
(成绩信息表)
INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs)
VALUES ('0811090101','熬霞','301','数据结构','98');
INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs)
VALUES ('0811090101','熬霞','302','计算机网络','92');
INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs)
VALUES ('0811090101','熬霞','303','java程序设计','97');
INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs)
VALUES ('0811090101','熬霞','304','项目管理','93');
INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs)
VALUES ('0811090101','熬霞','305','jsp程序设计','94');
(该图只是部分数据)
4.运用sql语句进行查询
select * from Achievement where(Cid=304 and Afs>95)
select * from Achievement order by afs desc
select t1.Sname,t1.Stel from Student t1
inner join Achievement t2 on t1.Sid=t2.Sid
where t2.Cname like '模电%' and t2.Sid='01'
select t1.Sid,t1.Sname,t1.spre,max(t2.afs) zgf, min(t2.afs) zdf ,avg(t2.afs) pjf
from Student t1
right join Achievement t2 on t1.Sid=t2.Sid
where 1=1
group by t1.Sid,t1.Sname ,t1.spre
having avg(t2.afs) > 60
order by avg(t2.afs) desc
create view newView
as
select Sid,Sname,Cname,Afs
from Achievement
where Sid=0811090104
use teaching
go
create procedure achi_pro @sid char(4)
as
select t1.Sid,t1.Sname,t1.spre,max(t2.afs) zgf, min(t2.afs) zdf ,avg(t2.afs) pjf from Student t1
right join Achievement t2 on t1.Sid=t2.Sid
where 1=1 and t1.sid=@sid
group by t1.Sid,t1.Sname ,t1.spre
having avg(t2.afs) > 60
order by avg(t2.afs) desc
execute achi_pro '01'