版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 物流管理系統(tǒng)----醫(yī)藥物流管理系統(tǒng)</p><p><b> 目 錄</b></p><p> 一.引 言3</p><p><b> 二.需求分析4</b></p><p> 2.1 開(kāi)發(fā)背景4</p><p> 2.2 初步
2、設(shè)計(jì)4</p><p> 2.3 實(shí)現(xiàn)目標(biāo)5</p><p> 2.4 系統(tǒng)結(jié)構(gòu)圖5</p><p> 2.5 系統(tǒng)流程圖6</p><p> 2.6 開(kāi)發(fā)環(huán)境6</p><p> 2.6.1 硬件環(huán)境6</p><p> 2.6.2 軟件環(huán)境6</p>
3、<p><b> 三.概要設(shè)計(jì)7</b></p><p> 3.1 銷(xiāo)售管理7</p><p> 3.2 進(jìn)貨管理7</p><p> 3.3 庫(kù)房管理7</p><p> 3.4 調(diào)貨管理8</p><p> 3.5 財(cái)務(wù)管理8</p><p
4、> 3.6 賬目管理8</p><p> 3.7 基礎(chǔ)信息管理9</p><p> 3.8 系統(tǒng)管理10</p><p> 四.詳細(xì)設(shè)計(jì)及功能實(shí)現(xiàn)10</p><p> 4.1 數(shù)據(jù)庫(kù)設(shè)計(jì)10</p><p> 4.2 主程序界面設(shè)計(jì)11</p><p> 4.3
5、 系統(tǒng)登錄界面設(shè)計(jì)12</p><p> 4.4 功能模塊設(shè)計(jì)與功能實(shí)現(xiàn)13</p><p> 4.4.1 查詢(xún)類(lèi)模塊14</p><p> 4.4.2 報(bào)表類(lèi)模塊17</p><p> 4.4.3 登記類(lèi)模塊19</p><p> 4.4.4 結(jié)賬類(lèi)模塊22</p><p&g
6、t; 4.4.5 可修改類(lèi)模塊25</p><p> 4.5 其它模塊設(shè)計(jì)26</p><p> 4.5.1操作員管理26</p><p> 4.5.2權(quán)限管理設(shè)計(jì)27</p><p> 4.5.3 數(shù)據(jù)備份與恢復(fù)29</p><p> 五.存在問(wèn)題及解決方案30</p><
7、p> 六.結(jié) 論31</p><p><b> 七.參考資料31</b></p><p><b> 一.引 言</b></p><p> 物流管理是指在社會(huì)再生產(chǎn)過(guò)程中,根據(jù)物質(zhì)資料實(shí)體流動(dòng)的規(guī)律,應(yīng)用管理的基本原理和科學(xué)方法,對(duì)物流活動(dòng)進(jìn)行計(jì)劃、組織、指揮、協(xié)調(diào)、控制和監(jiān)督,使各項(xiàng)物流活動(dòng)實(shí)
8、現(xiàn)最佳的協(xié)調(diào)與配合,以降低物流成本,提高物流效率和經(jīng)濟(jì)效益。</p><p> 物流管理的內(nèi)容包括:</p><p> ?。?)、對(duì)物流活動(dòng)諸要素的管理,包括運(yùn)輸、儲(chǔ)存等環(huán)節(jié)的管理;</p><p> ?。?)、對(duì)物流系統(tǒng)諸要素的管理,即對(duì)其中人、財(cái)、物、設(shè)備、方法和信息等六大要素的管理;</p><p> ?。?)、對(duì)物流活動(dòng)中具體職能的
9、管理,主要包括物流計(jì)劃、質(zhì)量、技術(shù)、經(jīng)濟(jì)等職能的管理等。</p><p> 現(xiàn)在物流管理的流程一般分為10個(gè)階段:</p><p> 訂單處理作業(yè)→采購(gòu)作業(yè)→進(jìn)貨入庫(kù)作業(yè)→庫(kù)存管理作業(yè)→補(bǔ)貨及揀貨作業(yè)→流通加工作業(yè)→出貨作業(yè)處理→配送作業(yè)→會(huì)計(jì)作業(yè)→營(yíng)運(yùn)管理及績(jī)效管理作業(yè)</p><p> 過(guò)去物流管理著重在企業(yè)內(nèi)部作業(yè)與組織的整合,對(duì)下游顧客的對(duì)應(yīng),是以服務(wù)
10、與品質(zhì)為主要重心。隨著物流業(yè)的發(fā)展物流管理從物的處理,提升到物的加值方案設(shè)計(jì)、解決和管理上??梢詾榭蛻?hù)提供度身訂造式的,并帶有個(gè)性化的服務(wù),企業(yè)逐漸轉(zhuǎn)向強(qiáng)調(diào)跨企業(yè)界限的整合,使得顧客關(guān)系的維護(hù)與管理變得越來(lái)越重要.</p><p><b> 二.需求分析</b></p><p><b> 2.1 開(kāi)發(fā)背景</b></p><
11、;p> 本系統(tǒng)假設(shè)為一個(gè)醫(yī)藥品的銷(xiāo)售公司做物流管理系統(tǒng)。</p><p> 隨著我國(guó)市場(chǎng)經(jīng)濟(jì)的蓬勃發(fā)展和對(duì)醫(yī)藥品的需求迅速增加,醫(yī)藥行業(yè)也相應(yīng)的處于一個(gè)飛速發(fā)展的時(shí)期。行業(yè)的快速發(fā)展必然導(dǎo)致各企業(yè)之間的競(jìng)爭(zhēng)更加激烈,為了使自己的企業(yè)在競(jìng)爭(zhēng)中能夠站穩(wěn)腳跟,不被激烈的競(jìng)爭(zhēng)環(huán)境所壓倒,必然要求企業(yè)加強(qiáng)對(duì)自身的管理,提高企業(yè)的經(jīng)營(yíng)效率。</p><p> 由于醫(yī)藥行業(yè)的特殊性,造成醫(yī)藥
12、品的種類(lèi)繁多,業(yè)務(wù)量巨大,若仍然采用人工的記賬方式,必然不能滿(mǎn)足企業(yè)的需求,企業(yè)需要利用計(jì)算機(jī)來(lái)進(jìn)行醫(yī)藥品的物流管理,因此需要構(gòu)造一個(gè)物流管理系統(tǒng)。</p><p><b> 2.2 初步設(shè)計(jì)</b></p><p> 由于本系統(tǒng)假設(shè)為一個(gè)醫(yī)藥品的銷(xiāo)售公司做物流管理系統(tǒng)。針對(duì)醫(yī)藥品銷(xiāo)售的特點(diǎn),初步設(shè)計(jì)本系統(tǒng)包含以下幾個(gè)功能模塊:</p><p&
13、gt; 銷(xiāo)售管理:包含銷(xiāo)售登記,銷(xiāo)售退貨,銷(xiāo)售報(bào)表。</p><p> 進(jìn)貨管理:包含入庫(kù)登記,入庫(kù)退貨,入庫(kù)報(bào)表。</p><p> 庫(kù)房管理:包含庫(kù)存查詢(xún),庫(kù)存盤(pán)點(diǎn),庫(kù)存修改,庫(kù)存報(bào)表。</p><p> 調(diào)貨管理:包含調(diào)貨登記,調(diào)貨查詢(xún)。</p><p> 財(cái)務(wù)管理:包含收款單,收款查詢(xún),付款單,付款查詢(xún)。</p>
14、<p> 賬目管理:包含財(cái)務(wù)結(jié)賬,當(dāng)月結(jié)賬,銷(xiāo)售查詢(xún)統(tǒng)計(jì),入庫(kù)查詢(xún) </p><p> 統(tǒng)計(jì),銷(xiāo)售退貨查詢(xún),財(cái)務(wù)報(bào)表,月報(bào)表。</p><p> 基礎(chǔ)信息管理:包含藥品信息,員工信息,客戶(hù)信息,供應(yīng)商信 </p><p><b> 息,倉(cāng)庫(kù)基本信息。</b></p><p> 系統(tǒng)管理
15、:包含操作員管理,權(quán)限設(shè)置,數(shù)據(jù)備份,數(shù)據(jù)恢復(fù)。</p><p><b> 2.3 實(shí)現(xiàn)目標(biāo)</b></p><p> 本醫(yī)藥物流管理系統(tǒng)在完成運(yùn)行后,需要達(dá)到以下效果:</p><p> 操作簡(jiǎn)單,易于上手。</p><p> 查詢(xún)方便靈活,瀏覽簡(jiǎn)單,明目。</p><p><b&
16、gt; 數(shù)據(jù)存儲(chǔ)安全可靠。</b></p><p> 功能全面,實(shí)用性強(qiáng)。</p><p><b> 自動(dòng)化信息管理。</b></p><p><b> 2.4 系統(tǒng)結(jié)構(gòu)圖</b></p><p> 圖1. 醫(yī)藥物流管理系統(tǒng)結(jié)構(gòu)圖</p><p><
17、;b> 2.5 系統(tǒng)流程圖</b></p><p> 圖2. 醫(yī)藥物流管理系統(tǒng)流程圖</p><p><b> 2.6 開(kāi)發(fā)環(huán)境</b></p><p> 2.6.1 硬件環(huán)境</p><p><b> 主頻50MHz以上</b></p><p>
18、<b> 內(nèi)存10MB以上</b></p><p> 240MB以上的硬盤(pán)空間</p><p> VGA或更高的分辨率顯示器,1MB以上的顯存 </p><p> 2.6.2 軟件環(huán)境</p><p> 本系統(tǒng)是在 Windows XP 環(huán)境下,采用Microsoft Visual FoxPro 6.0數(shù)據(jù)庫(kù)開(kāi)
19、發(fā)工具進(jìn)行構(gòu)建系統(tǒng)。</p><p> Microsoft Visual FoxPro 6.0是微軟公司推出的可視化編程工具,它的開(kāi)發(fā)效率高,成本低,投資小,見(jiàn)效快。Microsoft Visual FoxPro 6.0一直是中國(guó)臺(tái)式機(jī)數(shù)據(jù)庫(kù)的主流,易學(xué),易用,易維護(hù)。</p><p><b> 三.概要設(shè)計(jì)</b></p><p> 通
20、過(guò)前面的需求分析可以知道,本系統(tǒng)一共分為了8個(gè)系統(tǒng)模塊,包括:銷(xiāo)售管理,進(jìn)貨管理,庫(kù)房管理,調(diào)貨管理,財(cái)務(wù)管理,賬目管理,基礎(chǔ)信息管理,系統(tǒng)管理。每個(gè)系統(tǒng)模塊下,包含了若干小的功能模塊。每一個(gè)系統(tǒng)模塊都實(shí)現(xiàn)其特定的功能。</p><p><b> 3.1 銷(xiāo)售管理</b></p><p> 銷(xiāo)售管理模塊主要實(shí)現(xiàn)銷(xiāo)售方面的功能,它包含銷(xiāo)售登記,銷(xiāo)售退貨,銷(xiāo)售調(diào)查三個(gè)
21、功能模塊。銷(xiāo)售管理主要是針對(duì)公司的銷(xiāo)售人員而設(shè)計(jì),幫助公司對(duì)所銷(xiāo)售的藥品進(jìn)行一個(gè)系統(tǒng)地記錄。</p><p> 銷(xiāo)售登記可以實(shí)現(xiàn)日常的銷(xiāo)售開(kāi)票,自動(dòng)計(jì)算金額,多種結(jié)算方式。銷(xiāo)售退貨用于單據(jù)已開(kāi)出的客戶(hù)進(jìn)行退貨操作。</p><p> 銷(xiāo)售報(bào)表實(shí)現(xiàn)按日期查詢(xún)藥品銷(xiāo)售信息,可預(yù)覽和打印銷(xiāo)售報(bào)表。</p><p><b> 3.2 進(jìn)貨管理</b&g
22、t;</p><p> 進(jìn)貨管理模塊主要實(shí)現(xiàn)藥品入庫(kù)的功能,它包括入庫(kù)登記,入庫(kù)退貨,入庫(kù)報(bào)表三個(gè)功能模塊。進(jìn)貨管理主要是針對(duì)公司的倉(cāng)庫(kù)管理人員而設(shè)計(jì),此系統(tǒng)模塊能幫助公司在藥品入庫(kù)的時(shí)候,對(duì)藥品的各項(xiàng)信息進(jìn)行系統(tǒng)地記錄,可以大大減少進(jìn)行手工記錄時(shí)所犯的錯(cuò)誤,提高公司的營(yíng)運(yùn)效率。</p><p> 入庫(kù)登記實(shí)現(xiàn)入庫(kù)登記操作,并自動(dòng)計(jì)算金額,生成入庫(kù)票號(hào)。</p><
23、p> 入庫(kù)退貨實(shí)現(xiàn)調(diào)用藥品的基本信息,生成退貨票號(hào)作為退貨的憑證。</p><p> 入庫(kù)報(bào)表實(shí)現(xiàn)按日期查詢(xún)?nèi)霂?kù)藥品信息,打印和預(yù)覽入庫(kù)報(bào)表。</p><p><b> 3.3 庫(kù)房管理</b></p><p> 庫(kù)房管理模塊是對(duì)藥品在庫(kù)房中的管理,它包括庫(kù)存查詢(xún),庫(kù)存盤(pán)點(diǎn),庫(kù)存修改,庫(kù)存報(bào)表。此系統(tǒng)模塊同樣為倉(cāng)庫(kù)管理員而設(shè)計(jì)。由
24、于同種藥品入庫(kù)有時(shí)間上的先后,而藥品的信息也會(huì)隨著時(shí)間的推移而不停的修改。因此庫(kù)房管理模塊就能實(shí)現(xiàn)對(duì)庫(kù)存中的藥品信息進(jìn)行系統(tǒng)地管理。</p><p> 庫(kù)存查詢(xún)實(shí)現(xiàn)按不同條件查詢(xún)庫(kù)存信息,以頁(yè)框和列表來(lái)瀏覽信息。</p><p> 庫(kù)存盤(pán)點(diǎn)實(shí)現(xiàn)以表單的形式顯示庫(kù)存數(shù)量大于零的全部藥品信息。</p><p> 庫(kù)存修改實(shí)現(xiàn)查詢(xún)和瀏覽信息功能外,還設(shè)置了修改,刪除
25、信息功能。</p><p> 庫(kù)存報(bào)表實(shí)現(xiàn)按條件查詢(xún)庫(kù)存信息,預(yù)覽和打印庫(kù)存報(bào)表。</p><p><b> 3.4 調(diào)貨管理</b></p><p> 調(diào)貨管理用于實(shí)現(xiàn)對(duì)庫(kù)存的藥品在不同的倉(cāng)庫(kù)之間進(jìn)行調(diào)動(dòng)的記錄。它包含調(diào)貨登記,調(diào)貨查詢(xún)。與上面兩個(gè)系統(tǒng)模塊一樣,此模塊仍然為倉(cāng)庫(kù)管理人員設(shè)計(jì)。藥品由于其種類(lèi)繁多,信息復(fù)雜,在進(jìn)行藥品的調(diào)動(dòng)
26、時(shí),對(duì)調(diào)動(dòng)的信息進(jìn)行記錄也就顯得尤為關(guān)鍵。</p><p> 調(diào)貨登記完成各倉(cāng)庫(kù)間藥品調(diào)貨信息記錄,自動(dòng)生成調(diào)貨票號(hào),日期,以列表的形式顯示調(diào)貨結(jié)果。</p><p> 調(diào)貨查詢(xún)支持條件和日期查詢(xún),以頁(yè)框和列表方式瀏覽調(diào)貨信息。</p><p><b> 3.5 財(cái)務(wù)管理</b></p><p> 財(cái)務(wù)管理主要實(shí)
27、現(xiàn)收款與付款的記錄功能。醫(yī)藥品業(yè)務(wù)的流通量是非常巨大的,因此在財(cái)務(wù)上對(duì)收款與付款的信息記錄也就非常繁瑣。利用財(cái)務(wù)管理系統(tǒng)模塊可以簡(jiǎn)化這些操作,使用方便,簡(jiǎn)潔。財(cái)務(wù)管理包含收款單,付款單,收款查詢(xún),付款查詢(xún)。</p><p> 收款單可實(shí)現(xiàn)查詢(xún)和瀏覽收款信息,對(duì)未付款客戶(hù)進(jìn)行結(jié)款操作。</p><p> 收款查詢(xún)能按不同條件查詢(xún)收款信息,以頁(yè)框和列表瀏覽收款信息。</p>
28、<p> 付款單可對(duì)供應(yīng)商進(jìn)行結(jié)款操作,能查詢(xún)與瀏覽付款信息。</p><p> 付款查詢(xún)與收款查詢(xún)相似,可查詢(xún)與瀏覽付款信息。</p><p><b> 3.6 賬目管理</b></p><p> 賬目管理所包含的功能模塊較多,它主要是為公司的財(cái)務(wù)人員而設(shè)計(jì)。它可以大大簡(jiǎn)化公司財(cái)務(wù)人員的工作量,對(duì)公司的財(cái)務(wù)賬目信息有一個(gè)系統(tǒng)
29、的管理。賬目管理系統(tǒng)模塊包含財(cái)務(wù)結(jié)賬,當(dāng)月結(jié)賬,銷(xiāo)售查詢(xún)統(tǒng)計(jì),入庫(kù)查詢(xún)統(tǒng)計(jì),銷(xiāo)售退貨查詢(xún),入庫(kù)退貨查詢(xún),財(cái)務(wù)報(bào)表,查詢(xún)?cè)聢?bào)表。</p><p> 財(cái)務(wù)結(jié)賬可完成日結(jié)賬操作,可匯總每日結(jié)賬信息。</p><p> 當(dāng)月結(jié)賬完成月結(jié)賬操作,統(tǒng)計(jì)匯總結(jié)賬信息</p><p> 銷(xiāo)售查詢(xún)統(tǒng)計(jì)可查詢(xún)與瀏覽銷(xiāo)售信息,統(tǒng)計(jì)匯總銷(xiāo)售信息。</p><p&g
30、t; 入庫(kù)查詢(xún)統(tǒng)計(jì)可查詢(xún)與瀏覽藥品入庫(kù)信息,自動(dòng)匯總?cè)霂?kù)藥品信息。</p><p> 銷(xiāo)售退貨查詢(xún)可查詢(xún)與瀏覽銷(xiāo)售退貨的信息結(jié)果,快速瀏覽信息。</p><p> 入庫(kù)退貨查詢(xún)與銷(xiāo)售退貨查詢(xún)的功能實(shí)現(xiàn)相似。</p><p> 財(cái)務(wù)報(bào)表可按時(shí)間查詢(xún)財(cái)務(wù)報(bào)表,以報(bào)表形式反映藥品的進(jìn)銷(xiāo)存情況,預(yù)覽和打印財(cái)務(wù)報(bào)表。</p><p> 查詢(xún)?cè)?/p>
31、報(bào)表可按條件查詢(xún)?cè)撛碌乃幤愤M(jìn)銷(xiāo)存信息,可預(yù)覽和打印此月報(bào)表。</p><p> 3.7 基礎(chǔ)信息管理</p><p> 基礎(chǔ)信息管理模塊是對(duì)公司的常用信息進(jìn)行管理,如藥品,員工,客戶(hù)的信息等。這個(gè)模塊相當(dāng)于公司的檔案管理,有大量的數(shù)據(jù)信息。它包含藥品信息,員工信息,客戶(hù)信息,供應(yīng)商信息,倉(cāng)庫(kù)基本信息。這些信息數(shù)據(jù)是其它功能模塊實(shí)現(xiàn)的基礎(chǔ)。</p><p> 藥
32、品信息實(shí)現(xiàn)瀏覽查詢(xún)藥品基本信息,可添加,修改,刪除信息。</p><p> 員工信息提供了添加,修改,刪除員工信息功能,也可查詢(xún)?yōu)g覽。</p><p> 客戶(hù)信息實(shí)現(xiàn)了客戶(hù)信息的添、刪、改功能。</p><p> 供應(yīng)商信息與上述三種功能模塊實(shí)現(xiàn)的功能相似。</p><p> 倉(cāng)庫(kù)基本信息出了現(xiàn)了信息的添、刪、改功能外,還能自動(dòng)生成7
33、位倉(cāng)庫(kù)編號(hào)。</p><p><b> 3.8 系統(tǒng)管理</b></p><p> 系統(tǒng)管理模塊是針對(duì)系統(tǒng)的保護(hù)而設(shè)計(jì)的。此模塊專(zhuān)為系統(tǒng)管理員而設(shè)計(jì)。此系統(tǒng)的管理操作可直接影響整個(gè)系統(tǒng)的操作管理。它包括操作員管理,權(quán)限管理,數(shù)據(jù)備份,數(shù)據(jù)恢復(fù)。</p><p> 操作員管理可以對(duì)操作員信息進(jìn)行增加、刪除、修改,可設(shè)置操作員密碼。</
34、p><p> 權(quán)限管理能查詢(xún)操作員級(jí)別及使用權(quán)限,為一般操作員設(shè)置權(quán)限。</p><p> 數(shù)據(jù)備份可以對(duì)庫(kù)存中的數(shù)據(jù)信息實(shí)現(xiàn)備份功能。</p><p> 數(shù)據(jù)恢復(fù)可將數(shù)據(jù)備份的庫(kù)存信息安原路經(jīng)恢復(fù)。</p><p> 四.詳細(xì)設(shè)計(jì)及功能實(shí)現(xiàn)</p><p><b> 4.1 數(shù)據(jù)庫(kù)設(shè)計(jì)</b&g
35、t;</p><p> 利用Microsoft Visual FoxPro 6.0新建一個(gè)數(shù)據(jù)庫(kù),名稱(chēng)為Medicamentmanage ,在此數(shù)據(jù)庫(kù)中添加27個(gè)表:臨時(shí)登記表Ltabdhdj, 臨時(shí)日結(jié)表Ltabrj,臨時(shí)入庫(kù)登記表Ltabrkdj,臨時(shí)入庫(kù)退貨表Ltabrkth,臨時(shí)銷(xiāo)售登記表Ltabxsdj,臨時(shí)銷(xiāo)售退貨表Ltabxsth,臨時(shí)月結(jié)表Ltabyj,調(diào)貨登記表Tabdhdj,供應(yīng)商信息表T
36、abgys,結(jié)算方式表Tabjsfs,庫(kù)存表Tabkc,客戶(hù)信息表Tabkh,權(quán)限表Tabpurview,日結(jié)表Tabrj,入庫(kù)登記表Tabrkdj,入庫(kù)結(jié)賬表Tabrkjz,入庫(kù)票號(hào)表Tabrkph,入庫(kù)退貨表Tabrkth,倉(cāng)庫(kù)信息表Tabstorage,銷(xiāo)售登記表Tabxsdj,銷(xiāo)售結(jié)賬表Tabxsjz,銷(xiāo)售票號(hào)表Tabxsph,銷(xiāo)售退貨表Tabxsth,員工信息表Tabyginfo,月結(jié)表Tabyj,月結(jié)初始化Tabyjcsh,
37、藥品信息表Tabypinfo。</p><p> 4.2 主程序界面設(shè)計(jì)</p><p> 創(chuàng)建一個(gè)標(biāo)準(zhǔn)項(xiàng)目,名稱(chēng)為“醫(yī)藥物流管理系統(tǒng)”,在該項(xiàng)目中添加一個(gè)表單,名稱(chēng)為Fdesktop。在表單中插入名稱(chēng)為Vcxmain的ToolBar類(lèi)。</p><p> 在各個(gè)按鈕的Click事件中添加類(lèi)代碼。</p><p> 圖3. 主程序界面
38、 </p><p> 為了使操作更加簡(jiǎn)便,將常用的幾種操作單獨(dú)提出來(lái),設(shè)計(jì)一個(gè)Vcxmain的Toolbar類(lèi)。添加代碼如下:</p><p> 在“銷(xiāo)售登記”按鈕的Click事件中添加代碼:do form form\xiaoshoudj</p><p> 同理,在“入庫(kù)登記”按鈕中添加:do form form\rukudj</p><
39、p> 在“調(diào)貨登記”按鈕中添加:do form form\tiaohuodj </p><p> 在“庫(kù)存查詢(xún)”按鈕中添加:do form form\kcquery</p><p> 在“銷(xiāo)售查詢(xún)”按鈕中添加:do form form\xiaoshouquery</p><p> 在“入庫(kù)查詢(xún)”按鈕中添加:do form form\ruk
40、uquery</p><p> 在“財(cái)務(wù)結(jié)賬”按鈕中添加:do form form\cwjz</p><p> 在“藥品信息”按鈕中添加:do form form\ypmanage</p><p> 在“退出”按鈕中添加:quit</p><p> 4.3 系統(tǒng)登錄界面設(shè)計(jì)</p><p> 用戶(hù)進(jìn)入系統(tǒng)前,
41、必須進(jìn)入系統(tǒng)登錄界面,系統(tǒng)登錄界面能夠確認(rèn)用戶(hù)的身份及使用權(quán)限。</p><p> 圖4. 系統(tǒng)登錄界面</p><p> 首先要判斷用戶(hù)輸入的用戶(hù)名是否正確,然后判斷用戶(hù)輸入的密碼是否正確,如果正確,這根據(jù)用戶(hù)選擇操作員說(shuō)擁有的權(quán)限級(jí)別為全局變量賦值,如果不正確,彈出系統(tǒng)警告。</p><p> 在進(jìn)行編碼的時(shí)候,首先將使用的數(shù)據(jù)表—權(quán)限表打開(kāi):<
42、/p><p> use database\tabpurview &&打開(kāi)數(shù)據(jù)表</p><p> 為了對(duì)所輸入的操作員姓名與權(quán)限表中的姓名相比較,我們用權(quán)限表中的“操作員姓名”作為索引文件:</p><p> set order to 操作員姓名 &&指定控制索引文件</p>
43、;<p> 當(dāng)輸入姓名與密碼以后,我們要判斷所輸入的操作員名稱(chēng)和密碼是否正確。方法是先查找表中是否有所輸入的名字,如果表中沒(méi)有所輸入的名字,則系統(tǒng)登陸失敗,并顯示登陸失敗。</p><p> 在查詢(xún)搜索名字時(shí),可用以下語(yǔ)句:</p><p> seek cname &&快速查詢(xún)</p><
44、p> 判斷錯(cuò)誤,并顯示錯(cuò)誤界面:</p><p> if alltrim(tabpurview.操作員姓名)!=cname</p><p> cMessagetext='操作員錯(cuò)誤,請(qǐng)重新輸入!'</p><p> 如果在表中找到了所輸入的名字,則系統(tǒng)需要對(duì)所對(duì)應(yīng)的密碼進(jìn)行比較判斷,看是否能與名字所匹配,方法與上面的名字比較相似:<
45、;/p><p> if alltrim(tabpurview.密碼)!=ppassword</p><p> cmessagetext='密碼錯(cuò)誤,請(qǐng)重新輸入!'</p><p> 當(dāng)系統(tǒng)發(fā)現(xiàn)所輸入的名字與密碼都正確的時(shí)候,系統(tǒng)需要給此用戶(hù)賦予表中相對(duì)應(yīng)的權(quán)限,先判斷用戶(hù)的權(quán)限級(jí)別: </p><p> purview=v
46、al(alltrim(tabpurview.權(quán)限級(jí)別)) </p><p> 再對(duì)應(yīng)的各個(gè)系統(tǒng)模塊,分別賦予相應(yīng)的權(quán)限,以“銷(xiāo)售管理”權(quán)限為例,將銷(xiāo)售管理的權(quán)限賦值給全局變量: </p><p> pxsgl=tabpurview.銷(xiāo)售管理 &&賦值給全局變量</p><p> 4.4 功能模塊設(shè)計(jì)與功能實(shí)現(xiàn)</p
47、><p> 通過(guò)前面的需求分析可以知道,本系統(tǒng)共有8個(gè)部分,一共包含33個(gè)完整的功能模塊。這33個(gè)功能模塊,除去系統(tǒng)管理所實(shí)現(xiàn)的功能,其它的模塊根據(jù)其實(shí)現(xiàn)的功能可以分為以下幾類(lèi):</p><p> 查詢(xún)類(lèi)模塊:庫(kù)存查詢(xún),調(diào)貨查詢(xún),收款查詢(xún),付款查詢(xún),</p><p> 銷(xiāo)售查詢(xún)統(tǒng)計(jì),入庫(kù)查詢(xún)統(tǒng)計(jì),銷(xiāo)售退貨查詢(xún),</p><p><b&
48、gt; 入庫(kù)退貨查詢(xún)。</b></p><p> 報(bào)表類(lèi)模塊:銷(xiāo)售報(bào)表,入庫(kù)報(bào)表,庫(kù)存報(bào)表,財(cái)務(wù)報(bào)表,查詢(xún)</p><p><b> 月報(bào)表,庫(kù)存盤(pán)點(diǎn)。</b></p><p> 登記類(lèi)模塊:銷(xiāo)售登記,銷(xiāo)售退貨,入庫(kù)登記,入庫(kù)退貨,調(diào)貨</p><p><b> 登記。</b>
49、</p><p> 結(jié)賬類(lèi)模塊:收款單,付款單,財(cái)務(wù)結(jié)賬,當(dāng)月結(jié)賬。</p><p> 可修改類(lèi)模塊:庫(kù)存修改,藥品信息,員工信息,客戶(hù)信息,供</p><p> 應(yīng)商信息,倉(cāng)庫(kù)基本信息。</p><p> 4.4.1 查詢(xún)類(lèi)模塊</p><p> 由于本系統(tǒng)中含有大量的數(shù)據(jù)信息,而在實(shí)際的系統(tǒng)操作中,又需要
50、對(duì)數(shù)據(jù)進(jìn)行查詢(xún),因此在這些查詢(xún)類(lèi)模塊中,我們要設(shè)計(jì)并實(shí)現(xiàn)查詢(xún)這項(xiàng)功能。</p><p> 圖5. 查詢(xún)系統(tǒng)界面</p><p> 在本系統(tǒng)中,查詢(xún)的種類(lèi)分為兩大類(lèi):分別為條件查詢(xún)與時(shí)間查詢(xún)。</p><p> 條件查詢(xún)分為四種方式,分別為模糊查詢(xún)(like) ,小于查詢(xún)(<),大于查詢(xún)(>)和等于查詢(xún)(=)。</p><p>
51、; 為了實(shí)現(xiàn)這條件查詢(xún)的這幾種方式,在創(chuàng)建表單的時(shí)候,須在表單上添加2個(gè)Combo控件,屬性均為:RowSource RowSourceType,分別用來(lái)提供查詢(xún)字段列表和查詢(xún)條件列表。</p><p> 而如果模塊中,要實(shí)現(xiàn)按日期查詢(xún),還需要在表單中加入2個(gè)Text控件,屬性為Format Value,用來(lái)提供日期的輸入。</p><p> 對(duì)于模塊需要按條件還是日期來(lái)查詢(xún),在查詢(xún)
52、前,需要進(jìn)行選擇,為了實(shí)現(xiàn)這個(gè)選擇功能,在表單設(shè)計(jì)時(shí),需添加2個(gè)Check控件,用來(lái)分別選擇查詢(xún)的方式。</p><p> 當(dāng)選擇查詢(xún)的類(lèi)型時(shí),只要在查詢(xún)方式前加上勾,系統(tǒng)就將采用此種查詢(xún)方式,系統(tǒng)判斷是否選擇,使用下面的方法:</p><p> if thisform.check1.value=1 &&選擇了該方法</p><p>
53、 if thisform.check1.value=0 &&為沒(méi)選擇該方法</p><p> 當(dāng)系統(tǒng)發(fā)現(xiàn)選擇了該查詢(xún)方式,則需要設(shè)置控件有效來(lái)使用此方法:</p><p> store.t.to thisform.combo1.enabled,</p><p> thisform.combo2.enabled,thisform.tex
54、t1.enabled &&設(shè)置控件有效</p><p> 若發(fā)現(xiàn)未使用該方法,只需要將第一句改為:</p><p> store.f.to thisform.combo1.enabled 即可。</p><p> 這樣也就實(shí)現(xiàn)是選擇條件還是日期來(lái)查詢(xún)。</p><p> 如果按選擇條件查詢(xún),系統(tǒng)在查詢(xún)的時(shí)候,將查詢(xún)過(guò)
55、程分成三個(gè)情況。 </p><p> 第一種情況為查詢(xún)操作失敗,出現(xiàn)這種情況,主要是使用查詢(xún)的時(shí)候,沒(méi)有按照要求來(lái)進(jìn)行查找操作,如沒(méi)有填寫(xiě)查詢(xún)的字段,沒(méi)有選擇查詢(xún)的方式,出現(xiàn)這種情況,系統(tǒng)會(huì)提示查詢(xún)失敗,需要重新查詢(xún)。</p><p> 系統(tǒng)判斷出沒(méi)有填寫(xiě)完整的查詢(xún),也就是沒(méi)有選擇查詢(xún)方式為空和查詢(xún)的內(nèi)容為空,輸出錯(cuò)誤提示:</p><p> if empty
56、(ccif) or empty(ctext)</p><p> messagebox('請(qǐng)選擇查詢(xún)條件!',48,'操作失??!')</p><p> 此時(shí)查詢(xún)失敗,需要重新查詢(xún)</p><p> 第二種情況為模糊查詢(xún),實(shí)現(xiàn)模糊查詢(xún)?cè)贛icrosoft Visual FoxPro 中顯得比較容易,因?yàn)閂isual FoxPro的語(yǔ)
57、言代碼中有一個(gè)很特殊的符號(hào),這個(gè)符號(hào)就是“%”。“%”在Microsoft Visual FoxPro 的數(shù)據(jù)庫(kù)代碼中叫做通配符,使用通配符可以連接任意數(shù)目的字符。因此要實(shí)現(xiàn)模糊查詢(xún),只需要先利用系統(tǒng)查出帶有所輸入字段的所有目標(biāo),而“%”在語(yǔ)句中則表示其他所有任意字段字符。</p><p> 先判斷出所選的查詢(xún)?yōu)槟:樵?xún)(like):</p><p> if thisform.comb
58、o2.displayvalue='like'then</p><p> 然后找出所有與所寫(xiě)的字段相匹配的信息,其中非所寫(xiě)字段的信息就用通配符所代替:</p><p> fff=alltrim(thisform.combo1.displayvalue)+""+alltrim(thisform.</p><p> combo2.
59、displayvalue) +"'"+alltrim(thisform.text1.value)+"%'"</p><p> 這樣,系統(tǒng)就可以找出所要查詢(xún)的所有信息。</p><p> 第三種情況為除去模糊查詢(xún)的其它查詢(xún),包括小于,大于,等于查詢(xún),這三種查詢(xún)與模糊查詢(xún)相比,唯一的不同就是所給的字段微可比較的,而且不需要系統(tǒng)對(duì)不
60、確定的信息進(jìn)行搜索,也就是沒(méi)有通配符。</p><p> fff=alltrim(thisform.combo1.displayvalue)+""</p><p> +alltrim(thisform.combo2.displayvalue);</p><p> +" '"+alltrim(thisform.te
61、xt1.value)+"'"</p><p> 上面就是條件查詢(xún)的幾種方式。</p><p> 當(dāng)然,除了條件查詢(xún)的方式外,還可以按時(shí)間日期進(jìn)行查詢(xún)。</p><p> 如果是按照時(shí)間日期查詢(xún),與條件查詢(xún)相似,時(shí)間查詢(xún)可以分為查詢(xún)失敗和日期查詢(xún)兩個(gè)情況:</p><p> sdate 與 edate 分別指
62、向了時(shí)間查詢(xún)的日期起止時(shí)間,若起止時(shí)間為空,則查詢(xún)失敗</p><p> if sdate={//} or edate={//}</p><p> messagebox('請(qǐng)輸入起始時(shí)間!',48,'操作失?。?#39;)</p><p> 如果日期均不為空,則系統(tǒng)將查找起止日期之間的信息,將信息存入臨時(shí)表Lindeping以供使用。以
63、銷(xiāo)售登記查詢(xún)?yōu)槔?,我們將銷(xiāo)售登記表中的銷(xiāo)售日期作為起止日期查詢(xún)標(biāo)準(zhǔn),將滿(mǎn)足日期的所有數(shù)據(jù)信息裝入Lindeping 。 </p><p> fff=between(銷(xiāo)售日期,sdate,edate)</p><p> select * from tabxsdj where &fff.into cursor lindeping </p><p>
64、; 有的模塊使用查詢(xún)功能的同時(shí),希望能夠?qū)崿F(xiàn)統(tǒng)計(jì)功能。我們可以通過(guò)查詢(xún)語(yǔ)句將符合條件的記錄存入臨時(shí)表Lindeping中,在對(duì)臨時(shí)表Lindeping 進(jìn)行統(tǒng)計(jì)。</p><p> 計(jì)算方法為:統(tǒng)計(jì)品種數(shù):品種數(shù)=臨時(shí)表Lindeping中的記錄總數(shù)</p><p> select lindeping</p><p> creccount=recount(
65、)</p><p> 統(tǒng)計(jì)數(shù)量:對(duì)符合條件的記錄進(jìn)行求和計(jì)算</p><p> sum 數(shù)量 to jhcount</p><p> 統(tǒng)計(jì)金額:對(duì)符合條件的記錄進(jìn)行求和計(jì)算</p><p> sum 金額 to jhje</p><p> 4.4.2 報(bào)表類(lèi)模塊</p><p> 本
66、系統(tǒng)中所實(shí)現(xiàn)的報(bào)表類(lèi)模塊功能大體一樣,均包含打印,打印預(yù)覽,以及使用查詢(xún)羅列出所需的信息。</p><p> 在系統(tǒng)中單單實(shí)現(xiàn)打印與打印預(yù)覽是很容易的,只要在表單的相應(yīng)位置寫(xiě)入簡(jiǎn)單的語(yǔ)句即可實(shí)現(xiàn)。</p><p> 在“打印預(yù)覽”按鈕的Click事件中加入:</p><p> report form report\xiaoshou to print previ
67、ew &&打印預(yù)覽報(bào)表</p><p> 在“打印”按鈕的Click事件中加入:</p><p> report form report\xiaoshou to print &&打印報(bào)表</p><p> 這樣,利用上述的代碼就可以實(shí)現(xiàn)將表單grid控件中所羅列的數(shù)據(jù)以表單的形式打印出來(lái)。</p>&
68、lt;p> 在設(shè)計(jì)表單類(lèi)模塊的時(shí)候,關(guān)鍵是要能把所查詢(xún)的數(shù)據(jù)能夠羅列出來(lái)。為了實(shí)現(xiàn)該功能,我們首先應(yīng)該將查詢(xún)的數(shù)據(jù)輸入到臨時(shí)表中。</p><p> 以銷(xiāo)售報(bào)表為例,我們需要將所輸入的查詢(xún)時(shí)間范圍內(nèi)的所有數(shù)據(jù)線(xiàn)找出來(lái),以銷(xiāo)售票號(hào)作為索引,將結(jié)果輸入到臨時(shí)表Lindeping 中:</p><p><b> select *;</b></p>
69、<p> from medicamentmanage!tabxsdj;</p><p> where between(出庫(kù)日期,sdate,edate);</p><p> order by tabxsdj.銷(xiāo)售票號(hào);</p><p> into cursor lindeping &&查詢(xún)結(jié)果輸出到臨時(shí)表中<
70、;/p><p> 然后我們需要實(shí)現(xiàn)將所找到的數(shù)據(jù)輸入表單的到grid控件,也就是我們可以清楚看到的列表中:</p><p> 現(xiàn)將指針移動(dòng)到臨時(shí)表的頂端,如果沒(méi)有我們要找的信息,指針移動(dòng)到最后一條記錄,然后顯示出無(wú)記錄的信息</p><p> go top &&指針移動(dòng)到表頂端</p><p&
71、gt; if eof() &&空信息</p><p> go bottom &&記錄指針移動(dòng)到最后一條記錄</p><p> messagebox('無(wú)記錄!',48,'信息窗口')</p><p> 如果臨時(shí)表中發(fā)現(xiàn)了由數(shù)據(jù)信息
72、存在,則開(kāi)始進(jìn)行數(shù)據(jù)的錄入: </p><p> thisform.grid1.recordsource='lindeping' </p><p> thisform.commandgroup1.command1.enabled=.t.</p><p> thisform.commandgroup1.command2.enabled
73、=.t.</p><p> 如果上述語(yǔ)句=.f. 則表示不用輸入,在前面無(wú)信息輸入的時(shí)候,可以用此語(yǔ)句完成信息的不輸入狀態(tài)。 </p><p> 4.4.3 登記類(lèi)模塊</p><p> 登記類(lèi)各個(gè)模塊所實(shí)現(xiàn)的功能比較繁多,每個(gè)模塊都比較大,但這些模塊都有一些共同的功能,而這些功能在登記類(lèi)模塊是一些核心功能,這些功能包括登記,保存和自動(dòng)生成各種票號(hào)。</
74、p><p> 自動(dòng)生成票號(hào)功能是隨著登記功能的實(shí)行而啟動(dòng)實(shí)現(xiàn)的。</p><p> 當(dāng)單擊“登記”按鈕時(shí),將清空表單上相關(guān)的內(nèi)容,做好接受用戶(hù)輸入信息的準(zhǔn)備。系統(tǒng)將自動(dòng)生成票號(hào),已入庫(kù)登記為例,入庫(kù)票號(hào)由系統(tǒng)日期,字母“rkd”,四位數(shù)字組成。首先判斷入庫(kù)登記表“Tabrkdj”中的入庫(kù)票號(hào)是否為空,如果為空,則入庫(kù)票號(hào)等于“系統(tǒng)日期+rkd+0001”,如果不為空,則入庫(kù)票號(hào)等于“系統(tǒng)日
75、期+rkd+四位數(shù)字編碼加1”。</p><p> 先選定表,這里選擇入庫(kù)登記表,將月份與日期的信息先提出</p><p> select tabrkdj</p><p> lmonth=padl(alltrim(str(month(date()),2)),2,'0') &&月份信息</p><p>
76、 lday=padl(alltrim(str(day(date()),2)),2,'0') &&日期信息</p><p> 在判斷入庫(kù)票號(hào)是否為空,如果為空,則以0001結(jié)尾</p><p> if empty(入庫(kù)票號(hào))</p><p> set cent on thisform.text2.value=<
77、;/p><p> alltrim(str(year(date()),4)+'-'+lmonth+'-'+lday+'rkd0001')</p><p> 如果入庫(kù)票號(hào)不為空,則需要先找出表中最大的票號(hào)</p><p> select max (入庫(kù)票號(hào)) from tabrkdj into array a <
78、;/p><p> 找到最大的票號(hào)后,需要在票號(hào)后面加1,形成所需的新票號(hào)。</p><p> cend=val(substr(a(1),14))+1 &&票號(hào)尾數(shù)+1</p><p> thisform.text2.value=alltrim(str(year(date()),4)+'-'+lmonth+'-
79、'+lday+'rkd'+padl(alltrim(str(cend,4)),4,'0')) &&形成新票號(hào)</p><p> thisform.text3.value=date()</p><p> 在將所輸入的信息進(jìn)行登記,由于在登記的時(shí)候不允許同時(shí)保存,和退出,但可以取消,因此要設(shè)置保存csave 和退出功能cexit無(wú)
80、效,而登記cadd 和取消cexit有效。</p><p> thisform.commandgroup1.cadd.enabled=.f.</p><p> thisform.commandgroup1.csave.enabled=.t.</p><p> thisform.commandgroup1.ccancel.enabled=.t.</p>
81、;<p> thisform.commandgroup1.cexit.enabled=.f.</p><p> 以上代碼可以實(shí)現(xiàn)登記按鈕的功能</p><p> 當(dāng)所填信息完成時(shí),我們需要單擊“保存”按鈕。仍以入庫(kù)登記為例,當(dāng)我們單擊“保存”按鈕時(shí),將臨時(shí)表中的入庫(kù)信息保存到入庫(kù)登記表“Tabrkdj”中,將臨時(shí)表中的入庫(kù)信息匯總后保存到入庫(kù)票號(hào)“Tabrkph”表中,
82、在庫(kù)存信息表“Tabkc”查找該藥品,如果找到,則修改庫(kù)存數(shù)量,如果沒(méi)找到,則在庫(kù)存信息中添加該藥品的信息,并清空臨時(shí)表。</p><p> 首先完成臨時(shí)表的信息保存到入庫(kù)登記表中 </p><p> thisform.grid1.recordsource='tabrkdj' &&賦數(shù)據(jù)源</p><p> selec
83、t tabrkdj &&選擇Tabrkdj工作區(qū)為當(dāng)前工作區(qū)</p><p> append from database\ltabrkdj &&把數(shù)據(jù)表中的記錄追加到當(dāng)前數(shù)據(jù)庫(kù)文件尾,其中l(wèi)tabrkdj為臨時(shí)入庫(kù)信息表</p><p> 在數(shù)據(jù)記錄的加入后,我們需要對(duì)臨時(shí)表中的信息進(jìn)行匯總</p><
84、p> select ltabrkdj &&選擇臨時(shí)入庫(kù)登記表為當(dāng)前工作區(qū)</p><p> pzs=reccount()</p><p> sum 數(shù)量 to ccount &&對(duì)數(shù)量字段求和</p><p> 完成了數(shù)據(jù)信息的匯總后,我們要將信息保存到入庫(kù)票號(hào)得表中,對(duì)數(shù)據(jù)的各種信息,先設(shè)
85、定其信息來(lái)源,如入庫(kù)票號(hào)從表單中的text2控件中獲得: rkph=thisform.text2.value 其它的信息仿照上述格式寫(xiě),最后將信息加入到入庫(kù)票號(hào)表tabrkph中</p><p> insert into database\tabrkph values(rkph,pzs,</p><p> ccount,yf,sf,wf,gysname,date1,jsfs,sfjq
86、,manager,jsr)</p><p> 最后就要完成對(duì)庫(kù)存信息的更新,首先要選擇工作區(qū):</p><p> select ltabrkdj</p><p> 接著,對(duì)表中的每一條信息和庫(kù)存信息表中的進(jìn)行比較,找出相同的藥品,在尋找信息的時(shí)候,以藥品編號(hào)作為索引,檢查藥品編號(hào)與倉(cāng)庫(kù)名稱(chēng)相同的信息:</p><p> go top
87、 &&將指針移動(dòng)到表的頂端</p><p> do while !eof() &&用循環(huán)的方法來(lái)進(jìn)行查找</p><p><b> select *;</b></p><p> from medicamentmanage!tabkc;</p><p> wh
88、ere 藥品編號(hào)==ltabrkdj.藥品編號(hào) AND 倉(cāng)庫(kù)名稱(chēng)==ltabrkdj.倉(cāng)庫(kù)名稱(chēng);</p><p> order by tabkc.藥品編號(hào); &&索引為藥品編號(hào)</p><p> into cursor lindeping &&將信息存入臨時(shí)表中</p><p> 如果庫(kù)存表中沒(méi)有相同的藥品,則直接將
89、信息存入到庫(kù)存表中 </p><p> if reccount()<1 && 沒(méi)有找到一樣的藥品</p><p> insert into tabkc values(ltabrkdj.藥品編號(hào),ltabrkdj.倉(cāng)庫(kù)名稱(chēng),ltabrkdj.藥品名稱(chēng),ltabrkdj.簡(jiǎn)稱(chēng),ltabrkdj.劑型,ltabrkdj.貨位,ltabrkdj
90、.產(chǎn)地,ltabrkdj.規(guī)格,ltabrkdj.包裝,ltabrkdj.單位,ltabrkdj.商標(biāo),ltabrkdj.批準(zhǔn)文號(hào),ltabrkdj.批號(hào),ltabrkdj.進(jìn)價(jià), ltabrkdj.數(shù)量,ltabrkdj.金額,ltabrkdj.保質(zhì)期) &&追加新記錄</p><p> 如果找到了一樣的藥品,則需要將原有的藥品信息表更新,使用update 語(yǔ)句來(lái)實(shí)現(xiàn)。 &
91、lt;/p><p> update tabkc set 藥品名稱(chēng)=ltabrkdj.藥品名稱(chēng),庫(kù)存數(shù)量=庫(kù)存數(shù)量+ltabrkdj.數(shù)量,單價(jià)=ltabrkdj.進(jìn)價(jià),庫(kù)存金額=庫(kù)存數(shù)量*單價(jià) where 藥品編號(hào)=ltabrkdj.藥品編號(hào) </p><p> 在執(zhí)行完操作后需要將臨時(shí)表清空 </p><p&g
92、t; use database\ltabrkdj exclusive &&以獨(dú)占方式打開(kāi)數(shù)據(jù)表</p><p> zap &&清空數(shù)據(jù)表</p><p> 上述三種功能是登記類(lèi)模塊的核心功能,只要實(shí)現(xiàn)了這三種功能,登記類(lèi)模塊的其他功能也就容易實(shí)現(xiàn)。</p>
93、<p> 4.4.4 結(jié)賬類(lèi)模塊</p><p> 顧名思義,結(jié)賬類(lèi)模塊所要實(shí)現(xiàn)的核心功能就是要結(jié)賬,本系統(tǒng)主要實(shí)現(xiàn)日結(jié)賬與月結(jié)賬功能。在這類(lèi)模塊中,用到最多的是匯總數(shù)據(jù)</p><p> 如語(yǔ)句:sum 金額to xiaoshou 可以實(shí)現(xiàn)匯總?cè)霂?kù)金額</p><p> 圖6. 日結(jié)賬界面圖</p><p> 對(duì)于
94、日結(jié)賬,我們要實(shí)現(xiàn)的功能方法與羅列數(shù)據(jù)到表單中的方法相似,我們用循環(huán)的方法一次加入數(shù)據(jù)信息: </p><p> select ltabrj &&選擇臨時(shí)日結(jié)表作為當(dāng)前工作區(qū)</p><p><b> go top</b></p><p> do while !eof() &&以循環(huán)方式進(jìn)行數(shù)據(jù)追加
95、</p><p> insert into tabrj values(ltabrj.操作員,ltabrj.銷(xiāo)售,ltabrj.銷(xiāo)售退貨,ltabrj.入庫(kù),ltabrj.入庫(kù)退貨,ltabrj.日期)</p><p> skip &&記錄指針向下移動(dòng)一條記錄</p><p><b> enddo</b></
96、p><p> 在輸入完數(shù)據(jù)后,我們依然要進(jìn)行清空表的操作</p><p> use database\ltabrj exclusive</p><p><b> zap</b></p><p> 而對(duì)于月結(jié)賬,在實(shí)現(xiàn)上述功能之前還需要對(duì)月份進(jìn)行一次選擇</p><p> 圖7. 月結(jié)賬選擇界
97、面</p><p> 在系統(tǒng)中添加一個(gè)名為Yuejie1的表單,其中需要添加一個(gè)Combo控件,用于提供結(jié)賬月份的列表,先要定義月結(jié)的開(kāi)始和結(jié)束時(shí)間,分別以startdate和enddate 來(lái)表示 </p><p> public startdate,enddate &&定義全部變量</p><p> 在對(duì)時(shí)間的定義中,開(kāi)始時(shí)間比
98、較容易把握,所選月份的第一天,但結(jié)束時(shí)間的把握要復(fù)雜一些,分為兩種情況:第一種情況為12月以外的月份,則結(jié)束時(shí)間是在開(kāi)始時(shí)間月份上+1,年份不變:</p><p> mm=alltrim(str(val(m)+1))</p><p><b> yy=y</b></p><p> 對(duì)于12月的結(jié)賬,則截止時(shí)間月份變?yōu)?月,年份+1:<
99、/p><p> if val(m)=12</p><p> mm=alltrim('01')</p><p> yy=alltrim(str(val(y)+1))</p><p><b> 最終時(shí)間的確定:</b></p><p> enddate=ctod(mm+'
100、/'+dd+'/'+yy)</p><p> 為了不重復(fù)對(duì)月進(jìn)行結(jié)賬,在本系統(tǒng)中,如果月結(jié)前發(fā)現(xiàn)已經(jīng)對(duì)本月進(jìn)行了結(jié)賬,則不再進(jìn)行此操作,要實(shí)現(xiàn)此項(xiàng)功能,必須以開(kāi)始日期作為索引:</p><p> select tabyjcsh</p><p> set order to 開(kāi)始日期 &&指定控制索引文件<
101、;/p><p> seek startdate &&快速查詢(xún)</p><p> if found()</p><p> messagebox('此月已結(jié)帳,不能再進(jìn)行月結(jié)操作!',48,'操作失??!') </p><p> 如果沒(méi)有發(fā)現(xiàn)開(kāi)始日期,月結(jié)賬進(jìn)入與日
102、結(jié)賬相似的表單。</p><p> 4.4.5 可修改類(lèi)模塊</p><p> 可修改類(lèi)模塊大部分是各類(lèi)數(shù)據(jù)信息系統(tǒng),這類(lèi)模塊機(jī)查詢(xún),登記,保存,修改等功能于一體。其中查詢(xún)功能與查詢(xún)類(lèi)模塊所實(shí)現(xiàn)的功能相似,而登記,修改功能與登記類(lèi)模塊所實(shí)現(xiàn)的功能相似,這些功能在前面已實(shí)現(xiàn),這里不再重復(fù),現(xiàn)在最重要的是實(shí)現(xiàn)修改功能。</p><p> 其實(shí),在進(jìn)行添加和保存功能
103、介紹時(shí),對(duì)如何實(shí)現(xiàn)這類(lèi)功能已經(jīng)有了介紹,例如要想在表單的text2 中進(jìn)行修改,只要系統(tǒng)執(zhí)行</p><p> thisform.commandgroup1.text2.enabled=.t.就可以了,同理如果=.f.就不能實(shí)現(xiàn)修改,這種語(yǔ)句可以用在表單中不能修改的控件上。</p><p> 還有一點(diǎn)要注意,在修改的過(guò)程中,表單上的功能件只有保存、取消能夠執(zhí)行,而修改這個(gè)按鈕在修改執(zhí)行
104、以后,就不能再執(zhí)行了,這一點(diǎn)很容易搞錯(cuò):</p><p> thisform.commandgroup1.cmodify.enabled=.f. &&設(shè)置修改無(wú)效</p><p> thisform.commandgroup1.cdel.enabled=.f. &&設(shè)置刪除無(wú)效</p><p> thisform.co
105、mmandgroup1.ccancel.enabled=.t. &&設(shè)置取消有效</p><p> thisform.commandgroup1.csave.enabled=.t. &&設(shè)置保存有效</p><p> thisform.commandgroup1.cadd.enabled=.f. &&設(shè)置添加無(wú)效<
106、/p><p> 由此可以實(shí)現(xiàn)修改的功能。</p><p> 4.5 其它模塊設(shè)計(jì)</p><p> 在本系統(tǒng)中除了上述幾種功能模塊外,還一些關(guān)于系統(tǒng)管理的模塊設(shè)計(jì)。</p><p> 4.5.1操作員管理</p><p> 對(duì)于操作員管理系統(tǒng),主要實(shí)現(xiàn)用戶(hù)的增加,刪除,修改以及密碼的設(shè)置。其中用戶(hù)的增加,刪除,修
107、改與可修改類(lèi)模塊實(shí)現(xiàn)的功能相似,對(duì)于“密碼修改確定”功能可以采用以下方法實(shí)現(xiàn):</p><p> 首先要將權(quán)限表置為當(dāng)前工作區(qū)</p><p> use database\tabpurview</p><p> 然后將操作員姓名作為索引</p><p> set order to 操作員姓名 </p><
108、p> 在表中查找當(dāng)前要修改密碼的人員是否為表中所含有的人員</p><p> seek cname &&快速查詢(xún)</p><p> set exact on &&字符精確比較</p><p> 如果所修改的人員不為表中所擁有的,顯示錯(cuò)誤:<
109、;/p><p> if alltrim(tabpurview.操作員姓名)!=cname</p><p> cMessagetext='操作員錯(cuò)誤,請(qǐng)重新輸入!'</p><p> 如果人員的名字無(wú)誤,則原密碼進(jìn)行比較,同樣若密碼不正確,同樣顯示修改失敗</p><p> if alltrim(tabpurview.密碼)
110、!=ppassword</p><p> cmessagetext='原密碼錯(cuò)誤,請(qǐng)重新輸入!'</p><p> 上述功能實(shí)現(xiàn)與前面所講的登陸確認(rèn)功能相似,當(dāng)身份的到確認(rèn)的時(shí)候,下面的功能就實(shí)現(xiàn)了密碼的修改確認(rèn)。</p><p> thisform.commandgroup1.adddel.enabled=.t.</p><
111、;p> thisform.commandgroup1.modify.enabled=.t.</p><p> thisform.commandgroup1.cok.enabled=.f.</p><p> thisform.text2.enabled=.t.</p><p> thisform.text3.enabled=.t.</p>
112、<p> thisform.text1.enabled=.f.</p><p> thisform.combo1.enabled=.f. </p><p> thisform.text2.setfocus</p><p> 這種語(yǔ)句所實(shí)現(xiàn)的功能就是修改thisform后面的控件的內(nèi)容</p><p> 4.5
113、.2權(quán)限管理設(shè)計(jì)</p><p> 為了保護(hù)本系統(tǒng)的各用戶(hù)的利益,保證數(shù)據(jù)的安全性,本系統(tǒng)采用了權(quán)限管理。也就是不同的用戶(hù)擁有不同的權(quán)限。各自用戶(hù)只能進(jìn)入權(quán)限規(guī)定的功能模塊。</p><p> 圖8. 權(quán)限管理界面</p><p> 本系統(tǒng)的權(quán)限管理共分四個(gè)等級(jí),分別為1,2,3,4級(jí)別,等級(jí)1的級(jí)別最高,屬于系統(tǒng)管理員等級(jí),且只有一個(gè),能使用各種功能系統(tǒng)。等
114、級(jí)2不能實(shí)現(xiàn)系統(tǒng)管理功能,等級(jí)3不能使用基礎(chǔ)信息管理與系統(tǒng)管理。這三類(lèi)等級(jí)的人員權(quán)限均不可改。等級(jí)4的人員權(quán)限由系統(tǒng)管理員進(jìn)行設(shè)置,可以設(shè)置與等級(jí)1一樣的權(quán)限。</p><p> 因此有可能出現(xiàn)等級(jí)為4的人員,卻能實(shí)現(xiàn)等級(jí)2和3都不能使用的功能模塊。</p><p> 為了系統(tǒng)的安全性,權(quán)限等級(jí)為1的只能有一個(gè),當(dāng)再設(shè)置權(quán)限的時(shí)候發(fā)現(xiàn)設(shè)置成了權(quán)限1,則系統(tǒng)自動(dòng)提示信息,拒絕操作:<
115、;/p><p> case val(alltrim(thisform.text1.value))=1 &&設(shè)置權(quán)限等級(jí)1</p><p> thisform.resize &&執(zhí)行表單的Resize事件</p><p> messagebox('級(jí)別1為系統(tǒng)管理員,不能有多個(gè),請(qǐng)重新輸入!',48,
116、39;權(quán)限管理')</p><p> thisform.text1.value='' &&拒絕操作</p><p> 對(duì)于設(shè)置權(quán)限為非1的人,可以用update語(yǔ)句來(lái)設(shè)置表中的功能模塊的是用權(quán)限,設(shè)置為t 為可以使用,設(shè)置為f為不能使用</p><p> locate for 操作員姓名=czyname</p&g
117、t;<p> do case &&條件語(yǔ)句</p><p> case crand='2' &&等級(jí)為2</p><p> update tabpurview set 權(quán)限級(jí)別=crand,銷(xiāo)售管理=.t., 進(jìn)貨管理=.t.,庫(kù)房管理=.t.,
118、調(diào)貨管理=.t.,財(cái)務(wù)管理=.t.,帳目管理=.t.,基礎(chǔ)信息管理=.t.,系統(tǒng)管理=.f. where 操作員姓名=czyname</p><p> case crand='3' &&等級(jí)為3</p><p> update tabpurview set 權(quán)限級(jí)別=crand,銷(xiāo)售管理=.t., 進(jìn)貨管理=.t.,庫(kù)房
119、管理=.t.,調(diào)貨管理=.t.,財(cái)務(wù)管理=.t.,帳目管理=.t.,基礎(chǔ)信息管理=.f.,系統(tǒng)管理=.f. where 操作員姓名=czyname</p><p> case crand='4' &&等級(jí)為4</p><p> update tabpurview set 權(quán)限級(jí)別=crand,銷(xiāo)售管理=cxsgl, 進(jìn)貨管
120、理=cjhgl,庫(kù)房管理=ckfgl,調(diào)貨管理=cthgl,財(cái)務(wù)管理=ccwgl,帳目管理=czmgl,基礎(chǔ)信息管理=cjcinfo,系統(tǒng)管理=csysgl where 操作員姓名=czyname</p><p><b> endcase</b></p><p> 為了能夠?qū)崿F(xiàn)權(quán)限改動(dòng)的功能,表單上列出了各種管理模塊的復(fù)選框,只要在所選功能的前面打上勾,就能實(shí)現(xiàn)這
121、項(xiàng)功能,而在選擇功能的時(shí)候,只有確定和取消按鈕有效,由于有8個(gè)系統(tǒng)功能,若分別寫(xiě)有效與無(wú)效代碼太麻煩,可用下列方法簡(jiǎn)化</p><p> 在“銷(xiāo)售管理”的控件中添加</p><p> thisform.command3.enabled=.t. && 取消有效</p><p> thisform.command2.enabled=.f.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流管理系統(tǒng)畢業(yè)論文
- 物流管理系統(tǒng)畢業(yè)論文
- 物流管理畢業(yè)論文---醫(yī)藥逆向物流運(yùn)作模式探析
- 畢業(yè)論文---貨運(yùn)物流管理系統(tǒng)
- 物流管理畢業(yè)論文
- 物流管理畢業(yè)論文
- 物流管理畢業(yè)論文
- 物流管理畢業(yè)論文
- 畢業(yè)論文——asp物流管理系統(tǒng)設(shè)計(jì)
- 畢業(yè)論文——asp物流管理系統(tǒng)設(shè)計(jì)
- 現(xiàn)代物流管理發(fā)展物流管理畢業(yè)論文
- 物流管理倉(cāng)儲(chǔ)畢業(yè)論文
- 優(yōu)秀物流管理畢業(yè)論文
- 大專(zhuān)物流管理畢業(yè)論文
- 物流管理專(zhuān)業(yè)畢業(yè)論文
- 物流管理畢業(yè)論文3
- 物流管理專(zhuān)業(yè)畢業(yè)論文
- 物流管理專(zhuān)業(yè)畢業(yè)論文
- 大專(zhuān)物流管理畢業(yè)論文
- 物流管理專(zhuān)業(yè)畢業(yè)論文
評(píng)論
0/150
提交評(píng)論