样本--sql学生成绩管理系

更新时间:2023-09-06 10:05:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

——指导老师: ——指导老师:江国粹 指导老师

目 录一、引言 ························· 3 1.1 编写目的 ······················ 3 1.2 项目背景 ······················ 3 1.3 参考资料 ······················ 3 二、任务概括 ······················· 4 2.1 目标 ························ 4 2.2 用户的特点 ····················· 4 三、需求规定 ······················· 4 3.1 学生成绩管理系统应该完成的内容 ··········· 4 3.2 我们的系统需要实现的功能 ·············· 5 3.3 数据需求 ······················ 6 四、数据完整性 ······················ 7 五、数据 ························· 7 5.1 数据描述 ······················ 8 5.2 关系模型 ······················ 9 5.3 数据描述 ······················ 9

2

学生成绩管理 需 求 规 格 说 明一、引言 1.1 编写目的 编写本报告的目的是明确本系统的详细需求, 编写本报告的目的是明确本系统的详细需求,供使用单位确认系统 的功能和性能,并作为软件人员的设计依据和使用单位的验收标准。 的功能和性能,并作为软件人员的设计依据和使用单位的验收标准。 1.2 项目背景 人工管理学生成绩的手续繁琐, 人工管理学生成绩的手续繁琐,效率低下给具有强烈时间观念的管 理人员带来了诸多不便, 理人员带来了诸多不便,学校教务管理缺少一套完善的学生成绩管理软 件,为了使学生成绩方便管理,所以必须开发学生成绩管理系统。随着 为了使学生成绩方便管理,所以必须开发学生成绩管理系统。 开发学生成绩管理系统 计算机技术的不断发展,计算机已深入到了社会生活的各个角落。而采 计算机技术的不断发展,计算机已深入到了社会生活的各个角落。 用人工管理学生成绩的方法,不仅效率低,易出错,手续繁琐, 用人工管理学生成绩的方法,不仅效率低,易出错,手续繁琐,而且消 耗了大量的人力资源。为了满足学生成绩管理人员能快速计算、查找、 耗了大量的人力资源。为了满足学生成绩管理人员能快速计算、查找、 修改学生成绩进行高效的管理, 修改学生成绩进行高效的管理,在工作人员具备一定计算机操作能力的 前提下,特编写学生成绩管理系统软件以辅助提高教务管理效率。 前提下,特编写学生成绩管理系统软件以辅助提高教务管理效率。 ★ 开发软件名称:学生成绩管理系统 开发软件名称: ★ 项目开发者 : 电子学

院计算机科学系 “ 学生成绩管理系统 ” 项目开发者: 电子学院计算机科学系“ 学生成绩管理系统”

小组: 开发小组:张小梅( 组长) 张小梅(100202206 号,组长) , 涂莉( 涂莉(100202205 号) , 郝芳(100202204 号) 郝芳( 1.3 参考资料

3 3

江国粹等, 数据库建模技术》 安徽电子信息技术职业技术学院 江国粹等, 数据库建模技术》 《数据库建模技术 ,安徽电子信息技术职业技术学院 《 , 计机科学系; 机科学系; 二、任务概括 2.1 目标 本系统通过强大的计算机系统技术给教务系统管理人员和学生、 本系统通过强大的计算机系统技术给教务系统管理人员和学生、老 师输入和查看成绩带来便利。本系统除了教务室管理的一般功能以外, 师输入和查看成绩带来便利。本系统除了教务室管理的一般功能以外, 包括网上在线查询成绩信息、 还 包括网上在线查询成绩信息、查询本人的成绩情况和添加成绩等功 能。 目标还包括: 目标还包括: ☆ 减少人力与管理费用; 减少人力与管理费用; ☆ 提高信息准确度; 提高信息准确度; ☆ 改进管理和服务; 改进管理和服务; ☆ 更简便,信息化程度更高的成绩管理流程; 更简便,信息化程度更高的成绩管理流程; ☆ 建立高效的信息传输和服务平台,提高信息处理速度和利用 建立高效的信息传输和服务平台, 务平台 率。 2.2 用户的特点 1、本软件的最终用户是面向教务管理员(教务管理员和其它教务 本软件的最终用户是面向教务管理员( 管理人员) 查看人员(老师和学生等) 、查看人员 。 管理人员) 查看人员(老师和学生等) . 、 可以比较熟悉操作计算机。 教务管理员和老师都是经常性用户。 2、 可以比较熟悉操作计算机。 教务管理员和老师都是经常性用户。 系统维护人员为计算机专业人员,熟悉数据库、操作系统维护工。 系统维护人员为计算机专业人员,熟悉数据库、操作系统维护工。 维护工 三、需求规定 学生成绩管理系统应该完成以下两方面的内容: 3.1 学生成绩管理系统应该完成以下两方面的内容:

4 4

学生档案资料的管理、学生成绩的管理(包括必修课和选修课) 学生档案资料的管理、学生成绩的管理(包括必修课和选修课) , 每个内容均需要提供添加、修改和查询的功能。学生成绩管理系统在开 每个内容均需要提供添加、修改和查询的功能。学生成绩管理系统在开 发过程中收集到的客户需求文档记录的关键部分可概括为以下几个部 分: 1、可能会使用该系统的用户:系统管理员、教师、学生; 可能会使用该系统的用户:系统管理员、教师、学生; 2、各类

用户的权限不一样。例如:系统管理员可以添加、修改、 各类用户的权限不一样。例如: 系统管理员可以添加、 修改、 查询学生档案资料和学生成绩。学生只能查询自己的档 查询学生档案资料和学生成绩。学生只能查询自己的档案、成绩以及一 些公共的信息,教师可以发布学生的成绩的信息, 些公共的信息,教师可以发布学生的成绩的信息,而且只能查询自己所 授课程的信息以及一些公共信息。 授课程的信息以及一些公共信息。 要有系统备份功能,一旦系统出故障时,因为有相应的应急 的应急应 3、要有系统备份功能,一旦系统出故障时,因为有相应的应急应 急的应急措施或者系统恢复功能。 的应急措施或者系统恢复功能。 由此可见, 方面的需求: 由此可见,学生成绩管理系统需要满足 3 个方面的需求:管理员使 用系统对全部数据进行维护操作; 用系统对全部数据进行维护操作;教师对于自己相关的部分数据实体进 操作 行操作;学生作为查询者对数据实体进行查询操作。 行操作;学生作为查询者对数据实体进行查询操作。现在的学生成绩管 理系统基本上能做到这几个方面的要求, 理系统基本上能做到这几个方面的要求,但多数系统在功能上依然存在 缺陷和不足,尤其是在用户界面的友好性以及查询结果的可视化方面存 缺陷和不足, 在着很大问题。 在着很大问题。 3.2 我们的系统需要实现的功能主要包括以下几个方面: 3.2 我们的系统需要实现的功能主要包括以下几个方面: (1)设计不同用户的操作权限和登录方法; 设计不同用户的操作权限和登录方法; (2)管理员可以添加、 管理员可以添加、修改和查询学生的档案记录, 修改和查询学生的档案记录,同时可以添加、 同时可以添加、 修改和查询学生的成绩记录,对学生成绩信息开放度的管理权; 修改和查询学生的成绩记录,对学生成绩信息开放度的管理权; (3)管理员对学生的档案和对成绩进行审查,生成学生的档案记录 管理员对学生的档案和对成绩进行审查,生成学生的档案记录

5 5

报表和学生成绩报表; 报表和学生成绩报表; (4)教师可以查询所受课程的学生信息,可以录入并查询所授课程 教师可以查询所受课程的学生信息, 的成绩; 的成绩; (5)学生有查询个人档案信息和成绩信息的权利; 学生有查询个人档案信息和成绩信息的权利; (6)用户界面的直观性和成绩查询结果的可视化。 用户界面的直观性和成绩查询结果的可视化。 在查询结果的可视化方面,主要是针对当前众多的成绩管理系统的“通 在查询结果的可视化方面,主要是针对

当前众多的成绩管理系统的“ ,我们所涉及的利于查询用户的一项新功能,除了带来便捷性之外, 病” 我们所涉及的利于查询用户的一项新功能,除了带来便捷性之外, 在数据的分析等方面也有很大的帮助。 在数据的分析等方面也有很大的帮助。 满足上述要求的系统应该包括以下几个模块:基本数据维护功能; 数 满足上述要求的系统应该包括以下几个模块:基本数据维护功能; 据库管理功能 基本业务功能。 据库管理功能;基本业务功能。 3.3 数据需求 通过调查,总结出用户对数据的需求如下: 通过调查,总结出用户对数据的需求如下: (1)学生信息 包括:学号、学生姓名、性别、出生日期、所在学校、 包括:学号、学生姓名、性别、出生日期、所在学校、班级 (2)课程信息 包括:课程编号、课程名称 包括:课程编号、 (3)成绩信息 成绩信息 包括:平时成绩、期末成绩、 包括:平时成绩、期末成绩、实践成绩 成绩 (4)系信息 包括:系名称、 包括:系名称、系号 (5)班级信息 班级信息 包括:班级名称、专业代码、专业名称、班级号、 包括:班级名称、专业代码、专业名称、班级号、辅导员

6 6

(6)基本数据维护功能 1、 添加学生的档案信息 2、 修改学生的档案信息 3、 删除学生的档案信息 4、 添加学生的成绩信息 5、 修改学生的成绩信息 6、 删除学生的成绩信息 四、数据完整性: 数据完整性: 查询结果的可视化管理 个方面的需求: 学生成绩管理系统需要满足 3 个方面的需求: 1、管理员使用系统对全部数据进行维护操作; 管理员使用系统对全部数据进行维护操作; 2、教师对于自己相关的部分数据实体进行操作; 教师对于自己相关的部分数据实体进行操作; 3、学生作为查询者对数据实体进行查询操作; 学生作为查询者对数据实体进行查询操作; 4、成绩管理系统中学生成绩均实行百分制。 成绩管理系统中学生成绩均实行百分制。 课程成绩有平时成绩、 实验成绩、 期末成绩三部分综合评定。其 ( 5、 课程成绩有平时成绩、 实验成绩、 期末成绩三部分综合评定。 中各部分所占比例分别为 30%、30%、40%。各个科目的成绩由代课老 30%、30%、40%。 师给出。 师给出。如果学生有一门课成绩低于 60 分,则此学生必须得进行此课 程的补考, 如果学生补考成绩大于 60 分则按 60 分计, 分计, 程的补考, 如果小于 60 分则 再次进行补考,具体时间根据安排。如果此学生此门课一直没过, 再次进行补考,具体时间根据安排。如果此学生此门课一直没过,则不 给其颁发毕业证,直到次门课程通过考试为止方可领取毕业证

。 给其颁发毕业证,直到次门课程通过考试为止方可领取毕业证。) 五、数据 5.1 数据描述

7 7

(1)E---R 图 ---R ---R A、 分 E---R 图性别 出生日 期 姓名 班级号 课程编 号 课程名 称

学号

学生

m

学习

n

课程

平时成 绩

期末成 绩

实践成 绩

学号

出生日 性别 期

出生日 期

班级号

姓名

专业名 称

班级名 称

班级号

辅导员

学生

n

属于

1

班级

专业名 称

班级名 称

班级号

辅导员

系名

系号

班级

n

构成

1

B、 基本 E---R 图 ---R

学生m

n

1

属于

班级n

学习n

构成1

课程8 8

5、2 关系模型 关系模型 学生(学号、姓名、性别、出生日期、班级号) 学生(学号、姓名、性别、出生日期、班级号) 学习(学号、课程编号、平时成绩、期末成绩、实践成绩) 学习(学号、课程编号、平时成绩、期末成绩、实践成绩) 课程(课程编号、课程名称) 课程(课程编号、课程名称) 班级(班级号、班级名称、辅导员、系号) 班级号、班级名称、辅导员、系号) 系(系号、系名) 系号、系名) 5、3 数据描述 1、数据库

文件 数据库 日志

文件名称 Grate_Data.mdf Grate_log.ldf

初始大小 3 1

增长大小 2 1

最大文件大小 不受限制 不受限制

create database grate on (name=grate,filename='c:\grate_data.mdf',size=3,maxsize=unli mited,filegrowth=2) log on (name=grate_log,filename='c:\grate_log.ldf',size=1,maxsize=u nlimited,filegrowth=1) go 1、 数据表 、 学生表名: 表名:xs 序号 1 2 属性名称 XH XM 属性描述 学号 姓名 数据类型 char char 字节数 9 8 空否 否 默认值 备注 主键

9 9

3 4 5

XB CSRQ BJH

性别 出生日期 班级号

bit smalldatetime int

1 4 4 外键

create table xs (xh char(9) not null primary key, xm char(8) null, xb bit null, csrq smalldatetime null, bjh int null foreign key) go 课程 表名:KC序号 1 2 属性名称 KCH KCMC 属性描述 课程编号 课程名称 数据类型 char varchar 字节数 9 20 空否 否 否 默认值 备注 主键

create table kc (kch char(9) not null primary key, kcmc varchar (20) not null) go

班级表名:BJ 序 属性名称 号 1 2 3 4 BJH BJMC FDY DepartNo 班级号 班级名称 辅导员 系号 char 10 否 外键 int char char 4 9 6 否 否 引用列 主键,标识列 属性描述 数据类型 字节数 空否 默认值 备注

create table bj 10 10

(bjh int identity(1001,10) not null primary key, bjmc char(9) not null, fdy char(6) null,

departno char(10) null foreign key) go 系 表名:Department序 属性名称 号 1 2 DepartNo DepartName 系号 系名 char char 10 9 否 否 主键 属性描述 数据类型 字节数 空否 默认值 备注

create table department (departno char(10) not null primary key, departname char(9) not null) go 学习 表名:序号 1 2 3 4 5 6 属性名称 XH KCH PSCJ QMCJ SJCJ Z

P 属性描述 学号 课程编号 平时成绩 期末成绩 实践成绩 总评 数据类型 char char decimal decimal decimal 字节数 9 9 5 5 5 计算列 空否 否 否 默认值 备注 主键 主键

注:zp=pscj*0.3+sjcj*0.3+qmcj*0.4 create table xuexi (xh char(9) not null, kch char(9) not null, pscj decimal(5) null,

11 11

qmcj decimal(5) null, sjcj decimal (5) null primary key(xh,kch), zp as (pscj*0.3+sjcj*0.3+qmcj*0.4) ) go

2、 用户自定义完整性 、 、视图结构 (1) 视图结构 ) 、 学生对于自己成绩的查询 create view view1 with encryption as select xs.xm,xs.xh,kc.kcmc,zp from xx,xs,kc where xx.xh=xs.xh and xx.kch=kc.kch go 、索引结构 (2) 索引结构 ) 、 注:加快查询的速度! 加快查询的速度! use grade go if exists(select * from sysindexes where name=in_bjh) drop index xs.in_bjh go create nonclustered index in_bjh on xs(bjh asc) go 注:加快学生的查询 加快学生的查询 use grade go 12 12

if exists(select * from sysindexes where name=in_a1) drop index xs.in_a1 go create nonclustered index in_a1 on xs(bjh,xh asc) go 、存储过程 (3) 存储过程 ) 、 use grade go if object_id (N'p','addxs')is not null drop proc addxs go create proc addxs @xh char(9) , @xm char(8) , @xb bit , @csrq smalldatetime, @bjh int as if @xh is null or @xm is null begin print'请重新学生的信息!' print'你必须输入学生的学号和姓名' print'学号和姓名不允许为空' end return if not exists(select * from bj where bjh=@bjh) begin print'该班不存在,请重新输入!' return 13 13

end insert xs(xh,xm,xb,csrq,bjh) values(@xh,@xm,@xb,@csrq,@bjh) go 注:给学生表添加记录 use grade go if exists(select * from sysobjects where type='p' and name='p1') drop proc p1 go create proc p1 @xh char(9) as begin select kcmc,xs.xh,zp from xs,kc,xx where xx.xh=xs.xh and xx.kch=kc.kch and xh=@xh end go 注:学号不对的不能插入记录! 学号不对的不能插入记录!

、触发器 (4) 触发器 ) 、

create trigger tri_update_xx on xx for update as declare @pscj decimal(5,1),@sjcj decimal(5,1), @qmcj decimal(5,1) select @pscj=pscj from inserted select @sjcj=sjcj from inserted select @qmcj=qmcj from inserted if(@pscj not between 0 and 100) or

14 14

(@sjcj not between 0 and 100) or (@qmcj not between 0 and 100) begin print'你更新的成绩不在到0到100之间!' rollback tran end go 之间则插入不进去! 注:更新的成绩不在 0 到 100 之间则插入不进去! use grade go if exists(select * from sysobjects where type='tr' and name='tri_insert_xx') drop trigger tri_insert_xx go create trigger tri_insert_xx on xx after insert as if exists( select * from xx where (xx.kch not in (select kch from kc)) or (xx.xh not in (select xh from xs))) begin

print'不允许插入非法数据!' rollback end go 注:当向学习表中插入记录不符合要求的则不允许插入! 当向学习表中插入记录不符合要求的则

不允许插入! use grade go create trigger tri1 on xx

15 15

after update as if update (qmcj) begin raiserror('期末成绩不能更改!',16,1) rollback end go

表中的期末成绩! 注:不允许更改 xx 表中的期末成绩! use grade go create trigger tri2 on xs for delete as delete xx where xh in (select xh from deleted)

注:学生和学习级联! 学生和学习级联

16 16

本文来源:https://www.bwwdw.com/article/7jyh.html

Top