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