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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

上海電力學(xué)院數(shù)據(jù)庫設(shè)計(jì)課程設(shè)計(jì)題目: 中草藥銷售管理系統(tǒng) 學(xué)生姓名: 李辰源 學(xué) 號: 20131791 班 級: 201054 院系: 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 專業(yè)年級: 計(jì)算機(jī)科學(xué)與技術(shù)(卓越) 級 2015年6 月10 日目錄一、需求分析- 1 -(1)問題描述:- 1 -(2) 系統(tǒng)性要求:- 1 -(3) 完整性規(guī)則:- 1 -(4) 安全性規(guī)則:- 1 -二、概念結(jié)構(gòu)設(shè)計(jì)- 2 -三、邏輯結(jié)構(gòu)設(shè)計(jì)- 4 -(1)模式設(shè)計(jì):- 4 -(2)子模式設(shè)計(jì):- 6 -I、視圖:- 6 -II、查詢信息:- 6 -四、數(shù)據(jù)庫的物理設(shè)計(jì)- 6 -五、數(shù)據(jù)庫設(shè)計(jì)實(shí)現(xiàn)及運(yùn)行- 7 -(1)數(shù)據(jù)庫的創(chuàng)建- 7 -(2)數(shù)據(jù)表的創(chuàng)建(舉例)- 7 -(3)視圖的創(chuàng)建(僅需給出自己設(shè)計(jì)模塊中所用的視圖)- 7 -(4)存儲過程的定義實(shí)現(xiàn)(僅需給出自己設(shè)計(jì)模塊中所用的)- 8 -(5)觸發(fā)器的定義實(shí)現(xiàn)(僅需給出自己設(shè)計(jì)模塊中所用的)- 10 -1)插入數(shù)據(jù)操作- 11 -2)插入數(shù)據(jù)操作- 14 -六、系統(tǒng)詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)- 14 -(1)系統(tǒng)功能模塊說明- 14 -(2)每個模塊的關(guān)鍵語句及關(guān)鍵技術(shù)說明- 15 -I、倉庫管理:- 15 -II、銷售管理:- 15 -七、附錄:部分代碼- 16 -八、心得體會- 19 -一、需求分析(1) 問題描述: 中草藥銷售管理系統(tǒng)主要面向于小型商戶,實(shí)現(xiàn)管理層,門面銷售層人員的權(quán)限分離,通過管理倉庫,銷售記錄等數(shù)據(jù)統(tǒng)計(jì)并顯示各類信息。(2) 系統(tǒng)性要求:i. 信息錄入:進(jìn)貨、銷售等環(huán)節(jié),都需要往數(shù)據(jù)庫中添加信息。ii. 信息修改:當(dāng)數(shù)據(jù)庫中信息發(fā)生了改變,需要及時修改信息iii. 信息查詢:可以按條件查詢藥品基本信息、進(jìn)貨信息、銷售信息、當(dāng)前倉庫中的庫存情況等,并盡可能實(shí)現(xiàn)多條件組合查詢。iv. 統(tǒng)計(jì)、匯總各藥品在規(guī)定時間段內(nèi)的進(jìn)貨總量、銷售總量等。v. 將近過期的商品、庫存量較少的商品請給出提醒。vi. 用戶權(quán)限的限定(超級用戶,可以使用本系統(tǒng)提供的任何功能;管理人員,對藥品的進(jìn)貨,定價等進(jìn)行管理;銷售員工用戶,可以記錄和查詢貨物的銷售情況,但不可以登記商品的入庫操作)(3) 完整性規(guī)則:a) 設(shè)定缺省約束。如進(jìn)貨日期為系統(tǒng)當(dāng)前日期。b) 設(shè)置非空約束。如藥品名稱。c) 實(shí)施CHECK約束,如進(jìn)貨單價、進(jìn)貨數(shù)量應(yīng)大于0等。d) 實(shí)施CHECK約束,約束藥品類別為:中藥、草藥、中成藥。e) 設(shè)計(jì)觸發(fā)器,實(shí)現(xiàn)庫存信息的自動更新。(4) 安全性規(guī)則:a) 不同用戶的權(quán)限界面,通過不同的登陸賬戶區(qū)分賬戶并開啟不同的界面。b) 分離最低權(quán)限用戶同時擁有倉管權(quán)限和銷售權(quán)限的可能性。c) 程序代碼中界面代碼和數(shù)據(jù)庫訪問代碼分開,加強(qiáng)安全性。 二、概念結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫E-R圖:實(shí)體轉(zhuǎn)化為關(guān)系模式:銷售記錄:(銷售編號,倉位號,銷售單價,銷售量,柜臺號,銷售人工號,銷售日期)庫存信息:(倉位號,進(jìn)貨編號,庫存數(shù)量)進(jìn)貨信息:(進(jìn)貨編號,商品編號,生產(chǎn)日期,進(jìn)貨日期,有效期,進(jìn)貨單價,進(jìn)貨數(shù)量)商品信息:(商品編號,商品類別,商品名稱,產(chǎn)地)采購:(采購編號,商品編號,生產(chǎn)商,采購價格)權(quán)限層次:權(quán)限等級:超級權(quán)限為超級用戶所有,面向?qū)ο鬄槠髽I(yè)的最高領(lǐng)導(dǎo)人,可使用所有項(xiàng)目,查看各項(xiàng)資料。一級權(quán)限為經(jīng)理用戶所用,面向?qū)ο鬄槠髽I(yè)管理層,除查看企業(yè)季度營銷外,可使用其他生育功能。二級權(quán)限為銷售員所用,面向?qū)ο鬄槠髽I(yè)營銷最前方的工作人員,權(quán)限較低。功能模塊圖:功能模塊:倉庫管理:查詢在庫藥物,倉儲記錄等一系列倉庫記錄,控制進(jìn)/出貨,查詢記錄。銷售記錄:查詢搜友銷售記錄,可以添加新的銷售記錄,并自動與倉庫記錄同步。信息查詢:通過指定藥物類別,名稱等一系列信息,查看相應(yīng)的記錄。季度查詢:從整體角度觀察某段時間的進(jìn)出貨情況,幫助企業(yè)制定戰(zhàn)略。逼倉巡視:查詢所有記錄,確認(rèn)其中逼倉,逼期藥物。三、邏輯結(jié)構(gòu)設(shè)計(jì)(1)模式設(shè)計(jì):銷售記錄:(銷售編號,倉位號,銷售單價,銷售量,柜臺號,銷售人工號,銷售日期)庫存信息:(倉位號,進(jìn)貨編號,庫存數(shù)量)進(jìn)貨信息:(進(jìn)貨編號,商品編號,生產(chǎn)日期,進(jìn)貨日期,有效期,進(jìn)貨單價,進(jìn)貨數(shù)量)商品信息:(商品編號,商品類別,商品名稱,產(chǎn)地)采購:(采購編號,商品編號,生產(chǎn)商,采購價格) Item :藥品信息字段名類型大小是否可為空備注藥品編號Int否primary key藥品類別Varchar20否Check_約束藥品名稱varchar20否產(chǎn)地varchar20否 PutIn :進(jìn)貨信息字段名類型大小是否可為空備注進(jìn)貨編號Int否primary key藥品編號Int否Foreignkey生產(chǎn)日期date否進(jìn)貨日期date否缺省默認(rèn)值(當(dāng)天日期)有效期date否進(jìn)貨單價Int否進(jìn)貨數(shù)量Int否 Sale:銷售信息字段名類型大小是否可為空備注銷售編號Int否primary key倉位號Int否Foreignkey銷售單價Int否銷售數(shù)量Int否柜臺號Int否銷售人工號Int否銷售日期Date否缺省默認(rèn)值(當(dāng)天日期) Warehouse:倉儲信息字段名類型大小是否可為空備注倉位號Int否primary key進(jìn)貨編號Int否Foreignkey庫存數(shù)量Int否 Item :采購字段名類型大小是否可為空備注采購編號Int否primary key藥品名稱Varchar20否Foreignkey采購價格Int否生產(chǎn)商varchar20否采購數(shù)量Int否(2)子模式設(shè)計(jì):I、視圖:逼倉情況(進(jìn)貨編號,藥品名稱,進(jìn)貨單價,進(jìn)貨數(shù)量,有效期,庫存數(shù)量)倉儲情況(倉位號,藥品編號,進(jìn)貨編號,藥品類別,藥品名稱,進(jìn)貨日期,有效期,庫存數(shù)量,產(chǎn)地)進(jìn)貨情況(進(jìn)貨編號,藥品編號,藥品類別,藥品名稱,倉位號,進(jìn)貨日期,有效期,進(jìn)貨數(shù)量,產(chǎn)地,進(jìn)貨單價)銷售情況(銷售編號,.藥品編號,柜臺號,銷售人工號,藥品名稱,銷售單價, 進(jìn)貨數(shù)量,銷售數(shù)量,庫存數(shù)量,藥品類別,倉位號,銷售日期)選項(xiàng)卡專用(藥品類別,藥品名稱,產(chǎn)地,庫存數(shù)量,生產(chǎn)日期,進(jìn)貨日期,有效期)II、查詢信息:A、 查詢進(jìn)貨信息:進(jìn)貨編號、藥品編號、藥品類型、藥品數(shù)量、進(jìn)貨日期、有效期、生產(chǎn)日期B、 查詢藥品信息:藥品編號、藥品數(shù)量、藥品名字、生產(chǎn)日期、有效期、產(chǎn)地C、 查詢銷售信息:進(jìn)貨編號、藥品編號、進(jìn)貨單價、銷售數(shù)量、進(jìn)貨日期D、 庫存信息查詢:藥品編號、庫存數(shù)量、有效期、生產(chǎn)日期四、數(shù)據(jù)庫的物理設(shè)計(jì)為了提高在表中搜索元組的速度,在實(shí)際實(shí)現(xiàn)的時候應(yīng)該基于某些屬性建立索引。給出所建立的索引。(包括按哪些表中哪些屬性按升序還是降序來創(chuàng)建索引及相應(yīng)的T-SQL的創(chuàng)建語句)。Create index index_Meon Medicine(藥品編號)Create index index_kucunon Warehouse(倉位號)五、數(shù)據(jù)庫設(shè)計(jì)實(shí)現(xiàn)及運(yùn)行(1)數(shù)據(jù)庫的創(chuàng)建T-SQL語句:create database Medicine ( name=Medicine_data, filename=D: Medicine _data.mdf, size=5mb maxsize=100mb filegrowth=15% )(2)數(shù)據(jù)表的創(chuàng)建(舉例)T-SQL語句:說明:若有完整性約束的一方面可以創(chuàng)建時同時實(shí)現(xiàn)。按需求及自行設(shè)計(jì)模塊中所實(shí)現(xiàn)的情況,在該部分對完整性約束加以實(shí)現(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)視圖的創(chuàng)建(僅需給出自己設(shè)計(jì)模塊中所用的視圖)T-SQL語句:Create view 倉儲情況AsSELECT TOP (100) PERCENT dbo.PutIn.進(jìn)貨編號, dbo.Item.藥品名稱, dbo.PutIn.進(jìn)貨單價, dbo.PutIn.進(jìn)貨數(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.進(jìn)貨編號 = dbo.Warehouse.進(jìn)貨編號WHERE (DATEADD(yy, - 1, dbo.PutIn.有效期) GETDATE() OR (dbo.Warehouse.庫存數(shù)量 數(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.forName(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(null, 無法鏈接數(shù)據(jù)庫);測試結(jié)果粘貼:此處舉例的存儲過程為倉庫出貨過程:(5)觸發(fā)器的定義實(shí)現(xiàn)(僅需給出自己設(shè)計(jì)模塊中所用的)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 進(jìn)貨編號 INTdeclare 庫存數(shù)量 INTselect 進(jìn)貨編號=進(jìn)貨編號from INSERTEDselect 庫存數(shù)量=進(jìn)貨數(shù)量from INSERTEDselect 倉位號=(1000*RAND()begininsertinto Warehousevalues (倉位號,進(jìn)貨編號,庫存數(shù)量)END測試結(jié)果:該觸發(fā)器作用于進(jìn)貨記錄表,作用是當(dāng)出現(xiàn)新插入行為時,將相應(yīng)信息插入庫存表。1)插入數(shù)據(jù)操作insert into PutIn values(+t1+,+t2+,+t3+,+t4+,+t5+,+t6+,+t7+)每個功能模塊描述方法如下:功能界面(粘貼);功能界面簡單描述;使用進(jìn)貨界面時,按信息填入記錄按確定即可。T-SQL語句與宿主語言嵌套使用代碼段(粘貼);Fin1.addActionListener(new ActionListener() /*進(jìn)貨記錄*/Overridepublic void actionPerformed(ActionEvent e) try String te1=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=倉位號,進(jìn)貨編號,藥品編號,藥品名稱,進(jìn)貨日期,有效期,進(jìn)貨數(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(輸入錯誤);javax.swing.JOptionPane.showMessageDialog(null, 輸入有誤,請重新輸入););測試結(jié)果粘貼;2)插入數(shù)據(jù)操作使用者可按需修改商品信息,先查找,后修改:SQL語句實(shí)現(xiàn):String sql=update Item set 藥品名稱=+text+ ,藥品類別=+text2+ ,產(chǎn)地=+text3+ where 藥品編號=+parseInt+六、系統(tǒng)詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)(1)系統(tǒng)功能模塊說明本程序分倉庫管理,銷售管理,信息查詢,統(tǒng)計(jì)管理,逼倉巡視5個界面。只有超級用戶在倉庫管理頁面具有修改按鈕,而其他用戶只擁有查詢按鈕。本程序通過預(yù)讀數(shù)據(jù)庫內(nèi)容,在信息查詢頁面采用人性化的選項(xiàng)卡選擇,避免了可能出現(xiàn)的輸入錯誤而造成的失誤,同時本程序所有查詢均滿足單一查詢,即多空只填一即可。在銷售管理頁面中,用戶可以添加新的銷售信息,但銷售數(shù)量等仍需滿足庫存要求,若庫存不足將無法添加并自動滾回操作。若插入成功,則自動更新庫存數(shù)量表格。(2)每個模塊的關(guān)鍵語句及關(guān)鍵技術(shù)說明I、倉庫管理:多按鈕,分線界面,使用戶視覺清晰,不至于覺得界面太過凌亂。表格可隨時使用不同按鈕更新。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);jPanel1.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=new JButton(進(jìn)貨);Out=new JButton(出貨);Insert.setBounds(10,30,120,30);Out.setBounds(160,30,100,30);WareMs=new JButton(進(jìn)貨記錄);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、銷售管理:隨時驗(yàn)證庫存數(shù)量,從而決定是否可以插入新數(shù)據(jù)。(此由觸發(fā)器實(shí)現(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 Warehouse 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.SearchSale 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 銷售情況 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、 進(jìn)貨USE MedicineGO/* Object: StoredProcedure dbo.Ware_insert Script Date: 2015/6/15 21:23:43 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE dbo.Ware_insert 倉位號 int,進(jìn)貨編號 int,庫存數(shù)量intASif exists(select * from Warehouse where 倉位號=倉位號)Rollback TransActionelseinsert into Warehouse(倉位號,進(jìn)貨編號,庫存數(shù)量)values(倉位號,進(jìn)貨編號,庫存數(shù)量) 觸發(fā)器:1、 進(jìn)貨時更新庫存表(位于PutIn表)USE MedicineGO/* Object: Trigger dbo.UpIn Script Date: 2015/6/15 21:28:58 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER T

溫馨提示

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

評論

0/150

提交評論