




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 引言隨著我國(guó)市場(chǎng)經(jīng)濟(jì)的蓬勃發(fā)展和人們對(duì)物質(zhì)水平需求的增加,各行各業(yè)都處于一個(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)效率。本庫(kù)存管理系統(tǒng)的開發(fā)主要包括前端應(yīng)用程序以及后臺(tái)數(shù)據(jù)庫(kù)的建立和維護(hù)兩個(gè)方面。經(jīng)過分析,我選用myeclipse來開發(fā)系統(tǒng),利用其提供的各種面向?qū)ο蟮拈_發(fā)工具,來操縱數(shù)據(jù)庫(kù)。本論文正文分為五部分。第一部分介紹了開發(fā)庫(kù)存管理系統(tǒng)的必要性以及如何開發(fā),并簡(jiǎn)要概述了myeclipse和SQL Server 2000。第二部分介紹系統(tǒng)開發(fā)前的準(zhǔn)備,包括
2、系統(tǒng)的需求說明及系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)和詳細(xì)設(shè)計(jì)。第三部分并著重闡述了系統(tǒng)主要功能模塊的具體實(shí)現(xiàn)。第四部分是系統(tǒng)開發(fā)的后期工作,講到了該系統(tǒng)的不完善之處及本次系統(tǒng)開發(fā)過程中一些切身的感受與想法,是我做這次課程設(shè)計(jì)的心得體會(huì)系統(tǒng)分析(一)選題的背景企業(yè)的庫(kù)存物資管理往往是很復(fù)雜、很繁瑣的。由于所掌握的物資種類眾多,訂貨、管理、發(fā)放的渠道各有差異,各個(gè)企業(yè)之間的管理體制不盡相同,各類統(tǒng)計(jì)報(bào)表繁多,因此倉(cāng)庫(kù)的庫(kù)存管理必須編制一套庫(kù)存管理信息系統(tǒng),實(shí)現(xiàn)計(jì)算機(jī)化操作,而且必須根據(jù)企業(yè)的具體情況制定相應(yīng)的方案。 由于超市的行業(yè)特殊性,產(chǎn)品種類繁多,業(yè)務(wù)量巨大,若仍然采用人工記賬的方式,必然不能滿足企業(yè)的需求,企
3、業(yè)需要利用計(jì)算機(jī)來進(jìn)行庫(kù)存管理,因此需要構(gòu)造一個(gè)庫(kù)存管理系統(tǒng)。一個(gè)完整的企業(yè)物資供應(yīng)管理系統(tǒng)應(yīng)包括采購(gòu)計(jì)劃管理,合同收托管理、倉(cāng)庫(kù)庫(kù)存管理、定額管理、統(tǒng)計(jì)管理、財(cái)務(wù)管理等模塊。其中倉(cāng)庫(kù)的庫(kù)存管理是整個(gè)物資供應(yīng)管理系統(tǒng)的核心。因此有必要開發(fā)一套獨(dú)立的庫(kù)存管理系統(tǒng)來提高企業(yè)工作效率, 而所使用的這套庫(kù)存管理系統(tǒng)是企業(yè)生產(chǎn)經(jīng)營(yíng)管理活動(dòng)中的核心,此系統(tǒng)必須可以用來控制合理的庫(kù)存費(fèi)用、適時(shí)適量的庫(kù)存數(shù)量,使企業(yè)生產(chǎn)活動(dòng)效率最大化。通過對(duì)這些情況的仔細(xì)調(diào)查,我開發(fā)了下面的倉(cāng)庫(kù)庫(kù)存管理系統(tǒng)。(二)系統(tǒng)需求分析 系統(tǒng)需求分析就是在用戶需求調(diào)研的基礎(chǔ)上,確定系統(tǒng)的總體結(jié)構(gòu)方案,完成相應(yīng)的需求分析報(bào)告。在確定系統(tǒng)
4、的總體結(jié)構(gòu)方案過程中,包括確定應(yīng)用程序的結(jié)構(gòu)、系統(tǒng)開發(fā)環(huán)境和開發(fā)工具的選擇。1.應(yīng)用程序結(jié)構(gòu)確定 從用戶應(yīng)用角度來看,可把應(yīng)用程序系統(tǒng)的組成部分分成數(shù)據(jù)存儲(chǔ)層、業(yè)務(wù)處理層和界面表示層等3個(gè)層次,而應(yīng)用程序結(jié)構(gòu)可歸納為:集中式應(yīng)用程序結(jié)構(gòu)、單機(jī)板應(yīng)用程序結(jié)構(gòu)、多層服務(wù)器應(yīng)用程序結(jié)構(gòu)、瀏覽器服務(wù)器應(yīng)用程序結(jié)構(gòu)、客戶機(jī)服務(wù)器應(yīng)用程序結(jié)構(gòu)等5種類型。 本庫(kù)存管理系統(tǒng)就采用了單機(jī)版應(yīng)用程序結(jié)構(gòu),將數(shù)據(jù)庫(kù)和應(yīng)用程序置于一臺(tái)機(jī)器上,這樣更加節(jié)約成本,適合中小規(guī)模的超市使用。用戶可以輕松將其拷貝到其他計(jì)算機(jī)上,可以同時(shí)運(yùn)行程序。2.確定系統(tǒng)開發(fā)環(huán)境 由于大多數(shù)公司內(nèi)部使用的計(jì)算機(jī)平臺(tái)都是基于Windows環(huán)境
5、的。為了降低系統(tǒng)成本,應(yīng)最大程度地利用現(xiàn)有的資源、兼容現(xiàn)有的環(huán)境,可確定使用下面的開發(fā)環(huán)境: 數(shù)據(jù)庫(kù):Microsoft SQL Server 2000; 前端開發(fā)工具:myeclipse;3開發(fā)工具的選擇可視化程序設(shè)計(jì)是一種全新的程序設(shè)計(jì)方法,全面采用面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù),使用事件驅(qū)動(dòng)機(jī)制進(jìn)行程序設(shè)計(jì)。利用可視化開發(fā)工具可以快速、高效地開發(fā)應(yīng)用程序??梢暬拈_發(fā)工具很多。myeclipse是集成開發(fā)環(huán)境,是目前最流行的 Windows 平臺(tái)應(yīng)用程序開發(fā)環(huán)境。它是把代碼的編寫、程序的調(diào)試、編譯、運(yùn)行以及其他的相關(guān)操作都集成在一起的“編程工具”。 作用是程序員通過它這個(gè)平臺(tái),利用編程語(yǔ)言來寫程
6、序,調(diào)試,運(yùn)行。SQL Server 2000 是Microsoft 公司推出的SQL Server 數(shù)據(jù)庫(kù)管理系統(tǒng)。該版本繼承了SQL Server 7.0 版本的優(yōu)點(diǎn)同時(shí)又比它增加了許多更先進(jìn)的功能,具有使用方便,可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點(diǎn),可跨越從運(yùn)行Microsoft Windows 98 的膝上型電腦到運(yùn)行Microsoft Windows 2000 的大型多處理器的服務(wù)器等多種平臺(tái)使用。經(jīng)分析,本庫(kù)存管理系統(tǒng)選用myeclipse來設(shè)計(jì)界面,選用SQL Server 2000來建立后臺(tái)數(shù)據(jù)庫(kù)。(三)系統(tǒng)的開發(fā)及功能描述1.開發(fā)方法的選擇信息系統(tǒng)的開發(fā)是一項(xiàng)比較復(fù)雜的工作,
7、因此我們必須選用科學(xué)有效的開發(fā)方法。本系統(tǒng)的開發(fā)采用了生命周期法。在系統(tǒng)設(shè)計(jì)時(shí)遵循系統(tǒng)調(diào)查研究、系統(tǒng)分析、系統(tǒng)設(shè)計(jì)和系統(tǒng)實(shí)施四個(gè)主要階段進(jìn)行設(shè)計(jì),而在具體的設(shè)計(jì)上,則通過在系統(tǒng)的使用及對(duì)系統(tǒng)了解的不斷加深中,對(duì)某一部分或幾部分進(jìn)行重新分析、設(shè)計(jì)、實(shí)施,使系統(tǒng)逐步完善。2.系統(tǒng)功能描述及系統(tǒng)安全性本庫(kù)存管理系統(tǒng)是一套對(duì)貨品入庫(kù)、出庫(kù)、庫(kù)存進(jìn)行全面管理的系統(tǒng)。在管理內(nèi)容上,它的主要功能包括:進(jìn)貨管理:進(jìn)行填寫貨品信息,貨品采購(gòu)入庫(kù),入庫(kù)單據(jù)的填寫和修改最低庫(kù)存量。 出貨管理:進(jìn)行貨品出庫(kù),出貨單據(jù)的填寫和獲取采購(gòu)員信息。信息查詢:貨品信息查詢,庫(kù)存信息查詢,入庫(kù)、出庫(kù)單據(jù)查詢,日?qǐng)?bào)表、月報(bào)表查詢。
8、統(tǒng)計(jì)報(bào)表:完整的日?qǐng)?bào)表、月報(bào)表統(tǒng)計(jì)查詢功能,每張單據(jù)每次業(yè)務(wù)金額都可以清楚地反映。系統(tǒng)管理:身份驗(yàn)證,修改本人密碼,注冊(cè)用戶,修改刪除用戶。由于庫(kù)存管理系統(tǒng)包含比較重要的信息,因此,在系統(tǒng)設(shè)計(jì)時(shí)除了注重用戶的需求,還要保證系統(tǒng)的安全性和一致性,體現(xiàn)如下:(1)安全性:本系統(tǒng)中共分為三類不同的用戶,分別具有不同的權(quán)限。(2)一致性:系統(tǒng)的數(shù)據(jù)要保證一致性、準(zhǔn)確性,當(dāng)某一數(shù)據(jù)庫(kù)中記錄發(fā)生改變時(shí),與之相關(guān)聯(lián)的數(shù)據(jù)庫(kù)也隨之變化。(四)系統(tǒng)邏輯模型本系統(tǒng)的邏輯模型以系統(tǒng)流圖為主要描述工具。我們用不同的符號(hào)代表這四個(gè)元素:表示數(shù)據(jù)流;表示文件(數(shù)據(jù)存儲(chǔ));表示加工;出貨結(jié)果出貨結(jié)果出貨管理進(jìn)貨管理采購(gòu)員表
9、倉(cāng)庫(kù)信息表 操作員個(gè)人信息表客戶信息表采購(gòu)員表查詢結(jié)果修改結(jié)果修改要求信息查詢操作員個(gè)人信息表密碼用戶編號(hào)用戶編號(hào)密碼數(shù)據(jù)維護(hù)信息查詢系統(tǒng)管理員倉(cāng)庫(kù)管理員進(jìn)貨管理身份驗(yàn)證身份驗(yàn)證操作員個(gè)人信息表系統(tǒng)管理員庫(kù)存管理系統(tǒng)出貨管理進(jìn)貨結(jié)果月報(bào)表統(tǒng)計(jì)報(bào)表統(tǒng)計(jì)統(tǒng)計(jì)結(jié)果采購(gòu)員表庫(kù)存信息表表貨品信息表表庫(kù)存信息表表日?qǐng)?bào)表經(jīng)理身份驗(yàn)證用戶編號(hào)密碼信息查詢經(jīng)理貨品信息表庫(kù)存信息表入庫(kù)單出庫(kù)單信息查詢查詢結(jié)果日?qǐng)?bào)表月報(bào)表操作員個(gè)人信息表二、系統(tǒng)設(shè)計(jì)(一)系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)1.系統(tǒng)功能分析本庫(kù)存管理系統(tǒng)需要完成的功能有:(1)庫(kù)存管理的各種信息的輸入,包括入庫(kù)、出庫(kù)、貨品信息的輸入等。 (2)庫(kù)存管理的各種信息的查詢
10、、修改和維護(hù)。 (3)入庫(kù)單、出庫(kù)單的生成,日?qǐng)?bào)表、月報(bào)表的生成。 (4)在貨品庫(kù)存中加入所允許的最低庫(kù)存字段,對(duì)所有庫(kù)存物資實(shí)現(xiàn)監(jiān)控和報(bào)警。 2系統(tǒng)功能模塊圖根據(jù)系統(tǒng)功能分析,畫出系統(tǒng)功能模塊圖如下:庫(kù)存管理系統(tǒng)庫(kù)存管理系統(tǒng)身份驗(yàn)證注冊(cè)用戶修改刪除用戶修改密碼信息查詢報(bào)表統(tǒng)計(jì)進(jìn)貨管理出貨管理系統(tǒng)管理入庫(kù)單填寫填寫貨品信息修改最低庫(kù)存出庫(kù)單填寫獲取采購(gòu)員信息日?qǐng)?bào)表月報(bào)表庫(kù)存查詢貨品查詢報(bào)表查詢(二)數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)在一個(gè)信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的好壞將直接對(duì)應(yīng)用系統(tǒng)的效率以及實(shí)現(xiàn)的效果產(chǎn)生影響。數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)貨品貨品采購(gòu)倉(cāng)庫(kù)客戶存儲(chǔ)訂購(gòu)采購(gòu)員n1mnn1貨品編號(hào)規(guī)格
11、型號(hào)單位貨品名稱客戶編號(hào)客戶名稱倉(cāng)庫(kù)名稱負(fù)責(zé)人聯(lián)系電話采購(gòu)員編號(hào)采購(gòu)的貨品類別圖2-2庫(kù)存管理系統(tǒng)ER圖(三)系統(tǒng)功能模塊的詳細(xì)設(shè)計(jì)本庫(kù)存管理系統(tǒng)是本著用戶操作界面友好、清晰、易學(xué)易用的原則進(jìn)行設(shè)計(jì)的。1身份驗(yàn)證模塊的設(shè)計(jì)庫(kù)存管理系統(tǒng)庫(kù)存管理系統(tǒng)用戶編號(hào):密碼:退出登陸圖2-3用戶登錄模塊界面設(shè)計(jì) 該模塊的流程圖如圖2-4所示:是是否用 戶登 錄是否為合法用戶?否選擇身份判斷用戶類型進(jìn)入系統(tǒng)開 始結(jié) 束此外,對(duì)一個(gè)完整的系統(tǒng)而言,用戶是應(yīng)該可以修改自己的密碼的,因此系統(tǒng)中應(yīng)該具有修改密碼的功能,提高數(shù)據(jù)的安全性。請(qǐng)輸入新密碼請(qǐng)輸入新密碼請(qǐng)確認(rèn)新密碼確認(rèn)取消圖2-5修改密碼界面設(shè)計(jì)2系統(tǒng)主界面的
12、實(shí)現(xiàn) 系統(tǒng)管理系統(tǒng)管理刪除報(bào)表查詢修改信息退出系統(tǒng)圖2-6主界面(admin)設(shè)計(jì)修改密碼修改密碼進(jìn)貨管理出貨管理報(bào)表統(tǒng)計(jì)圖2-7主界面(倉(cāng)管)設(shè)計(jì)修改密碼修改密碼信息查詢退出系統(tǒng)圖2-8主界面(經(jīng)理)設(shè)計(jì) 3進(jìn)貨管理模塊的實(shí)現(xiàn) 進(jìn)貨管理模塊包括填寫貨品信息、入庫(kù)單、修改最低庫(kù)存三個(gè)子模塊。(1)填寫貨品信息填寫貨品信息填寫貨品信息貨品編號(hào)貨品名稱單位貨品類別規(guī)格型號(hào)顏色確定取消(2)入庫(kù)單 入庫(kù)單入庫(kù)單憑證編號(hào)貨品編號(hào)數(shù)量庫(kù)別進(jìn)貨單價(jià)入庫(kù)時(shí)間確定取消采購(gòu)人編號(hào)制單人(3)修改最低庫(kù)存修改最低庫(kù)存修改最低庫(kù)存貨品編號(hào)最低庫(kù)存確定取消 4出庫(kù)管理模塊的實(shí)現(xiàn)出庫(kù)管理包括填寫出庫(kù)單,獲取采購(gòu)員信息兩
13、個(gè)子模塊。(1)出庫(kù)單出庫(kù)單出庫(kù)單憑證編號(hào)貨品編號(hào)數(shù)量庫(kù)別出貨單價(jià)出庫(kù)時(shí)間確定取消客戶編號(hào)制單人(2)獲取采購(gòu)員信息獲取采購(gòu)員信息獲取采購(gòu)員信息貨品編號(hào)搜索的信息:確定搜索5.報(bào)表統(tǒng)計(jì)模塊的實(shí)現(xiàn)本系統(tǒng)的報(bào)表分為日?qǐng)?bào)表和月報(bào)表,日?qǐng)?bào)表在添加入庫(kù)單和出庫(kù)單時(shí)就已經(jīng)自動(dòng)添加進(jìn)數(shù)據(jù)庫(kù)中的日?qǐng)?bào)表了,所以在此只需再手動(dòng)添加月報(bào)表。三、系統(tǒng)實(shí)現(xiàn)系統(tǒng)實(shí)現(xiàn)包括用戶需求實(shí)現(xiàn),系統(tǒng)界面實(shí)現(xiàn)和數(shù)據(jù)庫(kù)實(shí)現(xiàn)三方面。1用戶登錄界面用戶通過該界面登錄進(jìn)入系統(tǒng)。圖3-1系統(tǒng)登錄界面 3.1 系統(tǒng)管理修改密碼界面 以下是注冊(cè)用戶界面:系統(tǒng)管理員注冊(cè)用戶界面注冊(cè)前數(shù)據(jù)庫(kù)中操作員個(gè)人信息表如圖3-7:注冊(cè)前的操作員個(gè)人信息表數(shù)據(jù)庫(kù)
14、注冊(cè)用戶成功界面:系統(tǒng)管理員修改刪除用戶界 刪除報(bào)表界面如下圖:系統(tǒng)管理員刪除報(bào)表界面 3.2 進(jìn)貨管理 倉(cāng)庫(kù)管理員填寫入庫(kù)單界面如下圖:倉(cāng)庫(kù)管理員填寫入庫(kù)單界面 界面自動(dòng)跳轉(zhuǎn)到如下圖:倉(cāng)庫(kù)管理員填寫入庫(kù)單界面?zhèn)}庫(kù)管理員填寫貨品信息界面入庫(kù)單填寫的信息會(huì)自動(dòng)加入入庫(kù)單數(shù)據(jù)庫(kù),并且更改庫(kù)存信息表和日?qǐng)?bào)表中的相關(guān)信息。未添加信息前的入庫(kù)單入庫(kù)單未添加前的庫(kù)存信息表 填寫完入庫(kù)單的圖如下: 四、系統(tǒng)開發(fā)總結(jié)此次庫(kù)存管理系統(tǒng)開發(fā)讓我學(xué)習(xí)到很多知識(shí),現(xiàn)總結(jié)如下:系統(tǒng)開發(fā)的過程中,我深刻體會(huì)到了以前上課老師經(jīng)常提起的一個(gè)問題,那就是:一個(gè)系統(tǒng)開發(fā)的過程中編碼不是最重要的,重要的是對(duì)系統(tǒng)進(jìn)行分析以及建立恰當(dāng)
15、的系統(tǒng)模型。在該庫(kù)存管理系統(tǒng)設(shè)計(jì)中,從系統(tǒng)的實(shí)用性出發(fā),我能夠在開發(fā)該系統(tǒng)時(shí)站在用戶的角度看問題,本著用戶操作界面友好、清晰、易學(xué)易用的原則進(jìn)行設(shè)計(jì)??傊?,這次的系統(tǒng)開發(fā),實(shí)現(xiàn)了我自己動(dòng)手完成一個(gè)系統(tǒng)開發(fā)的目標(biāo),也學(xué)習(xí)到很多東西,不只是實(shí)踐經(jīng)驗(yàn),還有一些做事的道理:在工作時(shí),要盡量把要遇到的問題考慮周全,提前做好準(zhǔn)備,那樣就不會(huì)在遇到問題時(shí)有措手不及的感覺。參考文獻(xiàn):1 梅玫: 物資庫(kù)存的計(jì)算機(jī)管理,黑龍江科技信息,2009年7月25日.2 申冠楠,郭宗義百貨店商品的庫(kù)存管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),現(xiàn)代商業(yè),2010年1月18日.3 劉志堅(jiān): 中小制造企業(yè)庫(kù)存管理系統(tǒng)的開發(fā)與設(shè)計(jì),中北大學(xué),2009
16、年4月25日.4 美c.j.date:數(shù)據(jù)庫(kù)系統(tǒng)導(dǎo)論(英文版第七版),機(jī)械工業(yè)出版社,2002年.5 鄧良松:軟件工程,西安電子科技大學(xué)出版社,2004年.6 鄧遠(yuǎn)志:數(shù)據(jù)庫(kù)設(shè)計(jì)方法,南昌教育學(xué)院學(xué)報(bào),2005年第20卷第4期.7薩師煊等編著 ,數(shù)據(jù)庫(kù)系統(tǒng)概論 , 高等教育出版社, 2000年.8東方人華主編,JSP范例入門與提高, 清華大學(xué)出版社, 2003年.9李佳, 付強(qiáng), 丁寧等編著,java開發(fā)技術(shù)大全, 清華大學(xué)出版社, 2009年. 10歐立奇,康祥順,馬煜編著,java案例開發(fā)集錦 , 電子工業(yè)出版社 ,2005年.11 鄺孔武,王曉敏編著,信息系統(tǒng)分析與設(shè)計(jì),清華大學(xué)出版社,
17、1999年.12 史濟(jì)民:軟件工程-原理、方法與應(yīng)用,高等教育出版社,2002年. 13 薛華成:管理信息系統(tǒng),清華大學(xué)出版社,1999年. 14 張金城:管理信息系統(tǒng),北京大學(xué)出版社,2004年.15馬士華:供應(yīng)鏈管理,機(jī)械工業(yè)出版社,2000年.16李玉良,邵新宇:CPFR供應(yīng)鏈庫(kù)存管理技術(shù)的新趨勢(shì),機(jī)械設(shè)計(jì)與制造工程,2001年第30卷第3期.附 錄 源代碼:import #*;import danjuchaxun.*;import javax.swing.ImageIcon;import javax.swing.JLabel;import javax.swing.JPane
18、l;import javax.swing.JFrame;import javax.swing.JButton;import java.awt.Rectangle;public class Danjuchaxun extends JFrame private static final long serialVersionUID = 1L;ImageIcon beijing = new ImageIcon(pic/danjuchaxunbeijing.jpg);private JPanel jContentPane = null; private JButton jButton = null;pr
19、ivate JButton jButton1 = null;private JButton jButton2 = null;private JButton jButton3 = null;private JButton jButton4 = null;private JButton jButton5 = null;private JButton jButton6 = null;private JButton jButton7 = null;private JButton jButton8 = null;private JButton jButton9 = null;private JButto
20、n jButton10 = null;private JButton jButton11 = null;/private JButton jButton12 = null;private JButton jButton13 = null;JLabel backgroundall = new JLabel(beijing);/* * This is the default constructor */public Danjuchaxun() super();initialize();/* * This method initializes this * return void */private
21、 void initialize() this.setBounds(233, 218, 156, 303);this.setContentPane(getJContentPane();this.setTitle(單據(jù)查詢);this.setUndecorated(true);this.setResizable(false);this.getLayeredPane().add(backgroundall, new Integer(Integer.MIN_VALUE);backgroundall.setBounds(0, 0, beijing.getIconWidth(), beijing.get
22、IconHeight();this.setVisible(true);/* * This method initializes jContentPane * return javax.swing.JPanel */private JPanel getJContentPane() if (jContentPane = null) jContentPane = new JPanel();jContentPane.setLayout(null);jContentPane.setOpaque(false);jContentPane.add(getJButton(), null);jContentPan
23、e.add(getJButton1(), null);jContentPane.add(getJButton2(), null);jContentPane.add(getJButton3(), null);jContentPane.add(getJButton4(), null);jContentPane.add(getJButton5(), null);jContentPane.add(getJButton6(), null);jContentPane.add(getJButton7(), null);jContentPane.add(getJButton8(), null);jConten
24、tPane.add(getJButton9(), null);jContentPane.add(getJButton10(), null);jContentPane.add(getJButton11(), null);/jContentPane.add(getJButton12(), null);jContentPane.add(getJButton13(), null);return jContentPane;/* * This method initializes jButton * return javax.swing.JButton */private JButton getJButt
25、on() if (jButton = null) jButton = new JButton();jButton.setBounds(new Rectangle(8, 8, 140, 22);jButton.setText(進(jìn)貨單據(jù)查詢);jButton.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) new ChaxundanjuJH(););return jButton;/* * This method initia
26、lizes jButton1 * return javax.swing.JButton */private JButton getJButton1() if (jButton1 = null) jButton1 = new JButton();jButton1.setBounds(new Rectangle(8, 30, 140, 22);jButton1.setText(出貨單據(jù)查詢);jButton1.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.even
27、t.ActionEvent e) new ChaxundanjuCH(););return jButton1;/* * This method initializes jButton2 * return javax.swing.JButton */private JButton getJButton2() if (jButton2 = null) jButton2 = new JButton();jButton2.setBounds(new Rectangle(8, 52, 140, 22);jButton2.setText(退貨出庫(kù)單據(jù)查詢);jButton2.addActionListen
28、er(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) new ChaxundanjuTHCK(););return jButton2;/* * This method initializes jButton3 * return javax.swing.JButton */private JButton getJButton3() if (jButton3 = null) jButton3 = new JButton();jButton3.setBounds
29、(new Rectangle(8, 74, 140, 22);jButton3.setText(客戶退貨單據(jù)查詢);jButton3.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) new ChaxundanjuTHRK(););return jButton3; This method initializes jButton4* return javax.swing.JButton */private JButton g
30、etJButton4() if (jButton4 = null) jButton4 = new JButton();jButton4.setBounds(new Rectangle(8, 96, 140, 22);jButton4.setText(庫(kù)存調(diào)撥單據(jù)查詢);jButton4.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) new ChaxundanjuDB();return jButton4;* This m
31、ethod initializes jButton5 * return javax.swing.JButton */private JButton getJButton5() if (jButton5 = null) jButton5 = new JButton();jButton5.setBounds(new Rectangle(8, 118, 140, 22);jButton5.setText(供貨商統(tǒng)計(jì));jButton5.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(j
32、ava.awt.event.ActionEvent e) new TongjiGHS();return jButton5;* This method initializes jButton6 * return javax.swing.JButton */private JButton getJButton6() if (jButton6 = null) jButton6 = new JButton();jButton6.setBounds(new Rectangle(8, 140, 140, 22);jButton6.setText(客戶統(tǒng)計(jì));jButton6.addActionListen
33、er(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) new TongjiKH();return jButton6;* This method initializes jButton7 * return javax.swing.JButton */private JButton getJButton7() if (jButton7 = null) jButton7 = new JButton();jButton7.setBounds(new Rectang
34、le(8, 162, 140, 22);jButton7.setText(庫(kù)存統(tǒng)計(jì));jButton7.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) new TongjiKC();return jButton7;/* * This method initializes jButton8 * return javax.swing.JButton */private JButton getJButton8() if (jB
35、utton8 = null) jButton8 = new JButton();jButton8.setBounds(new Rectangle(8, 184, 140, 22);jButton8.setText(采購(gòu)統(tǒng)計(jì));jButton8.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) new TongjiCG();return jButton8;* This method initializes jButton9
36、* return javax.swing.JButton */private JButton getJButton9() if (jButton9 = null) jButton9 = new JButton();jButton9.setBounds(new Rectangle(8, 206, 140, 22);jButton9.setText(出貨統(tǒng)計(jì));jButton9.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e)
37、 new TongjiCH(););return jButton9; * This method initializes jButton10 return javax.swing.JButton private JButton getJButton10() if (jButton10 = null) jButton10 = new JButton();jButton10.setBounds(new Rectangle(8, 228, 140, 22);jButton10.setText(退貨出庫(kù)統(tǒng)計(jì));jButton10.addActionListener(new java.awt.event
38、.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) new TongjiTHCK();return jButton10;* This method initializes jButton11 * return javax.swing.JButton */private JButton getJButton11() if (jButton11 = null) jButton11 = new JButton();jButton11.setBounds(new Rectangle(8, 250, 14
39、0, 22);jButton11.setText(客戶退貨統(tǒng)計(jì));jButton11.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) new TongjiTHRK(););return jButton11; * This method initializes jButton12 * return javax.swing.JButton */*private JButton getJButton12() if (jButt
40、on12 = null) jButton12 = new JButton();jButton12.setBounds(new Rectangle(8, 272, 140, 22);jButton12.setText(統(tǒng)計(jì));return jButton12;*/* This method initializes jButton13 * return javax.swing.JButton */private JButton getJButton13() if (jButton13 = null) jButton13 = new JButton();jButton13.setBounds(new
41、 Rectangle(8, 272, 140, 22);jButton13.setText(退出);jButton13.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(java.awt.event.ActionEvent e) dispose(););return jButton13 / jve:decl-index=0:visual-constraint=10,10附錄資料:不需要的可以自行刪除C語(yǔ)言編譯器的設(shè)計(jì)與實(shí)現(xiàn) 我們?cè)O(shè)計(jì)的編譯程序涉及到編譯五個(gè)階段中的三個(gè),即詞法分析器
42、、語(yǔ)法分析器和中間代碼生成器。編譯程序的輸出結(jié)果包括詞法分析后的二元式序列、變量名表、狀態(tài)棧分析過程顯示及四元式序列程序,整個(gè)編譯程序分為三部分:(1) 詞法分析部分(2) 語(yǔ)法分析處理及四元式生成部分 (3) 輸出顯示部分一詞法分析器設(shè)計(jì) 由于我們規(guī)定的程序語(yǔ)句中涉及單詞較少,故在詞法分析階段忽略了單詞輸入錯(cuò)誤的檢查,而將編譯程序的重點(diǎn)放在中間代碼生成階段。詞法分析器的功能是輸入源程序,輸出單詞符號(hào)。我們規(guī)定輸出的單詞符號(hào)格式為如下的二元式: (單詞種別,單詞自身的值)#define ACC -2#define syl_if 0#define syl_else 1#define syl_wh
43、ile 2#define syl_begin 3#define syl_end 4#define a 5#define semicolon 6#define e 7#define jinghao 8#define s 9#define L 10#define tempsy 11#define EA 12#define EO 13#define plus 14#define times 15#define becomes 16#define op_and 17#define op_or 18#define op_not 19#define rop 20#define lparent 21#def
44、ine rparent 22#define ident 23#define intconst 24函數(shù)說明 讀取函數(shù) readline( )、readch( )詞法分析包含從源文件讀取字符的操作,但頻繁的讀文件操作會(huì)影響程序執(zhí)行效率,故實(shí)際上是從源程序文件” source.dat ”中讀取一行到輸入緩沖區(qū),而詞法分析過程中每次讀取一個(gè)字符時(shí)則是通過執(zhí)行 readch( )從輸入緩沖區(qū)獲得的;若緩沖區(qū)已被讀空,則再執(zhí)行readline( )從 source.dat 中讀取下一行至輸入緩沖區(qū)。掃描函數(shù) scan( ) 掃描函數(shù) scan( )的功能是濾除多余空格并對(duì)主要單詞進(jìn)行分析處理,將分析得到
45、的二元式存入二元式結(jié)果緩沖區(qū)。變量處理 find( )變量處理中首先把以字母開頭的字母數(shù)字串存到 spelling 數(shù)組中,然后進(jìn)行識(shí)別。識(shí)別過程是先讓它與保留關(guān)鍵字表中的所有關(guān)鍵字進(jìn)行匹配,若獲得成功則說明它為保留關(guān)鍵字,即將其內(nèi)碼值寫入二元式結(jié)果緩沖區(qū);否則說明其為變量,這時(shí)讓它與變量名表中的變量進(jìn)行匹配( 變量匹配函數(shù) find( ) ),如果成功,則說明該變量已存在并在二元式結(jié)果緩沖區(qū)中標(biāo)記為此變量( 值填為該變量在變量名表中的位置),否則將該變量登記到變量名表中,再將這個(gè)新變量存入二元式緩存數(shù)組中。數(shù)字識(shí)別 number( ) 數(shù)字識(shí)別將識(shí)別出的數(shù)字填入二元式結(jié)果緩存數(shù)組。顯示函數(shù)
46、顯示函數(shù)的功能在屏幕上輸出詞法分析的結(jié)果( 即二元式序列程序),同時(shí)給出二元式個(gè)數(shù)及源程序行數(shù)統(tǒng)計(jì)。二語(yǔ)法分析器設(shè)計(jì) 語(yǔ)法分析器的核心是三張 SLR 分析表以及針對(duì)這三張 SLR 分析表進(jìn)行語(yǔ)義加工的語(yǔ)義動(dòng)作。編譯程序中語(yǔ)法分析處理及四元式生成部分主要是以二元式作為輸入,并通過 SLR 分析表對(duì)語(yǔ)法分析處理過程進(jìn)行控制,使四元式翻譯的工作有條不紊的進(jìn)行,同時(shí)識(shí)別語(yǔ)法分析中的語(yǔ)法錯(cuò)誤。在處理 if 和 while 語(yǔ)句時(shí),需要進(jìn)行真值或假值的拉鏈和返填工作,以便轉(zhuǎn)移目標(biāo)的正確填入。1. 控制語(yǔ)句的 SLR 分析表1 設(shè)計(jì)過程如下: 將擴(kuò)展文法GS S1)S if e S else S2)S wh
47、ile e S3)S L 4)S a;5)L S6)L SL用_CLOSURE方法構(gòu)造LR(0)項(xiàng)目規(guī)范簇為:I0: S SS if e S else SS while e S S L S a ;I1: S SI2: S ife S else SI3: S while e SI4: S L L S L SL S if e S else SS while e S S L S a ; I5: S a; I6: S if e S else S S if e S else SS while e S S L S a ; I7: S while e S S if e S else SS while e S
48、 S L S a ; I8: S L I9: L S L SL L SL L S S if e S else SS while e S S L S a ; I10: S a ; I11: S if e S else SI12: S while e S I13: S L I14: S SL I15: S if e S else S S if e S else SS while e S S L S a ; I16: S if e S else S 構(gòu)造文法G中非終結(jié)符的FOLLOW集如下:FOLLOW(S) = # S if e S else S得FOLLOW(S) = else S L 得FOL
49、LOW(L) = 3) S S 得FOLLOW(S) = else , # L S 因?yàn)镕IRST(S) = ,所以FOLLOW(S) = else , #, 在()項(xiàng)目規(guī)范簇中,只有9有“移進(jìn)歸約”沖突,L SL SL因?yàn)镕OLLOW(L) FIRST(L) = 所以可以用方法解決以上沖突,最后我們得到的分析表如下:ACTIONGOTO ifElsewhilea;e#SL0S2S3S4S511ACC2S63S74S2S3S4S5985S106S2S3S4S5117S2S3S4S5128S139S2S3S4R5S591410R4R4R4111512R2R2R213R3R3R314R615S2S
50、3S4S51616R1R1R1static int action2011=/* 0 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 1, -1,/* 1 */ -1, -1, -1, -1, -1, -1, -1, -1,ACC, -1, -1,/* 2 */ -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1,/* 3 */ -1, -1, -1, -1, -1, -1, -1, 7, -1, -1, -1,/* 4 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 9, 8,/* 5 */ -1, -1, -1, -
51、1, -1, -1, 10, -1, -1, -1, -1,/* 6 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 11, -1,/* 7 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 12, -1,/* 8 */ -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1,/* 9 */ 2, -1, 3, 4,105, 5, -1, -1, -1, 9, 14,/* 10*/ -1,104, -1, -1,104, -1, -1, -1,104, -1, -1,/* 11*/ -1, 15, -1, -1, -1,
52、-1, -1, -1, -1, -1, -1,/* 12*/ -1,102, -1, -1,102, -1, -1, -1,102, -1, -1,/* 13*/ -1,103, -1, -1,103, -1, -1, -1,103, -1, -1,/* 14*/ -1, -1, -1, -1,106, -1, -1, -1, -1, -1, -1,/* 15*/ 2, -1, 3, 4, -1, 5, -1, -1, -1, 16, -1,/* 16*/ -1,101, -1, -1,101, -1, -1, -1,101, -1, -1;其中,前 9 列為 action 值,后 2 列為
53、goto 值;016 表示 17 個(gè)移進(jìn)狀態(tài)( 即 Si);-1表示出錯(cuò);ACC 表示分析成功;而 100106 對(duì)應(yīng) 7 個(gè)歸約產(chǎn)生式:S SS if e S else SS while e SS L S a;L SL SL2. 算術(shù)表達(dá)式的 LR 分析表 2 設(shè)計(jì)如下:S EE E+EE E*EE (E)E i (過程略)ACTIONGOTOI+*()#E0S3S211S4S5ACC2S3S263R4R4R4R44S3S275S3S286S4S5S97R1R5R1R18R2R2R2R29R3R3R3R3static int action1107=/* 0 */ 3, -1, -1, 2,
54、-1, -1, 1,/* 1 */ -1, 4, 5, -1, -1,ACC, -1,/* 2 */ 3, -1, -1, 2, -1, -1, 6,/* 3 */ -1,104,104, -1,104,104, -1,/* 4 */ 3, -1, -1, 2, -1, -1, 7,/* 5 */ 3, -1, -1, 2, -1, -1, 8,/* 6 */ -1, 4, 5, -1, 9, -1, -1,/* 7 */ -1,101, 5, -1,101,101, -1,/* 8 */ -1,102,102, -1,102,102, -1,/* 9 */ -1,103,103, -1,10
55、3,103, -1;3.布爾表達(dá)式的 SLR 分析表3 設(shè)計(jì)如下:(過程略)S BB iB i rop iB ( B )B ! BA B &B ABO B |B OBACTIONGOTOiRop()!&|#BAO0S1S4S513781S2R1R1R1R12S33R2R2R2R24S1S4S511785S1S4S56786R4S9S10R47S1S4S514788S1S4S515789R5R5R510R7R7R711S12S9S1012R3R3R3R313S9S10ACC14R6S9S10R615R8S9S10R8static int action21611=/* 0 */ 1, -1, 4,
56、 -1, 5, -1, -1, -1, 13, 7, 8,/* 1 */ 1, 2, -1,101, -1,101,101,101, -1, -1, -1,/* 2 */ 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,/* 3 */ -1, -1, -1,102, -1,102,102,102, -1, -1, -1,/* 4 */ 1, -1, 4, -1, 5, -1, -1, -1, 11, 7, 8,/* 5 */ 1, -1, 4, -1, 5, -1, -1, -1, 6, 7, 8,/* 6 */ -1, -1, -1,104, -1, 9,
57、 10,104, -1, -1, -1,/* 7 */ 1, -1, 4, -1, 5, -1, -1, -1, 14, 7, 8,/* 8 */ 1, -1, 4, -1, 5, -1, -1, -1, 15, 7, 8,/* 9 */ 105, -1,105, -1,105, -1, -1, -1, -1, -1, -1,/*10 */ 107, -1,107, -1,107, -1, -1, -1, -1, -1, -1,/*11 */ -1, -1, -1, 12, -1, 9, 10, -1, -1, -1, -1,/*12 */ -1, -1, -1,103, -1,103,103
58、,103, -1, -1, -1,/*13 */ -1, -1, -1, -1, -1, 9, 10,ACC, -1, -1, -1,/*14 */ -1, -1, -1,106, -1, 9, 10,106, -1, -1, -1,/*15 */ -1, -1, -1,108, -1, 9, 10,108, -1, -1, -1;LR 分析表控制語(yǔ)義加工的實(shí)現(xiàn):當(dāng)掃描 LR 分析表的當(dāng)前狀態(tài)為歸約狀態(tài)時(shí),則在調(diào)用與該狀態(tài)對(duì)應(yīng)的產(chǎn)生式進(jìn)行歸約的同時(shí),調(diào)用相應(yīng)的語(yǔ)義子程序進(jìn)行有關(guān)的翻譯工作?,F(xiàn)在對(duì) LR 分析器的分析棧加以擴(kuò)充,使得每個(gè)文法符號(hào)之后都跟著它的語(yǔ)義值。為了清晰起見,我們把這個(gè)棧的每
59、一項(xiàng)看成由三部分組成:狀態(tài) state ,文法符號(hào) syl 和語(yǔ)義值 val。編譯程序?qū)崿F(xiàn)算術(shù)表達(dá)式、布爾表達(dá)式及程序語(yǔ)句的語(yǔ)義加工時(shí),都是按這種狀態(tài)棧加工方式進(jìn)行的。例如:( 5 + 3 ) * 6的分析過程序號(hào)STATEValsylinput10-#( 5 + 3 ) * 6 #202-#(5 + 3 ) * 6 #3023#(5+ 3 ) * 6 #4026-5#(E+ 3 ) * 6 #50264-5-#(E+3 ) * 6 #602643-5-#(E+3 ) * 6 #702647-5-3#(E+E) * 6 #8026-8#(E) * 6 #90269-8-#(E)* 6 #100
60、1-8#E* 6 #11015-8-#E* 6 #120153-8-#E*6#130158-8-6#E*E#1401-48#E#15ACC在分析過程中,第(3)步操作后的狀態(tài)棧為 023,根據(jù)棧頂狀態(tài)“ 3”和現(xiàn)行輸入符號(hào)“ +”( input 欄字符串的第一個(gè)字符)查分析表 ACTION3,+=R4,即按第(4)個(gè)產(chǎn)生式 En 來進(jìn)行歸約;由于產(chǎn)生式右部?jī)H含一項(xiàng),故去掉狀態(tài)棧棧頂“3”;此時(shí) 2 變?yōu)樾碌臈m敔顟B(tài),再查( 2,E)的下一狀態(tài) s:GOTO2,E=6,即將狀態(tài) 6 和文法符號(hào) E 壓棧,最后得到第( 4)步的狀態(tài)。第( 7)步操作后也是如此,當(dāng)前狀態(tài)棧為 02647,根據(jù)棧頂狀
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- app地推合同范本
- 加盟采購(gòu)合同范本
- 單位服裝購(gòu)銷合同范例
- 合同變更 新合同范本
- 企業(yè)經(jīng)營(yíng)權(quán)外包合同范本
- 去污設(shè)備采購(gòu)合同范本
- 不含稅金合同范本
- 中介與賣房合同范本
- 個(gè)體小店過戶合同范本
- 廠房吊頂裝修合同范本
- 經(jīng)濟(jì)數(shù)學(xué)(高等職業(yè))全套教學(xué)課件
- 口腔種植學(xué)試題
- 網(wǎng)絡(luò)傳播概論(彭蘭第5版) 課件全套 第1-8章 網(wǎng)絡(luò)媒介的演變-網(wǎng)絡(luò)傳播中的“數(shù)字鴻溝”
- 口服止痛藥物健康宣教
- 超載限位器調(diào)試報(bào)告
- 智能微電網(wǎng)應(yīng)用技術(shù)
- 被執(zhí)行人生活費(fèi)申請(qǐng)書范文
- 車間維修現(xiàn)場(chǎng)安全操作規(guī)程范文
- 全面質(zhì)量管理體系條款對(duì)照表
- 高職工商企業(yè)管理專業(yè)人才培養(yǎng)方案
- 2024年中國(guó)建筑集團(tuán)招聘筆試參考題庫(kù)含答案解析
評(píng)論
0/150
提交評(píng)論