(1)进货员表
中文字段名 字段类型 长度 主键/外键 字段值约束
职工编号 int 主键 NOT NULL
姓名 nchar 20 NOT NULL
性别 nchar 4 NOT NULL
年龄 int NULL
(2)用户表
中文字段名 字段类型 长度 主键/外键 字段值约束
帐号 nchar 20 主键 NOT NULL
密码 nchar 20 NOT NULL
权限 int NOT NULL
(3)商品进货表
中文字段名 字段类型 长度 主键/外键 字段值约束
商品编号 int 主键 NOT NULL
供货商号 int 外键 NOT NULL
名称 nchar 20 NOT NULL
单价 money NOT NULL
进货数量 int NOT NULL
(4)供货商表
中文字段名 字段类型 长度 主键/外键 字段值约束
供货商号 int 主键 NOT NULL
名称 nchar 20 NOT NULL
联系电话 nchar 20 NOT NULL
联系地址 nchar 30 NOT NULL
(5)付款表
中文字段名 字段类型 长度 主键/外键 字段值约束
订单号 int 主键 NOT NULL
订单总额 money NOT NULL
进货员编号 Int 外键 NOT NULL
进货日期 datetime NOT NULL
(6)库存表
中文字段名 字段类型 长度 主键/外键 字段值约束
商品编号 int 主键 NOT NULL
库存数量 int NOT NULL
仓库名 nchar 20 NOT NULL
仓库编号 int NOT NULL
系统功能结构图:
新建C# windows窗体项目后,连接数据库
连接服务器后,选择使用的数据库即可。
使用VS的工具箱中的控件,进行对Form的编辑 效果如图
值得一提的是数据视图(报表)DataGridView控件,在将其拖入窗口中后,选择他,会出现一个小三角,在那里选择数据源。
数据源的建立则是在添加项目数据源中
总计有一个登录页面,一个主页面,五个表查看和操作页面
权限组分为管理员组(0)和普通员工组(11),管理员组可使用包括增删改查等所有操作,而普通员工组只能查看和查找。事实上权限方面可以再细化到具体功能的权限组,这也非常容易实施,但为了节约时间,省去这部分工作量,若有需求完全可以再加。
本系统分为五个窗口用来对表进行操作,包括增删改查这几个功能。
这里选择一个窗口的代码进行示例
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.VisualBasic;
namespace WindowsFormsApp1
{
public partial class Form6 : Form
{
public Form6(string qxz)
{
InitializeComponent();
if (qxz != "0")
{
gy_add.Enabled = false;
gy_del.Enabled = false;
gy_updata.Enabled = false;
gy_save.Enabled = false;
}
}
private void Form6_Load(object sender, EventArgs e)
{
// TODO: 这行代码将数据加载到表“进货管理DataSet.供货商表”中。您可以根据需要移动或删除它。
this.供货商表TableAdapter.Fill(this.进货管理DataSet.供货商表);
}
private void Label1_Click(object sender, EventArgs e)
{
}
private void Gy_add_Click(object sender, EventArgs e) //按下增加按钮
{
string gysh = gy_gysh.Text.Trim();
string mc = gy_mc.Text.Trim();
string lxdh = gy_lxdh.Text.Trim();
string lxdz = gy_lxdz.Text.Trim();
SqlConnection cnn;
cnn = new SqlConnection("Data Source=LAPTOP-06AB52J0;Initial Catalog=进货管理;Integrated Security=True");
string sqlstr = " ";
if (gysh.Length != 0 && mc.Length != 0 && lxdh.Length != 0 && lxdz.Length != 0)
sqlstr = "insert into 供货商表 values(" + gysh + ",'" + mc + "'," + lxdh + ",'" + lxdz + "')";
else
MessageBox.Show("不要留空!");
SqlCommand sqlcmd = new SqlCommand(sqlstr, cnn);
cnn.Open();
sqlcmd.ExecuteNonQuery();
string find = "select 供货商号,名称,联系电话,联系地址"
+ " from 供货商表";
SqlDataAdapter myDa = new SqlDataAdapter(find, cnn);
DataSet DS = new DataSet();
myDa.Fill(DS);
dataGridView1.DataSource = DS.Tables[0];
cnn.Close();
}
private void Gy_select_Click(object sender, EventArgs e)//按下查找按钮
{
string gysh = gy_gysh.Text.Trim();
string mc = gy_mc.Text.Trim();
string lxdh = gy_lxdh.Text.Trim();
string lxdz = gy_lxdz.Text.Trim();
SqlConnection cnn;
cnn = new SqlConnection("Data Source=LAPTOP-06AB52J0;Initial Catalog=进货管理;Integrated Security=True");
cnn.Open();
string find = "select 供货商号,名称,联系电话,联系地址"
+ " from 供货商表";
if (gysh.Length != 0 || mc.Length != 0 || lxdh.Length != 0 || lxdz.Length != 0)
{
find += " where 供货商号=供货商号 ";
if (gysh.Length != 0)
find += " AND 供货商号=" + gysh;
if (mc.Length != 0)
find += "AND 名称= '"+ mc +"'";
if (lxdh.Length != 0)
find += " AND 联系电话=" + lxdh;
if (lxdz.Length != 0)
find += " AND 联系地址='" + lxdz +"'";
}
SqlDataAdapter myDa = new SqlDataAdapter(find, cnn);
DataSet DS = new DataSet();
myDa.Fill(DS);
dataGridView1.DataSource = DS.Tables[0];
cnn.Close();
}
private void Gy_del_Click(object sender, EventArgs e)//按下删除按钮
{
string gysh = gy_gysh.Text.Trim();
string mc = gy_mc.Text.Trim();
string lxdh = gy_lxdh.Text.Trim();
string lxdz = gy_lxdz.Text.Trim();
SqlConnection cnn;
cnn = new SqlConnection("Data Source=LAPTOP-06AB52J0;Initial Catalog=进货管理;Integrated Security=True");
string sqlstr = " ";
if (gysh.Length != 0 || mc.Length != 0 || lxdh.Length != 0 || lxdz.Length != 0)
{
sqlstr += "delete from 供货商表"
+ (" where 供货商号 != -1");
if (gysh.Length != 0)
sqlstr += " AND 供货商号= " + gysh;
if (mc.Length != 0)
sqlstr += " AND 名称= '" + mc + "'";
if (lxdh.Length != 0)
sqlstr += " AND 联系电话 = " + lxdh;
if (lxdz.Length != 0)
sqlstr += " AND 联系地址 = '" + lxdz + "'";
}
SqlCommand sqlcmd = new SqlCommand(sqlstr, cnn);
cnn.Open();
sqlcmd.ExecuteNonQuery();
string find = "select 供货商号,名称,联系电话,联系地址"
+ " from 供货商表";
SqlDataAdapter myDa = new SqlDataAdapter(find, cnn);
DataSet DS = new DataSet();
myDa.Fill(DS);
dataGridView1.DataSource = DS.Tables[0];
cnn.Close();
}
private void Gy_updata_Click(object sender, EventArgs e)//按下修改按钮
{
string gysh = gy_gysh.Text.Trim();
string mc = gy_mc.Text.Trim();
string lxdh = gy_lxdh.Text.Trim();
string lxdz = gy_lxdz.Text.Trim();
SqlConnection cnn;
cnn = new SqlConnection("Data Source=LAPTOP-06AB52J0;Initial Catalog=进货管理;Integrated Security=True");
string sqlstr = " ";
string str = Interaction.InputBox("请输入要改动的内容,格式为列名='XX'", "修改", "", 100, 100);
if (gysh.Length != 0 || mc.Length != 0 || lxdh.Length != 0 || lxdz.Length != 0)
{
sqlstr += "update 供货商表 set "
+(" ")+str
+ (" where 供货商号=供货商号");
if (gysh.Length != 0)
sqlstr += " AND 供货商号= " + gysh;
if (mc.Length != 0)
sqlstr += " AND 名称= '" + mc + "'";
if (lxdh.Length != 0)
sqlstr += " AND 联系电话 = " + lxdh;
if (lxdz.Length != 0)
sqlstr += " AND 联系地址 = '" + lxdz + "'";
}
SqlCommand sqlcmd = new SqlCommand(sqlstr, cnn);
cnn.Open();
sqlcmd.ExecuteNonQuery();
string find = "select 供货商号,名称,联系电话,联系地址"
+ " from 供货商表";
SqlDataAdapter myDa = new SqlDataAdapter(find, cnn);
DataSet DS = new DataSet();
myDa.Fill(DS);
dataGridView1.DataSource = DS.Tables[0];
cnn.Close();
}
private void Gy_cancel_Click(object sender, EventArgs e)//按下取消按钮
{
gy_gysh.Clear();
gy_mc.Clear();
gy_lxdh.Clear();
gy_lxdz.Clear();
}
private void Gy_back_Click(object sender, EventArgs e)//按下返回上一层按钮
{
this.Close();
}
}
}
预计做这几个统计功能
因为统计功能的实质其实就是简单的SQL语言查询,所以并不打算花太大精力搞,还是那句话,有需求就能实现。
效果如下
利用Form.BackgroundImage,给窗体添加背景。
本次课设难度不高,也只是简单的做了一个管理系统,所以没什么总结。
值得一提的是多个Form之间传递数据的方法最方便的是在Form构造函数处添加一个变量,即让Form类需求一个外部参数,我本次的权限功能就是这样实现的。