




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 引言隨著我國市場經(jīng)濟的蓬勃發(fā)展和人們對物質(zhì)水平需求的增加,各行各業(yè)都處于一個飛速發(fā)展的時期,行業(yè)的快速發(fā)展必然導(dǎo)致各企業(yè)之間的競爭更加激烈,為了使自己的企業(yè)在競爭中能夠站穩(wěn)腳跟,不被激烈的競爭環(huán)境所壓倒,必然要求企業(yè)加強對自身的管理,提高企業(yè)的經(jīng)營效率。本庫存管理系統(tǒng)的開發(fā)主要包括前端應(yīng)用程序以及后臺數(shù)據(jù)庫的建立和維護兩個方面。經(jīng)過分析,我選用myeclipse來開發(fā)系統(tǒng),利用其提供的各種面向?qū)ο蟮拈_發(fā)工具,來操縱數(shù)據(jù)庫。本論文正文分為五部分。第一部分介紹了開發(fā)庫存管理系統(tǒng)的必要性以及如何開發(fā),并簡要概述了myeclipse和SQL Server 2000。第二部分介紹系統(tǒng)開發(fā)前的準(zhǔn)備,包括
2、系統(tǒng)的需求說明及系統(tǒng)總體結(jié)構(gòu)設(shè)計和詳細設(shè)計。第三部分并著重闡述了系統(tǒng)主要功能模塊的具體實現(xiàn)。第四部分是系統(tǒng)開發(fā)的后期工作,講到了該系統(tǒng)的不完善之處及本次系統(tǒng)開發(fā)過程中一些切身的感受與想法,是我做這次課程設(shè)計的心得體會系統(tǒng)分析(一)選題的背景企業(yè)的庫存物資管理往往是很復(fù)雜、很繁瑣的。由于所掌握的物資種類眾多,訂貨、管理、發(fā)放的渠道各有差異,各個企業(yè)之間的管理體制不盡相同,各類統(tǒng)計報表繁多,因此倉庫的庫存管理必須編制一套庫存管理信息系統(tǒng),實現(xiàn)計算機化操作,而且必須根據(jù)企業(yè)的具體情況制定相應(yīng)的方案。 由于超市的行業(yè)特殊性,產(chǎn)品種類繁多,業(yè)務(wù)量巨大,若仍然采用人工記賬的方式,必然不能滿足企業(yè)的需求,企
3、業(yè)需要利用計算機來進行庫存管理,因此需要構(gòu)造一個庫存管理系統(tǒng)。一個完整的企業(yè)物資供應(yīng)管理系統(tǒng)應(yīng)包括采購計劃管理,合同收托管理、倉庫庫存管理、定額管理、統(tǒng)計管理、財務(wù)管理等模塊。其中倉庫的庫存管理是整個物資供應(yīng)管理系統(tǒng)的核心。因此有必要開發(fā)一套獨立的庫存管理系統(tǒng)來提高企業(yè)工作效率, 而所使用的這套庫存管理系統(tǒng)是企業(yè)生產(chǎn)經(jīng)營管理活動中的核心,此系統(tǒng)必須可以用來控制合理的庫存費用、適時適量的庫存數(shù)量,使企業(yè)生產(chǎn)活動效率最大化。通過對這些情況的仔細調(diào)查,我開發(fā)了下面的倉庫庫存管理系統(tǒng)。(二)系統(tǒng)需求分析 系統(tǒng)需求分析就是在用戶需求調(diào)研的基礎(chǔ)上,確定系統(tǒng)的總體結(jié)構(gòu)方案,完成相應(yīng)的需求分析報告。在確定系統(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ù)存儲層、業(yè)務(wù)處理層和界面表示層等3個層次,而應(yīng)用程序結(jié)構(gòu)可歸納為:集中式應(yīng)用程序結(jié)構(gòu)、單機板應(yīng)用程序結(jié)構(gòu)、多層服務(wù)器應(yīng)用程序結(jié)構(gòu)、瀏覽器服務(wù)器應(yīng)用程序結(jié)構(gòu)、客戶機服務(wù)器應(yīng)用程序結(jié)構(gòu)等5種類型。 本庫存管理系統(tǒng)就采用了單機版應(yīng)用程序結(jié)構(gòu),將數(shù)據(jù)庫和應(yīng)用程序置于一臺機器上,這樣更加節(jié)約成本,適合中小規(guī)模的超市使用。用戶可以輕松將其拷貝到其他計算機上,可以同時運行程序。2.確定系統(tǒng)開發(fā)環(huán)境 由于大多數(shù)公司內(nèi)部使用的計算機平臺都是基于Windows環(huán)境
5、的。為了降低系統(tǒng)成本,應(yīng)最大程度地利用現(xiàn)有的資源、兼容現(xiàn)有的環(huán)境,可確定使用下面的開發(fā)環(huán)境: 數(shù)據(jù)庫:Microsoft SQL Server 2000; 前端開發(fā)工具:myeclipse;3開發(fā)工具的選擇可視化程序設(shè)計是一種全新的程序設(shè)計方法,全面采用面向?qū)ο蟮某绦蛟O(shè)計技術(shù),使用事件驅(qū)動機制進行程序設(shè)計。利用可視化開發(fā)工具可以快速、高效地開發(fā)應(yīng)用程序??梢暬拈_發(fā)工具很多。myeclipse是集成開發(fā)環(huán)境,是目前最流行的 Windows 平臺應(yīng)用程序開發(fā)環(huán)境。它是把代碼的編寫、程序的調(diào)試、編譯、運行以及其他的相關(guān)操作都集成在一起的“編程工具”。 作用是程序員通過它這個平臺,利用編程語言來寫程
6、序,調(diào)試,運行。SQL Server 2000 是Microsoft 公司推出的SQL Server 數(shù)據(jù)庫管理系統(tǒng)。該版本繼承了SQL Server 7.0 版本的優(yōu)點同時又比它增加了許多更先進的功能,具有使用方便,可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點,可跨越從運行Microsoft Windows 98 的膝上型電腦到運行Microsoft Windows 2000 的大型多處理器的服務(wù)器等多種平臺使用。經(jīng)分析,本庫存管理系統(tǒng)選用myeclipse來設(shè)計界面,選用SQL Server 2000來建立后臺數(shù)據(jù)庫。(三)系統(tǒng)的開發(fā)及功能描述1.開發(fā)方法的選擇信息系統(tǒng)的開發(fā)是一項比較復(fù)雜的工作,
7、因此我們必須選用科學(xué)有效的開發(fā)方法。本系統(tǒng)的開發(fā)采用了生命周期法。在系統(tǒng)設(shè)計時遵循系統(tǒng)調(diào)查研究、系統(tǒng)分析、系統(tǒng)設(shè)計和系統(tǒng)實施四個主要階段進行設(shè)計,而在具體的設(shè)計上,則通過在系統(tǒng)的使用及對系統(tǒng)了解的不斷加深中,對某一部分或幾部分進行重新分析、設(shè)計、實施,使系統(tǒng)逐步完善。2.系統(tǒng)功能描述及系統(tǒng)安全性本庫存管理系統(tǒng)是一套對貨品入庫、出庫、庫存進行全面管理的系統(tǒng)。在管理內(nèi)容上,它的主要功能包括:進貨管理:進行填寫貨品信息,貨品采購入庫,入庫單據(jù)的填寫和修改最低庫存量。 出貨管理:進行貨品出庫,出貨單據(jù)的填寫和獲取采購員信息。信息查詢:貨品信息查詢,庫存信息查詢,入庫、出庫單據(jù)查詢,日報表、月報表查詢。
8、統(tǒng)計報表:完整的日報表、月報表統(tǒng)計查詢功能,每張單據(jù)每次業(yè)務(wù)金額都可以清楚地反映。系統(tǒng)管理:身份驗證,修改本人密碼,注冊用戶,修改刪除用戶。由于庫存管理系統(tǒng)包含比較重要的信息,因此,在系統(tǒng)設(shè)計時除了注重用戶的需求,還要保證系統(tǒng)的安全性和一致性,體現(xiàn)如下:(1)安全性:本系統(tǒng)中共分為三類不同的用戶,分別具有不同的權(quán)限。(2)一致性:系統(tǒng)的數(shù)據(jù)要保證一致性、準(zhǔn)確性,當(dāng)某一數(shù)據(jù)庫中記錄發(fā)生改變時,與之相關(guān)聯(lián)的數(shù)據(jù)庫也隨之變化。(四)系統(tǒng)邏輯模型本系統(tǒng)的邏輯模型以系統(tǒng)流圖為主要描述工具。我們用不同的符號代表這四個元素:表示數(shù)據(jù)流;表示文件(數(shù)據(jù)存儲);表示加工;出貨結(jié)果出貨結(jié)果出貨管理進貨管理采購員表
9、倉庫信息表 操作員個人信息表客戶信息表采購員表查詢結(jié)果修改結(jié)果修改要求信息查詢操作員個人信息表密碼用戶編號用戶編號密碼數(shù)據(jù)維護信息查詢系統(tǒng)管理員倉庫管理員進貨管理身份驗證身份驗證操作員個人信息表系統(tǒng)管理員庫存管理系統(tǒng)出貨管理進貨結(jié)果月報表統(tǒng)計報表統(tǒng)計統(tǒng)計結(jié)果采購員表庫存信息表表貨品信息表表庫存信息表表日報表經(jīng)理身份驗證用戶編號密碼信息查詢經(jīng)理貨品信息表庫存信息表入庫單出庫單信息查詢查詢結(jié)果日報表月報表操作員個人信息表二、系統(tǒng)設(shè)計(一)系統(tǒng)總體結(jié)構(gòu)設(shè)計1.系統(tǒng)功能分析本庫存管理系統(tǒng)需要完成的功能有:(1)庫存管理的各種信息的輸入,包括入庫、出庫、貨品信息的輸入等。 (2)庫存管理的各種信息的查詢
10、、修改和維護。 (3)入庫單、出庫單的生成,日報表、月報表的生成。 (4)在貨品庫存中加入所允許的最低庫存字段,對所有庫存物資實現(xiàn)監(jiān)控和報警。 2系統(tǒng)功能模塊圖根據(jù)系統(tǒng)功能分析,畫出系統(tǒng)功能模塊圖如下:庫存管理系統(tǒng)庫存管理系統(tǒng)身份驗證注冊用戶修改刪除用戶修改密碼信息查詢報表統(tǒng)計進貨管理出貨管理系統(tǒng)管理入庫單填寫填寫貨品信息修改最低庫存出庫單填寫獲取采購員信息日報表月報表庫存查詢貨品查詢報表查詢(二)數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫在一個信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的好壞將直接對應(yīng)用系統(tǒng)的效率以及實現(xiàn)的效果產(chǎn)生影響。數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計貨品貨品采購倉庫客戶存儲訂購采購員n1mnn1貨品編號規(guī)格
11、型號單位貨品名稱客戶編號客戶名稱倉庫名稱負責(zé)人聯(lián)系電話采購員編號采購的貨品類別圖2-2庫存管理系統(tǒng)ER圖(三)系統(tǒng)功能模塊的詳細設(shè)計本庫存管理系統(tǒng)是本著用戶操作界面友好、清晰、易學(xué)易用的原則進行設(shè)計的。1身份驗證模塊的設(shè)計庫存管理系統(tǒng)庫存管理系統(tǒng)用戶編號:密碼:退出登陸圖2-3用戶登錄模塊界面設(shè)計 該模塊的流程圖如圖2-4所示:是是否用 戶登 錄是否為合法用戶?否選擇身份判斷用戶類型進入系統(tǒng)開 始結(jié) 束此外,對一個完整的系統(tǒng)而言,用戶是應(yīng)該可以修改自己的密碼的,因此系統(tǒng)中應(yīng)該具有修改密碼的功能,提高數(shù)據(jù)的安全性。請輸入新密碼請輸入新密碼請確認新密碼確認取消圖2-5修改密碼界面設(shè)計2系統(tǒng)主界面的
12、實現(xiàn) 系統(tǒng)管理系統(tǒng)管理刪除報表查詢修改信息退出系統(tǒng)圖2-6主界面(admin)設(shè)計修改密碼修改密碼進貨管理出貨管理報表統(tǒng)計圖2-7主界面(倉管)設(shè)計修改密碼修改密碼信息查詢退出系統(tǒng)圖2-8主界面(經(jīng)理)設(shè)計 3進貨管理模塊的實現(xiàn) 進貨管理模塊包括填寫貨品信息、入庫單、修改最低庫存三個子模塊。(1)填寫貨品信息填寫貨品信息填寫貨品信息貨品編號貨品名稱單位貨品類別規(guī)格型號顏色確定取消(2)入庫單 入庫單入庫單憑證編號貨品編號數(shù)量庫別進貨單價入庫時間確定取消采購人編號制單人(3)修改最低庫存修改最低庫存修改最低庫存貨品編號最低庫存確定取消 4出庫管理模塊的實現(xiàn)出庫管理包括填寫出庫單,獲取采購員信息兩
13、個子模塊。(1)出庫單出庫單出庫單憑證編號貨品編號數(shù)量庫別出貨單價出庫時間確定取消客戶編號制單人(2)獲取采購員信息獲取采購員信息獲取采購員信息貨品編號搜索的信息:確定搜索5.報表統(tǒng)計模塊的實現(xiàn)本系統(tǒng)的報表分為日報表和月報表,日報表在添加入庫單和出庫單時就已經(jīng)自動添加進數(shù)據(jù)庫中的日報表了,所以在此只需再手動添加月報表。三、系統(tǒng)實現(xiàn)系統(tǒng)實現(xiàn)包括用戶需求實現(xiàn),系統(tǒng)界面實現(xiàn)和數(shù)據(jù)庫實現(xiàn)三方面。1用戶登錄界面用戶通過該界面登錄進入系統(tǒng)。圖3-1系統(tǒng)登錄界面 3.1 系統(tǒng)管理修改密碼界面 以下是注冊用戶界面:系統(tǒng)管理員注冊用戶界面注冊前數(shù)據(jù)庫中操作員個人信息表如圖3-7:注冊前的操作員個人信息表數(shù)據(jù)庫
14、注冊用戶成功界面:系統(tǒng)管理員修改刪除用戶界 刪除報表界面如下圖:系統(tǒng)管理員刪除報表界面 3.2 進貨管理 倉庫管理員填寫入庫單界面如下圖:倉庫管理員填寫入庫單界面 界面自動跳轉(zhuǎn)到如下圖:倉庫管理員填寫入庫單界面?zhèn)}庫管理員填寫貨品信息界面入庫單填寫的信息會自動加入入庫單數(shù)據(jù)庫,并且更改庫存信息表和日報表中的相關(guān)信息。未添加信息前的入庫單入庫單未添加前的庫存信息表 填寫完入庫單的圖如下: 四、系統(tǒng)開發(fā)總結(jié)此次庫存管理系統(tǒng)開發(fā)讓我學(xué)習(xí)到很多知識,現(xiàn)總結(jié)如下:系統(tǒng)開發(fā)的過程中,我深刻體會到了以前上課老師經(jīng)常提起的一個問題,那就是:一個系統(tǒng)開發(fā)的過程中編碼不是最重要的,重要的是對系統(tǒng)進行分析以及建立恰當(dāng)
15、的系統(tǒng)模型。在該庫存管理系統(tǒng)設(shè)計中,從系統(tǒng)的實用性出發(fā),我能夠在開發(fā)該系統(tǒng)時站在用戶的角度看問題,本著用戶操作界面友好、清晰、易學(xué)易用的原則進行設(shè)計??傊?,這次的系統(tǒng)開發(fā),實現(xiàn)了我自己動手完成一個系統(tǒng)開發(fā)的目標(biāo),也學(xué)習(xí)到很多東西,不只是實踐經(jīng)驗,還有一些做事的道理:在工作時,要盡量把要遇到的問題考慮周全,提前做好準(zhǔn)備,那樣就不會在遇到問題時有措手不及的感覺。參考文獻:1 梅玫: 物資庫存的計算機管理,黑龍江科技信息,2009年7月25日.2 申冠楠,郭宗義百貨店商品的庫存管理系統(tǒng)的設(shè)計與實現(xiàn),現(xiàn)代商業(yè),2010年1月18日.3 劉志堅: 中小制造企業(yè)庫存管理系統(tǒng)的開發(fā)與設(shè)計,中北大學(xué),2009
16、年4月25日.4 美c.j.date:數(shù)據(jù)庫系統(tǒng)導(dǎo)論(英文版第七版),機械工業(yè)出版社,2002年.5 鄧良松:軟件工程,西安電子科技大學(xué)出版社,2004年.6 鄧遠志:數(shù)據(jù)庫設(shè)計方法,南昌教育學(xué)院學(xué)報,2005年第20卷第4期.7薩師煊等編著 ,數(shù)據(jù)庫系統(tǒng)概論 , 高等教育出版社, 2000年.8東方人華主編,JSP范例入門與提高, 清華大學(xué)出版社, 2003年.9李佳, 付強, 丁寧等編著,java開發(fā)技術(shù)大全, 清華大學(xué)出版社, 2009年. 10歐立奇,康祥順,馬煜編著,java案例開發(fā)集錦 , 電子工業(yè)出版社 ,2005年.11 鄺孔武,王曉敏編著,信息系統(tǒng)分析與設(shè)計,清華大學(xué)出版社,
17、1999年.12 史濟民:軟件工程-原理、方法與應(yīng)用,高等教育出版社,2002年. 13 薛華成:管理信息系統(tǒng),清華大學(xué)出版社,1999年. 14 張金城:管理信息系統(tǒng),北京大學(xué)出版社,2004年.15馬士華:供應(yīng)鏈管理,機械工業(yè)出版社,2000年.16李玉良,邵新宇:CPFR供應(yīng)鏈庫存管理技術(shù)的新趨勢,機械設(shè)計與制造工程,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ù)查詢);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(退貨出庫單據(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(庫存調(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)計);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)計);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(庫存統(tǒng)計);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(采購統(tǒng)計);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)計);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(退貨出庫統(tǒng)計);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)計);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)計);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語言編譯器的設(shè)計與實現(xiàn) 我們設(shè)計的編譯程序涉及到編譯五個階段中的三個,即詞法分析器
42、、語法分析器和中間代碼生成器。編譯程序的輸出結(jié)果包括詞法分析后的二元式序列、變量名表、狀態(tài)棧分析過程顯示及四元式序列程序,整個編譯程序分為三部分:(1) 詞法分析部分(2) 語法分析處理及四元式生成部分 (3) 輸出顯示部分一詞法分析器設(shè)計 由于我們規(guī)定的程序語句中涉及單詞較少,故在詞法分析階段忽略了單詞輸入錯誤的檢查,而將編譯程序的重點放在中間代碼生成階段。詞法分析器的功能是輸入源程序,輸出單詞符號。我們規(guī)定輸出的單詞符號格式為如下的二元式: (單詞種別,單詞自身的值)#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( )詞法分析包含從源文件讀取字符的操作,但頻繁的讀文件操作會影響程序執(zhí)行效率,故實際上是從源程序文件” source.dat ”中讀取一行到輸入緩沖區(qū),而詞法分析過程中每次讀取一個字符時則是通過執(zhí)行 readch( )從輸入緩沖區(qū)獲得的;若緩沖區(qū)已被讀空,則再執(zhí)行readline( )從 source.dat 中讀取下一行至輸入緩沖區(qū)。掃描函數(shù) scan( ) 掃描函數(shù) scan( )的功能是濾除多余空格并對主要單詞進行分析處理,將分析得到
45、的二元式存入二元式結(jié)果緩沖區(qū)。變量處理 find( )變量處理中首先把以字母開頭的字母數(shù)字串存到 spelling 數(shù)組中,然后進行識別。識別過程是先讓它與保留關(guān)鍵字表中的所有關(guān)鍵字進行匹配,若獲得成功則說明它為保留關(guān)鍵字,即將其內(nèi)碼值寫入二元式結(jié)果緩沖區(qū);否則說明其為變量,這時讓它與變量名表中的變量進行匹配( 變量匹配函數(shù) find( ) ),如果成功,則說明該變量已存在并在二元式結(jié)果緩沖區(qū)中標(biāo)記為此變量( 值填為該變量在變量名表中的位置),否則將該變量登記到變量名表中,再將這個新變量存入二元式緩存數(shù)組中。數(shù)字識別 number( ) 數(shù)字識別將識別出的數(shù)字填入二元式結(jié)果緩存數(shù)組。顯示函數(shù)
46、顯示函數(shù)的功能在屏幕上輸出詞法分析的結(jié)果( 即二元式序列程序),同時給出二元式個數(shù)及源程序行數(shù)統(tǒng)計。二語法分析器設(shè)計 語法分析器的核心是三張 SLR 分析表以及針對這三張 SLR 分析表進行語義加工的語義動作。編譯程序中語法分析處理及四元式生成部分主要是以二元式作為輸入,并通過 SLR 分析表對語法分析處理過程進行控制,使四元式翻譯的工作有條不紊的進行,同時識別語法分析中的語法錯誤。在處理 if 和 while 語句時,需要進行真值或假值的拉鏈和返填工作,以便轉(zhuǎn)移目標(biāo)的正確填入。1. 控制語句的 SLR 分析表1 設(shè)計過程如下: 將擴展文法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)項目規(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 因為FIRST(S) = ,所以FOLLOW(S) = else , #, 在()項目規(guī)范簇中,只有9有“移進歸約”沖突,L SL SL因為FOLLOW(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 個移進狀態(tài)( 即 Si);-1表示出錯;ACC 表示分析成功;而 100106 對應(yīng) 7 個歸約產(chǎn)生式:S SS if e S else SS while e SS L S a;L SL SL2. 算術(shù)表達式的 LR 分析表 2 設(shè)計如下: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.布爾表達式的 SLR 分析表3 設(shè)計如下:(過程略)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 分析表控制語義加工的實現(xiàn):當(dāng)掃描 LR 分析表的當(dāng)前狀態(tài)為歸約狀態(tài)時,則在調(diào)用與該狀態(tài)對應(yīng)的產(chǎn)生式進行歸約的同時,調(diào)用相應(yīng)的語義子程序進行有關(guān)的翻譯工作?,F(xiàn)在對 LR 分析器的分析棧加以擴充,使得每個文法符號之后都跟著它的語義值。為了清晰起見,我們把這個棧的每
59、一項看成由三部分組成:狀態(tài) state ,文法符號 syl 和語義值 val。編譯程序?qū)崿F(xiàn)算術(shù)表達式、布爾表達式及程序語句的語義加工時,都是按這種狀態(tài)棧加工方式進行的。例如:( 5 + 3 ) * 6的分析過程序號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)行輸入符號“ +”( input 欄字符串的第一個字符)查分析表 ACTION3,+=R4,即按第(4)個產(chǎn)生式 En 來進行歸約;由于產(chǎn)生式右部僅含一項,故去掉狀態(tài)棧棧頂“3”;此時 2 變?yōu)樾碌臈m敔顟B(tài),再查( 2,E)的下一狀態(tài) s:GOTO2,E=6,即將狀態(tài) 6 和文法符號 E 壓棧,最后得到第( 4)步的狀態(tài)。第( 7)步操作后也是如此,當(dāng)前狀態(tài)棧為 02647,根據(jù)棧頂狀
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業(yè)綜合體招商運營風(fēng)險分析及2025年社會穩(wěn)定風(fēng)險防范策略報告
- 新解讀《GB-T 39058 - 2020農(nóng)產(chǎn)品電子商務(wù)供應(yīng)鏈質(zhì)量管理規(guī)范》
- 中小學(xué)2025年《秋季軍訓(xùn)》工作方案 合計3份
- 2025年小學(xué)安全教育日考試題及答案
- 江蘇省高考數(shù)學(xué)二輪復(fù)習(xí) 專題三 解析幾何 3.2 大題考法-直線與圓課件-人教版高三全冊數(shù)學(xué)課件
- 高考數(shù)學(xué)一輪復(fù)習(xí) 9.9 用樣本估計總體課件 理-人教版高三全冊數(shù)學(xué)課件
- 2025年上海新高一英語自學(xué)專項提升:高中題型之語法填空考向探究(初高考點差異)
- 2026年高考語文一輪復(fù)習(xí)文學(xué)類文本教考銜接之小說閱讀
- 2025中考數(shù)學(xué)押題預(yù)測卷(湖北卷)含答案解析
- 2026年中考物理高頻考點復(fù)習(xí):簡單機械 講義(含練習(xí)題及答案)
- 2025年保密教育線上培訓(xùn)考試試題庫及答案(共19套)
- 材料性能學(xué)(第2版)付華課件1-彈性變形
- GB/T 6495.9-2006光伏器件第9部分:太陽模擬器性能要求
- GB/T 602-2002化學(xué)試劑雜質(zhì)測定用標(biāo)準(zhǔn)溶液的制備
- 藥用植物學(xué)試題與答案
- 江西省贛州市于都縣2022-2023學(xué)年九年級化學(xué)第一學(xué)期期中監(jiān)測試題含解析
- 新冠核酸檢測實驗室PCR管八聯(lián)管濾芯吸頭等耗材質(zhì)檢和儲存程序
- 預(yù)防出生缺陷PPT
- ROEDERS (羅德斯CNC)公司內(nèi)部培訓(xùn)手冊
- 通止規(guī)、環(huán)通止規(guī)檢查記錄表
- 模版協(xié)議認購協(xié)議東方國際廣場七號樓購房確認書(最新修改)
評論
0/150
提交評論