广州**职业技术学院数据库系统及应用实训报告设计题目:学生信息管理系统学生姓名:*****系别:计算机系专业:信息管理班级:****信息管理学号:*******指导教师:*****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)四、系统实现的具体功能和创建的各类代码 (7)五、实训心得 (23)一、概述1.1 项目背景当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境.计算机的最大好处在于利用它能够进行信息管理.使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性.尤其对于复杂的信息管理,计算机能够充分发挥它的优越性.学生信息管理系统提供了强大的学生成绩管理管理功能,方便系统管理员对学生信息的添加,修改,删除,查询,留言等操作,同时一样的方面学生对自己各科成绩查询,学习的交流.1.2课程设计目的1.进一步掌握SQL Server 2005数据库及其组成。
2.进一步熟悉主要数据库对象的操作。
3.提高应用企业管理器管理SQL Server 2005数据库的能力。
4.提高T-SQL语句的编写能力。
5.进一步明确数据库管理的主要功能。
1.3题目及要求题目:学生成绩管理系统数据库要求:1.充分了解软件设计的全过程。
2.从开始的系统需求分析到最后的代码编写,都要有详细的计划,设计文档应按照课程设计的要求书写。
3.系统中的数据表设计应合理、高效,尽量减少数据冗余。
4.数据库及表要易于维护、方便升级。
必须包括数据库、表、查询、数据录入、删除、更新、约束建立等代码每人提交一个实训报告和可行的运行代码。
1.4 设计环境1)、操作系统:windows XP2)、数据库系统:Microsoft SQL Server 2000/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,create database student2,create table student(Sno char(11) not null Primary key,Sname char(8) not null,Ssex char(2) check(S_sex='男' or S_sex='女') DEFAULT'男',birth datetime CHECK(S_birth>='1900' and Sbirth<='2100'),S_class varchar(10) null,addr varchar(30) null)录入方式:(1)insert student values('20021001002','张山','男','1988-6-15','信息021','湖北汉口',Null)(2)(3)use studentif exists(select name from sysobjects where name='GetCredit' and type='p')drop procedure GetCreditgocreate procedure GetCredit@v_depart varchar(6)asselect *from coursewhere c_credit=@v_departexec GetCredit '1003c#_w'goselect c_credit from course where c_no='1003c#_w'3,create table course(C_no varchar(12) not null,C_name varchar(20) not null,C_credit char(2) not null,C_type char(10) not null)4,create table score(sno char(11) not null,semester char(8) not null,c_no varchar(12) not null,grade varchar(5) null)5,alter table studentadd S_major char(20) null6,update student set addr='湖南株洲' where sname='周天'7,update score set grade=75 , c_no='1003c#_w' where semester='200402'8,insert student values('20021001002','张山','男','1988-6-15','信息021','湖北汉口',Null)insert student values('20021003014','刘宇','男','1987-8-19','信息021','湖北荆州',Null) insert student values('20031001002','张海波','男','1989-8-12','软件031','湖南长沙',Null)9,update student set birth='1986-5-25' where sname='曾建桥'alter table courseadd primary key (c_no)alter table scoreadd primary key (sno,c_no)10,alter table courseadd foreign key (c_no) references score(c_no)alter table studentadd foreign key (sno) references score(sno)11,alter table courseadd default '专业课' for C_type12,alter table scoreadd check(grade between 1 and 100)13,select sname ,sno,S_class from student14,select sname ,2007-datepart(yy,birth) from student15,select 学号=sno,姓名=sname ,2007-datepart(yy,birth) 年龄from student16,select student.sno as 学号,c_no as 课程号,grade as 成绩from student inner join scoreon student.sno=score.snowhere semester='200402' and grade>'80'17,select 姓名=sname ,班级= S_class,2007-datepart(yy,birth) 年龄from student where (2007-datepart(yy,birth) between 18 and 22)18,select student.sno as 学号,sname,ssex,birth,s_class,addr,c_no as 课程号,grade as 成绩from student inner join scoreon student.sno=score.snowhere addr='湖南株洲' or addr='湖南长沙'19,insert score values('20021001002','200401','1203dzswwzjs',Null)insert score values('20021003014','200402','1003xmkf',Null)insert score values('20031001002','200401','1002sjkyl',Null)20,select student.sno as 学号,sname,ssex ,c_no as 课程号from student inner join scoreon student.sno=score.snowhere grade is Null21,select sno from score22,select top 3 sno,grade from score where c_no='1003c#_w'order by grade desc23,update score set sno='20021003016' where grade='91'24,update score set sno='20021003013' where grade='86'25,select sno,grade from scorewhere c_no='1003c#_w'order by grade desc26,select top 1 c_no,grade from scorewhere sno like '20021003%' and grade>80order by grade desc27,select student.sno as 学号,sname,S_class,grade from student inner join scoreon student.sno=score.sno28,select sno,sname,birth from studentwhere 2007-datepart(yy,birth) >=(select 2007-datepart(yy,birth) from student where sname='王玉梅')order by birth desc29,select*from studentwhere s_class in(select s_class from student where sname='刘晶晶')30,select * from studentwhere s_class<>'信息021'and 2007-datepart(yy,birth) <(select min( 2007-datepart(yy,birth))from student where s_class='信息021')31,select score.sno,snamefrom student inner join scoreon student.sno=score.snowhere c_no='1003c#_w'32,select student.sno,snamefrom student inner join scoreon student.sno=score.snojoin course on score.c_no=course.c_nowhere c_name='数据库原理与应用'33,create clustered index _student on student(sno)34,Create unique nonclustered index student1 ON course (c_no)35,Create nonclustered index student1 ON score(sno,c_no)36,create view score3asselect student.sno as'学号',sname as '学生名',score.c_no as '课程号',c_name as '课程名',grade as '成绩'from student inner join score on student.sno=score.sno join course on score.c_no=course.c_no37,create view stu_info_viewasselect sno as '学号',sname as '学生名',ssex as '性别' from student38,create view grade_viewasselect grade as '性别' from scorewhere grade>8039,insert stu_info_view values('20031001034','高防御','男')40,update student set sname='王勇'where sno='20031001002'update score set grade=grade+2where sno='20031001002'41,use studentif exists(select name from sysobjects where name='student_pro' and type='p') drop procedure student_progocreate procedure student_proasselect *from studentgoselect *from studentwhere s_class='信息021'42,use studentif exists(select name from sysobjects where name='GetCredit' and type='p') drop procedure GetCreditgocreate procedure GetCredit@v_depart varchar(6)asselect *from coursewhere c_credit=@v_departexec GetCredit '1003c#_w'goselect c_credit from course where c_no='1003c#_w'43,alter table studentadd default '男' for ssex44,alter table scoreadd check(grade between 1 and 100)45,alter table scoreadd PRIMARY key (sno,c_no)alter table scoreadd foreign key(sno,c_no) references score(sno,c_no)46,create trigger updatesnumberon scoreafter updateasif exists(select sno from student) and exists(select c_no from coure) beginprint '不能完成修改,请检查错误'rollback transactionend47,DECLARE course_check CURSORFOR SELECT *FROM courseWHERE c_no='课程号' and c_name='课程名称'ORDER BY c_no ascFOR READ ONLY48,备份数据库删除数据库还原数据库五、实训心得这一次学生信息查询系统实训主要参照课本来做的,相对来说比较简单。