您好,欢迎来到汇意旅游网。
搜索
您的当前位置:首页学生成绩管理系统数据库

学生成绩管理系统数据库

来源:汇意旅游网
学生成绩管理系统数据库

一、需求分析阶段

1.信息需求

高校学生的成绩管理工作量大、繁杂,人工处理非常困难。学生成绩管理系统借助于计算机强大的处理能力,大大减轻了管理人员的工作量,并提高了处理的准确性。学生成绩管理系统的开发运用,实现了学生成绩管理的自动化,不仅把广大教师从繁重的成绩管理工作中解脱出来、把学校从传统的成绩管理模式中出来,而且对学生成绩的判断和整理更合理、更公正,同时也给教师提供了一个准确、清晰、轻松的成绩管理环境。 2.功能需求

能够进行数据库的数据定义、数据操纵、数据控制等处理功能,进行联机处理的相应时间要短。

具体功能应包括:系统应该提供课程安排数据的插入、删除、更新、查询;成绩的添加、修改、删除、查询,学生及教职工基本信息查询的功能。 3. 安全性与完整性要求

二、概念结构设计阶段

概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个于具体DBMS的概念模型。

设计教室管理数据库包括班级、教室、课程、教师四个关系。 E-R图如下

课程名 教师号 学分 课程号 教师号 课程信息表 学时 教课 教师信息表 教师名 学号 教师性别 选课 成绩 教师系别 课程号 成绩 系别 学生信息表 专业 性别 年龄 姓名 学号

三、逻辑结构设计阶段

逻辑结构是于任何一种数据模型的信息结构。逻辑结构的任务是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构,并对其进行优化。

E-R图向关系模型转化要解决的问题是如何将实体型和实体间的联系转化为关系模式,如何确定这些关系模式的属性和码。

设计学生成绩管理数据库,包括课程、学生、教师、成绩四个关系, 其关系模式中对每个实体定义的属性如下:

课程信息表 Class:(课程号,课程名,教师号,学分,学时)

学生信息表

Student1:(学号,姓名,性别,年龄,专业,系别)

成绩表 Score:(学号号,课程名,成绩)

教师表

Teacher1:(教师号,教师名,教师性别,教师系别)

1、课程信息表(class) 字段名 描述 cno cname teano credit ctime 课程号 课程名 教师号 学分 学时 数据类型 char(10) char(10) char(10) char(4) char(50) 字段 Primarykey Not null Not null Not null Not null 2、学生信息表(student1)

字段名 sno sname ssex sage major depart 描述 学号 姓名 性别 年龄 专业 系别 数据类型 char(10) char(10) char(2) char(2) char(10) char(10) 字段权限 Primarykey Not null Not null Not null Not null Not null

3.教师表(teacher1) 字段名 teano tname Tsex Tdepart 属 性 教师号 教师名 教师性别 教室系别 数据类型 char(10) char(10) char(2) char(10) 字段权限 Primarykey Not null Not null Not null

4.成绩表 字段名 sno 属 性 学号 数据类型 char(10) 字段权限 Primarykey cno degree 课程名 成绩 char(10) char(10) Not null Not null 四、物理设计阶段

数据库物理设计的任务是为上一阶段得到的数据库逻辑模式,即数据库的逻辑结构选择

合适的应用环境的物理结构,既确定有效地实现逻辑结构模式的数据库存储模式,确定在物理设备上所采用的存储结构和存取方法,然后对该存储模式进行性能评价、修改设计,经过多次反复,最后得到一个性能较好的存储模式。数据库物理设计内容包括记录存储结构的设计,存储路径的设计。

五、数据库实现

数据库实施是指建立数据库,编制与调试应用程序, 组织数据入库,并进行试运行。 1、创建数据库

(1) 打开SQL工具“查询分析器” (2) 在查询窗口中键入下列SQL语句

create database ScoreSystem

执行上述SQL语句即可新建一名为ScoreSystem的数据库

2、创建数据表

一个完整的数据库不可缺少的就是数据表,若干个数据表的集合成一个数据库。数据表主要用来存放一定格式的记录,数据表中的行被称为记录,列被称为字段。创建数据表的过程其实就是定义字段的过程。

在此学生成绩管理系统中需要创建四个表,即课程信息表、学生信息表、教师信息表和成绩表。

创建数据库后,为ScoreSystem数据库添加数据表,步骤如下。 (1) 新建查询窗口

(2) 在查询窗口中键入下列SQL语句

create table Class(

表查询:

(1)查询sno为01学生的sname

select sname from student1 where sno=' 01'

结果:

(2)查询ssex为’女’并且sdepart为’工商’的sname

select sname from student1 where ssex ='女' and

sdepart ='工商' 结果:

(3)查询所有学生的姓名和系别。

select sname,depart

from student1 结果:

(4)查询depart为数学系的sname。

select sname from student1 where depart ='数学系' 结果:

(5)查询所有学生所在院系名称

select distinct depart from student 结果:

(6)查询学生信息表中年龄小于21和年龄大于21的学生的姓名和系别

select sname,depart from student1 结果:

where sage>21 or sage<21

(7)查询所有学生的平均年龄

select avg(sage) as 平均年龄 from Student1

结果:

B.连接查询

(1)学生的学号、姓名,所选课程的课程号、课程名和成绩、任课教师名

Select ,,,,,

from student,class,score,teacher1 Where = and = and =

结果:

(2)找出教授数据库原理的老师的教师名

select

from class,teacher1 Where = and ='数据库原理'

结果:

C.操作结果集查询

查询02号同学和03号同学共同选修的课程 Select cno

From score Where sno='02' Intersect Select cno From score Where sno='03' 查询结果

D.嵌套查询

查询选修了0306这门课的所有学生的学号、姓名、年龄、院系 Select sno,sname,sage,depart From student1 Where sno in

(select sno From score

Where cno=’0306’) 查询结果

3、数据库更新操作 A.插入数据

向Student1表中添加一项记录:

姓名:叶问,学号:01,性别:男,年龄:36专业:信息管理,系别:工商

Insert Into

Student1(Sno,Sname, Ssex,sage,major,depart) Values ('01',' 叶问', '男',' 36',' 信息管理','工商')

B.修改数据

修改陈琦的学号为0: Update Student1 Set Sno=’03’

Where Sname=’陈琦’;

C.删除数据

删除所有工商学生的记录 Delete

from student1

Where(depart=’工商’);

4、为数据库建立索引

创建索引可以大大提高系统的性能。第一,通过创建唯一性索引,可以保证每一行数据的唯一性。第二,可以大大加快数据的检索速度,这也是所以的最主要原因。第三,可以加速表与表之间的连接,特别是实现数据的参考完整性方面特有意义。第四,在使用ORDER BY和GROUP BY子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。第五,通过使用索引,可以在查询过程中,使用优化隐藏器,提高系统性能。 A.创建索引:

(1) 在class表的cno列上创建非聚集索引。

Create index classrname ON class (cno) (2) 在student1表的sno列上创建非聚集索引。

Create unique index student1no ON Student1 (sno)

(3) 在Student1表的sno列创建一个非聚集索引,要求索引键值按sno升序排列。 Create index student1no ON student1(sno ASC) B.删除索引:

(1)删除student1表中的student1no 索引。 Drop index student1no

5、视图的操作:数据库视图的定义(创建和删除)、查询和更新

A.查询所有学生选课的信息,包括学号、姓名、课程号、课程名、成绩

create view score3 as

select '学号',sname'学生名','课程号',cname'课程名','成绩' from student1 s,class c,score sc where = and = go

查询结果

B.更新视图:

(1)修改信息:将陈琦的名字改为陈琪琪

Update score3 set 学生名='陈琪琪' where 学生名='陈琦

(2)删除信息:删除视图score3 中陈琪琪的记录

delete from score

where 学生名='陈琪琪'

删除视图:删除前面的score3视图。

drop view score3

6、数据库的安全性

创建SQLServer身份验证的登录账户陈琦、崔雪娇、董朝阳、杜鹃

EXEC sp_addlogin ‘陈琦’,’000’,’AAA’ EXEC sp_addlogin ‘崔雪娇’,’000’,’AAA’ EXEC sp_addlogin ‘董朝阳’,000’,’AAA’ EXEC sp_addlogin ‘杜鹃’,’000’,’AAA’

创建数据库用户

EXEC sp_adduser ‘陈琦’ EXEC sp_adduser ’崔雪娇’ EXEC sp_adduser ’董朝阳’

EXEC sp_adduser ’杜鹃’, ’杜鹃’, ’managers’

建立数据库角色

EXEC sp_addrole ‘managers’

删除SQLServer身份验证的登录账户 ’杜鹃’

EXEC sp_droplogin ‘杜鹃’

从当前数据库中删除用户 ’杜鹃’

EXEC sp_dropuser ‘杜鹃’

授权操作

(1)把对表student的insert权限授予用户董朝阳,并允许他再将此权限授予其他用户。

grant insert

on table Goods to 董朝阳 with grant option

(2)把查询表Goods和修改nowprice属性的权限授给用户陈琦。

grant select,update(nowprice) on table Goods to 陈琦

(3)把用户陈琦查询表Goods权限收回。

revoke select on table Goods from 陈琦 cascade

7、数据库的完整性

对于class表:class (cno,cname,tno,credit,ctime),cno的值应该在0和20之间: create table Class( //创建课程信息表

cno char(10) primary key, //课程号 cname char(10) not null, //课程名 teano char(10) Not null //教师号

credit char(4), Not null //学分 ctime char(50), Not null //学时

check (cno >0 and cno<=20 )

)

七、总结

本学生成绩查询系统主要参照课本,相对来说比较简单。但是由于主要以课本为依据,所以整个设计做下来基本掌握了课本上数据库的基础操作。设计过程中我也遇到了一些问题,再向其他同学请教的过程中我收获了很多。

(1)操作视图查询,编写代码时发现,一个表中的主键必须是另一个表的外键时才可以对另一个表进行引用。(2)在设计表时应注意使用正确的字段类型。(3)在建表语句中,如果这个表的主键是多个属性的组合主键,则必须作为表级完整性进行定义。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- hids.cn 版权所有 赣ICP备2024042780号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务