醫(yī)藥GSP管理系統(tǒng)畢業(yè)設(shè)計(jì)范例_第1頁
醫(yī)藥GSP管理系統(tǒng)畢業(yè)設(shè)計(jì)范例_第2頁
醫(yī)藥GSP管理系統(tǒng)畢業(yè)設(shè)計(jì)范例_第3頁
醫(yī)藥GSP管理系統(tǒng)畢業(yè)設(shè)計(jì)范例_第4頁
醫(yī)藥GSP管理系統(tǒng)畢業(yè)設(shè)計(jì)范例_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

藥品管理系統(tǒng)學(xué)院專業(yè)班級學(xué)號姓名指導(dǎo)教師教師職稱年月日

摘要【摘要】中國加入WTO后,藥品經(jīng)營企業(yè)要與國際接軌,靠的就是GSP認(rèn)證。藥品經(jīng)營企業(yè)通過GSP認(rèn)證,這是藥品管理法制化、科學(xué)化和規(guī)范化的要求,是國家加大對藥品經(jīng)營結(jié)構(gòu)調(diào)整力度的要求,是藥品經(jīng)營企業(yè)進(jìn)入國際市場、參與市場競爭的先決條件。本章將通過醫(yī)藥GSP管理系統(tǒng)的實(shí)例,分別從醫(yī)藥管理系統(tǒng)和GSP管理系統(tǒng)兩個方面介紹如何實(shí)現(xiàn)醫(yī)藥GSP管理系統(tǒng)?!娟P(guān)鍵詞】醫(yī)藥GSP管理系統(tǒng)

目錄TOC\o"2-3"\h\z\t"樣式標(biāo)題1章名+首行縮進(jìn):2字符,1"摘要 2目錄 30引言 11可行性分析 12總體設(shè)計(jì) 12.1項(xiàng)目規(guī)劃 12.2系統(tǒng)功能結(jié)構(gòu) 12.3設(shè)計(jì)目標(biāo) 23系統(tǒng)設(shè)計(jì) 23.1開發(fā)及運(yùn)行環(huán)境 23.2數(shù)據(jù)庫設(shè)計(jì) 24 主要功能模塊設(shè)計(jì) 24.1程序主界面的設(shè)計(jì) 24.2藥品信息管理 814.3入庫登記 1984.4銷售開單 3394.5操作員權(quán)限的設(shè)置 424附錄A參考文獻(xiàn) 539附錄B數(shù)據(jù)表 607附錄C文件架構(gòu) 6930引言藥品在其生產(chǎn)、經(jīng)營和使用的全過程中,由于內(nèi)外因素的影響,隨時都有可能發(fā)生質(zhì)量事故,必須在所有這些環(huán)節(jié)上采取嚴(yán)格的措施,才能從根本上保證藥品質(zhì)量。因此,國內(nèi)外為保證藥品質(zhì)量,確保用藥安全有效,均制定了一系列質(zhì)量法規(guī)。其中GSP是一系列質(zhì)量控制中不可缺少的重要一環(huán)。1可行性分析面對醫(yī)藥經(jīng)營企業(yè)在日常管理過程中出現(xiàn)的各種情況,醫(yī)藥GSP管理系統(tǒng)在開發(fā)時,應(yīng)能夠達(dá)到以下目標(biāo):全面、規(guī)范、完善的基礎(chǔ)信息設(shè)置。合理的權(quán)限分配。全方位的快速查詢,提高工作效率。具有強(qiáng)大的報(bào)表打印功能。系統(tǒng)具有數(shù)據(jù)備份及數(shù)據(jù)恢復(fù)功能,能夠保證系統(tǒng)數(shù)據(jù)的安全性。對藥品的質(zhì)量、檔案、養(yǎng)護(hù)以及藥品的停售和庫房的溫濕度進(jìn)行系統(tǒng)管理。從藥品的采購、入庫、銷售、到庫存形成一套嚴(yán)密、科學(xué)、完善的管理體系。2總體設(shè)計(jì)2.1項(xiàng)目規(guī)劃本系統(tǒng)屬于小型的數(shù)據(jù)庫系統(tǒng),可以對中小型企業(yè)進(jìn)銷存進(jìn)行有效管理。通過本系統(tǒng)可以達(dá)到以下目標(biāo):靈活的運(yùn)用表格批量錄入數(shù)據(jù),使信息傳遞更快捷。系統(tǒng)采用人機(jī)對話方式,界面美觀友好,信息查詢靈活、方便,數(shù)據(jù)存儲安全可靠。與供應(yīng)商和代理商賬目清晰。實(shí)施強(qiáng)大的后臺監(jiān)控功能。功能強(qiáng)大的月營業(yè)分析。實(shí)現(xiàn)各種查詢,如定位查詢、模糊查詢等。實(shí)現(xiàn)商品進(jìn)貨分析與統(tǒng)計(jì)、銷售分析與統(tǒng)計(jì)、商品銷售成本明細(xì)等功能。強(qiáng)大的庫存預(yù)警功能,盡可量地減少商家不必要的損失。實(shí)現(xiàn)靈活的打印功能。對用戶輸入的數(shù)據(jù),系統(tǒng)進(jìn)行嚴(yán)格的數(shù)據(jù)檢驗(yàn),盡可能排除人為的錯誤。系統(tǒng)最大限度地實(shí)現(xiàn)了易安裝性、易維護(hù)性和易操作性。2.2系統(tǒng)功能結(jié)構(gòu)本系統(tǒng)共分9大部分、41個完整的功能模塊。系統(tǒng)結(jié)構(gòu)圖如圖1所示。圖1醫(yī)藥GSP管理系統(tǒng)2.3設(shè)計(jì)目標(biāo)本系統(tǒng)是根據(jù)中小企業(yè)的實(shí)際需求而開發(fā)的,完全能夠?qū)崿F(xiàn)企業(yè)的會議視頻管理,通過本系統(tǒng)可以達(dá)到以下目標(biāo):系統(tǒng)運(yùn)行穩(wěn)定,安全可靠。界面設(shè)計(jì)美觀,人機(jī)交互界面友好。信息查詢靈活、方便、快捷、準(zhǔn)確,數(shù)據(jù)存儲安全可靠。滿足鍵盤和鼠標(biāo)的雙重操作,完全支持回車鍵。信息安全保密。3系統(tǒng)設(shè)計(jì)3.1開發(fā)及運(yùn)行環(huán)境系統(tǒng)開發(fā)平臺:MicrosoftVisualFoxPro6.0。運(yùn)行平臺:WindowsXP/Windows2000/Windows2003分辨率:最佳效果1024×768像素3.2數(shù)據(jù)庫設(shè)計(jì)1.?dāng)?shù)據(jù)庫概要說明接下來的任務(wù)就是設(shè)計(jì)數(shù)據(jù)庫。數(shù)據(jù)庫在一個管理系統(tǒng)中占居非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)的好壞將直接影響系統(tǒng)的效率和實(shí)現(xiàn)的效果。本系統(tǒng)采用的是VisualFoxPro自帶的數(shù)據(jù)庫,數(shù)據(jù)庫文件名為yygsy。2.主要數(shù)據(jù)表的結(jié)構(gòu)數(shù)據(jù)庫中的數(shù)據(jù)表請參見附錄B。4 主要功能模塊設(shè)計(jì)4.1程序主界面的設(shè)計(jì)軟件界面是人與計(jì)算機(jī)之間的媒介。用戶通過軟件界面來與計(jì)算機(jī)進(jìn)行信息交換。因此,軟件界面的質(zhì)量,直接關(guān)系到應(yīng)用系統(tǒng)的性能能否充分發(fā)揮,尤其是主界面。例如本系統(tǒng)的主界面就改變了用戶比較熟知的Windows傳統(tǒng)風(fēng)格,取而代之的是圖形化的界面風(fēng)格。程序啟動后,通過系統(tǒng)登錄界面的用戶身份驗(yàn)證后,即可進(jìn)入到程序主界面,醫(yī)藥GSP管理系統(tǒng)的主界面如圖2所示。單擊該按鈕,可以顯示/隱藏功能子菜單導(dǎo)航功能按鈕。單擊導(dǎo)航功能按鈕,在左側(cè)的功能子菜單中顯示相應(yīng)的功能單擊該按鈕,可以顯示/隱藏功能子菜單導(dǎo)航功能按鈕。單擊導(dǎo)航功能按鈕,在左側(cè)的功能子菜單中顯示相應(yīng)的功能功能子菜單,單擊其菜單項(xiàng)將調(diào)用相應(yīng)的表單圖2程序主界面運(yùn)行結(jié)果主界面擔(dān)負(fù)著根據(jù)用戶的權(quán)限執(zhí)行系統(tǒng)所允許的用戶操作的任務(wù)。其中系統(tǒng)的主導(dǎo)航菜單是通過一系列的筆者自定義的按鈕實(shí)現(xiàn)的,功能子菜單是由ListView和ImageList控件實(shí)現(xiàn)的。為了使用戶可以自行控制功能子菜單的顯示或隱藏狀態(tài),程序中還加入了控制功能子菜單顯示狀態(tài)的按鈕。系統(tǒng)主界面的具體講解如下:1.表單設(shè)計(jì)(1)創(chuàng)建一個標(biāo)準(zhǔn)項(xiàng)目,名稱為“醫(yī)藥GSP管理系統(tǒng)”,在該項(xiàng)目中利用Class_Frm類創(chuàng)建程序主界面表單,名稱為DeskTop。(2)在該表單中添加Button_Y控件、Label控件、Image控件、ImageList控件和ListView控件。(3)設(shè)置表單、控件的屬性,其重要屬性如表1所示。表1重要屬性及值對象屬性值Class_Frm12BorderStyle0–無邊框Class_Frm12ShowWindow2–作為頂層表單Class_Frm12TitleBar0–關(guān)閉Class_Frm12WindowState2–最大化ListView1Appearance0–FlatListView1BackColor16777215ListView1BorderStyle0–NoneListView1HideSelection.F.–假2.代碼設(shè)計(jì)當(dāng)創(chuàng)建一個子類時,子類中的方法自動從父類中繼承,但是子類的方法會重載父類中的同名方法。當(dāng)需要調(diào)用父類中的方法時,可以在子類中使用::范圍操作符調(diào)用父類中的方法。Class_frm::load&&在子類中引用父類的方法程序中應(yīng)用了API函數(shù)時,應(yīng)在表單的Load事件中進(jìn)行函數(shù)聲明,代碼如下:DeclareintegerGetSystemMetricsinuser32integernIndex&&API函數(shù)聲明在表單的Init事件中設(shè)置收縮后的功能子菜單的代碼如下:*設(shè)置收縮后的側(cè)菜單在表單Init事件中利用ListView控件顯示操作員的可用功能子菜單的代碼如下:*初始化ListView控件&&添加列表項(xiàng)--根據(jù)操作員權(quán)限設(shè)置可用的功能項(xiàng)SelectTab_UserLocateFor操作員=UserNameSelect*FromTab_PurviewWhere操作員編號=Tab_User.操作員編號;IntoCursorTemp_PurviewSelect0Select*FromTab_FunctionWhere上級編號=1IntoCursorTemp_FunctionDoWhile!EOF() SelectTemp_Function key=Alltrim(Temp_Function.名稱) SelectTemp_Purview IfTemp_Purview.&key.=.T. Endif SelectTemp_Function SKIPEndDo在表單Activate事件中添加如下代碼設(shè)置程序主界面根據(jù)屏幕分辨率自動設(shè)置大小。thisform.width=GetSystemMetrics(0)&&獲取屏幕的寬度thisform.height=GetSystemMetrics(1)-24&&獲取屏幕的高度Class_frm::Init&&在子類中引用父類的方法通過ListView控件調(diào)用相應(yīng)的表單的程序代碼如下:doformform\&fname&&通過變量調(diào)入表單在“銷售管理”按鈕的Button_Click事件中加入如下代碼顯示銷售管理功能子菜單。&&添加列表項(xiàng)SelectTab_UserLocatFor操作員=UserNameSelect*FromTab_PurviewWhere操作員編號=Tab_User.操作員編號IntoCursorTemp_PurviewSelect0Select*FromTab_FunctionWhere上級編號=3IntoCursorTemp_FunctionDoWhile!EOF() SelectTemp_Function key=Alltrim(Temp_Function.名稱) SelectTemp_Purview IfTemp_Purview.&key.=.T. Endif SelectTemp_Function SKIPEndDo4.2藥品信息管理用戶單擊導(dǎo)航功能按鈕中的“基礎(chǔ)信息管理”按鈕,在功能子菜單中選擇“藥品信息管理”菜單項(xiàng),進(jìn)入“藥品信息管理”界面,該界面運(yùn)行結(jié)果如圖3所示。圖3藥品信息管理運(yùn)行結(jié)果“藥品信息管理”界面主要用于查詢、添加、修改和刪除藥品信息;根據(jù)藥品劑型自動生成藥品編號;根據(jù)藥品的通用名自動生成藥品簡稱;可以利用記錄定位按鈕實(shí)現(xiàn)精確記錄定位;支持快速瀏覽藥品信息等功能。1.表單設(shè)計(jì)(1)在“醫(yī)藥GSP管理系統(tǒng)”項(xiàng)目中,利用Class_Frm類創(chuàng)建新表單,名稱為“藥品信息管理”。(2)在表單中添加Text控件、Label控件、Pageframe控件、Edit控件、Combo控件、Grid控件和Shape控件(用于修飾界面)和Button_Y控件、Button_F控件。(3)重要控件的重要屬性如表2所示。表2重要屬性及值對象屬性值Class_Frm12BorderStyle0–無邊框Class_Frm12TitleBar0–關(guān)閉Combo1RowSourceTab_DoseType.劑型Combo1、Combo2、Combo4RowSourceType6–字段Combo1、Combo2、Combo3、Combo5、Combo6Style2-下拉列表框Combo2RowSourceTab_Unit.單位名稱Combo3、Combo6RowSource有,無Combo5RowSource年,月,天Combo5RowSourceType1–值Text11InputMask9999PFPageCount2PFTabStyle1–非兩端(4)為表單創(chuàng)建方法程序List_Sele。2.代碼設(shè)計(jì)由于在設(shè)計(jì)數(shù)據(jù)庫時,遵循數(shù)據(jù)規(guī)范化原則,在藥品信息表中生產(chǎn)廠家是以廠家編號字段存儲,藥品的庫存上/下限信息保存在庫存上下限表中,所以在顯示藥品信息時,需要應(yīng)用SQL語句的內(nèi)聯(lián)接查詢出藥品的完整信息并顯示在表格中,程序代碼如下:SELECTTab_drug.藥品編號,Tab_drug.通用名,Tab_drug.曾用名,Tab_drug.英文名,;Tab_drug.簡稱,Tab_drug.劑型,Tab_drug.規(guī)格,Tab_drug.包裝,Tab_drug.單位,;Tab_drug.成份,Tab_drug.性狀,Tab_drug.藥理毒理,Tab_drug.適應(yīng)癥,Tab_drug.用法用量,;Tab_drug.不良反應(yīng),Tab_drug.禁忌,Tab_drug.注意事項(xiàng),Tab_drug.藥物過量,Tab_drug.貯藏,;Tab_drug.有效期,Tab_drug.有效期單位,Tab_drug.注冊商標(biāo),Tab_drug.批準(zhǔn)文號,;Tab_wlunit.全稱AS生產(chǎn)廠家,Tab_Wlunit.編號AS廠家編號,Tab_drug.產(chǎn)地,Tab_drug.備注,;Tab_kc_confine.庫存上限AS上限,Tab_kc_confine.庫存下限AS下限;FROMyygsp!tab_drugINNERJOINyygsp!tab_wlunit; ONTab_drug.生產(chǎn)廠家=Tab_wlunit.編號; INNERJOINyygsp!tab_kc_confine;ONTab_drug.藥品編號=Tab_kc_confine.藥品編號IntoCursorTemp_Drug在“添加”按鈕的Button_Click事件中添加如下代碼實(shí)現(xiàn)自動生成以“PJ”為標(biāo)識的藥品編號。SetProcedureToProcedure\UsedPrg&&打開過程文件SelectTab_Drug*調(diào)用自定義函數(shù)生成藥品編號在Combo1的InteractiveChange事件中添加如下代碼實(shí)現(xiàn)根據(jù)用戶選擇的劑型自動生成七位的藥品編號。SetProcedureToProcedure\UsedPrg&&打開過程文件Select劑型標(biāo)識FromTab_DoseTypeWhere劑型=This.ValueIntoCursorTemp_D"Left(藥品編號,2)=Alltrim(Temp_D.劑型標(biāo)識)")&&調(diào)用自定義函數(shù)生成藥品編號在“廠家編號”文本框的LostFocus事件中實(shí)現(xiàn)用戶輸入廠家編號后,自動填入廠家名稱,如果不存在則給予提示。Select全稱FromTab_WLUnitWhereAlltrim(Tab_WLUnit.編號)=Alltrim(This.Value);IntoCursorTemp_WLUnitGoTopIfEof() Messagebox("無效的單位編號!",48,"系統(tǒng)提示:") This.Value=""ElseEndif在“廠家名稱”下拉列表框的InterActiveChange事件中添加如下代碼實(shí)現(xiàn)自動填入廠家編號的功能。SelectTab_WLUnitSelect編號,全稱FromTab_WLUnitWhere全稱=Alltrim(This.Value)IntoCursorTemp_WLUnitIf!Empty(Temp_WLUnit.編號)Endif在“保存”按鈕的Button_Click事件中的代碼主要實(shí)現(xiàn)保存用戶新添加的藥品信息或修改后的藥品信息,關(guān)鍵代碼如下:IfFlag=1&&單擊“添加”按鈕后單擊“保存”按鈕 IfFound() Messagebox("該藥品信息已經(jīng)添加!",48,"系統(tǒng)提示:") Else InsertintoTab_DrugValues(NO,TYName,CYName,YWName,JC,JX,GG,BZ,; DW,CF,XZ,YLDL,SYZ,YFYL,BLFY,JJ,ZYSX,YWGL,ZC,YXQ,YXQDW,ZCSB,; PZWH,cCD,SCCJ,Memo)&&保存藥品信息 InsertintoTab_KC_confineValues(NO,0,SX,XX)&&保存藥品庫存上下限信息 Messagebox("藥品信息添加成功!",48,"系統(tǒng)提示:") Flag=0 EndifEndifIfFlag=2&&單擊“修改”按鈕后單擊“保存”按鈕 UpdateTab_DrugSet藥品編號=NO,通用名=TYName,曾用名=CYName,英文名=YWName,; 簡稱=JC,規(guī)格=GG,包裝=BZ,單位=DW,成份=CF,性狀=XZ,藥理毒理=YLDL,適應(yīng)癥=SYZ,; 用法用量=YFYL,不良反應(yīng)=BLFY,禁忌=JJ,注意事項(xiàng)=ZYSX,藥物過量=YWGL,貯藏=ZC,; 有效期=YXQ,有效期單位=YXQDW,注冊商標(biāo)=ZCSB,批準(zhǔn)文號=PZWH,產(chǎn)地=cCD,; 生產(chǎn)廠家=SCCJ,備注=MemoWhere藥品編號=NO&&修改藥品信息 UpdateTab_KC_confineSet庫存上限=SX,庫存下限=XXWhere藥品編號=NO Messagebox("藥品信息修改成功!",48,"系統(tǒng)提示:") Flag=0Endif“刪除”按鈕主要實(shí)現(xiàn)判斷所要刪除的藥品在庫存中是否還有,如果沒有則刪除該藥品信息和該藥品的庫存上下限信息,否則提示該藥品信息不能刪除。在“查詢”按鈕的Button_Click事件中添加如下代碼實(shí)現(xiàn)根據(jù)用戶在控件中選擇的查詢條件進(jìn)行查詢,當(dāng)用戶選擇“Like”操作符時,執(zhí)行模糊查詢。SELECTTab_drug.藥品編號,Tab_drug.通用名,Tab_drug.曾用名,Tab_drug.英文名,;Tab_drug.簡稱,Tab_drug.劑型,Tab_drug.規(guī)格,Tab_drug.包裝,Tab_drug.單位,;Tab_drug.成份,Tab_drug.性狀,Tab_drug.藥理毒理,Tab_drug.適應(yīng)癥,;Tab_drug.用法用量,Tab_drug.不良反應(yīng),Tab_drug.禁忌,Tab_drug.注意事項(xiàng),;Tab_drug.藥物過量,Tab_drug.貯藏,Tab_drug.有效期,Tab_drug.有效期單位,;Tab_drug.注冊商標(biāo),Tab_drug.批準(zhǔn)文號,Tab_wlunit.全稱AS生產(chǎn)廠家,;Tab_Wlunit.編號AS廠家編號,Tab_drug.產(chǎn)地,Tab_drug.備注,;Tab_kc_confine.庫存上限AS上限,Tab_kc_confine.庫存下限AS下限;FROMyygsp!tab_drugINNERJOINyygsp!tab_wlunit; ONTab_drug.生產(chǎn)廠家=Tab_wlunit.編號; INNERJOINyygsp!tab_kc_confine;ONTab_drug.藥品編號=Tab_kc_confine.藥品編號;IntoCursorTemp_Drug1IfOperate="Like" *模糊查詢 SELECT*FROMTemp_Drug1Where&QFields.Like'%&QValue.%'IntoCursorTemp_DrugElse SELECT*FROMTemp_Drug1Where&QFields.='&QValue.'IntoCursorTemp_DrugEndif4.3入庫登記用戶單擊導(dǎo)航功能按鈕中的“采購/入庫管理”按鈕,在功能子菜單中選擇“入庫登記”菜單項(xiàng),進(jìn)入“入庫登記”界面,該界面運(yùn)行結(jié)果如圖4所示。在該控件上按回車鍵將提示用戶是否繼續(xù)錄入,如果是則在表格末尾追加一條空記錄。在該控件上按回車鍵將提示用戶是否繼續(xù)錄入,如果是則在表格末尾追加一條空記錄。圖4入庫登記運(yùn)行結(jié)果“入庫登記”界面采用智能化表格式數(shù)據(jù)錄入,實(shí)現(xiàn)一次錄入多種藥品的功能。同時加入了自動生成入庫票號、自動計(jì)算合計(jì)金額和根據(jù)藥品信息表中的有效期和生產(chǎn)日期自動計(jì)算有效期至等功能。1.表單設(shè)計(jì)(1)在“醫(yī)藥GSP管理系統(tǒng)”項(xiàng)目中,利用Class_Frm類創(chuàng)建新表單,名稱為“入庫登記”。(2)在表單中添加Text控件、Label控件、Combo控件、Grid控件(在該控件的第1列、第2列、第17列和第18列分別加入Combo控件并將該件設(shè)置為默認(rèn)控件)、Shape控件(用于修飾界面)和Button_Y控件、Button_F控件。(3)重要控件的重要屬性如表3所示。表3重要屬性及值對象屬性值Combo1RowSourcetab_jsfs.結(jié)算方式Combo1、Combo2RowSourceType6–字段Text2Value{}Grid1ColumnCount12Grid1DeleteMark.F.2.代碼設(shè)計(jì)“是”時繼續(xù)入庫,否則刪除該條記錄。Select*FromTab_KC_ConfineWhere藥品編號=YPNOIntoCursorTemp_SXXIfTemp_SXX.庫存數(shù)量+This.Value>Temp_SXX.庫存上限 IfMessagebox("庫存數(shù)量超出庫存上限,是否入庫?",4+32,"系統(tǒng)提示:")=7 SelectTemp_RK IfReccount("Temp_RK")!=1 SetDeletedOn&&忽略標(biāo)有刪除標(biāo)記的記錄 DeleteFor藥品編號=YPNO&&邏輯刪除 gobottom Thisform.Refresh Endif EndifEndIf“有效期至”列的值,并判斷該藥品是否過期,如果過期將禁止入庫。IntoCursorTemp_YXQDoCaseTemp_YXQ.有效期單位 CaseTemp_YXQ.有效期單位="年" YXQ=Temp_YXQ.有效期*12 CaseTemp_YXQ.有效期單位="月" YXQ=Temp_YXQ.有效期 CaseTemp_YXQ.有效期單位="天" EndCase Messagebox("該藥品已經(jīng)過期,不可以入庫!",48,"系統(tǒng)提示:") SelectTemp_RK SetDeletedOn&&忽略標(biāo)有刪除標(biāo)記的記錄 DeleteFor藥品編號=YPNO&&邏輯刪除 SetProcedureToProcedure\UsedPrg&&打開過程文件 RecSum=DelCount()&&調(diào)用自定義函數(shù)獲取已經(jīng)打上刪除標(biāo)記的記錄個數(shù) IfRecCount("Temp_RK")-RecSum=0 appendblank thisform.refresh Endif gobottom Thisform.RefreshEndif“倉庫”下拉列表框中顯示有貨位信息的倉庫名稱。*利用自連接實(shí)現(xiàn)只顯示有貨位信息的倉庫名稱SelectCK.名稱FromTab_PackHouseCKJoinTab_PackHouseHWONCK.編號=HW.上級編號And;CK.類型=0GroupByCK.編號INTOCursorTemp_CKThis.RowSourceType=6This.RowSource="Temp_CK.名稱"this.listindex=1*當(dāng)控件失去焦點(diǎn)時,根據(jù)用戶選擇的倉庫在下一個組合框中列出該倉庫的貨位信息Select編號FromTab_PackHouseWhere名稱=CKNameIntoCursorTemp_CKNOSelect名稱FromTab_PackHouseWhere類型=1And上級編號=Temp_CKNO.編號;INTOCursorTemp_HWIfnKeyCode=13 Nodefault&&屏蔽對回車響應(yīng)的缺省操作 Messagebox("請選擇入庫的藥品!",48,"系統(tǒng)提示:") else ……&&判斷入庫數(shù)量和單價是否零,如果為零,則給予提示并返回 selectTemp_RK Select藥品編號FromTemp_RKGroupBy藥品編號IntoCursorTemp_PZS&&統(tǒng)計(jì)品種數(shù) selectTemp_RK IfMessagebox("是否繼續(xù)入庫?",4+32,'系統(tǒng)提示:')=6 appendblank thisform.refresh RecSum=RecSum+1 gobottom Else Endif SelectSum(數(shù)量)AS貨品總數(shù),Sum(金額)AS合計(jì)金額FromTemp_RK;IntoCursorTemp_HJ selectTemp_RK endifEndif“保存”按鈕主要完成將入庫信息分別保存在入庫登記主表和入庫登記明細(xì)表中,并判斷庫存信息表中是否存在該藥品信息,如果存在則修改該藥品數(shù)量,否則在庫存信息表中添加該藥品信息,并將入庫事件插入庫存明細(xì)表中,最后設(shè)置相應(yīng)控件是否有效,其關(guān)鍵代碼如下:InsertintoTab_Inhouse_MainValues(NO,GYS,LXR,PZS,HPZS,HJJE,MDate,;MTime,JSFS,KPY,YSJL,CGY,YSY,BGY)&&保存入庫信息SelectTemp_RKGoTopDoWhile!Eof()AndTemp_RK.數(shù)量!=0AndTemp_RK.單價!=0 ……&&此處省略了從臨時表中分別取出入庫信息的代碼,如:YPNO=Temp_RK.藥品編號 InsertintoTab_Inhouse_DetailValues(NO,YPNO,HWBH,SCPH,SCDate,YXQZ,SL,; DW,DJ,JE,PFJ,LSJ,WGZL,BZZL)&&保存入庫明細(xì)信息 *保存庫存信息 DIMEAKCSL(1)&&定義一維數(shù)組 AKCSL=0 Select庫存數(shù)量FromTab_KCWhere藥品編號=YPNOAnd生產(chǎn)日期=SCDateIntoArrayAKCSL IfAKCSL=0 InsertintoTab_KC;Values(YPNO,HWBH,SCPH,SCDate,YXQZ,SL,DW,DJ,JE,PFJ,LSJ,WGZL,BZZL) Else UpdateTab_KCSet庫存數(shù)量=庫存數(shù)量+SL,單價=DJ,金額=庫存數(shù)量*單價; Where藥品編號=YPNOAnd生產(chǎn)日期=SCDate Endif UpdateTab_KC_ConfineSet庫存數(shù)量=庫存數(shù)量+SLWhere藥品編號=YPNO DimeY_SL(1) Y_SL(1)=0 SelectTop1庫存FromTab_KC_DetailWhere藥品編號=YPNOOrderBy時間DESC; IntoArrayY_SL InsertIntoTab_KC_DetailValues(YPNO,"入庫",SL,Y_SL+SL,DT,NO)&&插入庫存明細(xì)表 SkipEndDoMessagebox("藥品入庫完成!",48,"系統(tǒng)提示:")seleTemp_RKZap&&清空臨時入庫信息表4.4銷售開單用戶單擊導(dǎo)航功能按鈕中的“銷售管理”按鈕,在功能子菜單中選擇“銷售開單”菜單項(xiàng),進(jìn)入“銷售開單”界面,該界面運(yùn)行結(jié)果如圖5所示。在該控件中按下“PageDown”在該控件中按下“PageDown”鍵時,調(diào)用系統(tǒng)提示窗口選擇藥品信息。圖5銷售開單運(yùn)行結(jié)果“銷售開單”界面采用智能化表格式數(shù)據(jù)錄入,實(shí)現(xiàn)一次銷售多種藥品的功能。程序中還加入了自動生成銷售票號、自動計(jì)算合計(jì)金額等功能,為了方便用戶操作,程序還提供了如下功能:當(dāng)用戶在“藥品編號”列輸入藥品編號的前幾個字符或按“PageDown”鍵,系統(tǒng)將自動利用列表框顯示相關(guān)藥品信息。使用“↓”鍵或“↑”鍵選擇藥品,按回車鍵該藥品的基本信息自動添加到表格中。同時按照GSP認(rèn)證的有關(guān)規(guī)定,在藥品銷售時還遵循“先進(jìn)先出”原則。1.表單設(shè)計(jì)(1)在“醫(yī)藥GSP管理系統(tǒng)”項(xiàng)目中,利用Class_Frm類創(chuàng)建新表單,名稱為“銷售開單”。(2)在表單中添加Text控件、Label控件、Combo控件、List控件、Grid控件、Shape控件(用于修飾界面)和Button_F控件。(3)重要控件的重要屬性如表4所示。表4重要屬性及值對象屬性值Combo1RowSourcetab_jsfs.結(jié)算方式Combo1、Combo2RowSourceType6–字段List1ColumnCount6List1ColumnWidth50,85,60,95,95,90List1ItemTips.T.–真Grid1ColumnCount18Grid1DeleteMark.F.(4)為表單創(chuàng)建方法程序AddListValue。2.代碼設(shè)計(jì)IfnKeyCode=13 SelectTemp_YP IfTemp_YP.庫存數(shù)量<This.Value CZ=This.Value-Temp_YP.庫存數(shù)量 Messagebox("該批號藥品的庫存數(shù)量不足,需要從下一批號銷售["+; Alltrim(Str(CZ))+"]個。",48,"系統(tǒng)提示:") This.Value=Temp_YP.庫存數(shù)量 P_YPNO=Temp_YP.藥品編號 P_SCPH=Temp_YP.生產(chǎn)批號 DimeNext_PH(1) Next_PH="" SelectTop1生產(chǎn)批號FromTab_KCWhere藥品編號=P_YPNOAnd生產(chǎn)批號>P_SCPH; OrderBy生產(chǎn)批號IntoArrayNext_PH IfEmpty(Next_PH) Messagebox("該藥品無下一批號的產(chǎn)品,只能銷售["+; Alltrim(Str(Temp_YP.庫存數(shù)量))+"]。",48,"系統(tǒng)提示:") Else P_SCPH=Next_PH Endif EndIfEndif“保存”按鈕主要完成將銷售信息分別保存在銷售登記主表、銷售登記備份表(在實(shí)現(xiàn)按銷售票號進(jìn)行銷售退貨時應(yīng)用該表)和銷售登記明細(xì)表中,并修改庫存信息表和庫存上下限表中的庫存數(shù)量,并將銷售事件插入庫存明細(xì)表中,最后設(shè)置相應(yīng)控件是否有效,其關(guān)鍵代碼如下:SelectTemp_XS Messagebox("請輸入要銷售的藥品!",48,"系統(tǒng)提示:") ReturnEndifInsertintoTab_Sell_Mainalues(NO,KH,LXR,PZS,HPZS,HJJE,MDate,MTime,JSFS,KPY,SKY,BGY,FHY)SelectTemp_XSGoTopDoWhile!Eof()AndTemp_XS.數(shù)量!=0AndTemp_XS.單價!=0 YPNO=Temp_XS.藥品編號 Select編號AS貨位編號FromTab_PackHouseWhere名稱=Temp_XS.貨位IntoArrayHWBH SCPH=Temp_XS.產(chǎn)品批號 SCDate=Temp_XS.生產(chǎn)日期 YXQZ=Temp_XS.有效期至 SL=Temp_XS.數(shù)量 DW=Temp_XS.單位 DJ=Temp_XS.單價 JE=Temp_XS.金額 WGZL=Temp_XS.外觀質(zhì)量 BZZL=Temp_XS.包裝質(zhì)量 InsertintoTab_Sell_Detail;Values(NO,YPNO,HWBH,SCPH,SCDate,YXQZ,SL,DW,DJ,JE,WGZL,BZZL)&&保存銷售明細(xì)信息 InsertintoTab_Sell_Bakalues(NO,YPNO,HWBH,SCPH,SCDate,YXQZ,SL,DW,DJ,JE,WGZL,BZZL) *保存庫存信息 DIMEAKCSL(1)&&定義一維數(shù)組 AKCSL=0 Select庫存數(shù)量FromTab_KCWhere藥品編號=YPNOAnd生產(chǎn)批號=SCPHIntoArrayAKCSL UpdateTab_KCSet庫存數(shù)量=庫存數(shù)量-SL,單價=DJ,金額=庫存數(shù)量*單價;Where藥品編號=YPNOAnd生產(chǎn)批號=SCPH UpdateTab_KC_ConfineSetTab_KC_Confine.庫存數(shù)量=Tab_KC_Confine.庫存數(shù)量-SL;Where藥品編號=YPNO DimeY_SL(1) Y_SL(1)=0 SelectTop1庫存FromTab_KC_DetailWhere藥品編號=YPNOOrderBy時間DESC;IntoArrayY_SL InsertIntoTab_KC_DetailValues(YPNO,"銷售",SL,Y_SL-SL,DT,NO)&&插入庫存明細(xì)表 SkipEndDoMessagebox("藥品銷售完成!",48,"系統(tǒng)提示:")seleTemp_XSZap4.5操作員權(quán)限的設(shè)置用戶單擊導(dǎo)航功能按鈕中的“系統(tǒng)管理”按鈕,在功能子菜單中選擇“權(quán)限設(shè)置”菜單項(xiàng),進(jìn)入“權(quán)限設(shè)置”界面,該界面運(yùn)行結(jié)果如圖6所示。圖6權(quán)限設(shè)置運(yùn)行結(jié)果“權(quán)限設(shè)置”界面主要實(shí)現(xiàn)利用ListView控件顯示操作員及其頭像列表和采用樹狀視圖型式顯示和設(shè)置權(quán)限的功能。1.表單設(shè)計(jì)(1)在“醫(yī)藥GSP管理系統(tǒng)”項(xiàng)目中,利用Class_Frm類創(chuàng)建新表單,名稱為“權(quán)限設(shè)置”。(2)在表單中添加Shape控件(用于修飾界面)、Button_F控件(和ActiveX控件中的TreeView(MicrosoftTreeViewControl6.0(SP4))控件、ImageList(MicrosoftImageListControl6.0(SP4))控件、ListView(MicrosoftListViewControl6.0(SP4))控件。(3)重要控件的重要屬性如表5所示。表5重要屬性及值對象屬性值Class_Frm12BorderStyle0–無邊框Class_Frm12TitleBar0–關(guān)閉TreeView1Checkboxes.T.–假TreeView1LineStyle1-RootLines(4)為表單創(chuàng)建方法程序List_Sele。2.代碼設(shè)計(jì)在表單的新添加的方法List_Sele中添加如下代碼實(shí)現(xiàn)利用樹狀視圖顯示操作員權(quán)限。endforseleTab_Purview.*fromTab_PurviewInnerJoinTab_UserOnTab_Purview.;操作員編號=Tab_User.操作員編號;seleTemp_Usern=2 mycol=field(n,"Temp_User") n=n+1 endif endif endifendfor 在表單的Init事件中添加如下代碼實(shí)現(xiàn)在ListView控件中顯示操作員及其頭像列表。*初始化ListView控件selecttab_user&&選定Tab_User工作區(qū)為當(dāng)前工作區(qū)select*fromtab_user;orderbytab_user.操作員;intocursorTemp_CZYdowhile!EOF()&&測試當(dāng)前記錄指針是否在文件尾key=alltrim(Temp_CZY.操作員)skip&&相對移動記錄指針enddoThis.List_Value在TreeView1控件的Init事件中添加如下代碼,將系統(tǒng)主菜單和其子菜單項(xiàng)利用樹型視圖顯示。DimeA_Main(8)A_Main=""Select名稱FromTab_FunctionWhere上級編號=0OrderBy編號IntoArrayA_MainGoTopForI=1To8 Select*FromTab_FunctionWhere上級編號=IIntoCursorTemp_Child GoTop DoWhile!Eof() NodeName="NODE"+Padl(Alltrim(Str(編號)),2,"0") Skip EndDoEndFor在TreeView1控件的NodeCheck事件中添加如下代碼:OnErrorIfNode.Checked=.t.Then&&如果節(jié)點(diǎn)被選中IfNode.Children<>0Then&&判斷是否有子節(jié)點(diǎn)Node.Selected=.t.&&展開此節(jié)點(diǎn)ForI=myFirstTomyLastthis.Nodes(I).Checked=.t.&&使所有子節(jié)點(diǎn)都被選中endforElse&&如果沒有子節(jié)點(diǎn)Node.Checked=NotNode.CheckedEndIfEndIfElse&&如果此節(jié)點(diǎn)并沒有被選中IfNode.Children<>0&&判斷是否有子節(jié)點(diǎn)Node.Selected=.t.&&展開此節(jié)點(diǎn)ForI=myFirstTomyLastthis.Nodes(I).Checked=.f.&&使所有子節(jié)點(diǎn)都不被選中endforElse&&如果沒有子節(jié)點(diǎn)Node.Checked=NotNode.CheckedEndIfEndIf在“保存”按鈕的Button_Click事件中添加如下代碼:SelectTab_UserCZYNO=Tab_User.操作員編號SelectTab_Purview replTab_Purview.&mytext.with.t.For操作員編號=CZYNO else replTab_Purview.&mytext.with.f.For操作員編號=CZYNO EndIf endifnextmessagebox("權(quán)限設(shè)置成功!",48,"系統(tǒng)提示")

附錄A參考文獻(xiàn)1.《VisualBasic精彩編程200例》機(jī)械工業(yè)出版社賽奎春、高春艷等2003年1月 2.《VisualBasic數(shù)據(jù)庫開發(fā)實(shí)例解析》機(jī)械工業(yè)出版社 劉志銘、高春艷等2003年8月 3.《VisualFoxPro數(shù)據(jù)庫開發(fā)實(shí)例解析》機(jī)械工業(yè)出版社 王晶瑩、王國輝等2003年9月 4.《PowerBuilder數(shù)據(jù)庫開發(fā)實(shí)例解析》機(jī)械工業(yè)出版社 華傳銘、張振坤等2003年9月 5.《Delphi數(shù)據(jù)庫開發(fā)實(shí)例解析》機(jī)械工業(yè)出版社賽奎春、鄭驍鵬等2004年2月 6.《PowerBuilder精彩編程200例》機(jī)械工業(yè)出版社張振坤、李文立等 2004年9月7.《VisualFoxPro精彩編程200例》機(jī)械工業(yè)出版社王國輝、董韶華等2004年9月8.《ASP數(shù)據(jù)庫開發(fā)實(shí)例解析》機(jī)械工業(yè)出版社李嚴(yán)、于亞芳、王國輝 2004年12月9.《Delphi工程應(yīng)用與項(xiàng)目實(shí)踐》機(jī)械工業(yè)出版社宋坤、趙智勇等2005年1月 10.《VisualBasic工程應(yīng)用與項(xiàng)目實(shí)踐》機(jī)械工業(yè)出版社高春艷、李俊民等2005年1月 11.《VisualC++工程應(yīng)用與項(xiàng)目實(shí)踐》機(jī)械工業(yè)出版社張雨、阮偉良等2005年1月12.《JSP工程應(yīng)用與項(xiàng)目實(shí)踐》機(jī)械工業(yè)出版社陳威、白偉明、李楠2005年2月13.《ASP工程應(yīng)用與項(xiàng)目實(shí)踐》機(jī)械工業(yè)出版社王國輝、牛強(qiáng)、李南南2005年4月14.《VisualBasic信息系統(tǒng)開發(fā)實(shí)例精選》機(jī)械工業(yè)出版社高春艷、李俊民、張耀庭等 2005年7月15.《ASP信息系統(tǒng)開發(fā)實(shí)例精選》機(jī)械工業(yè)出版社王國輝、牛強(qiáng)、李南南等2005年7月 16.《Delphi信息系統(tǒng)開發(fā)實(shí)例精選》機(jī)械工業(yè)出版社宋坤、趙智勇、劉強(qiáng)等2005年7月 17.《Visualfoxpro數(shù)據(jù)庫開發(fā)關(guān)鍵技術(shù)與實(shí)例應(yīng)用》人民郵電出版社周桓、張雨、王國輝2004年5月18.《PowerBuilder數(shù)據(jù)庫開發(fā)關(guān)

溫馨提示

  • 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

提交評論