【正文】
10 6 SXRQ 日期型 8 7 SL 數(shù)值型 12 2 8 FXG 數(shù)值型 10 4 9 QZB 邏輯型 1 10 YSL 數(shù)值型 14 2 ** 總計 ** 117 11 模塊設(shè)計 : 模塊化是一種重要的設(shè)計思想。 物理配置方案設(shè)計: 根據(jù)多方面的因素進(jìn)行配置,系統(tǒng)的吞量,響應(yīng)時間,可靠性,單機(jī)系統(tǒng),集中式,采用數(shù)據(jù)庫管理方式。 選擇您的姓名之后,輸入口令,如果輸入的口令是錯誤的會給出提示,如果三次輸入錯誤,將退出系統(tǒng)。確定 39。 數(shù)據(jù)存儲界面設(shè)計: 首先要把新藥的品種輸入的計算機(jī)之中,在增加新藥的時候,如果輸入的代碼是重復(fù)的,計算機(jī)將提示輸入重復(fù)錯誤。 ysl with ysl+ sele qclr go bott repl bh with val(str(lbh+(aa+1)/100,12,2)) else * if =ctod(subs(lsldj,at(,lsldj,3)+1,at(,lsldj,4)at(,lsldj,3)1)) if =.t. mm=messagebox( 原來的價格為+allt(subs(lsldj,1,at(,lsldj,1)1))+chr(13)+。 代碼即時性的產(chǎn)生代碼如下: 事件 define DELKEY 127 define ENTER 13 define DOWNARROW 3 LPARAMETERS nKeyCode, nShiftAltCtrl LOCAL cDisplayValue IF nKeyCode = DELKEY cDisplayValue = ALLTRIM() IF LEN(cDisplayValue)=1 cDisplayValue = 23 =.f. ELSE cDisplayValue = LEFT(cDisplayValue,LEN(cDisplayValue)1) =.t. =.t. =SELECT , FROM yuanb where cdisplayvalue $ into cursor xxx =1 =.f. ENDIF ELSE IF nKeyCode=ENTER =.f. else if nKeyCode=DOWNARROW =1 else =.t. cDisplayValue = ALLTRIM()+CHR(nKeyCode) =.t. =.t. =SELECT , FROM yuanb where cdisplayvalue $ into cursor xxx =1 24 =.f. endi endi ENDIF 衛(wèi)生室購藥查詢 : 可以通過查詢得到各衛(wèi)生室及門診部的用藥情況,可以利用日期來查詢起止日期內(nèi) 某個單位的用藥情況。 28 以下為保存為 EXCEL 文件的部分代碼: gcdelimfile = putfile(39。) if empty(gcdelimfile) amp。 報表輸出實現(xiàn)功能模塊:在生成數(shù)據(jù)以后直接打印數(shù)據(jù),其中預(yù)覽略圖如下: 購入藥品總匯報表: 29 購入藥品的報表一般為三份 。lpath if month(date())=10 ll=allt(str(month(date()))) else ll=allt(0+allt(str(month(date())))) endi if day(date())=10 nn=allt(str(day(date()))) else nn=allt(0+allt(str(day(date())))) endi ml=allt(str(year(date())))+ll+nn mm=adir(agetdir,39。) for i=1 to mm if agetdir(i,1)=ml bf1=1 else bf1=2 endi endf lpath=lnpath+39。lpath.\ to amp。lpath.\ to amp。lpath.\ to amp。lpath.\ to amp。ml.\ dele file amp。ml.\ copy file amp。ml.\ copy file amp。ml.\ copy file amp。ml.\ copy file amp。ml.\ endi SET DEFAULT TO amp。在測試過程中,雖然發(fā)現(xiàn)一些小問題,但一下子就解決掉了,我印象最新的是在設(shè)計查詢模塊時,常出現(xiàn)數(shù)據(jù)庫打開錯誤。 系統(tǒng)測試: 系統(tǒng)測試是對該軟件系統(tǒng)做整體測試,也稱整體測試,目的在于發(fā)現(xiàn)設(shè)計階段的結(jié)構(gòu)錯誤,如模塊接口定義缺陷等,這個測試我是把各個子程序有機(jī)的結(jié)合起來,連接成一個整體的系統(tǒng),在測試過程之中,我發(fā)現(xiàn)界面差錯不齊,很不統(tǒng)一。 存在的問題 當(dāng)然,一個程序,一個系統(tǒng)不可能盡善盡美的,因為學(xué)生我還要參加十月份的本科考試,時間方面有所制約。 此次體會與心得 編一個完整的系 統(tǒng),寫上這么多頁的文檔,我還是第一次,最主要的是:我在做這個綜合作業(yè)時,把以前學(xué)的內(nèi)容又重溫了一遍,學(xué)得更透,更深,更全面了。這一門課,讓我學(xué)到了不少的東西。當(dāng)記錄的變動,政策的改變,都要改變系統(tǒng)的結(jié)構(gòu)與方法,所以這里只列出部分表、程序、表單、報表的文件名稱。藥品批發(fā)系統(tǒng) 39。讓我知道,不會的一定要問,學(xué)無止境,有時我在編一大堆程序,還不如人家三、二句的功能強。不管好,還是差。最后定型的就是你所看到的。最后,搞好了,又發(fā)現(xiàn)把這個子程序放到別的目錄下時,又出現(xiàn)了問題。33 第四部分:系統(tǒng)測試 測試方法的種類很多, 什么黑盒呀,白盒測試呀!一定要打到適合自己的才最好,我這里主要運用了以下兩種測試,一種是運行測試,一種是模塊測試。ml.\ copy file amp。ml.\ copy file amp。ml.\ copy file amp。ml.\ copy file amp。ml.\ dele file amp。lpath.\ to amp。lpath.\ to amp。lpath.\ to amp。lpath.\ to amp。 if bf1=2 md amp。,39。 銷藥累計統(tǒng)計報表: 30 數(shù)據(jù)備份: 在系統(tǒng)退出時自動備份,這樣做可 以減輕操作,保證數(shù)據(jù)的完整性。按了 esc 鍵 cancel endif copy to amp。, (dtoc(date()))+購藥計劃 , 39。 具體查詢代碼的實現(xiàn)如下: 查詢 .click sele ltongj dele all sele distinct gydw from ck1 into cursor xxx sele ltongj appe from dbf(xxx) scan sele ck1 sum dj*gysl to aa for lb 中 草 藥 and gydw= and rq= and rq= 26 sum dj*gysl to bb for lb= 中 草 藥 and gydw= and rq= and rq= sele ltongj repl xy with aa,zhcy with bb,hj with aa+bb,rq with allt(dtoc())+allt(dtoc()) endscan sele ltongj sum xy to aa =str(aa,14,2) sum zhcy to aa =str(aa,14,2) sum hj to aa =str(aa,14,2) =2 =ltongj 某品種藥品的模糊查詢: 在忘記某種藥品的代碼時,可以用這個查詢來查找某種藥品的代碼和名稱,可以按代碼查詢,也可以按名稱查詢,非常簡便易用。 ** sxrq with ,sl with ,fxg with ,bh with val(str(lbh+(aa+1)/100,12,2)) * sele qclr * go bott * repl bh with val(str(lbh+(aa+1)/100,12,2)) 21 * endi endi =+val()* = = = = = = = =xxxx = ={^2021/12/31} =.f. endi sele yuanb2 set filt to sele qclr set filt to sele yuanb set filt to set exac off 購入藥品界面設(shè)計: 22 藥品購入錄入是主要的操作界面,通過輸入藥品的代碼,可以迅速定位到要輸入的藥品名稱上,在輸入的過程中有一定的輸入限制,如進(jìn)價不能比批發(fā)價格高,失效日期要在現(xiàn)在日期以后,而且在輸入完畢以后,如果不打印,數(shù)據(jù)將不存儲到主數(shù)據(jù)庫中,以保證數(shù)據(jù)的完整性。 期初錄入界面設(shè)計: 確定 .click local aa 18 aa=0 set exac on if empty() retu .t. else sele yuanb loca for dm=allt() lbh=bh repl sl with sl+ sele qclr appe blan repl rq with ctod(allt(())+/+allt(())+/+allt(())) repl dm with allt() repl ypmc with allt() repl gg with allt() repl dw with allt() repl dj with val() repl