大学教材征订管理系统数据库设计

news2024/11/24 1:30:33

摘 要

随着计算机及Internet迅速的发展,越来越多的行业实现了管理的信息化和自动化,教育行业也不例外。但在很多高校中,教材征订作为学校教学工作中很重要的一个环节还没完全实现信息化管理。因此本系统针对高校教材征订管理过程中人工管理存在的困难,采用SQLserver 2012开发了一款高校教材征订管理信息系统,以实现教材征订网络化管理、提高工作效率、减少教材征订中的错误。

教材征订管理系统开发主要包括数据库的建立和维护。此系统要求建立起数据一致性和完整性强、数据安全性好的库,要求应用程序功能完备,易使用等特点。系统实现多价书的征订采购发行,到货前书目替换,大量的录入工作,查找书目等功能。

关键词: 教材征订  数据库  表设计

1 系统概述

教材征订管理系统是教学管理中的组成部分,是典型的信息管理系统(MIS), 一般学校的教材征订管理模式是在学年制基础上以班级为单位进行处理的。院校的教材征订管理随着学生规模的日益增大、教材日益多样化、学生个人之间教材差异越来越大的现实面前已呈现出无法应对的局面。因此,建立一套与选课相配套的教材征订管理模式和管理系统具有十分重要的意义和实际应用的迫切性,而且现有的条件、管理理念和技术水平已使之成为可能。

为了更好的适应当前学校管理的需求,避免手工管理存在的弊端,开发教材征订管理系统,,可以实现教材收费、领取的自动管理,这个系统包含四大功能,分别是教材的出入库管理,学生的书费管理,系统管理以及综合查询。

2 问题描述

教材征订管理系统是实现系统登录,教材信息管理等基本功能的软件,通过调研、分析现有的管理模式和已有的管理软件,建立系统模型,系统要实现基本信息录入、修改、查询等功能;实现满足多种条件的统计分析功能,有些统计数据要采用图表的格式呈现。教材征订管理全面负责学校所有教材征订信息。推进学校教材征订管理的自动化、无纸化具有其积极的意义。教材征订管理系统就是针对这一状况而设计的。

所涉及的信息有:

(1)教材征订信息。包括的数据项有:征订号,书名,出版社,作者,版次、单价,课程,专业,班级,人数,日期等。

(2)教材库存信息。包括的数据项有:征订号,书名,出版社,作者,版次、单价,数量等。

(3)教材购买信息。包括的数据项有:征订号,书名,出版社,作者,版次、单价,课程,专业,班级,数量,日期等。

(4)收款信息。包括的数据项有:日期,班级,金额等。

(5)用户信息。包括的数据项有:用户编码、用户名、密码、生日、类别等。

本系统的主要功能由以下几个部分组成:

经过调研及分析,教材征订管理系统主要完成以下功能:

(1)用户基本信息模块:用户的基本信息。

(2)教材库存信息模块:记录教材的库存数量,基本信息。

(3)教材征订信息模块:对所需要的教材征订信息查询即用户对征订信息的增加、修改、删除、查询操作。

(4)教材购买信息模块:对所需要的教材购买信息查询即用户对征订信息的增加、修改、删除、查询操作。

(5)收款信息模块:记录教材购买的支付情况的信息。

3 需求分析

需求分析是数据库设计的基础,其错误将影响到整个设计。需求分析也是令设计人员感到最繁琐和困难的一个阶段。

3.1数据流图

数据流程分析是把数据在组织内部的流动情况抽象地独立出来, 舍去了具体的组织机构等,以发现和解决数据流中的问题。各系经过统计教材需求量,将教材征定单交给教材管理部门,教材管理部门拟订计划生成教材计划表,并将定书单提交给供货单位以求供货单位供应教材,完成教材的采购工作后进行入库登记,生成入库单交于财务处进行结算。各班将领书单交于教材科,教材科将教材分发给各班级并进行出库登记,生成出库单交于财务处进行费用结算,并生成教材费用单。

其数据流程图如下图所示

 图1 数据流程图

3.2数据字典

表3-1 数据项描述

数据项名:教材编号

简述:存储每本教材的信息

简要说明:学校教材编码

类型及长度:数字型,7位

数据值类型:(连续/离散)离散

表3-2  数据结构描述

数据结构名:教材管理表单

简述: 存储教材入出库等的表单

数据结构组成:征订号+书名+出版社+作者+版次+单价+课程+专业+班级+人数+日期+操作员

表3-3 数据处理描述   

处理逻辑名:制定计划

加工编号:P1

简要描述:根据各系征订教材以及所缺教材定购计划。

输入数据流: 教材订单。

输出数据流: 教材计划表

表3-4  数据存储描述

数据存储名:入库教材

简述:存储入库教材的基本信息。

文件组成:征订号+书名+出版社+作者+版次+单价+数量。

数据存储名:出库教材

简述:存储出库教材的基本信息。

文件组成:征订号+书名+出版社+作者+版次+单价+数量。

数据流名:教材入库单

简述:存储入库教材的基本信息。

文件组成:征订号+书名+出版社+作者+版次+单价+数量。

表3-5  数据流描述

数据流名:教材出库单

简述:存储出库教材的基本信息。

文件组成:征订号+书名+出版社+作者+版次+单价+数量。

4 概念结构设计

4.1实体分析描述

从用户角度来说,数据库的需求主要体现在对数据库表的增删改查。因此,数据库结构需同时满足两个要素:输入、输出。在进行数据设计时,首先需收集数据,然后分析数据结构,最后处理数据。根据本系统的需求,设计以下主要的数据项和数据结构:

(1)用户信息实体:用户编号、姓名、性别、所属专业、班级、密码、出生年月、角色、类别。

(2)教材购买信息实体:征订号、书名、出版社、作者、版次、单价、课程、专业、班级、数量、日期。

(3)教材库存信息实体:征订号、书名、出版社、作者、版次、单价、数量。

(4)教材征订信息实体:征订号、书名、出版社、作者、版次、单价、课程、专业、班级、人数、日期。

(5)收款信息实体:日期、班级、金额。

4.2整体E-R图

 图2 概念结构设计E-R图

5 逻辑结构设计

5.1 关系模式

关系模式:用户信息(用户编号、姓名、性别、所属专业、班级、密码、出生年月、角色)

模式判定:用户信息∈2NF,且每个非主属性都不传递函数依赖于用户信息的主关系键,所以用户信息∈3NF

关系模式:教材购买信息(征订号、书名、出版社、作者、版次、单价、课程、专业、班级、数量、日期)

模式判定:教材购买信息∈2NF,且每个非主属性都不传递函数依赖于教材购买信息的主关系键,所以教材购买信息∈3NF

关系模式:教材库存信息(征订号、书名、出版社、作者、版次、单价、数量)

模式判定:教材库存信息∈2NF,且每个非主属性都不传递函数依赖于教材库存信息的主关系键,所以教材库存信息∈3NF

关系模式:教材征订信息(征订号、书名、出版社、作者、版次、单价、课程、专业、班级、人数、日期)

模式判定:教材征订信息∈2NF,且每个非主属性都不传递函数依赖于教材征订信息的主关系键,所以教材征订信息∈3NF

关系模式:收款信息(日期、班级、金额)

模式判定:收款信息∈2NF,且每个非主属性都不传递函数依赖于收款信息的主关系键,所以收款信息∈3NF

5.2 数据关系图

如图所示是在数据库中生成的关系图。

图3 概念结构设计E-R图

 5.3 系统关系图

图4系统关系图

6 物理结构设计

6.1 定义数据库、表名

数据库名:

buybook

数据库表名:

(1)用户信息表:s_user

(2)教材购买信息表:book_purchase_info

(3)教材库存信息表:book_inventory_info

(4)教材征订信息表:book_subscription_info

(5)收款信息表:collection_info

6.2 数据库存储结构设计

为了提高系统的性能,根据应用情况将数据的易变部分与稳定部分、经常

存取部分与不经常存取部分分开存放。

由于现在的计算机都有多个磁盘,将表(如用户信息表)和索引放在不同

的磁盘上,在查询过程中,大大提高I/O读写的效率,而对于较大的分放在两

个磁盘上,可以加快存取速度,在多用户环境下的作用更有效;为了改进系统

的性能,将日志文件与数据库对象(表、索引等)放在了不同的盘上。同时,

考虑到本系统是多用户的,为了提高效率,数据库备份的数据和日志文件将保

存在磁盘中。

在数据库中经常存取的部分包括:

用户(用户编号、姓名、性别、所属专业、班级、密码、出生年月、角色)

教材征订(征订号、书名、出版社、作者、版次、单价、课程、专业、班级、人数、日期)

教材库存(征订号、书名、出版社、作者、版次、单价、数量)

教材购买(征订号、书名、出版社、作者、版次、单价、课程、专业、班级、数量、日期)

不经常存取部分包括:

教材收款(日期、班级、金额)

在数据库设计初始阶段,为了对以后的数据库进行物理优化,提供了一些

系统配置变量、存储分配系数,并对这些变量赋予合理的缺省值。但这些值不

一定适合每一种应用环境,在进行物理设计时,对这些变量重新赋值,以改善

系统的性能。在选择硬件设备、服务器操作系统、数据库时应该考虑能够逐步

增加和扩展。

在配置系统变量时,要注意同时使用数据库的用户数,同时打开的数据库

对象数,内存分配参数,缓冲区分配参数,时间片大小,数据库的大小,锁的

数目等。这些参数值都会影响数据库的存储时间和存储空间的分配。 

6.3 数据库表结构

表6-1 教材购买信息表(book_purchase_info)

字段名

字段类型

长度

主/外键

字段值约束

对应中文名

subscription_No

varchar

50

主键

Not null

征订号

book_name

varchar

50

Not null

书名

press

varchar

50

Not null

出版社

author

varchar

50

Null

作者

revision

varchar

50

Not null

版次

unit_Price

varchar

50

Null

单价

curriculum

varchar

50

Null

课程

major

varchar

50

Null

专业

class_name

varchar

50

Null

班级

buy_Count

char

100

Not null

数量

buy_date

Date

Null

日期

表6-2教材库存信息表(book_inventory_info)

字段名

字段类型

长度

主/外键

字段值约束

对应中文名

subscription_No

varchar

50

主键

Not null

征订号

book_name

varchar

50

Not null

书名

press

varchar

50

Not null

出版社

author

varchar

50

Null

作者

revision

varchar

50

Not null

版次

unit_Price

varchar

50

Null

单价

book_Count

char

100

Not null

数量

表6-3教材征订信息表(book_subscription_info)

字段名

字段类型

长度

主/外键

字段值约束

对应中文名

subscription_No

varchar

50

主键

Not null

征订号

book_name

varchar

50

Not null

书名

press

varchar

50

Not null

出版社

author

varchar

50

Null

作者

revision

varchar

50

Not null

版次

unit_Price

varchar

50

Null

单价

curriculum

varchar

50

Null

课程

major

varchar

20

Null

专业

class_name

varchar

20

Null

班级

people_Num

varchar

20

Not null

人数

date_info

date

Null

日期

表6-4收款信息表(collection_info)

字段名

字段类型

长度

主/外键

字段值约束

对应中文名

collection_date

varchar

Not null

日期

class_name

varchar

20

Not null

班级

money

varchar

10

Not null

金额


表6-5用户信息表(s_user)

字段名

字段类型

长度

主/外键

字段值约束

对应中文名

user_code

varchar

50

Not null

用户编码

user_name

varchar

50

 null

用户名

sex

varchar

10

 null

性别

major

varchar

20

 null

专业

class_name

varchar

20

 null

班级

pwd

varchar

10

 null

密码

birthday

varchar

30

 null

生日

role_name

varchar

30

 null

手机号

 

7 数据库实施

7.1 数据库创建

create database buybook

on

( name=work_data,

filename='d:\program files (x86)\sql\buybook.mdf',

size=5,

filegrowth=1

)

log on

( name=work_log,

filename='d:\program files (x86)\sql\buybook_log.ldf',

size=1,

maxsize=50,

filegrowth=10%

)

7.2 数据库表创建

(1)用户表

CREATE TABLE s_user (

user_code  varchar (50)  NOT NULL,

 user_name  varchar (50)  NULL,

 sex  varchar (10)  NULL,

 major varchar (20)  NULL,

 class_name varchar (20)  NULL,

 pwd  varchar (10)  NULL,

 birthday  varchar (30)  NULL,

 role_name  varchar (30)  NULL,

 CONSTRAINT  PK_s_user  PRIMARY KEY CLUSTERED

  1. 教材购买信息表

CREATE TABLE book_purchase_info (

 subscription_No  varchar (50)  NOT NULL,

 book_name  varchar (50)  NULL,

 press  varchar (50)  NULL,

 author  varchar (50)  NULL,

 revision  varchar (50)  NULL,

 unit_Price  varchar (50)  NULL,

 curriculum  varchar (50)  NULL,

 major  varchar (50)  NULL,

 class_name  varchar (50)  NULL,

 buy_Count  varchar (50)  NULL,

 buy_date   date  NULL,

 CONSTRAINT  PK_book_purchase_info  PRIMARY KEY CLUSTERED

  1. 教材库存信息表

CREATE TABLE   book_inventory_info (

 subscription_No  varchar (50)  NULL,

 book_name  varchar (50)  NULL,

 press  varchar (50)  NULL,

 author  varchar (50)  NULL,

 revision  varchar (50 ) NULL,

 unit_Price  varchar (50)  NULL,

 book_Count  char (100)  NULL

)

  1. 教材征订信息表

CREATE TABLE  book_subscription_info (

 subscription_No  varchar (50)  NOT NULL,

 book_name  varchar (50)  NULL,

 press  varchar (50)  NULL,

 author  varchar (50)  NULL,

 revision  varchar (50)  NULL,

 unit_Price  varchar (50)  NULL,

 curriculum  varchar (50)  NULL,

 major  varchar (20)  NULL,

 class_name  varchar (20)  NULL,

 people_Num  varchar (20)  NULL,

 date_info  date  NULL,

 CONSTRAINT PK_book_subscription_info  PRIMARY KEY CLUSTERED

)

(5)用户信息表

CREATE TABLE   s_user (

 user_code  varchar (50) NOT NULL,

 user_name  varchar (50) NULL,

 sex  varchar (10) NULL,

 major  varchar (20) NULL,

 class_name  varchar (20) NULL,

 pwd varchar (10) NULL,

 birthday  varchar (30) NULL,

 role_name  varchar (30) NULL,

 CONSTRAINT  PK_s_user  PRIMARY KEY CLUSTERED

)

7.3 建立存储过程

(1)建立用户表查询存储过程

create procedure s_user

as

begin

    select b.用户编码,

           b.用户名,

           性别,

           专业,

           班级,

           密码,

           生日,

           手机号

    from 用户表 a

end

(2)建立教材购买信息表查询存储过程

create procedure book_purchase_info

as

begin

    select b.征订号,

           b.书名,

           出版社,

           作者,

           版次,

           单价,

           课程,

           专业,

           班级,

           数量,

           日期

    from 教材购买信息表 a

             inner join 用户表 b on a.班级 = b.班级

end

(3)建立教材征订信息表更新存储过程

Create procedure book_subscription_info @班级 char(8), @记录号 int,

@姓名 char(30),@专业 char(10), @人数 char(10),

@日期 datetime

as

    if not exists(select *

                  from 教材征订信息表

                  where 用户编码 = @用户编码)

        Print ('不存在该用户')

    else

        begin

            update 教材征订信息表

            set 征订号=@征订号,

                书名=@书名,

                班级=@班级,

   数量=@数量,

                日期=@日期

            where 用户编码 = @用户编码;

     end

7.4创建触发器

(1) 创建一个触发器,当删除用户信息表时,时也删除其他表中用户的信息。如当删除用户表中信息时,也删除教材征订信息表中的内容,教材购买信息表,收款信息表分别建立此类触发器。

create trigger data_del

    on 用户信息表

    after delete

    as

begin

    delete 教材征订信息表

    where 用户班级 in (select 用户班级 from deleted)

end

(2)建立教材购买信息触发器:

create trigger book_purchase_update

    on 班级

    after update

    as

    declare

        @new_book_purchase_update int, @old_book_purchase_update int

    select @old_book_purchase_update = deleted.征订号

    from deleted

    select @new_book_purchase_update= inserted.征订号

    from inserted

    if ((@new__book_purchase_update - @old__book_purchase_update) > @old__book_purchase_update * 0.15)

        begin

            raiserror ('教材购买过长,取消操作',16,1)

            rollback transaction

        end

(3)建立收款触发器:

CREATE TRIGGER collection_info

    ON 用户信息表

    AFTER INSERT

    AS

BEGIN

    SET NOCOUNT ON;

    Declare @class int;

    Select @class = 班级 From 用户信息表

    IF (@class = null)

        Begin

            Insert into 用户信息表(员工编码, 用户名, 性别, 专业, 班级, 密码, 生日,手机号)

            Select 员工编码, 用户名, 性别, 专业, 班级, 密码, 生日,手机号

            From inserted

        End

    ELSE

        Begin

            print ('用户班级不存在')

            rollback transaction

        END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/709496.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(02)Cartographer源码无死角解析-(67) 2D后端优化→FastCorrelativeScanMatcher2D -分支定界算法(BranchAndBound)1

讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/127350885 文…

Java——包(package)

一、Java中的包(package) 在Java中,包(package)是一种用于组织类和接口的命名空间的机制。它用于将相关的类和接口组织在一起,以便更好地管理和维护代码。 其实就是一个个文件夹 二、包(package)的作用 防止类和接口命名冲突&…

时间序列分解 | Matlab变分模态分解(VMD)的信号分解

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 时间序列分解 | Matlab变分模态分解(VMD)的信号分解 部分源码 %--------------------

尚硅谷Docker2022版学习笔记(基础篇 下)

目录 五、本地镜像发布到阿里云 5.1、本地镜像发布到阿里云流程 5.2、镜像的生成方法 基于当前容器创建一个新的镜像(第一种方法) DockerFile(第二种方法) 5.3、将本地镜像推送到阿里云 本地镜像素材原型 创建仓库镜像 选…

hive row_number()对单列进行去重

学到一个高级用法 row_number() select * ,row_number() over (partition by c_id order by s_score) from score; https://www.jb51.net/article/254952.htm

【Kafka】第一章

【Kafka】第一章 1.课程内容 1.课程内容 >课程学习

Python———PyCharm下载和安装

(一)开发环境介绍 开发环境,英文是 IDE ( Integrated Development Environment 集成开发环境)。 不要纠结于使用哪个开发环境。开发环境本质上就是对Python 解释器python.exe 的封装,核心都一样。可以说&…

web前端求职面试题参考精选(合集)

web前端求职面试题之选择题 1. CSS样式表根据所在网页的位置,可分为?(B ) A.行内样式表、内嵌样式表、混合样式表 B.行内样式表、内嵌样式表、外部样式表 C.外部样式表、内嵌样式表、导入样式表 D.外部样式表、混合样式表、导入样式表 2. 对于标签&#xff0…

IDEA使用技巧之——自动导入包,自动优化未使用的import

1 进入设置 2 进入编辑器 3 选择自动导入,中的方框内容 4 最后点击应用,点击确定即可了。 END

使用docker搭建frp在云服务器上调用本地服务器的代码

前言:最近生成图片的ai很火,国内也有不少这样的网站,但是一般都需要钱,这时候自己想用,又不想花钱,就只能在本地服务器搭建一个ai生成图片的服务,再通过内网穿透,从公网访问到这个本地搭建的服务…

AI 绘画 - 建筑绘图辅助设计之 Controlnet SEG Depth

前情提要 2023-06-17 周六 杭州 雨转阴 小记: 周末的午休感觉还是没有尽兴,说是要乖乖休息却只是躺下闭目养神。 任务清单: a. Sketchup 安装和学习; b. Sketchup 建模学习; c. Controlnet SEG 语义分割基础; d. Controlnet Depth; 简介 应用实践 …

理解mysql数据库

1.MySQL 在 Centos 7环境安装 1.1 卸载不要的环境 ps ajx |grep mariadb # 先检查是否有 mariadb 存在 systemctl stop mariadb.service # 停⽌ mariadb 服务 ps ajx |grep mariadb # 再 检查是否有 mariadb 存在 1.2 删除多余的安装包 rpm -qa | grep mysql #查看默认安装…

#systemverilog# 关于关键字 之 unique 随机约束

前言 在随机约束中,我们可以使用关键字 unique 。 使用关键字unique定义的SystemVerilog约束称为唯一约束。在随机化中,使用唯一约束可以生成变量集的唯一值或数组的唯一元素。这里着重解释一下变量集:是同一类型随机变量的集合。 通过unique约束我们可以完成以下任务: …

免费搭建网站(手把手教学) — freehost免费主机体验

相信不少人都想制作一个属于自己的网站,其实并不是很难,即使没有基础也是能够完成的,而这些免费的主机就是小白练手的最佳途径了。免费主机有点就是免费,缺点也是有一堆,如果自己玩玩小范围提供网页服务足够&#xff0…

Virtualbox下CentOS安装k8s

1.系统配置 硬件配置基本要求 资源大小硬盘> 20Gcpu> 2核内存> 2G 本教程配置 主机名IP配置master192.168.10.1553核2G20Gworker1192.168.10.2343核2G20Gworker2192.168.10.1473核2G20G 2.安装必要软件 所有机器都要执行 yum 更新 sudo yum update -y bash-completion…

android复制与粘贴

官网关于复制的教程:https://developer.android.google.cn/guide/topics/text/copy-paste?hlzh-cn 关于Android 13模拟器无法运行可查看这篇文章:https://blog.csdn.net/android_cai_niao/article/details/131422541 界面UI如下: 界面中有…

事务的传播

七种传播机制支持当前事务不支持当前事务嵌套事务 七种传播机制 事务传播机制:解决一个事务在多个方法传递的问题 传播机制有以下7种 REQUIRED (默认):如果当前存在事务,则加入该事务,如果不存在事务,则创建一个新事务…

DEBUG 系列二:Configure Debugger Layer

还拿之前的例子: https://mp.weixin.qq.com/s/a0Ia2wzFPGWjN988uutg7Q 前台操作dump了 然后debug分析原因的时候发现是这里的问题 进这标准函数看看 里面用到的是全局变量 go_hugm 说明这个函数使用时还有一系列配套的其他函数,都应该在它所对应的函数组…

[RSIC-V]Milk-V开发板 i2c测试oled及波形输出

I2C3 引脚图 修改i2c3复用功能 build\boards\cv180x\cv1800b_sophpi_duo_sd\u-boot\cvi_board_init.c //I2C3 pin6 7 PINMUX_CONFIG(SD1_CMD, IIC3_SCL); PINMUX_CONFIG(SD1_CLK, IIC3_SDA);扫描I2C3上的设备 [rootcvitek]~# i2cdetect -y -r 3 0 1 2 3 4 5 6 7 8 9 a b c …