【正文】
碼varchar(30)否否商品名稱varchar(30)否否商品類別varchar(30)否否銷售數(shù)量float否否銷售年月datetime否否管理登錄表(Users):列名數(shù)據(jù)類型主鍵允許空員工號varchar(30)是否密碼varchar(30)否否權(quán)限varchar(30)否否密保問題varchar(30)否否密保答案varchar(30)否否4 總體設(shè)計(jì)總體設(shè)計(jì)主要解決在系統(tǒng)設(shè)計(jì)中,所涉及到的前臺數(shù)據(jù)流程控制,后臺數(shù)據(jù)庫,視圖的創(chuàng)建,以及Matlab建模程序設(shè)計(jì)。前面已經(jīng)分析過功能需求,在其中的數(shù)據(jù)統(tǒng)計(jì),報(bào)表打印等模塊要用到大量的視圖。接著上一章的數(shù)據(jù)庫創(chuàng)建后,接下來主要說明系統(tǒng)中所用到的視圖的創(chuàng)建,智能分析模塊的理論基礎(chǔ),以及相關(guān)的matlab程序設(shè)計(jì)。統(tǒng)計(jì)模塊:包含,商品信息統(tǒng)計(jì),銷售記錄統(tǒng)計(jì)。由于統(tǒng)計(jì)模塊的顯示模式有兩種(常規(guī)表格,圖形顯示),所以為了減少編程負(fù)擔(dān),精簡程序,使商品信息統(tǒng)計(jì)和銷售記錄統(tǒng)計(jì)都采用一個(gè)處理模型。針對常規(guī)表格模式,采取調(diào)用數(shù)據(jù)庫命令的形式;對于圖形顯示模型,主要是將統(tǒng)計(jì)條件存儲到視圖中,然后打開圖形繪制窗體,讀取視圖中的數(shù)據(jù)并以圖形的形式顯示出來。智能分析模塊:包括,商品盈虧分析,商品銷售預(yù)測,總盈虧分析。商品盈虧分析和總盈虧分析的數(shù)據(jù)流程主要是,視圖統(tǒng)計(jì),然后計(jì)算,最后顯示結(jié)果。商品銷售預(yù)測的數(shù)據(jù)流程比較復(fù)雜,在預(yù)測數(shù)據(jù)時(shí)需要把將要預(yù)測的商品信息存儲到視圖中,然后由程序讀取,傳遞給已經(jīng)編制好的matlab程序生成的組件,有這些組件計(jì)算要預(yù)測的信息。下面是各個(gè)模塊中所用到的數(shù)據(jù)視圖,輔助視圖,及各視圖的創(chuàng)建代碼://生成商品訂單數(shù)據(jù)源的輔助視圖create view ProductDD2 as select 商品代碼,max(銷售年月) as 銷售年月 from ProductDD1 group by 商品代碼 go//生成商品訂單數(shù)據(jù)源的輔助視圖create view ProductDD3 as select a.[商品代碼],a.[商品名稱],a.[銷售總量],b.[銷售年月] from ProductDD1 a,ProductDD2 b where a.[商品代碼] = b.[商品代碼] and a.[銷售年月] = b.[銷售年月] go//生成商品訂單數(shù)據(jù)源create view ProductDD as select a.[商品代碼],a.[商品名稱],a.[商品類別],a.[庫存量],b.[銷售總量] as 總銷售量,b.[銷售總量]a.[庫存量] as 訂購量,b.[銷售年月] from Products a,ProductDD3 b where a.[商品代碼] = b.[商品代碼] go智能預(yù)測模塊://智能預(yù)測所用視圖//用于輔助計(jì)算求總銷售額create view ZNFXZ as select 商品名稱,sum(銷售額)as 總銷售額from ProductDetails group by 商品名稱 go//用于輔助計(jì)算求凈利潤create view ZNFXZ1 as select a.[商品名稱],a.[總銷售額] * (b.[賣出價(jià)格] b.[進(jìn)入價(jià)格])/b.[賣出價(jià)格] as 凈利潤 from ZNFXZ a,Products bwhere a.[商品名稱] = b.[商品名稱] go驗(yàn)證是否可預(yù)測用的輔助模塊視圖create view viewZN as select 商品代碼,商品名稱,銷售年月,sum(銷售額) as 月銷售額 from ProductDetails group by 商品代碼,商品名稱,銷售年月 go//驗(yàn)證是否可預(yù)測用的模塊視圖//如果記錄條數(shù)小于8,則不能預(yù)測銷售數(shù)據(jù)create view viewZNJL as select 商品代碼,商品名稱,count(*) as 記錄條數(shù) from viewZN group by 商品代碼,商品名稱 go//分析模塊用的視圖alter view viewZNFX as select 商品名稱,(Datediff(month,cast(39。19961139。 as datetime),cast(銷售年月 as datetime))) as 月數(shù),sum(銷售額) as 月銷售額,銷售年月from ProductDetails where 商品名稱 = 39。牛奶39。 group by 商品名稱,銷售年月 go Matlab程序設(shè)計(jì)在智能分析的數(shù)據(jù)預(yù)測功能中,要使用到最小二乘法。在已有銷售記錄的基礎(chǔ)上使用最小二乘法可以預(yù)定制定時(shí)間的銷售額。下面詳細(xì)說明最小二乘法擬合的matlab實(shí)現(xiàn)。最小二乘法擬合:在這里系統(tǒng)選用最小二乘法擬合多項(xiàng)式函數(shù),次數(shù)去2。下面是系統(tǒng)中用到的matlab程序:function result = tnh(A,B,X) K = polyfit(A,B,2)。 result = polyval(K,X)。end在程序中A為某個(gè)商品的最近8個(gè)銷售記錄時(shí)間距離19960101的月數(shù);B為對應(yīng)A中每個(gè)月的銷售額;X為要預(yù)測的日期距離19960101的月數(shù)。以上模型為最小二乘法,針對不同的企業(yè)和銷售模式其數(shù)據(jù)預(yù)測可能需要不同的模型,本系統(tǒng)是調(diào)用matlab生成的組件,傳遞給模型數(shù)據(jù),然后得出結(jié)果。為了給系統(tǒng)提供更好的適應(yīng)性,如果需要不同的預(yù)測模型,可以直接建模后用matlab程序生成組件,更換掉原來的組件即可運(yùn)行。5 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)將描述系統(tǒng)中各個(gè)模塊的操作流程,界面設(shè)計(jì),以及實(shí)現(xiàn)程序代碼。 登錄模塊登錄模塊通過用戶名和密碼檢查用戶是否合法,同時(shí)使用驗(yàn)證信息防止惡意登錄。下面是登錄窗體(Logn)的顯示界面:圖51 登錄窗體界面圖其中員工號和密碼是用戶在注冊中填寫的信息,驗(yàn)證信息為隨即生成的兩個(gè)19的整數(shù)組成的運(yùn)算式,只有用戶輸入正確的員工號,密碼,并且在驗(yàn)證框中輸入正確的結(jié)果后方能進(jìn)入系統(tǒng)。 注冊模塊在登錄窗體(Logn)中點(diǎn)擊注冊用戶就可以啟動注冊用戶窗體。下面描述用戶注冊流程:輸入信息數(shù)據(jù)合法?更新Users注冊成功關(guān)閉注冊,顯示登錄是否已注冊?是否為公司員工?二次密碼是否一致?重新輸入否是否否是是是否圖52 用戶注冊模塊數(shù)據(jù)流程圖 圖53 用戶注冊窗體界面圖 密碼找回模塊在登錄窗體(Logn)中點(diǎn)擊密碼找回就可以啟動密碼找回窗體。下面描述密碼找回流程:輸入員工號是否有此人顯示密保問題輸入答案答案是否正確輸入密碼兩次密碼一致保存密碼否是是是否否重新輸入圖54 密碼找回模塊數(shù)據(jù)流程圖 圖55密碼找回窗體界面圖 主菜單模塊主菜單模塊主要是為其他各個(gè)功能模塊提供操作界面,其界面如下:圖56 主菜單窗體界面圖主菜單模塊代碼比較簡單,此處不再詳述。 基本信息管理模塊該模塊包括人事信息管理,員工工資管理,商品信息管理,其代碼大致相同,此處只對人事信息管理列出代碼: 人事信息管理界面:圖57 人事信息管理窗體界面圖人事信息管理主要代碼: //flag變量用于控制新建按鈕是否可用 //為防止出現(xiàn)異常 //每次插入新的行后都要保存一次后才能再次插入 int flag = 1。 private void workersBindingNavigatorSaveItem_Click(object sender, EventArgs e) { try{ ()。()。()。 flag = 1。 (保存成功!)。} catch