一 引言
随着时代技术的进步,商品的进销存管理系统已经很广泛的应用于各个企业,逐渐的代替了之前的繁琐、耗时又不省力的手工管理方式。
本文基于.NET技术、采用C#编程语言对日常进销存管理系统进行开发,并使用SQL Server 作为数据库来存储数据信息。系统根据公司业务特点,主要实现了对企业的进货、销售、库存、员工等信息进行管理和操作。 进销存管理系统的建立,能更好的对企业的管理提高效率和降低人工管理带来的失误,大大提高了企业的经济收入和社会效益,对企业的发展提供重大的帮助。
二 技术与工具简介
本系统采用的相关技术为C/S开发模式和C#编程语言。
本进销存系统采用的模式是C/S开发模式,即Client/Server(客户机/服务器)结构[3]。C/S是微型计算机普遍存在的软件系统体系结构[4]。C/S模式通过将任务合理分配到Client端和Server端完成两端各自的使命,降低了系统的通讯开销,充分利用了C/S硬件环境的优势[5]。不管是早期还是现在的个人计算机都普遍以C/S模式设计软件系统。
本系统数据库采用的是SQL Server 2008,这个数据库具有很多的优点,不仅有很高的安全性,很强的准确性,运行的速度之快也是令开发者非常的满意,并且有很高的效率,能处理很多的数据[9]。而开发语言采用C#面向对象语言,开发工具采用Visual Studio 2015(可升级当前开发工具)
三 系统框架介绍
进销存管理系统是一个企业不可或缺的部分,它提供的内容对于企业的领导者来说是至关重要的[20]。所以进销存管理系统必须要能为用户提供充足的信息和快捷的查询手段[21]。本系统对企业中的进货,销售,库存等业务以及相关的产品信息,进销存的查询等进行有效管理,自动生成进货单,销售单,库存与进货和销售查询记录等。
我的进销存管理系统主要分为以下八大模块:
进货单:主要是对每笔购买入库的商品进行全方面记录。自动生成独一的进货单据并更新库存信息[22]。
销售单:主要是对每笔销售出库的商品进行全方面记录。自动生成独一的销售单据并更新库存信息。
员工管理:主要是对公司职员的基本信息根据查找条件查询,也可添加新入职员工。
基础信息管理:由管理员对公司的单位名称,组织机构代码,联系电话等基本信息进行查看和更改。
库存查询:主要是以表格文字的方式将查询到的存商品的信息显示出来。用户可以从中选择一种条件查询。
进货查询:是用户对采购入库的商品根据查找条件进行查询。
销售查询:是用户对销售出库的商品根据查找条件进行查询。(查询方式与进货查询相似)。
系统管理设置:主要用于添加用户功能,还有对系统中现有的用户更改密码功能。
登录界面
系统主界面
框架流程图
四 部分核心代码展示
1.进货单模块
进货单模块图
销售单模块图
主要代码如下:
public partial class 进货单 : Form
{
string x;
public 进货单()
{
InitializeComponent();
}
private void 进货单_Load(object sender, EventArgs e)
{
textBox1.Text = DateTime.Now.ToString("yyyyMMdd")+"JH"+ DateTime.Now.ToString("HHmmss");
textBox2.Text = DateTime.Now.ToString("yyyy-MM-dd");
x = DateTime.Now.ToString("yyyyMMdd");
}
private void button1_Click(object sender, EventArgs e)
{
DataBase2 data = new DataBase2();
String s = "insert into 进货表 values ('" + textBox1.Text + "','" + textBox3.Text + "','" + textBox5.Text + "','" + textBox6.Text + "','" + textBox4.Text + "','" + textBox8.Text + "','" + textBox9.Text + "','" + textBox10.Text + "','" + x + "')";
data.Add(s);
s = "Select 商品编号 from 库存单 where 商品编号 ='"+ textBox5.Text+"'";
if (data.Select(s))
{
s = "Update 库存单 set 库存量=库存量 +" + int.Parse(textBox8.Text) + " where 商品编号='" + textBox5.Text + "'";
data.Upadata(s);
}
else
{
s = "insert into 库存单 values ('" + textBox5.Text + "','" + textBox6.Text + "','" + textBox8.Text + "','" + int.Parse(textBox9.Text) * (1 + 0.2) + "')";
data.Add(s);
}
MessageBox.Show("进货成功", "成功提示提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
private void button2_Click(object sender, EventArgs e)
{
this.Visible = false;
}
private void textBox10_TextChanged(object sender, EventArgs e)
{
int n1, n2;
if (int.TryParse(textBox8.Text,out n1) && int.TryParse(textBox9.Text, out n2))
textBox10.Text = (int.Parse(textBox8.Text) * int.Parse(textBox9.Text)).ToString();
else
textBox10.Text =string.Empty;
}
}
2.销售查询模块
销售查询模块
进货查询模块
主要代码如下:
public partial class 销售查询 : Form
{
public 销售查询()
{
InitializeComponent();
}
private void 销售查询_Load(object sender, EventArgs e)
{
button1_Click(sender, e);
}
private void button1_Click(object sender, EventArgs e)
{
string s;
DataBase2 data = new DataBase2();
if(time1.Text==string.Empty|| time2.Text == string.Empty)
s = "select * from dbo.销售单";
else
s = "select * from dbo.销售单 where 时间 >= " + int.Parse(time1.Text) + "and 时间 <=" + int.Parse(time2.Text);
data.Select(s, dataGridView1);
}
}
3.库存查询模块
主要代码如下:
public partial class 库存查询 : Form
{
public 库存查询()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string s;
DataBase2 data = new DataBase2();
if (comboBox1.Text == string.Empty && comboBox2.Text == string.Empty)
{
// MessageBox.Show(comboBox1.Text, "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
s = "select * from dbo.库存单";
}
else
s = "select * from dbo.库存单 where" + " 商品名称 ='" + comboBox1.Text + "' or " + " 商品编号 ='" + comboBox2.Text + "'";
data.Select(s, dataGridView1);
}
private void 库存查询_Load(object sender, EventArgs e)
{
button1_Click(sender,e);
}
private void comboBox1_MouseDown(object sender, MouseEventArgs e)
{
DataBase2 data = new DataBase2();
DataSet ds = new DataSet();
string s = "select * from 库存单";
int i=0;
data.Select(s,ds,comboBox1,"商品名称");
}
private void comboBox2_MouseDown(object sender, MouseEventArgs e)
{
DataBase2 data = new DataBase2();
DataSet ds = new DataSet();
string s = "select * from 库存单";
int i = 0;
data.Select(s, ds, comboBox2, "商品编号");
}
}
数据库连接代码如下:
class DataBase2
{
private SqlConnection con= new SqlConnection("Data Source=(local);DataBase=JYYM;User ID=sa;PWD=sa"); //创建连接对象
public void Select(String s, DataGridView dataGridView1) {
SqlCommand MyCommand = new SqlCommand(s, con); //定义一个数据库操作指令
SqlDataAdapter SelectAdapter = new SqlDataAdapter();//定义一个数据适配器
SelectAdapter.SelectCommand = MyCommand;//定义数据适配器的操作指令
DataSet MyDataSet = new DataSet();//定义一个数据集
try
{
con.Open();//打开数据库连接
SelectAdapter.SelectCommand.ExecuteNonQuery();//执行数据库查询指令
con.Close();//关闭数据库
SelectAdapter.Fill(MyDataSet);//填充数据集
dataGridView1.DataSource = MyDataSet.Tables[0].DefaultView;
}
catch (Exception ex)
{
return;
}
}
public DataSet Select(string s,int i) {
SqlCommand MyCommand = new SqlCommand(s, con); //定义一个数据库操作指令
SqlDataAdapter SelectAdapter = new SqlDataAdapter();//定义一个数据适配器
SelectAdapter.SelectCommand = MyCommand;//定义数据适配器的操作指令
DataSet ds = new DataSet();
try
{
con.Open();//打开数据库连接
SelectAdapter.SelectCommand.ExecuteNonQuery();//执行数据库查询指令
con.Close();//关闭数据库
SelectAdapter.Fill(ds);//填充数据集
}
catch { }
return ds;
}
public Boolean Select(String s) {
SqlCommand MyCommand = new SqlCommand(s, con); //定义一个数据库操作指令
SqlDataAdapter SelectAdapter = new SqlDataAdapter();//定义一个数据适配器
SelectAdapter.SelectCommand = MyCommand;//定义数据适配器的操作指令
DataSet MyDataSet = new DataSet();//定义一个数据集
try
{
con.Open();//打开数据库连接
SelectAdapter.SelectCommand.ExecuteNonQuery();//执行数据库查询指令
con.Close();//关闭数据库
SelectAdapter.Fill(MyDataSet);//填充数据集
if (MyDataSet.Tables[0].Rows.Count > 0)
{
return true;
}else
return false;
}
catch (Exception ex)
{
return false;
}
}
public void Select(String s,ComboBox comboBox,String ss)
{
SqlCommand MyCommand = new SqlCommand(s, con); //定义一个数据库操作指令
SqlDataAdapter SelectAdapter = new SqlDataAdapter();//定义一个数据适配器
SelectAdapter.SelectCommand = MyCommand;//定义数据适配器的操作指令
DataSet ds = new DataSet();//定义一个数据集
try
{
con.Open();//打开数据库连接
SelectAdapter.SelectCommand.ExecuteNonQuery();//执行数据库查询指令
con.Close();//关闭数据库
SelectAdapter.Fill(ds);//填充数据集
int i = 0;
int count = ds.Tables[0].Rows.Count;
comboBox.Items.Clear();
while (count > 0)
{
comboBox.Items.Add(ds.Tables[0].Rows[i][ss].ToString());
count--;
i++;
}
}
catch (Exception ex)
{
return ;
}
}
public void Add(String s) {
con= new SqlConnection("Data Source=(local);DataBase=JYYM;User ID=sa;PWD=sa");
SqlCommand MyCommand = new SqlCommand(s, con);
try//异常处理
{
con.Open();
MyCommand.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
MessageBox.Show("插入数据失败", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
public void Upadata(String s) {
con = new SqlConnection("Data Source=(local);DataBase=JYYM;User ID=sa;PWD=sa");
SqlCommand MyCommand = new SqlCommand(s,con);
try
{
con.Open();
MyCommand.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
return;
}
}
public void Delete(String s) {
con = new SqlConnection("Data Source=(local);DataBase=JYYM;User ID=sa;PWD=sa");
SqlCommand MyCommand = new SqlCommand(s, con);
try
{
con.Open();
MyCommand.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
return;
}
}