精华内容
下载资源
问答
  • 数据库系统原理课程设计

    千次阅读 2018-06-12 22:33:52
    一、 概述 本网上商城是一个综合性的B2C平台,可以在商城浏览商品、下订单、以及参加各种活动 管理员、运营可以在平台后台... 设计一个网购商城的数据库,以实现网购商城网站系统 2.12数据库选择 系统采用MyS...

    一、 概述
    本网上商城是一个综合性的B2C平台,可以在商城浏览商品、下订单、以及参加各种活动
    管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。
    客服可以在后台管理系统中处理用户的询问以及投诉。
    不过,暂时可能技术还不够硬……
    二、需求分析
    2.1 数据库设计目的
    设计一个网购商城的数据库,以实现网购商城网站系统

    2.12数据库选择
    系统采用MySQL作为数据库
    2.13数据库编码
    数据库采用UTF-8编码格式

    2.2需要完成的功能

    功能描述:

    1. 后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。
    2. 前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。
    3. 会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。
    4. 订单系统:提供下单、查询订单、修改订单状态、定时处理订单。
    5. 搜索系统:提供商品的搜索功能。
    6. 单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。

    2.3数据表设计

    2.30 E-R图的模型设计
    (1)实体集
    用户 商品 商品类目 订单
    (2)实体间联系
    用户与商品多对多关系
    商品与商品类目一对多关系(分类)
    用户与购物车一对一关系(用户只能拥有一购物车)
    用户与订单细节一对多关系
    购物车与商品一对多关系(一购物车可以存放多个商品)
    购物车与订单细节一对多关系

    (3)E-R图
    实体间联系E-R图
    这里写图片描述

    2.31商品表:

    CREATE TABLE `tb_item` (
      `id` bigint(20) NOT NULL COMMENT '商品id,同时也是商品编号',
      `title` varchar(100) NOT NULL COMMENT '商品标题',
      `sell_point` varchar(500) DEFAULT NULL COMMENT '商品卖点',
      `price` bigint(20) NOT NULL COMMENT '商品价格,单位为:分',
      `num` int(10) NOT NULL COMMENT '库存数量',
      `barcode` varchar(30) DEFAULT NULL COMMENT '商品条形码',
      `image` varchar(500) DEFAULT NULL COMMENT '商品图片',
      `cid` bigint(10) NOT NULL COMMENT '所属类目,叶子类目',
      `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '商品状态,1-正常,2-下架,3-删除',
      `created` datetime NOT NULL COMMENT '创建时间',
      `updated` datetime NOT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`),
      KEY `cid` (`cid`),
      KEY `status` (`status`),
      KEY `updated` (`updated`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品表';
    

    2.32商品描述表:

    CREATE TABLE `tb_item_desc` (
      `item_id` bigint(20) NOT NULL COMMENT '商品ID',
      `item_desc` text COMMENT '商品描述',
      `created` datetime DEFAULT NULL COMMENT '创建时间',
      `updated` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`item_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品描述表';
    

    2.33商品类目表:

    CREATE TABLE `tb_item_cat` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '类目ID',
      `parent_id` bigint(20) DEFAULT NULL COMMENT '父类目ID=0时,代表的是一级的类目',
      `name` varchar(50) DEFAULT NULL COMMENT '类目名称',
      `status` int(1) DEFAULT '1' COMMENT '状态。可选值:1(正常),2(删除)',
      `sort_order` int(4) DEFAULT NULL COMMENT '排列序号,表示同级类目的展现次序,如数值相等则按名称次序排列。取值范围:大于零的整数',
      `is_parent` tinyint(1) DEFAULT '1' COMMENT '该类目是否为父类目,1为true,0为false',
      `created` datetime DEFAULT NULL COMMENT '创建时间',
      `updated` datetime DEFAULT NULL COMMENT '创建时间',
      PRIMARY KEY (`id`),
      KEY `parent_id` (`parent_id`,`status`) USING BTREE,
      KEY `sort_order` (`sort_order`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1183 DEFAULT CHARSET=utf8 COMMENT='商品类目';
    
    

    2.34用户表:

    CREATE TABLE `tb_user` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `username` varchar(50) NOT NULL COMMENT '用户名',
      `password` varchar(32) NOT NULL COMMENT '密码,加密存储',
      `phone` varchar(20) DEFAULT NULL COMMENT '注册手机号',
      `email` varchar(50) DEFAULT NULL COMMENT '注册邮箱',
      `created` datetime NOT NULL,
      `updated` datetime NOT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `username` (`username`) USING BTREE,
      UNIQUE KEY `phone` (`phone`) USING BTREE,
      UNIQUE KEY `email` (`email`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8 COMMENT='用户表';
    

    2.35内容表:

    CREATE TABLE `tb_content` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `category_id` bigint(20) NOT NULL COMMENT '内容类目ID',
      `title` varchar(200) DEFAULT NULL COMMENT '内容标题',
      `sub_title` varchar(100) DEFAULT NULL COMMENT '子标题',
      `title_desc` varchar(500) DEFAULT NULL COMMENT '标题描述',
      `url` varchar(500) DEFAULT NULL COMMENT '链接',
      `pic` varchar(300) DEFAULT NULL COMMENT '图片绝对路径',
      `pic2` varchar(300) DEFAULT NULL COMMENT '图片2',
      `content` text COMMENT '内容',
      `created` datetime DEFAULT NULL,
      `updated` datetime DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `category_id` (`category_id`),
      KEY `updated` (`updated`)
    ) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8;
    

    2.36内容分类表:

    CREATE TABLE `tb_content_category` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '类目ID',
      `parent_id` bigint(20) DEFAULT NULL COMMENT '父类目ID=0时,代表的是一级的类目',
      `name` varchar(50) DEFAULT NULL COMMENT '分类名称',
      `status` int(1) DEFAULT '1' COMMENT '状态。可选值:1(正常),2(删除)',
      `sort_order` int(4) DEFAULT NULL COMMENT '排列序号,表示同级类目的展现次序,如数值相等则按名称次序排列。取值范围:大于零的整数',
      `is_parent` tinyint(1) DEFAULT '1' COMMENT '该类目是否为父类目,1为true,0为false',
      `created` datetime DEFAULT NULL COMMENT '创建时间',
      `updated` datetime DEFAULT NULL COMMENT '创建时间',
      PRIMARY KEY (`id`),
      KEY `parent_id` (`parent_id`,`status`) USING BTREE,
      KEY `sort_order` (`sort_order`)
    ) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=utf8 COMMENT='内容分类';
    

    2.37订单表:

    CREATE TABLE `tb_order` (
      `order_id` varchar(50) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '订单id',
      `payment` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '实付金额。精确到2位小数;单位:元。如:200.07,表示:200元7分',
      `payment_type` int(2) DEFAULT NULL COMMENT '支付类型,1、在线支付,2、货到付款',
      `post_fee` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '邮费。精确到2位小数;单位:元。如:200.07,表示:200元7分',
      `status` int(10) DEFAULT NULL COMMENT '状态:1、未付款,2、已付款,3、未发货,4、已发货,5、交易成功,6、交易关闭',
      `create_time` datetime DEFAULT NULL COMMENT '订单创建时间',
      `update_time` datetime DEFAULT NULL COMMENT '订单更新时间',
      `payment_time` datetime DEFAULT NULL COMMENT '付款时间',
      `consign_time` datetime DEFAULT NULL COMMENT '发货时间',
      `end_time` datetime DEFAULT NULL COMMENT '交易完成时间',
      `close_time` datetime DEFAULT NULL COMMENT '交易关闭时间',
      `shipping_name` varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT '物流名称',
      `shipping_code` varchar(20) COLLATE utf8_bin DEFAULT NULL COMMENT '物流单号',
      `user_id` bigint(20) DEFAULT NULL COMMENT '用户id',
      `buyer_message` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '买家留言',
      `buyer_nick` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '买家昵称',
      `buyer_rate` int(2) DEFAULT NULL COMMENT '买家是否已经评价',
      PRIMARY KEY (`order_id`),
      KEY `create_time` (`create_time`),
      KEY `buyer_nick` (`buyer_nick`),
      KEY `status` (`status`),
      KEY `payment_type` (`payment_type`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
    

    2.38订单项表:

    CREATE TABLE `tb_order_item` (
      `id` varchar(20) COLLATE utf8_bin NOT NULL,
      `item_id` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '商品id',
      `order_id` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '订单id',
      `num` int(10) DEFAULT NULL COMMENT '商品购买数量',
      `title` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '商品标题',
      `price` bigint(50) DEFAULT NULL COMMENT '商品单价',
      `total_fee` bigint(50) DEFAULT NULL COMMENT '商品总金额',
      `pic_path` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '商品图片地址',
      PRIMARY KEY (`id`),
      KEY `item_id` (`item_id`),
      KEY `order_id` (`order_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
    
    展开全文
  • 数据库系统原理课程设计,大学期末作业,做了一个图书管理系统,包括源码好文档报告
  • 数据库系统原理课程设计报告 图书借阅管理系统

    千次阅读 多人点赞 2019-06-19 17:23:00
    数据库系统原理课程设计报告 图书借阅管理系统 第1章 设计背景与需求分析 1.1 设计背景 1.1.1 图书管理的现状 图书馆作为一种资源的集散地,图书和用户在借阅资料繁多,包含很多的信息管理,现在有很多的图书...

     数据库系统原理课程设计报告 图书借阅管理系统

     

    第1章 设计背景与需求分析

    1.1 设计背景

    1.1.1  图书管理的现状  

    图书馆作为一种资源的集散地,图书和用户在借阅资料繁多,包含很多的信息管理,现在有很多的图书馆都是初步的开始使用,甚至尚未使用计算机进行资源管理,没有建立相对应的图书管理数据系统,而是使用人工计算,抄写进行,数据处理工作量大,容易出错和数据丢失。      

    1.2.2  选题的目的、意义   

    图书管理系统数据库有着手工管理无法比拟的优点,如检索迅速、查找方便、可靠性高、存储量大、保密性好,成本低等等。这些优点能极大提高图书管理的效率,因此,开发一套能够为用户提供充足的信息和快捷的查询手段的图书管理系统是十分必要的。

    1.2 功能需求

    1.2.1读者信息的增加、修改、删除等基本操作

    1.读者类别信息的输入,包括图书类型、图书册数等

    2.读者档案信息的输入,包括读者编号、读者类型等

    1.2.2图书信息的增加、修改、删除等基本操作。

    1.图书类别信息的输入,包括类别编号,类别名称等。

    2.图书类别信息的查询,修改,包括类别编号,类别名称等。

    3.图书档案信息的输入,包括图书编号,图书名称,图书类别,作者名称,出版社名称,出版日期,图书页数,关键词,登记日期,备注信息等。

    1.2.3图书流通管理

              1.图书征订管理

              2.图书借阅管理

              3.图书归还管理

              4.图书罚款管理

    1.3 系统开发环境

    1、系统:Windows XP,7,8,10

    2、开发平台:SQL SERVER 2070, VISUAL BASIC6.0

     

    1.4 SQL SERVER 2017概述

    SQL SERVER2017是一个关系数据管理系统,是微软公司推出的新版本,该版本增加了许多先进的功能,具有方便使用,可伸缩性好与软件集成度高等的优点,可以运行在个人电脑到大型多处理器的服务器等多种平台使用。

    官网下载说明https://www.microsoft.com/zh-cn/sql-server/sql-server-2017-comparison

     

     

    第2章 数据库概念结构设计

    2.1 实体型结构

     

     

     

    2.2 实体间的联系

          1.一个出版社对应多个图书,一个图书对应一个出版社,出版社和图书是一对多联系。

          2.一个图书类型对应多个图书,一个图书对应一个图书类型,图书类型和图书是一对多联系。

          3.一个读者类型对应多个读者,一个读者对应一个读者类型,读者类型和读者是一对多联系。

          4.一个书库对应多个图书类型,一个图书类型对应一个书库,书库和图书类型是一对多联系。

          5.一个图书入库单对应多个图书入库单明细,一个图书入库单明细对应一个图书入库单,图书入库单和图书入库单明细是一对多联系。

          6.一个图书报损单对应多个图书报损单明细,一个图书报损单明细对于一个图书报损单,图书报损单和图书报损单明细是一对多联系。

          7.一个读书对应多个图书入库单明细,一个图书入库单明细对应一个图书,图书和图书入库单明细是一对多联系。

          8.一个读书对应多个图书报损单明细,一个图书报损单明细对应一个图书,图书和图书报损单明细是一对多联系。

          9.一个读者对应多个罚款交费单,一个罚款交罚单对应一个读者,读者和罚款交费单是一对多联系。

         10.一个职工对应多个图书入库单,一个图书入库单对应一个职工,职工和图书入库单是一对多联系。

         11.一个职工对应多个图书报损单,一个图书报损单对应一个职工,职工和图书报损单是一对多联系。

         12.一个职工对应多个罚款交费单,一个罚款交费单对应一个职工,职工和罚款交费单是一对多联系。

         13.一个读者对应多个图书,一个图书对应多个读者,读者和图书之间是多对多联系。

     

    2.3 整体简化E-R图

     

     

     

     

     

    第3章 数据库逻辑结构设计

    3.1 E-R图向关系模式转换的原则

    1. 一个实体型转换为一个关系模式。

    关系的属性:实体型的属性

    关系的码:实体型的码

    2.一个1:1联系可以转换为一个独立的关系模式,也可以与任何一端对应的关系模式合并。

    3.一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式 合并。

    4.一个m:n联系转换为一个关系模式。

    5.三个或三个以上实体间的一个多元联系可以转换为一个关系模式。

    6.具有相同码的关系模式可合并。

    目的:减少系统中关系个数

    7.同一实体集的实体之间的联系即自联系,也可以按1:1,1:n和m:n三种情况分别处理。

     

    3.2各个表的逻辑结构

     

    3.1  出版社表

    列  名

    数据类型

    长 度

    主  键

    非空

    备注

    出版社编号

    Int

     

    Yes

     

     

    出版社名称

    Varchar

    50

     

    Yes

     

    出版社地址

    Varchar

    50

     

    Yes

     

               

    3.2  图书表

    列  名

    数据类型

    长 度

    主  键

    非空

    备注

    图书编号

    varchar

    20

    Yes

     

     

    出版社编号

    Int

     

     

    Yes

    外码,参照出版表出版社编号

    图书类型编号

    char

    1

     

    Yes

    外码,参照图书类型表,图书类型编号

    书名

    varchar

    50

     

    Yes

     

    作者

    varchar

    20

     

    Yes

     

    价格

    Numeric(8,2)

     

     

    Yes

     

    页码

    Int

     

     

    Yes

     

    库存总量

    Int

     

     

    Yes

     

    现存量

    Int

     

     

    Yes

     

    入库时间

    Datetime

     

     

     

     

    借出次数

    Int

     

     

    Yes

     

              

     3.3  图书类型表

    列  名

    数据类型

    长 度

    主  键

    非空

    备注

    图书类型编号

    Char

    1

    Yes

    Yes

    图书类型名

    varchar

    50

     

    Yes

     

    书库号

    int

     

     

     

    外码,参照书库表的书库号

     

    3.4  读者表

    列  名

    数据类型

    长 度

    主  键

    非空

    备注

    证书编号

    int

     

    Yes

    Yes

     

    读者类型编号

    Char

    10

     

     

    外码,参照读者类型表的读者类型编号

    姓名

    varchar

    50

     

    Yes

     

    性别

    Char

    10

     

    Yes

    只能为“男”、或“女”

    出生日期

    Datetime

     

     

    Yes

     

    身份证编号

    char

    18

     

    Yes

    必须是18位  

    图书借阅次数

    int

     

     

     

     

    是否挂失

    int

     

     

     

    0未挂失

    1已挂失

    已借册数

    int

     

     

     

     

    未交罚款金额

    Numeric(8,2)

     

     

     

     

     

     

    3.5  读者类型表

    列  名

    数据类型

    长 度

    主  键

    非空

    备注

    读者类型编号

    Char

    10

    Yes

    Yes

     

    读者类型名

    vachar

    20

     

    Yes

     

    可借阅册数

    Int

     

     

    Yes

    有效范围是20---60

     

    借期天数

    int

     

     

    Yes

    有效范围是90---120

     

    可续借天数

    int

     

     

    Yes

    有效范围是10---60

     

               

     

    3.6  书库表

    列  名

    数据类型

    长 度

    主  键

    非空

    备注

    书库号

    int

     

    Yes

    Yes

     

    书库名

    varchat

    50

     

    Yes

     

     

     

    3.7 职工表

    列  名

    数据类型

    长 度

    主  键

    非空

    备注

    职工编号

    int

     

    Yes

    Yes

     

    职工姓名

    varchar

    50

     

    Yes

     

    性别

    Char

    10

     

    Yes

    只能为“男”、或“女”

    出生日期

    Datetime

     

     

    Yes

     

    文化程度

    varchar

    20

     

    Yes

     

     

     

    3.8 罚款交费单表

    列  名

    数据类型

    长 度

    主  键

    非空

    备注

    交费单号

    int

     

    Yes

    Yes

     

    借书证编号

    int

     

     

    Yes

    外码,参照读者表证书编号

    日期

    Datetime

     

     

    Yes

     

    金额

    Numeric(8,2)

     

     

    Yes

     

     

     

    3.9 图书入库单表

    列  名

    数据类型

    长 度

    主  键

    非空

    备注

    入库编号

    int

     

    Yes

    Yes

     

    入库日期

    Datetime

     

     

    Yes

     

    经手职工编号

    int

     

     

     

    外码,参照职工表的职工编号

    是否入库

    int

     

     

     

    0已入库

    1未入库

     

     

    3.10 图书入库单明细表

    列  名

    数据类型

    长 度

    主  键

    非空

    备注

    图书入库单编号

    int

     

    Yes

    报损单编号和图书编号一起作为主码

    Yes

    外码,参照图书入库单表的图书入库编号

    图书编号

    varchar

    20

    Yes

    外码,参照图书表的图书编号

    数量

    int

     

     

    Yes

     

     

     

    3.11 图书报损单表

    列  名

    数据类型

    长 度

    主  键

    非空

    备注

    报损单编号

    int

     

    Yes

    Yes

     

    报损日期

    Datetime

     

     

    Yes

     

    经手人编号

    int

     

     

     

    外码,参照职工表的职工编号

     

     

    3.12 图书报损单明细

    列  名

    数据类型

    长 度

    主  键

    非空

    备注

    图书报损单编号

    int

     

    Yes

    报损单编号和图书编号一起作为主码

    Yes

    外码,参照图书报损单表的报损单编号

    图书编号

    varchar

    20

    Yes

    外码,参照图书表的图书编号

    数量

    int

     

     

    Yes

     

    报损原因

    Varchar

    100

     

    Yes

     

     

     

    3.13借阅表

    列  名

    数据类型

    长 度

    主  键

    非空

    备注

    借书证编号

    int

     

    Yes

    借书证编号和图书编号一起作为主码

    Yes

    外码,参照读者表的证书编号

    图书编号

    varchar

    20

    Yes

    外码,参照图书表的图书编号

    借书日期

    Datetime

     

     

    Yes

     

    还书日期

    Datetime

     

     

     

    还书日期>=借书日期

     

    罚款金额

    Numeric(8,2)

     

     

     

     

    是否续借

    int

     

     

     

    0未续借

    1已续借

     

    3.3 视图结构

     

    3.3.1  入库单视图

    列  名

    来源表

    入库单编号

    图书入库单表

    入库日期

    图书入库单表

    经手人姓名

    职工表

    是否已入库

    图书入库单表

    图书编号

    图书入库单明细表

    书名

    图书表

    出版社名

    出版社表

    入库数量

    图书入库单明细表

             

    3.3.2  报损单视图

    列  名

    来源表

    报损单编号

    图书报损单表

    报损日期

    图书报损单表

    经手人姓名

    职工表

    图书编号

    图书报损单明细表

    书名

    图书表

    出版社名

    出版社表

    报损数量

    图书报损单明细表

    报损原因

    图书报损单明细表

             

    3.3.3  读者未还借书视图

    列  名

    来源表

    借书证编号

    借阅表

    读者姓名

    读者表

    未还书编号

    借阅表

    未还书名

    图书表

    出版社名

    出版社表

    借书日期

    借阅表

    可借期天数

    读者类型表

    罚款金额

    借阅表

             

     

    3.3.4  图书分类库存视图

    列  名

    来源表

     图书类型编号

    图书类型表

     图书类型名

    图书类型表

     库存册数合计

    图书表

     库存金额合计

    图书表

     

    3.3.5   借出次数前100图书视图

    列  名

    来源表

     图书编号

    图书表

     书名

    图书表

     借出次数

    图书表

           
     

    第4章 数据库物理结构设计

    4.1索引的设计原则

      (1)如果一个(或一组)属性经常在查询条件中出现,则考虑早这个(或这组)属性建立索引。

    (2)如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑这个属性上建立索引。

    (3)如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引。

     

    4.2 索引结构设计 

                                                                                                                                  表4.1  索引结构表

    表名

    索引名

    索引列

    备注(索引的设计理由)

    图书

    书名索引

    书名

    经常查询的列

    图书

    出版社编号索引

    出版编社号

    经常连接的列

    图书

    图书类型索引

    图书类型编号

    经常连接的列

    图书

    作者索引

    作者

    经常查询的列

    图书类型

    书库号索引

    书库号

    经常连接的列

    读者

    姓名索引

    姓名

    经常查询的列

    读者

    图书借阅次数索引

    图书借阅次数

    聚集函数的参数

    读者

    已借册数索引

    已借册数

    聚集函数的参数

    读者

    未交罚款金额索引

    未交罚款金额

    聚集函数的参数

    职工

    姓名索引

    姓名

    经常查询的列

    罚款交费单

    借书证编号索引

    借书证编号

    经常连接的列

    图书入库单

    经手职工编号索引

    经手职工编号

    经常连接的列

    图书入库单明细

    图书入库单编号索引

    图书入库单编号

    经常连接的列

    图书入库单明细

    图书编号索引

    图书编号

    经常连接的列

    图书报损单

    经手职工编号索引

    经手职工编号

    经常连接的列

    图书报损单明细

    图书报损单编号索引

    图书报损单编号

    经常连接的列

    图书报损单明细

    图书编号索引

    图书编号

    经常连接的列

    借阅

    借书证编号索引

    借书证编号

    经常连接的列

    借阅

    图书编号索引

    图书编号

    经常连接的列

       

     

    第5章 数据库实施

    5.1 建表语句

    CREATE TABLE 出版社
     (
     出版社编号 INT PRIMARY KEY,
     出版社名称 VARCHAR(50) NOT NULL,
     出版社地址 VARCHAR(50)
     );
    
     CREATE TABLE 书库
     (
     书库号 INT PRIMARY KEY,
     书库名 VARCHAR(50) NOT NULL
     );
    
     CREATE TABLE 图书类型
     (
     图书类型编号 CHAR(1) PRIMARY KEY,
     图书类型名 VARCHAR(50) NOT NULL,
     书库号 INT ,
     FOREIGN KEY(书库号) REFERENCES 书库(书库号)
     );
    
     CREATE TABLE 图书
     (
     图书编号 VARCHAR(20) PRIMARY KEY,
     出版社编号 INT NOT NULL,
     图书类型编号 CHAR(1) ,
     书名 VARCHAR(50) NOT NULL,
     作者 VARCHAR(20) NOT NULL,
     价格 NUMERIC(8,2) NOT NULL,
     页码 INT NOT NULL,
     库存总量 INT NOT NULL,
     现存量 INT NOT NULL,
     入库时间 DATETIME ,
     借出次数 INT NOT NULL,
     FOREIGN KEY(出版社编号) REFERENCES 出版社(出版社编号),
     FOREIGN KEY(图书类型编号) REFERENCES 图书类型(图书类型编号)
     );
    
     CREATE TABLE 读者类型
     (
     读者类型编号 CHAR(10) PRIMARY KEY,
     读者类型名 VARCHAR(20) NOT NULL,
     可借阅册数 INT CHECK(可借阅册数>=20 AND 可借阅册数<=60),
     借期天数 INT  CHECK(借期天数>=90 AND 借期天数<=120),
     可续借天数 INT  CHECK(可续借天数>=10 AND 可续借天数<=60)
     )
    
     CREATE TABLE 读者
     (
     证书编号 INT PRIMARY KEY,
     读者类型编号 CHAR(10),
     姓名 VARCHAR(50) NOT NULL,
     性别 CHAR(10) CHECK (性别 IN ('','')),
     出生日期 DATETIME NOT NULL,
     身份证编号 CHAR(18) CHECK(LEN(TRIM(身份证编号))=18),
     图书借阅次数 INT,
     是否挂失 INT,
     已借册数 INT,
     未交罚款金额 NUMERIC(8,2),
     FOREIGN KEY(读者类型编号) REFERENCES 读者类型 (读者类型编号)
     )
    
     CREATE TABLE 职工
     (
     职工编号 INT  PRIMARY KEY,
     职工姓名 VARCHAR(50) NOT NULL,
     性别 CHAR(10) CHECK (性别  IN ('','')),
     出生日期 DATETIME NOT NULL,
     文化程度 VARCHAR(20) NOT NULL
     )
    
     CREATE TABLE 罚款交费单
     (
     交费单号 INT PRIMARY KEY,
     借书证编号 INT ,
     日期 DATETIME NOT NULL,
     金额 NUMERIC(8,2) NOT NULL,
     FOREIGN KEY(借书证编号) REFERENCES 读者(证书编号)
      )
    
    CREATE TABLE 图书入库单 ( 入库单编号 INT PRIMARY KEY, 入库日期 DATETIME NOT NULL, 经手人编号 INT, 是否入库 INT, FOREIGN KEY(经手人编号) REFERENCES 职工(职工编号) ) CREATE TABLE 图书入库单明细 ( 入库单编号 INT, 图书编号 VARCHAR(20), 数量 INT NOT NULL, PRIMARY KEY(入库单编号,图书编号), FOREIGN KEY(入库单编号) REFERENCES 图书入库单(入库单编号), FOREIGN KEY(图书编号) REFERENCES 图书(图书编号) ) CREATE TABLE 图书报损单 ( 报损单编号 INT PRIMARY KEY, 报损日期 DATETIME NOT NULL, 经手人编号 INT, FOREIGN KEY(经手人编号) REFERENCES 职工(职工编号) ) CREATE TABLE 图书报损单明细 ( 报损单编号 INT, 图书编号 VARCHAR(20), 数量 INT NOT NULL, 报损原因 VARCHAR(100) NOT NULL, PRIMARY KEY(报损单编号,图书编号), FOREIGN KEY(报损单编号) REFERENCES 图书报损单(报损单编号), FOREIGN KEY(图书编号) REFERENCES 图书(图书编号) ) CREATE TABLE 借阅 ( 借书证编号 INT , 图书编号 VARCHAR(20), 借书日期 DATETIME NOT NULL, 还书日期 DATETIME, 罚款金额 NUMERIC(8,2), 是否续借 INT, CHECK (借书日期>=还书日期), PRIMARY KEY(借书证编号,图书编号), FOREIGN KEY(借书证编号) REFERENCES 读者(证书编号), FOREIGN KEY(图书编号) REFERENCES 图书(图书编号) )

     

     

    5.2 建视图语句

    CREATE VIEW 入库单(入库单编号,入库日期,经手人姓名,是否已入库,图书编号,书名,出版社名,入库数量)
     AS
     SELECT 图书入库单.入库单编号,图书入库单.入库日期,职工.职工姓名,图书入库单.是否入库,图书入库单明细.图书编号,图书.书名,出版社.出版社名称,图书入库单明细.数量
     FROM 图书入库单,图书入库单明细,职工,图书,出版社
     WHERE 图书入库单明细.入库单编号=图书入库单.入库单编号 AND 图书入库单明细.图书编号=图书.图书编号 AND 图书入库单.经手人编号=职工.职工编号 AND 图书.出版社编号=出版社.出版社编号
    
    CREATE VIEW 报损单(报损单编号,报损日期,经手人姓名,图书编号,书名,出版社名,报损数量,报损原因)
     AS
     SELECT 图书报损单.报损单编号,图书报损单.报损日期,职工.职工姓名,图书报损单明细.图书编号,图书.书名,出版社.出版社名称,图书报损单明细.数量,图书报损单明细.报损原因
     FROM  图书报损单,职工,图书报损单明细,图书,出版社
     WHERE 图书报损单明细.报损单编号=图书报损单.报损单编号 AND 图书报损单明细.图书编号=图书.图书编号 AND 图书报损单.经手人编号=职工.职工编号 AND 图书.出版社编号=出版社.出版社编号
    
    CREATE VIEW 读者未还借书(借书证编号,读者姓名,未还书编号,未还书名,出版社名,借书日期,可借期天数,罚款金额)
     AS
     SELECT 借阅.借书证编号,读者.姓名,借阅.图书编号,图书.书名,出版社.出版社名称,借阅.借书日期,读者类型.可续借天数,借阅.罚款金额
     FROM  借阅,读者,图书,出版社,读者类型
     WHERE 借阅.借书证编号=读者.证书编号 AND 借阅.图书编号=图书.图书编号 AND  图书.出版社编号=出版社.出版社编号 AND 读者.读者类型编号=读者类型.读者类型编号
    
    CREATE VIEW 图书分类库存(图书类型编号,图书类型名,库存册数合计,库存金额合计)
     AS
     SELECT 图书类型.图书类型编号,图书类型.图书类型名,sum(图书.库存总量),sum(图书.价格*图书.库存总量)
     FROM  图书,图书类型
     WHERE 图书类型.图书类型编号=图书.图书类型编号
     GROUP BY 图书类型.图书类型编号,图书类型.图书类型名
    
    CREATE VIEW 借出次数前100图书(图书编号,书名,借出次数)
     AS
     SELECT TOP(100) 图书编号,书名,借出次数
     FROM  图书
     ORDER BY 借出次数 DESC

     

    5.3建索引语句

      CREATE INDEX 书名索引 ON 图书(书名);
      CREATE INDEX 出版社编号索引 ON 图书(出版社编号);
      CREATE INDEX 图书类型编号索引 ON 图书(图书类型编号);
      CREATE INDEX 作者索引 ON 图书(作者);
      CREATE INDEX 书库号索引 ON 图书类型(书库号);
      CREATE INDEX 姓名索引 ON 读者(姓名);
      CREATE INDEX 图书借阅次数索引 ON 读者(图书借阅次数);
      CREATE INDEX 已借册数索引 ON 读者(已借册数);
      CREATE INDEX 未交罚款金额索引 ON 读者(未交罚款金额);
      CREATE INDEX 职工姓名索引 ON 职工(职工姓名);
      CREATE INDEX 借书证编号索引 ON 罚款交费单(借书证编号);
      CREATE INDEX 经手职工编号索引 ON 图书入库单(经手人编号);
      CREATE INDEX 图书入库单编号索引 ON 图书入库单明细(入库单编号);
      CREATE INDEX 图书编号索引 ON 图书入库单明细(图书编号);
      CREATE INDEX 经手职工编号索引 ON 图书报损单(经手人编号);
      CREATE INDEX 图书报损单编号索引 ON 图书报损单明细(报损单编号);
      CREATE INDEX 图书编号索引 ON 图书报损单明细(图书编号);
      CREATE INDEX 借书证编号索引 ON 借阅(借书证编号);
      CREATE INDEX 图书编号索引 ON 借阅(图书编号);

     

    5.4存储过程

       每个存储过程的功能说明和建立语句

     

      INSERT INTO 书库 VALUES(2,'理工库' );
      INSERT INTO 图书类型 VALUES('T','工业技术', 2);
      INSERT INTO 出版社 VALUES (1 ,'清华大学出版社','北京');
      INSERT INTO 图书(图书类型编号, 出版社编号, 图书编号,书名,作者,价格,页码,现存量,库存总量,入库时间,借出次数) VALUES ( 'T', 1, '101',  '数据库系统原理' , '王珊' , '20' , '400', 0,0,null,0);
      INSERT INTO 图书(图书类型编号, 出版社编号, 图书编号,书名,作者,价格,页码,现存量,库存总量,入库时间,借出次数) VALUES ( 'T', 1, '102',  'C程序设计' , '谭浩强 ', '18 ' , '300' , 0,0,null,0);
      INSERT INTO 图书(图书类型编号, 出版社编号, 图书编号,书名,作者,价格,页码,现存量,库存总量,入库时间,借出次数) VALUES ( 'T', 1, '103',  '计算机组成原理' , '张兵' , '20' , '400' , 0,0,null,0);
      INSERT INTO 职工 VALUES(10001,'王小伟','', 1995-3-7,'本科');
      INSERT INTO 图书入库单(入库单编号,入库日期,经手人编号,是否入库) VALUES(100,'7-1-2018' ,'10001',0);
      INSERT INTO 图书入库单明细(入库单编号,图书编号,数量) VALUES(100,101,75);
      INSERT INTO 图书入库单明细(入库单编号,图书编号,数量) VALUES(100,102,75);
      INSERT INTO 图书入库单明细(入库单编号,图书编号,数量) VALUES(100,103,75);

     

    存储过程

    GO
      CREATE  PROCEDURE  P1  
      @入库单号   INT
    AS
    DECLARE @图书编号 INT, @数量 INT ,@是否已入库 INT ,@入库日期 DATETIME
    DECLARE C1 CURSOR FOR       
           SELECT 图书编号,数量 FROM 图书入库单明细 WHERE 入库单编号=@入库单号
    SELECT @是否已入库=是否入库, @入库日期=入库日期
    FROM 图书入库单
    WHERE 入库单编号=@入库单号
    IF @是否已入库=0
    BEGIN
    
    OPEN C1
    BEGIN TRANSACTION  /* 处理之前  开始事务(要么全做,要么全不做) */
    /* 处理 */
    WHILE 1=1
    BEGIN
      FETCH NEXT FROM C1 INTO  @图书编号, @数量
      IF @@fetch_status<>0  
             BREAK 
      UPDATE 图书/*修改图书表*/
      SET 库存总量=库存总量+@数量,现存量=现存量+@数量,入库时间=@入库日期
      WHERE 图书编号=@图书编号
    END   
    CLOSE C1
    DEALLOCATE C1
    UPDATE 图书入库单/*修改图书入库单表*/
    SET 是否入库=1
    WHERE 入库单编号=@入库单号
    COMMIT    /* 一个订单的订单明细全部处理完成  */
    END
    GO

    执行存储过程

    EXEC P1 100

     

    SELECT *
    FROM 图书入库单明细

     

     

    select *
    from 图书

     

    5.5触发器

       每个触发器的功能说明和建立语句

      

    1.编写图书入库单明细表的DELETE触发器, 如已经入库(对应入库单的<是否已入库> 1), 报错已入库不能删除!,回滚事务

    (在触发器中执行ROLLBACK TRANSACTION, 回滚(撤销)引起触发器DELETE的语句)

    GO
    CREATE TRIGGER trig_delete_tsrkdmx
    ON 图书入库单明细
    FOR DELETE AS
      DECLARE @是否入库 INT,@入库单编号 INT
      SET @入库单编号 = (SELECT TOP 1 入库单编号 FROM deleted)
      SET @是否入库 = (SELECT 是否入库 FROM 图书入库单 WHERE 入库单编号=@入库单编号)
      IF @是否入库=1
      BEGIN
         RAISERROR('已入库不能删除!',16,1)
         ROLLBACK TRANSACTION
         END
    GO 

    测试:

    删除入库明细单中入库单号为100的行

    触发器报错, 删除失败,截图

     

    delete
    from 图书入库单明细
    where 入库单编号=100

     

     

    2 编写图书入库单明细表的UPDATE触发器, 如已经入库(对应入库单<是否已入库> 1),报错已入库不能修改,回滚事务

    GO
    CREATE TRIGGER trig_update_tsrkdmx
    ON 图书入库单明细
    FOR UPDATE AS
      DECLARE @是否入库 INT,@入库单编号 INT
      SET @入库单编号 = (SELECT TOP 1 入库单编号 FROM deleted)
      SET @是否入库 = (SELECT 是否入库 FROM 图书入库单 WHERE 入库单编号=@入库单编号)
      IF @是否入库=1
      BEGIN
         RAISERROR('已入库不能修改!',16,1)
         ROLLBACK TRANSACTION
         END
    GO 

     

    测试:

    UPDATE入库明细单中入库单号为100的行

    触发器报错, update失败

     

    update 图书入库单明细
    set 数量=110
    where 入库单编号=100

     

     

     

    3读者借书时, 要插入借阅行

    编写触发器,当插入借阅时

    如读者已借够可借册数,

    不准借了(报错, 回滚事务)

    如或读者有未交罚款>100

    不准借了(报错, 回滚事务)

    否则

    {

    将读者已借册数加1, 图书借阅次数1,将图书的借出次数加1现存量减1

    }

    GO
    CREATE TRIGGER trig_insert_jieyue
    ON 借阅
    FOR INSERT AS
      DECLARE @借书证编号 INT,@已借册数 INT,@可借册数 INT,@读者类型编号 CHAR(10),@未交罚款金额 NUMERIC(8,2),@图书编号 VARCHAR(20)
      SET @借书证编号 = (SELECT TOP 1 借书证编号 FROM inserted) 
      SET @图书编号 = (SELECT TOP 1 图书编号 FROM inserted)
      SET @已借册数 = (SELECT 已借册数 FROM 读者 WHERE 证书编号=@借书证编号)
      SET @读者类型编号 = (SELECT 读者类型编号 FROM 读者 WHERE 证书编号=@借书证编号)
      SET @未交罚款金额 = (SELECT 未交罚款金额 FROM 读者 WHERE 证书编号=@借书证编号)
      SET @可借册数 =(SELECT 可借阅册数 FROM 读者类型 WHERE 读者类型编号=@读者类型编号)
      IF @已借册数> @可借册数
      BEGIN
         RAISERROR('读者已借够可借册数!',16,1)
         ROLLBACK TRANSACTION
      END
      ELSE IF @未交罚款金额>100
      BEGIN
         RAISERROR('读者有未交罚款!',16,1)
         ROLLBACK TRANSACTION
      END
      ELSE
       BEGIN
        UPDATE 读者
        SET 图书借阅次数=图书借阅次数+1
        WHERE 证书编号= @借书证编号
        UPDATE 图书
        SET 借出次数=借出次数+1,现存量=现存量-1
        WHERE 图书编号= @图书编号
      END
    GO 

    测试:

    自行设计测试数据

     

    INSERT INTO 读者类型(读者类型编号,读者类型名,可借阅册数,借期天数,可续借天数) VALUES('10000','本科生',30,90,10  );
    INSERT INTO 读者(证书编号,姓名,读者类型编号,性别,出生日期,身份证编号,图书借阅次数,是否挂失,已借册数,未交罚款金额)
    VALUES(10,'王陆','10000','','1999-5-6','370683199703786815',10,0,20,110);
    INSERT INTO 借阅(借书证编号, 图书编号,借书日期,还书日期,是否续借,罚款金额) VALUES(10,'101','2019-6-21',NULL,0,0);

     

     

     

    4读者还书时, 要修改借阅表,设置还书日期。

    编写触发器,当修改借阅时(一次只修改一行,不考虑修改多行的情况,不用游标)

    如果还书日期原来为空值,新值不是空值(这表明是还书操作)

         将读者的已借册数减1, 将图书的现存量加1

    如果罚款金额原来为空值,新值不是空值(这表明是有罚款)

         将读者的未交罚款增加

    如果罚款金额原来不是空值,新值不是空值(这表明是罚款修改了)

         将读者的未交罚款调整 ( 减旧罚款, 加新罚款)

    GO
    CREATE TRIGGER trig_update_jieyue
    ON 借阅
    FOR UPDATE AS
      DECLARE @原还书日期 DATETIME,@新还书日期 DATETIME,@原罚款金额 NUMERIC(8,2),@新罚款金额 NUMERIC(8,2),@借书证编号 INT,@已借册数 INT,@图书编号 VARCHAR(20)
      SET @原还书日期 = (SELECT TOP 1 还书日期 FROM deleted) 
      SET @新还书日期 = (SELECT TOP 1 还书日期 FROM inserted) 
      SET @原罚款金额 = (SELECT TOP 1 罚款金额 FROM deleted) 
      SET @新罚款金额 = (SELECT TOP 1 罚款金额 FROM inserted)
      SET @借书证编号 = (SELECT TOP 1 借书证编号 FROM deleted) 
      SET @图书编号 = (SELECT TOP 1 图书编号 FROM deleted)
      SET @已借册数 = (SELECT 已借册数 FROM 读者 WHERE 证书编号=@借书证编号)
      IF @原还书日期 IS NULL AND @新还书日期 IS NOT NULL--还书操作
      BEGIN
        UPDATE 读者
        SET 图书借阅次数=图书借阅次数-1
        WHERE 证书编号= @借书证编号
        UPDATE 图书
        SET 现存量=现存量+1
        WHERE 图书编号= @图书编号
      END
      IF @原罚款金额 IS NULL AND @新罚款金额 IS NOT NULL--未交罚款增加
      BEGIN
        UPDATE 读者
        SET 未交罚款金额=@新罚款金额
        WHERE 证书编号= @借书证编号
      END
      IF @原罚款金额 IS NOT NULL AND @新罚款金额 IS NOT NULL--未交罚款修改
      BEGIN
      UPDATE 读者
        SET 未交罚款金额=未交罚款金额+@新罚款金额
        WHERE 证书编号= @借书证编号
      END
    GO

    测试:

    自行设计测试数据

     

    INSERT INTO 读者类型(读者类型编号,读者类型名,可借阅册数,借期天数,可续借天数) VALUES('10000','本科生',30,90,10  );
    INSERT INTO 读者(证书编号,姓名,读者类型编号,性别,出生日期,身份证编号,图书借阅次数,是否挂失,已借册数,未交罚款金额)
    VALUES(10,'王陆','10000','','1999-5-6','370683199703786815',10,0,20,30);
    INSERT INTO 借阅(借书证编号, 图书编号,借书日期,还书日期,是否续借,罚款金额) VALUES(10,'101','2019-6-21',NULL,0,0);
    SELECT *
    FROM 借阅
     UPDATE 借阅
     SET 还书日期='2019-6-21'
     WHERE 借书证编号=10
     UPDATE 借阅
     SET 罚款金额=罚款金额+5
     WHERE 借书证编号=10
    
     SELECT *
     FROM 借阅
    
     SELECT *
     FROM 读者
     
     SELECT *
     FROM 图书

     

     

     

    5 读者交罚款时, 要插入罚款交费单

    编写触发器,当插入罚款交费单

    将读者的未交罚款减少

    GO
    CREATE TRIGGER trig_insert_fakuan
    ON 罚款交费单
    FOR INSERT AS
      DECLARE @借书证编号 INT,@金额 NUMERIC(8,2) 
      SET @借书证编号 = (SELECT TOP 1 借书证编号 FROM inserted) 
      SET @金额 = (SELECT TOP 1 金额 FROM inserted)
      IF @金额 IS NOT NULL
      BEGIN
        UPDATE 读者
        SET 未交罚款金额=未交罚款金额-@金额
        WHERE 证书编号= @借书证编号
      END
    GO

    测试:

    自行设计测试数据

     

    INSERT INTO 读者类型(读者类型编号,读者类型名,可借阅册数,借期天数,可续借天数) VALUES('10000','本科生',30,90,10  );
    INSERT INTO 读者(证书编号,姓名,读者类型编号,性别,出生日期,身份证编号,图书借阅次数,是否挂失,已借册数,未交罚款金额)
    VALUES(10,'王陆','10000','','1999-5-6','370683199703786815',10,0,20,100);
    INSERT INTO 借阅(借书证编号, 图书编号,借书日期,还书日期,是否续借,罚款金额) VALUES(10,'101','2019-6-21',NULL,0,0);
    INSERT INTO 罚款交费单(交费单号,日期,职工编号,金额,借书证编号)  VALUES(1,'2019-6-22',10001,100,10);
    select *
    from 读者

     

     

     

    6  编写触发器,借书表不允许DELETE操作

    GO
    CREATE TRIGGER trig_delete_jieyue
    ON 借阅
    FOR DELETE AS
     RAISERROR('借书表不允许DELETE操作',16,1)
     ROLLBACK TRANSACTION
    GO 

    测试:

    自行设计测试数据

     

    DELETE 
    FROM 借阅

     

     

    7  编写报损单触发器

    GO
    CREATE TRIGGER trig_insert_baosun
    ON 图书报损单明细
    FOR INSERT AS
      DECLARE @数量 INT,@图书编号 VARCHAR(20)
      SET @数量 = (SELECT TOP 1 数量 FROM inserted) 
      SET @图书编号 = (SELECT TOP 1 图书编号 FROM inserted)
        UPDATE 图书
        SET 库存总量=库存总量-@数量,现存量=现存量-@数量
        WHERE 图书编号= @图书编号 
    GO

     

    第6章 测试数据

    6.1完整的测试数据

    /*在出版社表插入5行数据 
    */
     INSERT INTO 出版社 VALUES (1 ,'清华大学出版社','北京');
     INSERT INTO 出版社 VALUES (2 ,'高等教育出版社','北京');
     INSERT INTO 出版社 VALUES (3 ,'天津大学出版社','天津');
     INSERT INTO 出版社 VALUES (4 ,'复旦大学出版社','上海');
     INSERT INTO 出版社 VALUES (5 ,'山东大学出版社','济南');
    /*在书库表插入4行数据*/
     INSERT INTO 书库 VALUES(1,'文史库' ); 
     INSERT INTO 书库 VALUES(2,'理工库' );
     INSERT INTO 书库 VALUES(3,'经管库' ); 
     INSERT INTO 书库 VALUES(4,'政法库' ); 
    
    /*在图书类型表插入5行数据,注意图书类型编号为字符型   
    */
     INSERT INTO 图书类型 VALUES('T','工业技术', 2);
     INSERT INTO 图书类型 VALUES('A','马克思,列,毛,邓', 4);
     INSERT INTO 图书类型 VALUES('K','历史地理', 1);
     INSERT INTO 图书类型 VALUES('F','经济', 3);
     INSERT INTO 图书类型 VALUES('I','文学', 1);
    
    /*在图书表插入20行数据 */
    INSERT INTO 图书(图书类型编号, 出版社编号, 图书编号,书名,作者,价格,页码,现存量,库存总量,入库时间,借出次数) 
    VALUES ( 'T', 1, '101',  '数据库系统原理' , '王珊' , '20' , '400', 100,100,'6-10-2019',0);
    INSERT INTO 图书(图书类型编号, 出版社编号, 图书编号,书名,作者,价格,页码,现存量,库存总量,入库时间,借出次数) 
    VALUES ( 'T', 1, '102',  'C程序设计' , '谭浩强 ', '18 ' , '300' ,100,100,'6-10-2019',0);
    INSERT INTO 图书(图书类型编号, 出版社编号, 图书编号,书名,作者,价格,页码,现存量,库存总量,入库时间,借出次数) 
    VALUES ( 'T', 1, '103',  '计算机组成原理' , '张兵' , '20' , '400' ,100,100,'6-10-2019',0);
    INSERT INTO 图书(图书类型编号, 出版社编号, 图书编号,书名,作者,价格,页码,现存量,库存总量,入库时间,借出次数) 
    VALUES ( 'A', 2, '104',  '毛思想和中特社' , '高英王洋' , '20' , '400' ,100,100,'6-19-2019',0);
    INSERT INTO 图书(图书类型编号, 出版社编号, 图书编号,书名,作者,价格,页码,现存量,库存总量,入库时间,借出次数) 
    VALUES ( 'F ',3, '105',  '经济学导论' , '罗丽英' , '20' , '400' ,100,100,'6-19-2019',0);
    INSERT INTO 图书(图书类型编号, 出版社编号, 图书编号,书名,作者,价格,页码,现存量,库存总量,入库时间,借出次数) 
    VALUES ( 'K', 4, '106',  '中国近代史' , '张鸣' , '40' , '400' ,100,100,'6-19-2019',0);
    INSERT INTO 图书(图书类型编号, 出版社编号, 图书编号,书名,作者,价格,页码,现存量,库存总量,入库时间,借出次数) 
    VALUES ( 'I', 5, '107',  '鲁迅文集' , '鲁迅' , '30' , '400' ,100,100,'6-20-2019',0);
    
    /*在读者类型表插入4行数据 
    
    */
    INSERT INTO 读者类型(读者类型编号,读者类型名,可借阅册数,借期天数,可续借天数) VALUES('bk01','本科生',30,90,10  );
    INSERT INTO 读者类型(读者类型编号,读者类型名,可借阅册数,借期天数,可续借天数) VALUES('yj01','研究生',40,100,10  );
    INSERT INTO 读者类型(读者类型编号,读者类型名,可借阅册数,借期天数,可续借天数) VALUES('js01','讲师',50,110,20  );
    INSERT INTO 读者类型(读者类型编号,读者类型名,可借阅册数,借期天数,可续借天数) VALUES('js02','教授',60,120,30  );
    /*在读者表插入10行数据*/
    
    INSERT INTO 读者(证书编号,姓名,读者类型编号,性别,出生日期,身份证编号,图书借阅次数,是否挂失,已借册数,未交罚款金额)
    VALUES(10,'王陆','bk01','','1999-5-6','370683199905066815',10,0,20,10);
    
    INSERT INTO 读者(证书编号,姓名,读者类型编号,性别,出生日期,身份证编号,图书借阅次数,是否挂失,已借册数,未交罚款金额)
    VALUES(11,'王舞','bk01','','1998-5-16','370683199805166816',10,0,20,0);
    
    INSERT INTO 读者(证书编号,姓名,读者类型编号,性别,出生日期,身份证编号,图书借阅次数,是否挂失,已借册数,未交罚款金额)
    VALUES(12,'陆飘','yj01','','1995-4-16','370683199504166816',10,0,20,20);
    
    INSERT INTO 读者(证书编号,姓名,读者类型编号,性别,出生日期,身份证编号,图书借阅次数,是否挂失,已借册数,未交罚款金额)
    VALUES(13,'张山','js01','','1988-5-16','370683198805166816',10,0,20,30);
    
    INSERT INTO 读者(证书编号,姓名,读者类型编号,性别,出生日期,身份证编号,图书借阅次数,是否挂失,已借册数,未交罚款金额)
    VALUES(14,'刘勇','js02','','1977-5-17','370683199805176816',10,0,20,0);
    
    INSERT INTO 读者(证书编号,姓名,读者类型编号,性别,出生日期,身份证编号,图书借阅次数,是否挂失,已借册数,未交罚款金额)
    VALUES(15,'孔燕','js02','','1978-5-16','370683197807166816',10,0,20,0);
    
    /*在职工插入5行数据*/
     INSERT INTO 职工 VALUES(10001,'王小伟','', '1995-3-7','本科');
     INSERT INTO 职工 VALUES(10002,'张三','', '1996-7-8','本科');
     INSERT INTO 职工 VALUES(10003,'李四','', '1994-5-3','本科');
     INSERT INTO 职工 VALUES(10004,'王五','', '1995-4-23','本科');
     INSERT INTO 职工 VALUES(10005,'小六','', '1997-3-17','本科');
    /*在图书入库单表插入5行数据,是否已入库的值是0
         注意,日期格式:  ‘月-日-年’, 例如 ’6-20-2016’
    */
    INSERT INTO 图书入库单(入库单编号,入库日期,经手人编号,是否入库) 
    VALUES(100,'6-10-2019' ,10001,0);
    INSERT INTO 图书入库单(入库单编号,入库日期,经手人编号,是否入库) 
    VALUES(101,'6-19-2019' ,10002,0);
    INSERT INTO 图书入库单(入库单编号,入库日期,经手人编号,是否入库) 
    VALUES(102,'6-20-2019' ,10003,0);
    /*对应每个入库单,各输入3个明细数据  
    */
    INSERT INTO 图书入库单明细(入库单编号,图书编号,数量) VALUES(100,101,100);
    INSERT INTO 图书入库单明细(入库单编号,图书编号,数量) VALUES(100,102,100);
    INSERT INTO 图书入库单明细(入库单编号,图书编号,数量) VALUES(100,103,100);
    
    INSERT INTO 图书入库单明细(入库单编号,图书编号,数量) VALUES(101,104,100);
    INSERT INTO 图书入库单明细(入库单编号,图书编号,数量) VALUES(101,105,100);
    INSERT INTO 图书入库单明细(入库单编号,图书编号,数量) VALUES(101,106,100);
    
    INSERT INTO 图书入库单明细(入库单编号,图书编号,数量) VALUES(102,107,100);
    
    /*在图书报损单表插入2行数据,报损单号为5,日期为2016.6.20 
    */
    INSERT INTO 图书报损单(报损单编号,报损日期,经手人编号) 
    VALUES(5,'6-20-2019' ,10004);
    INSERT INTO 图书报损单(报损单编号,报损日期,经手人编号) 
    VALUES(6,'6-20-2019' ,10005);
    /*对应每个入库单,各输入3个明细数据  
    */
    
    INSERT INTO 图书报损单明细(报损单编号,图书编号,数量,报损原因) VALUES(5,101,1,'图书丢失');
    INSERT INTO 图书报损单明细(报损单编号,图书编号,数量,报损原因) VALUES(5,102,1,'图书丢失');
    INSERT INTO 图书报损单明细(报损单编号,图书编号,数量,报损原因) VALUES(5,103,1,'图书丢失');
    INSERT INTO 图书报损单明细(报损单编号,图书编号,数量,报损原因) VALUES(6,104,1,'图书丢失');
    INSERT INTO 图书报损单明细(报损单编号,图书编号,数量,报损原因) VALUES(6,105,1,'图书丢失');
    INSERT INTO 图书报损单明细(报损单编号,图书编号,数量,报损原因) VALUES(6,106,1,'图书丢失');
    /*在借书表插入10行数据 */
    
    INSERT INTO 借阅(借书证编号, 图书编号,借书日期,还书日期,是否续借,罚款金额) VALUES(10,'101','2019-6-11',NULL,0,0);
    INSERT INTO 借阅(借书证编号, 图书编号,借书日期,还书日期,是否续借,罚款金额) VALUES(10,'102','2019-6-11',NULL,0,0);
    INSERT INTO 借阅(借书证编号, 图书编号,借书日期,还书日期,是否续借,罚款金额) VALUES(11,'102','2019-6-12',NULL,0,0);
    INSERT INTO 借阅(借书证编号, 图书编号,借书日期,还书日期,是否续借,罚款金额) VALUES(12,'103','2019-6-20',NULL,0,0);
    INSERT INTO 借阅(借书证编号, 图书编号,借书日期,还书日期,是否续借,罚款金额) VALUES(13,'104','2019-6-21',NULL,0,0);
    INSERT INTO 借阅(借书证编号, 图书编号,借书日期,还书日期,是否续借,罚款金额) VALUES(14,'107','2019-6-20',NULL,0,0);
    INSERT INTO 借阅(借书证编号, 图书编号,借书日期,还书日期,是否续借,罚款金额) VALUES(15,'106','2019-6-21',NULL,0,0);
    INSERT INTO 借阅(借书证编号, 图书编号,借书日期,还书日期,是否续借,罚款金额) VALUES(15,'105','2019-6-22',NULL,0,0);
    /*在罚款交费单表插入5行数据 */
    
    INSERT INTO 罚款交费单(交费单号,日期,职工编号,金额,借书证编号)  
    VALUES(1,'2019-6-22',10001,10,10);
    INSERT INTO 罚款交费单(交费单号,日期,职工编号,金额,借书证编号)  
    VALUES(2,'2019-6-22',10004,20,12);
    INSERT INTO 罚款交费单(交费单号,日期,职工编号,金额,借书证编号)  
    VALUES(3,'2019-6-22',10005,30,13);

    6.2测试查询语句

     

    1 完成设计报告《6.1完整的测试数据》

     查询图书表,看看结果是否正确,截图到设计报告. (注意报损的图书册数未计入, 应如何解决?)

     

    SELECT *
    FROM 图书

     

    查询读者表,看看结果是否正确,截图到设计报告.

    SELECT *
    FROM 读者

     

    完成设计报告《6.2 测试查询语句》。

    写出下列SQL语句并运行通过

      例如:写出用LIKE的查询要求, 并写出查询语句.

        查询要求:

    查询书名中含有’数据库’的图书编号,书名

              查询语句:

     

    SELECT 图书编号,书名 
    FROM 图书
    WHERE 书名 LIKE%数据库%

       

    (1)    写出用到2表连接的查询要求, 并写出查询语句.

    SELECT 出版社.出版社编号,出版社名称,出版社地址
    FROM  出版社,图书
    WHERE 图书.出版社编号=出版社.出版社编号

     

     

    (2)    写出用到3表连接的查询要求, 并写出查询语句.

    SELECT *
    FROM  读者,图书,借阅
    WHERE 图书.图书编号=借阅.图书编号 AND 读者.证书编号=借阅.借书证编号

     

     

    (3)    写出用到GROUP BY的查询要求, 并写出查询语句.

    SELECT 图书.图书类型编号,书名
    FROM  图书,图书类型
    WHERE 图书.图书类型编号=图书类型.图书类型编号
    GROUP BY 图书.图书类型编号,书名

     

     

     

    (4)    写出用到IN 子查询的查询要求, 并写出查询语句.

    查询出版社地址在北京的图书

    SELECT 书名
    FROM 图书
    WHERE 出版社编号 IN
    (
    SELECT 出版社编号
    FROM 出版社
    WHERE 出版社地址='北京'
    )

     

     

    (5)    写出用到NOT IN 子查询的查询要求, 并写出查询语句.

    查询出版社地址不在北京的图书

    SELECT 书名
    FROM 图书
    WHERE 出版社编号 NOT IN
    (
    SELECT 出版社编号
    FROM 出版社
    WHERE 出版社地址='北京'
    )

     

     

    (6)    写出用到EXISTS子查询的查询要求, 并写出查询语句.

    SELECT 书名
    FROM 图书
    WHERE EXISTS
    (
    SELECT *
    FROM 出版社
    WHERE 图书.出版社编号=出版社.出版社编号 AND 出版社地址='北京'
    )

     

     

    (7)    写出用到NOT EXISTS子查询的查询要求, 并写出查询语句.

    SELECT 书名
    FROM 图书
    WHERE NOT EXISTS
    (
    SELECT *
    FROM 出版社
    WHERE 图书.出版社编号=出版社.出版社编号 AND 出版社地址='北京'
    )
     

     

     

    (8)对每个视图,写出查询语句

     

    1.入库单视图

    SELECT *
    FROM 入库单

     

     

    2.报损单视图

    SELECT *
    FROM 报损单

     

     

    3.读者未还借书视图

    SELECT *
    FROM 读者未还借书

     

     

    4.图书分类库存视图

    SELECT *
    FROM 图书分类库存

     

     

    4.借出次数前100图书视图

    SELECT *
    FROM 借出次数前100图书

     

     

     

    第7章 结论

    7.1 创新和特点

      数据库的概念设计,对E-R图的设计和简化;数据库的逻辑结构设计,建立起表结构;建立索引,索引表结构的设计;SQL建表,建立存储过程,建立触发器,数据插入后的测试。

    7.2 遇到的主要问题和解决方法

    在数据库概念设计中对各个实体性的确立和划分,这要从图书管理使用的实际出发,确定实体型和各个实体之间关系。

    E-R图向关系模式转换的过程中要明确好主码、外码等属性,建立好各个表之间的逻辑结构。

    7.3 进一步改进的设想

    该图书借阅管理系统还存在着许多问题,在逻辑结构设计的过程中一些表虽然减少了冗余,但在查询使用的过程中却存在着语句复杂,使用复杂的问题。同时用于实时检验和修改的触发器设计过于简陋,触发器数量太少,使得该系统不太成熟。

    7.4 课程设计体会

    通过对图书借阅管理系统的设计,一方面让我明白了数据库原理在图书管理上运用的流程,另一方面也让我初步了解了SQL-server 2017的开发工具的使用方法,熟悉了SQL建立数据库的一系列过程。在课程设计的过程中也遇到了一些问题,但是通过请教老师和同学讨论,解决了不少问题,对数据库系统原理也用了一个体系化的理解,收获很大。

    7.5 学习数据库系统原理后的体会

       数据库的使用和高级程序开发的关系密不可分,学好数据库系统原理对于进一步理解程序设计流程和软件开发应用有着很大作用,通过本学期数据库系统原理的学习,虽然现在还没有真正使用数据库和高级语言一起用于程序的开发,但对开发流程和其中用到的数据库原理已经有所理解了。

     

     

    转载于:https://www.cnblogs.com/wkfvawl/p/11052660.html

    展开全文
  • 数据库系统原理课程设计选题指导 课程设计
  • 数据库系统原理课程设计指南2008 同济
  • (2)通过课程设计,掌握数据库开发工具的使用以及综合编程调试的能力,结合数据库原理的基本理论,选用一种现代关系数据库系统,设计一个具体的信息管理系统,具备基本的数据库编程能力,为以后能进行数据库系统...
  • 数据库系统原理课程设计,Drug Inventory Management System,基于 SSM 框架的医院药品库存管理系统。 任务进度 本组成员任务分工 需求分析:全员 概念结构设计:全员 逻辑结构设计:全员 物理结构设计:全员 数据库...
  • 经过需求调研分析,该数据库系统主要包含以下信息。 1)商品信息:主要包括商品名称,商品编号,商品的销售价格,商品的进货价格,商品的类型和该商品的供应商等信息。 2)订单信息:主要包括订单编号,购买客户,...
  • 用Java语言模拟一个小型的数据库管理系统,使得这个系统能用规定的语法风格实现信息的增加、修改、删除和查询,并实现了索引的创建、维护和删除功能,在查询时对查询进行优化,提高查询速度;同时提供另外一些功能...
  • 4、教材管理系统设计 5、选修课程管理系统 6、报刊订阅管理系统 7、宾馆客房管理系统 8、学生学籍管理系统 9、汽车销售管理系统 10、企业人事管理系统 11、设备管理系统 12、银行储蓄系统 13、实验选课系统...
  • 数据库作为存取数据并对数据进行操作的工具在系统中所起到的作用至关重要。数据库设计是指对于一个给定...高效率的运行环境包括:数据库数据的存取速率、数据库存储空间的利用率、数据库系统运行管理的效率等都是高的。
  • 一、用高级程序设计语言创建数据库。具体包括: (1)实现SQL的建库语句,建立相应的数据库表,并填写数据字典。 (2)实现表模式的修改功能。 ① 能够为已建立的表添加属性。 ② 能够从已建立的表中删除属性。 ...
  • 对于数据库课设,我们所选择的开发工具是Microsoft office word 2003 +SQL server 2000 。它们的结合,是开发应用程序这项艰辛的工作就像堆积木那样简单方便。
  • 系统设计思想 固定资产管理系统主要完成对固定资产的管理。包括:新资产注册、旧资产注销、编辑现有资产,资产浏览,资产查询 。 2.2系统功能模块划分 根据功能分析,固定资产管理系统可以划分为四个模块:资产管理...
  • 2.2 设计数据库…………………………………………………………4 2.2.1 创建数据库…………………………………………………4 2.2.2 创建数据表…………………………………………………4 2.3主窗体设计………………...
  • 课 程 设 计 课程名称 数据库系统原理课程设计 题目名称 在线论坛系统 专业班级 2015 级计算机科学与技术 (对口)班 何志英 徐皖敏 韩兆青 学生姓名 王艳 许昌英 张蒙蒙 51502121057 51502121041 51502121007 学 号 ...
  • 数据库系统原理课程设计:超市订单管理系统

    千次阅读 多人点赞 2020-06-11 17:02:27
    一、数据库原理课程设计的任务 1)通过本课程设计的训练,使学生掌握数据库技术的实际应用以及数据库信息管理系统的设计方法与开发过程;初步掌握数据库需求分析方法,掌握概要设计、逻辑设计和物理设计的步骤和技巧...

    《数据库原理》课程设计:超市订单管理系统

    《数据库原理》课程设计任务书

    一、数据库原理课程设计的任务

    1)通过本课程设计的训练,使学生掌握数据库技术的实际应用以及数据库信息管理系统的设计方法与开发过程;初步掌握数据库需求分析方法,掌握概要设计、逻辑设计和物理设计的步骤和技巧,理解并掌握数据库系统的整个开发过程。

    2)通过课程设计,掌握数据库开发工具的使用以及综合编程调试的能力,结合数据库原理的基本理论,选用一种现代关系数据库系统,设计一个具体的信息管理系统,具备基本的数据库编程能力,为以后能进行数据库系统设计、开发与维护打下良好的基础。

    3)提升工程实践能力、团队协作精神、交流与沟通能力;

    4)通过规范化的实验报告,培养学生良好的文档习惯以及撰写规范文档的能力。

    二、课程设计的基本内容

    课设内容 结合一个具体任务(课程设计题目),完成一个基于C/S或B/S模式的数据库系统的设计,主要应包括如下内容: 1.完成课题任务的需求分析、完成系统总体结构设计方案(主控功能模块、数据处理模块、统计报表模块等); 2.数据库结构的设计与实现; 3.数据库安全的设计; 4. 数据修改的设计、数据查询的设计; 5.统计与报表输出的设计;
    目的与要求 目的:结合数据库原理的基本理论,选用一种现代关系数据库系统,设计一个具体的信息管理系统。 要求:受学生对于所学基础和专业知识的综合应用能力及程序设计与调试能力的不同,一周时间大体分为三个阶段:需求分析;数据库设计;应用程序设计。要求提交相关软件和规范的设计说明书电子文档。要求在设计过程中树立科学的设计思想,有全局观念,培养高度的协作精神。
    课设形式 1、2-3人一组 2、课内10学时,课内检查,其余为课外学时。
    课设考核 1、现场验收并对实验内容进行提问。 2、根据设计方案、实验结果、附加功能、操作熟练程度、现场检查和回答情况及课程设计报告质量综合评定成绩。

    备选题目:

    题目1:长途汽车信息管理系统

    题目2:机票预订信息系统

    题目3:酒店客房管理系统

    题目4:网上书店管理系统

    题目5:论坛管理信息系统

    题目6:职工考勤管理系统

    题目7:医院药品进销存系统

    题目8:4S店汽车销售信息系统

    题目9:4S店汽车保养信息系统

    题目10:网上花店信息系统

    题目11:宿舍信息管理系统

    题目12:教师信息管理系统

    题目不限于这些,同学们也可以自由选题;

    三、本课程设计的基本要求

    1、设计和调试过程要规范化

    需求分析:了解用户的数据需求、处理需求、安全性及完整性要求;
    概念设计:通过数据抽象,设计系统概念模型,一般为E-R模型;
    逻辑结构设计:设计系统的模式和外模式,对于关系模型主要是基本表和视图;
    物理结构设计:设计数据的存储结构和存取方法,如索引的设计;
    系统实施:组织数据入库、编制应用程序、试运行;
    运行维护:系统投入运行,长期的维护工作。

    2、 设计完成形式

    能够进行操作演示的自己设计的数据库及应用程序。

    课程设计报告一份。

    3、人员分组及分工

    建议以2–3人一小组,鼓励学生独立完成。

    4、设计说明书要求

    设计说明书应用统一纸张书写。内容包括设计任务书,所有论述、原始资料和数据、计算及结构表格等,编写顺序建议如下:

    1. 标题页

    2. 设计任务书

    3. 目录

    4. 需求分析

    5. 数据库设计

    6. 对本设计的简单评述、总结或体会

    7. 参考文献

    四、成绩评定

    课程成绩评定

    学生课程设计结束后写出总结报告,对设计的内容和效果进行总结,按照学生在设计期间的表现,指导老师对每位学生写出评语和鉴定,系课程设计领导小组组织答辩,最后确定每位学生课程设计成绩,课程设计成绩分为优、良、中、及格和不及格五个等级。

    课程设计成绩为平时表现30%、设计报告50%、答辩20%。

    1、评分标准

    优秀:目的明确,态度端正,模范遵守学校的各项纪律。工作认真,积极主动,吃苦耐劳,能出色的完成设计所有任务。撰写了高质量的总结报告。答辩准确流利。

    良好:目的明确,态度端正,能遵守学校的各项纪律,工作比较积极主动。能较好地完成设计主要任务,成绩较突出,表现良好;撰写了质量比较高的课程设计报告。答辩较准确流利。

    中等:目的明确,态度基本端正,能遵守学校的各项纪律,工作比较积极主动。能够完成设计主要任务,成绩中等,撰写了质量一般的课程设计报告。答辩较准确流利。

    及格:目的明确,态度基本端正,能遵守学校纪律,在督促下能开展工作并完成一定的设计任务,无大的违纪违规现象;撰写了课程设计报告。通过了答辩。

    不及格:实习态度不端正,不能遵守实习单位的纪律,不服从领导,自由散漫,工作消极被动,不能完成实习任务,旷课、无课程设计报告,没有通过答辩。

    2、成绩评定

    依据上述考核内容,最后采用优(>90分)、良(80~89分)、中(70~79分)及格(60~69分)、不及格(<60分)五级记分制评定学生课程设计成绩。

    课程设计:超市订单管理系统

    超市订单管理系统,是我在学习javaweb的时候,跟着狂神的视频做的。正好拿来做《数据库系统原理》这门课的课程设计。

    项目地址https://github.com/Guo-Li-Cheng/test
    跳转

    实验报告

    1.需求分析

    超市会在日常运作的过程中,会接到许多订单,同时这些订单往往来自不同的客户。

    超市也会从不同的供货商那里购买货物。

    这些订单,以及超市购买的货物,需要不同的人员来进行管理。

    超市的员工,也可以通过系统进行管理。

    如超市经理把普通员工添加进系统。

    2.系统功能设计

    根据需求,smbms(Supermarket bill management system)超市订单管理系统至少应该实现以下几大功能:

    • 实现登陆以及账号注销功能;
    • 实现管理员账号对普通账户的管理;
    • 实现所有账号对订单的管理;
    • 实现所有账号对供应商的管理;

    其中,不同的账号类型代表这个超市不同的职位。

    而“管理”也应该至少包括“增删改查”。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pPaZTfMw-1591864428749)(…/images/03.png)]

    3.数据库设计

    首先,我这里选择使用的是mysql数据库。

    新建一个库smbms(Supermarket bill management system)

    根据系统功能,库中需要五个表

    bill 用于存放订单信息

    provider 存放供应商信息

    address 存放供应商地址

    user 用于存放员工信息

    role 用于存放职位信息,跟user表结合可以确定每一个员工在系统中的权限

    每一个表以及表中的字段如下图

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pEVyCZkU-1591864428751)(…/images/04.png)]

    4.程序设计

    4.1使用的IDE(Integrated Development Environment 集成开发环境)

    IDEA 2019

    在这里插入图片描述

    4.2准备工作

    4.2.1新建带根项目的maven项目

    new一个project

    在这里插入图片描述

    选择maven项目

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在建好的根项目下new一个module

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    补全项目目录

    在这里插入图片描述

    注:为什么要使用maven

    因为maven能帮我们做到以下事情:

    ①添加第三方jar包

    在今天的JavaEE开发领域,有大量的第三方框架和工具可以供我们使用。要使用这些jar包最简单的方法就是复制粘贴到WEB-INF/lib目录下。但是这会导致每次创建一个新的工程就需要将jar包重复复制到lib目录下,从而造成工作区中存在大量重复的文件,让我们的工程显得很臃肿。而使用Maven后每个jar包本身只在本地仓库中保存一份,需要jar包的工程只需要以坐标的方式简单的引用一下就可以了。不仅极大的节约了存储空间,让项目更轻巧,更避免了重复文件太多而造成的混乱。

    ②解决jar包之间的依赖关系冲突的问题

    jar包往往不是孤立存在的,很多jar包都需要在其他jar包的支持下才能够正常工作,我们称之为jar包之间的依赖关系。最典型的例子是:commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar,如果没有IO包,FileUpload包就不能正常工作。相信很多开发着在没有使用Maven前,为解决这些包冲突而头痛。那么问题来了,你知道你所使用的所有jar包的依赖关系吗?当你拿到一个新的从未使用过的jar包,你如何得知他需要哪些jar包的支持呢?如果不了解这个情况,导入的jar包不够,那么现有的程序将不能正常工作。再进一步,当你的项目中需要用到上百个jar包时,你还会人为的,手工的逐一确认它们依赖的其他jar包吗?这简直是不可想象的。而引入Maven后,Maven就可以替我们自动的将当前jar包所依赖的其他所有jar包全部导入进来,无需人工参与,节约了我们大量的时间和精力。

    ③获取第三方jar包

    JavaEE开发中需要使用到的jar包种类繁多,几乎每个jar包在其本身的官网上的获取方式都不尽相同。为了查找一个jar包找遍互联网,身心俱疲,没有经历过的人或许体会不到这种折磨。不仅如此,费劲心血找的jar包里有的时候并没有你需要的那个类,又或者又同名的类没有你要的方法——以不规范的方式获取的jar包也往往是不规范的。使用Maven我们可以享受到一个完全统一规范的jar包管理体系。你只需要在你的项目中以坐标的方式依赖一个jar包,Maven就会自动从中央仓库进行下载,并同时下载这个jar包所依赖的其他jar包——规范、完整、准确!一次性解决所有问题!Tips:在这里我们顺便说一下,统一的规范几乎可以说成是程序员的最高信仰。如果没有统一的规范,就意味着每个具体的技术都各自为政,需要以诸多不同的特殊的方式加入到项目中;好不容易加入进来还会和其他技术格格不入,最终受苦的是我们。而任何一个领域的统一规范都能够极大的降低程序员的工作难度,减少工作量。例如:USB接口可以外接各种设备,如果每个设备都有自己独特的接口,那么不仅制造商需要维护各个接口的设计方案,使用者也需要详细了解每个设备对应的接口,无疑是非常繁琐的。

    ④将项目拆分成多个工程模块

    随着JavaEE项目的规模越来越庞大,开发团队的规模也与日俱增。一个项目上千人的团队持续开发很多年对于JavaEE项目来说再正常不过。那么我们想象一下:几百上千的人开发的项目是同一个Web工程。那么架构师、项目经理该如何划分项目的模块、如何分工呢?这么大的项目已经不可能通过package结构来划分模块,必须将项目拆分成多个工程协同开发。多个模块工程中有的是Java工程,有的是Web工程。

    4.2.2连接tomcat

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    4.3创建数据库及表和视图以及基础数据的录入

    4.3.1sql文件的编写

    为了程序的可复用性,我们使用.sql文件进行数据库的创建工作

    使用Notepad++进行.sql文件的编写

    在这里插入图片描述

    代码如下:

    CREATE DATABASE `smbms`;
    
    USE `smbms`;
    
    DROP TABLE IF EXISTS `smbms_address`;
    
    CREATE TABLE `smbms_address` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
      `contact` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '联系人姓名',
      `addressDesc` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '收货地址明细',
      `postCode` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '邮编',
      `tel` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '联系人电话',
      `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者',
      `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
      `modifyBy` bigint(20) DEFAULT NULL COMMENT '修改者',
      `modifyDate` datetime DEFAULT NULL COMMENT '修改时间',
      `userId` bigint(20) DEFAULT NULL COMMENT '用户ID',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    
    
    insert  into `smbms_address`(`id`,`contact`,`addressDesc`,`postCode`,`tel`,`createdBy`,`creationDate`,`modifyBy`,`modifyDate`,`userId`) values (1,'王丽','北京市东城区东交民巷44号','100010','13678789999',1,'2016-04-13 00:00:00',NULL,NULL,1),(2,'张红丽','北京市海淀区丹棱街3号','100000','18567672312',1,'2016-04-13 00:00:00',NULL,NULL,1),(3,'任志强','北京市东城区美术馆后街23号','100021','13387906742',1,'2016-04-13 00:00:00',NULL,NULL,1),(4,'曹颖','北京市朝阳区朝阳门南大街14号','100053','13568902323',1,'2016-04-13 00:00:00',NULL,NULL,2),(5,'李慧','北京市西城区三里河路南三巷3号','100032','18032356666',1,'2016-04-13 00:00:00',NULL,NULL,3),(6,'王国强','北京市顺义区高丽营镇金马工业区18号','100061','13787882222',1,'2016-04-13 00:00:00',NULL,NULL,3);
    
    
    DROP TABLE IF EXISTS `smbms_bill`;
    
    CREATE TABLE `smbms_bill` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
      `billCode` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '账单编码',
      `productName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '商品名称',
      `productDesc` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '商品描述',
      `productUnit` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '商品单位',
      `productCount` decimal(20,2) DEFAULT NULL COMMENT '商品数量',
      `totalPrice` decimal(20,2) DEFAULT NULL COMMENT '商品总额',
      `isPayment` int(10) DEFAULT NULL COMMENT '是否支付(1:未支付 2:已支付)',
      `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者(userId)',
      `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
      `modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者(userId)',
      `modifyDate` datetime DEFAULT NULL COMMENT '更新时间',
      `providerId` bigint(20) DEFAULT NULL COMMENT '供应商ID',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    
    
    insert  into `smbms_bill`(`id`,`billCode`,`productName`,`productDesc`,`productUnit`,`productCount`,`totalPrice`,`isPayment`,`createdBy`,`creationDate`,`modifyBy`,`modifyDate`,`providerId`) values (2,'BILL2016_002','香皂、肥皂、药皂','日用品-皂类','块','1000.00','10000.00',2,1,'2016-03-23 04:20:40',NULL,NULL,13),(3,'BILL2016_003','大豆油','食品-食用油','斤','300.00','5890.00',2,1,'2014-12-14 13:02:03',NULL,NULL,6),(4,'BILL2016_004','橄榄油','食品-进口食用油','斤','200.00','9800.00',2,1,'2013-10-10 03:12:13',NULL,NULL,7),(5,'BILL2016_005','洗洁精','日用品-厨房清洁','瓶','500.00','7000.00',2,1,'2014-12-14 13:02:03',NULL,NULL,9),(6,'BILL2016_006','美国大杏仁','食品-坚果','袋','300.00','5000.00',2,1,'2016-04-14 06:08:09',NULL,NULL,4),(7,'BILL2016_007','沐浴液、精油','日用品-沐浴类','瓶','500.00','23000.00',1,1,'2016-07-22 10:10:22',NULL,NULL,14),(8,'BILL2016_008','不锈钢盘碗','日用品-厨房用具','个','600.00','6000.00',2,1,'2016-04-14 05:12:13',NULL,NULL,14),(9,'BILL2016_009','塑料杯','日用品-杯子','个','350.00','1750.00',2,1,'2016-02-04 11:40:20',NULL,NULL,14),(10,'BILL2016_010','豆瓣酱','食品-调料','瓶','200.00','2000.00',2,1,'2013-10-29 05:07:03',NULL,NULL,8),(11,'BILL2016_011','海之蓝','饮料-国酒','瓶','50.00','10000.00',1,1,'2016-04-14 16:16:00',NULL,NULL,1),(12,'BILL2016_012','芝华士','饮料-洋酒','瓶','20.00','6000.00',1,1,'2016-09-09 17:00:00',NULL,NULL,1),(13,'BILL2016_013','长城红葡萄酒','饮料-红酒','瓶','60.00','800.00',2,1,'2016-11-14 15:23:00',NULL,NULL,1),(14,'BILL2016_014','泰国香米','食品-大米','斤','400.00','5000.00',2,1,'2016-10-09 15:20:00',NULL,NULL,3),(15,'BILL2016_015','东北大米','食品-大米','斤','600.00','4000.00',2,1,'2016-11-14 14:00:00',NULL,NULL,3),(16,'BILL2016_016','可口可乐','饮料','瓶','2000.00','6000.00',2,1,'2012-03-27 13:03:01',NULL,NULL,2),(17,'BILL2016_017','脉动','饮料','瓶','1500.00','4500.00',2,1,'2016-05-10 12:00:00',NULL,NULL,2),(18,'BILL2016_018','哇哈哈','饮料','瓶','2000.00','4000.00',2,1,'2015-11-24 15:12:03',NULL,NULL,2);
    
    DROP TABLE IF EXISTS `smbms_provider`;
    
    CREATE TABLE `smbms_provider` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
      `proCode` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商编码',
      `proName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商名称',
      `proDesc` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商详细描述',
      `proContact` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '供应商联系人',
      `proPhone` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '联系电话',
      `proAddress` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '地址',
      `proFax` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '传真',
      `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者(userId)',
      `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
      `modifyDate` datetime DEFAULT NULL COMMENT '更新时间',
      `modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者(userId)',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    
    
    insert  into `smbms_provider`(`id`,`proCode`,`proName`,`proDesc`,`proContact`,`proPhone`,`proAddress`,`proFax`,`createdBy`,`creationDate`,`modifyDate`,`modifyBy`) values (1,'BJ_GYS001','北京三木堂商贸有限公司','长期合作伙伴,主营产品:茅台、五粮液、郎酒、酒鬼酒、泸州老窖、赖茅酒、法国红酒等','张国强','13566667777','北京市丰台区育芳园北路','010-58858787',1,'2013-03-21 16:52:07',NULL,NULL),(2,'HB_GYS001','石家庄帅益食品贸易有限公司','长期合作伙伴,主营产品:饮料、水饮料、植物蛋白饮料、休闲食品、果汁饮料、功能饮料等','王军','13309094212','河北省石家庄新华区','0311-67738876',1,'2016-04-13 04:20:40',NULL,NULL),(3,'GZ_GYS001','深圳市泰香米业有限公司','初次合作伙伴,主营产品:良记金轮米,龙轮香米等','郑程瀚','13402013312','广东省深圳市福田区深南大道6006华丰大厦','0755-67776212',1,'2014-03-21 16:56:07',NULL,NULL),(4,'GZ_GYS002','深圳市喜来客商贸有限公司','长期合作伙伴,主营产品:坚果炒货.果脯蜜饯.天然花茶.营养豆豆.特色美食.进口食品.海味零食.肉脯肉','林妮','18599897645','广东省深圳市福龙工业区B2栋3楼西','0755-67772341',1,'2013-03-22 16:52:07',NULL,NULL),(5,'JS_GYS001','兴化佳美调味品厂','长期合作伙伴,主营产品:天然香辛料、鸡精、复合调味料','徐国洋','13754444221','江苏省兴化市林湖工业区','0523-21299098',1,'2015-11-22 16:52:07',NULL,NULL),(6,'BJ_GYS002','北京纳福尔食用油有限公司','长期合作伙伴,主营产品:山茶油、大豆油、花生油、橄榄油等','马莺','13422235678','北京市朝阳区珠江帝景1号楼','010-588634233',1,'2012-03-21 17:52:07',NULL,NULL),(7,'BJ_GYS003','北京国粮食用油有限公司','初次合作伙伴,主营产品:花生油、大豆油、小磨油等','王驰','13344441135','北京大兴青云店开发区','010-588134111',1,'2016-04-13 00:00:00',NULL,NULL),(8,'ZJ_GYS001','慈溪市广和绿色食品厂','长期合作伙伴,主营产品:豆瓣酱、黄豆酱、甜面酱,辣椒,大蒜等农产品','薛圣丹','18099953223','浙江省宁波市慈溪周巷小安村','0574-34449090',1,'2013-11-21 06:02:07',NULL,NULL),(9,'GX_GYS001','优百商贸有限公司','长期合作伙伴,主营产品:日化产品','李立国','13323566543','广西南宁市秀厢大道42-1号','0771-98861134',1,'2013-03-21 19:52:07',NULL,NULL),(10,'JS_GYS002','南京火头军信息技术有限公司','长期合作伙伴,主营产品:不锈钢厨具等','陈女士','13098992113','江苏省南京市浦口区浦口大道1号新城总部大厦A座903室','025-86223345',1,'2013-03-25 16:52:07',NULL,NULL),(11,'GZ_GYS003','广州市白云区美星五金制品厂','长期合作伙伴,主营产品:海绵床垫、坐垫、靠垫、海绵枕头、头枕等','梁天','13562276775','广州市白云区钟落潭镇福龙路20号','020-85542231',1,'2016-12-21 06:12:17',NULL,NULL),(12,'BJ_GYS004','北京隆盛日化科技','长期合作伙伴,主营产品:日化环保清洗剂,家居洗涤专卖、洗涤用品网、墙体除霉剂、墙面霉菌清除剂等','孙欣','13689865678','北京市大兴区旧宫','010-35576786',1,'2014-11-21 12:51:11',NULL,NULL),(13,'SD_GYS001','山东豪克华光联合发展有限公司','长期合作伙伴,主营产品:洗衣皂、洗衣粉、洗衣液、洗洁精、消杀类、香皂等','吴洪转','13245468787','山东济阳济北工业区仁和街21号','0531-53362445',1,'2015-01-28 10:52:07',NULL,NULL),(14,'JS_GYS003','无锡喜源坤商行','长期合作伙伴,主营产品:日化品批销','周一清','18567674532','江苏无锡盛岸西路','0510-32274422',1,'2016-04-23 11:11:11',NULL,NULL),(15,'ZJ_GYS002','乐摆日用品厂','长期合作伙伴,主营产品:各种中、高档塑料杯,塑料乐扣水杯(密封杯)、保鲜杯(保鲜盒)、广告杯、礼品杯','王世杰','13212331567','浙江省金华市义乌市义东路','0579-34452321',1,'2016-08-22 10:01:30',NULL,NULL);
    
    
    DROP TABLE IF EXISTS `smbms_role`;
    
    CREATE TABLE `smbms_role` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
      `roleCode` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '角色编码',
      `roleName` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '角色名称',
      `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者',
      `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
      `modifyBy` bigint(20) DEFAULT NULL COMMENT '修改者',
      `modifyDate` datetime DEFAULT NULL COMMENT '修改时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    
    
    insert  into `smbms_role`(`id`,`roleCode`,`roleName`,`createdBy`,`creationDate`,`modifyBy`,`modifyDate`) values (1,'SMBMS_ADMIN','系统管理员',1,'2016-04-13 00:00:00',NULL,NULL),(2,'SMBMS_MANAGER','经理',1,'2016-04-13 00:00:00',NULL,NULL),(3,'SMBMS_EMPLOYEE','普通员工',1,'2016-04-13 00:00:00',NULL,NULL);
    
    
    DROP TABLE IF EXISTS `smbms_user`;
    
    CREATE TABLE `smbms_user` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
      `userCode` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户编码',
      `userName` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户名称',
      `userPassword` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '用户密码',
      `gender` int(10) DEFAULT NULL COMMENT '性别(1:女、 2:男)',
      `birthday` date DEFAULT NULL COMMENT '出生日期',
      `phone` varchar(15) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '手机',
      `address` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '地址',
      `userRole` bigint(20) DEFAULT NULL COMMENT '用户角色(取自角色表-角色id)',
      `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者(userId)',
      `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
      `modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者(userId)',
      `modifyDate` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    
    insert  into `smbms_user`(`id`,`userCode`,`userName`,`userPassword`,`gender`,`birthday`,`phone`,`address`,`userRole`,`createdBy`,`creationDate`,`modifyBy`,`modifyDate`) values (1,'admin','系统管理员','1234567',1,'1983-10-10','13688889999','北京市海淀区成府路207号',1,1,'2013-03-21 16:52:07',NULL,NULL),(2,'liming','李明','0000000',2,'1983-12-10','13688884457','北京市东城区前门东大街9号',2,1,'2014-12-31 19:52:09',NULL,NULL),(5,'hanlubiao','韩路彪','0000000',2,'1984-06-05','18567542321','北京市朝阳区北辰中心12号',2,1,'2014-12-31 19:52:09',NULL,NULL),(6,'zhanghua','张华','0000000',1,'1983-06-15','13544561111','北京市海淀区学院路61号',3,1,'2013-02-11 10:51:17',NULL,NULL),(7,'wangyang','王洋','0000000',2,'1982-12-31','13444561124','北京市海淀区西二旗辉煌国际16层',3,1,'2014-06-11 19:09:07',NULL,NULL),(8,'zhaoyan','赵燕','0000000',1,'1986-03-07','18098764545','北京市海淀区回龙观小区10号楼',3,1,'2016-04-21 13:54:07',NULL,NULL),(10,'sunlei','孙磊','0000000',2,'1981-01-04','13387676765','北京市朝阳区管庄新月小区12楼',3,1,'2015-05-06 10:52:07',NULL,NULL),(11,'sunxing','孙兴','0000000',2,'1978-03-12','13367890900','北京市朝阳区建国门南大街10号',3,1,'2016-11-09 16:51:17',NULL,NULL),(12,'zhangchen','张晨','0000000',1,'1986-03-28','18098765434','朝阳区管庄路口北柏林爱乐三期13号楼',3,1,'2016-08-09 05:52:37',1,'2016-04-14 14:15:36'),(13,'dengchao','邓超','0000000',2,'1981-11-04','13689674534','北京市海淀区北航家属院10号楼',3,1,'2016-07-11 08:02:47',NULL,NULL),(14,'yangguo','杨过','0000000',2,'1980-01-01','13388886623','北京市朝阳区北苑家园茉莉园20号楼',3,1,'2015-02-01 03:52:07',NULL,NULL),(15,'zhaomin','赵敏','0000000',1,'1987-12-04','18099897657','北京市昌平区天通苑3区12号楼',2,1,'2015-09-12 12:02:12',NULL,NULL);
    
    4.3.2执行.sql文件,完成数据库的创建以及基础数据的录入

    在这里插入图片描述

    4.3.3查看数据库是否创建成功

    查看数据库以及表

    在这里插入图片描述

    如上图,数据库以及表都被成功创建;

    查询表中记录

    在这里插入图片描述

    如图,表中没有记录。

    仔细观察sql文件的执行情况,可以发现是有大量报错的

    在这里插入图片描述

    百度报错提示,找到错误原因以及解决方案:
    MySQL插入中文时出现ERROR 1406 (22001): Data too long for column ‘name’ at row 1
    使用命令行方式登陆到MySQL服务器, 建立一个数据库,数据库编码设为UTF-8。此时,如果直接在命令行窗口使用insert语句插入中文,就遇到类似 ERROR 1406 (22001): Data too long for column ‘name’ at row 1 错误。乍一看,是字段长度引起的问题,但是实际是字符编码的问题。可是尝试以下解决方法:
    1、在Linux中,使用终端方式登陆MySQL服务器,运行以下命令:
    set names utf8;
    该命令将终端的字符编码设为了UTF-8。此后再插入数据库中的内容都会按照UTF-8的编码来处理。
    注意:在Linux中,终端方式中直接插入中文内容,可能并不会出现1406错误,但是这时插入的数据是按照系统的默认编码进行处理。因此对编码为UTF-8的数据库,在显示数据的地方可能会出现乱码。
    2、在Windows下,命令行窗口不支持UTF-8编码,所以使用“set names utf8;”不会达到转化中文的效果。但是这个问题还是可以解决的:
    (1)使用默认编码建立数据库。这种情况下就可以直接输入中文了,但是相应的问题,就是会失去UTF-8编码的灵活性。特别是不利于软件的国际化。
    (2)放弃命令行窗口登录MySQL,使用图形化客户端。客户端工具可以MySQL的官方网站上找到。

    4.4使用数据库可视化工具进行数据库的创建和基础数据的录入

    4.4.1SQLyog的下载和安装

    SQLyog官网地址https://sqlyog.en.softonic.com/
    跳转

    这里我选择了中文破解版

    1、下载好压缩包,将文件解压,双击运行主应用程序,弹出语言选择框,选择“Chinese(Simplified)”简体中文语言种类,点击“ok”开始安装;
    在这里插入图片描述
    2、弹出软件安装向导,默认点击“下一步”进行安装,在许可证协议窗口中选择“我接受协议”同意软件许可证协议,协议内容自行决定是否浏览;
    在这里插入图片描述
    3、自定义软件安装位置,默认安装路径为“C:\Program Files\SQLyog”,点击“安装”按钮继续安装;
    在这里插入图片描述
    4、等待安装进度完成,点击“完成”结束安装;
    在这里插入图片描述

    破解教程

    1、安装完成后运行软件,启动时选择“简体中文”语言种类启动软件;
    在这里插入图片描述
    2、选择完成后弹出注册窗口,我们将软件的注册码:
    名称:ddooo;
    证书秘钥:8d8120df-a5c3-4989-8f47-5afc79c56e7c;
    逐一填到软件的注册框内,点击“注册”按钮,软件会自动检测注册信息;
    在这里插入图片描述
    3、当出现下图软件注册成功的提示时,软件成功注册激活;
    在这里插入图片描述

    4.4.2SQLyog连接mysql

    在这里插入图片描述

    4.4.3使用SQLyog执行sql文件完成数据库的创建以及基础数据的录入

    在这里插入图片描述

    在这里插入图片描述
    执行成功!

    4.4.4查看数据库是否创建成功

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    库创建成功!

    基础数据录入成功!

    4.5idea连接mysql

    为了更方便的进行代码的编写,使用idea连接mysq,直接在idea中进行数据库的查看。

    idea连接mysql:

    https://blog.csdn.net/weixin_43906149/article/details/106593080
    跳转

    4.6系统模块设计

    系统应该包括以下几个模块:

    • 登陆
    • 修改密码
    • 用户管理
    • 订单管理
    • 供应商管理

    4.7登陆,注册模块

    流程示意图:

    登陆:

    在这里插入图片描述

    4.8用户管理模块

    在这里插入图片描述

    4.9订单管理模块

    在这里插入图片描述

    4.10用户管理模块

    在这里插入图片描述

    5.系统实现

    5.1目录结构

    在这里插入图片描述

    5.2Dao层

    Dao层又叫数据访问层

    Dao : Date Access Object

    通常用于操作数据库

    在MVC结构的编程中访问数据库的层,用来操作数据库。

    dao 层定义方法接口,然后在service层和serviceimpl层实现接口方法,从而达到操作数据库的目的。

    在这里插入图片描述

    5.3pojo层

    什么是POJO

    按照Martin Fowler的解释是“Plain Old Java Object”,从字面上翻译为“纯洁老式的java对象”,但大家都使用“简单java对象”来称呼它。POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。

    在这里插入图片描述

    5.4service层

    service层:

    service层叫服务层,被称为服务,肯定是相比之下比较高层次的一层结构,相当于将几种操作封装起来。

    5.5部分代码

    pojo.bill.java

    package xin.pojo;
    
    import java.math.BigDecimal;
    import java.util.Date;
    
    public class Bill {
    	private Integer id;   //id 
    	private String billCode; //账单编码 
    	private String productName; //商品名称 
    	private String productDesc; //商品描述 
    	private String productUnit; //商品单位
    	private BigDecimal productCount; //商品数量 
    	private BigDecimal totalPrice; //总金额
    	private Integer isPayment; //是否支付 
    	private Integer providerId; //供应商ID 
    	private Integer createdBy; //创建者
    	private Date creationDate; //创建时间
    	private Integer modifyBy; //更新者
    	private Date modifyDate;//更新时间
    	
    	private String providerName;//供应商名称
    	
    	
    	public String getProviderName() {
    		return providerName;
    	}
    	public void setProviderName(String providerName) {
    		this.providerName = providerName;
    	}
    	public Integer getId() {
    		return id;
    	}
    	public void setId(Integer id) {
    		this.id = id;
    	}
    	public String getBillCode() {
    		return billCode;
    	}
    	public void setBillCode(String billCode) {
    		this.billCode = billCode;
    	}
    	public String getProductName() {
    		return productName;
    	}
    	public void setProductName(String productName) {
    		this.productName = productName;
    	}
    	public String getProductDesc() {
    		return productDesc;
    	}
    	public void setProductDesc(String productDesc) {
    		this.productDesc = productDesc;
    	}
    	public String getProductUnit() {
    		return productUnit;
    	}
    	public void setProductUnit(String productUnit) {
    		this.productUnit = productUnit;
    	}
    	public BigDecimal getProductCount() {
    		return productCount;
    	}
    	public void setProductCount(BigDecimal productCount) {
    		this.productCount = productCount;
    	}
    	public BigDecimal getTotalPrice() {
    		return totalPrice;
    	}
    	public void setTotalPrice(BigDecimal totalPrice) {
    		this.totalPrice = totalPrice;
    	}
    	public Integer getIsPayment() {
    		return isPayment;
    	}
    	public void setIsPayment(Integer isPayment) {
    		this.isPayment = isPayment;
    	}
    	
    	public Integer getProviderId() {
    		return providerId;
    	}
    	public void setProviderId(Integer providerId) {
    		this.providerId = providerId;
    	}
    	public Integer getCreatedBy() {
    		return createdBy;
    	}
    	public void setCreatedBy(Integer createdBy) {
    		this.createdBy = createdBy;
    	}
    	public Date getCreationDate() {
    		return creationDate;
    	}
    	public void setCreationDate(Date creationDate) {
    		this.creationDate = creationDate;
    	}
    	public Integer getModifyBy() {
    		return modifyBy;
    	}
    	public void setModifyBy(Integer modifyBy) {
    		this.modifyBy = modifyBy;
    	}
    	public Date getModifyDate() {
    		return modifyDate;
    	}
    	public void setModifyDate(Date modifyDate) {
    		this.modifyDate = modifyDate;
    	}
    	
    	
    }
    

    dao.bill.BillDao.java

    package xin.dao.bill;
    
    import java.sql.Connection;
    import java.util.List;
    
    import xin.pojo.Bill;
    
    public interface BillDao {
    	/**
    	 * 增加订单
    	 * @param connection
    	 * @param bill
    	 * @return
    	 * @throws Exception
    	 */
    	public int add(Connection connection, Bill bill)throws Exception;
    
    
    	/**
    	 * 通过查询条件获取供应商列表-模糊查询-getBillList
    	 * @param connection
    	 * @param bill
    	 * @return
    	 * @throws Exception
    	 */
    	public List<Bill> getBillList(Connection connection, Bill bill)throws Exception;
    	
    	/**
    	 * 通过delId删除Bill
    	 * @param connection
    	 * @param delId
    	 * @return
    	 * @throws Exception
    	 */
    	public int deleteBillById(Connection connection, String delId)throws Exception;
    	
    	
    	/**
    	 * 通过billId获取Bill
    	 * @param connection
    	 * @param id
    	 * @return
    	 * @throws Exception
    	 */
    	public Bill getBillById(Connection connection, String id)throws Exception;
    	
    	/**
    	 * 修改订单信息
    	 * @param connection
    	 * @param bill
    	 * @return
    	 * @throws Exception
    	 */
    	public int modify(Connection connection, Bill bill)throws Exception;
    
    	/**
    	 * 根据供应商ID查询订单数量
    	 * @param connection
    	 * @param providerId
    	 * @return
    	 * @throws Exception
    	 */
    	public int getBillCountByProviderId(Connection connection, String providerId)throws Exception;
    
    }
    

    filter.CharacterEncoding.java

    package xin.filter;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class CharacterEncoding implements Filter {
    
    	@Override
    	public void init(FilterConfig filterConfig) throws ServletException {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	public void doFilter(ServletRequest request, ServletResponse response,
    			FilterChain chain) throws IOException, ServletException {
    		// TODO Auto-generated method stub
    		request.setCharacterEncoding("UTF-8");
    		response.setCharacterEncoding("UTF-8");
    		chain.doFilter(request, response);
    	}
    
    	@Override
    	public void destroy() {
    		// TODO Auto-generated method stub
    
    	}
    
    }
    

    5.6项目地址

    https://github.com/Guo-Li-Cheng/test
    跳转

    6系统的测试

    run

    进入登陆界面

    在这里插入图片描述

    输入账号密码,点击登陆按钮

    在这里插入图片描述

    进入欢迎界面

    在这里插入图片描述

    点击左侧功能按钮,如订单管理

    进入订单管理界面

    在这里插入图片描述

    点击用户管理,进入用户管理界面

    在这里插入图片描述

    点击添加用户按钮,进行用户的添加操作

    在这里插入图片描述

    在这里插入图片描述

    返回查看用户是否添加成功

    在用户管理界面已经能看到刚添加的用户信息

    在这里插入图片描述

    进行用户的删除操作

    在这里插入图片描述
    在这里插入图片描述

    可以看到用户管理界面已经没有邓超的信息

    在这里插入图片描述

    当然,系统还有很多功能和操作,这里就不一一测试。

    展开全文
  • 数据库系统原理课程设计
  • 数据库系统原理课程设计报告 关键字:图书借阅;人员管理;图书维护;
  • 数据库系统原理课程设计是数据库系统原理实践环节的及为重要的一部分.其目的是: (1)培养学生能够应用数据库系统原理在需求分析的基础上对系统进行概念设计,学会设计局部ER,全局ER图. (2)培养学生能够应用数据库系统...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,166
精华内容 466
关键字:

数据库系统原理课程设计