资源描述
化妆品电子营销进销存管理系统
可行性研究报告
编写日期:2013年5月
目录
一、技术领域及研发必要性分析 3
1.1技术相关 3
1.2系统研发背景 3
1.3技术必要性分析 4
二、内容与可行性分析 5
2.1进销存管理系统设计分析 5
2.1.1应用系统分析 5
2.1.2现有状况分析 5
2.1.3系统可行性分析 6
2.1.4数据流图 7
2.1.5系统数据库分析与设计 7
2.2技术内容 11
2.2.1登陆界面设计 11
2.2.2 部分功能模块设计及部分代码 15
2.3关键技术及创新点 34
三、市场需求与风险分析 35
3.1市场需求分析 35
3.2风险分析与对策 36
3.2.1风险分析 36
3.2.2风险对策 38
四、经济效益与社会效益 40
4.1经济效益分析 40
4.2社会效益分析 42
五、总结 42
一、技术领域及研发必要性分析
1.1技术相关
技术名称:化妆品电子营销进销存管理系统
持有人:
1.2系统研发背景
本文介绍的营销管理系统,主要指化妆品的进销存系统。进销存管理系统是管理信息系统的一个分支,主要用于商品贸易行业。它利用计算机网络和信息处理技术,综合监督和控制各部门的物流、资金流、工作流和信息流,使企业管理人员、业务人员和相关操作人员能够随时准确掌握审计、计划、采购、销售、物管、质检和财务等各环节的操作经营状况,并及时做出经营管理决策和适时制定或调整企业发展计划,优化企业管理的效率和质量。
化妆品贸易企业经济活动中各种要素是不断变化和流通的。其中物流、资金流、工作流和信息流最为重要。只有保证各种流通顺畅,化妆品贸易企业才能获得好的经济效益。
进销存管理系统只有掌握这些流,才能在一定高度上掌握化妆品贸易企业各项业务之间内在和本质的关系。进销存管理系统适用于企业的采购、销售和库存部门,能够对企业采购、库存和销售等业务进行全程有效控制和跟踪。通过应用性能较好的进销存管理系统对企业经营活动中的进、销、存进行管理,可以有效地减少盲目采购、降低采购成本、合理控制库存、减少资金占用并提高市场灵敏度,提升企业市场竞争力。
1.3技术必要性分析
随着信息技术的不断发展,企业信息化程度不断提高,信息化水平的提高有效的提高了企业的生产效率,减少了管理成本,在一段时期内发挥了很大的效用。随着经济的发展以及企业的扩张、各企业管理思想的提升,现有的信息化系统也面临不少的问题。
1、业务财务的分离造成数据流的脱节,增加了手工操作的工作量,降低了效率。各钢材贸易企业基本上都建立了内部的贸易管理系统,解决了企业的进销存问题;同时,为了解决企业的财务信息管理问题,各钢材贸易企业普遍建立了相应的财务软件系统。但由于两个系统没有建立数据接口,使得业务系统产生的数据财务系统无法使用,财务系统产生的报表,业务数据也无法调用,这就增加了手工进行数据交互的工作量,降低了工作效率。
2、随着企业的发展和扩张,现有系统支持多组织多帐套的能力有所欠缺。这几年中国经济的飞速发展,为企业的发展和规模扩张创造了有利的条件,有相当一部分的钢材贸易企业都建立起了全国各地的分子公司,抢占市场,但由于现有信息化系统的功能和业务覆盖能力有限,无法建立起对这些分子公司的有效管理和监控,增加了企业的经营风险。如果对这些分子公司都建立起相应的系统,就需要投入比较大的设备成本和系统运维成本。
3、现有信息系统的访问方式复杂,存在访问区域和访问方式有的许多限制。目前各化妆品贸易企业普遍采用的是基于C/S架构的信息化系统,采用此种架构的系统存在许多访问条件的限制,比如只能在公司局域网内部访问、只能安装客户端才可访问,这些限制为没有固定地点工作的销售人员及公司领导造成了很多系统访问的不方便性,信息访问不够通畅。
对于中小企业来说,现有贸易管理系统的成本是个巨大的负担。信息化的发展离不开企业的资金投入,如何达到投入少、见效快、效率高的目标,是每个化妆品贸易企业需要解决的一个问题。目前市场上的化妆品贸易管理系统普遍需要投入设备成本、软件成本和运维成本,这些成本的客观存在阻碍了一些企业特别是小企业的发展。
从以上几个化妆品贸易企业面临的信息化问题来看,建立一套业务财务一体化、支持多组织多构架、访问方便快捷并且投入成本较少的营销管理系统势在必行。不仅可以提高企业的运营效率,降低人力资源成本,提高企业核心数据的安全性,同时更能够通过高效的流水线服务,为客户提供更好的服务,提升企业的价值。
二、内容与可行性分析
2.1进销存管理系统设计分析
2.1.1应用系统分析
在市场经济中,销售是企业运作的重要环节。为了更好地推动销售,不少企业建立分公司后实行代理制,通过分公司或代理上把产品推向最终用户。这些分公司或代理商大多分布在全国各地,甚至是在过为,远距离频繁的业务信息交流是这些企业业务活动的主要特点。在传统方式上,公司之间通常采用电传、电报、电话等方式传递订货、发货、到货、压货、换货、退货等信息,总公司的商务部门在接到分公司或代理商穿来的定单和银行汇款单据传真件后,开具产品出库通知,然后再把相关的进、销、存信息手工存档,再对这些信息进行统计分析,才能了解到整个公司的生产、销售和库存情况。进销存管理是现代商业企业经营管理中的核心环节,也是一个企业能否取得效益的关键。现代电子商务型企业如果能做到合理生产、及时销售、库存量最小、减少积压,那么企业就能取得最佳的效益。
2.1.2现有状况分析
’
当前,客户现有的数据运行管理方式是通过手工记录数据,后期借助办公软件和一些固定格式的文档进行数据整理。虽然可以满足目前的需求,但随着企业的发展壮大,业务量的成倍提升,这种主要通过人工来管理的数据运行方式必然会成为企业发展的枷锁,影响企业的运行效率和服务质量,主要原因如下:
首先,当前的数据处理方式无法进行权限管理和跟踪。因为主要通过手工记录和办公软件整理,企业的任何人员都会比较容易的接触到企业的所有数据,包括一些涉及到企业核心机密的客户资料以及销售报表等。而且,数据一旦出现丢失或者泄露,当前的数据保存方式也不会留下任何记录。办公软件虽然可以进行简单的加密处理,但安全防范功能相对比较薄弱,远远不能满足企业级的数据安全要求。而实施信息系统可以根据人员岗位分工来设置权限,保证核心数据只有部分人员才能接触,并且数据的任何变更都会被记录下来,可以很好的解决上述问题。
其次,当前的数据处理方式很难应付日益增长的信息量。手工记录和办公软件处理可以满足小规模的信息量。但随着企业运营年限增长以及业务的日益发展壮大,这种处理方式就很难支持企业的日常运行。无论是数据修改还是数据查找,都需要先从庞大的数据集合中进行查找提取,但数据集合的规模上升到一定级别,是很难用人力在短时间内完成的,必须建立一套后台数据库存储系统,储备企业的信息数据。
另外,化妆品贸易中涉及较多审批流转环节,单纯纸质文档的公文流转由于没有任何限制有可能会发生越权审批的情况,而且不会留下任何跟踪记录,进而危害到企业自身的利益。
另外,office系列软件对于用户的并发控制缺乏有效的控制机制,基本没有相应的考虑,随着用户的增加,并发的需求越来越高,office系列软件难以满足用户的需求。
2.1.3系统可行性分析
在技术方面,本系统采用Microsoft公司的C#.NET以及SQL Server 2000设计一个既满足用户需求又操作方便而且界面友好的中小型书店管理系统软件。C#是一种基于窗体的可视化组件安排的联合,具有强大的数据库管理功能,支持SQL数据库查询,利用C#中嵌入的数据库管理功能几乎可以操纵各种格式的数据库。
在经济方面,由于商场规模的日益增大,进出货物数量繁多,且工作量大。原有的手工操作耗时费力,又不能保证数据的正确性,迫切需要实现计算机信息化管理,用信息化管理实现对数据的录入、查询、打印等的处理。比起传统的方法这样可以节省大量的人力物力资源,又可以缩短业务处理的时间,加强对物资安全的管理,具有很强的实用性和经济性。
2.1.4数据流图
2.1.5系统数据库分析与设计
2.1.5.1 E-R图
2.1.5.2数据库设计
根据对系统数据的分析,本系统共需要11张表,用途如表2-1所示:
表2-1数据库数据清单
数据表名称
数据表用途
系统管理员表(web_admin)
保存管理员信息
库存表(t_save)
保存进货信息
出货表(t_out)
保存出货信息
订单表(t_order)
保存订单信息
商品表(product)
保存商品信息
现存商品表(now_product)
保存现存商品信息
我的订单表(myorder)
保存我的订单信息
供货商表(ghs)
保存供货商信息
客户表(custorm)
保存客户信息
仓库表(ck)
保存仓库信息
表2-2系统管理员表(web_admin)(管理员编号为主键)
字段名
描述
数据类型
数据长度
主键
是否为空
admin_id
管理员编号
int
4
是
否
web_admin
管理员帐号
varchar
50
否
是
password
管理员密码
varchar
50
否
是
qx
权限等级
int
4
否
是
表2-3库存表(t_save)(库存编号为主键)
字段名
描述
数据类型
数据长度
主键
是否为空
save_id
库存编号
int
4
是
否
product
商品名称
varchar
50
否
是
in_number
进货数量
int
4
否
是
in_price
进货价格
varchar
50
否
是
ghs
供货商
varchar
50
否
是
ck
仓库
varchar
50
否
是
in_date
进货时间
datetime
8
否
是
表2-4 出货表(t_out)(出货编号为主键)
字段名
描述
数据类型
数据长度
主键
是否为空
out_id
出货编号
int
4
是
否
product
商品名称
nvarchar
50
否
是
out_number
出货数量
int
4
否
是
return_number
退货数量
int
4
否
是
out_price
出货价格
decimal
9
否
是
ck
仓库
varchar
50
否
是
order_number
订单号
varchar
50
否
是
out_date
出货时间
datetime
8
否
是
表2-5订单表(t_order)(订单编号为主键)
字段名
描述
数据类型
数据长度
主键
是否为空
order_id
订单编号
int
4
是
否
order_no
订单号
varchar
50
否
是
custormer
客户
varchar
50
否
是
表2-6商品表(product)(商品编号为主键)
字段名
描述
数据类型
数据长度
主键
是否为空
product_id
商品编号
int
4
是
否
name
商品名称
varchar
50
否
是
price
商品价格
numeric
9
否
是
guige
规格
char
20
否
是
jldw
计量单位
char
20
否
是
sccs
生产厂商
varchar
50
否
是
ck
仓库
varchar
50
否
是
ghs
供货商
varchar
50
否
是
up_num
上限
int
4
否
是
down_num
下限
int
4
否
否
表2-7现存商品表(now_product)(现存商品编号为主键)
字段名
描述
数据类型
数据长度
主键
是否为空
now_id
现存商品编号
int
4
是
否
product
商品名称
varchar
50
否
是
now_number
现存商品数量
int
4
否
是
in_number
进货数量
int
4
否
是
in_money
进货价格
decimal
9
否
是
out_number
出货数量
int
4
否
是
out_money
出货价格
decimal
9
否
是
表2-8我的订单表(myorder)(订单编号为主键)
字段名
描述
数据类型
数据长度
主键
是否为空
order_id
订单编号
int
4
是
否
order_number
订单号
varchar
50
否
是
cust_name
客户名称
varchar
50
否
是
product
商品名称
varchar
50
否
是
order_date
下单日期
datetime
8
否
是
order_num
订货数量
int
4
否
是
表2-9供货商表(ghs)(供货商编号为主键)
字段名
描述
数据类型
数据长度
主键
是否为空
ghs_id
供货商编号
int
4
是
否
ghs_name
供货商名称
varchar
50
否
是
g_telephone
供货商电话号码
varchar
50
否
是
g_address
供货商地址
varchar
50
否
是
g_person
联系人
varchar
50
否
是
g_email
电子邮箱
varchar
50
否
是
表2-10客户表(custorm)(客户编号为主键)
字段名
描述
数据类型
数据长度
主键
是否为空
custmer_id
客户编号
int
4
是
否
cust_name
客户名称
varchar
50
否
是
cust_tel
客户电话号码
varchar
50
否
是
cust_add
客户地址
varchar
50
否
是
cust_person
联系人
varchar
50
否
是
cust_email
电子邮箱
varchar
50
否
是
表2-11仓库表(ck)(仓库编号为主键)
字段名
描述
数据类型
数据长度
主键
是否为空
ck_id
仓库编号
int
4
是
否
ck
仓库名称
varchar
50
否
是
2.2技术内容
2.2.1登陆界面设计
本系统采用Microsoft Visual Studio 2005(C#)实现,数据库采用SQL Server 2000。
登录界面代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string user = txt_user.Text.ToString();
string password = txt_password.Text.ToString();
//为存储过程准备参数
SqlParameter sys_user = SqlHelper.CreateParam("@user", SqlDbType.VarChar, 100, ParameterDirection.Input, user);
SqlParameter sys_password = SqlHelper.CreateParam("@password", SqlDbType.VarChar, 100, ParameterDirection.Input, password);
SqlParameter[] paralist =
{
sys_user,sys_password
};
SqlDataReader dr = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "pr_login", paralist);
if (dr.Read())
{
//将值放入cookie
HttpCookie cookie = new HttpCookie("jxcglxt");
cookie.Values.Add("admin_id", dr["admin_id"].ToString());
cookie.Values.Add("Admin", "yes");
cookie.Expires = DateTime.Now.AddDays(1);
Response.AppendCookie(cookie);
Response.Redirect("default.aspx");
dr.Dispose();
}
else
{
Response.Write("<script>alert('请输入正确的帐号和密码');");
Response.Write("javascript:window.top.location.href='login.aspx';</script>");
}
}
}
2.2.2 部分功能模块设计及部分代码
2.2.2.1管理员注册模块设计
此部分主要用于管理员的注册,及其密码的修改。
2.2.2.2基本资料管理模块设计及部分代码
添加仓库
此部分主要用于添加仓库的具体信息。
添加供货商
此部分主要用于家庭各个供应商的具体信息。
添加商品
此部分主要用于添加各种商品信息。
商品库存设置
该部分设置库存数量的最低数量和最高数量,超过这两个限度,系统据会报警
产品库存设置部分代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class kcsz : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bind();
}
}
public void bind()
{
SqlDataReader dr = SqlHelper.ExecuteReader(CommandType.Text, "select * from product", null);
DataTable dt = SystemTools.ConvertDataReaderToDataTable(dr);
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
dr.Close();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int id = int.Parse(this.GridView1.DataKeys[e.RowIndex].Value.ToString());
SqlParameter product_id = SqlHelper.CreateParam("@product_id", SqlDbType.Int, 4, ParameterDirection.Input, id);
SqlHelper.ExecuteNonQuery(CommandType.Text, "delete product where product_id=@product_id", product_id);
bind();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
//e.NewPageIndex = this.GridView1.PageIndex + 1;
bind();
}
}
2.2.2.3进货模块设计及部分代码
该部分主要用于录入进货的各种信息,包括商品名称、进货价格、进货数量、存放仓库、供货商和进货时间等信息。
添加进货部分代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class add_save : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
bind();
}
}
public void bind()
{
SqlDataReader dr_ck = SqlHelper.ExecuteReader(CommandType.Text, "select * from ck", null);
DataTable dt_ck = SystemTools.ConvertDataReaderToDataTable(dr_ck);
this.ddl_ck.DataSource = dt_ck;
this.ddl_ck.DataTextField ="ck";
this.ddl_ck.DataBind();
//绑定供货商
SqlDataReader dr_ghs = SqlHelper.ExecuteReader(CommandType.Text, "select * from ghs", null);
DataTable dt_ghs = SystemTools.ConvertDataReaderToDataTable(dr_ghs);
this.ddl_ghs.DataSource=dt_ghs;
this.ddl_ghs.DataTextField="g_name";
this.ddl_ghs.DataBind();
//绑定商品列表
SqlDataReader dr_product = SqlHelper.ExecuteReader(CommandType.Text, "select * from product", null);
DataTable dt_product= SystemTools.ConvertDataReaderToDataTable(dr_product);
this.ddl_product.DataSource = dt_product;
this.ddl_product.DataTextField = "name";
this.ddl_product.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlParameter name = SqlHelper.CreateParam("@name", SqlDbType.VarChar, 50, ParameterDirection.Input,this.ddl_product.SelectedValue.ToString().Trim());
SqlParameter in_price= SqlHelper.CreateParam("@in_price", SqlDbType.Decimal,8, ParameterDirection.Input,this.tb_inprice.Text.ToString().Trim());
SqlParameter in_number=SqlHelper.CreateParam("@in_number", SqlDbType.Int,4, ParameterDirection.Input, int.Parse(this.tb_innumber.Text.ToString().Trim()));
SqlParameter ck = SqlHelper.CreateParam("@ck", SqlDbType.VarChar, 50, ParameterDirection.Input, ddl_ck.SelectedValue.ToString().Trim());
SqlParameter ghs = SqlHelper.CreateParam("@ghs", SqlDbType.VarChar, 50, ParameterDirection.Input, ddl_ghs.SelectedValue.ToString().Trim());
SqlParameter in_date = SqlHelper.CreateParam("@in_date", SqlDbType.DateTime, 8, ParameterDirection.Input, DateTime.Now.ToShortDateString());
SqlParameter[] paralist =
{
name,in_price,in_number,ck,ghs,in_date
};
SqlHelper.ExecuteNonQuery(CommandType.StoredProcedure,"pr_insert_tsave", paralist);
Response.Write("<script>alert('数据添加成功!');");
Response.Write("javascript:window.location.href='add_save.aspx';</script>");
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("add_save.aspx");
}
}
2.2.2.4销售模块设计及部分代码
添加出货
用于记录货物的出库信息,包括商品名称、定货单、销售价格、销售数量和出货仓库等信息。
商品销售部分代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class add_out : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
bind();
}
}
public void bind()
{
SqlDataReader dr_ck = SqlHelper.ExecuteReader(CommandType.Text, "select * from ck", null);
DataTable dt_ck = SystemTools.ConvertDataReaderToDataTable(dr_ck);
this.ddl_ck.DataSource = dt_ck;
this.ddl_ck.DataTextField ="ck";
this.ddl_ck.DataBind();
//绑定商品列表
SqlDataReader dr_product = SqlHelper.ExecuteReader(CommandType.Text, "select * from product", null);
DataTable dt_product= SystemTools.ConvertDataReaderToDataTable(dr_product);
this.ddl_product.DataSource = dt_product;
this.ddl_product.DataTextField = "name";
this.ddl_product.DataBind();
//绑定订单号
SqlDataReader dr_order = SqlHelper.ExecuteReader(CommandType.Text, "select * from myorder", null);
DataTable dt_order = SystemTools.ConvertDataReaderToDataTable(dr_order);
this.ddl_order.DataSource = dt_order;
this.ddl_order.DataTextField = "order_number";
this.ddl_order.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
SqlParameter name = SqlHelper.CreateParam("@name", SqlDbType.VarChar, 50, ParameterDirection.Input,this.ddl_product.SelectedValue.ToString().Trim());
SqlParameter order_number=SqlHelper.CreateParam("@order_number", SqlDbType.VarChar, 50, ParameterDirection.Input, this.ddl_order.SelectedValue.ToString().Trim());
SqlParameter out_price = SqlHelper.CreateParam("@out_price", SqlDbType.Decimal, 8, ParameterDirection.Input, th
展开阅读全文