最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

学生信息管理系统实验报告

来源:动视网 责编:小OO 时间:2025-09-24 13:05:54
文档

学生信息管理系统实验报告

学生信息管理系统实验报告顾宏一.需求分析学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作
推荐度:
导读学生信息管理系统实验报告顾宏一.需求分析学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作
学生信息管理系统实验报告

顾宏

一.需求分析

学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 

    作为计算机应用的一部分,使用计算机对学生信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生信息管理的效率.

二.概念设计(E-R图)(表设计)

用sql-server绘制数据库模型关系图:

三.规范化设计

⑴student表结构

字段数据类型长度是否允许空值备注
学号gh_st_id

Char10主键
姓gh_st_fname

Char10
名gh_st_lname

Char

10
性别gh_st_sex

Char5男或女
地址gh_st_addr

Char

100
班级gh_st_class

Char30
专业gh_st_sp

Char30
邮箱gh_st_mail

Char10
电话gh_st_phone

Char15
备注gh_st_desc

Text
⑵course表结构

字段数据类型长度是否允许空值备注
课程号gh_co_id

Char10主键
课程名gh_co_name

Char30
备注gh_co_desc

Text
教师gh_te_id

Char10外键
⑶score表结构

字段数据类型长度是否允许空值备注
学号gh_st_id

Char10外键当主键
课程号gh_co_id

Char10外键当主键
成绩gh_sc_num

Tinyint在1~100之间

⑶teacher表结构

字段数据类型长度是否允许空值备注
工号gh_te_id

Char10主键
姓gh_te_fname

Char10
名gh_te_lname

Char

10
电话gh_te_phone

Char15
备注gh_te_desc

Text
四.存储过程设计

1)首先建立名为guhong的数据库:

2)定义guohong_student表:

2)定义guohong_teacher表:

3)定义guohong_course表:

4)定义guohong_score表:

5)查看MS企业管理器(多了四个表):

6)为数据库各表建立索引(如果各表的数据海量,可以加快查询的速度):

7)创建各表的存储过程:

drop  procedure  guhong_student_pro

go

create procedure  guhong_student_pro

 ( @学号 char(10),

   @姓 char (10),

   @名 char (10),

   @性别 char (5) ='男' ,

   @住址 char(100),

   @班级 char(30),

   @专业 char(30),

   @邮箱 char(30),

   @电话号码 char(15),

   @备注 text,

   )

as

insert into  guhong_student  values(@学号, @姓,@名, @性别, @住址, @班级, 

@专业, @邮箱, @电话号码,@备注)

go

五.触发器设计

(1)插入触发器

触发guohong_student表

drop trigger guohong_student_insert_trig

go

create trigger guohong_student_insert_trig

on guohong_student

for insert 

as

select * from guohong_student

go

当在guohong_student表中插入某一字段,将触发insert事件,

在guohong_student表插入该学生所一个部分新记录,并将结果显示到查询分析器上。

触发guohong_course表

drop trigger guohong_course_insert_trig

go

create trigger guohong_course_insert_trig

on guohong_course

for insert 

as

select * from guohong_course

go

当在guohong_course表中插入某一字段,将触发insert事件,

在guohong_course表插入该学生所一个部分新记录,并将结果显示到查询分析器上。

触发guohong_teacher表

drop trigger guohong_teacher_insert_trig

go

create trigger guohong_teacher_insert_trig

on guohong_teacher

for insert 

as

select * from guohong_teacher

go

当在guohong_teacher表中插入某一字段,将触发insert事件,

在guohong_teacher表插入该学生所一个部分新记录,并将结果显示到查询分析器上。

(2)更新触发器

创建一个触发器,它实现当guohong_student表中gh_st_id学号字段的更改,将同步实现guohong_score的学号的改变。

drop  trigger  guohong_score_update_trig

go

create Trigger guohong_score_update_trig

on guohong_student 

for update  

As 

if update(gh_st_id)       

begin 

update guohong_score 

set guohong_score.gh_st_id=i.gh_st_id

from guohong_score as br , deleted as d ,inserted as i      

Where br.gh_st_id=d.gh_st_id

end        

go

创建一个触发器,它实现当guohong_course表中gh_co_id课程号字段的更改,将同步实现guohong_score的课程号的改变。

drop  trigger  guohong_course_update_trig

go

create Trigger guohong_course_update_trig

on guohong_course

for update  

As 

if update(gh_co_id)       

begin 

update guohong_score 

set guohong_score.gh_co_id=i.gh_co_id

from guohong_score as br , deleted as d ,inserted as i      

Where br. gh_co_id =d. gh_co_id

end        

go

在guohong_score表创建学生课程成绩在0到100之间的触发器(假如之前并未创建0-100分约束)

drop trigger guohong_score_check_gh_sc_num_0to100_trig

go

create trigger guohong_score_check_gh_sc_num_0to100_trig

on guohong_score

for update,insert

as

if exists(select * from inserted where <0 or gh_sc_num>100)

begin

print '请输入学生课程成绩在0到100分之间的数!'

rollback transaction

end

go

之前我通过alter table guohong_score drop constraint cs3已经成功删除了原约束,现在插入一条成绩101的记录,触发器检测到马上发出警告:

(3)删除触发器

当删除guohong_student中gh_st_id基本信息时,将同步实现guohong_score相应的记录整行的级联删除。  

drop trigger guohong_score_cascade_delete_trig

go

create trigger guohong_score_cascade_delete_trig

on guohong_student

for delete

as

begin

delete guohong_score

from deleted as d1 , guohong_score as br1

where d1.gh_st_id=br1.gh_st_id

end

go为何是delete score的表??

当删除guohong_course中gh_co_id基本信息时,将同步实现guohong_score相应的记录整行的级联删除。  

drop trigger guohong_score_cascade_delete_trig2

go

create trigger guohong_score_cascade_delete_trig2

on guohong_course

for delete

as

begin

delete guohong_score

from deleted as d1 , guohong_score as br1

where d1.gh_co_id=br1.gh_co_id

end

go

当删除guohong_teacher中gh_te_id基本信息时,将同步实现guohong_course相应的记录整行的级联删除。  

drop trigger guohong_course_cascade_delete_trig

go

create trigger guohong_course_cascade_delete_trig

on guohong_teacher

for delete

as

begin

delete guohong_course

from deleted as d1 , guohong_course as br1

where d1.gh_te_id=br1.gh_te_id

end

go

(4)已经定义的触发器全览:

六.游标实现

创建一个函数function_newavg1使用游标cursor_s返回guohong_score表中每个学生成绩gh_sc_num的平均值:

create function function_newavg1(@gh_st_id varchar(10))

returns float

as

begin

declare @gh_co_id int,

@gh_sc_num int,

@sc_avg float,

@newavg float

declare cursor_s cursor fast_forward

for select gh_co_id,gh_sc_num from guohong_score where gh_st_id=@gh_st_id

open cursor_s

fetch next from cursor_s into @gh_co_id, @gh_sc_num

while(@@fetch_status=0)

begin

set @sc_avg=(select avg(gh_sc_num) from guohong_score where gh_co_id=@gh_co_id )

fetch next from cursor_s into @gh_co_id, @gh_sc_num

end

set @newavg=(select avg(gh_sc_num) from guohong_score where gh_st_id=@gh_st_id)

close cursor_s

deallocate cursor_s

return @newavg

end

go

之后定义一个存储每个学生成绩gh_sc_num的平均值的guohong_dual表

接着定义guohong_dual表的插入触发器

drop trigger guohong_dual_insert_trig

go

create trigger guohong_dual_insert_trig

on guohong_dual

for insert 

as

select * from guohong_dual

go

然后向guohong_dual表插入学号为1的记录

七.图形界面的实现

创建Web站点并添加数据库

连接数据源及创建文本输入框和button之后

注册页面:

注册成功:

只显示了部分的信息

登入界面:

默认账号123456  密码123456

对课程表执行查询操作:

更新操作

插入操作

删除操作

选课操作

选课操作是仅仅对其中一个属性可以修改它的值,其他的均不能修改,例子中只能对课程的名字修改,其他的即使修改了,在数据库那边也不会变,如例子中的第一行仅课程名变化了

触发器的使用(算出平均分)

文档

学生信息管理系统实验报告

学生信息管理系统实验报告顾宏一.需求分析学生信息管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top