SQLSEVER课程设计报告.docx

上传人:b****3 文档编号:27199340 上传时间:2023-06-28 格式:DOCX 页数:22 大小:704.85KB
下载 相关 举报
SQLSEVER课程设计报告.docx_第1页
第1页 / 共22页
SQLSEVER课程设计报告.docx_第2页
第2页 / 共22页
SQLSEVER课程设计报告.docx_第3页
第3页 / 共22页
SQLSEVER课程设计报告.docx_第4页
第4页 / 共22页
SQLSEVER课程设计报告.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

SQLSEVER课程设计报告.docx

《SQLSEVER课程设计报告.docx》由会员分享,可在线阅读,更多相关《SQLSEVER课程设计报告.docx(22页珍藏版)》请在冰豆网上搜索。

SQLSEVER课程设计报告.docx

SQLSEVER课程设计报告

 

数据库设计与管理

课程设计报告

题目:

教师监考管理系统

 

专业:

信息管理与信息系统

班级:

120506

姓名:

王学勇

学号:

20122553

指导教师:

赵春艳

学期:

2014-2015-1

教师监考管理系统

一、概述

题目:

教师监考管理系统

背景:

随着计算机技术的飞速发展,办公自动化已经渗透到社会行业的方方面面,高校教育采取的计算机辅助的范围越来越大,在这一过程中,高校考试监考安排一直是一个迫在眉睫的问题,为了使管理者摒弃手工安排教师,我用SQLServer2005设计了教师监考管理系统,实现办公自动化,减轻管理者负担

任务:

教师人员管理,监考日程管理,监考教师分配管理,教师课表登记等几大模块,并提供了对各个功能模块的查询、更新、统计等功能。

该系统可以满足程序自动生成教师的前期准备,从而减轻管理者的工作负担,提升工作效率.

二、需求分析

1.教师人员管理

在教师表中对教师等的信息进行增删改查,同时关联教师课表信息,对安排监考信息进行约束.

为此,我在教师表中设置了教研室外键,在课程表中关联了教师表,来方便处理.

2.监考日程管理

可以实现对监考日程的增删改查,以存储过程封装的方法方便管理者使用.

3.安排监考

此项为程序生成的前期准备,并可以进行手工进行生成监考信息,主要利用触发器进行操作,在增加一条

4.职工工资管理

此项为职工工资的最终统计,根据不同监考类型将职工工资最终统计出来

三、数据库概念结构设计

 

E-R图

 

图3-1

四、数据库逻辑结构设计

1.数据库名称:

ins

2.包含的数据文件名为ins_data.mdf,存储位置为“F:

\yog_db”日志文件名为ins_log.ldf,存储位置为“F:

\yog_db”。

3.E-R图转为5个表,都符合三范式要求,具体表结构的列表如下表所示:

表4-1classes

属性名

数据类型

说明

是否为空

主键/外键

取值范围

c_bh

char(5)

课程编号

主键

c_date

char(20)

课程日期

c_tch

char(8)

任课教师

外键

c_name

char(10)

课程名称

表4-2exam_lx

属性名

数据类型

说明

是否为空

主键/外键

取值范围

exam_lx

int

监考类型

主键

exam_name

char(10)

类型名

exam_money

int

监考工资

>0

表4-3office

属性名

数据类型

说明

是否为空

主键/外键

取值范围

o_bh

char(5)

教研室编号

主键

o_name

char(20)

教研室名

表4-4schedule

属性名

数据类型

说明

是否为空

主键/外键

取值范围

s_bh

char(5)

日程编号

主键

s_name

char(5)

考试科目

sch_lx

Int

监考类型

s_num

int

教师数量

>0

s_date

Char(4)

监考日期

s_noon

Varchar(50)

上/下午

s_place

Varchar(50)

地点

s_classes

Varchar(50)

参与班级

s_tch

Varchar(50)

参与教师

表4-5teacher

属性名

数据类型

说明

是否为空

主键/外键

取值范围

t_bh

char(5)

教师编号

主键

t_name

char(5)

教师名称

t_office

int

所在教研室

外键

t_times0

Int

类型0次数

>0

t_times1

Int

类型1次数

>0

t_times2

Int

类型2次数

>0

t_times3

Int

类型3次数

>0

t_times4

Int

类型4次数

>0

t_salary

Int

监考工资

>0

t_times_all

Int

总次数

>0

五、数据库物理实现

1.数据库建立

(1)创建数据库ins,同步设置数据文件和数据日志,如图5-1所示:

图5-1

2.数据表建立

(1)创建教师信息表,如图5-2,数据表设计表窗口图如5-3,表浏览窗口图如图5-4所示:

图5-2

图5-3

图5-4

 

(2)创建监考日程表schedule,数据表设计表窗口图如5-5,表浏览窗口图如图5-6所示:

 

图5-5

 

图5-6

(3)创建教研室表office,考试类型表exam_lx数据表设计表窗口图如5-7,5-8表浏览窗口图如图5-9,5-10所示:

 

图5-7

 

图5-8

 

图5-9图5-10

(4)创建课程表classes,数据表设计表窗口图如5-11,表浏览窗口图如图5-12所示:

 

图5-11

 

 

图5-12

3.数据库安全完整性实现

(1)在创建教研室表office时,就已经将编号列o_bh声明为主键。

相关的语句如下:

[o_bh][varchar](50)primarykeynotNULL

验证结果截图如5-13:

图5-13

(2)创建teacher表t_times_all列大于0的规则,并将这个规则绑定到teacher表的t_times_all字段,创建过程如图5-14

图5-14

验证结果截图如5-15:

图5-15

(3)创建教师信息teacher表时,已经将相应的字段设置了默认值,所以在对教师表进行增加操作的时候,对应字段会自动为默认值

数据插入前的界面如图5-16:

 

图5-16

使用语句insertintoteacher(t_bh,t_name,t_office)values('007','008','009')向teacher表中的t_bh赋值007,t_name赋值008,t_office赋值009,数据插入后的界面如图5-17

 

图5-17

(3)创建教研室表office删除数据触发器,当删除一个教研室的时候,相关的教研室下的教师清空

触发器的创建如图5-18

 

图5-18

触发器操作前的数据如图5-19

 

 

图5-19

删除数据的语句为:

deletefromofficewhereo_bh=’007’

删除数据后的结果如图5-20,5-21所示

 

图5-20

 

图5-21

 

4.数据操作实现

(1)建立存储过程,用于向教师表插入数据,插入数据前,如图5-22:

图5-22

插入数据后,教师信息表teacher的数据如图5-23:

图5-23

(2)建立存储过程,用于向监考日程中更新教师信息,本次过程中向

'2014-12-10','上午','数学的考试中将'陈守则'加入,之后的操作为向对应的监考日程参与教师列增加'陈守则'的教师编号,同时根据当前监考日程的类型更新教师表'陈守则'的对应类型监考次数的信息,本次监考类型为0,所以对应教师表'陈守则'的t_times0对应增加1;总监考次数增加1;职工工资对应的从监考类型表中找到相对应类型0的工资20,更新到教师表'陈守则'的总监考工资列上

运行前日程表,教师表如图5-24,5-25所示:

 

图5-24

图5-25

本次存储过程的语句如下:

createprocedureadd_task2

@tch_namevarchar(50),@sch_datavarchar(50),@sch_noonvarchar(50),@sch_kmvarchar(50)

as

declare@bhchar(6),@sch_bhvarchar(50),@lxvarchar(50),@svarchar(50),@times0varchar(50),@times1varchar(50),@times2varchar(50),@times3varchar(50),@times4varchar(50),@salavarchar(50)

set@times0='0'

set@times1='0'

set@times2='0'

set@times3='0'

set@times4='0'

select@bh=t_bhfromdbo.teacherwheret_name=@tch_name

select@lx=sch_lx,@sch_bh=s_bhfromdbo.schedulewheres_date=@sch_dataands_noon=@sch_noonands_name=@sch_km

select@sala=exam_moneyfromdbo.exam_lxwhereexam_lx=@lx

if@lx='0'

set@times0='1'

elseif@lx='1'

set@times1='1'

elseif@lx='2'

set@times2='1'

elseif@lx='3'

set@times3='1'

elseif@lx='4'

set@times4='1'

updatedbo.teacher

sett_times0=t_times0+@times0

wheret_bh=@bh

updatedbo.teacher

sett_times1=t_times1+@times1

wheret_bh=@bh

updatedbo.teacher

sett_times2=t_times2+@times2

wheret_bh=@bh

updatedbo.teacher

sett_times3=t_times3+@times3

wheret_bh=@bh

updatedbo.teacher

sett_times4=t_times4+@times4

wheret_bh=@bh

updatedbo.teacher

sett_times_all=t_times_all+1

wheret_bh=@bh

updatedbo.teachersett_salary=t_salary+@salawheret_bh=@bh

updatedbo.schedulesets_tch=s_tch+','+@bhwheres_bh=@sch_bh

go

execadd_task2'陈守则','2014-12-10','上午','数学

执行该存储过程监考日程表,教师表结果如图5-26,5-27

图5-26

图5-27

(3)建立存储过程,用于教师,将编号为“001700”的教师删除

删除数据前,教师信息表中的数据如图5-28:

图5-28

删除数据后,教师信息表中的数据如图5-29:

图5-29

(4)建立存储过程,教师表中查询监考次数小于20教师列表

操作过程如图5-30:

图5-30

(4)建立存储过程查找某个教师的的各类工资汇总和

使用的语句为:

createprocedureinq_pronfa@p_idvarchar(50),@msgaachar(500)output

as

declare@all_sint,@t0int,@t1int,@t2int,@t3int,@t4int,@ts0int,@ts1int,@ts2int,@ts3int,@ts4int

set

@all_s=0

select@t0=t_times0fromdbo.teacherwheret_name=@p_id

set@all_s=10

select@t0=t_times0fromdbo.teacherwheret_name=@p_id

select@ts0=exam_moneyfromdbo.exam_lxwhereexam_lx='0'

set@all_s=@all_s+@ts0*@t0

select@t2=t_times2fromdbo.teacherwheret_name=@p_id

select@ts2=exam_moneyfromdbo.exam_lxwhereexam_lx='2'

set@all_s=@all_s+@ts2*@t2

select@t3=t_times3fromdbo.teacherwheret_name=@p_id

select@ts3=exam_moneyfromdbo.exam_lxwhereexam_lx='3'

set@all_s=@all_s+@ts3*@t3

select@t4=t_times4fromdbo.teacherwheret_name=@p_id

select@ts4=exam_moneyfromdbo.exam_lxwhereexam_lx='4'

set@all_s=@all_s+@ts4*@t4

select@msgaa=@all_s

go

/*执行存储过程*/

declare@msgaachar(500)

execinq_pronfa'陈守则',@msgaaoutput

select@msgaa

执行过程及最终结果如图5-31所示

 

图5-31

 

六、心得体会

本次课程设计自己感觉时间很紧迫,期末一大堆的事情都压在一起,但这并没有妨碍我去认真思考琢磨数据库中的精华内容.

从选题开始,感觉自己找了一个重担,几经多次想要放弃,但还是本着能够多学点知识的目的去做的本次课程设计,本次设计中,我学会的数据库中很重要的东西就是利用数据库的本身的强大功能去实现相对应的丰富多彩的功能,这样一来,可以大大减轻数据程序设计端的压力,并且数据库本身的完整性约束,也会为程序的执行带来很大的便捷.

本次设计中,最感到难处理的就是ER图的处理,这个是最重要的也是最难的,如果设计一开始就把ER图搞错了,以后的设计就无从谈起了,相反,如果将ER图从源头归正,那么下面的工作就会顺水行舟.

值得注意的是,我们不能过多的去依赖数据库的内置函数方法,过多的以来只会导致我们程序上的慵懒,依我看来数据库在程序设计中的角色应该单纯的就是一个存储数据的容器,在这个容器上进行的丰富多彩的操作基本上应该在程序上实现,而不是依赖数据库的存储过程和函数.

此外,我们都会遗忘sqlsever系列优秀的功能,备份还原.本次课程设计中,好多次因为数据误操作导致数据全部丢失,但因为之前听老师上课所讲,事先将有数据的数据库分离打包备份,在遇到数据丢失的情况下可以很快的进行恢复.

最后,感谢老师,感谢数据库课程设计,让我能在这个浮躁的社会中静下心去琢磨明白一些实用的技术,让这些技术在日后的工作学习中发挥能量!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1