SQL课程设计报告

时间:2024.4.20

吉林工程技术师范学院

信息工程学院

《  SQL Server数据库设计 》

课程设计报告

题    目:  学生信息数据库管理系统设计  

专    业:          软件工程            

班    级:            R1241             

姓    名:              xxx             

学    号:         1201114115           

指导教师:           XXXXXXXXXX         

时    间:       2014年12月21日      


摘 要

学生信息管理系统主要用来管理学生基本信息。本系统是一个简单的学生信息管理系统,系统管理的信息主要是学生基本信息、课程信息和学生选课信息。系统的目的是有效地处理这些信息,同时为用户提供信息检索、信息修改和保护功能。

随着学校教育体制的迅速发展,学生的数量快速增长,对于学生的信息管理也变得越来越复杂。因此要实现对学生信息的有效管理借助现代信息技术的管理方法,建立学生信息管理系统是我们的可以借助的有效工具。本文通过对一个学生信息管理系统的开发实例,基于SQL 2005的学生信息管理系统进行了分析和研究。文章首先分析了管理信息系统的概念和特点,介绍了开发工具SQL2005,然后对学生信息管理信息系统进行了设计方案论证、设计实现过程、调试运行及结果分析,在设计实现过程中要能够统计有多少人、计算平均成绩及排序(由低到高)、找出不及格的学生,创建视图存放计算机专业的学生信息、创建一个存储用来查找计算机专业学生的成绩。

关键字:学生信息管理、SQL Server


 

一、课程设计的目的  ……………………………………………2页

二、设计方案的论证(背景、意义、技术路线)………………3页

三、设计实现过程  ………………………………………………5页

四、调试运行及结果分析  ………………………………………6页

五、测试及问题探讨 ……………………………………………15页

六、课设总结与体会 ……………………………………………17页

七、致谢 …………………………………………………………18页

八、参考文献 ……………………………………………………19页

一、课程设计的目的

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

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

    作为计算机应用的一部分,使用计算机对学生学籍信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生学籍管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。 

  另外在进行本次系统开发的过程也可以让我们日常所学习的数据库技术学以致用,并且得到进一步的理解与巩固,将理论与实践相结合,让我们对数据库的基本操作有了一个完整的认识。

二、设计方案的论证

2.1背景介绍

学生成绩管理系统可以帮助学校完成一些日常工作,许多学校也都有自己的教务、成绩管理系统。随便各种技术的发展,系统的速度、用户体验、安全问题越来越受到重视。虽然硬件的发展可以提高系统的一些指标,但是我们也不能不注意系统自身的性能、安全问题。数据的安全性只有依靠程序保证。由于个人经验不足,只能参考其他系统完成该系统。,管理系统的安全性直接关系到高校的日常管理工作成效,一个具有精确权限控制的管理系统势必会得到更好的用户体验,极大程度上保护高校的重要数据。

2.2设计意义

    为了使学生成绩管理更加的方便,我们有必要开发这样一种实用性强的学生成绩管理系统。这个系统方便学生查看自己的成绩及选课,教师给学生打分,管理员添加学生、教师、课程。 

对此课题的研究将有助于提升个人系统设计和分析能力,学会软件项目权限管理的基础实现,对以后大型项目的权限设计打下基础。同时,将对本人以下方面起到积极作用:对SQL知识的理论实践应用;加深对系统权限管理的理解;提高自己的系统分析、设计能力;初步了解软件项目的开发过程。 

在这个系统的开发中学生可以将自己所学的知识用于实践而得到很多锻炼,达到学以致用的目的。

2.3技术路线

本篇课设过程,各种功能的实现都是通过SQL语句实现的。SQL语句无论是种类还是数量都是繁多的,很多语句也是经常要用到的,SQL查询语句就是一个典型的例子,无论是高级查询还是低级查询,SQL查询语句的需求是最频繁的。

利用SQL Server对数据库进行进基本的操作。

三、设计实现过程

3.1系统功能

本系统包括以下功能:          

1). 学生信息管理(包括学生基本信息的录入)         

2). 课程管理(将课程与成绩连接)        

3). 成绩管理(对成绩进行分类,排序)

4). 信息查询(包括学生查询、课程查询、成绩查询)         

3.2设计理念

以现代计算机技术、网络技术为基础的数字化教学正朝着信息化、网络化、现代化的目标迈进。如今,国内的大部分学校都已接入或将要接入互联网并建成校园网,各校的硬件设施已经比较完善,通过设计和建设网络拓扑架构、网络安全系统、数据库基础结构、信息共享与管理,从而实现教育的网络化和信息化。与网络技术相结合的新型学生学籍管理模式,对教育、教学过程有着极为宝贵的特性,可以为新型的办学模式提供一个信息化的平台。

3.3开发工具

操作系统:Microsoft Windows XP  开发环境

数据库:Microsoft SQL Server 2005

四、调试运行及结果分析

4.1创建数据库

创建一个名为PXSCJ的数据库,其初始大小为5MB,最大大小不受限制,允许数据库自动增长,增长方式按10%比例自动增长,日志文件初始为2MB,最大可增长到2MB,按1MB增长:

CREATE DATABASE PXSCJ

ON

(NAME='PXSCJ_DATA',

FILENAME='C:\PXSCJ.mdf',

SIZE=5MB,

FILEGROWTH=10%)

LOG ON

(NAME='PXSCJ_log',

FILENAME='C:\idf',

SIZE=2MB,

MAXSIZE=5MB,

FILEGROWTH=1MB)

效果图如 图4-1

图4-1  创建数据库

4.2创建表

创建三张表,命名为XSB,KCB,CJB

4.2.1创建XSB

代码部分如下:

USE PXSCJ

GO

CREATE TABLE XSB

(

XH CHAR(6) NOT NULL PRIMARY KEY,

XM CHAR(8) NOT NULL,

XB BIT NULL DEFAULT 1,

CSSJ DATETIME NULL,

ZY CHAR(12) NULL,

ZXF INT NULL DEFAULT 0 CHECK(ZXF>=0 AND ZXF<=160),

BZ VARCHAR(500) NULL

)

效果图如 图4-2-1

图4-2-1  创建表XSB

4.2.2创建KCB

代码部分如下:

USE PXSCJ

GO

CREATE TABLE KCB

(

KCH CHAR(3) NOT NULL,

KCM CHAR(16) NOT NULL,

KKXQ TINYINT NULL,

XS TINYINT NULL,

XF TINYINT NULL

)

效果图如 图4-2-2

图4-2-2  创建KCB表

4.2.3创建CJB

代码部分如下:

USE PXSCJ

GO

CREATE TABLE CJB

(

XH CHAR(6) NOT NULL ,

KCH CHAR(3) NOT NULL ,

CJ INT NULL DEFAULT 0

)

效果图如 图4-2-3

图4-2-3  创建CJB表

4.3对表的增删改查操作

4.3.1增加信息

代码部分如下:

USE PXSCJ

GO

INSERT INTO XSB

     VALUES('081115','钱跃东',1,'1993-06-7','软件工程',50,NULL)

GO

效果图如 图4-3-1

图4-3-1  增加信息

4.3.2删除信息

代码部分如下:

USE PXSCJ

GO

DELETE

    FROM XSB

    WHERE XH=081115

GO

效果图如 图4-3-2

图4-3-2  删除信息

4.3.3修改信息

代码部分如下:

USE PXSCJ

GO

UPDATE XSB

SET XH='081219',

    ZY='软件工程',

    BZ='三好学生'

WHERE XH='081215'

GO

SELECT * FROM XSB

GO

效果图如 图4-3-3

图4-3-3  修改信息

4.3.4统计总数

代码部分如下:

USE PXSCJ

GO

SELECT COUNT(XH) AS'学生总数'

FROM XSB

效果图如 图4-3-4

图4-3-4

4.3.5平均成绩

代码部分如下:

USE PXSCJ

GO

SELECT XH,AVG(CJ)AS'PJCH'

     FROM CJB

     GROUP BY XH

GO

效果图如 图4-3-5

图4-3-5  平均成绩

4.3.6升序排列

代码部分如下:

USE PXSCJ

GO

SELECT XH,KCH,CJ

FROM CJB

WHERE KCH=

(

SELECT KCH

FROM KCB

WHERE KCM='计算机基础'

)

ORDER BY CJ

效果图如 图4-3-6

图4-3-6  升序排列

4.3.7查找不及格学生

代码部分如下:

USE PXSCJ

GO

SELECT XSB.XH,XM,KCH,CJ

FROM XSB,CJB

WHERE

(

XSB.XH=CJB.XH AND CJ<70

)

效果图如 图4-3-7

图4-3-7  查找不及格学生

4.3.8创建视图

代码部分如下:

USE PXSCJ

GO

CREATE VIEW CS_XS

AS

SELECT *

 FROM XSB

WHERE ZY='计算机'

效果图如 图4-3-8

图4-3-8  创建视图

4.3.9创建存储过程

代码部分如下:

USE PXSCJ

GO

CREATE PROCEDURE CJ_info

AS

SELECT *

 FROM CJB

WHERE XH=

(SELECT XH

FROM XSB

WHERE ZY='计算机')

效果图如 图4-3-9

图4-3-9  创建存储过程

五、测试及问题探讨

5.1 SQL SERVER2000基础上直接安装SQL SERVER2005 

在电脑上已经安装过SQL SERVER2000,在此基础之上安装SQL SERVER2005,由于其安装实例和默认端口是相同的,如果选择默认实例就会视为升级处理,即将原来的2000的实例覆盖了,这样的话2000就不能用了,所以有了2000再安装2005时,需要重新命名一个实例,修改一个端口。 

程序默认端口:1433. 结论: 

(1) 同台电脑上,如果不修改端口以及默认实例,不能同时使用SQL SERVER 2000和SQL 

SERVER2005; 

(2) 由于程序中端口都是固定的,因此,在此进行测试的时候,未修改端口等。B/S部分修改

了相应的配置文件之后,通过测试,可以完成数据库的增、删、改、查等访问; 

(3) 由于B/S部分只与数据库进行交互,因此,在C/S部分能够正常使用SQL SERVER2005的

前提下,目前,没有发现B/S部分存在问题。(C/S部分经咨询浩全,曾经测试使用SQL SERVER2005 没有问题)。

5.2登入过程中遇到的问题

在SQL SERVER2005的登陆界面时后发现输入实心圆点无法登入。

最后发现是因为全角半角的区别两种圆点的存储格式不同

5.3对数据进行操作的过程

(1)在利用SQL语言进行计算平均数过程中发现在结果中没有出现相应的结果,经过反复的查找反复的检查,最终找到因为没有利用Group by进行约束。

六、课设总结与体会

经过一个星期的的设计和开发,本系统的基本功能基本开发完成。本系统基本能够完成基本的学生管理信息系统的基础的功能。在使用上非常方便,实时性好,能够很好的对学生的信息进行处理分析,并能够对数据进行分类链接,而且达到对相关需求相关计算,能够达到学生管理信息系统的基本要求。

但由于时间和开发经验不足等原因,系统的部分功能未能得以实现。同时系统的管理功能上的设计不够完善,均需要进一步的学习提高。

这次课程设计,不但是对我这三年所学知识的一个检验,也是对我计算机应用水平与写作水平的一个考核,也让我发现了自己的不足之处,在开发过程中所获得的经验将对我今后的工作和生活产生积极深远的影响。

七、致谢

在这里我非常感谢我们的指导老师-刘明,他在百忙之中抽空对本系统的开发作了悉心的指导,帮助解决了多个难点,本网站才得以及时完成。不管是钟老师深厚的理论知识或是严谨的工作态度都让我受益匪浅。同时也感谢班级同学能共同努力,表现了很好的团队合作精神,才得以成功完成此次课程设计。在整个课程设计的合作过程中,我们互相帮助,互相学习,使大家都得到了不少的收获,使我们全体成员都在团队开发之用获得了整体的提高。大家的帮忙是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。
    最后感谢学院为我提供良好的做毕业设计的环境,再一次感谢所有在设计中曾经帮助过我的良师益友和同学。

八、参考文献

[1] 李春葆,曾平,赵丙秀.数据库系统开发教程—基于sql server2005

[2] 陈伟 编著 《SQL Server 2005数据库应用与开发教程》北京:清华大学出版社,2007

[3] 李昆,SQL SERVER2005课程设计案例精编,北京:中国水利水电出版社,2006

[4] 何文华, SQL Server 20## 应用开发教程,北京:电子工业出版社出版,2007


第二篇:SQL课程设计报告


课程设计报告

110054B——12010054070——张豪

创建数据库:

create database SanjiangMIS on primary

(

name=SanjiangMIS_data,

filename='f:\SanjiangMIS.mdf', size=10,

maxsize=unlimited,

filegrowth=10%

)

log on

(

name=Sanjiang_log,

filename='f:\SanjiangMIS.ldf', size=1,

maxsize=unlimited,

filegrowth=10%

)

创建表:

create table Employee

(

EmNo int constraint pk_EmNo primary key, EmName varchar(20),

EmBirtday datetime,

EmCardId varchar(18),

EmPosition char(20),

EmSex char(2)

)

SQL课程设计报告

create table Department (

DepNo int primary key, DepName varchar(20),

)

SQL课程设计报告

create table Dorm (

DormNo varchar(8) constraint pk_DormNo primary key constraint ck_DormNo check(DormNo like'[0-9][0-9]-[0-9][0-9][0-9]'),

DormDep int constraint fk_DormDep foreign key references Department(DepNo),

DormNu int constraint ck_DormNu check(DormNu in (4,6)),

DormNowNu int constraint ck_DormNowNu check(DormNowNu >= 0 and DormNowNu<= 6),

DormSex char(2) constraint ck_DormSex check(DormSex in ('男','女')) )

SQL课程设计报告

create table Class (

ClassName varchar(20),

ClassNo int constraint pk_ClassNo primary key,

ClassDepNo int constraint fk_ClassDepNo foreign key references Department(DepNo), Classtype varchar(20), ClassScure int, ClassTime int )

SQL课程设计报告

create table Teacher (

TeacherNo int constraint fk_TeacherNo foreign key references Employee(EmNo)

constraint pk_Teacher primary key,

TeacherDepNo int constraint fk_TeacherDepNo foreign key references

Department(DepNo), Ispartime bit )

SQL课程设计报告

create table Income (

EmployeeNo int constraint fk_EmployeeNo foreign key references Employee(EmNo), PayBase int,

PayYearMon datetime, PayOther int, YearReword int, ClassPay int, )

SQL课程设计报告

create table Student (

SNo varchar(20) constraint pk_SNo primary key constraint ck_SNo check(SNo like '[A,B,Z][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'), SName varchar(20), SBirthday datetime, SCardID varchar(20),

DepNo int constraint fk_DepNo foreign key references Department(DepNo), SSex char(2) constraint ck_SSex check(SSex in ('男','女')), DormNo varchar(8) constraint fk_DormNo foreign key references Dorm(DormNo), )

SQL课程设计报告

create table StudentClass (

ClassNo int constraint fk_ClassNo foreign key references Class(ClassNo), StudentNo varchar(20) constraint fk_StudentNo foreign key references Student(SNo) constraint pk_SC primary key(ClassNo,StudentNo), Grade float )

SQL课程设计报告

create table EducateClass(

EducateClassNo varchar(20) constraint pk_EducateClassNo primary key, ClassNo int constraint fk_ClassNoEdu foreign key references Class(ClassNo),

TeacherNo int constraint fk_TeacherNo1 foreign key references Teacher(TeacherNo), ClassRoomNo int,

ClassTerm varchar(12) constraint ck_ClassTerm check(ClassTerm like '[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]-[0-9][0-9]'), ClassThink varchar(400) )

SQL课程设计报告

录入表数据:

insert into Department values(1,'Computer') insert into Department values(2,'English') insert into Department values(3,'Art') insert into Department values(4,'Plant') insert into Dorm values('01-111',1,6,5,'男') insert into Dorm values('02-111',2,6,5,'女') insert into Dorm values('03-111',3,6,5,'女') insert into Dorm values('04-111',4,4,3,'男') insert into student

values('A11111111','Tomy','1992-06-11','33xxxxxxxxxxxx12',1,'男','01-111')

insert into student

values('A11111112','Tony','1992-05-10','33xxxxxxxxxxxx13',1,'女','02-111')

insert into student

values('A11111113','Linda','1992-05-9','33xxxxxxxxxxxx14',2,'女','03-111')

insert into student

values('A11111114','Tods','1992-05-8','33xxxxxxxxxxxx15',1,'男','04-111')

insert into Class values('Computer',1,1,'专业课',2,24)

insert into Class values('English',2,2,'专业课',2,24)

insert into Class values('Musci',3,3,'专业课',2,24)

insert into Class values('Tree',4,4,'专业课',2,24)

insert into Employee

values(1,'Weiyuanyuan','1989-2-1',320211515158012132,'讲师','女') insert into Employee

values(2,'Yuzhenghong','1988-3-1',320211515158012133,'副教授','男') insert into Employee

values(3,'Weizhiqing','1989-2-1',320211515158012134,'教授','男')

insert into Employee values(4,'Huanghui','1989-2-1',320211515158012135,'讲师','女') insert into Teacher values(1,1,0)

insert into Teacher values(2,2,0)

insert into Teacher values(3,3,0)

insert into Teacher values(4,4,0)

insert into StudentClass values(1,'A11111111',90)

insert into StudentClass values(2,'A11111112',80)

insert into StudentClass values(3,'A11111113',75)

insert into StudentClass values(4,'A11111114',85)

insert into EducateClass values(001,1,1,3311,'2011-2012-01','Good')

insert into EducateClass values(002,2,2,3202,'2011-2012-01','Verty Good')

insert into EducateClass values(003,3,3,2211,'2011-2012-01','Good')

insert into EducateClass values(004,4,4,1111,'2011-2012-01','Good')

SQL课程设计报告

查询学生信息:

create procedure pro_AskGrade

@SNo varchar(20),@CardId varchar(20)

as

begin try

if(exists(select * from Student where SNo=@SNo and SCardId=@CardId)) begin

Declare @ClassCount int,

@UnpassClass int,@AllScure int,@MaxGrade float,@MinGrade float

select @ClassCount=count(ClassNo) from StudentClass where StudentNo=@SNo select @UnpassClass=count(Grade) from StudentClass where StudentNo=@SNo and Grade<60

select @AllScure=sum(ClassScure) from Class where ClassNo in (select ClassNo from StudentClass where StudentNo=@SNo and Grade>60)

select @MaxGrade=max(Grade) from StudentClass

where StudentClass.StudentNo=@SNo

select @MinGrade=min(Grade) from StudentClass

where StudentClass.StudentNo=@SNo

select ClassName as '课程名',Grade as '最高成绩' from StudentClass join Class on StudentClass.ClassNo=Class.ClassNo

where StudentClass.StudentNo=@SNo and Grade=@MaxGrade

select ClassName as '课程名',Grade as '最低成绩' from StudentClass join Class on StudentClass.ClassNo=Class.ClassNo

where StudentClass.StudentNo=@SNo and Grade=@MinGrade

print '学生'+cast(@SNo as char(12))

print '选修课程数'+cast(@ClassCount as char(2))+' 不及格的课程数

'+cast(@UnpassClass as char(2))

+' 总学分'+cast(@AllScure as char(2))

select * from StudentClass where StudentNo=@SNo

end

else

print'用户名/密码错误'

end try

begin catch

print'error'

end catch

exec pro_AskGrade 'A11111111', '33xxxxxxxxxxxx12'

发放教职工工资:

create procedure pro_PayTeacher

as

begin try

declare @ClassTime int,@TeacherTitle char(10),@YearReward int,@PayBase int,@PayOther int,@TeacherNo int

declare cur_PayTeacher cursor

for select EmNo,EmPosition from Employee

open cur_PayTeacher

fetch cur_PayTeacher into @TeacherNo,@TeacherTitle

while(@@fetch_status=0)

begin

select @ClassTime=sum(ClassTime) from Class where ClassNo in(select if(@ClassTime=null) set @ClassTime=0 set @PayOther=1500 set @PayOther=0 if((select Ispartime from Teacher where TeacherNo=@TeacherNo)=0) else if(@TeacherTitle='初级') begin set @PayBase=1000 set @YearReward=1000 ClassNo from EducateClass where TeacherNo=@TeacherNo) end else if(@TeacherTitle='中级') begin set @PayBase=1200 set @YearReward=2000 end else begin set @PayBase=1500 set @YearReward=3000 end if(month(getdate())!=12)

insert into Income else insert into Income values(@TeacherNo,@PayBase,getdate(),@PayOther,0,@ClassTime*80/6)

values(@TeacherNo,@PayBase,getdate(),@PayOther,@YearReward,@ClassTime*80/6)

select * from Income where EmployeeNo=@TeacherNo fetch cur_PayTeacher into @TeacherNo,@TeacherTitle

end

close cur_PayTeacher

deallocate cur_PayTeacher

end try

begin catch

print'error'

end catch

exec pro_PayTeacher

了解课程情况:

create procedure pro_Teach

@TeacherNo int,@TeacherCardId varchar(18)

as

begin try

if(exists(select * from Employee where EmNo=@TeacherNo and

EmCardId=@TeacherCardId))

if(exists (select * from Teacher where TeacherNo=@TeacherNo)) begin declare @CountUnpass int,@ClassNo int,@ClassName declare cur_Count cursor for select Class.ClassNo,Class.ClassName,EducateClassNo from Class on Class.ClassNo=EducateClass.ClassNo where TeacherNo=@TeacherNo order by Class.ClassName,EducateClassNo open cur_Count fetch cur_Count into @ClassNo,@ClassName,@EducateClassNo while(@@Fetch_status=0) begin varchar(20),@EducateClassNo int EducateClass join

select @CountUnpass=count(Grade) from StudentClass where print '课程名'+@ClassName+' 课程班号'+cast(@EducateClassNo as ClassNo=@ClassNo and Grade<60 char(2))+' 不及格学生人数'+cast(@CountUnpass as char(2))

select StudentNo,SName,Grade from StudentClass join Student on SNo=StudentNo where ClassNo=@ClassNo and Grade<60

select top 3 StudentNo,SName,Grade from StudentClass join Student on fetch cur_Count into @ClassNo,@ClassName,@EducateClassNo end end else print'非合法教师' else SNo=StudentNo where ClassNo=@ClassNo

print'用户名/密码错误'

end try

begin catch

end catch

exec pro_Teach 1,'320211515158012132'

新生报到:

Create procedure pro_NewStudent

@StudentNo varchar(20),@StudentName varchar(20),@SBirthday

datetime,@SCardID varchar(20),

@DepNo int,@StudentSex char(2)

as

begin try

declare @StudentCount int,@DormNo varchar(8)

insert into student

values(@StudentNo,@StudentName,@SBirthday,@SCardID,@DepNo,@StudentSex,null)

select @StudentCount=count(SNo) from Student

print'当前学生人数'+cast(@StudentCount as char(2))

select @DormNo=DormNo from Dorm where DormSex=@StudentSex and DormNo=@DormNo and DormNowNu>0

end try

begin catch

print'error'

end catch

create procedure pro_ChooseDorm

@StudentNo varchar(20),@DormNo varchar(8)

as

begin try

begin tran

update Dorm set DormNowNu=DormNowNu-1 where DormNo=@DormNo update Student Set DormNo=@DormNo where SNo=@StudentNo select * from Student where DormNo=@DormNo

commit tran

end try

begin catch

rollback tran

end catch

exec pro_NewStudent

'A11111115','Tome','1992-06-11','33xxxxxxxxxxxx12',1,'男' exec pro_ChooseDorm 'A11111115','01-111'

开课:

create procedure pro_ChoseClass

@TeacherId int,@TeacherCardId varchar(20),@NewClass bit ,@ClassRoomNo int,@ClassNo int,@ClassTerm varchar(12) as

begin try

if(exists(select * from Teacher where TeacherNo=@TeacherId))

if(exists(select * from Employee where EmNo=@TeacherId and begin if(@NewClass=1) begin if(@TeacherId!=(select TeacherNo from EducateClass where insert into values(5,@ClassNo,@TeacherId,@ClassRoomNo,@ClassTerm) else EmCardId=@TeacherCardId)) ClassNo=@ClassNo)) EducateClass(EducateClassNo,ClassNo,TeacherNo,ClassRoomNo,ClassTerm) print'该教师已开该课程' end select * from EducateClass where TeacherNo=@TeacherId end else

print'密码错误'

else

print'非教师'

end try

begin catch

print'error'

end catch

create procedure pro_ChooseStudent

@ClassNo int,@SNo varchar(20)

as

begin try

if(@SNo=(select StudentNo from StdentClass where ClassNo=@ClassNo)) begin

insert into StudentClass values(@ClassNo,@SNo,null) declare @StudentCount int select @StudentCount=count(StudentNo) from StudentClass where ClassNo=@ClassNo

end

else

print'该生已选该课程'

end try

begin catch

print'error'

end catch

exec pro_ChoseClass 1,'320211515158012132',0,null,null,null

exec pro_ChooseStudent 1,'A11111112'

第6题

1.

select avg(Grade) from StudentClass

join Class

on StudentClass.classNo=Class.ClassNo

join Student

on Student.sno=StudentClass.StudentNo

where ClassName='Computer' and SSex='男'

2.

select SName as '姓名',SBirthday as '生日',SCardId as '身份证号码' from Student where SSex='男'

union

select EmName as '姓名',EmBirtday as '生日',EmCardId as '身份证号码' from Employee where EmNo in (select TeacherNo from Teacher) and EmSex='男'

3.

create view vwFamel

as

select SName as '姓名',SBirthday as '生日',SCardId as '身份证号' from Student where SSex='女'

select * from vwFamel

4.

select count(SNo) as 总人

Student.DepNo=Department.DepNo

group by DepName

5.

from Student

where SSex = '女'

group by(DepNo) 数from Student join Department on select DepNo,avg(datediff(year,SBirthday,getdate()))

having avg(datediff(year,SBirthday,getdate()))>20

6.

select ClassName as '课程名',Grade as '成绩',EmName as '教师姓名' from Class

join StudentClass on Class.ClassNo=StudentClass.ClassNo

join EducateClass on StudentClass.ClassNo=EducateClass.ClassNo

join Employee on EducateClass.TeacherNo=Employee.EmNo

where StudentNo='A11111112'

7.

select distinct SName,SNo from Student join

StudentClass on StudentNo=SNo

where not exists(select * from StudentClass where StudentNo=Student.SNo and Grade<90)

8.

select * from StudentClass join

Class on Class.ClassNo=StudentClass.ClassNo

join EducateClass

on Class.ClassNo=EducateClass.ClassNo

order by StudentNo

compute sum(Grade) by StudentNo

第7题

create trigger update_Student on Student

for update

as

begin try

declare @NewDorm varchar(8),@OrignalDorm varchar(8),@DormNowNu int,@OrignalDep int,@NewDormDep int,

@SNo varchar(20)

select @NewDorm=DormNo,@SNo=SNo from inserted

select @OrignalDorm=DormNo,@OrignalDep=DepNo from deleted

select @NewDormDep=DormDep,@DormNowNu=DormNowNu from Dorm where DormNo=@NewDorm

if(exists(select * from Dorm where DormNo=@NewDorm) and exists (select * from Dorm where DormNo=@OrignalDorm))

begin

if(@DormNowNu!=0) begin update Dorm set DormNowNu=DormNowNu-1 where DormNo=@NewDorm update Dorm set DormNowNu=DormNowNu+1 where DormNo=@OrignalDorm update Student set DormNo=@NewDorm where SNo=@SNo end else begin print'转入宿舍已满' rollback tran begin tran end end

else

begin

print'不能转入别系宿舍' rollback tran begin tran

end

end try

begin catch

print'error'

end catch

第8题

create procedure pro_changeDorm

@SNo varchar(20),@OrignalDorm varchar(8),@NewDorm varchar(8),@Agree bit

as

if(@Agree!=0)

begin

begin transaction

declare @OrignalDormSex char(2),@NewDormSex char(2),@Shengyu int,@oldDep int,@NewDep int

select @OrignalDormSex=DormSex,@oldDep=DormDep from Dorm where DormNo=@OrignalDorm

select @NewDormSex=DormSex,@Shengyu=DormNowNu,@NewDep=DormDep from Dorm where DormNo=@NewDorm

if(@OrignalDormSex=@NewDormSex and @Shengyu>0 and @NewDep=@oldDep) begin

update Dorm set DormNowNu=DormNowNu-1 where DormNo=@NewDorm update Dorm set DormNowNu=DormNowNu+1 where DormNo=@OrignalDorm update Student set DormNo=@NewDorm where SNo=@SNo

commit transaction

end

else

rollback transaction

end

exec pro_changeDorm 'A11111112','02-111','03-111',0

更多相关推荐:
课程设计报告

1课程设计目的课程设计是船舶设计原理课程重要的实践性教学环节是培养学生掌握船舶设计基本原理和能力的技术基础主尺度论证与总布置设计是船舶总体设计的重要组成部分通过课程设计的训练力求使学生实现从学生到船舶设计师的角...

课程设计报告内容

一设计目的1强化上机动手能力在理论和实践的基础上进一步巩固数据结构课程学习的内容掌握工程化软件设计的基本方法2掌握图的创建和应用3掌握迪杰斯特拉以及Prim等基本算法思想4掌握if语句及switch语句的运用方...

课程设计报告

中国计量学院信息工程学院课程设计报告课程设计名称系统设计与仿真课程计二级学院信息工程学院专业班级10电信2班学姓成绩号名1000301232廖壁波指导老师20xx年12月13日中国计量学院信息工程学院课程设计报...

课程设计报告模板

信息科学与工程学院高级语言程序设计课程设计报告学生成绩管理系统学科专业计算机科学与技术班级1301学号指导教师唐郑熠讲师学生二零年月目录目录1设计任务12需求分析121基础功能122扩展功能13系统概要设计13...

课程设计报告

扬州大学数据结构课程设计报告课题名称姓名学院系科班级指导老师日期自来水管架设问题广陵学院陈宏建1一课程设计的题目自来水管理架设问题问题描述若要在扬州大学的八个居民区A区B区C区D区E区F区G区H区之间架设自来水...

课程设计报告

系统软件课程设计时钟中断与进程调度学号姓名指导教师11070319许明秀金雪云20xx年12月一报告摘要进程调度是操作系统十分重要的一个部分在操作系统的设计过程中进程调度和时钟中断形成了密不可分的关系系统时钟定...

课程设计报告

计算机高级语言课程设计报告班级学号姓名蔡路日期学生成绩管理系统19xx3120xx100031020xx年1月18日一课程设计题目与要求实习题目学生成绩管理系统实习内容C语言面向对象的分析与设计基本要求学生成绩...

计算机网络课程设计报告

计算机网络课程设计报告一.课程设计的题目、目的及要求.........................................................2二.课程设计的内容(分析和设计).....…

软件课程设计报告

任务书北京信息科技大学计算机软件基础课程设计题目从某个源点到其余各顶点的最短路径学院专业学生姓名班级学号指导老师起止时间任务书1摘要摘要本次课程设计的问题假设西安北京沈阳武汉4个城市构成小型交通网4个城市表示图...

软件课程设计报告

中南民族大学软件课程设计报告电子信息工程09级题目学生吴雪学号指导教师王锦程电子工程0907100220xx年4月25日简易网络聊天系统摘要计算机网络通信技术已经深入我们的生活并给我们即使通信带来了很大的方随着...

JAVA_课程设计报告

JAVA程序设计课程设计报告设计题目学院名称专业班级姓名学号1目录一需求分析3二概要设计3三详细设计331数据库设计332模块及窗体设计3321数据库模块设计3322用户登录识别模块5323用户信息管理模块61...

C语言课程设计报告--实验设备管理系统--吕浙明

课程设计报告课程名称C语言课程设计课题名称实验设设备管理系统专业计算机科学与技术班级191114班学号姓名指导教师20##年08月27日中国地质大学计算机高级语言(C)课程设计报告姓名学号班级191114专业计…

课程设计报告(33篇)