课程名称:数据库原理与技术
设计题目:学生管理子系统
院 系:计算机与网络技术系
班 级: 09级计科1班
设 计 者:
学 号: 200911011
指导教师: 王亚宁
设计时间:2011年6月10日—6月15日
昆明学院
姓 名: 院(系):计算机信息与网络技术学院
专 业:计算机科学与技术 学 号:200911011
任务起止日期:20##年6月10日—6月15日
课程设计题目:
《学生管理子系统》
课程设计要求及任务描述:
1. 构建学生信息管理系统后台数据库;
2. 根据设计任务和基本信息,制定数据库设计实施的实际方案;
3. 进行数据库代码的编写、开发,处理中间各个环节过程中遇到的问题,即使修正设计实施方案,与项组员积极沟通解决问题;
4. 解决开发过程中遇到的技术性问题及关键性代码;
5. 运行结果,调试系统。
工作计划及安排:
6月10日:选择相应题目,进行课程设计课题的资料搜集,撰写项目计划和技术方案。
6月11日:分析与设计:根据搜集的资料,进行数据库功能与数据结构分析,并选择合适的数据字典,并在此基础上进行实现数据库功能的设计方案;
6月12日—13日:数据库设计:程序员运用掌握T-SQL语言编写数据库,实现所建立数据库的各个模块功能;
6月14日:调试与测试:测试主管调试数据库,成员交叉测试程序,并记录测试情况
6月15日:课程设计报告:编写课程设计报告
指导教师签字
20##年 12 月 日
课程设计(大作业)成绩
学号:200911011 姓名: 指导教师:王亚宁
课程设计题目:
《学生管理子系统》
完成情况总结:
在短短一个星期的课程设计中,我学习到了许多书本上所学习不到的知识,实际动手操作和发现问题解决问题的能力得到了很大的提高。
首先,书本里的基础知识相当重要,只有掌握了牢固的基础知识,才能在实际的动手运用中一帆风顺,让我知道了理论结合实际的重要性。
其次,本次课程设计,我们组遇到了各种各样的困难和技术上的难题,然而,团队合作让我们两星期来进展迅速,让我真正感受到团队力量的重要性,它保证了我们团队能提前按时按责按量完成设计任务;一个人也是不可能完成的,因此要具有团结同学的精神,相信团结就是力量;加强了团队合作精神和协调、沟通能力。
指导教师评语:
成绩:
填表时间: 指导教师签名:
课程设计(大作业)报告
前言
一、课程设计目的
1.掌握数据库基本原理,理解关系数据库的设计方法和设计思路。
2.设计一个数据库应用系统。
3.完成所设计系统数据库的概念设计、逻辑设计与物理设计。
4.SQL Server2005的操作与使用。
5.数据库的建立与管理、数据表的建立与操作等。
6.SQL查询语言的使用与编程。
7.培养对所学知识的综合运用的能力。
二、课程设计的基本要求
1、构建学生信息管理系统后台数据库;
2、根据设计任务和基本信息,制定数据库设计实施的实际方案;
3、进行数据库代码的编写、开发,处理中间各个环节过程中遇到的问题,即使修正设计实施方案,与项组员积极沟通解决问题;
4、解决开发过程中遇到的技术性问题及关键性代码;
5、运行结果,调试系统。
系统背景资料说明
本次数据库实训我们组要完成的是学生信息管理系统的后台数据库设计,这是一个典型的PPS进存销系统,该系统通用性极强,覆盖学生的课程、销售、库存、管理等各个环节。该系统的主要内容是以医药公司的库存管理、销售管理、进货管理、供应商管理、客户管理功能为核心。
系统需求分析
操作系统:操作系统:Microsoft Windows 20## Server/NT 及以上版本。
DBMS名称:SQL Sever 2005;
DBMS版本:
数据库概念结构设计
数据库逻辑结构设计
主数据库:
数据库名:student;包含一个主数据文件和一个事务日志文件。
主数据文件逻辑名为:student_data,操作系统文件名为:student_data.mdf
事务日志文件逻辑名为:student_log,操作系统文件名为:student_log.ldf
主数据文件初始容量大小为10MB,最大容量无限制,文件增长量为:10%。
事务日志文件初始容量大小为10MB,最大容量无限制,文件增长量为:10%。
学生表:
学生(学号、姓名、性别、出生日期、专业、班级、所属学院)
课程表:
课程(课程号、课程名、学时、学分)
学生选修课表:
学生选修课(学号、课程号、成绩)
学生德育考评表:
学生德育考评(学号、德育考评分、智育考评分、体育考评分)
学生综合评定情况表:
学生综合评定情况(学号、综合考评分、名次)
学生表
课程表
学生选修课表
学生德育考评表
学生综合评定情况表
数据库实现
一、 T-SQL代码
1、主数据的创建:
create database student
on primary
(name=student_data,
filename='E:\st\student_data.mdf',
size=10MB,
maxsize=unlimited,
filegrowth=10%)
log on
(name=student_log,
filename='E:\st\student_log.ldf',
size=10MB,
maxsize=unlimited,
filegrowth=10%)
go
2、表的创建:
(1)学生表:
use student
go
creat table 学生
(学号 char(12) constraint pk_xs primary key,
姓名 char(8),
性别 char(2),
出生日期 datetime,
专业 varchar(20) not null,
班级 varchar(20)
所属学院 varchar(30)
Go
(2)课程表:
use student
go
create table 课程
(课程号 char(4) constraint pk_kc primary key,
课程名 char(20) not null,
学时 tinyint,
学分 smallint)
go
(3)学生选修课表:
use student
go
create table 学生选修课
(学号 char(12) constraint fk_xsxxkxh references 学生(学号),
课程号 char(4) constraint fk_xsxxkkch references 课程(课程号),
成绩 tinyint)
go
(4)学生德育考评表:
use student
Go
create table 德育考评
(学号 char(12) constraint fk_dykpxh reference学生(学号),
德育考评分 tinyint,
体育考评分 tinyint,
智育考评分 tinyint)
go
(5)学生综合评定情况表:
use student
go
create table 学生综合评定情况
(学号 char(12) constraint fk_xszhpdqkxh references 学生(学号),
综合考评分 tinyint,
名次 char(2))
go
3、一班学生表视图创建:
use student
go
create view view1
as
select dbo.学生.学号, dbo.学生.姓名, dbo.学生.性别, dbo.学生.出生日期, dbo.学生.专业, dbo.学生.班级, dbo.学生.所属学院
from dbo.学生
where (班级='20##级1班')
go
4、存储名次大于等于22名学生综合评定情况:
use student
go
create procedure cj_xm
as
select 学生.学号,姓名,综合考评分,名次
from 学生,学生综合评定情况
where 学生.学号=学生综合评定情况.学号 and 名次>='22'
go
5、建立一个名为del_xs的delete触发器
use student
go
create trigger del_xs
on 学生
for delete
as
delete 学生选修课 where 学号 in (select 学号 from deleted)
go
二、 运行结果
1、按个人或者班级查询学生的综合考评分及名次:
2、查询学生的各个部分分数构成情况
3、能够对基本数据进行修改
参考文献:《数据库原理与技术》清华大学出版社申时凯戴祖诚
致谢:感谢王亚宁老师的悉心指导、感谢小组成员的团结奋战.
数据库原理及应用实验报告
学号: 姓名:
实验1
一、实验目的:
熟悉SQL Server使用界面,掌握使用SSMS和SQL语句创建并设置数据库。
二、实验原理:
1.使用SSMS创建数据库
2.创建数据库语句:
CREATE DATABASE 数据库名
[ON [PRIMARY] //指定一个文件为主要文件
[<文件格式>[,…n]]
[,<文件组格式>[,…n]] ]
[LOG ON {<文件格式>[,…n]}]
<文件格式>::=
([NAME=逻辑文件名,]
FILENAME=‘操作系统下的文件名和路径’
[,SIZE=文件初始容量]
[,MAXSIZE={文件最大容量|UNLIMITED}]
[,FILEGROWTH=递增值])[,…n]
<文件组格式>::=FILEGROUP 文件组名<文件格式>[,…n]
3.修改数据库语句:
ALTER DATABASE 数据库名
{ADD FILE <文件格式>[,…n] [TO FILEGROUP 文件组名]
|ADD LOG FILE<文件格式>[,…n]
|REMOVE FILE 逻辑文件名
|ADD FILEGROUP 文件组名
|REMOVE FILEGROUP 文件组名
|MODIFY FILE<文件格式>
|MODIFY FILEGROUP 文件组名 文件组属性}
<filespec>::=
(NAME=逻辑文件名
[,FILENAME=‘实际文件名和路径’]
[,SIZE=容量]
[,MAXSIZE={最大容量|UNLIMITED}]
[,FILEGROWTH=递增量])
三、实验内容:
1. 使用SQL语句完成下题
(1) 使用CREATE DATABASE语句创建一个名为“st”数据库,要求①主要数据文件:逻辑文件名为“stdata1”,实际文件名为“stdata1.mdf”②事务日志文件:逻辑文件名为“stlog1”,实际文件名为“stlog1.ldf”③初始容量均为3MB,最大容量均为10MB,递增量均为1MB。
(2) 使用CREATE DATABASE语句创建一个名为“student”数据库,要求①主要数据文件:逻辑文件名为“studentdata1”,实际文件名为“studentdata1.mdf”②非主要数据文件:逻辑文件名为“studentdata2”,实际文件名为“studentdata2.ndf”③事务日志文件:逻辑文件名为“studentlog1”,实际文件名为“studentlog1.ldf”④初始容量均为3MB,最大容量均为10MB,递增量均为1MB。
(3) 使用ALTER DATABASE语句在“st” 数据库中添加一个数据文件和一个事务日志文件,其逻辑文件名分别为“studentdata3”和“studentlog2”,其实际文件名分别为“studentdata3.ndf”和“studentlog2.ldf”,初始容量均为1MB,最大容量均为10MB,递增量均为1MB;然后将数据文件studentdata3的初始容量增加到5MB,上限增加到20MB。
解:(1)create database st on primary
(name=stdata1,
filename='d:\xs\stdata1.mdf',
size=3mb, maxsize=10mb, filegrowth=1mb)
log on
(name='stlog1',
filename='d:\xs\stlog1.ldf',
size=1mb, maxsize=10mb, filegrowth=1mb)
go
(2)create database student on primary
(name=studentdata1,
filename='d:\xs\studentdata1.mdf',
size=3mb, maxsize=10mb, filegrowth=1mb),
(name=studentdata3,
filename='d:\xs\studentdata2.ndf',
size=1mb, maxsize=10mb, filegrowth=1mb)
log on
(name='studentlog1',
filename='d:\xs\studentlog1.ldf',
size=1mb, maxsize=10mb, filegrowth=1mb)
go
(3)alter database st
add file
(name=studentdata3,
filename='d:\xs\studentdata3.ndf',
size=1mb, maxsize=10mb, filegrowth=1mb),
(name='studentlog2',
filename='d:\xs\studentlog2.ldf',
size=1mb, maxsize=10mb, filegrowth=1mb)
alter database st
modify file
(name=studentdata3,
size=5mb,maxsize=20mb)
实验2
一、实验目的:掌握使用SSMS和SQL语句创建并管理数据库表.
二、实验原理:
1.在SSMS上创建数据库表
2.创建数据库表语句:
CREATE TABLE[数据库名.拥有者]表名
(<字段定义>)[,…n]
<字段定义>::={字段名 数据类型}
[[DEFAULT 常量表达式]|[IDENITY[(种子,增量)]]]
[<字段定义>][,…n]
3.创建约束
[CONSTRAINT 约束名] NULL|NOT NULL
[CONSTRAINT 约束名] PRIMARY EY[CLUSTERED|NONCLUSTERED]
[(字段名[,…16])]]
[CONSTRAINT 约束名]DEFAULT 默认值[FOR字段名]
[CONSTRAINT 约束名] UNIQUE[CLUSTERED|NONCLUSTERED] [(字段名[,…16])]]
[CONSTRAINT 约束名] FOREIGN KEY[(字段名[,…16])] REFERENTCES 引用表名(引用字段名[,…16])
[CONSTRAINT 约束名]CHECK(条件表达式)
4.修改数据库表
ALTER TABLE
ALTER COLUMN 字段名 新数据类型[(精度[,小数位数])] [NULL|NOT NULL]
ALTER TABLE 表名
ADD{字段定义|字段名AS计算机字段表达式}[,…n]
ALTER TABLE 表名
DROP COLUMN 字段名[,…n]
ALTER TABLE 表名
ADD CONSTRAINT 约束定义[,…n]
ALTER TABLE 表名
DROP CONSTRAINT 约束名[,…n]
三、实验内容
1.使用SQL语句完成下题:
(1) 使用CREATE TABLE语句创建一个学生表,其中包含以下字段:学号(int,自动编号,种子为200001,增量为1,定义为主键);姓名(varchar(8),not null);专业(varchar(20),null,)。
(2) 使用CREATE TABLE语句创建一个成绩表其中包含以下字段:学号(int,not null);课程号(int,not null);成绩(real,null,)。
(3) 使用alter table语句新增学生表和成绩表之间的外键联系,并新增对成绩的检查性约束。
解:(1) create table 学生表
(学号 int identity (200001,1) primary key ,
姓名 varchar(8) not null,
专业 varchar(20) null )
(2) create table 成绩表
(学号 int not null,
课程号 int not null,
成绩 real null)
(3) alter table 成绩表
add
constraint gjmg foreign key(学号) references 学生表(学号),
constraint fhjg check (成绩>=0 and 成绩<=100)
实验3
一、实验目的:熟练掌握SELECT语句对数据库表的各项操作.
二、实验原理:
1.选择查询语句:
SELECT 字段列表 (指定输出字段)
[INTO 新表] (将检索结果存储到一张新表)
From 数据源 (指定检索的数据来源)
[WHERE 搜索条件](指定对记录的过滤条件
[GROUP BY 分组表达式](对检索到的记录分组)
[HAVING 搜索表达式](指定对记录的过滤条件)
[ORDER BY 排序表达式](对检索到的记录进行排序处理)
三、实验内容:
1. 完成课后题3、5
7.3(1) SELECT 业务员姓名,年龄 from 业务员
where 年龄=
(select max (年龄) from 业务员)
(2) select 业务员姓名,月薪from 业务员
order by 月薪 desc
(3) select * from 业务员
where 月薪 between 1000 and 2000
(4) select 客户编号, count(订单号)as 订单数,sum(金额)as 总金额 from 订单
group by 客户编号
(5) select 业务员姓名,count(订单号)as 订单数from 业务员 full outer join 订单
on 业务员.业务员编号=订单.业务员编号
group by 业务员姓名
having count(订单号) >= 2
order by 订单数
(6) update 业务员
set 月薪= 1.1* 月薪
(7) select 业务员姓名,年龄 from 业务员
where 月薪> all (select avg (月薪) from 业务员)
(8) update 业务员
set 月薪=1.05*月薪
where 业务员编号 in
(select 业务员编号 from 订单
group by 业务员编号 having sum(金额)>20000 )
(9) select 业务员姓名,订单号,z.客户编号,金额 from 业务员x,订单y,客户z
where x.业务员编号= y.业务员编号and y.客户编号=z.客户编号and 金额>=2000
7.5(1)SELECT ENO,ENAME FROM EMP
WHERE ENO IN (SELECT ENO FROM WORKS WHERE CNO ='C4' OR CNO='C8'
GROUP BY ENO
HAVING COUNT(CNO)>1)
(2)SELECT ENO,ENAME FROM EMP
WHERE ECITY IN(SELECT CITY FROM COMP WHERE CNO IN (SELECT CNO FROM WORKS))
(3)SELECT ENO ,COUNT (CNO) AS NUM,SUM(SALARY)AS SUM_SALARY FROM WORKS
WHERE ENO IN (SELECT ENO FROM EMP)
GROUP BY ENO
(4)SELECT DISTINCT ENO FROM WORKS
WHERE CNO IN (SELECT CNO FROM WORKS WHERE ENO='E6')
(5)UPDATE WORKS
SET SALARY =100+SALARY
WHERE ENO IN (SELECT ENO FROM EMP WHERE AGE>50)
(6)DELETE
FROM WORKS
WHERE ENO IN ( SELECT ENO FROM EMP WHERE AGE >60)
(7)CREATE VIEW EMP_WOMAN
AS SELECT EMP.ENO,ENAME,WORKS.CNO,CNAME,SALARY FROM (EMP JOIN WORKS ON EMP.ENO = WORKS.ENO) JOIN COMP
ON WORKS.CNO = COMP.CNO WHERE SEX='女'
(8)SELECT CNO,ENO FROM WORKS
WHERE CNO IN(select CNO FROM COMP WHERE CITY='上海')
(9)select ENAME from EMP
WHERE ENO NOT IN (SELECT ENO FROM WORKS WHERE CNO IN (SELECT CNO FROM COMP WHERE CITY='上海'))
(10)SELECT ENO ,ENAME FROM EMP
WHERE ENO IN (SELECT ENO FROM WORKS WHERE SALARY >1000 AND CNO IN (select CNO from COMP where CNAME='IBM')) AND SEX='男'
7.3 订单
客户
业务员
7.5 COMP
EMP
WORKS
实验四、设计性实验:建立小型数据库管理系统
一、实验目的
熟悉数据库建立及应用的方法,系统的应用数据库。
二、实验原理
1.创建数据库语句:
CREATE DATABASE 数据库名
[ON [PRIMARY] //指定一个文件为主要文件
[<文件格式>[,…n]]
[,<文件组格式>[,…n]] ]
[LOG ON {<文件格式>[,…n]}]
[FOR LOAD//提供与SQL Server早期版本的兼容性 | FOR ATTACH//将已经存在的数据库文件连接进来]
<文件格式>::=
([NAME=逻辑文件名,]
FILENAME=‘操作系统下的文件名和路径’
[,SIZE=文件初始容量]
[,MAXSIZE={文件最大容量|UNLIMITED}]
[,FILEGROWTH=递增值])[,…n]
<文件组格式>::=FILEGROUP 文件组名<文件格式>[,…n]
2.修改数据库语句:
ALTER DATABASE 数据库名
{ADD FILE <文件格式>[,…n] [TO FILEGROUP 文件组名]
|ADD LOG FILE<文件格式>[,…n]
|REMOVE FILE 逻辑文件名
|ADD FILEGROUP 文件组名
|REMOVE FILEGROUP 文件组名
|MODIFY FILE<文件格式>
|MODIFY FILEGROUP 文件组名 文件组属性}
<filespec>::=
(NAME=逻辑文件名
[,FILENAME=‘实际文件名和路径’]
[,SIZE=容量]
[,MAXSIZE={最大容量|UNLIMITED}]
[,FILEGROWTH=递增量])
3.备份,恢复数据库原理语句:
RESTORE DATABASE 数据库 FROM 备份设备名
EXEC sp_attach_db ‘数据库名’,‘文件名’ [,…16]
4.创建数据库表语句:
CREATE TABLE[数据库名.拥有者]表名
(<字段定义>)[,…n]
<字段定义>::={字段名 数据类型}
[[DEFAULT 常量表达式]|[IDENITY[(种子,增量)]]]
[<字段定义>][,…n]
5.选择查询语句:
SELECT 字段列表 (指定输出字段)
[INTO 新表] (将检索结果存储到一张新表)
From 数据源 (指定检索的数据来源)
[WHERE 搜索条件](指定对记录的过滤条件
[GROUP BY 分组表达式](对检索到的记录分组)
[HAVING 搜索表达式](指定对记录的过滤条件)
[ORDER BY 排序表达式](对检索到的记录进行排序处理)
三、实验内容
1.数据库的设计
根据实际情况建立E-R数据模型,需要考虑的实体有学生、班级、课程。其中E-R简图如下:
其中班级实体的属性为班级名称、班长学号等;学生属性为学号、姓名等;课程属性为课程号、课程名称;学习联系的属性为学生号、课程号、成绩。其他属性自行设计。
2.数据库的建立
建立数据库及相应的数据库表。
3.数据库的使用
a. 在数据库表中插入数据
b. 设计SQL语言使其分别满足下列要求:
查找学号为20070101的学生姓名;
查找“计算机基础”课程的课程编号;
查找20070102号同学学习的课程名;
查找学习“C语言”课程的学生学号;
查找200701班班长的姓名;
查找成绩高于80分的学生学号;
查找“C语言课程”的平均成绩;
所有设计语句请在sql server中检验。
4.实验报告要求
画出你所设计的E-R数据模型,并给出你所建立的数据库表结构,写出你的数据库及数据库表的建立的语句,给出符合上述条件的select语句
E-R数据模型:
数据库表的结构:
班级
学生
课程
学习联系
语句:
create database st
on primary
(name='st',
filename='c:\sql\st.mdf',
size=3mb,maxsize=10mb,filegrowth=10mb)
go
log on
(name='st',
filename='c:\sql\st.ldf',
size=3mb,maxsize=10mb,filegrowth=10mb)
go
use student
create table 班级 (
班级名称 nchar(10) primary key,
班长学号 nchar(10) not null)
go
create table 学生 (
学号 nchar(10) primary key,
姓名 nchar(10) not null)
go
create table 课程 (
课程号 nchar(10) primary key,
课程名称 nchar(10) not null)
go
create table 学习联系(
学号 nchar(10) primary key,
课程号 nchar(10) not null,
成绩 int null)
go
Select语句:
(1)select 姓名 from 学生
where 学号 =20070101
(2)select 课程号 from 课程
where 课程名称='计算机基础'
(3)select 课程名称 from 课程,学习联系
where 学习联系.学号='20070102' and 学习联系.课程号 = 课程.课程号
(4)select 学号 from 学习联系 ,课程
where 课程.课程名称='C语言' and 课程.课程号=学习联系.课程号
(5)select 姓名 from 班级,学生
where 班级名称=200701 and 学号=班长学号
(6)select 学号 from 学习联系
where 成绩>80
(7)select avg(成绩) as '平均成绩' from 课程,学习联系
where 课程名称='C语言' and 课程.课程号=学习联系.课程号
XXX大学实验报告课程名称数据库管理系统实验名称数据的查询专业班级姓名学号实验日期实验地点20xx20xx学年度第一学期第2页共7…
第1部分北京工业大学数据库实验报告存储过程和触发器姓名邱健康学号09521320专业电信第1部分错误使用开始选项卡将标题1应用于要…
数据库系统及应用实验报告设计课题SQL20xx数据库安装及数据库建立专业班级山东大学通信二班小组成员王指导教师设计时间20xx12…
数据库原理实验报告实验名称实验二使用SQL语句操作数据实验时间20xx416学生姓名班级一实验目的1熟悉SQLServer20xx…
课程设计大作业报告课程名称数据库原理与技术设计题目学生管理子系统院系计算机与网络技术系班级09级计科1班设计者学号20xx1101…
课程代码1010000450数据库Database学分3总学时48实验学时16面向专业信息与计算科学数学与应用数学一实验教学目标数…
数据库原理实验报告实验名称实验二使用SQL语句操作数据实验时间20xx416学生姓名班级一实验目的1熟悉SQLServer20xx…
XXX大学实验报告课程名称数据库管理系统实验名称数据的查询专业班级姓名学号实验日期实验地点20xx20xx学年度第一学期第2页共7…
数据库实验报告课程名称信息系统数据库技术实验名称数据表的管理专业班级姓名学号实验日期实验地点20xx20xx学年度第一学期第2页共…