资源描述
商品进销存管理系统
【摘要】
商品进销存管理系统是市场上最流行的进销存上常用的系统之一,它主要包含以下几个模块:系统权限的设定、原始数据录入、数据的汇总及查询等。从而,实现对入库、销售及员工信息等实现全面、动态、及时的管理。
【关键词】商品进销存管理系统 软件工程 数据库
目录
1.概述 2
2.系统需求分析 2
2.1用户工作流程 2
2.2用户业务需求 2
3.概念设计阶段 4
3.1设计思想 4
3.2设计原则 4
3.3业务流程分析 5
4. 逻辑设计阶段 7
4.1E-R模型 7
5.物理设计阶段 9
6. 数据编码与实施 10
6.1系统登录界面 10
6.2 系统主界面 11
6.3 系统子界面 一三
7. 数据运行与维护 31
7.1模块测试 31
7.2整体测试 31
8.小结 32
参考文献 32
1.概述
随着进销存规模的发展不断扩大,商品数量急剧增加,有关商品的各种库存信息量也成倍增长。进销存时时刻刻都需要对库存各种信息进行统计分析。而市面上的一些大型的进销存管理系统功能过于强大而造成操作繁琐降低了进销存的工作效率。本系统的分析了软件开发的背景以过程;首先介绍了软件的开发环境,其次介绍了本软件的详细设计过程:数据库的设计、各个模块的设计和实现,以及具体界面的设计和功能。
1.1编写需求规格说明书得目的
详细准确和全面定义“商品进销存管理系统”的用户需求,指导软件系统的后续开发工作。本文档所描述的用户需求将作为该项目最终验收的标准和依据。
说明:该文档必须经用户和开发方签字确认方可有效。
本文档的读者对象包括:
1)用户
2)系统分析员
3)软件设计人员
4)软件实现人员
5)软件测试人员
1.2确定系统边界
2.系统需求分析
2.1用户工作流程
入库或销售商品时,用户要对入库单或销售单进行核对审查,并进行登记;用户要获得入库、销售、库存信息时,要对入库情况、销售情况、库存情况进行查询并打印。
2.2用户业务需求
(1)该管理系统将对库存商品进行资料管理和统计,对商品的进货单和商品的销售单进行录入管理和统计;
(2)该管理系统将根据用户的需要对进货、销售、库存情况进行查询;
(3)该管理系统将为用户提供账号管理工具,以便用户对账号进行管理,具体为添加用户、删除用户、修改用户密码;
(4)该管理系统可对供货商信息、客户信息、商品信息施行增删改查操作。
整个商品进销存管理系统的功能结构如图所示:
用户信息增删改
商品进销存管理系统
用户信息管理
销售信息管理
库存信息管理
进货信息管理
商品信息管理
客户信息管理
供货商信息管理
用户信息查询
供货商信息增删改
商品信息增删改
客户信息增删改
客户信息查询
供货商信息查询
商品信息查询
进货信息增删改
库存信息查询
进货信息查询
销售信息增删改
销售信息查询
系统功能结构图
1) 用户信息管理
通过对用户的管理来维护和操作超市进销存系统,根据实际需要可添加用户资料和修改用户密码,确保系统正常运行。
2) 供应商管理
供应商是超市运营过程中不可缺少的一个环节。它与商品的采购管理及库存管理直接相关。所以在系统中提供供应商的基本信息配置是非常必要且必须的。这有利于对库存商品质量的控制并能够较快的响应采购要求。
3) 商品信息管理
市运营的过程中,其内部各相关部门都需要随时知道商品库存的最新信息,所以系统应具有面向不同需求的添加用户、删除和查询功能和修改用户密码功能,以满足不同用户的需要。
4)客户信息管理
客户信息管理模块需要完成以下相关功能:
提供销售客户的信息,可增删改查。
5)进货管理
进货管理模块需要完成以下相关功能:
①进货分析:即列出当前进货量最多的前几项商品和进货量最少的前几
项商品;
②库存分析:即列出当前库存量最多的前几项商品和库存量最少的前几
项商品;
③分类查看:即可以根据商品的属性来查看某种商品的进货情况;
④采购进货:即按照采购计划采购人员购买商品,并将商品的基本信息登记入库,更新数据库的库存信息。
6)销售管理
销售管理模块需要完成以下相关功能:
①商品销售信息:即录入销售商品的信息包括商品销售数量、单价、统
计日期等;
②更新库存:即销售信息的变动直接关系到库存的变化;
7)库存管理
库存管理模块可帮助仓库管理人员对库存商品的入库、出库、调拨盘点、补充订货等操作进行全面的控制和管理。该模块与采购、销售模块有良好的接口。可以从这些模块中获得或向这些模块输送数据,保持数据的一致性。库存管理模块需要实现以下相关功能:
①库存盘点: 即商品盘存要求能够对系统中所有商品信息进行整理,修正与实际信息有差错的信息,以保证系统中数据的实时性和有效性;
②调拨: 即进行一定时间段内的调拨情况的查询、统计;
③库存报警: 即当某商品的库存数量低于系统设定的最低库存数量时,系统自动报警并提醒库存管理人员该商品已缺货,以保证商品的及时供应。
3.概念设计阶段
3.1 设计思想
(1)系统分成几个相对独立的模块,但这些模块都进行集中式管理。
(2)分层的模块化程序设计思想,整个系统采用模块化结构设计。作为应用程序有较强的可操作性和扩展性。
(3)合理的数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。
3.2 设计原则
为了使本系统功能齐全完备,操作简便,最大限度的提高软件的质量,从而满足用户的实际需要,在设计开发过程中遵循了如下原则:
(1)合法性原则:依据产品核算系统的工作规定以及要求,参照核算实际的工作情况,进行诸如产品入库、销售等工作。
(2)实用性原则:适合产品信息管理工作的实际需求,并能够处理一些特殊情况的要求,此外,尽可能预留空间,以便扩充功能。
(3)准确性原则:对输入的相关资料建立检错机制,及时报错,使用户能够及时准确的输入合法资料(如:类型匹配,长度不超限等)。
(3)易操作原则:要求设计的系统功能齐全,界面友好,操作方便,必要的地方进行提示。
(5)源程序可读性原则:为了便于其他设计,维护人员读懂代码或以后的代码修改,软件升级维护,即可能做好代码注释工作。
(6)优化原则:为了达到优化的目的,合理的运用窗口,菜单,对象等的继承,自定义用户对象,事件,函数,减少不必要的重复性代码,使程序简介明了,也方便了将来的维护。
(7)安全性原则:可以为该系统的用户设置用户权限。
3.3业务流程分析
商品进销存管理系统主要是是以先进的管理理念和科学的计算机技术来取代原始的手工操作。在新系统开发前,我们对这个商品进销存管理系统业务流程进行了系统的调查,得出了下面的业务流程图,如图2所示:
验证登录
进入系统
商品进销存管理系统
用户
客户
供货商
验证成功
进销存管理系统第1层图
人事信息管理
销售管理
库存管理
进货管理
库存信息查询
库存清单
用户信息
客户信息查询
用户、客户及供货商清单
供货商信息
进货请求
进货清单
进货信
息查询
进货信息
进货信息
库存信息
销售信息查询
销售信息
进销存管理系统第2层图
数据字典:
(1) 职工清单(StaffBill)
中文字段名
英文字段名
字段类型
长度
主键/外键
字段值约束
职工编号
staffID
char
6
P
NOT NULL
姓名
name
nvarchar
8
NOT NULL
性别
sex
nchar
2
NOT NULL
籍贯
home
nvarchar
4
NULL
学历
diploma
nvarchar
4
NOT NULL
类别
kind
nvarchar
10
NULL
工资
salary
int
4
NULL
x
phone
varchar
12
NULL
联系地址
address
nvarchar
50
NULL
身份证号
idCard
varchar
一八
NOT NULL
聘用日期
beginDate
datetime
8
NULL
编制日期
enactTime
datetime
8
NULL
备注
others
ntext
50
NULL
说明:此表存放员工信息。
(2) 用户清单(UserBill)
中文字段名
英文字段名
字段类型
长度
主键/外键
字段值约束
帐号
loginID
char
6
P/F
NOT NULL
密码
passWord
char
6
NOT NULL
说明:此表存放系统用户信息。
(3) 商品清单(MerchBill)
中文字段名
英文字段名
字段类型
长度
主键/外键
字段值约束
商品编号
merchID
char
6
P
NOT NULL
供货商号
profferID
char
6
F
NOT NULL
名称
fullName
nvarchar
80
NOT NULL
条形码
barCode
char
一五
NOT NULL
计量单位
metricUnit
varchar
4
NOT NULL
类别
kind
nvarchar
8
NULL
产地
birthPlace
nvarchar
50
NULL
单价
unitCost
varchar
4
NOT NULL
备注
others
ntext
50
NULL
说明:此表存放商品信息。
(4) 供货商清单(ProfferBill)
中文字段名
英文字段名
字段类型
长度
主键/外键
字段值约束
供货商号
profferID
char
6
P
NOT NULL
名称
fullName
nvarchar
50
NOT NULL
联系人
contactPerson
nvarchar
8
NOT NULL
x
phone
varchar
12
NOT NULL
联系地址
address
nvarchar
50
NOT NULL
开户行
openingBank
nvarchar
10
NULL
银行帐号
accountID
varchar
一五
NULL
备注
others
ntext
50
NULL
说明:此表存放供货商信息。
(5) 进货清单(ImportBill)
中文字段名
英文字段名
字段类型
长度
主键/外键
字段值约束
进货单号
importBillID
char
6
P
NOT NULL
商品编号
merchID
char
6
P/F
NOT NULL
供货商号
profferID
char
6
F
NOT NULL
进货价
importPrice
varchar
4
NOT NULL
数量
quantity
int
4
NOT NULL
金额
totalMoney
varchar
4
NOT NULL
进货日期
importDate
datetime
8
NOT NULL
备注
others
ntext
50
NULL
说明:此表存放进货信息。
(6) 销售清单(SaleBill)
中文字段名
英文字段名
字段类型
长度
主键/外键
字段值约束
销售单号
saleBillID
char
6
P
NOT NULL
商品编号
merchID
char
6
P/F
NOT NULL
销售数量
saleNum
int
4
NOT NULL
销售日期
saleDate
datetime
8
NOT NULL
说明:此表存放销售信息。
(7) 库存清单(StoreBill)
中文字段名
英文字段名
字段类型
长度
主键/外键
字段值约束
商品编号
merchID
char
6
P/F
NOT NULL
库存数量
storeID
int
4
NOT NULL
(8)客户清单(ClientBill)
中文字段名
英文字段名
字段类型
长度
主键/外键
字段值约束
客户编号
bh
char
10
P
NOT NULL
姓名
xm
char
10
NOT NULL
住址
addr
char
50
NOT NULL
身份证号码
sfz
varchar
20
NOT NULL
性别
sex
char
6
NOT NULL
x
tel
int
4
NOT NULL
4.逻辑设计阶段
4.1. E-R模型
商品进销存管理系统数据库E-R模型,如图5-2所示:
用户:
用户
账号
权限
密码
进货:
进货
进货单号
供货商号
商品编号
金额
数量
进货日期
进货价
客户编号
客户:
姓名
客户
身份证
性别
电话
住址
销售:
销售
销售单号
销售数量
商品编号
销售日期
商品
商品
名称
商品编号
单价
条形码
计量单位
供货商号
供货商
名称
供货商号
联系人
联系地址
x
供货商:
商品进销存系统:
供货
用户
供货商
进货
商品
m
n
m
n
客户
m
n
销售
5.物理设计阶段
运行需求
(1)用户界面
本系统采用C#+sqlserver2000设计,用户交互界面采用的是基于C#的WINDOWS窗口。
(2)硬件接口
运行本系统的硬件基本要求如下:
CPU:Intel P4及以上;
内存:512MB及以上;
硬盘:80GB及以上。
(3)软件接口
JSP服务器:Apache Tomcat5.5版本及以上。
数据库服务器:Microsoft SQL Server 2000及以上。
6.数据库编码与实施
6.1.系统登录界面
功能:实现登录验证,当账号、密码、验证码三者都正确时才能登录。
输入项目:用户名、密码和验证码
输出项目:进入到具有各自权限的界面
测试要点:各类用户能够正确的登录
用户登录界面如下图:
登录及取消代码如下:
private void button1_Click(object sender, EventArgs e)
{
string loginid = textBox1.Text.Trim ();
string password = textBox2.Text.Trim ();
if (textBox1.Text != "")
{
DataAccess data = new DataAccess();
if (data.CheckAdmin(loginid, password)&&label5 .Text ==textBox3 .Text )
{
Constants.loginID = loginid;
SPJXCGLXT s = new SPJXCGLXT();
s.Show();
this.Hide();
}
else if (label5.Text != textBox3.Text)
{
MessageBox.Show("验证码错误!", "登录失败", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else
{
MessageBox.Show("输入用户名、密码错误!请重新登录!");
textBox1.Text = "";
textBox2.Text = "";
}
}
}
private void button2_Click(object sender, EventArgs e)
{
Close();
}
private void button3_Click(object sender, EventArgs e)
{
Random rad = new Random();
int value = rad.Next(1000, 10000);
label5.Text = value.ToString();
}
6.2.系统主界面
功能:实现系统主要功能
部分代码如下:
public SPJXCGLXT()
{
InitializeComponent();
this.IsMdiContainer = true;
UserBillData data=new UserBillData();
data.loginID = Constants.loginID;//获取登录用户的姓名
DataSet ds = new DataSet();
ds = UserBillOperation.getUserBillAll(data);
if (ds.Tables[0].Rows.Count > 0)
{
Constants.limits = ds.Tables[0].Rows[0]["用户权限"].ToString();
if (Constants.limits != "管理员")
{
this.用户添加ToolStripMenuItem.Enabled = false;
this.供货商信息添加ToolStripMenuItem.Enabled = false;
this.进货清单添加ToolStripMenuItem.Enabled = false;
this.客户信息添加ToolStripMenuItem.Enabled = false;
this.商品信息添加ToolStripMenuItem.Enabled = false;
this.销售清单添加ToolStripMenuItem.Enabled = false;
this.用户删除ToolStripMenuItem.Enabled = false;
this.用户修改ToolStripMenuItem.Enabled = false;
this.供货商信息修改ToolStripMenuItem.Enabled = false;
this.供货商信息删除ToolStripMenuItem.Enabled = false;
this.进货清单删除ToolStripMenuItem.Enabled = false;
this.进货清单修改ToolStripMenuItem.Enabled = false;
this.客户信息修改ToolStripMenuItem.Enabled = false;
this.客户信息删除ToolStripMenuItem.Enabled = false;
this.商品信息删除ToolStripMenuItem.Enabled = false;
this.商品信息修改ToolStripMenuItem.Enabled = false;
this.销售清单删除ToolStripMenuItem.Enabled = false;
this.销售清单修改ToolStripMenuItem.Enabled = false;
}
}
}
6.3.系统子界面
1)用户管理界面
功能:实现用户增删查改
①用户清单界面
输入项目:用户名或用户权限
输出项目:满足查询条件的结果
用户信息查询代码如下:
private void button2_Click(object sender, EventArgs e)
{
DataSet data = new DataSet();
string connString = Properties.Settings.Default.商品进销存管理系统ConnectionString;
SqlConnection connection = new SqlConnection(connString);
string sql;
if (textBox1.Text.Trim() != "" &&comboBox1.Text.Trim() != "")
{
sql = "select * from UserBill where loginID='" + textBox1.Text.Trim() + "'and limits='" + comboBox1.Text.Trim() + "'";
}
else
{
sql = "select * from UserBill where loginID='" + textBox1.Text.Trim() + "'or limits='" + comboBox1.Text.Trim() + "'";
}
SqlDataAdapter da = new SqlDataAdapter(sql, connString);
da.Fill(data );
this.userBillDataGridView.DataSource = data.Tables[0];
}
②用户增删改界面
输入项目:用户名、密码和用户权限
输出项目:进行添加、修改密码、删除操作,输出操作是否成功
添加、删除、修改密码代码如下:
private void button1_Click(object sender, EventArgs e)
{
string userid = textBox1.Text;
string userpwd = textBox2.Text;
string qpwd = textBox3.Text;
string limit = comboBox1.Text;
string connString = Properties.Settings.Default.商品进销存管理系统ConnectionString;
SqlConnection connection=new SqlConnection(connString);
if (userid == null || userid.Trim().Equals(""))
{
MessageBox.Show("请输入用户名!","提示");
}
if (userpwd != qpwd)
{
MessageBox.Show("密码不一致!", "提示");
}
else if (comboBox1 .Text .Trim ()=="")
{
MessageBox.Show("请输入用户权限!", "提示");
}
else
{
string sql = String.Format("insert into UserBill values('{0}','{1}','{2}')", userid, userpwd,limit );
try
{
connection.Open();
SqlCommand command = new SqlCommand(sql, connection);
int a = (int)command.ExecuteNonQuery();
if (a > 0)
{
MessageBox.Show("添加成功!", "提示");
}
else
{
MessageBox.Show("添加失败!", "错误");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "保存失败!");
}
finally
{
connection.Close();
}
}
}
private void button3_Click(object sender, EventArgs e)
{
string userid = textBox1.Text;
string connString = Properties.Settings.Default.商品进销存管理系统ConnectionString;
SqlConnection connection = new SqlConnection(connString);
if (userid == null || userid.Trim().Equals(""))
{
MessageBox.Show("请输入用户名!", "提示");
}
string sql = String.Format("delete from UserBill where loginID=('{0}')", userid);
try
{
connection.Open();
SqlCommand command = new SqlCommand(sql, connection);
int a = (int)command.ExecuteNonQuery();
if (a > 0)
{
MessageBox.Show("删除成功!", "提示");
}
else
{
MessageBox.Show("删除失败!", "错误");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "操作失败!");
}
finally
{
connection.Close();
}
}
private void button4_Click(object sender, EventArgs e)
{
string userid = textBox1.Text;
string userpwd = textBox2.Text;
string qpwd = textBox3.Text;
string limit = comboBox1.Text;
string connString = Properties.Settings.Default.商品进销存管理系统ConnectionString;
SqlConnection connection = new SqlConnection(connString);
if (userid == null || userid.Trim().Equals(""))
{
MessageBox.Show("请输入用户名!", "提示");
}
if (userpwd != qpwd)
{
MessageBox.Show("密码不一致!", "提示");
}
else
{
string sql = String.Format("update UserBill set passWord=('{0}') where loginID=('{1}')", userpwd, userid);
try
{
connection.Open();
SqlCommand command = new SqlCommand(sql, connection);
int a = (int)command.ExecuteNonQuery();
if (a > 0)
{
MessageBox.Show("修改成功!", "提示");
}
else
{
MessageBox.Show("修改失败!", "错误");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "修改失败!")
展开阅读全文