數(shù)據(jù)庫設計中草藥銷售管理系統(tǒng)介紹_第1頁
數(shù)據(jù)庫設計中草藥銷售管理系統(tǒng)介紹_第2頁
數(shù)據(jù)庫設計中草藥銷售管理系統(tǒng)介紹_第3頁
數(shù)據(jù)庫設計中草藥銷售管理系統(tǒng)介紹_第4頁
數(shù)據(jù)庫設計中草藥銷售管理系統(tǒng)介紹_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、上海電力學院數(shù)據(jù)庫設計課程設計題目: 中草藥銷售管理系統(tǒng) 學生姓名: 李辰源 學 號: 20131791 班 級: 201054 院系: 計算機科學與技術學院 專業(yè)年級: 計算機科學與技術(卓越) 級 2015年6 月10 日目錄一、需求分析- 1 -(1)問題描述:- 1 -(2) 系統(tǒng)性要求:- 1 -(3) 完整性規(guī)則:- 1 -(4) 安全性規(guī)則:- 1 -二、概念結構設計- 2 -三、邏輯結構設計- 4 -(1)模式設計:- 4 -(2)子模式設計:- 6 -I、視圖:- 6 -II、查詢信息:- 6 -四、數(shù)據(jù)庫的物理設計- 6 -五、數(shù)據(jù)庫設計實現(xiàn)及運行- 7 -(1)數(shù)據(jù)庫的創(chuàng)

2、建- 7 -(2)數(shù)據(jù)表的創(chuàng)建(舉例)- 7 -(3)視圖的創(chuàng)建(僅需給出自己設計模塊中所用的視圖)- 7 -(4)存儲過程的定義實現(xiàn)(僅需給出自己設計模塊中所用的)- 8 -(5)觸發(fā)器的定義實現(xiàn)(僅需給出自己設計模塊中所用的)- 10 -1)插入數(shù)據(jù)操作- 11 -2)插入數(shù)據(jù)操作- 14 -六、系統(tǒng)詳細設計及實現(xiàn)- 14 -(1)系統(tǒng)功能模塊說明- 14 -(2)每個模塊的關鍵語句及關鍵技術說明- 15 -I、倉庫管理:- 15 -II、銷售管理:- 15 -七、附錄:部分代碼- 16 -八、心得體會- 19 -一、需求分析(1) 問題描述: 中草藥銷售管理系統(tǒng)主要面向于小型商戶,實現(xiàn)管

3、理層,門面銷售層人員的權限分離,通過管理倉庫,銷售記錄等數(shù)據(jù)統(tǒng)計并顯示各類信息。(2) 系統(tǒng)性要求:i. 信息錄入:進貨、銷售等環(huán)節(jié),都需要往數(shù)據(jù)庫中添加信息。ii. 信息修改:當數(shù)據(jù)庫中信息發(fā)生了改變,需要及時修改信息iii. 信息查詢:可以按條件查詢藥品基本信息、進貨信息、銷售信息、當前倉庫中的庫存情況等,并盡可能實現(xiàn)多條件組合查詢。iv. 統(tǒng)計、匯總各藥品在規(guī)定時間段內(nèi)的進貨總量、銷售總量等。v. 將近過期的商品、庫存量較少的商品請給出提醒。vi. 用戶權限的限定(超級用戶,可以使用本系統(tǒng)提供的任何功能;管理人員,對藥品的進貨,定價等進行管理;銷售員工用戶,可以記錄和查詢貨物的銷售情況,

4、但不可以登記商品的入庫操作)(3) 完整性規(guī)則:a) 設定缺省約束。如進貨日期為系統(tǒng)當前日期。b) 設置非空約束。如藥品名稱。c) 實施CHECK約束,如進貨單價、進貨數(shù)量應大于0等。d) 實施CHECK約束,約束藥品類別為:中藥、草藥、中成藥。e) 設計觸發(fā)器,實現(xiàn)庫存信息的自動更新。(4) 安全性規(guī)則:a) 不同用戶的權限界面,通過不同的登陸賬戶區(qū)分賬戶并開啟不同的界面。b) 分離最低權限用戶同時擁有倉管權限和銷售權限的可能性。c) 程序代碼中界面代碼和數(shù)據(jù)庫訪問代碼分開,加強安全性。 二、概念結構設計數(shù)據(jù)庫E-R圖:實體轉(zhuǎn)化為關系模式:銷售記錄:(銷售編號,倉位號,銷售單價,銷售量,柜臺

5、號,銷售人工號,銷售日期)庫存信息:(倉位號,進貨編號,庫存數(shù)量)進貨信息:(進貨編號,商品編號,生產(chǎn)日期,進貨日期,有效期,進貨單價,進貨數(shù)量)商品信息:(商品編號,商品類別,商品名稱,產(chǎn)地)采購:(采購編號,商品編號,生產(chǎn)商,采購價格)權限層次:權限等級:超級權限為超級用戶所有,面向?qū)ο鬄槠髽I(yè)的最高領導人,可使用所有項目,查看各項資料。一級權限為經(jīng)理用戶所用,面向?qū)ο鬄槠髽I(yè)管理層,除查看企業(yè)季度營銷外,可使用其他生育功能。二級權限為銷售員所用,面向?qū)ο鬄槠髽I(yè)營銷最前方的工作人員,權限較低。功能模塊圖:功能模塊:倉庫管理:查詢在庫藥物,倉儲記錄等一系列倉庫記錄,控制進/出貨,查詢記錄。銷售記

6、錄:查詢搜友銷售記錄,可以添加新的銷售記錄,并自動與倉庫記錄同步。信息查詢:通過指定藥物類別,名稱等一系列信息,查看相應的記錄。季度查詢:從整體角度觀察某段時間的進出貨情況,幫助企業(yè)制定戰(zhàn)略。逼倉巡視:查詢所有記錄,確認其中逼倉,逼期藥物。三、邏輯結構設計(1)模式設計:銷售記錄:(銷售編號,倉位號,銷售單價,銷售量,柜臺號,銷售人工號,銷售日期)庫存信息:(倉位號,進貨編號,庫存數(shù)量)進貨信息:(進貨編號,商品編號,生產(chǎn)日期,進貨日期,有效期,進貨單價,進貨數(shù)量)商品信息:(商品編號,商品類別,商品名稱,產(chǎn)地)采購:(采購編號,商品編號,生產(chǎn)商,采購價格)Ø Item :藥品信息字

7、段名類型大小是否可為空備注藥品編號Int否primary key藥品類別Varchar20否Check_約束藥品名稱varchar20否產(chǎn)地varchar20否Ø PutIn :進貨信息字段名類型大小是否可為空備注進貨編號Int否primary key藥品編號Int否Foreignkey生產(chǎn)日期date否進貨日期date否缺省默認值(當天日期)有效期date否進貨單價Int否進貨數(shù)量Int否Ø Sale:銷售信息字段名類型大小是否可為空備注銷售編號Int否primary key倉位號Int否Foreignkey銷售單價Int否銷售數(shù)量Int否柜臺號Int否銷售人工號Int否

8、銷售日期Date否缺省默認值(當天日期)Ø Warehouse:倉儲信息字段名類型大小是否可為空備注倉位號Int否primary key進貨編號Int否Foreignkey庫存數(shù)量Int否Ø Item :采購字段名類型大小是否可為空備注采購編號Int否primary key藥品名稱Varchar20否Foreignkey采購價格Int否生產(chǎn)商varchar20否采購數(shù)量Int否(2)子模式設計:I、視圖:逼倉情況(進貨編號,藥品名稱,進貨單價,進貨數(shù)量,有效期,庫存數(shù)量)倉儲情況(倉位號,藥品編號,進貨編號,藥品類別,藥品名稱,進貨日期,有效期,庫存數(shù)量,產(chǎn)地)進貨情況(進

9、貨編號,藥品編號,藥品類別,藥品名稱,倉位號,進貨日期,有效期,進貨數(shù)量,產(chǎn)地,進貨單價)銷售情況(銷售編號,.藥品編號,柜臺號,銷售人工號,藥品名稱,銷售單價, 進貨數(shù)量,銷售數(shù)量,庫存數(shù)量,藥品類別,倉位號,銷售日期)選項卡專用(藥品類別,藥品名稱,產(chǎn)地,庫存數(shù)量,生產(chǎn)日期,進貨日期,有效期)II、查詢信息:A、 查詢進貨信息:進貨編號、藥品編號、藥品類型、藥品數(shù)量、進貨日期、有效期、生產(chǎn)日期B、 查詢藥品信息:藥品編號、藥品數(shù)量、藥品名字、生產(chǎn)日期、有效期、產(chǎn)地C、 查詢銷售信息:進貨編號、藥品編號、進貨單價、銷售數(shù)量、進貨日期D、 庫存信息查詢:藥品編號、庫存數(shù)量、有效期、生產(chǎn)日期四、

10、數(shù)據(jù)庫的物理設計為了提高在表中搜索元組的速度,在實際實現(xiàn)的時候應該基于某些屬性建立索引。給出所建立的索引。(包括按哪些表中哪些屬性按升序還是降序來創(chuàng)建索引及相應的T-SQL的創(chuàng)建語句)。Create index index_Meon Medicine(藥品編號)Create index index_kucunon Warehouse(倉位號)五、數(shù)據(jù)庫設計實現(xiàn)及運行(1)數(shù)據(jù)庫的創(chuàng)建T-SQL語句:create database Medicine ( name='Medicine_data', filename='D: Medicine _data.mdf',

11、size=5mb maxsize=100mb filegrowth=15% )(2)數(shù)據(jù)表的創(chuàng)建(舉例)T-SQL語句:說明:若有完整性約束的一方面可以創(chuàng)建時同時實現(xiàn)。按需求及自行設計模塊中所實現(xiàn)的情況,在該部分對完整性約束加以實現(xiàn)。drop table Salecreate table Sale( 銷售編號 int identity(1,1) primary key, 倉位號 int not null, 銷售單價 int not null, 銷售量 int not null,柜臺號 int not null 銷售人工號 int not null銷售日期 date not null)(3)視圖

12、的創(chuàng)建(僅需給出自己設計模塊中所用的視圖)T-SQL語句:Create view 倉儲情況AsSELECT TOP (100) PERCENT dbo.PutIn.進貨編號, dbo.Item.藥品名稱, dbo.PutIn.進貨單價, dbo.PutIn.進貨數(shù)量, dbo.PutIn.有效期, dbo.Warehouse.庫存數(shù)量FROM dbo.Item INNER JOIN dbo.PutIn ON dbo.Item.藥品編號 = dbo.PutIn.藥品編號 INNER JOIN dbo.Warehouse ON dbo.PutIn.進貨編號 = dbo.Warehouse.進貨編號

13、WHERE (DATEADD(yy, - 1, dbo.PutIn.有效期) < GETDATE() OR (dbo.Warehouse.庫存數(shù)量 < 60)(4)存儲過程的定義實現(xiàn)(僅需給出自己設計模塊中所用的)T-SQL語句:USE MedicineGO/* Object: StoredProcedure dbo.Out Script Date: 2015/6/11 12:21:41 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE dbo.Out倉位號 int ,數(shù)量 int ASif exists(

14、select * from Warehouse where 倉位號=倉位號)BEGINif(select 庫存數(shù)量 from Warehouse where 倉位號=倉位號) > 數(shù)量 )BEGIN update Warehouse set 庫存數(shù)量 =(select 庫存數(shù)量 from Warehouse where 倉位號=倉位號)-數(shù)量 where 倉位號=倉位號ENDelseBEGINreturn 2ENDENDelseBEGINreturn 3END 在宿主語言中調(diào)用存儲過程代碼段(粘貼):public void OutW(int t1,int t2)/出貨tryClass.f

15、orName(driverName);Connection dbConn=DriverManager.getConnection(dbURL,userName,userPwd);CallableStatement cmd=dbConn.prepareCall("call Out(?,?)");cmd.setInt(1, t1);cmd.setInt(2, t2);cmd.execute();cmd.close();catch(Exception e)e.printStackTrace();javax.swing.JOptionPane.showMessageDialog(n

16、ull, "無法鏈接數(shù)據(jù)庫");測試結果粘貼:此處舉例的存儲過程為倉庫出貨過程:(5)觸發(fā)器的定義實現(xiàn)(僅需給出自己設計模塊中所用的)T-SQL語句:USE MedicineGO/* Object: Trigger dbo.UpIn Script Date: 2015/6/11 12:32:32 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER TRIGGER dbo.UpIn ON dbo.PutIn FOR InsertAS declare 倉位號 INTdeclare 進貨編號 INTdeclare 庫存數(shù)量 I

17、NTselect 進貨編號=進貨編號from INSERTEDselect 庫存數(shù)量=進貨數(shù)量from INSERTEDselect 倉位號=(1000*RAND()begininsertinto Warehousevalues (倉位號,進貨編號,庫存數(shù)量)END測試結果:該觸發(fā)器作用于進貨記錄表,作用是當出現(xiàn)新插入行為時,將相應信息插入庫存表。1)插入數(shù)據(jù)操作"insert into PutIn values('"+t1+"','"+t2+"','"+t3+"','

18、"+t4+"','"+t5+"','"+t6+"','"+t7+"')"每個功能模塊描述方法如下:功能界面(粘貼);功能界面簡單描述;使用進貨界面時,按信息填入記錄按確定即可。T-SQL語句與宿主語言嵌套使用代碼段(粘貼);Fin1.addActionListener(new ActionListener() /*進貨記錄*/Overridepublic void actionPerformed(ActionEvent e) try String t

19、e1=year.getSelectedItem().toString(),te2=month.getSelectedItem().toString();String te3=year2.getSelectedItem().toString(),te4=month2.getSelectedItem().toString();te1=te1+"-"+te2+"-1"te2=te3+"-"+te4+"-1"Welcome5.setVisible(false);String cols="倉位號",&qu

20、ot;進貨編號","藥品編號","藥品名稱","進貨日期","有效期","進貨數(shù)量"rows=DW.Wym(te1,te2 );DefaultTableModel dtm = new DefaultTableModel(rows,cols);yitable.setModel(dtm);yitable1.setVisible(true); catch (Exception e1) e1.printStackTrace();System.out.println("輸入錯誤&quo

21、t;);javax.swing.JOptionPane.showMessageDialog(null, "輸入有誤,請重新輸入"););測試結果粘貼;2)插入數(shù)據(jù)操作使用者可按需修改商品信息,先查找,后修改:SQL語句實現(xiàn):String sql="update Item set 藥品名稱='"+text+"' ,藥品類別='"+text2+"' ,產(chǎn)地='"+text3+"' where 藥品編號='"+parseInt+"

22、9;"六、系統(tǒng)詳細設計及實現(xiàn)(1)系統(tǒng)功能模塊說明本程序分倉庫管理,銷售管理,信息查詢,統(tǒng)計管理,逼倉巡視5個界面。只有超級用戶在倉庫管理頁面具有修改按鈕,而其他用戶只擁有查詢按鈕。本程序通過預讀數(shù)據(jù)庫內(nèi)容,在信息查詢頁面采用人性化的選項卡選擇,避免了可能出現(xiàn)的輸入錯誤而造成的失誤,同時本程序所有查詢均滿足單一查詢,即多空只填一即可。在銷售管理頁面中,用戶可以添加新的銷售信息,但銷售數(shù)量等仍需滿足庫存要求,若庫存不足將無法添加并自動滾回操作。若插入成功,則自動更新庫存數(shù)量表格。(2)每個模塊的關鍵語句及關鍵技術說明I、倉庫管理:多按鈕,分線界面,使用戶視覺清晰,不至于覺得界面太過凌亂

23、。表格可隨時使用不同按鈕更新。jPanel1.add(Welcome);jPanel1.add(wtable1);T1.setLayout(null);T2.setLayout(null);T3.setLayout(null);T4.setLayout(null);T1.setBounds(515,20,270,80);T2.setBounds(515,120,270,80);T3.setBounds(515,220,270,80);T4.setBounds(515,320,270,80);jPanel1.add(T1);jPanel1.add(T2);jPanel1.add(T3);jPan

24、el1.add(T4);MedicineMs=new JButton("在庫藥物信息");Search1=new JButton("更改");MedicineMs.setBounds(10,30,120,30);Search1.setBounds(160,30,100,30);AllMs=new JButton("倉儲記錄");Search2=new JButton("查找");AllMs.setBounds(10,30,120,30);Search2.setBounds(160,30,100,30);Insert

25、=new JButton("進貨");Out=new JButton("出貨");Insert.setBounds(10,30,120,30);Out.setBounds(160,30,100,30);WareMs=new JButton("進貨記錄");WareMs.setBounds(10,30,120,30);T1.add(MedicineMs);T1.add(Search1);T2.add(AllMs);T2.add(Search2);T3.add(Insert);T3.add(Out);T4.add(WareMs);II、銷

26、售管理:隨時驗證庫存數(shù)量,從而決定是否可以插入新數(shù)據(jù)。(此由觸發(fā)器實現(xiàn)).USE MedicineGO/* Object: Trigger dbo.Up Script Date: 2015/6/15 9:33:30 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER TRIGGER dbo.Up ON dbo.Sale FOR INSERTAS declare倉位號 intdeclare 數(shù)量 intdeclare 庫存數(shù)量 intselect 倉位號=倉位號from INSERTEDif exists(select * from Ware

27、house where 倉位號=倉位號)BEGINselect 數(shù)量=銷售數(shù)量from INSERTEDselect 庫存數(shù)量=庫存數(shù)量from Warehouse where 倉位號=倉位號if 庫存數(shù)量-數(shù)量<1BEGINROLLBACK TRANprint '庫存量不足,不允許出庫'ENDelseupdate Warehouse set 庫存數(shù)量 =庫存數(shù)量-數(shù)量 where 倉位號=倉位號END七、附錄:部分代碼² 存儲過程:1、 按名稱或類別搜索銷售記錄USE MedicineGO/* Object: StoredProcedure dbo.Searc

28、hSale Script Date: 2015/6/15 21:23:16 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE dbo.SearchSale藥品名稱 varchar(20),藥品類別 varchar(20)ASif(藥品名稱 is null and 藥品類別 is null )return 6elseif(藥品名稱 is not null and 藥品類別 is not null )BEGINselect 銷售編號,倉位號,藥品名稱,藥品類別,銷售單價,銷售數(shù)量,柜臺號,銷售人工號,銷售日期 from 銷

29、售情況 where 藥品名稱=藥品名稱 and 藥品類別=藥品類別ENDif(藥品名稱 is not null and 藥品類別 is null)select 銷售編號,倉位號,藥品名稱,藥品類別,銷售單價,銷售數(shù)量,柜臺號,銷售人工號,銷售日期 from 銷售情況 where 藥品名稱=藥品名稱if(藥品類別 is not null and 藥品名稱 is null)select 銷售編號,倉位號,藥品名稱,藥品類別,銷售單價,銷售數(shù)量,柜臺號,銷售人工號,銷售日期 from 銷售情況 where 藥品類別=藥品類別2、 進貨USE MedicineGO/* Object: StoredPr

30、ocedure dbo.Ware_insert Script Date: 2015/6/15 21:23:43 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE dbo.Ware_insert 倉位號 int,進貨編號 int,庫存數(shù)量intASif exists(select * from Warehouse where 倉位號=倉位號)Rollback TransActionelseinsert into Warehouse(倉位號,進貨編號,庫存數(shù)量)values(倉位號,進貨編號,庫存數(shù)量)² 觸發(fā)器:1、 進貨時更新庫存表(位于PutIn表)USE MedicineGO/* Object: Trigger dbo.UpIn

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論