资源描述
学 生 实 验 报 告
学 院: 用友软件学院
课程名称: 计算机应用技术
专业班级: 08软件4班
姓 名: 尚丽娟
学 号: 0088234
学生实验报告
学生姓名
尚丽娟
学号
0088234
同组人:无
实验项目
数据完整性验证
√必修 □选修
□演示性实验 □验证性实验 √操作性实验 □综合性实验
实验地点
H123
实验仪器台号
指导教师
熊碧舟
实验日期及节次
2010年11月24日5,6节
一、实验综述
1、实验目的及要求
目的: 熟悉使用存储过程和游标来进行数据库应用程序的设计。
要求: 对学生课程数据库,编写存储过程,完成下面功能:
1)统计任意一门课的平均成绩
2)统计任意一门课的成绩分布情况,即按照各分数段统计人数
3)查找某个学生的选课信息
4)将学生成绩从百分制改为等级制(即A、B、C、D、E)
5)在SC表中插入新列“status”,检查学生成绩,如果有同学不及格,status值为 “重修”,如果及格, status值为 “取得学分”,如果暂时没有成绩, status值为 “待定”
2、实验仪器、设备或软件
实验仪器:计算机1台
软件:windows XP ,SQL Server 2000
二、 实验过程(实验步骤、记录、数据、分析)
1)统计任意一门课的平均成绩
create procedure avg_course
@HCourse char(20)
as
select avg(grade)
from sc,course
where cname=@HCourse and sc.cid=course.cid
go
exec avg_course’大学英语’
三、
2)统计任意一门课的成绩分布情况,即按照各分数段统计人数
create procedure st_cou
@Hcname char(20)
as
select count(sid) as 优秀人数
from sc,course
where course.cid=sc.cid and Cname=@Hcname and grade
between 90 and 100
select count(sid) as 良好人数
from sc,course
where course.cid=sc.cid and Cname=@Hcname and grade
between 80 and 89
select count(sid) as 一般
from sc,course
where course.cid=sc.cid and Cname=@Hcname and grade
between 70 and 79
select count(sid) as 及格
from sc,course
where course.cid=sc.cid and Cname=@Hcname and grade
between 60 and 69
select count(sid) as 不及格
from sc,course
where course.cid=sc.cid and Cname=@Hcname and grade
between 59 and 0
然后进行验证
exec st_cou '大学英语’
3)查找某个学生的选课信息
create procedure stu_
@Hstu char(4)
as
select *
from student,sc
where sname=@Hstu and student.sid=sc.sid
go
然后进行验证
exec stu_ '张三'
4)将学生成绩从百分制改为等级制(即A、B、C、D、E)
Create procedure change_grade
As
Declare @sid char(4), @cid char(4), @grade int,@grade_char char(1)
Declare cur_grade cursor for select sid ,cid, grade from sc
Open cur_grade
Fetch next from cur_grade into @sid,@cid,@grade
While @@fetch_status=0
begin
If @grade>90 and @grade<=100 set @grade_char='A'
else if @grade>80 and @grade<=90 set @grade_char='B'
else if @grade>70 and @grade<=80 set @grade_char='C'
else if @grade>60 and @grade<=70 set @grade_char='D'
else set @grade_char='E'
Update sc
set newgrade=@grade_char
where sid=@sid and cid=@cid
Fetch next from cur_grade into @sid,@cid,@grade
end
close cur_grade
deallocate cur_grade
exec change_grade
5)在SC表中插入新列“status”,检查学生成绩,如果有同学不及格,status值为 “重修”,如果及格, status值为 “取得学分”,如果暂时没有成绩, status值为 “待定”
Create procedure status_sc
As
Declare @sid char(4), @cid char(4), @grade int,@status char(10)
Declare cur_grade cursor for select sid ,cid, grade from sc
Open cur_grade
Fetch next from cur_grade into @sid,@cid,@grade
While @@fetch_status=0
begin
if @grade>60 set @status='取得学分'
else if @grade<60 set @status='重修'
else set @status='待定'
Update sc
set status=@status
where sid=@sid and cid=@cid
Fetch next from cur_grade into @sid,@cid,@grade
end
close cur_grade
deallocate cur_grade
然后进行验证
exec status_sc
在企业管理器的SC表里面检查
三、结论
1、实验结果
试验中,建立存储过程st_cou,stu_,status_sc能够成功,并且在输入“exce 存储过程名”验证的时候均能成功,或者均能影响行数的发生。并且能够能够定义游标和使用游标、
2、分析讨论
在进行建立存储过程的时候后面一定要定义存储名,在试验中学会使用存储过程来查看,修改,删除,存储过程带来很大的方便在使用数据库的时候,在使用游标的时候一定要记清楚四个过程,说明游标->打开游标->推进游标->关闭游标。
四、指导教师评语及成绩:
评语:
成绩: 指导教师签名:熊碧舟
批阅日期:2010-11-27
展开阅读全文