进销存管理系统的设计(设计中)

任务分配:

任务

小组成员

1.

系统分析

2.1

概念结构设计

2.2

逻辑结构设计

2.3

物理结构设计

3

数据库系统实现

4

GUI界面的实现

5答辩PPT

、答辩

韦絮、熊思雨

50%

50%

20%

80%

80%

20%

80%

匡芬、张益宁

50%

50%

80%

20%

20%

80%

20%

1 系统分析

1.1 项目背景

        随着计算机技术的迅猛发展和互联网时代的全面到来,人类已经迈入了信息时代,甚至是数字化时代。传统的进销存管理方式依赖人工操作,这不仅导致信息传递效率低下,还容易在中间环节出现问题,甚至因人为决策失误而影响企业运营。面对竞争日益激烈的市场环境,企业迫切需要一种高效、精准的管理工具来优化内部流程。

        现代化的进销存管理系统应运而生,通过互联网技术,企业能够实时将各种业务信息传递给管理者,使他们能够及时发现并解决问题。这样的系统不仅能显著提高信息传递的速度和准确性,还能帮助企业全面掌握市场动态和商机,从而在竞争中占据优势。通过优化库存管理、简化进销流程、提高数据透明度和决策准确性,现代进销存管理系统为企业提升运营效率和竞争力提供了坚实的技术保障。

1.2 需求分析

功能需求:

系统应实现以下主要功能:

对管理员:

1.添加和删除用户

2.修改管理员和操作员的权限

3.拥有与以下操作员一样的功能。

对操作员:

1.进货单管理:可以通过指定日期查看进货商品的信息,同时可以添加和删除进货商品信息。

2.出货单管理:可以通过指定日期查看出货商品的信息,同时可以添加和删除出货商品信息。

3.仓库管理:可以查看和修改仓库的商品信息等操作。

4.商品管理:可以添加查询修改删除商品。

5.供应商管理:可以添加查询修改删除与我们合作的供应商。

性能需求:

为了保证进销存管理系统的正常运行,系统性能设计应满足以下要求:

1.数据安全性:由于系统通过互联网提供服务,在开放的环境中,系统在权限控制、数据安全、防范内外部攻击等方面应具有良好的应变能力。例如,在每个登录界面设置用户信息验证,通过验证输入的信息是否为数据库中的合法用户来实现相应操作。

2.数据一致性:确保数据库中的所有信息在任何操作下都能够保持一致。例如,当在仓库管理页面将商品添加到出货单或上架到商场时,出货单管理页面和商场页面应正确显示商品更新后的信息。

数据流图:

进销存管理系统数据流图有4个加工模块,即注册模块、删除模块、进货模块、出货模块。

2.系统设计

2.1进销存管理系统的概念结构设计

2.1.1实体(从需求分析中提取出的实体,以及实体的属性)

分析之后可以设计出能够满足用户需求的各种实体以及他们之间的关系,为下一节的逻辑结构设计打下基础。这些实体包括各种信息,通过相互之间的作用形成数据的流动。本系统数据库的各实体信息如下所示:

用户(用户的姓名、用户名、密码、权限)

商品(商品ID、名称、简称、产地、单位、规格、包装、批号、批准文号、备注、供应商名称)

供应商(供应商ID、名称、简称、地址、邮政编码、电话、传真、联系人、联系电话、邮箱、银行账号)

进货单(入库单ID、品种数、金额、验收结论、供应商名称、入库日期、操作员、经手人、结算方式)

出货单(出库单ID、品种数、金额、验收结论、销售日期、操作员、经手人、结算方式)

仓库(库存的ID、商品名称、简称、产地、规格、包装、单位、单价、库存数量)

2.1.2局部ER图(子系统)

2.1.3全局ER图

2.2进销存管理系统的逻辑结构设计

2.2.1关系模型的设计

实体:

用户(用户名、用户名、密码、权限)

主键:用户名

商品(商品ID、名称、简称、产地、单位、规格、包装、批号、批准文号、备注、供应商名称)

主键:商品ID

供应商(供应商ID、名称、简称、地址、邮政编码、电话、传真、联系人、联系电话、邮箱、银行账号)

主键:供应商ID

进货单(入库单ID、品种数、金额、验收结论、供应商名称、入库日期、操作员、经手人、结算方式)

主键:入库单ID

出货单(出库单ID、品种数、金额、验收结论、销售日期、操作员、经手人、结算方式)

主键:出库单ID

仓库(库存ID、商品名称、简称、产地、规格、包装、单位、单价、库存数量)

主键:库存ID

联系:

进货(入库ID、商品ID、单价、数量)

主键:(入库ID,商品ID)

外键:入库ID、商品ID

出货(出库ID,商品ID,单价,数量)

主键:(出库ID,商品ID)

外键:出库ID、商品ID

2.2.2关系模型优化(BCNF)

用户(用户名、用户名、密码、权限)

商品(商品ID、名称、简称、产地、单位、规格、包装、批号、批准文号、备注、供应商名称)

供应商(供应商ID、名称、简称、地址、邮政编码、电话、传真、联系人、联系电话、邮箱、银行账号)

进货单(入库单ID、品种数、金额、验收结论、供应商名称、入库日期、操作员、经手人、结算方式)

出货单(出库单ID、品种数、金额、验收结论、销售日期、操作员、经手人、结算方式)

仓库(库存ID、商品名称、简称、产地、规格、包装、单位、单价、库存数量)

进货(入库ID、商品ID、单价、数量)

出货(出库ID,商品ID,单价,数量)

2.2.3视图设计

外模式(用户模式)的设计,为了向用户提供友好的用户界面,需要设计一些视图。首先需要确定有哪些用户?需要设计哪些子模式?也可用于方便查询,并且请同时考虑到安全

1.商品基本信息视图

2.进货单基本信息视图

3.出货单基本信息视图

4.仓库基本信息视图

5.用户基本信息视图

6.供应商基本信息视图

2.3进销存管理系统物理结构设计

2.3.1数据库表结构的设计

物理结构设计的目的是为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构。进销存管理系统数据库中各个表结构设计结果见表。每个表表示在数据库中的一张表。

用户表:

字段名

数据类型

长度

是否空

备注

用户编号

VARCHAR

25

NOTNULL

主键

用户名称

VARCHAR

50

NOTNULL

密码

VARCHAR

25

NOTNULL

权限

VARCHAR

20

真实姓名

VARCHAR

50

性别

CHAR

2

年龄

INT

电话

INT

地址

VARCHAR

255

职位

VARCHAR

50

商品表:

字段名

数据类型

长度

是否空

备注

商品编号

VARCHAR

25

NOTNULL

主键

商品名称

VARCHAR

100

NOTNULL

单价

FLOAT

NOTNULL

保质期

INT

生产日期

DATE

进货商表:

字段名

数据类型

长度

是否空

备注

进货商编号

VARCHAR

25

NOTNULL

主键

进货商名称

VARCHAR

100

NOTNULL

电话

INT

商品类别

VARCHAR

255

进货单表:

字段名

数据类型

长度

是否空

备注

订单编号

INT

NOTNULL

主键

商品编号

VARCHAR

25

外码

数量

INT

总价

FLOAT

用户编号

VARCHAR

25

外码

出货单表:

字段名

数据类型

长度

是否空

备注

订单编号

INT

NOTNULL

主键

商品编号

VARCHAR

25

外码

数量

INT

总价

FLOAT

出货日期

DATE

仓库表:

字段名

数据类型

长度

是否空

备注

商品编号

VARCHAR

25

NOTNULL

主键

商品类别

VARCHAR

255

库存数量

INT

入库日期

DATE

进货表:

字段名

数据类型

长度

是否空

备注

订单编号

VARCHAR

25

外码

进货商编号

VARCHAR

25

外码

进货日期

DATA

2.3.2数据库表之间的关系图

2.3.3索引的建立

1.在 tb_userlist 表的 username 列上创建索引

2.在 tb_spinfo 表的 spname 列上创建索引

3.在 tb_gysinfo 表的 name 列上创建索引

4.在 tb_ruku_main 表的 rkid 列上创建索引

5.在 tb_sell_main 表的 xsdate 列上创建索引

6.在 tb_kucun 表的 id 列上创建索引

3.进销存管理系统的数据库实现:

3.1数据库及表的建立

-- 创建数据库

create database db_jxc;

-- 使用该数据库

use db_jxc;

-- 创建用户表

DROP TABLE IF EXISTS `tb_userlist`;
CREATE TABLE `tb_userlist` (
  `name` varchar(64) NOT NULL,
  `username` varchar(64) NOT NULL,
  `pass` varchar(32) DEFAULT NULL,
  `quan` char(1) DEFAULT NULL,
  PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 创建商品表

DROP TABLE IF EXISTS `tb_spinfo`;
CREATE TABLE `tb_spinfo` (
  `id` varchar(11) NOT NULL,
  `spname` varchar(64) DEFAULT NULL,
  `jc` varchar(64) DEFAULT NULL,
  `cd` varchar(128) DEFAULT NULL,
  `dw` varchar(128) DEFAULT NULL,
  `gg` varchar(128) DEFAULT NULL,
  `bz` varchar(128) DEFAULT NULL,
  `ph` varchar(128) DEFAULT NULL,
  `pzwh` varchar(128) DEFAULT NULL,
  `memo` varchar(128) DEFAULT NULL,
  `gysName` varchar(128) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 创建供应商表

DROP TABLE IF EXISTS `tb_gysinfo`;
CREATE TABLE `tb_gysinfo` (
  `id` varchar(11) NOT NULL,
  `name` varchar(32) DEFAULT NULL,
  `jc` varchar(32) DEFAULT NULL,
  `address` varchar(128) DEFAULT NULL,
  `bianma` varchar(128) DEFAULT NULL,
  `tel` varchar(128) DEFAULT NULL,
  `fax` varchar(128) DEFAULT NULL,
  `lian` varchar(128) DEFAULT NULL,
  `ltel` varchar(128) DEFAULT NULL,
  `mail` varchar(128) DEFAULT NULL,
   `yh` varchar(128) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 创建进货单表

DROP TABLE IF EXISTS `tb_ruku_main`;
CREATE TABLE `tb_ruku_main` (
  `rkid` varchar(32) NOT NULL,
  `pzs` varchar(64) DEFAULT NULL,
  `je` varchar(64) DEFAULT NULL,
  `ysjl` varchar(128) DEFAULT NULL,
  `gysname` varchar(128) DEFAULT NULL,
  `rkdate` varchar(128) DEFAULT NULL,
  `czy` varchar(128) DEFAULT NULL,
  `jsr` varchar(18) DEFAULT NULL,
  `jsfs` varchar(18) DEFAULT NULL,
  PRIMARY KEY (`rkid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 创建出货单表

DROP TABLE IF EXISTS `tb_sell_main`;
CREATE TABLE `tb_sell_main` (
  `sellID` varchar(32) NOT NULL,
  `pzs` varchar(64) DEFAULT NULL,
  `je` varchar(64) DEFAULT NULL,
  `ysjl` varchar(128) DEFAULT NULL,
 
  `xsdate` varchar(128) DEFAULT NULL,
  `czy` varchar(128) DEFAULT NULL,
  `jsr` varchar(18) DEFAULT NULL,
  `jsfs` varchar(18) DEFAULT NULL,
  PRIMARY KEY (`sellID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 创建仓库表

DROP TABLE IF EXISTS `tb_kucun`;
CREATE TABLE `tb_kucun` (
  `id` varchar(32) NOT NULL,
  `spname` varchar(64) DEFAULT NULL,
  `jc` varchar(64) DEFAULT NULL,
  `cd` varchar(128) DEFAULT NULL,
  `gg` varchar(128) DEFAULT NULL,
  `bz` varchar(128) DEFAULT NULL,
  `dw` varchar(128) DEFAULT NULL,
  `dj` double DEFAULT NULL,
  `kcsl` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 创建进货表

DROP TABLE IF EXISTS `tb_ruku_detail`;
CREATE TABLE `tb_ruku_detail` (
  `id` varchar(32) NOT NULL,
  `tb_spinfo` varchar(64) DEFAULT NULL,
  `dj` double DEFAULT NULL,
  `sl` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 创建出货表

DROP TABLE IF EXISTS `tb_sell_detail`;
CREATE TABLE `tb_sell_detail` (
  `id` varchar(32) NOT NULL,
  `spid` varchar(64) DEFAULT NULL,
  `dj` double DEFAULT NULL,
  `sl` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.2索引的创建

1.在 tb_userlist 表的 username 列上创建索引

CREATE INDEX idx_username ON Users(username);

2.在 tb_spinfo 表的 spname 列上创建索引

CREATE INDEX idx_product_name ON tb_spinfo (spname);

3.在 tb_gysinfo 表的 name 列上创建索引

CREATE INDEX idx_supplier_name ON tb_gysinfo(name);

4.在 tb_ruku_main 表的 rkid 列上创建索引

CREATE INDEX idx_order_id ON tb_ruku_main(rkid);

5.在 tb_sell_main 表的 xsdate 列上创建索引

CREATE INDEX idx_shipment_date ON tb_sell_main(xsdate);

6.在 tb_kucun 表的 id 列上创建索引

CREATE INDEX idx_storage_date ON tb_kucun(id);

3.3视图的创建

1. 商品基本信息视图

该视图可以用于显示和查询商品的基本属性,有助于库存管理和销售分析。

CREATE VIEW 商品基本信息视图 AS
SELECT 
    id AS 商品ID,
    spname AS 名称,
    jc AS 简称,
    cd AS 产地,
    dw AS 单位,
    gg AS 规格,
    bz AS 包装,
    ph AS 批号,
    pzwh AS 批准文号,
    memo AS 备注,
    gysName AS 供应商名称
FROM tb_spinfo;

2.进货单基本信息视图

该视图可以用于跟踪和管理进货订单,便于审计和库存补充。

CREATE VIEW 进货单基本信息视图 AS
SELECT 
    rkid AS 入库单ID,
    pzs AS 品种数,
    je AS 金额,
    ysjl AS 验收结论,
    gysname AS 供应商名称,
    rkdate AS 入库日期,
    czy AS 操作员,
    jsr AS 经手人,
    jsfs AS 结算方式
FROM tb_ruku_main;

3.出货单基本信息视图

该视图可以用于跟踪和管理销售订单,有助于销售分析和客户服务。

CREATE VIEW 出货单基本信息视图 AS
SELECT 
    sellID AS 出库单ID,
    pzs AS 品种数,
    je AS 金额,
    ysjl AS 验收结论,
    xsdate AS 销售日期,
    czy AS 操作员,
    jsr AS 经手人,
    jsfs AS 结算方式
FROM tb_sell_main;

4.仓库基本信息视图

该视图有助于库存管理,确保库存水平合理,并提供库存状况的实时视图。

CREATE VIEW 仓库基本信息视图 AS
SELECT 
    id AS 库存ID,
    spname AS 商品名称,
    jc AS 简称,
    cd AS 产地,
    gg AS 规格,
    bz AS 包装,
    dw AS 单位,
    dj AS 单价,
    kcsl AS 库存数量
FROM tb_kucun;

5.用户基本信息视图

该视图可以用于用户管理和权限控制,方便进行用户查询和信息更新。

CREATE VIEW 用户基本信息视图 AS
SELECT 
    name AS 姓名,
    username AS 用户名,
    pass AS 密码,
    quan AS 权限
FROM tb_userlist;

6.供应商基本信息视图

该视图有助于管理供应商关系,便于采购流程和供应链管理。

CREATE VIEW 供应商基本信息视图 AS
SELECT 
    id AS 供应商ID,
    name AS 名称,
    jc AS 简称,
    address AS 地址,
    bianma AS 邮政编码,
    tel AS 电话,
    fax AS 传真,
    lian AS 联系人,
    ltel AS 联系电话,
    mail AS 邮箱,
    yh AS 银行账号
FROM tb_gysinfo;

3.4安全性设计与功能实现

3.4.1创建触发器

触发器是一种自动执行的程序,在特定的数据库操作(如 INSERTUPDATEDELETE)之前或之后触发。

该触发器在进货单表中插入新记录后触发,用于更新仓库的库存数量:

  1. 首先检查对应商品编号的当前库存数量。
  2. 如果该产品尚未在仓库表中存在,则插入一条新的记录。
  3. 如果该产品已存在,则更新库存数量。
DELIMITER //
CREATE TRIGGER update_stock_after_sale
AFTER INSERT ON tb_ruku_main
FOR EACH ROW
BEGIN
    UPDATE tb_kucun SET stock_quantity = stock_quantity - NEW.quantity WHERE spid = NEW.spid;
END//
DELIMITER ;

该触发器在出货表中插入新记录后触发,用于更新仓库的库存数量:

  1. 直接更新仓库中的库存数量,减少对应产品的数量。
DELIMITER //
CREATE TRIGGER update_stock_after_sale
AFTER INSERT ON tb_sell_main
FOR EACH ROW
BEGIN
    UPDATE tb_kucun SET stock_quantity = stock_quantity - NEW.quantity WHERE spid = NEW.spid;
END//
DELIMITER ;

3.4.2创建存储过程

存储过程会检查当前用户的权限,只有权限为'a'的用户才可以执行添加用户删除用户更新用户权限等操作。

下面是存储过程的实现:

-- 添加用户的存储过程
DELIMITER //
CREATE PROCEDURE sp_add_user(
    IN curr_username VARCHAR(64),
    IN new_name VARCHAR(64),
    IN new_username VARCHAR(64),
    IN new_pass VARCHAR(32),
    IN new_quan CHAR(1)
)
BEGIN
    DECLARE curr_quan CHAR(1);
    
    -- 获取当前用户的权限
    SELECT quan INTO curr_quan
    FROM tb_userlist
    WHERE username = curr_username;
    
    -- 只有权限为'a'的用户可以添加新用户
    IF curr_quan = 'a' THEN
        INSERT INTO tb_userlist (name, username, pass, quan) 
        VALUES (new_name, new_username, new_pass, new_quan);
    ELSE
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '无权限添加用户';
    END IF;
END//
DELIMITER ;

-- 删除用户的存储过程
DELIMITER //
CREATE PROCEDURE sp_delete_user(
    IN curr_username VARCHAR(64),
    IN del_username VARCHAR(64)
)
BEGIN
    DECLARE curr_quan CHAR(1);
    
    -- 获取当前用户的权限
    SELECT quan INTO curr_quan
    FROM tb_userlist
    WHERE username = curr_username;
    
    -- 只有权限为'a'的用户可以删除用户
    IF curr_quan = 'a' THEN
        DELETE FROM tb_userlist 
        WHERE username = del_username;
    ELSE
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '无权限删除用户';
    END IF;
END//
DELIMITER ;

-- 更新用户权限的存储过程
DELIMITER //
CREATE PROCEDURE sp_update_permission(
    IN curr_username VARCHAR(64),
    IN upd_username VARCHAR(64),
    IN new_quan CHAR(1)
)
BEGIN
    DECLARE curr_quan CHAR(1);
    
    -- 获取当前用户的权限
    SELECT quan INTO curr_quan
    FROM tb_userlist
    WHERE username = curr_username;
    
    -- 只有权限为'a'的用户可以更新权限
    IF curr_quan = 'a' THEN
        UPDATE tb_userlist 
        SET quan = new_quan 
        WHERE username = upd_username;
    ELSE
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '无权限更新用户权限';
    END IF;
END//
DELIMITER ;

调用

//添加用户
CALL sp_add_user('admin_user', 'New User', 'new_user', 'password123', 'b');
//删除用户
CALL sp_delete_user('admin', 'john_doe');
//更新用户权限
CALL sp_update_permission('admin', 'jane_doe', 'b');

通过这些存储过程,数据库系统能够确保只有具有最高权限的用户才能执行敏感的用户管理操作,从而提高系统的安全性和管理的规范性。


以下存储过程将实现操作员可使用的功能:

1. 进货单管理

-- 查看进货商品信息
DELIMITER //
CREATE PROCEDURE sp_view_ruku(
    IN start_date VARCHAR(128),
    IN end_date VARCHAR(128)
)
BEGIN
    SELECT * FROM tb_ruku_main
    WHERE rkdate BETWEEN start_date AND end_date;
END//
DELIMITER ;

-- 添加进货商品信息
DELIMITER //
CREATE PROCEDURE sp_add_ruku(
    IN rkid VARCHAR(32),
    IN pzs VARCHAR(64),
    IN je VARCHAR(64),
    IN ysjl VARCHAR(128),
    IN gysname VARCHAR(128),
    IN rkdate VARCHAR(128),
    IN czy VARCHAR(128),
    IN jsr VARCHAR(18),
    IN jsfs VARCHAR(18)
)
BEGIN
    INSERT INTO tb_ruku_main (rkid, pzs, je, ysjl, gysname, rkdate, czy, jsr, jsfs)
    VALUES (rkid, pzs, je, ysjl, gysname, rkdate, czy, jsr, jsfs);
END//
DELIMITER ;

-- 删除进货商品信息
DELIMITER //
CREATE PROCEDURE sp_delete_ruku(
    IN rkid VARCHAR(32)
)
BEGIN
    DELETE FROM tb_ruku_main WHERE rkid = rkid;
END//
DELIMITER ;

2. 出货单管理

-- 查看出货商品信息
DELIMITER //
CREATE PROCEDURE sp_view_sell(
    IN start_date VARCHAR(128),
    IN end_date VARCHAR(128)
)
BEGIN
    SELECT * FROM tb_sell_main
    WHERE xsdate BETWEEN start_date AND end_date;
END//
DELIMITER ;

-- 添加出货商品信息
DELIMITER //
CREATE PROCEDURE sp_add_sell(
    IN sellID VARCHAR(32),
    IN pzs VARCHAR(64),
    IN je VARCHAR(64),
    IN ysjl VARCHAR(128),
    IN xsdate VARCHAR(128),
    IN czy VARCHAR(128),
    IN jsr VARCHAR(18),
    IN jsfs VARCHAR(18)
)
BEGIN
    INSERT INTO tb_sell_main (sellID, pzs, je, ysjl, xsdate, czy, jsr, jsfs)
    VALUES (sellID, pzs, je, ysjl, xsdate, czy, jsr, jsfs);
END//
DELIMITER ;

-- 删除出货商品信息
DELIMITER //
CREATE PROCEDURE sp_delete_sell(
    IN sellID VARCHAR(32)
)
BEGIN
    DELETE FROM tb_sell_main WHERE sellID = sellID;
END//
DELIMITER ;

3. 仓库管理

-- 查看仓库商品信息
DELIMITER //
CREATE PROCEDURE sp_view_kucun()
BEGIN
    SELECT * FROM tb_kucun;
END//
DELIMITER ;

-- 修改仓库商品信息
DELIMITER //
CREATE PROCEDURE sp_update_kucun(
    IN id VARCHAR(32),
    IN spname VARCHAR(64),
    IN jc VARCHAR(64),
    IN cd VARCHAR(128),
    IN gg VARCHAR(128),
    IN bz VARCHAR(128),
    IN dw VARCHAR(128),
    IN dj DOUBLE,
    IN kcsl INT
)
BEGIN
    UPDATE tb_kucun
    SET spname = spname, jc = jc, cd = cd, gg = gg, bz = bz, dw = dw, dj = dj, kcsl = kcsl
    WHERE id = id;
END//
DELIMITER ;

4. 商品管理

-- 添加商品
DELIMITER //
CREATE PROCEDURE sp_add_spinfo(
    IN id VARCHAR(11),
    IN spname VARCHAR(64),
    IN jc VARCHAR(64),
    IN cd VARCHAR(128),
    IN dw VARCHAR(128),
    IN gg VARCHAR(128),
    IN bz VARCHAR(128),
    IN ph VARCHAR(128),
    IN pzwh VARCHAR(128),
    IN memo VARCHAR(128),
    IN gysName VARCHAR(128)
)
BEGIN
    INSERT INTO tb_spinfo (id, spname, jc, cd, dw, gg, bz, ph, pzwh, memo, gysName)
    VALUES (id, spname, jc, cd, dw, gg, bz, ph, pzwh, memo, gysName);
END//
DELIMITER ;

-- 查询商品
DELIMITER //
CREATE PROCEDURE sp_query_spinfo(
    IN search_id VARCHAR(11)
)
BEGIN
    SELECT * FROM tb_spinfo WHERE id = search_id;
END//
DELIMITER ;

-- 修改商品
DELIMITER //
CREATE PROCEDURE sp_update_spinfo(
    IN id VARCHAR(11),
    IN spname VARCHAR(64),
    IN jc VARCHAR(64),
    IN cd VARCHAR(128),
    IN dw VARCHAR(128),
    IN gg VARCHAR(128),
    IN bz VARCHAR(128),
    IN ph VARCHAR(128),
    IN pzwh VARCHAR(128),
    IN memo VARCHAR(128),
    IN gysName VARCHAR(128)
)
BEGIN
    UPDATE tb_spinfo
    SET spname = spname, jc = jc, cd = cd, dw = dw, gg = gg, bz = bz, ph = ph, pzwh = pzwh, memo = memo, gysName = gysName
    WHERE id = id;
END//
DELIMITER ;

-- 删除商品
DELIMITER //
CREATE PROCEDURE sp_delete_spinfo(
    IN id VARCHAR(11)
)
BEGIN
    DELETE FROM tb_spinfo WHERE id = id;
END//
DELIMITER ;

5.供应商管理

-- 供应商管理存储过程

DELIMITER //

-- 添加供应商
CREATE PROCEDURE AddSupplier(
    IN p_id VARCHAR(11),
    IN p_name VARCHAR(32),
    IN p_jc VARCHAR(32),
    IN p_address VARCHAR(128),
    IN p_bianma VARCHAR(128),
    IN p_tel VARCHAR(128),
    IN p_fax VARCHAR(128),
    IN p_lian VARCHAR(128),
    IN p_ltel VARCHAR(128),
    IN p_mail VARCHAR(128),
    IN p_yh VARCHAR(128)
)
BEGIN
    INSERT INTO tb_gysinfo (id, name, jc, address, bianma, tel, fax, lian, ltel, mail, yh)
    VALUES (p_id, p_name, p_jc, p_address, p_bianma, p_tel, p_fax, p_lian, p_ltel, p_mail, p_yh);
END //

-- 查询供应商
CREATE PROCEDURE GetSupplier(
    IN p_id VARCHAR(11)
)
BEGIN
    SELECT * FROM tb_gysinfo WHERE id = p_id;
END //

-- 修改供应商
CREATE PROCEDURE UpdateSupplier(
    IN p_id VARCHAR(11),
    IN p_name VARCHAR(32),
    IN p_jc VARCHAR(32),
    IN p_address VARCHAR(128),
    IN p_bianma VARCHAR(128),
    IN p_tel VARCHAR(128),
    IN p_fax VARCHAR(128),
    IN p_lian VARCHAR(128),
    IN p_ltel VARCHAR(128),
    IN p_mail VARCHAR(128),
    IN p_yh VARCHAR(128)
)
BEGIN
    UPDATE tb_gysinfo 
    SET name = p_name, jc = p_jc, address = p_address, bianma = p_bianma, tel = p_tel, fax = p_fax, lian = p_lian, ltel = p_ltel, mail = p_mail, yh = p_yh
    WHERE id = p_id;
END //

-- 删除供应商
CREATE PROCEDURE DeleteSupplier(
    IN p_id VARCHAR(11)
)
BEGIN
    DELETE FROM tb_gysinfo WHERE id = p_id;
END //

DELIMITER ;

4.进销存管理系统的运行和维护

4.1 主要功能测试

功能模块1:

功能模块2:

4.2gui界面测试截图

商品进、销、存系 统 背景说明 待开发的软件系统的名称:商品进、销、存管理系统 软件项目的用途:用于数据库课程设计及商业用途 软件项目的范围:系统涉及企业的库存,销售与进货提供了管理 功能,为库存,销售,进货等管理数据提供了分析功能 开发小组:我们小组 小组成员: 组长:曾 炫 组员:冶福磊 陈 光 钟浩杰 李钦铭 指导老师:姚全珠 在信息技术的催化之下,世界经济的变革已经进入了加速状态。世界经济一体化,企 业经营全球化,以及高度竞争造成的高度个性化与迅速改变的客户需求,令企业与顾客 、企业与供方的关系变得更加密切和复杂。强化管理,规范业务流程,提高透明度,加 快商品资金周转,以及为流通领域信息管理全面网络化打下基础,是商品销售公司乃至 众多商业企业梦寐以求的愿望。 随着技术发展,电脑操作及管理日趋简化,电脑知识日趋普及,同时市场经济快速多 变,竞争激烈,因此企业采用电脑管理进货、库存、销售等诸多环节也已成为趋势及必 然。 系统规划 1.1 可行性分析 经济上可行性分析 现在,计算机的价格已经十分低廉,性能却有了长足的进步。而本系统的开发,为企 业的工作效率带来了一个质的飞跃,为此主要表现有以下几个方面: 第一,本系统的运行可以代替人工进行许多繁杂的劳动; 第二,本系统的运行可以节省许多资源; 第三,本系统的运行可以大大的提高企业的工作效率; 第四,本系统可以使敏感文档更加安全,等等。 本产品的开发所需的设备在现有条件下,只需要少量的投入资金就可以实现。因此在 经济上是可行的。 技术上可行性分析 a. 软件可行性 C#具有丰富的数据库功能,可以直接建立和编辑数据库,使用结构化查询语言直 接访问SQL Sever上的数据库,并提供简单的面向对象的库操作命令、多用户数据库的加锁机制 和网络数据库的编程技术。 SQL Sever2000是由微软公司推出的,能提供超大型系统所需的数据库服务,并对数据库 提供全面的保护,具有防止问题发生的安全措施,他是一个采用SQL语言的关系型数 据库管理系统。作为客户机/服务器的后端数据库,他是所有数据的汇总和管理心 。 b. 硬件可行性 CPU:奔腾三代以上。 OS(操作系统):Windows2000/windows98以上。 内存:64MB以上。 硬盘:30G以上。 本系统的开发利用Microsoft SQL Server2000作为本系统数据库,它是一个支持多用户的新型数据库,适用于大 规模的数据量需求。 使用C#作为系统开发的开发环境,此开发工具开发数据库管理系统,采用面向 对象的方式,方便、简捷、功能强大。 管理上可行性分析 课设指导老师给与了精心的讲解和大力的支持。 综上所述,系统在技术上、经济上、管理上都是可行的。 1.2 划分子系统 各个模块的划分 1.3 制定信息系统开发方案及日程安排 1.3.1 任务分配 陈 光:商品入库(输入) 李钦铭:信息查询(查询) 冶福磊:信息修改(修改) 钟浩杰:信息统计(统计) 曾 炫:商品销售(输出) 1.3.2 计划 需求分析阶段:用时一天。需求分析,业务逻辑,模块化分,详细分工 编码阶段:用时两天。根据需求分析进行编码 整合:待续 系统分析 2.1系统流程图 业务流程图 2.2 数据字典 重要数据及其简要描述如下所示: 1) 数据元素: 表3.1 商品编号 表3.2 员工编号 表3.3 销售编号 表3.4 库存盘点票号 2) 数据结构: 表3.6 商品卡片 3) 数据流: 表3.7 操作信息 表3.9 管理信息 4) 数据存储: 表3.10 进货一览表 表3.11 销售一览表 表3.12 库存一览表 5) 处理过程: 表3.12 销售信息单 表3.13 进货信息单 表.3.14 库存信息单 系统设计 3.1 代码设计 编码设计使数据库系统开发的前提条件,使系统不可缺少的重要内容。编码是指与原 来名称对应的符号和记号。它是进行信息交换、处理、传输和实现信息共享的关键。本 系统内部信息编码采用顺序码和区间码混合使用: 顺序码是用一串连续的数字来代表系统的客观实体或实体属性。其优点是简单,容 易处理,但是不能反映编码对象的特征。所以用区间码来弥补这个缺点。区间码是按编 码的特点把代码分为若干个区段,每一个区段表示编码对象的一个类别。 合理的编码结构是信息处理系统是否具有生命力的一个重要因素,在本系统的代码设 计时,遵循以下几个原则: a. 惟一性。每个代码只能惟一地代表系统的 一个实体或实体属性。 b. 标准性。代码设计时采用国际或国家的标准代码。 c. 合理性。代码设计应该与编码对象的分类体系相适应,使代码对编码对象的分类有 标识作用。 d. 可扩充性。编码时留有足够的备用代码。 e. 简单性。方便输入,提高处理效率。 f. 适用性。便于识
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值