進銷庫系統主要用在銷售和商品管理,主要要做到借貸一致,如果數據處理不好的話容易造成庫存和流水無法對應,和錢財打交道的東西可都馬虎不得,之前受以爲朋友的委託給他設計了一個銷售管理系統。在沒有參考現成設計的基礎上靠自己的YY硬是做了一個進銷庫系統。不太完善但是還是想記錄一下心路歷程
首先,系統分爲3個庫,分別是會員庫,庫存/產品庫,流水庫,算是比較簡單。會員庫通過會員ID作爲主鍵和流水庫進行關聯,而產品庫則以產品的品牌和型號作爲識別主鍵(仔細回想一下應該給產品庫設計一個主鍵更加方便纔是)
會員庫和產品庫的設計如下
create table CustomerTable --顧客表
(
Uid int identity(1,1),--序號
CusName varchar(50) not null, --姓名
CusPhone varchar(50) not null, --電話
CusDegreeL varchar(50) not null, --左邊度數
CusDegreeR varchar(50) not null, --右邊度數
CheckInTime datetime not null, --登記時間
)
create table CargoTable --顧客表
(
CargType varchar(50) not null, --品牌
CargModel varchar(50) not null, --型號
CargDegree varchar(50) not null, --度數
CargCost float not null, --價格
CargCounts int not null, --庫存
)
流水錶設計就比較偷懶了,直接以時間作爲流水號以每條商品爲單位進行進銷庫操作,會員信息以會員ID代替
create table SerialTable --顧客表
(
SerialNum varchar(50) not null ,--流水號
Cusid int not null ,--客戶ID
CargType varchar(50) not null, --品牌
CargModel varchar(50) not null, --型號
CargDegree varchar(50) not null, --度數
CargCost float not null, --價格
CargCounts int not null, --數量
CheckInTime datetime not null, --出單時間
)
而客戶端的進庫和會員增加和一般的數據庫增刪改查沒有什麼區別,而進行銷庫的時候會首先檢索庫存是否充足,如果充足的話會首先進行庫存的修改(產品出庫),然後進行流水的添加。當庫存不足的時候會直接終止進程
string SerialNum = DateTime.Now.ToString("yyyyMMddHHmmss");//以時間戳作爲流水號
if (SUid == 0)
{
MessageBox.Show("請先選擇客戶");
return;
}
double Costs = 0;
List<CargoModel> listCargo = new List<CargoModel>();
foreach (DataGridViewRow item in SellingView.Rows)
{
if (item.Cells[0].Value == null)
break;
listCargo.Add(
CargoService.TrsCargo(item.Cells[0].Value.ToString(),
Convert.ToDouble(item.Cells[1].Value.ToString()),
Convert.ToInt32(item.Cells[2].Value.ToString())));
}
foreach (var item in listCargo)
{
Costs += item.CargCost * item.CargCounts;
}
try
{
FrmGetMoney frmget = new FrmGetMoney(Costs, lblCus.Text);
frmget.ShowDialog();
}
catch (Exception ex)
{
if (ex.Message == "成功")
{
foreach (var item in listCargo)
{
try
{
CargoService.OutPutCargo(item);
SerialService.Insert(SerialNum, SUid, item);
Costs += item.CargCost * item.CargCounts;
lblCost.Text = Costs.ToString();
}
catch (Exception ec) { MessageBox.Show(ec.Message); }
}
SellingView.Rows.Clear();
}
}
最後上一下效果圖