任务分配:
任务 小组成员 | 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创建触发器
触发器是一种自动执行的程序,在特定的数据库操作(如 INSERT
、UPDATE
或 DELETE
)之前或之后触发。
该触发器在进货单表中插入新记录后触发,用于更新仓库的库存数量:
- 首先检查对应商品编号的当前库存数量。
- 如果该产品尚未在仓库表中存在,则插入一条新的记录。
- 如果该产品已存在,则更新库存数量。
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 ;
该触发器在出货表中插入新记录后触发,用于更新仓库的库存数量:
- 直接更新仓库中的库存数量,减少对应产品的数量。
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界面测试截图