目录

  • 第1单元    数据库系统导论
    • ● 任务1.1  数据库基本概念
    • ● 任务1.2  设计E—R 图
    • ● 任务1.3   将E-R图转换成关系模型
    • ● 任务1.4   练习与作业
    • ● 教与学参考资源
  • 第2单元   认识SQL SERVER数据库
    • ● 任务2.1 数据库应用场景
    • ● 任务2.3  SQL  Server 数据库安装
    • ● 任务2.4 SQL Server 的管理
    • ● 任务2.5  使用SSMS连接数据库
    • ● 教与学参考资源
  • 第3单元  创建和管理数据库
    • ● 任务3.1 创建数据库
    • ● 任务3.1(2)  命令创建数据库
    • ● 任务3.2 管理数据库
    • ● 任务3.2(2) 查看、收缩数据库
    • ● 教与学参考资源
  • 第4单元 创建和管理数据库表
    • ● 任务4.1 SQL Server常用数据类型
    • ● 任务4.2  创建数据表
    • ● 任务4.3  命令创建表
    • ● 任务4.4 实施完整性约束
    • ● 教与学参考资源
  • 第 5 单元   查询数据表
    • ● 任务5.1 单表数据查询
    • ● 任务5.2 多表数据查询
    • ● 任务5.3 嵌套查询
    • ● 任务5.4 合并查询结果
    • ● 教与学参考资源
  • 第6单元  管理表中数据
    • ● 任务6.1   添加数据
    • ● 任务6.2  修改数据
    • ● 任务6.3  删除数据
    • ● 习题与训练
    • ● 教与学参考资源
  • 第7单元  使用索引和视图
    • ● 任务7.1  使用索引
    • ● 使用T-SQL创建索引
    • ● 任务7.2  使用视图
    • ● 使用T-SQL语句创建视图
    • ● 教与学参考资源
  • 第8单元 Transact-SQL语言编程
    • ● 任务8.1   声明和使用变量
    • ● 任务8.2   流控语句
    • ● 任务8.3   常用系统函数
    • ● 任务8.4   创建自定义函数
    • ● 教与学参考资源
  • 第9单元  事务和锁
    • ● 任务   9.1     事务
    • ● 事务的基本操作
    • ● 任务9.2    锁
    • ● 死锁及避免方法(例)
    • ● 教与学参考资源
  • 第10单元  创建和管理存储过程
    • ● 任务10.1 存储过程及优点
    • ● 任务10.2 创建和执行存储过程
    • ● 任务10.3   存储过程参数和返回值
    • ● 任务10.4 修改、删除、 重新编译存储过程
    • ● 教与学参考资源
  • 第11单元 创建和管理触发器
    • ● 任务1 触发器的作用和分类
    • ● 任务2 触 发器的创建与执行
    • ● 任务3 创建级联触发器
    • ● 任务4 修改、删除触发器
  • 第12单元 创建和使用游标
    • ● 任务1  游标的作用及使用步骤
    • ● 任务2  创建基本游标
    • ● 任务3  使用变量保存游标数据
    • ● 任务4  使用循环环提取游标数据
  • 第13单元 SQL Server用户管理
    • ● 任务1数据库安全管理概述
    • ● 任务2SQL Server 安全机制
    • ● 任务3 账号、角色及权限管理
    • ● 任务4数据库完整性管理
    • ● 任务5 数据库的备份与还原
    • ● 任务6   数据的导入与导出
  • 第14单元  综合应用案例
    • ● 概述
    • ● 需求分析
    • ● 概述设计-逻辑设计- 物理设计
    • ● 编写数据库设计说明书
  • 学生做项目成果展示
    • ● 项目一  设计《我班同学数据库》
    • ● 项目二  设计《(Teaching)教学数据库》
    • ● 项目三  数据库应用系统设计开发项目
    • ● 项目四 《华夏-宿舍管理系统》设计开发
    • ● 项目五   综合实训大作业
    • ● 综合实训团队项目大作业
    • ● 学生完成项目摘录展示
  • 总复习与综合训练
    • ● 总复习
    • ● 综合训练一
    • ● 综合训练二
    • ● 综合训练三
    • ● 综合训练四
    • ● 综合训练五
    • ● 简答综合训练
  • 在线专题测验
    • ● 自检自测一
    • ● 自检自测二
  • 拓展   数据库管理工具平台  Navicat
    • ● 关于Navica
    • ● Navicat 的系统需求
    • ● Navicat 的用户界面
    • ● Navicat 创建数据库对象
    • ● 在Navicat创建的SQL 程序脚本
    • ● 在Navicat创建的SQL  server 脚本(2)
    • ● 综合实训(1)
    • ● 综合实训(2)
  • 技术拓展   (MYSQL)数据库技术与应用
    • ● MYSQL技术
  • 教与学图片剪影
    • ● 教学团队
    • ● 学生学习实训
    • ● 活动与交流
项目五   综合实训大作业

  


综合实训大作业

课程名称:  SQL Server  数据库技术  

 专业班级: 软件技术19(5)班

 学   号:

姓   名:

任课教师:  谢赞福 

信息工程学院

2020年6月

 

说  明

课程目标及要求:培养学生的数据库应用能力(简单地说:建好数据库、 用好数据库,管好数据库),培养数据库应用管理与开发人员。 

教学过程与方法: 


数据库应用系统的设计开发通常分为七个阶段:

(1)规划阶段

(2)需求分析阶段

(3)概念设计阶段

(4)逻辑设计阶段

(5)物理设计阶段

(6)实现阶段

(7)运行维护阶段


 

《数据库技术SQL SERVER》

综合实训大作业

    根据调研,要求开发《华夏宿舍管理系统》,后台数据库采用SQL  SERVER (如:SQL SERVER 2014),开发工具采用 JAVA。 

要求在给定的系统原型基础上,完成设计开发任务。具体要求如下:

(一)设计、创建数据库及其对象

主要是:数据表、视图、存储过程、触发器等

(一) 配置数据库应用系统环境

(二) 调试用JAVA语言开发的系统原型

(三) 适当修改完善系统的人机界面、功能、性能。

(四) 完成开发文档的撰写、系统使用说明书。

要求:2020年6月22日前提交


《宿舍管理系统》功能、性能、界面需求:

(1) 注册入住  (输入数据:学号,姓名,宿舍号,床号,任职情况,联系电话,出生日期,性别,民族,身份证号,等)

(2) 学生离校  如,毕业、退学等

(3) 学生查询  如,根据姓名查询等

(4) 学生更新  如,修改学生相关信息

(5) 人数统计   如,统计某类学生人数

(6) 健康打卡   如,输入健康码,体温,体测地点,等

(7) 人员报表   输出各类人员报表等

(8) 健康报表   输出各类人员健康报表

(如,包括:健康码, 最高体温,最低体温,平均体温,健康报告(建议结论))

(9) 卫生评比  如,输入:学号,评比时间,评比得分,宿舍号,备注,等数据)

(10) 卫生报表     输出卫生评比报告表

(包括:学号,评比时间,卫评分数,宿舍号,卫生评比结论,备注)

(11) 费用管理    (输入各种费用,如:水费、电费、网络费、卫生费,等,输出各类费用报表) 

要求:用户进入系统,要通过用户名及密码审查合法才可进入。

要求人机界面(UI)友好,操作简便、快捷,安全性好。


操作实训:

第一部  设计、创建数据库及其对象

(一)先初始化数据库

1、 进入SQL SEVER 2012(或2005、2008、2014、2016等)的SSMS。

 

2、 在数据库新建一个qqhou数据库。

 /**  附注说明:也可以利用SQL 命令创建数据库  [qqhou] ,可先在硬盘上建好存放数据库的目录,如:D:\HXRMIS      */

 USE  [master]

GO

CREATE DATABASE [qqhou]

 CONTAINMENT = NONE

 ON  PRIMARY 

( NAME = N'qqhou', FILENAME = N'D:\HXRMIS\qqhou.mdf' , SIZE = 5120KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )

 LOG ON 

( NAME = N'qqhou_log', FILENAME = N'D:\HXRMIS\qqhou_log.ldf' , SIZE = 2048KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)

GO

或者简单地执行SQL命令:

USE  [master]

GO

CREATE DATABASE  [qqhou]

GO


3、 新建数据库初始化表,将文件夹SQL表复制到初始化表中,并执行,最终创建数据库。

(注:将其SQL 命令复制到新建查询表,并执行)。

--(1)创建系统用户表   [useps]

USE [qqhou]

GO

CREATE TABLE [dbo].[useps](

[userid] [varchar](20) NOT NULL,

[password] [varchar](20) NOT NULL,

[name] [nchar](10) NULL

) ON [PRIMARY]

GO


--插入模拟数据

INSERT INTO [dbo].[useps]([userid],[password],[name])

     VALUES   ('admin','admin','gzwangmz')

INSERT INTO [dbo].[useps]([userid],[password],[name])

     VALUES   ('admin1','admin1','admin1')


参照上面代码,请给自己开设一个帐户及密码。

代码是:

系统用户表 [useps]的结构如下图(截屏):


(请完成)


--(2)创建宿舍人员表  [Person]

USE [qqhou]

GO

CREATE TABLE [dbo].[Person](

[Id] [varchar](20) NOT NULL, --学号

[Name] [varchar](20) NULL,  --姓名

[Department] [varchar](8) NULL, --宿舍号,如 1-101

[Renzhi] [char](20) NULL,  --角色或职务,任职情况

[Score] [char](20) NULL,   --床号

[Tel] [varchar](11) NULL  -- 电话

) ON [PRIMARY]

GO


--插入模拟数据到   [Person]表

insert into Person(Id,Name,Department,Renzhi,Score,Tel)

     values('2020101','林秀芳','1-101','舍员','5','13711238866')

insert into Person(Id,Name,Department,Renzhi,Score,Tel)

     values('2020102','谢彬华','1-102','舍长','3','13711236655')

insert into Person(Id,Name,Department,Renzhi,Score,Tel)

     values('2020103','李红芳','2-101','舍员','2','13522356798')

insert into Person(Id,Name,Department,Renzhi,Score,Tel)

     values('2020104','李四','2-102','班长','1','13688762311')


宿舍人员表  [Person]的结构如下图(截屏):

(请完成)


--(3)创建  [同学表]

USE [qqhou]

GO

CREATE TABLE [dbo].[同学表](

[学号] [varchar](11)  PRIMARY KEY ,

[姓名] [nchar](4)  NOT NULL,

[性别] [nchar](1)  CHECK  (([性别]='女' OR [性别]='男'))  NULL,

[出生日期] [date] NULL,

[民族] [nchar](8)  NULL ,

[身份证号] [char](18)  NULL,

[宿舍号] [char](8) NULL   )

GO


--(4)创建 [宿舍表]

USE [qqhou]

GO

CREATE TABLE [dbo].[宿舍表](

[宿舍号] [char](8)  PRIMARY  KEY ,

[宿舍电话] [char](11)  NULL,

[可住人数] [int]  NULL,

[已住人数] [int]   NULL

)


--插入模拟数据

insert 宿舍表 ([宿舍号],[宿舍电话] ,[可住人数],[已住人数]) values('1-101', '87864505',6,0)

insert 宿舍表 ([宿舍号],[宿舍电话] ,[可住人数],[已住人数]) values('1-102', '87864565',6,0)


--插入模拟数据

NSERT INTO [同学表]

           ([学号],[姓名],[性别],[出生日期] ,[民族],[身份证号],[宿舍号])

     VALUES   ('2020101','林秀芳','女','2001-06-15','汉族','44010652345585669', '1-101')

update 宿舍表  set 已住人数=已住人数+1 where 宿舍号='1-101'


--(5)创建  [健康表]

USE [qqhou]

GO

CREATE TABLE [dbo].[健康表](

[健康码] [varchar](18) NULL,

[日期] [datetime] NULL,

[体温] [float] NULL,

[体测地点] [varchar](50) NULL,

[备注] [varchar](50) NULL,

[报告] [nvarchar](50) NULL

) ON [PRIMARY]

GO


--模拟数据

INSERT INTO [dbo].[健康表]([健康码] ,[日期] ,[体温] ,[体测地点] ,[备注])  VALUES (2020101,GETDATE(),36.7,'广州从化','正常')

INSERT INTO [dbo].[健康表]([健康码] ,[日期] ,[体温] ,[体测地点] ,[备注])  VALUES (2020102,GETDATE(),36.7,'广州从化','正常')

  [健康表]的结构如下图(截屏):

(请完成)


--(6)创建 [卫生表]

USE [qqhou]

GO

CREATE TABLE [dbo].[卫生表](

[学号] [varchar](11) NULL,

[日期] [datetime] NULL,

[卫评分数] [float] NULL,

[宿舍号] [varchar](20) NULL,

[报告] [varchar](20) NULL,

[备注] [varchar](50) NULL

) ON [PRIMARY]

GO


--模拟数据

INSERT INTO [dbo].[卫生表]([学号],[日期] ,[卫评分数],[宿舍号] ,[备注] ,[报告])      VALUES  ('2020101','2020-05-20',91,'1-101','内务有待提升','优秀')


(7)创建[费用表]

CREATE TABLE [dbo].[费用表](

[学号] [varchar](11) NOT NULL,

[姓名] [varchar](10) NULL,

[费用项目名称] [nchar](20) NULL,

[金额] [float] NULL,

[备注] [nchar](30) NULL

) ON [PRIMARY]


INSERT INTO [dbo].[费用表] ([学号] ,[姓名],[日期],[费用项目名称] ,[金额] ,[备注])

     VALUES  ('2020101','林秀芳','2020-05-23','5月份网络费', 36.86 ,'已交纳')

GO


4、 若想查看表的模拟数据,可在新建查询打开,并查询。

--例:

SELECT  *  FROM   [Person]

    SELECT *  FROM  [useps]


5、设计创建 数据库 其他对象 (视图,存储过程,触发器,函数,等)

--(1)创建视图  [健康报告表V] 

USE [qqhou]

GO

/**View [dbo].[健康报告表V]  ***/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE  VIEW [dbo].[健康报告表V]

AS

SELECT 健康码,姓名,最高体温, 最低体温, 平均体温, 报告

FROM [健康报告视图]  K, 同学表 T

WHERE K.健康码=T.学号 

GO


-- 调用示例  SELECT  *   FROM   [dbo].[健康报告表V]


--(2)创建函数   [dbo].[转换报告]  

USE [qqhou]

GO

/****** Object:  UserDefinedFunction [dbo].[转换报告]   ***/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE  FUNCTION  [dbo].[转换报告](@体温 float,@日期 datetime)

RETURNS  CHAR(60)

AS

BEGIN

DECLARE @报告 CHAR(60),@报告日期 CHAR(30)

SET @报告日期=CONVERT(CHAR(20), @日期)

--SET @报告日期=str(year(@日期),4)+'年'+str(month(@日期),2)+'月'+str(day(@日期),2)+'日'

SELECT  @报告= CASE

 WHEN @体温>=39 THEN '体温严重异常!!  '+@报告日期

  WHEN @体温>=37.3 AND @体温<39 THEN '体温异常!  '+@报告日期

  WHEN @体温<37.3  THEN ' 正常 '

  WHEN @体温 IS NULL THEN '没有体测'

 END

RETURN (@报告)

 END

GO

 

--(3) 创建 [健康表]的[体温触发器]

USE [qqhou]

GO

/****** Object:  Trigger [dbo].[体温触发器]    ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TRIGGER [dbo].[体温触发器]

ON [dbo].[健康表]

FOR INSERT,UPDATE

AS

BEGIN

DECLARE @体温 float,@日期 datetime

SELECT @日期=日期, @体温=体温 FROM INSERTED

IF @体温>37.3 

PRINT  '华夏小信  特别警告! 体温异常!!'+STR(@体温,6,3)

UPDATE 健康表  

SET 报告='警告! 体温异常!!'   WHERE  体温>37.3 and @日期=日期

END


--模拟触发数据

INSERT INTO [dbo].[健康表]([健康码] ,[日期] ,[体温] ,[体测地点] ,[备注])  VALUES    (190501,GETDATE(),37.8,'广州从化','??')


--(4)创建 [健康报告视图]  

USE [qqhou]

GO

/****** Object:  View [dbo].[健康报告视图]   ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE  VIEW  [dbo].[健康报告视图]

AS 

select [健康码] ,最高体温= max(体温), 最低体温= min(体温), 平均体温= avg(体温), dbo.转换报告(体温,日期)  AS  报告

 from 健康表 

 GROUP BY [健康码],dbo.转换报告(体温,日期)

 GO


-- 调用示例  SELECT  *   FROM   [dbo].[健康报告视图]


--(5)创建 存储过程    [dbo].[输出健康报告表]

USE [qqhou]

GO

/****** Object:  StoredProcedure [dbo].[输出健康报告表]    *****/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE  PROC  [dbo].[输出健康报告表]

@JNUM VARCHAR(18)

AS

DECLARE @NUM VARCHAR(18),@NAME VARCHAR(12),@HMAX float,@HMIN  float ,@HAVG float, @报告 VARCHAR(60)

DECLARE Cr1 CURSOR  FOR

SELECT 健康码,姓名,最高体温, 最低体温, 平均体温, 报告

FROM [健康报告视图]  K, 同学表 T

WHERE K.健康码=T.学号  AND  K.健康码>=@JNUM 

OPEN Cr1

PRINT SPACE(20)+'=============  大学生健康报告  ============='

PRINT '  '

PRINT '健康码    姓名         最高体温      最低体温    平均体温      报告(建议结论)'

PRINT REPLICATE('-',96)

FETCH NEXT FROM Cr1 INTO @NUM,@NAME ,@HMAX,@HMIN ,@HAVG , @报告

WHILE @@FETCH_STATUS=0

BEGIN

PRINT @NUM+SPACE(3)+CONVERT(CHAR(6),@NAME)+SPACE(3)+STR(@HMAX)+SPACE(3)+STR(@HMIN)+SPACE(3)+STR(@HAVG )+SPACE(8)+ @报告

PRINT REPLICATE('-',96)

FETCH NEXT  FROM Cr1 INTO @NUM,@NAME ,@HMAX,@HMIN ,@HAVG , @报告

END

CLOSE Cr1

DEALLOCATE Cr1

GO


第二部份 数据库应用系统环境配置

连接数据库与java程序。

1.打开控制面板,选择管理工具。


2.选择数据源,连接数据库。


3.在系统DSN中添加数据源(qqhou)


将上图换成你自己机器的截图


4.选择sql server native client10.0  (或sql server native client 11.0)

 

5.将数据源命名为qqhou,选择本地服务器(或本地的可用 SQL 服务器)。

 

 (若本地服务器安装多个,则选用数据库可用的那一个)

 或例:

   

6.更改默认数据库,最终连接上数据库。


或:

 

上面表示连接数据库测试成功。


第三部份  调试数据库应用系统

调试、运行《华夏宿舍管理系统》

(若还没有安装配置好JAVA环境,请安装配置)

打开java程序并运行。

1、打开MyEclipse(或 eclipse或中文版eclipse)。

 

2、进入并导入。

 

3、导入qq文件。


导入文件

 

Run运行java


三、最终运行成功。

(注: 用户测试   用户名admin   密码:admin )



通过审核合法用户,成功出现系统主菜单:


根据工作需要,选择运行相应功能。

 任务:请在JAVA环境,将开发者信息改成你们团队信息(包括团队成员名单)。建议对自己感兴趣的内容进行修改、完善。


撰写用户使用说明书

(1) 如何进入系统

运行系统,出现:



输入用户名及密码,并按[确定]按钮。

注:调试用户名:admin   密码:admin


(2) 如何进行学 生注册


输入学生学号,学生姓名,学生宿舍,学生床号,任职情况,联系电话,出生日期,性别,民族,身份证号,点击确认按钮。


(3) 学生离校


输入学生姓名,点击离校按钮


(4) 学生查询  


输入学生姓名,点击查询按钮

(5) 学生更新

 

输入学生学号,学生姓名,宿舍,床号,任职情况,联系电话,点击更新按钮


(6) 人数统计

 

点击人数统计按钮

(7) 健康打卡

 

输入健康码,体温,体测地点,点击确定按钮


(8) 人员报表

 

输入制表人,点击确定按钮


(9) 健康报表

 

(10) 卫生评比

 

输入学号,评比日期,评比得分,宿舍号,备注,点击确定按钮


(11) 卫生报表

 

(12) 费用管理


输入学号,姓名,日期,费用名称,金额,备注,点击确定按钮


(13) 费用报表


部份学生提交的综合实训大作业: