畢業(yè)設(shè)計藥品管理系統(tǒng)的設(shè)計與實現(xiàn)樣本_第1頁
畢業(yè)設(shè)計藥品管理系統(tǒng)的設(shè)計與實現(xiàn)樣本_第2頁
畢業(yè)設(shè)計藥品管理系統(tǒng)的設(shè)計與實現(xiàn)樣本_第3頁
畢業(yè)設(shè)計藥品管理系統(tǒng)的設(shè)計與實現(xiàn)樣本_第4頁
畢業(yè)設(shè)計藥品管理系統(tǒng)的設(shè)計與實現(xiàn)樣本_第5頁
已閱讀5頁,還剩60頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

目錄1緒論 11.1課題研究背景 11.2系統(tǒng)開發(fā)意義 12需求分析 12.1系統(tǒng)功能分析 12.2系統(tǒng)用例分析 22.3系統(tǒng)E-R圖 32.4運營環(huán)境 32.5可行性分析 42.5.1技術(shù)可行性 42.5.2經(jīng)濟(jì)可行性 43系統(tǒng)概要設(shè)計 43.1功能模塊設(shè)計 43.2概念構(gòu)造設(shè)計 53.2.1實體屬性圖 53.3數(shù)據(jù)表設(shè)計 94系統(tǒng)詳細(xì)設(shè)計與實現(xiàn) 134.1功能模塊詳細(xì)實現(xiàn) 134.1.1登錄模塊 134.1.2系統(tǒng)主界面設(shè)計 154.1.3顧客管理模塊 164.1.4修改密碼模塊 184.1.5藥物信息管理模塊 204.1.6入庫登記模塊 224.1.7銷售登記模塊 254.1.8藥物退貨模塊 274.1.9藥物報損模塊 284.1.10藥物調(diào)價模塊 294.1.11報表中心界面 304.1.12系統(tǒng)某些公有類或辦法設(shè)計與實現(xiàn) 345系統(tǒng)測試 355.1測試目的 355.2測試大綱 355.3測試成果及截圖 366總結(jié)和道謝 466.1總結(jié) 466.2道謝 467參照文獻(xiàn) 47

藥物管理系統(tǒng)設(shè)計與實現(xiàn)專業(yè):計算機(jī)科學(xué)與技術(shù)學(xué)號:姓名:指引教師:【內(nèi)容摘要】社會在進(jìn)步,隨之而來尚有各種疾病,隨著人們生活水平不斷提高,人們越來越注重自己健康,這加速了醫(yī)藥行業(yè)發(fā)展。在當(dāng)前“看病難,看病貴”社會背景下,諸多工薪一族在面對某些小疾病時候往往選取到附近藥店購買非處方藥進(jìn)行治療。在這種狀況下,中小型便民藥店越來越多,而中小型藥店普遍存在藥物管理混亂等問題,容易導(dǎo)致藥物積壓甚至失效,導(dǎo)致不必要損失。本藥物管理系統(tǒng)重要環(huán)繞藥物管理來操作,依照需求,系統(tǒng)重要實現(xiàn)藥物庫存管理、銷售管理兩大業(yè)務(wù),為顧客提供任意時間段藥物庫存查詢,設(shè)立藥物庫存下限查詢。同步還向顧客提供了庫存報表、銷售報表、即將過期藥物報表、利潤報表等豐富報表。系統(tǒng)使用Microsoft公司VisualStudio平臺,采用C#語言,結(jié)合SQLServer數(shù)據(jù)庫進(jìn)行設(shè)計與實現(xiàn)。系統(tǒng)通過測試基本達(dá)到了預(yù)期目的,操作界面較和諧,操作辦法簡樸,可以用于中小型藥店藥物管理?!竞诵脑~】中小型藥店;藥物管理;C#1緒論1.1課題研究背景藥物管理系統(tǒng)可覺得藥店管理者提供充分信息和快捷查詢手段。但始終以來諸多中小型藥店都使用老式手工方式進(jìn)行管理,這種管理方式存在著許多缺陷,如效率低、數(shù)據(jù)易丟失等,容易導(dǎo)致藥物積壓甚至失效。此外時間一長,將產(chǎn)生大量紙質(zhì)版數(shù)據(jù),這對于查詢、修改都導(dǎo)致很大不便。使用計算機(jī)對藥物進(jìn)行管理相對于手工管理而言,具備諸多長處。例如:查詢以便快捷、數(shù)據(jù)存儲量大等。這些長處可以極大地提高了藥物管理效率,也能更好地保證藥物效期安全,是對消費者負(fù)責(zé)態(tài)度體現(xiàn)。因而,開發(fā)一套合用于中小型藥店藥物管理系統(tǒng)管理軟件很有必要。1.2系統(tǒng)開發(fā)意義中華人民共和國當(dāng)前醫(yī)藥體系還不成熟,藥物管理系統(tǒng)也不成熟。在國內(nèi)有諸多軟件公司開發(fā)藥物管理系統(tǒng),基本采用進(jìn)銷存模式,系統(tǒng)功能比較完善,但在安全、簡捷、性能以及人性化設(shè)計方面還存在局限性。2需求分析2.1系統(tǒng)功能分析 藥店正常運轉(zhuǎn)貨源要得到保證,這就必要有著良好進(jìn)貨入庫管理功能,同步為了藥物質(zhì)量保證,以及在未知藥物銷量時可以保證藥店不至于積存大量藥物,對某些積存藥物進(jìn)行合理退貨。作為藥店賺錢機(jī)構(gòu),藥店銷售是非常重要,同步規(guī)定透明化,藥店入庫單、銷售單、退貨信息都必要合理記錄記錄。藥物存貨是藥店進(jìn)行正常運營保證同步合理庫存量更好應(yīng)對某些藥物需求量變化,同步記錄藥物出庫信息可以更好反映藥物銷售信息。在倉庫中藥物儲藏浮現(xiàn)損失,通過記錄信息可以精準(zhǔn)核對藥物量信息。同步在倉庫儲存中應(yīng)設(shè)立藥物庫存下限,以便及時反映藥物信息,為藥物進(jìn)貨提供可靠根據(jù)。藥物,是藥店資源。藥物管理直接影響藥店經(jīng)營,藥物管理做得不好會引起藥物混亂,容易導(dǎo)致藥物失效,導(dǎo)致?lián)p失。為了維護(hù)消費者利益和藥店自身信譽以及給藥店創(chuàng)造更好效益,本系統(tǒng)應(yīng)具備如下功能:

良好人機(jī)界面。藥物入庫及調(diào)價管理。藥物銷售及退貨管理。藥物報損管理。完善數(shù)據(jù)查詢。豐富報表。數(shù)據(jù)導(dǎo)出到Excel、Word、PDF功能。2.2系統(tǒng)用例分析依照系統(tǒng)功能分析,可以將系統(tǒng)細(xì)分出藥物信息管理、藥店信息管理、修改密碼、入庫登記、藥物調(diào)價、銷售登記、藥物退貨、藥物效期查詢、藥物報損、收入記錄、支出記錄、利潤記錄以及顧客管理13個子模塊,管理員應(yīng)為藥店負(fù)責(zé)人,從藥物入庫到銷售以及中間業(yè)務(wù),管理員都可以使用,收銀員可以使用某些功能,管理員用例圖如圖1所示,收銀員用例圖如圖2所示。圖1管理員用例圖圖2收銀員用例圖2.3系統(tǒng)E-R圖圖3系統(tǒng)E-R圖2.4運營環(huán)境該系統(tǒng)采用了Client/Server模式軟件構(gòu)造技術(shù),頁面系統(tǒng)采用VisualStudio開發(fā),數(shù)據(jù)庫采用SQLServer作為數(shù)據(jù)庫系統(tǒng),系統(tǒng)平臺為Windows7。MicrosoftVisualStudio集成化限度高,控件豐富,開發(fā)人員可以直接將各種控件拖放到視圖設(shè)計器,由軟件自動生成控件設(shè)計以及窗體布局設(shè)計代碼,窗體視圖設(shè)計更加以便高效MicrosoftSQLServer能以便地建立數(shù)據(jù)庫對象,并且SQLServer結(jié)合VisualStudio和C#一起使用,能以便地對數(shù)據(jù)庫對象進(jìn)行數(shù)據(jù)操作。2.5可行性分析2.5.1技術(shù)可行性藥店管理主線是藥物,藥物從入庫到出庫以及其他操作即從藥店流向消費者過程,中間不用通過其她部門,沒有繁瑣流程。加上到藥店理解,對于藥物管理系統(tǒng)管理流程和管理內(nèi)容都易于掌握。作為計算機(jī)專業(yè)學(xué)生,在平時課程設(shè)計基本上,加上自己練習(xí)以及同窗們協(xié)助,在系統(tǒng)實現(xiàn)上也是可行。計算機(jī)可以安裝本系統(tǒng)所需開發(fā)環(huán)境SQLServer和Visualstudio。2.5.2經(jīng)濟(jì)可行性本系統(tǒng)重要面向中小型藥店,解決數(shù)據(jù)量不是很大,屬于小型系統(tǒng),只需要購買打印機(jī)、電腦即可投入使用,成本低。系統(tǒng)投入使用后可以較好地對藥物進(jìn)行管理,在給藥店創(chuàng)造更好效益同步有效避免藥物積壓甚至失效問題,減少藥店損失。3系統(tǒng)概要設(shè)計 3.1功能模塊設(shè)計依照系統(tǒng)需求分析可以將藥物管理系統(tǒng)分為如下幾種大模塊:登錄模塊基本信息模塊、入庫管理模塊、銷售管理模塊,以及庫存管理模塊、利潤記錄模塊和關(guān)于咱們模塊。整個系統(tǒng)以藥物主線,入庫管理模塊是把藥物信息存入庫存表,其他藥物管理有關(guān)模塊是從庫存表獲得數(shù)據(jù)進(jìn)行業(yè)務(wù)解決,系統(tǒng)模塊構(gòu)造圖如圖3所示。圖4系統(tǒng)功能模塊構(gòu)造圖3.2概念構(gòu)造設(shè)計3.2.1實體屬性圖藥物實體屬性圖,如圖5所示。藥物屬性涉及藥物基本信息,如藥物編號、藥物名稱、拼音、藥物規(guī)格、計量單位、庫存低限等。其中藥物編號可以唯一標(biāo)記藥物。圖5藥物實體屬性圖藥店實體屬性圖,如圖6所示。藥店實體包括藥店名稱、固定電話、手機(jī)、藥店地址4個基本屬性,作為藥店標(biāo)記并用于打印小票。圖6藥店實體屬性圖藥物入庫單實體屬性圖,如圖7所示。藥物與普通商品稍有不同,諸多屬性都關(guān)系到藥物安全,因此入庫單包括諸多屬性,如入庫編號、拼音碼、藥物名稱、藥物規(guī)格、計量單位、批號、批準(zhǔn)文號、入庫單價、入庫數(shù)量、入庫總額、入庫時間、入庫單位、生產(chǎn)廠家、生產(chǎn)日期、失效日期、操作員、備注等17個基本屬性。其中入庫編號可唯一標(biāo)記藥物入庫信息。圖7藥物入庫單實體屬性圖藥物調(diào)價單實體屬性圖,如圖8所示。藥物調(diào)價單包括調(diào)價編號、入庫編號、拼音碼、藥物名稱、原單價、新單價、經(jīng)辦人、調(diào)價時間等基本屬性。圖8藥物調(diào)價單實體屬性圖藥物銷售單實體屬性圖,如圖9所示。藥物銷售單包括銷售編號、入庫編號、拼音碼、藥物名稱、藥物規(guī)格、計量單位、生產(chǎn)廠家、銷售時間、銷售單價、銷售數(shù)量、銷售總額、操作員等基本屬性。圖9藥物銷售單實體屬性圖藥物退貨單實體屬性圖,如圖10所示。藥物退貨單包括退貨編號、入庫編號、拼音碼、藥物名稱、進(jìn)貨單位、進(jìn)貨單價、退貨因素、退貨時間、退貨數(shù)量、退貨總額、操作員等基本屬性。圖10藥物退貨單實體屬性圖藥物報損單實體屬性圖,如圖11所示。藥物報損單包括報損編號、入庫編號、拼音碼、藥物名稱、進(jìn)貨單價、報損因素、報損時間、報損數(shù)量、報損總額、操作員等基本屬性。圖11藥物報損單實體屬性圖顧客實體屬性圖,如圖12所示。顧客實體包括顧客編號、顧客名、密碼、顧客姓名、與否管理員5個基本屬性。圖12顧客實體屬性圖3.3數(shù)據(jù)表設(shè)計本系統(tǒng)使用SQLServer作為后臺數(shù)據(jù)庫,在SQLServer中創(chuàng)立基本表對象。表對象要依照邏輯設(shè)計階段設(shè)計關(guān)系模式來創(chuàng)立。本系統(tǒng)創(chuàng)立SQL數(shù)據(jù)庫名稱為DrugStore。包括如下9張表。Login(顧客信息表)顧客信息表用于顧客信息,該表構(gòu)造如表1所示。表1顧客信息表字段名數(shù)據(jù)類型長度備注闡明u_idint4Notnull顧客編號(自動編號)usernamevarchar50主鍵顧客名pwvarchar50Notnull密碼realnamevarchar50Notnull顧客姓名adminvarchar50Notnull與否管理員Store(藥店信息表)藥店信息表用于存儲藥店信息,該表構(gòu)造如表2所示。表2藥店信息表字段名數(shù)據(jù)類型長度備注闡明storenamevarchar50Notnull藥店名稱telvarchar50Notnull固定電話mobilevarchar50手機(jī)addressvarchar50Notnull藥店地址Drug(藥物信息表)藥物信息表用于藥物基本信息,該表構(gòu)造如表3所示。表3藥物信息表字段名數(shù)據(jù)類型長度備注闡明idint4主鍵藥物編號(自動編號)pinyinmavarchar50Notnull拼音碼drugnamevarchar50Notnull藥物名稱specvarchar50Notnull藥物規(guī)格unitvarchar50Notnull計量單位lowwarningint4Notnull庫存低限Ruku(入庫信息表)入庫信息表用于存儲藥物進(jìn)貨入庫各項信息,該表構(gòu)造如表4所示。表4入庫信息表字段名數(shù)據(jù)類型長度備注闡明IDvarchar20主鍵入庫編號(自動編號)pinyinmavarchar50Notnull拼音碼drugnamevarchar50Notnull藥物名稱pihaovarchar50Notnull批號pizhunwenhaovarchar50Notnull批準(zhǔn)文號specvarchar50Notnull藥物規(guī)格unitvarchar50Notnull計量單位amountint4Notnull進(jìn)貨數(shù)量inpricedecimal(18,2)Notnull進(jìn)貨單價allpricedecimal(18,2)Notnull進(jìn)貨總額in_timedatetimeNotnull進(jìn)貨時間in_fromvarchar50Notnull進(jìn)貨單位factoryvarchar50Notnull生產(chǎn)廠家producedatedatetimeNotnull生產(chǎn)日期usefuldatedatetimeNotnull失效日期in_byvarchar50Notnull操作員remarkvarchar50備注Kucun(庫存信息表)庫存信息表用于存儲藥物庫存各項信息,該表構(gòu)造如表5所示。表5庫存信息表字段名數(shù)據(jù)類型長度備注闡明IDvarchar20主鍵入庫編號(自動編號)pinyinmavarchar50Notnull拼音碼drugnamevarchar50Notnull藥物名稱factoryvarchar50Notnull生產(chǎn)廠家specvarchar50Notnull藥物規(guī)格unitvarchar50Notnull計量單位amountint4Notnull入庫數(shù)量pihaovarchar50Notnull批號pizhunwenhaovarchar50Notnull批準(zhǔn)文號lowwarningint4Notnull庫存低限inpricedecimal(18,2)Notnull進(jìn)貨單價sellpricedecimal(18,2)Notnull銷售單價in_timedatetimeNotnull入庫時間producedatedatetimeNotnull生產(chǎn)日期usefuldatedatetimeNotnull失效日期in_byvarchar50Notnull操作員Sell(銷售信息表)銷售信息表用于存儲售出藥物信息,該表構(gòu)造如表6所示。表6銷售信息表字段名數(shù)據(jù)類型長度備注闡明pinyinmavarchar50Notnull拼音碼drugnamevarchar50Notnull藥物名稱factoryvarchar50Notnull生產(chǎn)廠家sellpricedecimal(18,2)Notnull銷售單價sellamountint4Notnull銷售數(shù)量allpricedecimal(18,2)Notnull銷售總額s_idvarchar20Notnull銷售編號(自動編號)selltimedatetimeNotnull銷售時間sell_byvarchar50Notnull操作員IDvarchar20Notnull入庫編號(自動編號)specvarchar50Notnull藥物規(guī)格unitvarchar50Notnull計量單位ReturnG(退貨信息表)退貨信息表用于存儲退貨藥物各項信息,該表構(gòu)造如表7所示。

表7退貨信息表字段名數(shù)據(jù)類型長度備注闡明r_idvarchar20主鍵退貨編號(自動編號)ramountint4Notnull退貨數(shù)量totalpricedecimal(18,2)Notnull退貨總額rtimedatetimeNotnull退貨時間return_byvarchar50Notnull操作員reasonvarchar50Notnull退貨因素pinyinmavarchar50Notnull拼音碼drugnamevarchar50Notnull藥物名稱IDvarchar20Notnull入庫編號(自動編號)inpricedecimal(18,2)Notnull入庫單價factoryvarchar50Notnull進(jìn)貨單位Breakage(報損信息表)報損信息表用于存儲已報損藥物各項信息,該表構(gòu)造如表8所示。表8報損信息表字段名數(shù)據(jù)類型長度備注闡明b_idvarchar20主鍵報損編號bamountint4Notnull報損數(shù)量btimedatetimeNotnull報損時間breakage_byvarchar50Notnull操作員reasonvarchar50Notnull報損因素IDvarchar20Notnull入庫編號pinyinmavarchar50Notnull拼音碼drugnamevarchar50Notnull藥物編號inpricedecimal(18,2)Notnull入庫單價allpricedecimal(18,2)Notnull報損總額Adjustprice(調(diào)價信息表)調(diào)價信息表用于存儲藥物調(diào)價記錄,該表構(gòu)造如表9所示。

表9調(diào)價信息表字段名數(shù)據(jù)類型長度備注闡明adjust_idvarchar20主鍵調(diào)價編號IDvarchar20Notnull入庫編號pinyinmavarchar50Notnull拼音碼drugnamevarchar50Notnull藥物名稱oldpricedecimal(18,2)Notnull原單價newpricedecimal(18,2)Notnull新單價adjust_timedatetimeNotnull調(diào)價時間adjust_byvarchar50Notnull操作員4系統(tǒng)詳細(xì)設(shè)計與實現(xiàn)4.1功能模塊詳細(xì)實現(xiàn)4.1.1登錄模塊為保證信息安全,設(shè)立必要進(jìn)行辨認(rèn)顧客才可進(jìn)入系統(tǒng)主界面。顧客名及密碼其中任一種錯誤都會有相應(yīng)提示信息,并自動清空顧客名和密碼。只有兩者所有對的后方可進(jìn)入管理系統(tǒng)主界面。顧客登錄模塊流程圖如圖13所示。圖13顧客登錄模塊流程圖

登錄界面如圖14所示。圖14登錄界面重要代碼如下:publicstaticstringflagUsername=null;publicstaticstringflagPassword=null;publicstaticstringflagAdmin=null;privatevoidbtnLogin_Click(objectsender,EventArgse){stringstrUsn=this.userName.Text;stringstrPsw=this.txtpsw.Text;try{SqlConnectionsc=newSqlConnection(@"server=.\SQLEXPRESS;database=DrugStore;Trusted_Connection=true");stringsqlstring="select*fromLoginwhereusername='"+strUsn+"'";SqlCommandcmd=newSqlCommand(sqlstring,sc);sc.Open();SqlDataReaderdr=cmd.ExecuteReader();if(dr.Read()){if(dr["pw"].ToString()==strPsw){this.DialogResult=DialogResult.OK;flagUsername=strUsn;//獲得登錄顧客名flagPassword=strPsw;//獲得登錄密碼,用于修改密碼時對比flagAdmin=dr["admin"].ToString();//獲得顧客類型,與否管理員}else{MessageBox.Show("密碼錯誤!");}dr.Dispose();sc.Close();}else{if(userName.Text==""){MessageBox.Show("請輸入顧客名");}else{MessageBox.Show("該顧客名不存在");}dr.Dispose();sc.Close();}}catch(Exceptionex){MessageBox.Show("點擊按鈕事件異常:\n"+ex.ToString());}this.userName.Text=null;this.txtpsw.Text=null;}4.1.2系統(tǒng)主界面設(shè)計系統(tǒng)主界面中,點擊左側(cè)不同按鈕會在右側(cè)panel容器中顯示不同窗體,點擊按鈕時,會判斷與否有權(quán)限,并且文字顏色會以紅色突出顯示,十分美觀和諧,系統(tǒng)功能均有很明顯入口。單擊各功能按鈕,會進(jìn)入相應(yīng)子窗口。如圖15所示。圖15系統(tǒng)主界面把窗體顯示到panel容器代碼(以利潤記錄按鈕為例):privatevoidbtnReport_Click(objectsender,EventArgse)//只有管理員有權(quán)限{if(frm_Login.flagAdmin=="管理員"){ if(panel3.Tag!=null&&panel3.TagisForm){((Form)panel3.Tag).Close();}frm_Reportform5=newfrm_Report();form5.TopLevel=false;form5.Parent=panel3;panel3.Tag=form5;form5.Show();}else{MessageBox.Show("沒有這個權(quán)限!");}}按鈕文字顏色會以紅色突出顯示代碼(以利潤記錄按鈕為例):privatevoidbtnReport_Enter(objectsender,EventArgse){this.label6.Visible=true;btnReport.ForeColor=Color.Red;}privatevoidbtnReport_Leave(objectsender,EventArgse){this.label6.Visible=false;btnReport.ForeColor=Color.Blue;}4.1.3顧客管理模塊顧客管理僅限管理員使用。顧客管理模塊中,在添加顧客時,需填寫顧客名和姓名以及選取顧客類型,顧客編號自動生成,初始密碼自動設(shè)為123456,如果添加顧客名已存在,則提示顧客名已存在,不能添加,否則添加成功。此外,選定某一顧客后,右鍵菜單有刪除顧客、重置密碼、設(shè)為管理員、設(shè)為收銀員四個選項,每個操作都設(shè)有相應(yīng)提示,以防誤操作。顧客管理模塊流程圖如圖16所示。圖16顧客管理模塊流程圖顧客管理界面如圖17所示。圖17顧客管理界面重要代碼如下:privatevoidbtnAdd_Click(objectsender,EventArgse){stringstr2=txtUsername.Text;stringstr3=txtRealname.Text;stringstr4=radioButtonAdmin.Text;stringstr5=radioButtonCashier.Text;SqlConnectionconn=GetConnection();stringstrSelect="selectcount(*)fromLoginwhereusername=@username";SqlCommandcommSelect=newSqlCommand(strSelect,conn);commSelect.Parameters.Add("@username",SqlDbType.VarChar).Value=str2;conn.Open();if(Convert.ToInt32(commSelect.ExecuteScalar())==0){stringsqlstring=@"insertintoLogin(username,pw,realname,admin)values(@username,@pw,@realname,@admin)";SqlCommandcomn=newSqlCommand(sqlstring,conn);comn.Parameters.Add("@username",SqlDbType.VarChar).Value=str2;comn.Parameters.Add("@pw",SqlDbType.VarChar).Value=123456;comn.Parameters.Add("@realname",SqlDbType.VarChar).Value=str3;if(radioButtonAdmin.Checked==true){comn.Parameters.Add("@admin",SqlDbType.VarChar).Value=str4;}if(radioButtonCashier.Checked==true){comn.Parameters.Add("@admin",SqlDbType.VarChar).Value=str5;}comn.ExecuteNonQuery();Binddgv();}else{MessageBox.Show("該顧客名已存在!");}Clear();conn.Close();}4.1.4修改密碼模塊修改密碼時為了安全起見,需要輸入登錄密碼。此外,新密碼需要輸入兩次,兩次輸入相似則修改成功,以免顧客輸入出錯而丟失密碼。如圖18所示。圖18修改密碼界面重要代碼如下:privatevoidbtnSave_Click(objectsender,EventArgse){stringstrNew=txtConfirm.Text;SqlConnectionconn=GetConnection();try{if(txtOldpsw.Text==""||txtOldpsw.Text!=frm_Login.flagPassword){MessageBox.Show("原密碼錯誤!");}else{if(txtNewpsw.Text==""||txtConfirm.Text==""){MessageBox.Show("密碼不能為空!");}else{if(txtNewpsw.Text!=txtConfirm.Text){MessageBox.Show("兩次密碼不一致!");txtNewpsw.Text=null;txtConfirm.Text=null;}else{SqlCommandcmd=newSqlCommand(@"updateLoginsetpw=@pwwhereusername=@username",conn);conn.Open();cmd.Parameters.Add("@username",SqlDbType.VarChar).Value=frm_Login.flagUsername;cmd.Parameters.Add("@pw",SqlDbType.VarChar).Value=strNew;cmd.ExecuteNonQuery();MessageBox.Show("修改成功!");conn.Close();txtOldpsw.Text=null;txtNewpsw.Text=null;txtConfirm.Text=null;}}}}catch(Exceptionex){MessageBox.Show("點擊按鈕事件異常:\n"+ex.ToString());}}4.1.5藥物信息管理模塊藥物信息管理模塊可進(jìn)行藥物信息增、刪、改,存儲藥物基本信息,添加藥物時編號以及拼音碼自動生成。輸入藥物名稱后,系統(tǒng)會自動獲得由首字母構(gòu)成拼音碼。計量單位選取框在窗體加載時會查詢藥物信息表里所有計量單位以供選取,顧客也可自行錄入。查詢選取藥物后,如果要刪除已經(jīng)入庫商品,為了保證數(shù)據(jù)完善性,系統(tǒng)提示制止刪除,但可以修改庫存低限。藥物信息管理模塊流程圖如圖19所示。圖19藥物信息管理模塊流程圖藥物管理界面如圖20所示。圖20藥物信息管理界面窗體加載時會查詢顯示藥物信息表里所有計量單位代碼如下:SqlConnectionconn=GetConnection();conn.Open();//依照數(shù)據(jù)庫里數(shù)據(jù)綁定到計量單位選取框********************this.cboUnit.DataSource=null;this.cboUnit.Items.Clear();stringsqlstring=@"selectunitfromDruggroupbyunit";SqlDataAdaptersda=newSqlDataAdapter(sqlstring,conn);DataSetds=newDataSet();sda.Fill(ds);cboUnit.DataSource=ds.Tables[0];cboUnit.DisplayMember="unit";cboUnit.ValueMember="unit";ds.Dispose();//**********************************************************系統(tǒng)自動獲得拼音碼代碼如下://usingMicrosoft.International.Converters.PinYinConverter;//引用微軟有關(guān)類庫后會有GetFirstPinyin(stringstr)辦法publicstaticstringGetFirstPinyin(stringstr){stringr=string.Empty;foreach(charobjinstr){try{ChineseCharchineseChar=newChineseChar(obj);stringt=chineseChar.Pinyins[0].ToString();r+=t.Substring(0,1);}catch{r+=obj.ToString();}}returnr;}privatevoidtxtName_Leave(objectsender,EventArgse){//txtPYM.Text=Components.HZPY.Convert(txtName.Text);txtPYM.Text=GetFirstPinyin(txtName.Text).ToUpper();}4.1.6入庫登記模塊入庫登記是系統(tǒng)重要構(gòu)成某些。進(jìn)入入庫登記窗口后,需填寫必要信息。入庫編號、入庫時間和操作員由系統(tǒng)提取生成。進(jìn)貨單位下拉框自動查詢顯示之邁進(jìn)貨單位記錄。填寫藥物拼音碼后,則把藥物信息表里存在相應(yīng)藥物信息顯示到輔助錄入?yún)^(qū),同步把也許生產(chǎn)廠家綁定到生產(chǎn)廠家下拉框。填寫有關(guān)信息后,入庫總額由系統(tǒng)自動計算。保存時運用事務(wù)解決把有關(guān)信息保存到入庫信息表以及庫存表中,保存后如果發(fā)現(xiàn)信息有誤,在已入庫藥物尚未發(fā)生業(yè)務(wù)前可以刪除相應(yīng)記錄并重新錄入。入庫登記模塊流程圖如圖21所示。圖21入庫登記模塊流程圖入庫登記界面如圖22所示。圖22入庫登記界面自動編號存儲過程proc_AutoID如下:USE[DrugStore]GOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOALTERproc[dbo].[proc_AutoID](@newIDvarchar(20)output)asdeclare@idvarchar(20)set@id=(selectMAX(ID)fromRuku)if(@idisnullORsubstring(@id,5,8)!=substring(convert(varchar,getdate(),112),1,8))set@id=(select'RKBH'+(substring(convert(varchar,getdate(),112),1,8)+'0000'))set@newID=(select'RKBH'+(substring(convert(varchar,getdate(),112),1,8)+(selectSTUFF(CONVERT(int,10000+(substring(@id,13,4)+1)),1,1,''))))調(diào)用存儲過程proc_AutoID代碼如下:privatevoidAutoID(){SqlConnectionconn=GetConnection();//實例化數(shù)據(jù)庫連接類對象conn.Open();//打開數(shù)據(jù)庫連接Binddgv();SqlCommandsqlcmd=newSqlCommand("proc_AutoID",conn);//實例化SqlCommand對象sqlcmd.CommandType=CommandType.StoredProcedure;//指定執(zhí)行存儲過程//為存儲過程添加參數(shù)SqlParameteroutValue=sqlcmd.Parameters.Add("@newID",SqlDbType.VarChar,20);outValue.Direction=ParameterDirection.Output;//定義存儲過程輸出參數(shù)sqlcmd.ExecuteNonQuery();//執(zhí)行存儲過程conn.Close();//關(guān)閉數(shù)據(jù)庫連接txtInid.Text=outValue.Value.ToString();}點擊保存按鈕代碼如下:stringstrSql=null;List<string>strSqls=newList<string>();//插入到入庫表strSql="……";//省略某些代碼strSqls.Add(strSql);//將執(zhí)行SQL語句添加到List泛型集合中//插入到庫存表strSql="……";//省略某些代碼strSqls.Add(strSql);//將執(zhí)行SQL語句添加到List泛型集合中//如何輸入拼音碼在藥物信息表找不到記錄,則插入到藥物信息表stringsqlstring1=@"selectcount(*)fromDrugwherepinyinma='"+txtPYM.Text+"'";SqlCommandcomn=newSqlCommand(sqlstring1,conn);if(Convert.ToInt32(comn.ExecuteScalar())==0)//所輸入拼音碼在藥物信息表找不到記錄{strSql="insertintoDrug(pinyinma,drugname,spec,unit,lowwarning)values('"+txtPYM.Text+"','"+txtDName.Text+"','"+txtSpec.Text+"','"+txtUnit.Text+"',"+Convert.ToInt32(txtLowwaning.Text)+")";strSqls.Add(strSql);}try{if(Tran.ExecDataBySqls(strSqls))//調(diào)用事務(wù){(diào)MessageBox.Show("添加成功!","軟件提示");}else{MessageBox.Show("添加失敗!","軟件提示");}}catch(Exceptionex){MessageBox.Show(ex.Message,"軟件提示");}4.1.7銷售登記模塊銷售登記是系統(tǒng)重要構(gòu)成某些??紤]到銷售藥物應(yīng)簡樸快捷,在藥物銷售登記窗體,只需填寫藥物拼音碼、銷售數(shù)量以及實收金額,其他信息則只需從輔助錄入?yún)^(qū)選取或由系統(tǒng)自動生成。同步設(shè)立各種提示,如:銷售數(shù)量不不大于庫存數(shù)時提示。同一筆銷售銷售單號相似,在結(jié)算前都可以選中相應(yīng)藥物點擊鼠標(biāo)右鍵菜單移除,結(jié)算時運用事務(wù)解決把有關(guān)信息保存到銷售信息表以及更新庫存信息,并運用報表打印小票。銷售登記模塊流程圖如圖23所示。圖23藥物銷售登記模塊流程圖銷售登記界面如圖24所示,打印小票設(shè)計如圖25所示。圖24銷售登記界面圖25小票設(shè)計點擊結(jié)算按鈕后打印小票代碼如下://傳值到報表打印小票stringsqlstr1=@"selectdrugnameas藥物名稱,sellamountas數(shù)量,sellpriceas單價,allpriceas金額fromSellwheres_id='"+txtSellid.Text.ToString()+"'";SqlDataAdaptersda1=newSqlDataAdapter(sqlstr1,conn);DataTabledt1=newDataTable();sda1.Fill(dt1);table=dt1;//獲得單筆銷售藥物信息sellid=txtSellid.Text.ToString();printdate=DateTime.Now.ToString("yyyy-MM-dd");//獲得當(dāng)前日期格式:-09-04printtime=DateTime.Now.ToShortTimeString().ToString();//獲得當(dāng)前時間格式:20:16sellby=txtSellby.Text.ToString();moneyYF=txtYF.Text.ToString();//獲得應(yīng)付金額moneySS=txtSS.Text.ToString();//獲得實收金額moneyZL=txtZL.Text.ToString();//獲得找零金額frm_Printf=newfrm_Print();//小票打印窗體f.Owner=this;f.ShowDialog();f.Dispose();conn.Close();dt.Clear();//清空datatableds.Clear();//清空datasetthis.dgvDetail.DataSource=ds.Tables[0];//清空銷售明細(xì)datagridviewtxtYF.Text="";txtSS.Text="";txtZL.Text="";AutoID();//自動生成下一筆銷售單號4.1.8藥物退貨模塊進(jìn)入藥物退貨窗口后,退貨時間、編號和操作員自動生成,填寫藥物拼音碼后,則把庫存表里相應(yīng)藥物信息顯示出來,選取需要退貨藥物并填寫退貨數(shù)量以及退貨因素后點擊確認(rèn)退貨即可成功錄入到退貨信息表,同步更新藥物庫存數(shù)量。藥物退貨模塊流程圖如圖26所示。圖26藥物退貨模塊流程圖藥物退貨界面如圖27所示。圖27藥物退貨界面4.1.9藥物報損模塊藥物報損流程和藥物退貨流程相似,進(jìn)入藥物報損窗口后,報損時間、編號和操作員自動生成,填寫藥物拼音碼后,則把庫存表里相應(yīng)藥物信息顯示出來,選取需要報損藥物并填寫報損數(shù)量以及報損因素后點擊確認(rèn)報損即可成功錄入到報損信息表,同步更新藥物庫存數(shù)量。藥物報損模塊流程圖如圖28所示。圖28藥物報損模塊流程圖藥物報損界面如圖29所示圖29藥物報損界面4.1.10藥物調(diào)價模塊藥物調(diào)價在藥物管理系統(tǒng)里是很有必要。進(jìn)入藥物調(diào)價窗口后,調(diào)價時間、編號和操作員自動生成,填寫藥物拼音碼后,則把庫存表里相應(yīng)藥物信息顯示出來,選取需要調(diào)價藥物并填寫新價格后點擊更新價格即可即調(diào)價成功并把調(diào)價記錄保存到調(diào)價信息表,同步更新藥物庫存中銷售單價。藥物調(diào)價模塊流程圖如圖30所示。圖30藥物調(diào)價模塊流程圖藥物調(diào)價界面如圖31所示。圖31藥物調(diào)價界面4.1.11報表中心界面報表中心界面可以顯示入庫明細(xì)、調(diào)價記錄、銷售明細(xì)、藥物庫存以及利潤記錄等12個表,在顯示入庫明細(xì)表時可以選定相應(yīng)記錄點擊鼠標(biāo)右鍵菜單進(jìn)行刪除(如果該藥物已經(jīng)發(fā)生其他業(yè)務(wù)則提示不能刪除)。界面上方按鈕相應(yīng)主界面各個按鈕,每個按鈕實現(xiàn)功能都分為管理員和收銀員兩種權(quán)限。同步提供各種查詢方式,例如按拼音碼、按藥物名稱、按編號、準(zhǔn)時間查詢。更多入口更以便更安全。點擊生成報表按鈕會獲得當(dāng)前顯示表信息傳到報表預(yù)覽窗口,只有管理員才干預(yù)覽報表,在報表預(yù)覽窗口可以實現(xiàn)數(shù)據(jù)導(dǎo)出到Word、Excel、PDF,也可以連接打印機(jī)直接打印。報表中心界面如圖32所示,.RDLC報表設(shè)計有關(guān)DataTable如圖33所示。圖32報表中心界面圖33.RDLC報表設(shè)計有關(guān)DataTable實現(xiàn)多條件查詢核心代碼如下:privatevoidSearch(stringstrSQL,stringstrIdColumn,stringstrPYMColumn,stringstrNameColumn,stringstrTimeColumn,stringstrOther){stringstr1=txtKeywords.Text;stringstr2=dateBegin.Value.ToString("yyyy-MM-dd");stringstr3=dateEnd.Value.ToString("yyyy-MM-dd");if(checkBoxKey.Checked==true&&checkBoxTime.Checked==true){if(cboKeywords.Text=="編號"){stringsqlstr=@""+strSQL+"where"+strIdColumn+"='"+str1+"'and"+strTimeColumn+"between'"+str2+"'and'"+str3+"'"+strOther+"";Binddgv(sqlstr);}if(cboKeywords.Text=="拼音碼"){stringsqlstr=@""+strSQL+"where"+strPYMColumn+"='"+str1+"'and"+strTimeColumn+"between'"+str2+"'and'"+str3+"'"+strOther+"";Binddgv(sqlstr);}if(cboKeywords.Text=="藥物名稱"){stringsqlstr=@""+strSQL+"where"+strNameColumn+"='"+str1+"'and"+strTimeColumn+"between'"+str2+"'and'"+str3+"'"+strOther+"";Binddgv(sqlstr);}}elseif(checkBoxKey.Checked==true&&checkBoxTime.Checked==false){if(cboKeywords.Text=="編號"){stringsqlstr=@""+strSQL+"where"+strIdColumn+"='"+str1+"'"+strOther+"";Binddgv(sqlstr);}if(cboKeywords.Text=="拼音碼"){stringsqlstr=@""+strSQL+"where"+strPYMColumn+"='"+str1+"'"+strOther+"";Binddgv(sqlstr);}if(cboKeywords.Text=="藥物名稱"){stringsqlstr=@""+strSQL+"where"+strNameColumn+"='"+str1+"'"+strOther+"";Binddgv(sqlstr);}}elseif(checkBoxKey.Checked==false&&checkBoxTime.Checked==true){stringsqlstr=@""+strSQL+"where"+strTimeColumn+"between'"+str2+"'and'"+str3+"'"+strOther+"";Binddgv(sqlstr);}}實現(xiàn)報表預(yù)覽核心代碼如下:privatevoidbtnCreate_Click(objectsender,EventArgse){if(frm_Login.flagAdmin=="管理員"){table=dgvShow.DataSourceasDataTable;frm_Reportsrf=newfrm_Reports();rf.Owner=this;rf.ShowDialog();rf.Dispose();}else{MessageBox.Show("沒有這個權(quán)限!");}}//strPath為相應(yīng)報表privatevoidBindReportViewer(stringstrPath,stringstrDataSet){frm_AllReportfm=(frm_AllReport)this.Owner;//this.reportViewer1.LocalReport.ReportPath=@"H:\DrugStore\DrugStore\DrugStore\"+strPath+"";//用絕對途徑//取相對途徑stringpath=System.Windows.Forms.Application.StartupPath+@"../../../";System.IO.Directory.SetCurrentDirectory(path);stringstrFilePath=System.IO.Directory.GetCurrentDirectory()+@"\"+strPath+"";//用相對途徑this.reportViewer1.LocalReport.ReportPath=strFilePath;this.reportViewer1.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout);this.reportViewer1.LocalReport.DataSources.Clear();this.reportViewer1.LocalReport.DataSources.Add(newReportDataSource(""+strDataSet+"",fm.table));this.reportViewer1.RefreshReport();}privatevoidfrm_Reports_Load(objectsender,EventArgse){switch(frm_AllReport.tag1){case1:{BindReportViewer("ReportIn.rdlc","DataSet1");break;}case2:{BindReportViewer("ReportAdjust.rdlc","DataSet2");break;}case3:{BindReportViewer("ReportSell.rdlc","DataSet3");break;}case4:{BindReportViewer("ReportReturnG.rdlc","DataSet4");break;}case5:{BindReportViewer("ReportKucun.rdlc","DataSet5");break;}case6:{BindReportViewer("ReportKcDetail.rdlc","DataSet6");break;}case7:{BindReportViewer("ReportBreakage.rdlc","DataSet7");break;}case8:{BindReportViewer("ReportXiaoqi.rdlc","DataSet8");break;}case9:{BindReportViewer("ReportWarning.rdlc","DataSet9");break;}case10:{BindReportViewer("ReportEarn.rdlc","DataSet10");break;}case11:{BindReportViewer("ReportExpense.rdlc","DataSet11");break;}case12:{BindReportViewer("ReportProfit.rdlc","DataSet12");break;}}}4.1.12系統(tǒng)某些公有類或辦法設(shè)計與實現(xiàn)連接數(shù)據(jù)庫publicSqlConnectionGetConnection(){returnnewSqlConnection(@"server=.\SQLEXPRESS;database=DrugStore;Trusted_Connection=true");}事務(wù)解決publicboolExecDataBySqls(List<string>strSqls)//事務(wù)解決{SqlConnectionconn=GetConnection();SqlCommandcomn=newSqlCommand();boolbooIsSucceed;if(conn.State==ConnectionState.Closed){conn.Open();}SqlTransactionsqlTran=conn.BeginTransaction();try{comn.Connection=conn;comn.Transaction=sqlTran;foreach(stringiteminstrSqls){comn.CommandType=CommandType.Text;comn.CommandText=item;comn.ExecuteNonQuery();}sqlTran.Commit();booIsSucceed=true;}catch{sqlTran.Rollback();booIsSucceed=false;}finally{conn.Close();strSqls.Clear();}returnbooIsSucceed;}//事務(wù)解決5系統(tǒng)測試5.1測試目的登錄功能:當(dāng)顧客輸入顧客名和密碼為空或不相符時與否有有關(guān)提示,輸入對的時能成功登錄系統(tǒng),且登錄成功后能對的判斷其顧客權(quán)限。添加藥物記錄功能:對的輸入藥物各項信息后能成功向數(shù)據(jù)庫添加新記錄,輸入信息為空時有出錯提示。修改藥物信息功能:修改藥物信息時能對的判斷該記錄業(yè)務(wù)狀況并成功修改相應(yīng)內(nèi)容。刪除藥物記錄功能:刪除藥物記錄時能對的判斷該記錄業(yè)務(wù)狀況來判斷該記錄能否被修改,對于不能被刪除記錄有相應(yīng)提示,對于能刪除記錄能成功刪除。藥物入庫登記功能:對的填寫藥物入庫登記所需各項信息后,能成功地向數(shù)據(jù)庫寫入相應(yīng)入庫記錄。藥物調(diào)價功能:選取藥物并對的填寫藥物新價格后,能成功地修改藥物售價。藥物退貨功能:選取藥物并對的填寫藥物退貨各項信息后,能成功地退貨并更新該藥物庫存數(shù)量。藥物報損功能:選取藥物并對的填寫藥物報損各項信息后,能成功地報損該藥物并更新該藥物庫存數(shù)量。藥物銷售功能:選取藥物并對的填寫藥物銷售各項信息后,能成功地售出藥物并更新該藥物庫存數(shù)量。生成銷售小票功能:售出藥物結(jié)算時能對的地生成銷售小票。查詢銷售明細(xì)記錄功能:查詢銷售明細(xì)記錄時能否進(jìn)行單條件查詢和多條件查詢并查詢出對的記錄生成利潤記錄報表功能:能對的計算收入和支出并得出利潤,生成報表5.2測試大綱登錄功能Case1:輸入對的顧客名和密碼Case2:輸入錯誤顧客名或密碼Case3:不輸入顧客名或密碼添加藥物記錄功能Case1:所有信息填寫對的Case2:信息填寫不完整修改藥物信息功能Case1:修改已發(fā)生業(yè)務(wù)藥物信息Case2:修改未發(fā)生業(yè)務(wù)記錄刪除藥物記錄功能Case1:刪除已發(fā)生業(yè)務(wù)記錄Case2:刪除未發(fā)生業(yè)務(wù)記錄藥物入庫登記功能藥物調(diào)價功能藥物退貨功能藥物報損功能藥物銷售功能生成銷售小票功能查詢銷售明細(xì)記錄功能Case1:只按編號或拼音碼或藥物名稱查詢Case2:只準(zhǔn)時間查詢Case3:多條件查詢生成利潤記錄報表功能5.3測試成果及截圖登錄功能Case1:輸入對的顧客名和密碼成果:成功登錄,進(jìn)入系統(tǒng)主界面,與預(yù)期效果相符。Case2:輸入錯誤顧客名或密碼成果:提示顧客名不存在或提示密碼錯誤,與預(yù)期效果相符。圖34顧客名或密碼輸入錯誤時系統(tǒng)提示截圖Case3:不輸入顧客名或密碼成果:提示請輸入顧客名或提示密碼錯誤

溫馨提示

  • 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

提交評論