教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

课程设计说明书3(5)

来源:网络收集 时间:2026-09-07
导读: 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).功能:根据成绩评定学生

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

…… 此处隐藏:1301字,全部文档内容请下载后查看。喜欢就下载吧 ……
课程设计说明书3(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/605205.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)