学生信息管理系统数据库实训报告.doc
《学生信息管理系统数据库实训报告.doc》由会员分享,可在线阅读,更多相关《学生信息管理系统数据库实训报告.doc(24页珍藏版)》请在冰点文库上搜索。
![学生信息管理系统数据库实训报告.doc](https://file1.bingdoc.com/fileroot1/2023-4/30/10160550-eb81-4b09-a5db-715232bfcc73/10160550-eb81-4b09-a5db-715232bfcc731.gif)
广州**职业技术学院
数据库系统及应用实训报告
设计题目:
学生信息管理系统
学生姓名:
*****
系别:
计算机系
专业:
信息管理
班级:
****信息管理
学号:
*******
指导教师:
*****
2011年12月日
目录
一、概述 3
1.1项目背景 3
1.2课程设计目的 3
1.3题目及要求 3
1.4设计环境 4
二、需求分析 4
三、数据库设计 4
3.1概念模型设计 4
3.2逻辑数据库设计 5
3.3数据库的物理设计 6
四、系统实现的具体功能和创建的各类代码 6
五、实训心得 22
一、概述
1.1项目背景
当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境.计算机的最大好处在于利用它能够进行信息管理.使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性.尤其对于复杂的信息管理,计算机能够充分发挥它的优越性.
学生信息管理系统提供了强大的学生成绩管理管理功能,方便系统管理员对学生信息的添加,修改,删除,查询,留言等操作,同时一样的方面学生对自己各科成绩查询,学习的交流.
1.2课程设计目的
1.进一步掌握SQLServer2005数据库及其组成。
2.进一步熟悉主要数据库对象的操作。
3.提高应用企业管理器管理SQLServer2005数据库的能力。
4.提高T-SQL语句的编写能力。
5.进一步明确数据库管理的主要功能。
1.3题目及要求
题目:
学生成绩管理系统数据库
要求:
1.充分了解软件设计的全过程。
2.从开始的系统需求分析到最后的代码编写,都要有详细的计划,设计文档应按照课程设计的要求书写。
3.系统中的数据表设计应合理、高效,尽量减少数据冗余。
4.数据库及表要易于维护、方便升级。
必须包括数据库、表、查询、数据录入、删除、更新、约束建立等代码每人提交一个实训报告和可行的运行代码。
1.4设计环境
1)、操作系统:
windowsXP
2)、数据库系统:
MicrosoftSQLServer2000/2005企业版
二、需求分析
1.信息需求
高校学生的成绩管理工作量大、繁杂,人工处理非常困难。
学生成绩管理系统借助于计算机强大的处理能力,大大减轻了管理人员的工作量,并提高了处理的准确性。
学生成绩管理系统的开发运用,实现了学生成绩管理的自动化,不仅把广大教师从繁重的成绩管理工作中解脱出来、把学校从传统的成绩管理模式中解放出来,而且对学生成绩的判断和整理更合理、更公正,同时也给教师提供了一个准确、清晰、轻松的成绩管理环境。
2.功能需求
能够进行数据库的数据定义、数据操纵、数据控制等处理功能,进行联机处理的相应时间要短。
具体功能应包括:
系统应该提供课程安排数据的插入、删除、更新、查询;成绩的添加、修改、删除、查询,学生及教职工基本信息查询的功能。
3.安全性与完整性要求
三、数据库设计
姓名
3.1概念模型设计
课程信息表表
学生信息表
考试
成绩
家庭住址
学分
课程名
课程号
课程号
学号
成绩
学期
班级
性别
出生日期
学号
选择
姓名
上课
教室表
教室号
上课教师
班级
3.2逻辑数据库设计
设计学生成绩管理数据库,包括课程、学生、成绩三个关系,其关系模式中对每个实体定义的属性如下:
课程信息表
Course:
(课程号,课程名,学分,课程类别)
学生信息表
Student:
(学号,姓名,性别,出生日期,班级,家庭地址)
成绩表
Score:
(学号,课程名,成绩,学期)
教室表
Classroom:
(教室号,班级,上课教师)
3.3数据库的物理设计
1、课程信息表(Course)
列名
数据类型、长度
约束
列名说明
C_no
char(5)
主键
班级编码
C_name
char(10)
非空
班级名
C_credit
Char
(2)
非空
学分
C_type
Char(10)
允许空
课程类别
2、学生信息表(student)
列名(英文名)
列文(中文名)
数据类型
长度
允许空值
说明
S_no
学号
char
11
´
主键
S_name
姓名
char
8
´
S_sex
性别
char
2
Ö
默认值:
(男);约束:
只能填“男”或“女”
S_birth
出生日期
datetime
Ö
默认值:
系统日期
S_address
家庭地址
varchar
30
Ö
S_class
班级
varchar
10
Ö
3.成绩表
列名
数据类型、长度
约束
列名说明
S_no
char(11)
非空、主键
班级号
C_no
varchar(12)
非空、主键
课程号
Semester
Char(8)
非空
学期
grade
decimal(5)
允许空
成绩(等级)
4.教室表
列名
数据类型、长度
约束
列名说明
number
char(8)
主键
教室号
S_class
varchar(10)
非空
班级
teacher
Char(8)
非空
上课教师
四、系统实现的具体功能和创建的各类代码
1,createdatabasestudent
2,createtablestudent(
Snochar(11)notnullPrimarykey,
Snamechar(8)notnull,
Ssexchar
(2)check(S_sex='男'orS_sex='女')DEFAULT'男',
birthdatetimeCHECK(S_birth>='1900'andSbirth<='2100'),
S_classvarchar(10)null,
addrvarchar(30)null
)
录入方式:
(1)insertstudentvalues('20021001002','张山','男','1988-6-15','信息021','湖北汉口',Null)
(2)
(3)usestudent
ifexists(selectnamefromsysobjectswherename='GetCredit'andtype='p')
dropprocedureGetCredit
go
createprocedureGetCredit
@v_departvarchar(6)
as
select*fromcourse
wherec_credit=@v_depart
execGetCredit'1003c#_w'
go
selectc_creditfromcoursewherec_no='1003c#_w'
3,createtablecourse(
C_novarchar(12)notnull,
C_namevarchar(20)notnull,
C_creditchar
(2)notnull,
C_typechar(10)notnull
)
4,createtablescore(
snochar(11)notnull,
semesterchar(8)notnull,
c_novarchar(12)notnull,
gradevarchar(5)null
)
5,altertablestudent
addS_majorchar(20)null
6,updatestudentsetaddr='湖南株洲'wheresname='周天'
7,updatescoresetgrade=75,c_no='1003c#_w'wheresemester='200402'
8,insertstudentvalues('20021001002','张山','男','1988-6-15','信息021','湖北汉口',Null)
insertstudentvalues('20021003014','刘宇','男','1987-8-19','信息021','湖北荆州',Null)
insertstudentvalues('20031001002','张海波','男','1989-8-12','软件031','湖南长沙',Null)
9,updatestudentsetbirth='1986-5-25'
wheresname='曾建桥'
altertablecourse
addprimarykey(c_no)
altertablescore
addprimarykey(sno,c_no)
10,altertablecourse
addforeignkey(c_no)referencesscore(c_no)
altertablestudent
addforeignkey(sno)referencesscore(sno)
11,altertablecourse
adddefault'专业课'forC_type
12,altertablescore
addcheck(gradebetween1and100)
13,selectsname,sno,S_classfromstudent
14,selectsname,2007-datepart(yy,birth)fromstudent
15,select学号=sno,姓名=sname,2007-datepart(yy,birth)年龄fromstudent
16,selectstudent.snoas学号,c_noas课程号,gradeas成绩
fromstudentinnerjoinscore
onstudent.sno=score.sno
wheresemester='200402'andgrade>'80'
17,select姓名=sname,班级=S_class,2007-datepart(yy,birth)年龄fromstudent
where(2007-datepart(yy,birth)between18and22)
18,selectstudent.snoas学号,sname,ssex,birth,s_class,addr,c_noas课程号,gradeas成绩
fromstudentinnerjoinscore
onstudent.sno=score.sno
whereaddr='湖南株洲'oraddr='湖南长沙'
19,insertscorevalues('20021001002','200401','1203dzswwzjs',Null)
insertscorevalues('20021003014','200402','1003xmkf',Null)
insertscorevalues('20031001002','200401','1002sjkyl',Null)
20,selectstudent.snoas学号,sname,ssex,c_noas课程号
fromstudentinnerjoinscore
onstudent.sno=score.sno
wheregradeisNull
21,selectsnofromscore
22,selecttop3sno,gradefromscore
wherec_no='1003c#_w'
orderbygradedesc
23,updatescoresetsno='20021003016'
wheregrade='91'
24,updatescoresetsno='20021003013'
wheregrade='86'
25,selectsno,gradefromscore
wherec_no='1003c#_w'
orderbygradedesc
26,selecttop1c_no,gradefromscore
wheresnolike'20021003%'andgrade>80
orderbygradedesc
27,selectstudent.snoas学号,sname,S_class,grade
fromstudentinnerjoinscore
onstudent.sno=score.sno
28,selectsno,sname,birthfromstudent
where2007-datepart(yy,birth)>=(select2007-datepart(yy,birth)fromstudentwheresname='王玉梅')
orderbybirthdesc
29,select*fromstudent
wheres_classin(selects_classfromstudentwheresname='刘晶晶')
30,select*fromstudent
wheres_class<>'信息021'and2007-datepart(yy,birth)<(selectmin(2007-datepart(yy,birth))
fromstudentwheres_class='信息021')
31,selectscore.sno,sname
fromstudentinnerjoinscore
onstudent.sno=score.sno
wherec_no='1003c#_w'
32,selectstudent.sno,sname
fromstudentinnerjoinscore
onstudent.sno=score.sno
joincourseonscore.c_no=course.c_no
wherec_name='数据库原理与应用'
33,createclusteredindex_studentonstudent(sno)
34,Createuniquenonclusteredindexstudent1ONcourse(c_no)
35,Createnonclusteredindexstudent1ONscore(sno,c_no)
36,createviewscore3
as
selectstudent.snoas'学号',snameas'学生名',score.c_noas'课程号',c_nameas'课程名',gradeas'成绩'
fromstudentinnerjoinscoreonstudent.sno=score.snojoincourseonscore.c_no=course.c_no
37,createviewstu_info_view
as
selectsnoas'学号',snameas'学生名',ssexas'性别'fromstudent
38,createviewgrade_view
as
selectgradeas'性别'fromscore
wheregrade>80
39,insertstu_info_viewvalues('20031001034','高防御','男')
40,updatestudentsetsname='王勇'
wheresno='20031001002'
updatescoresetgrade=grade+2
wheresno='20031001002'
41,usestudent
ifexists(selectnamefromsysobjectswherename='student_pro'andtype='p')
dropprocedurestudent_pro
go
createprocedurestudent_pro
as
select*fromstudent
go
select*fromstudent
wheres_class='信息021'
42,usestudent
ifexists(selectnamefromsysobjectswherename='GetCredit'andtype='p')
dropprocedureGetCredit
go
createprocedureGetCredit
@v_departvarchar(6)
as
select*fromcourse
wherec_credit=@v_depart
execGetCredit'1003c#_w'
go
selectc_creditfromcoursewherec_no='1003c#_w'
43,altertablestudent
adddefault'男'forssex
44,altertablescore
addcheck(gradebetween1and100)
45,altertablescore
addPRIMARYkey(sno,c_no)
altertablescore
addforeignkey(sno,c_no)referencesscore(sno,c_no)
46,createtriggerupdatesnumber
onscore
afterupdate
as
ifexists(selectsnofromstudent)andexists(selectc_nofromcoure)
begin
print'不能完成修改,请检查错误'
rollbacktransaction
end
47,DECLAREcourse_checkCURSOR
FORSELECT*
FROMcourse
WHEREc_no='课程号'andc_name='课程名称'
ORDERBYc_noasc
FORREADONLY
48,备份数据库
删除数据库
还原数据库
五、实训心得
这一次学生信息查询系统实训主要参照课本来做的,相对来说比较简单。
但是由于主要以课本为依据,所以整个设计做下来基本了解了课本上数据库的基础操作。
更进一步了解SQLServer数据库及其组成和进一步熟悉主要数
据库对象的操作。
提高应用企业管理器管理SQLServer数据库的能力和提高T-SQL语句的编写能力。
也更进一步明确了解数据库管理的主要功能。
设计过程中我也遇到了一些问题,再向其他同学请教的过程中我收获了很多。
在这一过程中不止使我更了解数据库的应用与理解,更重要的是促进了同学间的交流,加进了同学间的感情,使班上的气氛更加的和谐。
这次的实训给我的感觉不止是使我更加的了解SQLServer数据库及其组成和进一步熟悉主要数据库对象的操作,更是促进了我与同学间的感情交流。
虽然在这次实训中遇到了不少的问题,但都一一被我解决,使我有一种满足感。
实训中为了解决问题不停的在找相关的资料很累,但却充实了实训的每一分每一秒,使得这次实训变的很有意义。
而这次实训中的问题的解决使我懂得的很多以前不知道的知识。
(1)操作视图查询,编写代码时发现,一个表中的主键必须是另一个表的外键时才可以对另一个表进行引用。
(2)在设计表时应注意使用正确的字段类型。
(3)在建表语句中,如果这个表的主键是多个属性的组合主键,则必须作为表级完整性进行定义。