设计思路及框架设计:

项目结构:

1.默认登录界面、注册功能设计

通过SqlConnection连接数据库,SqlCommand执行查询语句,ExecuteScalar()方法返回的结果判断是否查询到数据,决定是否登录!

判断是否查询到用户,决定是否注册成功!

2.主界面设计

主界面提供各管理页面的入口链接以及仓库环境监测功能!

环境监测采用用户控件的方式,通过SerialPort获取外设串口,再监测BytesToRead获取串口数据,最后传入的数据进行字符串解析,把相应值传入DrawLine,实现动态折线图页面!

3.商品管理页面设计

商品管理主页面,由SqlDataAdapter获取数据,通过DataTable展示页面,Fill填充数据到页面,ItemsSource设置页面的资源列表!
商品添加页面:

 添加数据不能为空,获取填充数据进行insert SQL语句插入。
商品删除、修改操作:

     通过cs验证库存,库存不为0的不可进行删改操作!

4.入库管理界面设计

入库功能界面采用DataTable显示入库表,采用comboBox控件显示仓库中的商品,入库时插入入库记录并刷新仓库中的库存,达到入库功能!
删除入库记录功能:

 删除不必要的入库记录!并刷新页面数据!

5.出库管理界面设计

出库功能与入库功能相似,主要是修改库存之中的数据!

但当库存不足时,通过先行查找库存之中的数据进行校验,不足时提示出库失败!

6.用户管理界面

通过用户管理界面方便进行管理登录仓库账号!

因云盘易失效,故附项目源码如下:

MainWindow.xaml

<Window x:Class="goodsdb.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:goodsdb"mc:Ignorable="d"Title="登录界面" Height="450" Width="860"><Grid><TextBox x:Name="username" HorizontalAlignment="Left" Margin="360,146,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><PasswordBox x:Name="password" HorizontalAlignment="Left" Margin="360,187,320,0" VerticalAlignment="Top" Width="120"/><TextBlock HorizontalAlignment="Left" Margin="292,146,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Language="zh-cn" Text="用户名:"/></TextBlock><TextBlock HorizontalAlignment="Left" Margin="292,187,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Language="zh-cn" Text="密码:"/></TextBlock><Button Content="注册" HorizontalAlignment="Left" Margin="324,241,0,0" VerticalAlignment="Top" Click="Button_Click"/><Button Content="登录" HorizontalAlignment="Left" Margin="423,242,0,0" VerticalAlignment="Top" Click="Button_Click_1"/></Grid>
</Window>

MainWindow.xaml.cs

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace goodsdb
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}private void Button_Click(object sender, RoutedEventArgs e){view.regist user = new view.regist();user.Show();}private void Button_Click_1(object sender, RoutedEventArgs e){if (username.Text != "" | password.Password != ""){SqlConnection connection = new SqlConnection("Address=localhost;Database=commoditydb;integrated security=SSPI");connection.Open();SqlCommand command = new SqlCommand("select * from user_t where username = '" + username.Text + "' and password = '" + password.Password + "'", connection);if (command.ExecuteScalar() != null){MessageBox.Show("用户: "+username.Text +" 登陆成功!");view.main user2 = new view.main();user2.Show();this.Close();}else{MessageBox.Show("用户名或密码错误!");}}else{MessageBox.Show("用户名或密码不能为空!");}}}
}

main.xaml

<Windowxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:goodsdb.view"xmlns:tu="clr-namespace:goodsdb.tu" x:Class="goodsdb.view.main"mc:Ignorable="d"Title="主界面" Height="450" Width="800" Loaded="Window_Loaded_1" Closing="Window_Closing_1"><Grid><Button Content="用户管理" HorizontalAlignment="Left" Margin="78,70,0,0" VerticalAlignment="Top" Height="30" Width="74" Click="Button_Click_2"/><Button Content="商品管理" HorizontalAlignment="Left" Margin="78,133,0,0" VerticalAlignment="Top" Height="30" Width="74" Click="Button_Click_11"/><Button Content="入库管理" HorizontalAlignment="Left" Margin="78,0,0,0" VerticalAlignment="Center" Height="30" Width="74" Click="Button_Click_4"/><Button Content="出库管理" HorizontalAlignment="Left" Margin="78,262,0,0" VerticalAlignment="Top" Height="30" Width="74" Click="Button_Click_7"/><Button Content="退出" HorizontalAlignment="Left" Margin="78,332,0,0" VerticalAlignment="Top"  Width="71" Height="30" Click="Button_Click"/><Label Content="请选择串口" HorizontalAlignment="Left" Margin="197,61,0,0" VerticalAlignment="Top" Height="25" Width="82"/><ComboBox x:Name="cb_port" HorizontalAlignment="Left" Margin="277,65,0,0" VerticalAlignment="Top" Width="138" Height="21"/><Button Content="打开串口" HorizontalAlignment="Left" Margin="480,67,0,0" VerticalAlignment="Top" Width="74" Click="Button_Click_1" Height="19"/><ListBox x:Name="lb_message" HorizontalAlignment="Left" Height="22" Margin="200,150,0,0" VerticalAlignment="Top" Width="486"/><Label Content="温度" HorizontalAlignment="Left" Margin="196,92,0,0" VerticalAlignment="Top" Height="24" Width="40"/><Label Content="湿度" HorizontalAlignment="Left" Margin="335,91,0,0" VerticalAlignment="Top" Height="24" Width="40"/><Label Content="光照度" HorizontalAlignment="Left" Margin="475,91,0,0" VerticalAlignment="Top" Height="24" Width="53"/><Label x:Name="lb_wd" Content="N/A" HorizontalAlignment="Left" Margin="248,92,0,0" VerticalAlignment="Top" Height="24" Width="39"/><Label x:Name="lb_sd" Content="N/A" HorizontalAlignment="Left" Margin="384,92,0,0" VerticalAlignment="Top" Height="24" Width="39"/><Label x:Name="lb_gzd" Content="N/A" HorizontalAlignment="Left" Margin="538,94,0,0" VerticalAlignment="Top" Height="24" Width="44"/><Label Content="LED1" HorizontalAlignment="Left" Margin="195,122,0,0" VerticalAlignment="Top" Height="24" Width="45"/><Label x:Name="lb_led1" Content="N/A" HorizontalAlignment="Left" Margin="247,122,0,0" VerticalAlignment="Top" Height="24" Width="39"/><Label Content="LED2" HorizontalAlignment="Left" Margin="477,122,0,0" VerticalAlignment="Top" Height="24" Width="45"/><Label x:Name="lb_led2" Content="N/A" HorizontalAlignment="Left" Margin="540,122,0,0" VerticalAlignment="Top" Height="24" Width="38"/><Button x:Name="bt_led1" Content="N/A" HorizontalAlignment="Left" Margin="300,126,0,0" VerticalAlignment="Top" Width="87" Click="bt_led1_Click" Height="18"/><Button x:Name="bt_led2" Content="N/A" HorizontalAlignment="Left" Margin="600,125,0,0" VerticalAlignment="Top" Width="87" Click="bt_led2_Click" Height="18"/><Button Content="关闭串口" HorizontalAlignment="Left" Margin="580,66,0,0" VerticalAlignment="Top" Width="69" Click="Button_Click_3" Height="19"/><Label Content="仓库" HorizontalAlignment="Left" Margin="364,12,0,0" VerticalAlignment="Top" FontSize="20" RenderTransformOrigin="0.026,0.272"/><tu:CurveControl HorizontalAlignment="Left" Margin="198,181,0,0" VerticalAlignment="Top" x:Name="wdCurveCtr"/><tu:CurveControl HorizontalAlignment="Left" Margin="365,181,0,0" VerticalAlignment="Top" x:Name="sdCurveCtr"/><tu:CurveControl HorizontalAlignment="Left" Margin="535,182,0,0" VerticalAlignment="Top" x:Name="CurveCtr"/><Label Content="温度" HorizontalAlignment="Left" Margin="250,385,0,0" VerticalAlignment="Top"/><Label Content="湿度" HorizontalAlignment="Left" Margin="418,384,0,0" VerticalAlignment="Top"/><Label Content="光感度" HorizontalAlignment="Left" Margin="598,383,0,0" VerticalAlignment="Top"/></Grid>
</Window>

main.xaml.cs

using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Text;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;namespace goodsdb.view
{/// <summary>/// main.xaml 的交互逻辑/// </summary>public partial class main : Window{public main(){InitializeComponent();}Thread timer;private void Window_Closing_1(object sender, System.ComponentModel.CancelEventArgs e){//timer.Abort();//timer = null;}private void Button_Click(object sender, RoutedEventArgs e){MainWindow user = new MainWindow();user.Show();this.Close();}private void Button_Click_11(object sender, RoutedEventArgs e){commodity.goodsmanagement user = new commodity.goodsmanagement();user.Show();this.Close();}private void Button_Click_2(object sender, RoutedEventArgs e){view.usermanagement user = new view.usermanagement();user.Show();this.Close();}private void Window_Loaded_1(object sender, RoutedEventArgs e){string[] ports = SerialPort.GetPortNames();foreach (string port in ports){cb_port.Items.Add(port);}}SerialPort port;byte[] ip = new byte[2];private void Button_Click_1(object sender, RoutedEventArgs e){port = new SerialPort(cb_port.SelectedValue.ToString(), 38400);port.Open();port.DataReceived += datareceived;CurveCtr.DrawBackground();}private void datareceived(object sender, SerialDataReceivedEventArgs e){Thread.Sleep(20);int n = port.BytesToRead;if (n > 10){byte[] data = new byte[n];port.Read(data, 0, n);ip[0] = data[4];ip[1] = data[5];string content = Encoding.Default.GetString(data, 9, n - 11);string[] datas = content.Split(',');if (datas.Length == 1){int LED = int.Parse(datas[0].Remove(0, 3));Dispatcher.Invoke(() =>{if ((LED & 128) == 128){lb_led1.Content = "亮";bt_led1.Content = "关";}else{lb_led1.Content = "灭";bt_led1.Content = "开";}if ((LED & 64) == 64){lb_led2.Content = "亮";bt_led2.Content = "关";}else{lb_led2.Content = "灭";bt_led2.Content = "开";}});}else{int LED = int.Parse(datas[7].Remove(0, 3));Dispatcher.Invoke(() =>{lb_message.Items.Add(content);lb_wd.Content = datas[0].Remove(0, 3);lb_sd.Content = datas[1].Remove(0, 3);lb_gzd.Content = datas[2].Remove(0, 3);Dispatcher.Invoke(new Action(() =>{double wd = Convert.ToDouble(datas[0].Remove(0, 3));double sd = Convert.ToDouble(datas[1].Remove(0, 3));double gzd = Convert.ToDouble(datas[2].Remove(0, 3));wdCurveCtr.DrawLine(wd);sdCurveCtr.DrawLine(sd);CurveCtr.DrawLine(gzd);}));if ((LED & 128) == 128){lb_led1.Content = "亮";bt_led1.Content = "关";}else{lb_led1.Content = "灭";bt_led1.Content = "开";}if ((LED & 64) == 64){lb_led2.Content = "亮";bt_led2.Content = "关";}else{lb_led2.Content = "灭";bt_led2.Content = "开";}});}}else{port.DiscardInBuffer();}}private void bt_led1_Click(object sender, RoutedEventArgs e){string cmd;if (bt_led1.Content.ToString() == "开"){cmd = "OD1=128";control(cmd);}else{cmd = "CD1=128";control(cmd);}}private void bt_led2_Click(object sender, RoutedEventArgs e){string cmd;if (bt_led2.Content.ToString() == "开"){cmd = "OD1=64";control(cmd);}else{cmd = "CD1=64";control(cmd);}}private void control(string cmd){string control = "{" + cmd + ",D1=?}";int lenght = control.Length + 10;byte[] data = new byte[lenght];data[0] = 0xFE;data[1] = byte.Parse((control.Length + 5).ToString());data[2] = 0x29;data[3] = 0x00;data[4] = 0x02;ip.CopyTo(data, 5);data[7] = 0x00;data[8] = 0x00;byte[] controls = Encoding.Default.GetBytes(control);controls.CopyTo(data, 9);byte jiaoyan = 0;for (int i = 1; i < lenght - 1; i++){jiaoyan ^= data[i];}data[lenght - 1] = jiaoyan;port.Write(data, 0, lenght);}private void Button_Click_3(object sender, RoutedEventArgs e){port.Close();}private void Button_Click_4(object sender, RoutedEventArgs e){record.delivermanagement deli = new record.delivermanagement();deli.Show();this.Close();}private void Button_Click_7(object sender, RoutedEventArgs e){record.housingmanagement deli = new record.housingmanagement();deli.Show();this.Close();}}
}

regist.xaml

<Window x:Class="goodsdb.view.regist"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:goodsdb.view"mc:Ignorable="d"Title="注册页面" Height="300" Width="360"><Grid><TextBox x:Name="username" HorizontalAlignment="Left" Margin="136,50,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><PasswordBox x:Name="password" HorizontalAlignment="Left"  Margin="136,89,0,0" VerticalAlignment="Top" Width="120"/><PasswordBox x:Name="passwordtest" HorizontalAlignment="Left"  Margin="136,120,0,0" VerticalAlignment="Top" Width="120"/><TextBlock HorizontalAlignment="Left" Margin="69,51,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.075,0.706"><Run Language="zh-cn" Text="用户名:"/></TextBlock><TextBlock HorizontalAlignment="Left" Margin="68,88,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Language="zh-cn" Text="密码:"/></TextBlock><TextBlock HorizontalAlignment="Left" Margin="70,120,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Text="确认密码:"/><Button Content="注册" HorizontalAlignment="Left" Margin="99,177,0,0" VerticalAlignment="Top" Click="Button_Click" Height="20" Width="40"/><Button Content="取消" HorizontalAlignment="Left" Margin="185,176,0,0" VerticalAlignment="Top" Click="Button_Click_1" Height="20" Width="40"/></Grid>
</Window>

regist.xaml.cs

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;namespace goodsdb.view
{/// <summary>/// regist.xaml 的交互逻辑/// </summary>public partial class regist : Window{public regist(){InitializeComponent();}private void Button_Click(object sender, RoutedEventArgs e){if (username.Text != "" | password.Password != "" | passwordtest.Password != ""){if (password.Password == passwordtest.Password){string user = username.Text;string pwd = password.Password;string sql1 = "select * from user_t where username='" + user + "'";string sql2 = "insert into user_t(username,password) values('" + user + "','" + pwd + "')";string sql = "Address=localhost;Database=commoditydb;integrated security=SSPI";SqlConnection connection = new SqlConnection();try{connection.ConnectionString = sql;connection.Open();//MessageBox.Show("连接到数据库!");}catch (Exception ex){MessageBox.Show("错误信息:" + ex.Message, "无法连接到数据库!");}SqlCommand command = new SqlCommand(sql1, connection);command.ExecuteNonQuery();//object Result = command.ExecuteScalar();//string result = command.ExecuteScalar().ToString();if (command.ExecuteScalar() == null){SqlCommand command1 = new SqlCommand(sql2, connection);command1.ExecuteNonQuery();MessageBox.Show(user + "  : 注册成功!");connection.Close();this.Close();}else{MessageBox.Show("用户已存在!");}}else{MessageBox.Show("密码不一致,请重新输入!");}}else{MessageBox.Show("输入不能为空!");}}private void Button_Click_1(object sender, RoutedEventArgs e){this.Close();}}
}

updatauser.xaml

<Window x:Class="goodsdb.view.updatauser"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:goodsdb.view"mc:Ignorable="d"Title="修改用户" Height="300" Width="360"><Grid><TextBox x:Name="id" HorizontalAlignment="Left" Margin="147,62,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" IsReadOnly="True"/><TextBox x:Name="username" HorizontalAlignment="Left" Margin="147,87,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><PasswordBox x:Name="password" HorizontalAlignment="Left"  Margin="147,116,0,0" VerticalAlignment="Top" Width="120"/><TextBlock HorizontalAlignment="Left" Margin="80,88,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.075,0.706"><Run Language="zh-cn" Text="用户名:"/></TextBlock><TextBlock HorizontalAlignment="Left" Margin="79,115,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Language="zh-cn" Text="密码:"/></TextBlock><TextBlock HorizontalAlignment="Left" Margin="80,63,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.075,0.706"><Run Language="zh-cn" Text="序号:"/></TextBlock><Button Content="提交修改" HorizontalAlignment="Left" Margin="152,193,0,0" VerticalAlignment="Top" Click="Button_Click"/></Grid>
</Window>

updatauser.xaml.cs

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;namespace goodsdb.view
{/// <summary>/// updatauser.xaml 的交互逻辑/// </summary>public partial class updatauser : Window{public updatauser(string id, string username, string password){InitializeComponent();this.id.Text = id;this.username.Text = username;this.password.Password = password;}private void Button_Click(object sender, RoutedEventArgs e){SqlConnection connection = new SqlConnection("Address=localhost; Database=commoditydb;integrated security=SSPI");connection.Open();string sqlstr = "update user_t set username='" + username.Text + "',password='" + password.Password + "' where id='" + id.Text + "'";SqlCommand command = new SqlCommand(sqlstr, connection);command.ExecuteNonQuery();MessageBox.Show("修改成功!");view.usermanagement user = new view.usermanagement();user.Show();this.Close();}}
}

usermanagement.xaml

<Window x:Class="goodsdb.view.usermanagement"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:goodsdb.view"mc:Ignorable="d"Title="用户管理" Height="450" Width="800"><Grid><DataGrid x:Name="dg" Margin="144,65,143,66" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" ><DataGrid.Columns><DataGridTextColumn Header="序号:" Width="100" Binding="{Binding id}"/><DataGridTextColumn Header="用户名:" Width="100" Binding="{Binding username}"/><DataGridTextColumn Header="密码:" Width="100" Binding="{Binding password}"/></DataGrid.Columns></DataGrid><Button Content="返回" HorizontalAlignment="Left" Margin="642,387,0,0" VerticalAlignment="Top" Click="Button_Click" Width="56" Height="26"/><Button Content="修改" HorizontalAlignment="Left" Margin="115,384,0,0" VerticalAlignment="Top" Click="Button_Click_2" Width="56" Height="26"/><Button Content="删除" HorizontalAlignment="Left" Margin="374,389,0,0" VerticalAlignment="Top" Click="Button_Click_3" Width="56" Height="26"/><Label Content="用户管理" HorizontalAlignment="Left" Margin="335,20,0,0" VerticalAlignment="Top" FontSize="20" RenderTransformOrigin="0.026,0.272"/></Grid>
</Window>

usermanagement.xaml.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;namespace goodsdb.view
{/// <summary>/// goods.xaml 的交互逻辑/// </summary>public partial class usermanagement : Window{public usermanagement(){InitializeComponent();SqlDataAdapter da = new SqlDataAdapter("select *  from user_t", "Server=localhost;Database=commoditydb;integrated security=SSPI");DataTable dt = new DataTable();da.Fill(dt);//DataRow dr = dt.NewRow();//dr["id"] = 9;//dr[1] = 9;//dr[2] = 9;//dr[3] = 9;//dt.Rows.Add(dr);dg.ItemsSource = dt.DefaultView;        //表单显示//da.Update(dt);}private void Button_Click(object sender, RoutedEventArgs e){view.main main = new view.main();main.Show();this.Close();}private void Button_Click_3(object sender, RoutedEventArgs e){if (dg.SelectedItem != null){DataRowView dr = (DataRowView)dg.SelectedItem;string username = dr[1].ToString();SqlConnection connection = new SqlConnection("Address=localhost; Database=commoditydb;integrated security=SSPI");connection.Open();string sqlstr = "delete user_t where username='" + username + "'";SqlCommand command = new SqlCommand(sqlstr, connection);command.ExecuteNonQuery();MessageBox.Show("删除成功!");SqlDataAdapter da = new SqlDataAdapter("select *  from user_t", "Server=localhost;Database=commoditydb;integrated security=SSPI");DataTable dt = new DataTable();da.Fill(dt);dg.ItemsSource = dt.DefaultView;        //表单显示}else{MessageBox.Show("删除数据未选中!");}}private void Button_Click_2(object sender, RoutedEventArgs e){if (dg.SelectedItem != null){DataRowView dr = (DataRowView)dg.SelectedItem;string id = dr[0].ToString();string username = dr[1].ToString();string password = dr[2].ToString();view.updatauser win4 = new view.updatauser(id, username, password);win4.Show();this.Close();}else{MessageBox.Show("修改数据未选中!");}}}
}

CurveControl.xaml

<UserControl x:Class="goodsdb.tu.CurveControl"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:goodsdb.tu"mc:Ignorable="d" d:DesignHeight="220" d:DesignWidth="150"  Loaded="UserControl_Loaded_1"><Grid><Canvas x:Name="grdBackground" Height="200" Width="150" HorizontalAlignment="Center" VerticalAlignment="Center" Background="#012F59"></Canvas><Grid x:Name="grdMain" Height="200" Width="150" HorizontalAlignment="Center" VerticalAlignment="Center" Background="Transparent"></Grid></Grid>
</UserControl>

CurveControl.xaml.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;namespace goodsdb.tu
{/// <summary>/// CurveControl.xaml 的交互逻辑/// </summary>public partial class CurveControl : UserControl{public CurveControl(){InitializeComponent();}#region 绘制折线/// <summary>/// X轴步长(两个顶点点X轴的距离)/// </summary>public int StepLength = 20;/// <summary>/// 顶点最多个数/// </summary>public int MaxCount = 8;/// <summary>/// 最大量程/// </summary>public int MaxReg = 150;/// <summary>/// 最小量程/// </summary>public int MinReg = 0;//底部数字列表List<TextBlock> listBottom = new List<TextBlock>();//折线图Polyline pline = new Polyline();/// <summary>/// 画线/// </summary>/// <param name="Y2">线段终点Y轴坐标</param>public void DrawLine(double Y2){//将值转换为图上坐标Y2 = grdMain.Height - (grdMain.Height / (MaxReg - MinReg)) * (Y2 - MinReg);//判断折线图顶点集合个数是否大于0if (pline.Points.Count > 0){//向折线图顶点集合添加新线段终点坐标pline.Points.Add(new Point((pline.Points[pline.Points.Count - 1].X + StepLength), Y2));//判断顶点集合个数是否超过最大个数if (MaxCount + 1 < pline.Points.Count){//将曲线及下方数字往左移动//删除第一个点pline.Points.Remove(pline.Points[0]);int ForLen = (pline.Points.Count > listBottom.Count) ? pline.Points.Count : listBottom.Count;//将点击数字往左移动一位for (int i = 0; i < ForLen; i++){if (i < pline.Points.Count){//将顶点的X轴坐标减去步长pline.Points[i] = new Point(pline.Points[i].X - StepLength, pline.Points[i].Y);}if (i < listBottom.Count){listBottom[i].Text = (int.Parse(listBottom[i].Text) + 1).ToString();}}}}else{//第一次添加顶点//设置线条颜色pline.Stroke = new SolidColorBrush(Colors.White);//设置线条宽度pline.StrokeThickness = 1;//添加第一个点pline.Points.Add(new Point(0, Y2));//将折线控件作为子控件添加到界面this.grdMain.Children.Add(pline);}}/// <summary>/// 绘制背景/// </summary>public void DrawBackground(){//清空grdBackground.Children.Clear();listBottom.Clear();ClearLines();//==============绘制底部数字及绘制Y轴方向直线//计算顶点最大个数MaxCount = (int)(grdBackground.Width / StepLength);for (int i = 1; i <= MaxCount; i++){//绘制Y轴直线Line line = new Line();//设置开始坐标及终点坐标line.X1 = StepLength * i;line.X2 = StepLength * i;line.Y1 = 0;line.Y2 = grdBackground.Height;Color color = new Color();color.R = 20;color.G = 80;color.B = 136;color.A = 100;//设置线条颜色line.Stroke = new SolidColorBrush(color);//设置线条宽度line.StrokeThickness = 2;//绘制下方数字TextBlock tb = new TextBlock();//设置字体颜色tb.Foreground = new SolidColorBrush(Colors.Red);//数字tb.Text = "" + i;//显示界面grdBackground.Children.Add(tb);grdBackground.Children.Add(line);//添加到全局变量listBottom.Add(tb);//设置坐标Canvas.SetBottom(tb, 0);Canvas.SetLeft(tb, StepLength * i);}//==============绘制左侧数字及绘制X轴方向直线(大概原理同上)for (int i = MinReg; i <= MaxReg; i+=15){Line line = new Line();line.X1 = 0;line.X2 = grdBackground.Width;//grdMain.Height - (grdMain.Height / (MaxReg-MinReg)) * Y2line.Y1 = grdMain.Height - (grdMain.Height / (MaxReg - MinReg)) * (i - MinReg);line.Y2 = grdMain.Height - (grdMain.Height / (MaxReg - MinReg)) * (i - MinReg);Color color = new Color();color.R = 20;color.G = 80;color.B = 136;color.A = 100;line.Stroke = new SolidColorBrush(color);line.StrokeThickness = 2;TextBlock tb = new TextBlock();tb.Foreground = new SolidColorBrush(Colors.Red);tb.Text = "" + i;grdBackground.Children.Add(tb);grdBackground.Children.Add(line);//  listBottom.Add(tb);Canvas.SetTop(tb, grdMain.Height - (grdMain.Height / (MaxReg - MinReg)) * (i - MinReg));Canvas.SetLeft(tb, 0);}//设置线条颜色pline.Stroke = new SolidColorBrush(Colors.Red);//设置线条宽度pline.StrokeThickness = 1;//添加第一个点pline.Points.Add(new Point(0, this.grdMain.Height));//将折线控件作为子控件添加到界面this.grdMain.Children.Add(pline);}/// <summary>/// 清空折线/// </summary>public void ClearLines(){//清空柱状集合pline.Points.Clear();//清空界面this.grdMain.Children.Clear();}#endregionprivate void UserControl_Loaded_1(object sender, RoutedEventArgs e){DrawBackground();}}
}

CurveWindow.xaml

<Window x:Class="goodsdb.tu.CurveWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:goodsdb.tu"mc:Ignorable="d"Title="曲线图" Height="240" Width="440" Loaded="Window_Loaded_1" Closing="Window_Closing_1"><Grid><Canvas x:Name="grdBackground" Height="220" Width="440" HorizontalAlignment="Center" VerticalAlignment="Center" Background="#012F59"></Canvas><Grid x:Name="grdMain" Height="220" Width="440" HorizontalAlignment="Center" VerticalAlignment="Center" Background="Transparent"></Grid></Grid>
</Window>

CurveWindow.xaml.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;namespace goodsdb.tu
{/// <summary>/// CurveWindow.xaml 的交互逻辑/// </summary>public partial class CurveWindow : Window{public CurveWindow(){InitializeComponent();}Thread timer;private void Window_Loaded_1(object sender, RoutedEventArgs e){DrawBackground();timer = new Thread(new ThreadStart(() =>{Random rd = new Random();while (true){try{Dispatcher.Invoke(new Action(() =>{double d = rd.Next(MinReg, MaxReg);DrawLine(d);Console.WriteLine(d + "");}));}catch (Exception){}Thread.Sleep(700);}}));timer.Start();}private void Window_Closing_1(object sender, System.ComponentModel.CancelEventArgs e){timer.Abort();timer = null;}#region 绘制折线int StepLength = 20;//X轴步长(两个顶点点X轴的距离)int MaxCount = 8;//顶点最多个数int MaxReg = 30;//最大量程‘int MinReg = 20;//最大量程//底部数字列表List<TextBlock> listBottom = new List<TextBlock>();//折线图Polyline pline = new Polyline();/// <summary>/// 画线/// </summary>/// <param name="Y2">线段终点Y轴坐标</param>private void DrawLine(double Y2){//将值转换为图上坐标Y2 = grdMain.Height - (grdMain.Height / (MaxReg - MinReg)) * (Y2 - MinReg);//判断折线图顶点集合个数是否大于0if (pline.Points.Count > 0){//向折线图顶点集合添加新线段终点坐标pline.Points.Add(new Point((pline.Points[pline.Points.Count - 1].X + StepLength), Y2));//判断顶点集合个数是否超过最大个数if (MaxCount + 1 < pline.Points.Count){//将曲线及下方数字往左移动//删除第一个点pline.Points.Remove(pline.Points[0]);int ForLen = (pline.Points.Count > listBottom.Count) ? pline.Points.Count : listBottom.Count;//将点击数字往左移动一位for (int i = 0; i < ForLen; i++){if (i < pline.Points.Count){//将顶点的X轴坐标减去步长pline.Points[i] = new Point(pline.Points[i].X - StepLength, pline.Points[i].Y);}if (i < listBottom.Count){listBottom[i].Text = (int.Parse(listBottom[i].Text) + 1).ToString();}}}}else{//第一次添加顶点//设置线条颜色pline.Stroke = new SolidColorBrush(Colors.Red);//设置线条宽度pline.StrokeThickness = 1;//添加第一个点pline.Points.Add(new Point(0, Y2));//将折线控件作为子控件添加到界面this.grdMain.Children.Add(pline);}return;//=====================第二种写法===================Line line = new Line();double X1 = 0;double Y1 = grdMain.Height;if (grdMain.Children.Count > 0){Line uPLine = (Line)grdMain.Children[grdMain.Children.Count - 1];X1 = uPLine.X2; Y1 = uPLine.Y2;if (X1 + StepLength > grdMain.Width){grdMain.Children.Remove(grdMain.Children[0]);int ForLen = (grdMain.Children.Count > listBottom.Count) ? grdMain.Children.Count : listBottom.Count;for (int i = 0; i < ForLen; i++){if (i < grdMain.Children.Count){((Line)grdMain.Children[i]).X1 = ((Line)grdMain.Children[i]).X1 - StepLength;((Line)grdMain.Children[i]).X2 = ((Line)grdMain.Children[i]).X2 - StepLength;}if (i < listBottom.Count){listBottom[i].Text = (int.Parse(listBottom[i].Text) + 1).ToString();}}X1 = X1 - StepLength;}}line.X1 = X1;line.Y1 = Y1;X1 += StepLength;line.X2 = X1;line.Y2 = (grdMain.Height - (grdMain.Height / MaxReg) * Y2);Y1 = line.Y2;X1 = line.X2;line.Stroke = new SolidColorBrush(Colors.Red);line.StrokeThickness = 1;this.grdMain.Children.Add(line);}/// <summary>/// 绘制背景/// </summary>private void DrawBackground(){//==============绘制底部数字及绘制Y轴方向直线//计算顶点最大个数MaxCount = (int)(grdBackground.Width / StepLength);for (int i = 1; i <= MaxCount; i++){//绘制Y轴直线Line line = new Line();//设置开始坐标及终点坐标line.X1 = StepLength * i;line.X2 = StepLength * i;line.Y1 = 0;line.Y2 = grdBackground.Height;Color color = new Color();color.R = 20;color.G = 80;color.B = 136;color.A = 100;//设置线条颜色line.Stroke = new SolidColorBrush(color);//设置线条宽度line.StrokeThickness = 2;//绘制下方数字TextBlock tb = new TextBlock();//设置字体颜色tb.Foreground = new SolidColorBrush(Colors.Red);//数字tb.Text = "" + i;//显示界面grdBackground.Children.Add(tb);grdBackground.Children.Add(line);//添加到全局变量listBottom.Add(tb);//设置坐标Canvas.SetBottom(tb, 0);Canvas.SetLeft(tb, StepLength * i);}//==============绘制左侧数字及绘制X轴方向直线(大概原理同上)for (int i = MinReg; i <= MaxReg; i++){Line line = new Line();line.X1 = 0;line.X2 = grdBackground.Width;//grdMain.Height - (grdMain.Height / (MaxReg-MinReg)) * Y2line.Y1 = grdMain.Height - (grdMain.Height / (MaxReg - MinReg)) * (i - MinReg);line.Y2 = grdMain.Height - (grdMain.Height / (MaxReg - MinReg)) * (i - MinReg);Color color = new Color();color.R = 20;color.G = 80;color.B = 136;color.A = 100;line.Stroke = new SolidColorBrush(color);line.StrokeThickness = 2;TextBlock tb = new TextBlock();tb.Foreground = new SolidColorBrush(Colors.Red);tb.Text = "" + i;grdBackground.Children.Add(tb);grdBackground.Children.Add(line);//  listBottom.Add(tb);Canvas.SetTop(tb, grdMain.Height - (grdMain.Height / (MaxReg - MinReg)) * (i - MinReg));Canvas.SetLeft(tb, 0);}//设置线条颜色pline.Stroke = new SolidColorBrush(Colors.Red);//设置线条宽度pline.StrokeThickness = 1;//添加第一个点pline.Points.Add(new Point(0, this.grdMain.Height));//将折线控件作为子控件添加到界面this.grdMain.Children.Add(pline);}#endregion}
}

delivermanagement.xaml

<Window x:Class="goodsdb.record.delivermanagement"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:goodsdb.record"mc:Ignorable="d"Title="入库管理" Height="450" Width="800"><Grid><DataGrid x:Name="dg" Margin="116,105,116,70" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" ><DataGrid.Columns><DataGridTextColumn Header="序号:" Width="60" Binding="{Binding id}"/><DataGridTextColumn Header="商品名:" Width="100" Binding="{Binding commoditysn}"/><DataGridTextColumn Header="入库数量:" Width="80" Binding="{Binding deliverynumber}"/><DataGridTextColumn Header="入库时间:" Width="200" Binding="{Binding deliverytime}"/></DataGrid.Columns></DataGrid><Button Content="返回" HorizontalAlignment="Left" Margin="588,386,0,0" VerticalAlignment="Top" Click="Button_Click" Width="56" Height="26"/><Button Content="删除" HorizontalAlignment="Left" Margin="141,387,0,0" VerticalAlignment="Top" Click="Button_Click_3" Width="56" Height="26"/><Label Content="入库记录表" HorizontalAlignment="Left" Margin="343,18,0,0" VerticalAlignment="Top" FontSize="20" RenderTransformOrigin="0.026,0.272"/><Button Content="入库" HorizontalAlignment="Left" Margin="529,66,0,0" VerticalAlignment="Top" Width="50" Height="25" Click="Button_Click_1"/><ComboBox x:Name="tradenamecomboBox" HorizontalAlignment="Left" Margin="173,69,0,0" VerticalAlignment="Top" Width="120" Loaded="name_Loaded"/><TextBox x:Name="number" HorizontalAlignment="Left"  Margin="371,71,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><TextBlock HorizontalAlignment="Left" Margin="115,70,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.075,0.706"><Run Language="zh-cn" Text="商品名:"/></TextBlock><TextBlock HorizontalAlignment="Left" Margin="328,70,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Language="zh-cn" Text="数量:"/></TextBlock></Grid>
</Window>

delivermanagement.xaml.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;namespace goodsdb.record
{/// <summary>/// delivermanagement.xaml 的交互逻辑/// </summary>public partial class delivermanagement : Window{public delivermanagement(){InitializeComponent();SqlDataAdapter da = new SqlDataAdapter("select *  from [delivery_record_t]", "Server=localhost;Database=commoditydb;integrated security=SSPI");DataTable dt = new DataTable();da.Fill(dt);dg.ItemsSource = dt.DefaultView;        //表单显示}private void Button_Click(object sender, RoutedEventArgs e){view.main main = new view.main();main.Show();this.Close();}private void Button_Click_3(object sender, RoutedEventArgs e){if (dg.SelectedItem != null){DataRowView dr = (DataRowView)dg.SelectedItem;string id = dr[0].ToString();SqlConnection connection = new SqlConnection("Address=localhost; Database=commoditydb;integrated security=SSPI");connection.Open();string sqlstr = "delete [delivery_record_t] where id='" + id + "'";SqlCommand command = new SqlCommand(sqlstr, connection);command.ExecuteNonQuery();MessageBox.Show("删除成功!");SqlDataAdapter da = new SqlDataAdapter("select *  from delivery_record_t", "Server=localhost;Database=commoditydb;integrated security=SSPI");DataTable dt = new DataTable();da.Fill(dt);dg.ItemsSource = dt.DefaultView;        //表单显示}else{MessageBox.Show("删除数据未选中!");}}private void Button_Click_1(object sender, RoutedEventArgs e){if (number.Text != "" | tradenamecomboBox.Text != ""){string sql3 = "update commodity_information_t set stocknumber=stocknumber + '" + number.Text + "'where tradename = '" + tradenamecomboBox.Text + "'";string sql2 = "insert into [delivery_record_t] (commoditysn,deliverynumber) values('" + tradenamecomboBox.Text + "','" + number.Text + "')";string sql = "Address=localhost;Database=commoditydb;integrated security=SSPI";SqlConnection connection = new SqlConnection();try{connection.ConnectionString = sql;connection.Open();//MessageBox.Show("连接到数据库!");}catch (Exception ex){MessageBox.Show("错误信息:" + ex.Message, "无法连接到数据库!");}SqlCommand command = new SqlCommand(sql3, connection);command.ExecuteNonQuery();SqlCommand command1 = new SqlCommand(sql2, connection);command1.ExecuteNonQuery();MessageBox.Show(tradenamecomboBox.Text + "  : 入库成功!");SqlDataAdapter da = new SqlDataAdapter("select *  from delivery_record_t", "Server=localhost;Database=commoditydb;integrated security=SSPI");DataTable dt = new DataTable();da.Fill(dt);dg.ItemsSource = dt.DefaultView;        //表单显示connection.Close();}else{MessageBox.Show("数量不能为空!");}}private void name_Loaded(object sender, RoutedEventArgs e){SqlConnection connection = new SqlConnection("Address=localhost; Database=commoditydb;integrated security=SSPI");connection.Open();string sqlstr = "select tradename from [commodity_information_t]";SqlCommand com = new SqlCommand(sqlstr, connection);SqlDataReader dr = com.ExecuteReader();while (dr.Read()){tradenamecomboBox.Items.Add(dr["tradename".ToString()]);}dr.Close();connection.Close();}}
}

housingmanagement.xaml

<Window x:Class="goodsdb.record.housingmanagement"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:goodsdb.record"mc:Ignorable="d"Title="出库管理" Height="450" Width="800"><Grid><DataGrid x:Name="dg" Margin="116,105,116,70" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" ><DataGrid.Columns><DataGridTextColumn Header="序号:" Width="60" Binding="{Binding id}"/><DataGridTextColumn Header="商品名:" Width="100" Binding="{Binding commoditysn}"/><DataGridTextColumn Header="出库数量:" Width="80" Binding="{Binding warehousingnumber}"/><DataGridTextColumn Header="出库时间:" Width="200" Binding="{Binding warehousingtime}"/></DataGrid.Columns></DataGrid><Button Content="返回" HorizontalAlignment="Left" Margin="588,386,0,0" VerticalAlignment="Top" Click="Button_Click" Width="56" Height="26"/><Button Content="删除" HorizontalAlignment="Left" Margin="141,387,0,0" VerticalAlignment="Top" Click="Button_Click_3" Width="56" Height="26"/><Label Content="出库记录表" HorizontalAlignment="Left" Margin="343,18,0,0" VerticalAlignment="Top" FontSize="20" RenderTransformOrigin="0.026,0.272"/><Button Content="出库" HorizontalAlignment="Left" Margin="529,66,0,0" VerticalAlignment="Top" Width="50" Height="25" Click="Button_Click_1"/><ComboBox x:Name="tradenamecomboBox" HorizontalAlignment="Left" Margin="173,69,0,0" VerticalAlignment="Top" Width="120" Loaded="name_Loaded"/><TextBox x:Name="number" HorizontalAlignment="Left"  Margin="371,71,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><TextBlock HorizontalAlignment="Left" Margin="115,70,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.075,0.706"><Run Language="zh-cn" Text="商品名:"/></TextBlock><TextBlock HorizontalAlignment="Left" Margin="328,70,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Language="zh-cn" Text="数量:"/></TextBlock></Grid>
</Window>

housingmanagement.xaml.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;namespace goodsdb.record
{/// <summary>/// housingmanagement.xaml 的交互逻辑/// </summary>public partial class housingmanagement : Window{public housingmanagement(){InitializeComponent();SqlDataAdapter da = new SqlDataAdapter("select *  from [warehousing_record_t]", "Server=localhost;Database=commoditydb;integrated security=SSPI");DataTable dt = new DataTable();da.Fill(dt);dg.ItemsSource = dt.DefaultView;        //表单显示}private void Button_Click(object sender, RoutedEventArgs e){view.main main = new view.main();main.Show();this.Close();}private void Button_Click_3(object sender, RoutedEventArgs e){if (dg.SelectedItem != null){DataRowView dr = (DataRowView)dg.SelectedItem;string id = dr[0].ToString();SqlConnection connection = new SqlConnection("Address=localhost; Database=commoditydb;integrated security=SSPI");connection.Open();string sqlstr = "delete [warehousing_record_t] where id='" + id + "'";SqlCommand command = new SqlCommand(sqlstr, connection);command.ExecuteNonQuery();MessageBox.Show("删除成功!");SqlDataAdapter da = new SqlDataAdapter("select *  from [warehousing_record_t]", "Server=localhost;Database=commoditydb;integrated security=SSPI");DataTable dt = new DataTable();da.Fill(dt);dg.ItemsSource = dt.DefaultView;        //表单显示}else{MessageBox.Show("删除数据未选中!");}}private void Button_Click_1(object sender, RoutedEventArgs e){if (number.Text != "" | tradenamecomboBox.Text != ""){string sql3 = "update commodity_information_t set stocknumber=stocknumber - '" + number.Text + "'where tradename = '" + tradenamecomboBox.Text + "'";string sql2 = "insert into [warehousing_record_t] (commoditysn,warehousingnumber) values('" + tradenamecomboBox.Text + "','" + number.Text + "')";string sql = "Address=localhost;Database=commoditydb;integrated security=SSPI";SqlConnection connection = new SqlConnection();try{connection.ConnectionString = sql;connection.Open();//MessageBox.Show("连接到数据库!");}catch (Exception ex){MessageBox.Show("错误信息:" + ex.Message, "无法连接到数据库!");}string sql4 = "select tradename from commodity_information_t where stocknumber>='" + number.Text + "' and tradename='"+tradenamecomboBox.Text+"'";SqlCommand command3 = new SqlCommand(sql4, connection);command3.ExecuteNonQuery();if (command3.ExecuteScalar() != null) {SqlCommand command = new SqlCommand(sql3, connection);command.ExecuteNonQuery();SqlCommand command1 = new SqlCommand(sql2, connection);command1.ExecuteNonQuery();MessageBox.Show(tradenamecomboBox.Text + "  : 出库成功!");SqlDataAdapter da = new SqlDataAdapter("select *  from [warehousing_record_t]", "Server=localhost;Database=commoditydb;integrated security=SSPI");DataTable dt = new DataTable();da.Fill(dt);dg.ItemsSource = dt.DefaultView;        //表单显示connection.Close();}else {MessageBox.Show(tradenamecomboBox.Text+"库存不足!请查看库存!");}}else{MessageBox.Show("数量不能为空!");}}private void name_Loaded(object sender, RoutedEventArgs e){SqlConnection connection = new SqlConnection("Address=localhost; Database=commoditydb;integrated security=SSPI");connection.Open();string sqlstr = "select tradename from [commodity_information_t]";SqlCommand com = new SqlCommand(sqlstr, connection);SqlDataReader dr = com.ExecuteReader();while (dr.Read()){tradenamecomboBox.Items.Add(dr["tradename".ToString()]);}dr.Close();connection.Close();}}
}

addgood.xaml

<Window x:Class="goodsdb.commodity.addgood"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:goodsdb.commodity"mc:Ignorable="d"Title="添加商品" Height="450" Width="800"><Grid><TextBox x:Name="tradename" HorizontalAlignment="Left" Margin="385,101,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><TextBox x:Name="brand" HorizontalAlignment="Left"  Margin="385,130,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><TextBlock HorizontalAlignment="Left" Margin="318,102,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.075,0.706"><Run Language="zh-cn" Text="商品名:"/></TextBlock><TextBlock HorizontalAlignment="Left" Margin="318,129,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Language="zh-cn" Text="品牌:"/></TextBlock><Button Content="添加" HorizontalAlignment="Left" Margin="330,318,0,0" VerticalAlignment="Top" Click="Button_Click_1" Height="22" Width="51"/><TextBox x:Name="productspecifications" HorizontalAlignment="Left" Margin="384,161,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><TextBox x:Name="supplier" HorizontalAlignment="Left" Margin="384,194,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><TextBox x:Name="stocknumber" HorizontalAlignment="Left" Margin="384,226,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><TextBox x:Name="earlywarningnumber" HorizontalAlignment="Left" Margin="384,252,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><TextBlock HorizontalAlignment="Left" Margin="318,162,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.075,0.706"><Run Language="zh-cn" Text="商品规格:"/></TextBlock><TextBlock HorizontalAlignment="Left" Margin="318,194,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.075,0.706"><Run Language="zh-cn" Text="供货商:"/></TextBlock><TextBlock HorizontalAlignment="Left" Margin="318,227,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.075,0.706"><Run Language="zh-cn" Text="库存数量:"/></TextBlock><TextBlock HorizontalAlignment="Left" Margin="318,254,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.075,0.706"><Run Language="zh-cn" Text="预警数量:"/></TextBlock><Button Content="取消" HorizontalAlignment="Left" Margin="439,318,0,0" VerticalAlignment="Top"  Height="22" Width="51" Click="Button_Click"/></Grid>
</Window>

addgood.xaml.cs

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;namespace goodsdb.commodity
{/// <summary>/// addgood.xaml 的交互逻辑/// </summary>public partial class addgood : Window{public addgood(){InitializeComponent();}private void Button_Click(object sender, RoutedEventArgs e){commodity.goodsmanagement goods = new commodity.goodsmanagement();goods.Show();this.Close();}private void Button_Click_1(object sender, RoutedEventArgs e){if (tradename.Text != "" | brand.Text != "" | productspecifications.Text != "" | supplier.Text != "" | stocknumber.Text != "" | earlywarningnumber.Text != ""){string sql2 = "insert into commodity_information_t(tradename,brand,productspecifications,supplier,stocknumber,earlywarningnumber) values('" + tradename.Text + "','" + brand.Text + "','" + productspecifications.Text + "','" + supplier.Text + "','" + stocknumber.Text + "','" + earlywarningnumber.Text + "')";string sql = "Address=localhost;Database=commoditydb;integrated security=SSPI";SqlConnection connection = new SqlConnection();try{connection.ConnectionString = sql;connection.Open();//MessageBox.Show("连接到数据库!");}catch (Exception ex){MessageBox.Show("错误信息:" + ex.Message, "无法连接到数据库!");}SqlCommand command1 = new SqlCommand(sql2, connection);command1.ExecuteNonQuery();MessageBox.Show(tradename.Text + "  : 添加成功!");commodity.goodsmanagement goods = new commodity.goodsmanagement();goods.Show();this.Close();}else{MessageBox.Show("输入不能为空!");}}}
}

goodsmanagement.xaml

<Window x:Class="goodsdb.commodity.goodsmanagement"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:goodsdb.commodity"mc:Ignorable="d"Title="商品管理" Height="450" Width="800"><Grid><DataGrid x:Name="dg" Margin="38,62,44,70" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" ><DataGrid.Columns><DataGridTextColumn Header="序号:" Width="60" Binding="{Binding id}"/><DataGridTextColumn Header="商品名:" Width="100" Binding="{Binding tradename}"/><DataGridTextColumn Header="品牌:" Width="100" Binding="{Binding brand}"/><DataGridTextColumn Header="商品规格:" Width="100" Binding="{Binding productspecifications}"/><DataGridTextColumn Header="供货商:" Width="100" Binding="{Binding supplier}"/><DataGridTextColumn Header="库存数量:" Width="80" Binding="{Binding stocknumber}"/></DataGrid.Columns></DataGrid><Button Content="返回" HorizontalAlignment="Left" Margin="642,387,0,0" VerticalAlignment="Top" Click="Button_Click" Width="56" Height="26"/><Button Content="修改" HorizontalAlignment="Left" Margin="276,390,0,0" VerticalAlignment="Top" Click="Button_Click_2" Width="56" Height="26"/><Button Content="删除" HorizontalAlignment="Left" Margin="467,389,0,0" VerticalAlignment="Top" Click="Button_Click_3" Width="56" Height="26"/><Label Content="商品管理" HorizontalAlignment="Left" Margin="343,18,0,0" VerticalAlignment="Top" FontSize="20" RenderTransformOrigin="0.026,0.272"/><Button Content="添加" HorizontalAlignment="Left" Margin="106,390,0,0" VerticalAlignment="Top" Click="Button_Click_1" Width="56" Height="26"/></Grid>
</Window>

goodsmanagement.xaml.cs

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;namespace goodsdb.commodity
{/// <summary>/// goodsmanagement.xaml 的交互逻辑/// </summary>public partial class goodsmanagement : Window{public goodsmanagement(){InitializeComponent();SqlDataAdapter da = new SqlDataAdapter("select *  from commodity_information_t", "Server=localhost;Database=commoditydb;integrated security=SSPI");DataTable dt = new DataTable();da.Fill(dt);dg.ItemsSource = dt.DefaultView;        //表单显示}private void Button_Click(object sender, RoutedEventArgs e){view.main main = new view.main();main.Show();this.Close();}private void Button_Click_3(object sender, RoutedEventArgs e){if (dg.SelectedItem != null){DataRowView dr = (DataRowView)dg.SelectedItem;string tradename = dr[1].ToString();string stocknumber = dr[5].ToString();if (stocknumber == "0"){SqlConnection connection = new SqlConnection("Address=localhost; Database=commoditydb;integrated security=SSPI");connection.Open();string sqlstr = "delete [commodity_information_t] where tradename='" + tradename + "'";SqlCommand command = new SqlCommand(sqlstr, connection);command.ExecuteNonQuery();MessageBox.Show("删除成功!");SqlDataAdapter da = new SqlDataAdapter("select *  from commodity_information_t", "Server=localhost;Database=commoditydb;integrated security=SSPI");DataTable dt = new DataTable();da.Fill(dt);dg.ItemsSource = dt.DefaultView;        //表单显示}else{MessageBox.Show("库存大于0,不可操作!");}}else{MessageBox.Show("删除数据未选中!");}}private void Button_Click_2(object sender, RoutedEventArgs e){if (dg.SelectedItem != null){DataRowView dr = (DataRowView)dg.SelectedItem;string id = dr[0].ToString();string stock = dr[5].ToString();if (stock == "0"){string tradename = dr[1].ToString();string brand = dr[2].ToString();string productspecifications = dr[3].ToString();string supplier = dr[4].ToString();string stocknumber = dr[5].ToString();string earlywarningnumber = dr[6].ToString();commodity.updatagoods good = new updatagoods(id, tradename, brand, productspecifications, supplier, stocknumber, earlywarningnumber);good.Show();this.Close();}else{MessageBox.Show("库存大于0,不可操作!");}}else{MessageBox.Show("修改数据未选中!");}}private void Button_Click_1(object sender, RoutedEventArgs e){commodity.addgood good = new commodity.addgood();good.Show();this.Close();}}
}

updatagoods.xaml

<Window x:Class="goodsdb.commodity.updatagoods"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:goodsdb.commodity"mc:Ignorable="d"Title="修改商品" Height="400" Width="360"><Grid><TextBox x:Name="id" HorizontalAlignment="Left" Margin="147,62,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" IsReadOnly="True"/><TextBox x:Name="tradename" HorizontalAlignment="Left" Margin="147,87,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><TextBox x:Name="brand" HorizontalAlignment="Left"  Margin="147,116,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><TextBlock HorizontalAlignment="Left" Margin="80,88,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.075,0.706"><Run Language="zh-cn" Text="商品名:"/></TextBlock><TextBlock HorizontalAlignment="Left" Margin="80,115,0,0" TextWrapping="Wrap" VerticalAlignment="Top"><Run Language="zh-cn" Text="品牌:"/></TextBlock><TextBlock HorizontalAlignment="Left" Margin="80,63,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.075,0.706"><Run Language="zh-cn" Text="序号:"/></TextBlock><Button Content="提交修改" HorizontalAlignment="Left" Margin="103,298,0,0" VerticalAlignment="Top" Click="Button_Click" Height="21" Width="54"/><TextBox x:Name="productspecifications" HorizontalAlignment="Left" Margin="146,147,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><TextBox x:Name="supplier" HorizontalAlignment="Left" Margin="146,180,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><TextBox x:Name="stocknumber" HorizontalAlignment="Left" Margin="146,212,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><TextBox x:Name="earlywarningnumber" HorizontalAlignment="Left" Margin="146,238,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/><TextBlock HorizontalAlignment="Left" Margin="80,148,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.075,0.706"><Run Language="zh-cn" Text="商品规格:"/></TextBlock><TextBlock HorizontalAlignment="Left" Margin="80,180,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.075,0.706"><Run Language="zh-cn" Text="供货商:"/></TextBlock><TextBlock HorizontalAlignment="Left" Margin="80,213,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.075,0.706"><Run Language="zh-cn" Text="库存数量:"/></TextBlock><TextBlock HorizontalAlignment="Left" Margin="80,240,0,0" TextWrapping="Wrap" VerticalAlignment="Top" RenderTransformOrigin="0.075,0.706"><Run Language="zh-cn" Text="预警数量:"/></TextBlock><Button Content="取消" HorizontalAlignment="Left" Margin="206,297,0,0" VerticalAlignment="Top"  Height="21" Width="54" Click="Button_Click_1"/></Grid>
</Window>

updatagoods.xaml.cs

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;namespace goodsdb.commodity
{/// <summary>/// updatagoods.xaml 的交互逻辑/// </summary>public partial class updatagoods : Window{public updatagoods(string id, string tradename, string brand, string productspecifications, string supplier, string stocknumber, string earlywarningnumber){InitializeComponent();this.id.Text = id;this.tradename.Text = tradename;this.brand.Text = brand;this.productspecifications.Text = productspecifications;this.supplier.Text = supplier;this.stocknumber.Text = stocknumber;this.earlywarningnumber.Text = earlywarningnumber;}private void Button_Click(object sender, RoutedEventArgs e){SqlConnection connection = new SqlConnection("Address=localhost; Database=commoditydb;integrated security=SSPI");connection.Open();string sqlstr = "update commodity_information_t set tradename='" + tradename.Text + "',brand='" + brand.Text + "',productspecifications='" + productspecifications.Text + "'," +"supplier='" + supplier.Text + "',stocknumber='" + stocknumber.Text + "',earlywarningnumber='" + earlywarningnumber.Text + "' where id='" + id.Text + "'";SqlCommand command = new SqlCommand(sqlstr, connection);command.ExecuteNonQuery();MessageBox.Show("修改成功!");commodity.goodsmanagement goods = new commodity.goodsmanagement();goods.Show();this.Close();}private void Button_Click_1(object sender, RoutedEventArgs e){commodity.goodsmanagement goods = new commodity.goodsmanagement();goods.Show();this.Close();}}
}

C#仓库管理系统 2021-06-28相关推荐

  1. Eclipse+Java+Swing+Mysql实现仓库管理系统

    目录 一.系统介绍 1.软件环境 2.系统功能 3.数据库 4.工程截图 二.系统展示 1.用户-登录页 2.用户-登录成功 3.用户-主页面 4.用户-用户管理-个人信息 5.用户-用户管理-修改密 ...

  2. c语言作业制作仓库管理系统,C语言课程设计 仓库管理系统

    <C语言课程设计 仓库管理系统>由会员分享,可在线阅读,更多相关<C语言课程设计 仓库管理系统(22页珍藏版)>请在人人文库网上搜索. 1.C语言程序设计实训报告实训题目: 仓 ...

  3. 基于php的仓库管理系统

    本仓库管理系统的前台选用了PHP.AppServ等作为主要的编程语言,后台选用MYSQL作为数据库服务器.利用PHP动态网页编程技术实现前后台的数据交互.本系统实现了以下功能:管理企业的员工基本数据: ...

  4. 第18期基于SpringBoot仓库管理系统

    第18期基于SpringBoot实现的仓库管理系统 大家好,小辰今天给大家介绍一个基于SpringBoot+ Mybatis+ thymeleaf实现的仓库管理系统,演示视频文章末尾公众号对号查询观看 ...

  5. java毕业设计东方水处理厂原材料仓库管理系统Mybatis+系统+数据库+调试部署

    java毕业设计东方水处理厂原材料仓库管理系统Mybatis+系统+数据库+调试部署 java毕业设计东方水处理厂原材料仓库管理系统Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B ...

  6. 计算机毕业设计ssmEE的仓库管理系统93c6b系统+程序+源码+lw+远程部署

    计算机毕业设计ssmEE的仓库管理系统93c6b系统+程序+源码+lw+远程部署 计算机毕业设计ssmEE的仓库管理系统93c6b系统+程序+源码+lw+远程部署 本源码技术栈: 项目架构:B/S架构 ...

  7. c语言仓库管理系统链表,仓库管理系统 C语言 C++ 数据结构 链表 课程设计

    仓库管理系统 C语言 C++ 数据结构 链表 课程设计 #include #include #include #include #define MAX 64 typedef struct node{ ...

  8. 甲骨文宣布供应链管理云平台支持LogFire仓库管理系统

    本文讲的是 :甲骨文宣布供应链管理云平台支持LogFire仓库管理系统    ,[IT168 资讯]甲骨文发布了一系列对其供应链管理产品的更新,并表示,云平台现在支持去年收购LogFire的仓库管理系 ...

  9. STM32项目(七) —— 智能仓库管理系统

    智能仓库管理系统 随着经济的发展,对企业的生产经营要求提高,企业必须综合利用各种先进技术,在网络与信息技术的支持下,改进现在的生产经营模式和组织结构,增加利润.随着企业规模的扩大.高效方便的仓库管理系 ...

  10. XX公司定制开发的仓库管理系统

    XX公司定制的仓库管理系统,可设置多用户登录,软件简洁小巧美观 链接:https://pan.baidu.com/s/1Ha9e9630wYzVJCphG3xF-g  提取码:hlw1

最新文章

  1. ios Develop mark
  2. 使用Python,OpenCV实现简单的场景边界/拍摄转换检测器
  3. 34.在排序数组中查找元素的起始和末尾位置
  4. 引领潮流云电视机遇与挑战并现
  5. Linux学习之CentOS(三十)--SELinux安全系统基础
  6. 原生js实现京东商城楼梯效果
  7. 写未来的电子计算机的畅想两百字,未来科技作文200字
  8. centos 6 mysql 5.7.13 编译安装_Centos 6.5 下面 源码编译 安装 Mysql 5.7.13
  9. 计算机的代表性产品,电脑展回顾 十款最具代表性存储产品
  10. 网络推广运营主要做些什么
  11. PHP mcrypt可逆加密算法分析
  12. Charles 使用
  13. flash swf文件 网页播放功能方案实现
  14. 【Python基础知识整理】
  15. iOS开发 DarkMode 暗黑模式
  16. Linux下DMA驱动
  17. 疫情当下,选择代理加盟互联网广告项目的优势
  18. 利用python进行数据分析-数据聚合与分组运算2
  19. 二维码制作方法分享,学会这招轻松制作二维码
  20. 金融魔方创始人兼CEO刘嘉:金融SaaS为中小企业赋能的机遇与挑战

热门文章

  1. C语言中的程序设计——顺序、选择结构程序设计
  2. 我的未来式计算机歌谱,【我的未来式钢琴谱】我的未来式《爱情公寓》主题曲钢琴谱_中国歌谱大全...
  3. 使用python3.7.2 实现大名鼎鼎的Elo Score等级分制度 CSGO段位机制
  4. android手势控制动画,轻松实现Android,iOS的一个手势动画效果
  5. coreldraw跳出盗版_coreldraw x5提示盗版警告解决方法
  6. 「Don‘t Make Me Think」 读后感
  7. 网页代码中link标签的用法
  8. WSL / WSL2 问题大全 及 解决方案
  9. linux输入法搜狗 修复,搜狗输入法自带修复功能,可以解决无法打字的问题
  10. Salome_Meca 2021 安装教程(Centos)