课程设计说明书3
更新时间:2024-01-02 13:00:01 阅读量: 教育文库 文档下载
课程设计说明书
设计题目:专 业:设 计 人:
学生选课管理 _
信息与计算科学 班 级: 12级 _
胡上彪 李肖 _
山东科技大学
2015年 6 月 27 日
课 程 设 计 任 务 书
一、课程设计题目: 学生选课管理
二、课程设计应解决的主要问题:
(1) 对表的一些简单的增删改查操作和复杂的SQL语句的查询操作 (2) 使用了事务和创建了一个计算男女比例的自定义标量函数和一个查询一个特定学号 学生的平均分的自定义表值函数 (3) 分别创建了一个为选课学生的视图和课程信息的视图 (4) 分别创建了一个打印学生信息表的游标和一个根据分数计算等级列的游标 (5) 分别创建一个查看特定学号学生特定的成绩等级和一个计算特定学号学生总分的两个 存储过程 (6) 分别创建一个为选课的学生不能从学生实体中删除的DML触发器和防止数据库被修 改(进行的表的创建,修改和删除操作)的DDL触发器 (7) 分别对学生表和教师表创建了索引
三、任务发出日期: 2014-4-25 课程设计完成日期: 2014-6-27
小组分工说明
小组编号 2 题 目: 学生选课管理 小组分工情况:
胡上彪:
完成数据库及各表结构的创建和实现了复杂的查询语句;完成使用事务和创建了一个计算男女比例的自定义标量函数;创建了一个为选课学生的视图和教师讲授的视图;创建了一个打印学生信息表的游标;创建一个查看特定学号学生特定的成绩等级;创建一个为选课的学生不能从学生实体中删除的DML触发器;分别对学生表和教师表创建了索引。 李肖:
对表的一些简单的增删改查操作;创建了一个查询一个特定学号学生的平均分的自定义表值函数;创建了课程信息的视图;创建了一个根据分数计算等级列的游标;创建一个计算特定学号学生总分的两个存储过程;创建防止数据库被修改的DDL触发器。
组长签字:
年 月 日
指导教师对课程设计的评价
指导教师签字:
年 月 日
目 录
1 需求分析 …………………………………………………………1
1.11.21.31.4
需求背景…………………………………………………………1 选课分析……………………………………………………………1 数据事实……………………………………………………………1 主要用户视图………………………………………………………3
2 概念结构设计 …………………………………………………………4 2.1局部ER图……………………………………………………………4 2.2全局ER图…………………………………………………………5 3 逻辑结构设计…………………………………………………………5 3.1关系模型………………………………………………………5 3.2关系数据表………………………………………………………5 3.3数据字典…………………………………………………………7 4 物理结构设计 …………………………………………………………7 4.1创建数据库……………………………………………………7 4.2 创建数据库的表…………………………………………………………8 5 主要功能详细设计设计 ……………………………………………………9 5.15.2 5.3 5.4 5.5 5.6 5.7
实现数据查询…………………………………………………………9 创建自定义函数………………………………………………………9 创建视图…………………………………………………………10 创建游标…………………………………………………………11 创建存储过程…………………………………………………………12 创建触发器…………………………………………………………14 创建事务和索引……………………………………………………………14
1 需求分析
1.1:需求背景
随着信息时代科技不断提高,学校规模不断扩大,教学质量不断提高,大学期间有许多公共选修课,以往的选修课方法是课堂报名或者纸上填写方式报名,这种方法虽然直接,但是造成选课的盲目性,而且学生选过课程后不好在更改查看,一方面浪费大量的人力,物力资源,另一方面浪费时间以及在认为统计过程中不可避免的出现差错的情况。这给广大的老师和学生带来诸多的不便,管理起来也相当困难。使用网上选课系统可以提前进行网上选课,并且选课以后学生还可以在查看和更改,随意选择各个老师的课程,老师管理起来也比较方便。鉴于它的重要性,这就迫切需要研制开发一款功能强大,操作简单,具有人性化的网上选课系统。
1.2:选课分析
根据分析,本系统的实体有学生、教师、课程,而联系有选课信息和讲授。
描述学生的属性有:学号、院系、姓名、性别、出生日期、入学时间、专业、班级。 描述教师的属性有:教师编号、姓名、性别、职称、专业。
描述课程的属性有:课程编号、课程名称、课程类型、学时、学分。 描述选课信息的属性有:学号、课程编号、考试成绩。
描述讲授的属性有: 教师编号、课程编号、上课时间、上课地点。 1.3:数据事实
用户的需求具体体现在各种信息的提供、保存、更新和查询上,这就要求数据库结构能够满足各种信息的输入与输出。在对学生选课管理进行分析的基础上,本系统所涉及的主体共有5个数据表:学生表,教师表,课程表,选课信息表,讲授表,分别如下图所示。
表1-1 学生表
1
表1-2 教师表
表1-3 课程表
表1-4 选课信息表
2
表1-5 讲授表
1.4 主要用户视图
以下分别为选课学生的视图,教师讲课视图和选课信息视图。
图1-1 选课学生的视图
图1-2 教师讲课的视图
3
图1-3 选课信息的视图
2 概念结构设计
2.1 局部ER图 学号 课程名称 课程编 号 学生 姓名 性别 出生日期 教师 入学时间 院系 专业 班级 教师编号 姓名 性别 职称 所属专业 课程 课程类型 4 学时 学分 2.2 全局ER图 数据库的E-R图 学号成绩 学生 m 姓名 性别 出生日期上课 时间 选课 n n m 教师编号 入学时间 上课地点 姓名 院系 性别 专业 班级 课程 讲授 教师 职称 专业 课程 编号 课程名称 课程 类型 学时 学分 3 逻辑结构设计
3.1 关系模型:
学生(学号、姓名、性别、出生日期、入学时间、院系、专业、班级) 教师(教师编号、姓名、性别、职称、专业)
课程(课程编号、课程名称、课程类型、学时、学分) 选课信息(学号、课程编号、考试成绩)
讲授(教师编号、课程编号、上课时间、上课地点) 3.2关系数据表:
5
属性名 学号 姓名 数据类型 char(10) char(10) 学生表 可否为空 否 否 否 否 否 否 否 否 教师表 可否为空 否 否 否 否 否 课程表 可否为空 否 否 否 否 可以 可以 可以 可以 完整性约束 主码 性别 char(2) 出生日期 char(10) 入学时间 Char(10) 专业 char(10) 院系 char(10) 班级 char(10) 属性名 教师编号 姓名 性别 职称 专业
属性名 教师编号 课程名称 授课教师 课程类型 上课时间 上课地点 学时 学分
属性名 学号 课程编号 成绩
数据类型 char(10) char(10) Char(10) char(10) char(10) char(10) Char(10) Char(10) 数据类型 char(10) char(10) char(2) char(10) char(20) 完整性约束 主码 完整性约束 主码 选课信息表 数据类型 可否为空 char(10) 否 char(10) 否 Char(10) 否 完整性约束 主码 讲授表
属性名 课程号 教师号 上课时间
6
数据类型 char(10) char(10) Char(10) 可否为空 否 否 否 完整性约束 主码
3.3数据字典:
数据项编号 JS001 JS002 JS003 数据项名称 学生编号 学生学院 学生姓名 学生性别 学生出生日期 学生入学时间 学生专业 学生班级 教师编号 教师姓名 教师性别 教师职称 教师专业 课程编码 课程名称 课程类型 上课时间 上课地点 上课学时 上课学分 学生课程成绩 存储结构 Char(10) Char(20) Char(10) Char(2) Char(10) Char(10) Char(10) Char(10) Char(10) Char(10) Char(2) Char(10) Char(10) Char(10) Char(20) Char(20) Char(20) Char(20) Char(10) Char(10) Char(10) 别名 学号 学院 姓名 性别 出生日期 入学时间 专业 班级 编号 姓名 性别 职称 专业 课程号 课程名 类型 时间 地点 学时 学分 成绩
JS004 JS005 JS006 JS007
JS008 JS009
JS0010 JS0011
JS0012 JS0013 JS0014
JS0015 JS0016
JS0017 JS0018 JS0019 JS0020 JS0021 4 物理结构设计
--创建数据库和表
CREATE DATABASE 学生选课管理 GO
USE 学生选课管理
7
CREATE TABLE 学生表 (
学号 char(10) NOT NULL PRIMARY KEY, 姓名 char(10) NOT NULL,
性别 char(2) NOT NULL default '男' check(性别='男' or 性别='女'), 出身日期 char(10) NOT NULL, 入学时间 char(10) NOT NULL, 专业 char(10) NOT NULL, 班级 char(10) NOT NULL, 学院 char(10) NOT NULL )
CREATE TABLE 教师表 (
教师编号 char(10) NOT NULL PRIMARY KEY, 姓名 char(10) NOT NULL,
性别 char(2) NOT NULL default '男' check(性别='男' or 性别='女'), 职称 char(10) NOT NULL, 所属专业 char(20) NOT NULL )
CREATE TABLE 课程表 (
课程编号 char(10) NOT NULL primary key, 课程名称 char(20) NOT NULL, 课程类型 char(10) NOT NULL, 学时 char(10), 学分 char(10) )
Create table 选课信息表 (
学号 char(10), 课程编号 char(10), 考试成绩 Int,
Primary key(学号,课程编号),
Foreign key(学号) references 学生表(学号),
Foreign key(课程编号) references 课程表(课程编号) )
Create table 讲授表 (
课程号 char(10), 教师号 char(10),
上课时间 char(20) NOT NULL, 上课地点 char(10) NOT NULL,
8
Primary key(教师号,课程号),
Foreign key(教师号)references 教师表(教师编号), Foreign key(课程号) references 课程表(课程编号) )
5 主要功能详细设计
5.1 功能:通过sql语句实现对表中信息的查询 (1).实现代码:简单 (主要完成人:李 肖 )
USE 学生选课管理
delete from 学生表 where 学号='s0012'
update 学生表 set 学院 = '数理学院', 专业='数学', 班级= '1班'where 学号='s0001' insert into 学生表
values ('s0012','蔡文姬','女','19900807','20080901','化学','5班','化工学院')
select * from 学生表 where 学号='s0001' select * from 学生表 where 姓名='曹操' select * from 学生表 where 性别='女' select * from 学生表 where 专业='数学' select * from 选课信息表,课程表
where 选课信息表.学号='s0002' and 选课信息表.课程编号=课程表.课程编号
(2)实现代码:通过复杂sql语言实现复杂的查询功能 (主要完成人:胡上彪 USE 学生选课管理 select * from 学生表 where 学生表.学号=( select 选课信息表.学号 from 选课信息表
group by 选课信息表.学号 having count(选课信息表.学号)!<4)
select * from 学生表
where 学生表.学号 in(select 选课信息表.学号 from 选课信息表
where 选课信息表.考试成绩!<60 and 学生表.姓名 like'孙%' and 学生表.性别='女')
select 选课信息表.课程编号,avg(选课信息表.考试成绩) as 平均分 from 选课信息表 group by 选课信息表.课程编号 having count(选课信息表.学号)>=3
5.2 主要应用(函数)
(1).功能:实现对选课学生的男女比例调查(主要完成人:胡上彪 )
9
)
实现代码:
USE 学生选课管理 GO
IF EXISTS(SELECT * FROM sysobjects WHERE name='fun1' and type='FN') DROP FUNCTION fun1 GO
create function fun1() returns float as begin
declare @b float,@g float
select @b=count(*) from 学生表 where 性别='男' select @g=count(*) from 学生表 where 性别='女' return @b/@g end go
PRINT '该学校的男女比例为:'+CAST(dbo.fun1() AS char(10)) GO
(2).功能:按学号查询某学生成绩的最低分 (主要完成人:李 肖 )
USE 学生选课管理 GO
IF EXISTS(SELECT * FROM sysobjects WHERE name='fun2' and type='TF') DROP FUNCTION fun2 GO
create function fun2(@xh char(10)) returns @st TABLE (
min float ) as begin
INSERT @st
select MIN(选课信息表.考试成绩) FROM 选课信息表
where 选课信息表.学号=@xh AND 选课信息表.考试成绩 IS NOT NULL return end
5.3主要应用(视图)
(1)功能:创建了学生选课的视图和教师教授的视图 (主要完成人:胡上彪) 实现代码:
USE 学生选课管理 go
create view 选课学生的视图 as
select S.学号, S.姓名,
S.学院, C.课程编号, C.课程名称, SE.考试成绩 from 学生表 S join 选课信息表 SE on S.学号=SE.学号 join 课程表 C on C.课程编号=SE.课程编号
10
go
USE 学生选课管理
SELECT * FROM 选课学生的视图
USE 学生选课管理 go
create view 教师讲授的视图 as
select T.教师编号, T.姓名,
T.性别, T.职称, C.课程名称, C.学时, SE.上课时间, SE.上课地点
from 教师表 T join 讲授表 SE on T.教师编号=SE.教师号 join 课程表 C on C.课程编号=SE.课程号 go
USE 学生选课管理
SELECT * FROM 教师讲授的视图
(2).功能:构建选课信息视图 (主要完成人:李 肖 )
实现代码:
GO
create view 课程信息的视图 as
select C.课程编号, C.课程名称,C.学分,C.学时,T.姓名,J.上课地点,J.上课时间 from 课程表 C join 讲授表 J on C.课程编号=J.课程号 join 教师表 T on T.教师编号=J.教师号 go
USE 学生选课管理
Select * FROM 课程信息的视图 go
5.4主要应用(定义游标和使用游标)
(1).功能:打印各个学生的平均分 (主要完成人:胡上彪 )
实现代码:
USE 学生选课管理 go
set nocount on
declare @sno char(10),@sname char(10),@savg float declare st_cursor CURSOR
FOR SELECT 学生表.学号,学生表.姓名,AVG(选课信息表.考试成绩) from 学生表,选课信息表
where 学生表.学号=选课信息表.学号 and 选课信息表.考试成绩 IS NOT NULL group by 学生表.学号,学生表.姓名 order by 学生表.学号 open st_cursor
fetch next from st_cursor into @sno,@sname,@savg print '学号 姓名 平均分'
print '--------------------------------------'
11
while @@FETCH_STATUS=0 begin
print @sno+' '+@sname+' '+cast(@savg as char(6)) fetch next from st_cursor into @sno,@sname,@savg end
close st_cursor deallocate st_cursor GO
(2).功能:根据成绩评定学生等级 (主要完成人:李 肖 )
实现代码:
USE 学生选课管理
alter table 选课信息表 add 等级 char(2) go
declare s_cursor CURSOR FOR
SELECT 选课信息表.考试成绩 from 选课信息表 where 选课信息表.考试成绩 IS NOT NULL declare @fs int,@dj char(2) open s_cursor
fetch next from s_cursor into @fs while @@FETCH_STATUS=0 begin
set @dj=case
when @fs>=90 then 'A' when @fs>=80 then 'B' when @fs>=70 then 'C' when @fs>=60 then 'D' when @fs<60 then 'E' end
update 选课信息表 set 等级=@dj where current of s_cursor
fetch next from s_cursor into @fs end
close st_cursor deallocate st_cursor GO
select * from 选课信息表 order by 学号 go
alter table 选课信息表 drop column 等级 GO
5.5主要应用(存储过程)
(1).功能:按学号查询并输出某学生所选课程的成绩总和(主要完成人:李 肖 ) 实现代码:
USE 学生选课管理 GO
12
IF EXISTS(SELECT * FROM sysobjects WHERE name='sum' and type='P') drop procedure sum GO
create proc sum ( @s_no char(10),
@s_name char(10) output, @s_sum float output )as
select @s_name=学生表.姓名,@s_sum=SUM(选课信息表.考试成绩) from 选课信息表,学生表
where 学生表.学号=选课信息表.学号 group by 学生表.学号,学生表.姓名 having 学生表.学号=@s_no go
USE 学生选课管理
IF EXISTS(SELECT * FROM sysobjects WHERE name='sum' and type='P') begin
DECLARE @st_name char(10) DECLARE @st_sum float
EXEC sum 's0003',@st_name output,@st_sum output select '姓名'=@st_name,'总分'=@st_sum end GO
(2)功能:通过存储过程实现对学生成绩的评级 (主要完成人:胡上彪 )
实现代码:
USE 学生选课管理 GO
IF EXISTS(SELECT * FROM sysobjects WHERE name='stud_degree' and type='P') drop procedure stud_degree GO
create proc stud_degree(@学号 char(10)='s0003',@课程号 char(10)='c0001',@成绩等级 char(1) output)as begin
select @成绩等级= case
when 考试成绩>=90 then 'A' when 考试成绩>=80 then 'B' when 考试成绩>=70 then 'C' when 考试成绩>=60 then 'D' when 考试成绩<60 then 'E' end
from 选课信息表
where 学号=@学号 and 课程编号=@课程号 end
13
go
5.6主要应用(触发器) (1)功能:通过触发器实现未选课的学生不能从学生实体中删除(主要完成人:胡上彪 )
实现代码:
USE 学生选课管理 GO
IF EXISTS(SELECT * FROM sysobjects WHERE name='SC_studentdel' and type='TR') drop trigger SC_studentdel GO
create trigger SC_studentdel on 学生表 instead of delete as begin
declare @temp char(10)
select @temp=学号 from deleted
if (select count(选课信息表.学号) from 选课信息表 where 选课信息表.学号=@temp)=0 print'未选课的学生不能从学生实体中删除' end go
USE 学生选课管理
IF EXISTS(SELECT * FROM sysobjects WHERE name='SC_studentdel' and type='TR') delete from 学生表 where 学号= 's0012' GO
(2).功能:数据库中各表一经实现不可更改 (主要完成人:李 肖 )
实现代码:
USE 学生选课管理 GO
create trigger safe
on DATABASE AFTER DROP_TABLE,ALTER_TABLE,CREATE_TABLE as begin
RAISERROR('不能修改表结构',16,2) ROLLBACK end go
USE 学生选课管理
ALTER TABLE 学生表 ADD 民族 char(5) GO
5.7主要应用(事务和索引) (主要完成人:胡上彪 ) 实现代码:
USE 学生选课管理 go
begin tran mytran
14
insert into 学生表
values ('s0013','张春华','女','19900227','20080901','化学','2班','化工学院') save tran mytran insert into 学生表
values ('s0014','祝融','女','19920807','20080901','化学','1班','化工学院') ROLLBACK TRANSACTION mytran COMMIT TRANSACTION GO
SELECT * FROM 学生表 Go
USE 学生选课管理
IF EXISTS(SELECT name FROM sysobjects WHERE name='IDX_tno') drop INDEX 教师表.IDX_tno GO
CREATE INDEX IDX_tno ON 教师表(教师编号) GO
USE 学生选课管理 go
EXEC sp_helpindex 教师表 GO
USE 学生选课管理
IF EXISTS(SELECT name FROM sysobjects WHERE name='IDX_bhname') drop INDEX xuesb.IDX_bhname GO
CREATE INDEX IDX_bhname ON 学生表(专业,姓名) GO
USE 学生选课管理 go
EXEC sp_helpindex 学生表 GO
15
正在阅读:
课程设计说明书301-02
越南芽庄作文800字06-22
F-计算机工程与设计.基于款式设计的虚拟三维服装真实感效果模拟07-28
创新能力培养试题答案96分05-15
pc-crash 中文介绍05-26
快乐的端午作文800字06-27
浅议开展反假人民币工作的难点及对策10-07
06年-10年北京市中考化学计算题05-23
全桥LLC03-11
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 说明书
- 课程
- 设计
- 2018年新疆中考数学试卷及答案
- 三叶型转子泵厂家十大品牌-上海阳光泵业
- 2011海淀区一模英语试题 - 图文
- 社区治理网上形考答案解析
- 常州市专业技术人员继续教育 低碳经济 考试90分
- 中国电子警察行业市场调研与投资策略研究报告(2014-2019)
- 如何分析所给材料中对立问题的1道经典例题
- 深宫谍影剧情介绍
- 2016年互联网行业用工薪酬报告
- 海底捞服务营销策略
- matlab解决svr代码
- 高级英语(张汉熙)资料
- PCB板电磁兼容分析(化二点评) - 图文
- 河南省业主大会和业主委员会指导规则
- 2015年江苏省无锡市东林中学七年级下学期数学期末试卷及解析答案
- 电子商务 期末总复习
- SCI论文的三点注意-美辑编译
- 小学语文教师校本研修工作总结
- 中小企业制度建设的工作设想-精品文档
- 2008年小学毕业班模拟考试(之六)