- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Declare @avgscore numeric(10,2) --平均成绩
Declare @cterm int --学期
--定义班级游标
Declare class_cursor cursor for select clname,clno,dbo.termconvert(@term,clno) from class where dbo.termconvert(@term,clno)<=8 --过滤掉已经毕业的班级
图1-6
如果联系具有属性则使用association Link工具。
7)验证CDM的正确性
toolsCheckModel,打开图1-7所示窗口,选择要检测的内容,单击确定。检查结果包括警告和错误,警告不影响生成PDM(物理模型),有错误则不能生成PDM。
图1-7
实验二学籍管理逻辑结构和物理结构设计
1、实验目的
图1-1
3)双击创建的实体符号,打开图1-2所示窗口,在此窗口“General”标签中可以输入实体的名称、代码、描述等信息。
图1-2
4)添加实体属性:上述窗口的“Attributes”选项标签可以添加属性,如图1-3所示。
图1-3
其中:P列表示该属性是否为主标识符;D列表示该属性是否在图形窗口中显示;M列表示该属性是否为强制的,即该列是否为空值。
Open class_cursor
Fetch next from class_cursor into@clname, @clno , @cterm
While @@fetch_status=0
Begin
Set @avgscore=(select isnull(avg(score),0) from sc a,student b,class c,course d where a.sno=b.sno and b.clno=c.clno and b.clno=@clno and a.cno=d.cno and d.cterm=@cterm)
As
Begin
Return
Case sign(@score-60)
When 1 then @ccredits
When 0 then @ccredits
When -1 then 0
End
end
2)学期转换函数
功能要求:在学籍管理系统中,没门课程都会规定学期(如学生入学后第4学期)开课,而入学时间不同,对应的具体开课时间也不同。如2010-2011-1对应于08级的同学应该是第5学期,该函数的作用既是实现将形如“2010-2011-1”的学期表示形式转换为5的其表示形式。
3、实验步骤
1)选择Database-> Generate Database。如图3-1所示。设置directory和filename,单击确定。
图3-1
2)执行脚本,生成数据库对象。首先启动SQL Server2000,建立数据库。PowerDesigner提供两种方法执行脚本,一种是在SQL Server2000中手工执行脚本,生成数据库对象,还有一种是通过ODBC连接数据库口自动执行。前一种方法很简单,我们重点说一下后一种方法。
实验一学籍管理概念结构设计
1、实验目的
1)熟练掌握概念结构设计的方法
2)熟练掌握PowerDesigner进行CDM设计及检测CDM模型的方法
2、实验内容
PowerDesigner CDM可以描述概念结构,根据前面对学籍管理基本情况的描述,使用PowerDesigner进行学籍管理CDM设计。
3、实验步骤
参数
说明
Minimum
属性可接受的最小数值
Maximum
属性可接受的最大数值
Default
属性不赋值时,系统提供的默认值
Unit
单位,如公里、吨、元
Format
属性的数据显示格式
Lowercase
属性的赋值全部变为小写字母
Uppercase
属性的赋值全部变为大写字母
Cannot modify
该属性一旦赋值不能再修改
表1学籍管理主要功能表
序号
功能名称
功能说明
1
学生管理
登记学生的基本信息,并提供查询的功能
2
课程管理
登记课程的基本情况,提供查询功能
3
教师管理
登记教师的基本信息,提供查询统计功能
4
成绩管理
登记各门课程的考试成绩,提供查询统计功能
5
授课管理
登记教师授课情况,提供查询功能
6
编码维护
维护系统中使用的编码
学籍管理基本情况:一个学院包含多个班级和多名教师,每个班级包括多名学生,根据学校规定,一个班级只有一个班主任,一个老师也只担任一个班级的班主任,一个学院有多名班主任,学院的属性有学院编号和学院名称,班级的属性有班级编号和班级名称,学生的属性有学号、姓名、性别和出生日期;每个学生可以选修多门课程,每门课程也可以被多个学生选修,学生选修课程后参加考试会有考试成绩,一个教师可以讲授多门课程,每一门课程也可以有多个教师讲授,教师授课要考虑授课地点以及授课的学期,一个教师可以受聘一种职称,一个职称可以聘任多个教师,每门课程属于一种课程类型,而每种课程类型可以包含很多门课程,每门课程最多只有一门先修课程。课程的属性包括课程编号、课程名称、课程介绍、开设学期、总学时、学分以及先修课程,教师的属性有教师编号、姓名、性别、出生日期、参加工作时间,职称的属性有职称编号和职称名称,课程类型的属性有课程类型编号和课程类型说明。
3)通过控制面板管理工具中的ODBC数据源先创建好数据源,然后Database->connect,如图3-2所示,下拉列表中选择创建好的数据源名称,单击connect。
图3-2
4)Database->execute SQL,如图3-3所示。
图3-3
打开要执行的脚本文件,单击run即可。
5)产生测试数据。Database->generate test data。
实验四学分学期转换函数设计
1、实验目的
通过韩式的编写与调试,熟练掌握SQL函数的编写、调试与使用方法。
2、实验内容
1)编写学分转换函数,将考试成绩转换为学分。
2)编写学期转换函数。
3、实验步骤
1)学分转换函数
功能要求:在学籍管理中,根据学生选修课程的成绩,查询所获得学分情况。如果成绩大于等于60,则可以获得该课程的学分,否则所得学分为0。
1)熟练掌握E-R图转换为关系模式的方法
2)掌握使用PowerDesigner将CDM转化为PDM的方法
3)掌握设计视图的方法
2、实验内容
1)PowerDesigner中的PDM可以描述逻辑结构和物理结构,选择SQL Server 2000为DBMS,使用PowerDesigner进行学籍管理PDM的设计。两种方法可以实现,一种方法是直接使用PDM设计元素进行设计,另一种方法是直接将CDM转换为PDM。
List Of Values
属性赋值列表,除列表中的值,不能有其他的值
Label
属性列表值的标签
6)建立联系:在图形窗口中创建两个实体后,单击Relationship工具,单击一个实体,在按下鼠标左键的同时把光标拖至别一个实体上并释放鼠标左键,这样就在两个实体之间创建了联系,右键单击图形窗口,释放工具。双击联系图标,打开窗口如图1-6所示。
end
实验五存储过程设计
1、实验目的
熟练掌握存储过程的编写、调试与使用方法。
2、实验内容
1)编写汇总平均成绩的存储过程,实现自动汇总某学期各班平均成绩、每个同学的平均成绩及所获得学分。
3、实验步骤
1)汇总平均成绩的存储过程
入口参数:学期
算法:建立班级的游标,使用循环结构,根据班级编号中的入学年份和入口参数(如“2010-2011-1”表示的学期),通过学期转换函数,使用选课表、课程表、班级表和学生表查询班级在本学期开设的所有课程的平均成绩。如果平均成绩是0,说明本班所有课程成绩没有登记;否则汇总本班级每个学生在本学期的所有课程平均成绩。处理完一个班级后,通过游标处理下一个班级。
Select e.sname,d.avgscore,totalcredit from
--根据班级平均成绩判断该班的成绩是否登记,如果平均成绩>0,则计算每名学生的平均成绩
If @avgscore>0
Begin
Print @term+’学期’+@clname+’各门课程总平均成绩为’+str(@avgscore,5,1)
--每个学生的平均成绩和获得的学分
Print‘该班每个学生的平均成绩如下:’
1)选择filenew modelConceptualDataModel,建立CDM模型(即概念数据模型)。
2)创建实体,在CDM的图形窗口中,单击设计元素面板上Entity工具(实体),再单击图形窗口的空白处,在单击的位置就出现一个实体符号。点击Pointer工具或右击鼠标,释放Entitiy工具。如图1-1所示。
参考:
Create procedure p_averagescore @trem varchar(11) --入口参数:学期
As
Begin
Declare @cno varchar(5) --课程编号
Declare @clname varchar(30) --班级名称
Declare @clno varchar(6) --班级编号
2)设计用户自模式(视图)。
为学籍管理人员建立如下子模式:
学生基本情况(学号,姓名,性别,班级,学院,获取总学分)
为学生建立如下子模式:
考试通过基本情况百度文库学号,姓名,班级,课程名称,成绩)
为教师建立如下子模式:
选修学生情况(课程编号,学号,姓名,班级,学院,平均成绩)
授课效果(课程编号,选修学期,平均成绩)
3、实验步骤:
1)toolsGenerate Physical Data Model。如图2-1所示。从DBMS下拉列表框选择Microsoft SQL Server 2000,选择Share单选按钮,单击OK即可。
图2-1
2)创建视图
从设计元素面板上选择视图(view),在设计区创建一个视图,双击该视图,进入如图2-2所示界面,创建视图一般需要设置“General”选项卡中的属性和图2-3所示“SQL Query”选项卡中的SQL语句。
入口参数:成绩和课程学分。
返回值:应得学分。
参考:
Create function creditconvert(@score numeric(3,1),@ccredits numeric(3,1) )
--@score:考试成绩
--@numeric课程规定学分
Returns numeric(5,2) --应得学分
《数据库系统原理》实验指导
信息管理系
2010.9
背景知识介绍
学籍管理是学校管理中一项繁琐的工作,管理人员需要建立学生的学籍,汇总每学期没有拿到规定学分的学生以及这些学生的详细情况;学生完成一门课程的学习后,教师需要录入学生的考试成绩,计算平均成绩、汇总各分数段的人数,学生需要查询已结业的各门课程的成绩;班主任需要查询本班学生学习情况,包括各门课程的平均成绩和每个学生的考试通过情况,为此,设计一套实用的学籍管理系统就可以大大简化管理人员、班主任和任课教师的工作,方便学生查询自己的学习情况。该系统主要实现的功能如表1所示。
5)设置检查约束
如果需要给某些属性设置检查约束,首先选中某属性,然后鼠标点击图1-4红色矩形框所示按钮,或者双击属性,打开对话框,选Standard Checks标签,如图1-5所示。
图1-4
图1-5
在这个选项卡可以定义属性的标准检查约束,窗口中每项的参数的含义,如表2所示。
表2 对话框中参数的含义
入口参数:学年和入学年份
返回值:数字表示的学期。
参考:
Create function termconvert(@trem char(11),@clno char(6) )
--@trem:学年
--@clno:班级编号
Returns int --在校第几学期
As
Begin return(convert( numeric,substring(@trem,1,4))-convert( numeric,’20’+substring(@clno,1,2)))*2+convert( numeric,substring(@trem,11,1))
图2-2
图2-3
实验三学籍管理数据库实施
1、实验目的
1)熟练掌握数据库实施的内容。
2)使用PowerDesigner生成数据库脚本并自动创建数据库,熟练掌握利用PowerDesigner进行数据库实施的方法。
2、实验内容
使用PowerDesigner生成学籍管理数据库及其对象的创建脚本并自动创建数据库,进行学籍管理数据库实施。