职场文秘网

首页 > 入党材料 > 入党志愿书 / 正文

高校教材管理系统数据结构课程设计

2020-12-18 20:18:40

数据结构课程设计 题 目:
高校教材管理系统 课 程 设 计 任 务 书 一、课程设计题目:
高校教材管理系统 二、课程设计应解决的主要问题:
(1) 实现出版社、教材类型等的管理 ______________ (2) 实现教材的订购管理 ____________ (3) 实现教材的入库管理 _____________ (4) 实现教材的领用管理 _____________ (5) 创建规则实现教材的书号必须满足意ISBN开头,后跟10个数字的格式,比如:ISBN7302120363 ____________ (6)创建触发器,实现教材入库和出库时自动修改库存数量 ___________ (7) 创建存储过程统计各种教材的订购、到货和发放数量;
建立数据库相关表之间的参照完整性约束 ____________ 目 录 1 概述 …………………………………………………………5 2 需求分析 …………………………………………………………5 2.1 数据的分析……………………………………………………………5 2.2 数据处理的分析…………………………………………………………6 2.3 安全性分析…………………………………………………………6 2.4 完整性分析…………………………………………………………8 3 概念结构设计 …………………………………………………………8 3. 1高校教材系统的数据流图………………………………………………………9 3.2 数据字典…………………………………………………………9 3.3 E-R图……………………………………………………………10 4 逻辑结构设计 …………………………………………………………13 4. 1 实体间联系的不同情况 … … … … … … … … ……………………………1 3 4. 2 将E-R图转换成关系模式… ………………………………………………………1 4 4. 3 关系模式的分析… … … … … … … … … … … …………………………1 4 4. 4 数据库关系图… … … … … … … … … … … … … ……………………1 4 5 物理结构设计 ………………………………………………………14 5.1设计存储过程… … … … … … … … … … ………………………………1 4 5.2 设计索引… … … … … … … … … … … … … ………………………1 5 6 数据库实施 … … … … … …………………………………………… 15 6. 1权 限 设 置 … … … … … … … … … … … ……………………………1 5 6. 2数 据 输 入… … … … … … … … … … … … … … … ………………1 6 6.2.1 创 建 数 据 库… …… … … … … ……………………………………1 6 6.2.2 创建数据表并插入数据………………………………………………………1 7 6.2.3 创建视图… … … … … … … … ………………………………………1 8 6.2.4 数据表的操纵语句… … … …………………………………………………1 9 6. 3 程序设计与调试… … … … … … … … … … ………………………………1 9 6.3.1 设计索引… … … … … … … … … … … ……………………………1 9 6.3.2 数据查询操作… … … … … … … … … … … ………………………2 0 6.3.3 使用控制流语句编写程序… … … … … … … … … …………………2 2 6.3.4 编写自定义函数及调用… … … … … … … … … … … ……………2 3 6.3.5 编写存储过程及调用… … … … … … … … … … … … … ………2 4 6.3.6 编写触发器… … … … … … … … … … … … … …………………2 5 6.3.7 设计游标及其使用… … … … … … … … … … … …………………2 6 7 结束语 ……………………………………………………27 8 参考文献 ……………………………………………………28 1. 概述  1.1 项目背景 在高速发展的当今信息社会,越来越多的工作都已经将计算机引入了其中,并且成为了其中不可或缺的一个重要部分。利用计算机进行各项管理与协调,将能大大的提高工作的效率,减小工作强度;
在相同的工作强度情况下,利用计算机进行工作,能比原来的老式工作方式提高数倍乃至数十倍的工作的效率,可以大大的减少各项人力及物资损耗,从而使得能够将多余的人力及投入到更需要的地方去。高校管理当然也不例外,所以教材管理的计算机化已刻不容缓。教材管理对于各个学校而言,都是一项很复杂、烦琐的工作, 是高校教务管理中的一个重要环节, 由于大学专业设置门类多,各专业每期开设课程的种类多,其业务不仅涉及出版部门,而且要面对全校各系的授课教师,各班级的学生,教材科要管理的入出库教材种类非常多,涉及到的人员广,工作量大,再者是近些年来,我国高等教育规模不断扩大,学校学生人数迅速增加,使得教材管理工作更加繁重不堪。所以,一套好的高校教材管理软件,不但能够大大降低工作人员的劳动强度,而且还能提高学校的管理效率和教学水平。

学校教材管理主要是由教材计划制定、采购、入库、发放、记账、结算等一系列工作所组成,该工作各院校都有专门机构负责该项工作,通常是教材科。由于学校中专业设置门类多,各专业每期开设课程种类多,各个专业需要订购的课本也不一样,在每学期开学的时候教材的发放便成为了一个繁重的任务。每期教材科管理的入出库教材种类少则几百多则几千种,涉及教材册数少则几千多则几万,涉及人员广,工作量大,再者特别是近年来,我国高等教育规模的不断扩大,学校学生人数迅速增加,使教材管理工作更加繁重不堪。据调查,到目前为止,我国还有许多学校甚至是一些重点院校的教材管理仍为手工管理方式,这种现状不但与现实学校教材管理的业务需求不相适应,并且也与学校信息化建设的发展趋势不相适应,因此,学校教材管理人员目前迫切需要一套方便、高效的计算机化的管理信息系统来代替他们繁琐、低效的传统手工管理方式,并最终实现教材管理的全面自动化。

 因此,教材管理水平的高低直接影响教学工作的进行、教学质量的提高和合格人才的培养,开发和使用高校教材管理信息系统是改善和提高教材管理水平的一个重要途径。

1.2 编写目的 本课题旨在解决我校和其他高校教材管理工作还是依靠教材管理人员的手工管理的现状,并且在现有基础上考虑了如何完善和解决现有的两层结构的C/S(客户端/服务器)教材系统本身所固有的缺陷,把两层结构中服务器部分和客户端部分的应用单独划分出来,从而满足大型系统的需求。通过本系统不仅可以方便教材管理人员管理教材,还可以方便教务部门和广大师生查询教材和查看教材管理记录 ,使教材信息管理工作系统化、规范化、自动化,从而达到提高教材管理效率的目的。

1.3 软件定义 人员订书、领书、查询教材资料及其书款情况必须在管理员的设置条件下进行。

1.4 开发环境 本系统使用SQL Server 2008 Express数据库作为后台的数据管理系统,利用ADO数据库组件连接后台数据库。开发采用的是C#,它是由Microsoft公司开发的Windows程序开发环境,是现在最受欢迎的几种开发工具之一.   2. 需求分析 2.1 数据的分析 教材管理系统主要提供学生以班级为单位能从学校教材管理中心完成每学期领到所订教材的功能,其中包括班级信息、教材管理员信息、财务室信息、教师信息、教材信息、出版社信息。此系统可以让教师增加、删除和修改某一学期所定的教材信息,教材管理员可以依据教师提供的应订教材要求和出版社联系订书,还可以让出版社增加、删除和修改预定教材的信息。如果信息无误,财务室根据学生交的教材费给教材管理员拨款,订书成功后,开学初可以将所定教材成功发放给学生所在班级。

2.2 数据处理的分析  系统实现功能描述——  本系统应该实现的功能如下:  (1)系统管理模块:首先是对本系统的操作用户设置权限以及用户基本信息的添加、修改、删除其次是设置有系统初始化,能够在系统出现问题或者有大量错误、冗余数据时进行初始化设置,使系统恢复期初始状态;
  (2)书费管理局模块:财务科根据学生订书情况和教材费用收缴学生订书费用,并记录相应的数据 ;

(3)教材出入库模块:教材科根据学生订书数量和教材基本信息想学生发放教材的出库管理和向书商下达供书订单并打印教材报表,便于用户直接查看,实现出版社、教材类型等的管理并实现教材的订购、入库和领用管理;
  (4)综合查询模块:根据用户的类型和需求查询教材的库存信息,班级信息以及费用收缴信息,创建规则实现教材的书号必须满足以ISBN开头,后跟10个数字的格式,比如:ISBN7302120363 。创建触发器,实现教材入库和出库时自动修改库存数量。创建存储过程统计各种教材的订购、到货和发放数量;
建立数据库相关表之间的参照完整性约束 ;

(5)统计分析模块:录入班级信息闭和教师单位信息并设置打印报表功能供用户查看然后操作员根据订书情况统计分析学生买书的人数比例和学生不购买教材的原因分析,一次给校方提供相应的数据,便于改进学校的教材管理措施,满足学生对教材的需求;
  (6) 帮助模块:介绍本系统的相关信息和操作指南。

2.3 安全性分析 (1)系统能抵御瑞星网上公布的病毒的攻击而不至于瘫痪。  (2)系统能安全的防范对数据库内容不安全的访问和操作。  (3)系统能在断电的情况下,依靠UPS电源确保数据库内容的完整性和安全性。  (4)数据库服务端应具备系统使用期间2小时备份一次数据库的功能。  (5)系统应用验证用户权限方可使用的功能保障。

(6)能完全、直观的体现系统功能,用户能方便快捷的执行某种教材管理工作,能适应屏显分辨率的调整,友好、可操作性强。

(7)限于网络配置和C/S结构程序的网络编程实现问题,部分功能可能实现不完美,甚至是暂时无法实现。

以下为数据库的用户信息及其权限 ~1班级信息 班级 交费 财务管理员 修改信息 删除信息 登记信息 领书 班级信息操作流程图 ~2 教材管理员信息 教材管理员 管理 教材 删除信息 修改信息 登记信息 发书 教材管理员信息操作流程图 ~3 财务管理员信息 财务管理员 拨款 教材管理员 登记信息 删除信息 修改信息 购买教材 财务管理员信息操作流程图 ~4 教师信息 教师 选定 教材 修改人数 删除人数 统计人数 预订教材 教师信息操作流程图 ~5 教材信息 教材 分类 班级 删除领取信息 修改领取信息 登记领取信息 被领取 教材信息操作流程图 ~6 出版社信息 出版社 出版 教材 整理信息 联系购买商 分类 被订购 出版社信息操作流程图 2.4 完整性分析 当向数据库中插入、修改时,系统能够辨别输入的数据是否符合语义,不能的则不能修改成功。

3. 概念结构设计 从课程设计选题中可以得知,我们设计的高校教材管理系统数据库需具备以下功能:
1) 实现出版社、教材类型等的管理;

2) 实现教材的订购管理;

3) 实现教材的入库管理;

4) 实现教材的领用管理;

5) 可随时查询教材管理系统中的各种信息;

6) 创建规则实现教材的书号必须满足以ISBN开头,后跟10个数字的格式,比如:ISBN7302120363;

7) 创建触发器,实现教材入库和出库时自动修改库存数量;

8) 创建存储过程统计各种教材的订购、到货和发放数量;
建立数据库相关表之间的参照完整性约束。

3.1 高校教材系统的数据流图 数据流程图 3.2 数据字典 数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。是一种用户可以访问的记录数据库和应用程序源数据的目录。

数据字典最重要的作用是作为分析阶段的工具。数据字典最重要的用途都是供人查询对不了解的条目的解释,在结构化分析中,数据字典的作用是给数据流图上每个成分加以定义和说明。换句话说,数据流图上所有的成分的定义和解释的文字集合就是数据字典,而且在数据字典中建立的一组严密一致的定义很有助于改进分析员和用户的通信。

数据库数据字典不仅是每个数据库的中心,而且对每个用户也是非常重要的信息。用户可以用SQL语句访问数据库数据字典。下面是本系统中的数据字典。

名字:用户信息 描述:使用该软件的人员信息 定义:用户信息=登陆账号+真实名字+登陆密码+班级 名字:教材基本信息 描述:各种教材的详细信息 定义:教材信息=教材编号+教材名称+教材作者+出版社+教材版本号 名字:入库信息 描述:每一种教材的入库详细信息 定义:入库信息=教材编号+教材名称+入库单号 +单价+出版社+数量+入库时间 名字:订购信息 描述:每一种教材订购的详细信息 定义:订购信息=订购单号+教材编号+教材名称+数量+单价+供应商+订购日期 名字:出库信息 描述:每一种教材的出库详细信息 定义:出库信息=教材编号+教材名称+数量+单价+出版社+班级 名字:管理员信息 描述:管理教材的入库和出库的详细信息 定义:管理员信息=编号+姓名+性别+电话 名字:供应商信息 描述:为需求单位提供教材 定义:供应商信息=编号+名称+地址+负责人+电话 3.3 E-R图 下面是各实体的ER图:
班级:
出版社:
订购管理:
出库管理:
学生:
入库管理:
供应商管理:
高校教材管理系统实现各种管理工作,根据使用者学生与供应商、管理员管理、入库管理、出库的管理、印刷社、教材的关系,构化出本系统整体的ER图:
4. 逻辑结构设计 数据库的逻辑结构设计就是把概念结构设计阶段设计好的基本ER图转换为与选用的 DBMS产品所支持的数据模型相符合的逻辑结构。由于目前使用的数据库基本上都是关系数据库,因此首先需要将ER图转换为关系模型,然后根据具体DBMS的特点和限制转换为特定的DBMS支持下的数据模型,最后进行优化。在本系统中我们选用的数据库环境是SQL srver2008。

4.1 实体型间联系的不同情况 (1)一个1:1联系可以转换成一个独立的关系模式,也可以与任意一段对应的关系模式合并。

(2)一个1:n联系可以转换成一个独立的关系模式,也可以与n端对应的关系模式合并。

(3)一个m:n联系可以转换成一个关系模式。

(4)3个或3个以上实体间的一个多元联系可以转换为一个关系模式。

(5)具有相同码的关系模式可以合并。

4.2 将E-R图转换成关系模式 教材(教材编号,教材名称,类型编号,订书单位,出版社名称,出版时间,作者,印张,数量,字数,入库时间) 班级(班级编号,班级名称,人数,班长,班长号码,班主任,班主任号码,学院系,学校,入学时间) 学生(学号,姓名,学院系,学校,班级) 出库(教材编号,教材名称,数量,单价,班级编号,出版社编号,出版时间,出库时间,负责人) 入库(教材编号,教材名称,数量,单价,出版社,入库时间,作者,负责人) 管理员(管理员编号,管理员名字,性别,电话) 供应商(供应商编号,供应商名称,供应商地址,电话,负责人) 订购(订单编号,教材编号,教材名称,单价,数量) 出版社(出版社编号,出版社名称,电话,负责人,地址)。

(横线化的表示是主键) 4.3关系模式的分析 学生(学号,姓名,学院系,学校,班级),其中,学号为主码,姓名,学院系,学校,班级为非主属性,因为所有非主属性都完全依赖于每个候选码,所有主属性都完全函数依赖于每个不包含它的候选码,但是有属性完全函数依赖于非码的一组属性,所以该关系属于3NF,但不属于BCNF。

管理员(管理员编号,管理员名字,性别,电话),其中,管理员编号为主码,管理员名字,性别,电话为非主属性,因为所有非主属性都完全依赖于每个候选码,所有主属性都完全函数依赖于每个不包含它的候选码,没有任何属性完全函数依赖于非码的任何一组属性,所以该关系属于3NF,也属于BCNF。

5. 物理结构设计 5.1 设计存储过程 (1)在“教材管理库”数据库创建无参存储过程,查询各种教材的订购数量 create procedure jc_sl as select 教材编号,count(数量) as 数量sl from 订购 group by 教材编号 go (2)在“教材管理库”数据库创建带output参数的存储过程,用于计算指定的教材订购的总订购金额,存储过程中使用一个输入参数(教材名称)和一个输出参数(总订购金额) create procedure pname @jcmc varchar(20),@coun int output as select @coun = 单价*数量 from 订购 where 教材名称 = @jcmc go (3)在“教材管理库”数据库创建带有参数和默认值(通配符)的存储过程,从学生表中返回指定的学生(提供姓名)的信息。该存储过程对传递的参数进行模式匹配,如果没有提供参数,则返回所有学生的信息 create procedure student_name @name varchar(40)= ' %' as select * from 学生 where 姓名 like @name go 5.2 设计索引 (1)聚合索引和唯一索引 创建学生表上按学号升序排的唯一聚合索引id1 use 教材管理库 go create unique clustered index id1 on 学生 (学号) (2)非聚合索引 创建学生表上先按学号升序排,学号一样的再按书费降序排的非聚集索引id2 use 教材管理库 go create index id2 on 学生 (学号,书费 desc) 6. 数据库实施 6.1 权限设置 设计登录账户SQL Server,登录名gxjc1,gxjc2及密码 create login gxjc1 with password='111111', default_database=教材管理库 create login gxjc2 with password='111111', default_database=教材管理库 设计数据库用户系统管理员xtgly,一般用户ybyh create user xtgly for login gxjc1 create user ybyh for login gxjc2 设计架构 create schema schema1 authorization xtgly go create schema schema2 authorization ybyh 设置用户操作权限 把“学生”表的全部操作权限授予用户xtgly和ybyh grant all privileges on 学生 to xtgly,ybyh 把对“教材”表的查询权限授予所有用户 grant select on 教材 to public 把查询“学生”表和修改学生学号的权限授予用户ybyh grant select,update(学号) on 学生 to ybyh 把对订购表的插入权限授予用户xtgly,允许xtgly再将此权限授予其他用户 grant insert on 订购 to xtgly with grant option grant insert on 订购 to ybyh with grant option 将教材管理库数据库中建表的权限授予ybyh use 教材管理库 grant create table to ybyh 6.2 数据输入 6.2.1 创建数据库 T-SQL语句为:
CREATE DATABASE 教材管理库 ON (NAME =教材管理库, FILENAME='E:\DATA\教材管理库.MDF', SIZE=5, MAXSIZE=unlimited, FILEGROWTH=10%), FILEGROUP FG1 (NAME=教材库, FILENAME='E:\DATA\教材管理库.NDF', SIZE=10, MAXSIZE=100, FILEGROWTH=1) LOG ON (NAME=教材库LOG1, FILENAME='E:\DATA\教材管理库LOG1.LDF', SIZE=5, MAXSIZE=50, FILEGROWTH=1), (NAME=教材库LOG2, FILENAME='E:\DATA\教材管理库LOG2.LDF', SIZE=5, MAXSIZE=50, FILEGROWTH=1) 6.2.2创建数据表并插入数据 几个有代表性的数据表的创建 T-SQL语句为:
USE 教材管理库 GO create table 班级 ( 班级编号 int not null, 班级名称 varchar(5) not null, 人数 int null, 班长 char(10) null, 班长电话 char(11) null, 班主任 char(10) null, 班主任电话 char(11) null, 学院系 varchar(10) null, 学校 varchar(10) null, 入学时间 datetime null, constraint PK_班级 primary key (班级编号) ) ); create table 出库 ( 教材编号 char(14) not null, 班级编号 char(14) not null, 教材名称 varchar(10) null, 数量 int null, 单价 float(5) null, 出版社编号 char(14) null, 出版时间 datetime null, 负责人 varchar(4) null, constraint PK_出库 primary key clustered (教材编号, 班级编号) ) create table 订购 ( 供应商编号 char(14) not null, 教材编号 char(14) not null, 订单编号 char(14) null, 教材名称 varchar(10) null, 单价 float(5) null, 数量 int null, constraint PK_订购 primary key clustered (供应商编号, 教材编号) ); create table 入库 ( 管理员编号 char(14) not null, 教材编号 char(14) not null, 教材名称 varchar(10) null, 出版社 varchar(10) null, 数量 int null, 入库时间 datetime null, 单价 float(5) null, 作者 varchar(4) null, 负责人 varchar(4) null, constraint PK_入库 primary key clustered (管理员编号, 教材编号) ); create table 学生 ( 学号 char(10) not null, 班级编号 char(10) null, 姓名 varchar(4) not null, 学校 varchar(10) null, 院系 varchar(10) null, 书费 char(6) null, constraint PK_学生 primary key (学号) ); 6.2.3 创建视图 (1)创建“学生_班级”视图,包括学生的学号,班级编号,姓名,和他们的学校和书费 use 教材管理库 go create view 学生_班级 as select 学号,班级.班级编号,姓名,班级.学校,书费 from 班级,学生 where 班级.班级编号=学生.班级编号 and 班级.学校=学生.学校 go (2)创建“订购统计视图”,求每种教材的总订购量,要求包括教材编号和教材名称 use 教材管理库 go create view 订购统计视图 as select 订购.教材编号,订购.教材名称,SUM (订购.数量) AS 总库存量 from 订购,教材 where 订购.教材编号= 教材.教材编号 and 订购.教材名称=教材.教材名称 and 订购.数量=教材.数量 group by 订购.教材编号,订购.教材名称 go (3)创建视图来查看出库和入库中的教材数量的信息 use 教材管理库 go create view v_example(教材编号,出库数量,入库数量) As select 教材.教材编号,出库.数量 ,入库.数量 from 教材,出库,入库 where 教材.教材编号 = 出库.教材编号 and 教材.教材编号 = 入库.教材编号 6.2.4 数据表的操纵语句 在“学生”表中插入一行数据(学号、班级编号、姓名、书费)为(‘120506’、‘6’、‘张三’、‘500’) USE 教材管理库 GO INSERT into 学生(学号,班级编号,姓名,书费) VALUES('120506','6','张三','500') 在“管理员”表中的“性别”字段的值为“男” USE 教材管理库 GO UPDATE 管理员 SET 性别='男' 在“学生”表中,将学号为120501的学生姓名改为王武 USE 教材管理库 GO UPDATE 学生 SET 姓名='王武' WHERE 学号='120501' 在“学生”表中添加一字段“备注”varchar(20),“备注”字段信息为“已毕业” USE 教材管理库 GO ALTER TABLE 学生 ADD 备注 varchar(20) (2)UPDATE 学生 SET 备注='已毕业' 删除“学生”表中120501号学生的记录 USE 教材管理库 GO DELETE 学生 WHERE 学号='120501' 6.3程序设计与调试 6.3.1 设计索引 (1)聚合索引和唯一索引 创建学生表上按学号升序排的唯一聚合索引id1 use 教材管理库 go create unique clustered index id1 on 学生 (学号) (2)非聚合索引 创建学生表上先按学号升序排,学号一样的再按书费降序排的非聚集索引id2 use 教材管理库 go create index id2 on 学生 (学号,书费 desc) 6.3.2 数据查询操作 (1)确定集合查询 查询供应商表的所有记录 use 教材管理库 go select * from 班级 (2)字符匹配查询 查询入库表中所有姓“张”的作者的信息 select * from 入库 where 作者 like '张%' (3)聚合函数等统计数据的查询 统计查询学生表中学生的总人数 select count(*) from 学生 查询信息学院学生的最高书费,最低书费和平均书费 select max(书费) as '最高书费', min(书费) as '最低书费' from 学生 where 院系='信息学院' 查询出库表中教材数量的平均值,平均值显示列标题为“平均数量” select AVG(数量) as 平均数量 from 出库 (4)分组查询 查询“教材管理库”中男生和女生的人数 select 性别,COUNT(性别)from 管理员 group by 性别 (5)连接查询 内连接:在“教材管理库”中查询每个学生的学号,姓名和班级名称 select 学生.学号,学生.姓名,班级.班级名称 from 学生 inner join 班级 on 学生.班级编号=班级.班级编号 外连接:在“教材管理库”中查询每个学生及其班级的人数情况 select 学生.*,班级.人数,班级.班级名称 from 学生 left join 班级 on 学生.班级编号=班级.班级编号 (6)嵌套查询 无关子查询:在“教材管理库”中查询与“0001”在同一班级学习的学生的学校和班级名称 select 学校,班级名称 from 班级 where 班级名称=(select 班级名称 from 班级 where 班级编号='0001') 查询“教材管理库”中网络班级人数最多的班级人数,编号和学校 select 学校,人数,班级编号 from 班级 where 人数>= all (select 人数 from 班级 where 班级名称='网络')and 班级名称='网络' (7)带有EXISTS或NOT EXISTS 谓词查询 在“教材管理库”中查询所有软件班级学生的学校 select 学校 from 学生 where exists (select * from 班级 where 班级名称='软件' and 班级编号=学生.班级编号) 6.3.3 使用控制流语句编写程序 (1)IF…ELSE语句 如果订购数学教材的数量大于1500,则显示“销售不错”,否则显示“销售一般” if(select 数量 from 订购 where 教材名称='数学')>1500 print '销售不错' else print '销售一般' (2)CASE语句 以简单CASE格式查询所有学生的学校情况,包括学号,姓名和学校的英文名 select 学号,姓名, case 学校 when '西财' then 'xicai' when '理工' then 'ligong' when '邮电' then 'youdian' when '麻省' then 'masheng' when '哈佛' then 'hafo' end as 学校 from 学生 (3)GOTO语句 输出英语教材的总订购金额,若没有此教材则显示相应的提示信息,用GOTO语句实现 declare @a float if(select COUNT (*) from 订购 where 教材名称='英语') = 0 goto lable1 begin select @a =单价 * 数量 from 订购 where 教材名称= '英语' print '英语教材的总订购金额:' + cast(@a as varchar) return end lable1:print'没有英语教材' 6.3.4 编写自定义函数及调用 (1)标量函数的创建与调用 求订购表中某门教材总订购金额 create function coun (@co char(6)) returns float as begin declare @cun float select @cun = (select 单价*数量 from 订购 where 教材名称 =@co) return @cun end 求物理教材的总订购金额 declare @couse1 char(6) set @couse1 ='物理' select dbo.coun(@couse1) as '物理教材的总订购金额' (2)内嵌表值函数的创建与调用 查询某个学校所有学生的班级编号,学号,姓名和班级名称 create function xx_func(@xuexiao varchar(10)) returns table as return (select 班级.班级编号,班级名称,学号,姓名 from 班级,学生 where 学生.学校= @xuexiao and 班级.班级编号 = 学生.班级编号 ) 查询西财所有学生的班级编号,学号,姓名和班级名称 select * from xx_func('西财') (3)多语句表值函数的创建与调用 创建多语句表值函数,通过“班级编号”作为实参调用该函数,可显示该学生的班级名称及学号 create function bj_班级(@bh char(7)) returns @班级 table (班级编号 char(7), 班级名称 char(6), 学号 char(10)) as begin insert into @班级 select 班级.班级编号,班级名称,学号 from 班级,学生 where 班级.班级编号=学生.班级编号 and 班级.班级编号=@bh return end 查询“0005”班学生的班级名称及学号 select * from bj_班级('0005') 6.3.5 编写存储过程及调用 (1)在“教材管理库”数据库创建无参存储过程,查询各种教材的订购数量并调用 create procedure jc_sl as select 教材编号,count(数量) as 数量sl from 订购 group by 教材编号 go execute jc_sl (2)在“教材管理库”数据库创建带output参数的存储过程,用于计算指定的教材订购的总订购金额,存储过程中使用一个输入参数(教材名称)和一个输出参数(总订购金额) create procedure pname @jcmc varchar(20),@coun int output as select @coun = 单价*数量 from 订购 where 教材名称 = @jcmc go 执行存储过程pname,查询‘c语言’的总订购金额 declare @coun int execute pname 'c语言',@coun output print 'c语言的总订购金额:'+ str(@coun) (3)在“教材管理库”数据库创建带有参数和默认值(通配符)的存储过程,从学生表中返回指定的学生(提供姓名)的信息。该存储过程对传递的参数进行模式匹配,如果没有提供参数,则返回所有学生的信息 create procedure student_name @name varchar(40)= ' %' as select * from 学生 where 姓名 like @name go 执行存储过程student_name,显示所有学生的信息 execute student_name (4)创建存储过程统计各种教材的订购、到货和发放数量并调用 create Proc Query_tongji (@dinggou_bh char(14)output, @ruku_shl int output, @chuku_shl int output ) as select @dinggou_bh = 订购.教材编号,@ruku_shl =入库.数量, @chuku_shl = 出库.数量 from 订购,出库, 入库 执行存储过程,输出出库中某一个教材的出库数量 DECLARE @ck_shl int Exec Query_tongji @dinggou_bh = 'ISBN1205290105', @ruku_shl = 1005 ,@chuku_shl = @ck_shl output select @ck_shl 输出入库中某一个教材的出库数量 DECLARE @rk_shl int Exec Query_tongji @dinggou_bh = 'ISBN1205290105', @chuku_shl = 38 ,@ruku_shl = @rk_shl output select @rk_shl 6.3.6 编写触发器 创建触发器,实现教材入库和出库时自动修改库存数量 (1)入库与库存的关系  教材入库时,可以通过触发程序利用教材编码相同来检索库存里是否有该书的库存记录,如果存在该书的记录,则在原有的记录上增加;
如果库存里没有该书的库存记录,则新增加该书的库存记录。完成对库存表的更新,减少了重复输入的麻烦 create trigger updata_kucun on 入库 for insert as declare @shl int,@bh char(10) select @bh = 教材编号,@shl = 数量 from inserted if exists(select * from kucun where 教材编号= @bh ) update kucun set 数量 = 数量 + @shl where 教材编号 = @bh else if exists(select * from kucun where 教材编号<>@bh) begin insert into kucun(教材编号,数量) values (@bh,@shl) end begin Raiserror('入库量等于库存量',16,2) rollback transaction end 测试触发器 update kucun set 数量 = 数量 + 2000 where 教材编号 = 'ISBN1205290102' (2)出库与库存的关系  管理人员将教材出库时,通过触发程序利用教材编码相同来检索该教材是否存在于库存中,如果存在且出库数量不大于库存数量,则在库存数量上减少相应的数量,如果不存在,则说明,输入的教材编码有误,系统提示错误信息,同时,如果该教材存在,但出库的数量大于库存的数量,则系统提示错误信息,并重新输入 create trigger update_kucun on 出库 for insert as declare @shl int,@bh char(10),@shj datetime select @bh = 教材编号,@shl = 数量 from inserted if exists(select * from kucun where 教材编号 = @bh and @shl <= 数量) update kucun set kucun.数量 = kucun.数量 - @shl where 教材编号 = @bh else begin Raiserror('出入量大于库存量',16,2) rollback transaction Raiserror('入库量等于库存量',16,2) rollback transaction end 测试触发器 update kucun set kucun.数量 = kucun.数量 - 44 where 教材编号 = 'ISBN1205290102' 为学生表创建一个dml触发器,在插入和修改数据时,都会自动显示所有学生的信息 create trigger print_table on 学生 for insert,update as select * from 学生 测试触发器,将姓名为“周语”的名字改为“周玉” update 学生 set 姓名 ='周玉' where 姓名='周语' 6.3.7 设计游标及其使用 (1)声明游标 声明一个名为S_Cursor的游标,用以查询软件班级的所有班级信息 use 教材管理库 go declare S_Cursor cursor for select * from 班级 where 班级名称='软件' 声明一个名为Sh_Cursor的游标,用以查询网络班级的所有班级信息。要求该游标是动态、可前后滚动,其中的人数列数据可以修改。

declare Sh_Cursor cursor dynamic for select * from 班级 where 班级名称='网络' for update of 人数 (2)打开游标 open S_Cursor go (3)读取游标 fetch next from S_Cursor go (4)关闭游标 close S_Cursor go (5)释放游标 deallocate S_Cursor go 7.结束语 经过这一个星期的努力,我终于完成了我的课程设计。从一开始接到题目到课程设计的完成实现,遇到过很多困难,为了解决问题,这在个过程中我学到了我不知道的知识和更熟悉及更理解之前所学的知识。

在完成高校教材管理的课程设计针对系统进行了需求分析、逻辑结构设计、物理设计;
然后画出E-R图并利用SQL语句完成相关的操作。在SQL的语句编写实现的操作中认识到能掌握SQL的标准语句是极为重要的。此课程设计—高校教材管理系统以高校教材管理功能为基础,涵盖了出版社管理、教材管理、出库管理、入库管理、库存管理和订购管理多个方面,是高校教材实现的基本数据库的实现,但对于复杂的高校教材问题我的设计仅是冰山一角,希望在以后的学习中能完善!  通过此次课程设计更深入的理解了SQL Server 20008中的有关基本操作。例如:表、信息的插入、修改、删除,存储过程、触发器的相关操作等。同时对课本知识有了一个比较整体的掌握。

这次的课题设计使我对所学的专业课有了更为深刻的认识,使知识得到了融会贯通,得到了比以往学习任何一门课都大的提高和进步。对于我们来讲,我们每天都要学习,但这书本上的东西如果只是个理论,很抽象,难于理解,如果不把他应用于实践中,这门课可以对我们来说完全没有意义。如果把所学的理论知识运用于实践中的话,会对我们对知识的理解有很大的帮助。经过设计这个系统,这不仅仅是一次设计,不仅仅是学会了书中的知识,更重要的是在学习的过程中,所有的问题要自己去面对,有问题也只有靠自已去解决,在学习和解决这些困难的过程中提高了我学习的能力、解决问题的能力和实际工作的能力,学到了许多书本以外的知识。  在本学期的数据库的学习中对高校的教材管理系统的设计中学习到独立完成作业的重要,锻炼了在编写实际运用数据库的实现,深刻感受到计算机学习的实用性和未来工作的巨大信息,但是由于在一些问题的处理和考虑的方面存在很大的缺陷和漏洞,希望在进一步的学习中能更好处理好相关问题。这次课题设计不能堪称完美,甚至来说还很不健全,但我会在以后的时间里去尽量的完善它,不断的对它进行升级和完善,解决系统可能会出现的问题。

8.参考文献 1. 《数据库原理及应用教程》 尹志宇 郭晴主编 清华大学出版社 2013年8月第一版 1.《数据库原理及应用》 钱雪忠主编 北京邮电大学出版社 2007,8 第二版 2.《SQL server 2000数据仓库与Analysis Services》 Bain T著 中国电力出版社 2003 3.《数据库技术与联机分析处理》 王珊主编 北京科学出版社 1998

Tags: 管理系统   数据结构   课程设计  

搜索
网站分类
标签列表