2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩91頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  第一章前言</b></p><p><b>  1.1軟件開發(fā)背景</b></p><p>  1.1.1稅務(wù)系統(tǒng)信息建設(shè)現(xiàn)狀</p><p>  1994年我國稅制改革以來,稅務(wù)系統(tǒng)全面貫徹黨中央國務(wù)院關(guān)于加強稅務(wù)信息化建設(shè)的指導(dǎo)方針,堅持“科技加管理”的工作思路,稅務(wù)信息化建設(shè)全面推進。自

2、上而下實現(xiàn)了國家稅務(wù)總局、省局、市局、到區(qū)縣局的四級廣域高速互聯(lián)網(wǎng)絡(luò),建設(shè)了金稅工程二期工程、推行了綜合征管軟件、增值稅管理系統(tǒng)、出口退稅管理系統(tǒng)等多項大型稅收征管信息系統(tǒng)。稅務(wù)信息化建設(shè)全面提高了稅收征管質(zhì)量和效益,降低了稅收成本和風險,為國民經(jīng)濟的發(fā)展奠定了良好的基礎(chǔ)。</p><p>  我國稅務(wù)信息化的發(fā)展大致可劃分為三個階段。第一階段是模擬手工操作的稅收電子化階段;第二階段是步入面向管理的稅務(wù)管理信息系

3、統(tǒng)階段;第三階段是實現(xiàn)創(chuàng)造稅收價值的全方位稅收服務(wù)系統(tǒng)階段。2005年至2006年是我國稅務(wù)信息化從第二階段向第三階段攀登的關(guān)鍵時期,這個階段涉及的稅務(wù)業(yè)務(wù)應(yīng)用,已從稅務(wù)業(yè)務(wù)操作、簡單的稅收管理發(fā)展到深層次的稅收管理和高層決策,這對信息技術(shù)在稅務(wù)領(lǐng)域的應(yīng)用提出了更高的要求。在這種大的背景下,積極研究發(fā)揮稅務(wù)機關(guān)服務(wù)職能,將納稅服務(wù)理念融入稅收工作,不斷拓展納稅服務(wù)的新領(lǐng)域,為納稅人提供全方位的服務(wù)已成為新時期的首要任務(wù),這也包括對納稅人

4、稅務(wù)信息的采集。</p><p>  1.1.2稅務(wù)信息采集中存在的問題</p><p>  稅務(wù)部門由于自身信息化建設(shè)的需要,對所需要采集的信息有的是推行單一功能軟件,有的還停留在手工填寫報表的原始方式。主要表現(xiàn)在:一是納稅人端各類稅收數(shù)據(jù)采集手段不一、方式多樣、效率低下、質(zhì)量不高;二是納稅人端采集系統(tǒng)林立、多頭采集、重復(fù)采集、口徑不一;三是稅務(wù)端辦稅手段不高、手工審核比對工作量大、效率

5、低下、服務(wù)質(zhì)量不高。</p><p>  針對稅務(wù)信息采集存在諸多問題,為了優(yōu)化納稅服務(wù),提高數(shù)據(jù)采集質(zhì)量,減輕征納雙方的勞動強度,急需要一個能“口徑統(tǒng)一、集中采集”納稅人的各類信息的應(yīng)用系統(tǒng)——《稅務(wù)信息采集系統(tǒng)》。</p><p>  1. 2應(yīng)用系統(tǒng)要實現(xiàn)的目標</p><p>  待開發(fā)的稅務(wù)信息采集系統(tǒng)的使用者是廣大的各類納稅人,系統(tǒng)要實現(xiàn)優(yōu)化納稅服務(wù),提

6、高數(shù)據(jù)采集質(zhì)量,減輕征納雙方的勞動強度的目的,力求做到三個覆蓋:一是覆蓋所有國稅機關(guān)管轄的所有企業(yè)納稅人;二是覆蓋國稅機關(guān)征管的所有稅種的申報;三是覆蓋所有法定涉稅資料的報送。</p><p>  該系統(tǒng)還需要整合了外貿(mào)企業(yè)和生產(chǎn)企業(yè)的出口退稅申報系統(tǒng)。其采集、輸出數(shù)據(jù)必須實現(xiàn)與稅務(wù)部門運行的綜合征管軟件、通用數(shù)據(jù)采集匯總軟件、重點稅源監(jiān)控系統(tǒng)、出口退稅審核系統(tǒng)的對接,還要做到電子數(shù)據(jù)的網(wǎng)上交換,避免了網(wǎng)上申報數(shù)

7、據(jù)的二次錄入,減輕納稅人網(wǎng)上申報的工作量、保證申報的準確性。也就是說該系統(tǒng)要具有簡便、實用、集成等特點,要做到“四個一”:一套系統(tǒng)、“一張軟盤”、一個口徑、一次采集,完成稅務(wù)信息采集工作。</p><p>  一套系統(tǒng)。一套《稅收信息采集系統(tǒng)》集各稅種納稅申報、運輸發(fā)票、廢舊物資發(fā)票、海關(guān)完稅憑證、重點稅源監(jiān)控及財務(wù)報表等數(shù)據(jù)采集于一身,整合外貿(mào)企業(yè)和生產(chǎn)企業(yè)的出口退稅申報系統(tǒng),具有增值稅納稅申報、內(nèi)外資企業(yè)所得

8、稅申報、增值稅“四票”以及企業(yè)財務(wù)會計報表(資產(chǎn)負債表、損益表)等72張報表的數(shù)據(jù)采集、計算、審核、比對功能。納稅人安裝該系統(tǒng)后,不再需要安裝其他多套采集系統(tǒng),利用這一套系統(tǒng)便可實現(xiàn)多項涉稅信息采集工作。 </p><p>  “一張軟盤”。納稅人不再需要攜帶多張軟盤或其他存儲介質(zhì),辦理納稅申報,只需通過本系統(tǒng)一次報送一張軟盤即可,隨著網(wǎng)絡(luò)報送功能的拓展,系統(tǒng)還應(yīng)能自動打包上傳數(shù)據(jù)。</p><

9、;p>  一個口徑。納稅人不再為填寫各類指標口徑而煩惱,系統(tǒng)通過內(nèi)嵌的表內(nèi)、表間計算公式、邏輯關(guān)系,自動實現(xiàn)各表的計算和審核比對,表集底層數(shù)據(jù)就實現(xiàn)共享機制,實現(xiàn)填報口徑的統(tǒng)一。</p><p>  一次采集。納稅人辦理納稅申報或法定涉稅數(shù)據(jù)的采集時,所報送的稅務(wù)信息只需一次錄入,系統(tǒng)自動存儲、自動結(jié)轉(zhuǎn),不再多頭采集、多頭報送、多次錄入。</p><p><b>  第二章

10、系統(tǒng)需求分析</b></p><p>  2.1現(xiàn)行稅務(wù)信息采集描述</p><p>  通過對《中華人民共和國稅收征收管理法》及其實施細則、各稅種單行條例、各稅種納稅申報辦法等法律法規(guī)、規(guī)范性文件的對稅務(wù)信息采集的規(guī)定,對納稅人在實際稅務(wù)信息采集中的實踐經(jīng)驗進行調(diào)研,結(jié)合稅務(wù)部門業(yè)務(wù)人員的對國稅業(yè)務(wù)的細化、提煉。</p><p>  納稅人報送到稅務(wù)部

11、門的信息基本上是種類報表或清單,單一的納稅人基本上不涉及到大量的數(shù)據(jù),也沒有太多的數(shù)據(jù)處理過程,只是納稅人按照有關(guān)規(guī)定制作、錄入報表數(shù)據(jù)后,打印紙質(zhì)報表或報送電子數(shù)據(jù)?,F(xiàn)行需要采集的稅務(wù)信息主要是增值稅納稅申報、消費稅納稅申報、內(nèi)外資企業(yè)所得稅納稅申報、個人儲蓄利息所得稅納稅申報、運輸發(fā)票信息、廢舊物資發(fā)票信息、海關(guān)完稅憑證信息、重點稅源信息等幾方面內(nèi)容。稅務(wù)信息采集流程圖如圖2.1所示下:</p><p>  

12、圖2.1 稅務(wù)信息采集流程圖</p><p>  2.2現(xiàn)行稅務(wù)信息采集存在的主要問題分析</p><p>  現(xiàn)行的稅務(wù)信息采集存在方式不一、手段不高、軟件林立、多次多盤報送等問題,納稅人多次反映信息采集頗為繁瑣和反感,有較強的抵觸情緒,不能較好地完成稅務(wù)信息的采集報送工作,這也是稅務(wù)部門值得考慮的問題——如何進行為納稅人服務(wù)。</p><p>  2.3現(xiàn)行稅

13、務(wù)信息采集業(yè)務(wù)流程</p><p>  2.3.1各稅種納稅申報業(yè)務(wù)流程</p><p>  圖2.2 各稅種納稅申報流程圖</p><p>  2.3.2運輸發(fā)票、廢舊物資發(fā)票和海關(guān)完稅憑證信息采集流程</p><p>  圖2.3 增值稅“四票”信息采集流程圖</p><p>  2.3.3重點稅源信息采集流程

14、</p><p>  圖2.4 重點稅源監(jiān)控信息采集流程圖</p><p>  2.4解決現(xiàn)行稅務(wù)信息采集問題的方案</p><p>  2.4.1提高納稅申報等單項數(shù)據(jù)采集的方案</p><p>  將各稅種納稅申報資料表格電子化,加強表內(nèi)、表與表間的計算與邏輯審核,增加報表的上下申報期的結(jié)轉(zhuǎn)功能,增強申報資料,保證報表資料的完整性。如對

15、增值稅申報表主表的第12行“本月數(shù)”應(yīng)等于上個申報期申報表第20行“本月數(shù)”,第25行“本月數(shù)”應(yīng)等于上個申報期申報表第32行“本月數(shù)”等等;還應(yīng)增加表間的審核關(guān)系,如主表第11行“本月數(shù)”等于附表一第7行小計中的“銷項稅額”。</p><p>  表2.1 增值稅納稅申報表</p><p>  2.4.2提高整體信息采集的方案</p><p>  只要達到系統(tǒng)實

16、現(xiàn)的目標:一套系統(tǒng)、“一張軟盤”、一個口徑、一次采集,即可整體提高稅務(wù)信息采集的質(zhì)量和效率。</p><p><b>  2.5可行性分析</b></p><p>  2.5.1經(jīng)濟可行性分析</p><p>  本系統(tǒng)集各稅種納稅申報與其他信息采集系統(tǒng)于一體,解決了稅收信息多次采集、多頭采集等問題,減輕了征納雙方工作強度。</p>

17、<p>  本系統(tǒng)開發(fā)完成后的目標用戶群是國稅部門征管的各企業(yè)納稅人。社會信息化的快速發(fā)展以及國稅部門增值稅防偽稅控已推行多年,大部分用戶已有計算機設(shè)備,無需增加新的投入即可使用該系統(tǒng);該系統(tǒng)的開發(fā)完全由國稅部門自身開發(fā),免費提供給納稅人使用;系統(tǒng)開發(fā)后通過互聯(lián)網(wǎng)、光盤等方式分發(fā),國稅部門組織人員為納稅人免費安裝和培訓操作人員。</p><p>  整個系統(tǒng)只是利用現(xiàn)有資源,提高了納稅人的辦稅質(zhì)量、

18、減輕了納稅辦稅工作量、節(jié)約了稅務(wù)人員錄入信息的時間、降低了稅務(wù)人員的勞動強度。</p><p>  該系統(tǒng)上線后,企業(yè)納稅人不再需要購買紙質(zhì)申報資料了、不再需要運行多個稅務(wù)信息采集軟件了、不再需要多次報送電子信息了、甚至還可以通過互聯(lián)網(wǎng)足不出戶地辦理納稅申報等涉稅事宜了。</p><p>  2.5.2社會可行性分析</p><p>  本系統(tǒng)可實現(xiàn)了所有企業(yè)納稅人

19、、所有稅種申報、所有法定報送涉稅資料采集的三覆蓋;實現(xiàn)了申報表內(nèi)自動計算、自動審核、數(shù)據(jù)共享的三級保障;可實現(xiàn)辦稅服務(wù)效率、數(shù)據(jù)利用效率、企業(yè)信息化應(yīng)用水平的三提高。</p><p>  本系統(tǒng)是一次開發(fā),將在數(shù)以萬計的企業(yè)納稅人中推廣使用,既可加強稅收監(jiān)控,減輕征納雙方勞動強度,提高納稅申報質(zhì)量,優(yōu)化稅收服務(wù),密切了稅企關(guān)系,應(yīng)該會取得良好的經(jīng)濟效益和社會效益。</p><p>  2.

20、5.2.1提高了申報質(zhì)量,強化了稅源監(jiān)控</p><p>  本系統(tǒng)自動匯總、計算各種報稅數(shù)據(jù)并生成標準的各稅稅納稅申報表,既能大大提高納稅人的工作效率,又能保證申報數(shù)據(jù)的正確性。</p><p>  主管國稅機關(guān)采集涉稅信息后,系統(tǒng)能準確和快速填報增值稅納稅申報表、企業(yè)所得稅申報表、財務(wù)報表及其他信息采集表,提高了納稅申報質(zhì)量,加強了稅收監(jiān)控。</p><p> 

21、 2.5.2.2方便了納稅人,優(yōu)化了納稅服務(wù)</p><p>  本系統(tǒng)在打印報表前對報表進行嚴格的數(shù)據(jù)邏輯關(guān)系審核,只有全部邏輯關(guān)系符合規(guī)定,才允許打印出申報資料,提高了納稅人納稅申報一次性成功率。企業(yè)辦理納稅申報,只需通過本系統(tǒng)每月報送一張軟盤,所有報送資料一次錄入,系統(tǒng)自動存儲,不再多頭采集、多頭報送、多次錄入。納稅人普遍反映,現(xiàn)在辦理納稅申報方便多了。</p><p>  2.5.

22、3技術(shù)可行性分析</p><p>  該系統(tǒng)是基于Windows操作系統(tǒng)的桌面應(yīng)用系統(tǒng),數(shù)據(jù)庫采用的是與Windows操作系統(tǒng)無縫對接的Access桌面數(shù)據(jù)系統(tǒng),其系統(tǒng)的性能、可靠性、可維護性和操作方便性得到了保障。</p><p>  該系統(tǒng)的主要功能是對現(xiàn)行稅法及相關(guān)規(guī)章制度規(guī)定的報表資料進行電子化,面向?qū)ο蟮腄elphi開發(fā)工具保障了系統(tǒng)的易實現(xiàn)性、易修改性。</p>

23、<p><b>  第三章邏輯方案</b></p><p><b>  3.1數(shù)據(jù)流程分析</b></p><p>  該系統(tǒng)要處理14種報表、共72張報表資料,對這72張報表資料錄入后要完成系統(tǒng)自動結(jié)轉(zhuǎn)、自動計算、自動校驗等功能,半進行報表的打印、查詢和電子數(shù)據(jù)的導(dǎo)出。在這之前,還要對納稅人的基本信息進行維護,對納稅人自身的信息進行定

24、義、對所適用的報表種類進行選擇后進行表集的初始化和原始資料的錄入。</p><p>  3.1.1納稅人基本信息數(shù)據(jù)流程分析</p><p>  圖3.1 納稅人基本信息維護數(shù)據(jù)流程圖</p><p>  納稅人以系統(tǒng)管理員身份登錄稅務(wù)信息采集系統(tǒng)后,首先要進行本納稅人基本信息的維護錄入,包括納稅人的識別號、納稅人名稱、企業(yè)注冊類型、行業(yè)等數(shù)據(jù)項后并進行操作員的信

25、息維護;然后選擇該納稅人所要使用的表集,和一些開關(guān)項的選擇;最后是對所選用的表集進行初始化、并對相應(yīng)的原始資料進行錄入,完成該系統(tǒng)的啟用工作。</p><p>  3.1.2納稅人稅務(wù)信息采集數(shù)據(jù)流程分析</p><p>  圖3.2 納稅人稅務(wù)信息采集流程圖</p><p><b>  3.2數(shù)據(jù)流描述</b></p><

26、;p>  圖3.4 數(shù)據(jù)流示意圖</p><p><b>  3.3數(shù)據(jù)表描述</b></p><p>  該系統(tǒng)要完成納稅人以下信息的維護,并進行相關(guān)的系統(tǒng)初始化設(shè)置:</p><p>  表3.1 系統(tǒng)管理員身份登錄入的功能菜單表</p><p>  該系統(tǒng)把關(guān)系密切的報表組合在一起形成一個個表集,把72張

27、報表分為14個表集,每個表集及報表都是該系統(tǒng)的菜單項。該系統(tǒng)要完成以下表集的數(shù)據(jù)報表采集:</p><p>  表3.2 以一般操作員身份登錄系統(tǒng)后的功能菜單</p><p><b>  3.4基本加工說明</b></p><p>  數(shù)據(jù)加工是以各稅種法定申報為主,結(jié)合相關(guān)稅務(wù)數(shù)據(jù)采集,進行表內(nèi)、表間的數(shù)據(jù)加工,這與其他的信息管理有所不同,

28、此系統(tǒng)只負責數(shù)據(jù)的采集與導(dǎo)出,數(shù)據(jù)的接收與接收后的加工由現(xiàn)有的征管信息系統(tǒng)、通用信息采集匯總軟件、重點稅源接收系統(tǒng)接收后再進行后臺的數(shù)據(jù)加工。</p><p>  第四章系統(tǒng)總體結(jié)構(gòu)設(shè)計</p><p><b>  4.1軟件設(shè)計過程</b></p><p>  軟件設(shè)計過程如圖4.1所示</p><p>  圖4.1

29、 軟件設(shè)計過程圖</p><p><b>  4.2軟件模塊設(shè)計</b></p><p>  圖4.2 系統(tǒng)模塊即功能菜單示意圖</p><p><b>  4.3開發(fā)方法概述</b></p><p>  圖4.3 軟件開發(fā)方法流程圖</p><p>  4.3.1開發(fā)工具

30、的選擇</p><p>  經(jīng)過充分考慮,我們決定使用Borland公司開發(fā)的、著名的可視化軟件開發(fā)工具——DELPHI作為該系統(tǒng)的開發(fā)工具?!罢嬲某绦騿T用C,聰明的程序員用Delphi”,這句話是對Delphi最經(jīng)典、最實在的描述。Delphi被稱為第四代編程語言,它具有簡單、高效、功能強大的特點。Delphi具有以下的特性:</p><p>  (1)可視化的開發(fā)環(huán)境(IDE)<

31、;/p><p>  可視化開發(fā)環(huán)境(Integrated Development Environment IDE)通常分為三個組成部分:編輯器、調(diào)試器和窗體設(shè)計器。和大多數(shù)現(xiàn)代RAD(快速應(yīng)用開發(fā))工具一樣,這三部分是協(xié)同工作的。Delphi 的窗體設(shè)計器支持可視化窗體的繼承和鏈接。</p><p>  (2)基于窗體和面向?qū)ο螅∣OP)的方法</p><p>  OO

32、P的英文全稱是Object Oriented Programming,翻譯過來就是面向?qū)ο缶幊?。OOP是一種非常重要的編程思想。大家知道,Delphi的語言基礎(chǔ)是 Object Pascal。這是Borland在傳統(tǒng)的Pascal語言中增加了面向?qū)ο蟮奶匦院蟀l(fā)展而成,并且特地冠以O(shè)bject的字樣,以示與傳統(tǒng)的Pascal語言的差別, 可見面向?qū)ο蠹夹g(shù)對其影響之大。可以說,Delphi構(gòu)建在Object Pascal的基礎(chǔ)之上,而Obj

33、ect Pascal構(gòu)建在面向?qū)ο蠹夹g(shù)之上。事實上,不但Delphi,C++、Java等其他許多現(xiàn)代編程語言的基礎(chǔ)也是OOP(Visual Basic不完全地支持OOP)。OOP有三個主要的特征:</p><p>  一是封裝(encapsulation)。這是OOP的第一個特征。就是把數(shù)據(jù)和代碼結(jié)合在一起,并隱藏了實現(xiàn)的細節(jié)。使得除了該對象方法以外的任何東西都不能使用這些數(shù)據(jù)。封裝擴展了方法的實現(xiàn),意味著對象的

34、內(nèi)部工作細節(jié)除了該對象以外的任何東西都是不可用的。那些可以被外部代碼訪問的成員稱之為類的接口。這樣做有什么好處呢?首先,這讓類的作者可以檢測被賦值的內(nèi)容。比如,用戶可能給一個對象賦予13月40日這樣的無效日期。而在隱含了一些成員之后,類的作者可以在方法的代碼中檢測這些值是否有效,從而大大地減少了產(chǎn)生錯誤的機會。其次,使用規(guī)范的類,作者可以隨時修改類內(nèi)部的代碼,而使用該類的代碼卻無需任何修改!這樣使得代碼的維護成了一件輕松的事件,特別是對

35、于多人協(xié)作的大型軟件而言。</p><p>  二是繼承。繼承是指一個新的對象能夠從父對象中獲取屬性和方法,首選建立通用對象,然后創(chuàng)建這些通用對象的有專用功能的子對象。</p><p>  通過這種繼承的機制,類不再僅僅是數(shù)據(jù)和方法的封裝,它提供了開放性。你可以方便地繼承一個功能強大的類,然后添加進自己需要的特性,同時,你又不需要對基類進行任何的修改。相反,原作者對基類的任何改動,都可以在

36、你的新類中立即反映出來。這非常符合代碼的重用要求。</p><p>  這種繼承機制也非常符合現(xiàn)實世界中的情形??梢栽O(shè)想,一般意義上的“動物”是一個類,具有自己的一些特征(成員);而“狗”是“動物”的派生類,它具有動物的所有特征,同時還具有自己獨有的特征(四條腿,汪汪叫,等等)。而“狗”這個類可以繼續(xù)派生下去,例如“黑狗”“白狗”,它們除了保留狗的全部特征之外,還具有自己的特征(黑顏色,白顏色,等等)。而具體到一

37、只活生生的狗,可以認為它就是“黑狗”或“白狗”(或其他什么狗)的一個實例(對象)。</p><p>  OOP這種對現(xiàn)實世界的模擬不僅極大地簡化了代碼的維護,而且使得整個編程思想產(chǎn)生了革命性的變化,較之模塊化編程有了飛躍的進步。</p><p>  三是多態(tài)。從字面上說,是指多種形狀。調(diào)用一個對象變量的方法時,實際被調(diào)用的代碼與實際在變量中的對象的實例有關(guān)。這個非常重要的特點大大地增加了代

38、碼的可復(fù)用性,還具有簡潔和維護性好的特點。眾所周知,Pascal以及Object Pascal是一種類型定義嚴格的語言,你不能將某個類型的值賦予不同類型的變量,例如將一個整型值賦予布爾型變量,將會導(dǎo)致出錯。但是,這個規(guī)則在涉及到OOP領(lǐng)域時,出現(xiàn)了一個重要的例外,那就是:可以將一個子類的值賦予一個父類類型的變量。但倒過來卻是不行的,一個父類的值決不能賦予一個子類類型的變量。如果將這個原則放到現(xiàn)實世界中,那就很容易理解了:“狗”繼承自“動

39、物”,因為狗也是一種動物。所以可以將一個“狗”類型的值賦予“動物”類型的變量,因為“狗”具有“動物”的一切特征。但反過來,“動物”不具有“狗”的所有特征,因此反向賦值是不行的。</p><p><b>  (3)高速的編譯器</b></p><p>  快速的編譯器可以使你逐步遞進地開發(fā)軟件,經(jīng)常地修改源代碼、重新編譯、測試、再修改、再編譯、再測試……形成這樣一個良好

40、的開發(fā)循環(huán)。如果編譯速度很慢,開發(fā)者就不得不分批地修改代碼,每次編譯前進行多處修改以適應(yīng)一個低效的循環(huán)過程。提高運行效率、節(jié)約運行時間、生成二進制代碼更為短小,其優(yōu)越性是不言而喻的。也許Pascal編譯器最著名的特點就是速度快,而Delphi正是建立在這種編譯器的基礎(chǔ)之上的。事實上,它可能是針對Windows的最快的高級語言本地代碼編譯器。以往速度很慢的C++編譯器在近年來取得了很大的進步,增加了鏈接和各種緩存策略,尤其是在Visual

41、 C++和C++Builder 中。但即便如此,C++的編譯器還是比Delphi 的慢了幾倍。</p><p>  (4)強大的數(shù)據(jù)庫支持</p><p>  由于Borland本身缺少一種數(shù)據(jù)庫計劃,因此Delphi保留了我們認為是所有工具中最靈活的數(shù)據(jù)庫結(jié)構(gòu)。對大多數(shù)基于本地、客戶/服務(wù)器和ODBC數(shù)據(jù)庫平臺的應(yīng)用程序來說,BDE的功能都非常強大。如果你對此不滿意,可以避開使用BDE以

42、支持新的本地ADO組件。如果你沒有裝ADO,可以自己創(chuàng)建數(shù)據(jù)訪問類或者購買第三方數(shù)據(jù)訪問解決方案。此外,MIDAS(Multitier Distributed Application Services Suite)使對數(shù)據(jù)源的多層訪問更易于實現(xiàn)。</p><p>  (5)強大而成熟的組件技術(shù)</p><p>  組件是可視化編程的基礎(chǔ),開發(fā)人員用它們來設(shè)計用戶界面以及提供給應(yīng)用程序的一些

43、非可視化性能。對于應(yīng)用程序開發(fā)者來說,組件就是他們從組件面板上取得的并放到窗口上的某種事物。自從Borland在Turbo Pascal for Windows中第一次引入了Object Windows Library(OWL),傳統(tǒng)的Windows得到了大大的簡化。以前,許多冗長乏味的工作需要自己來編寫代碼,現(xiàn)在,OWL對象會自動地合理地完成這些工作。你不必再編寫冗長的case 語句來捕獲消息,或一長串代碼來管理Windows類;OW

44、L將為你代勞。Delphi引入的Visual Component Library(VCL)是OWL的延續(xù)。原則上,VCL與OWL相似,都是基于對象模型,但實現(xiàn)上有本質(zhì)的不同。VCL是專為Delphi可視化開發(fā)環(huán)境設(shè)計的。當設(shè)計可視化程序時,不必寫代碼來建立窗口或?qū)υ捒颍灰薷慕M件的行為和可視化屬性即可。</p><p>  和VC相比,Delphi更簡單、更易于掌握,而在功能上卻絲毫不遜色;和VB相比,Delp

45、hi則功能更強大、更實用??梢哉fDelphi同時兼?zhèn)淞薞C功能強大和VB簡單易學的特點。它一直是程序員至愛的編程工具。隨著我國信息化程度的不斷提高,越來越多的職能機關(guān)有了自己專用的操作軟件,這一方面是為了滿足自身的特性要求,另一方面是為了提高整體的管理水平和辦事效率,同時有利于在行業(yè)上進行規(guī)范。我們知道辦公、檔案等方面的管理在每個行業(yè)都是相通的,因此可以選用通用的管理軟件,但在每個行業(yè)的具體問題的處理上,方法和規(guī)定是千差萬別的,如何抽象

46、出這種種不同將其分化為計算機操作的規(guī)范,就是我們的政務(wù)信息化所要解決的主要問題。</p><p>  4.3.2數(shù)據(jù)庫的選擇</p><p>  Access是Office辦公套件中一個極為重要的組成部分。剛開始時微軟公司是將Access單獨作為一個產(chǎn)品進行銷售的,后來微軟發(fā)現(xiàn)如果將Access捆綁在OFFICE中一起發(fā)售,將帶來更加可觀的利潤,于是第一次將Access捆綁到OFFICE9

47、7中,成為OFFICE套件中的一個重要成員?,F(xiàn)在它已經(jīng)成為Office辦公套件中不可缺少的部件了。自從1992年開始銷售以來,Access 已經(jīng)賣出了超過6000萬份,現(xiàn)已成為世界上最流行的桌面數(shù)據(jù)庫管理系統(tǒng)。它提供了數(shù)據(jù)存儲庫,可以使用桌面數(shù)據(jù)庫文件把數(shù)據(jù)庫文件置于網(wǎng)絡(luò)文件服務(wù)器,與其他網(wǎng)絡(luò)用戶共享數(shù)據(jù)庫。Access 是一種關(guān)系數(shù)據(jù)庫工具,關(guān)系數(shù)據(jù)庫是已開發(fā)的最通用的數(shù)據(jù)庫之一。如上所述,Access 作為關(guān)系數(shù)據(jù)庫開發(fā)具備了許多優(yōu)

48、點,可以在一個數(shù)據(jù)包中同時擁有桌面數(shù)據(jù)庫的便利和關(guān)系數(shù)據(jù)庫的強大功能。另外因為它同樣屬于Microsoft家族,與Windows操作系統(tǒng)無縫對接,增強了它在Windows平臺運行穩(wěn)定性,所以選用了該桌面數(shù)據(jù)庫系統(tǒng)。</p><p>  4.4數(shù)據(jù)庫的設(shè)計過程</p><p>  在我們對數(shù)據(jù)庫操作進行講解前,我們覺得有必要向大家介紹一下關(guān)系型數(shù)據(jù)庫這個概念,因為我們覺得無論是你做什么樣的系

49、統(tǒng),都或多或少要接觸到數(shù)據(jù)庫,而現(xiàn)在提到數(shù)據(jù)庫,當然就是關(guān)系型數(shù)據(jù)庫了。那么,什么是關(guān)系型數(shù)據(jù)庫(RDB)呢?</p><p>  在關(guān)系型數(shù)據(jù)庫中數(shù)據(jù)以行和列的形式存儲,以便于用戶理解,這一系列的行和列被稱為表,一組表便組成了數(shù)據(jù)庫。在關(guān)系數(shù)據(jù)庫中:各數(shù)據(jù)項之間用關(guān)系來組織,關(guān)系(relationship)是表之間的一種連接,通過關(guān)系,我們可以更靈活地表示和操縱數(shù)據(jù);另外,用戶可以非常方便的用查詢(Query)

50、來檢索數(shù)據(jù)庫中的數(shù)據(jù),一個Query是一個用于指定數(shù)據(jù)庫中行和列的SELECT語句。</p><p>  4.4.1新建一個數(shù)據(jù)庫</p><p>  創(chuàng)建任何一個數(shù)據(jù)庫的第一步是仔細的規(guī)劃數(shù)據(jù)庫,設(shè)計必須是靈活的、有邏輯的。創(chuàng)建一個數(shù)據(jù)庫結(jié)構(gòu)的過程被認為是數(shù)據(jù)模型設(shè)計。</p><p><b>  標識需要的數(shù)據(jù);</b></p>

51、<p>  收集被標識的字段到表中;</p><p><b>  標識主關(guān)鍵字字段;</b></p><p>  繪制一個簡單的數(shù)據(jù)圖表;</p><p><b>  規(guī)范數(shù)據(jù);</b></p><p>  標識指定字段的信息;</p><p><b>

52、;  創(chuàng)建物理表。</b></p><p>  4.4.2 修改已建的數(shù)據(jù)庫</p><p>  數(shù)據(jù)庫的修改分為:添加、編輯和刪除記錄。這三種操作均可由DELPHI 7.0 創(chuàng)建的程序來完成,下面的章節(jié)將詳細描述實現(xiàn)的具體方法。</p><p>  4.4.3實現(xiàn)數(shù)據(jù)庫之間的聯(lián)系</p><p>  數(shù)據(jù)庫之間的關(guān)系指明兩個庫之

53、間共享一個共同的關(guān)鍵字值。一個連接是指一種虛擬的表,這種表是在當用戶要求從相互關(guān)聯(lián)的各個不同的表中獲取信息時建立的,關(guān)鍵字段用于在相互連接的不同表中查找匹配的記錄。一個更高級的連接形式稱為自連接。這種連接是指一個表被連接到它自己的一個字段,或在不同的紀錄中由重復(fù)數(shù)據(jù)的組合字段。數(shù)據(jù)庫中有三種不同類型的關(guān)鍵字:主關(guān)鍵字、組合關(guān)鍵字和外關(guān)鍵字。在表中使用的關(guān)鍵字類型用于描述庫表示什么以及在數(shù)據(jù)庫中如何與其它的庫建立關(guān)系。</p>

54、<p>  4.4.4數(shù)據(jù)庫結(jié)構(gòu)設(shè)計</p><p>  數(shù)據(jù)結(jié)構(gòu)設(shè)計從某種意義上說是設(shè)計活動中最重要的一個,因為數(shù)據(jù)結(jié)構(gòu)對程序結(jié)構(gòu)和過程的復(fù)雜性有直接的影響,從而在很大程度上決定了軟件的質(zhì)量。無論采用哪一種軟件設(shè)計技術(shù),沒有良好的數(shù)據(jù)結(jié)構(gòu),不可能導(dǎo)出良好的程序結(jié)構(gòu)。</p><p>  數(shù)據(jù)設(shè)計是為在需求規(guī)格說明中定義的那些數(shù)據(jù)對象選擇合適的邏輯表示,并確定可能作用的在這些

55、邏輯結(jié)構(gòu)上的所有操作。</p><p>  通常,數(shù)據(jù)設(shè)計方案不是唯一的,有時需進行算法復(fù)雜懷分析之后才能從多種設(shè)計中找出最佳設(shè)計方案。</p><p>  4.4.4.1本系統(tǒng)采用的用戶表</p><p>  表4.1 系統(tǒng)操作員數(shù)據(jù)表</p><p>  4.4.4.2本系統(tǒng)稅務(wù)信息所用的數(shù)據(jù)表</p><p>

56、  表4.2 系統(tǒng)使用的各數(shù)據(jù)表名稱表</p><p>  結(jié)構(gòu)程序設(shè)計的思想,應(yīng)該在軟件設(shè)計中體現(xiàn)出來,但這并不排除為效率或其他原因?qū)Y(jié)構(gòu)程序設(shè)計作一點修改。隨著面向?qū)ο?、軟件重用等新的軟件開發(fā)方法的發(fā)展,更現(xiàn)實、更有效的開發(fā)途徑可能是自頂向下和自底向上兩種方法的有機結(jié)合。</p><p><b>  4.5表集的定制</b></p><p&g

57、t;  前面說過,在開發(fā)采集時我們引入了“表集”要概念。表集是一張或若干張相互關(guān)聯(lián)的報表集合。對于一個納稅人來說,這十幾種表集不可能都用到,比如,增值稅一般納稅人就不可能有增值稅小規(guī)模納稅申報表。那么,如何來定制納稅人用到的這些表集呢?</p><p><b>  4.6操作員的設(shè)置</b></p><p>  我們把操作員分成二類,一類是普通用戶,負責報表數(shù)據(jù)的錄入

58、,打印報表、生成接口文件等;一種類是系統(tǒng)管理員,負責采集系統(tǒng)的基本信息錄入、申報表(表集)的選擇、對選定的表集初始化等。只有在基本信息管理窗口選中的表集才能在數(shù)據(jù)采集中顯示出來。而且,表集的增加(原來不是一般納稅人,現(xiàn)在是了,要增加增值稅一般納稅人申報表)或刪除(原來是一般納稅人,現(xiàn)在被取消了,是小規(guī)模納稅人了,要刪除增值稅一般納稅人申報表)不會影響其他表集的操作。</p><p>  本系統(tǒng)的使用者是廣大納稅人

59、,計算機操作水平參差不齊,這樣設(shè)置的好處,可以避免操作員的誤操作導(dǎo)致系統(tǒng)的紊亂。</p><p>  4.6系統(tǒng)總體的安全性、可靠性方案與措施</p><p>  在安全性與可靠性方面,本系統(tǒng)主要是采用用戶登錄管理,使用具有相應(yīng)權(quán)限的人員才能操作本系統(tǒng),對Access數(shù)據(jù)庫采用口令保護,對數(shù)據(jù)庫內(nèi)保存的用戶口令采用密文方式存放。</p><p>  采用了數(shù)據(jù)備份與

60、恢復(fù)模塊,讓用戶可以隨時將數(shù)據(jù)備份到安全的地方,當系統(tǒng)因病毒、誤刪除、操作系統(tǒng)崩潰等原因,導(dǎo)致該系統(tǒng)不能正常運轉(zhuǎn)時,可能恢復(fù)此系統(tǒng)。</p><p>  因為Access有個致命的缺陷就是,當數(shù)據(jù)庫過一段時間讀寫操作后,數(shù)據(jù)庫會大幅度膨脹,讀寫速度會越來越慢。為此,我們設(shè)置了數(shù)據(jù)壓縮模塊,使用該模塊,能加快系統(tǒng)的運行速度。</p><p><b>  第五章詳細設(shè)計</b&

61、gt;</p><p>  軟件的詳細設(shè)計是對總體設(shè)計的局部細化和實現(xiàn),對各模塊進行具體化實現(xiàn),體現(xiàn)在代碼設(shè)計、人機界面設(shè)計、數(shù)據(jù)庫設(shè)計和模塊實現(xiàn)上。</p><p><b>  5.1代碼設(shè)計</b></p><p>  Delphi是面向?qū)ο蟮某绦蛟O(shè)計語言,很大程度上不需要太多的程序源代碼的編寫。本系統(tǒng)采取模塊化代碼設(shè)計,在代碼設(shè)計中我們基

62、本做到了</p><p>  編制易于修改和維護的代碼,在模塊化和面向?qū)ο笤敿氃O(shè)計的基礎(chǔ)上,進一步按屬性劃分程序。</p><p>  編制易于測試的代碼,測試包括單元測試、綜合測試、確認測試和系統(tǒng)集成測試,若在編碼階段考慮到測試的需要,在編程風格上會有很大不同。一般來說,人們總是通過運用條件編譯語句盡早設(shè)計出測試用例,采用統(tǒng)一的命名管理這些測試用例并適時地進行回歸測試等一系列措施提高程序

63、的可測試性。</p><p>  將編程與編文檔的工作統(tǒng)一開來,多數(shù)程序員都厭倦編寫文檔,但只有配套的文檔完成后,整個軟件開發(fā)才千結(jié)束。一個程序段的文檔就包括下列內(nèi)容:代碼的功能、代碼的完成者、代碼在整個軟件系統(tǒng)中的位置、代碼編制復(fù)審的時間、保留代碼的原因、代碼中如何使用數(shù)據(jù)結(jié)構(gòu)和算法。</p><p>  編程中采用統(tǒng)一的標準和約定,降低了程序復(fù)雜性。</p><p&

64、gt;  5.1.1代碼設(shè)計中防止同時出現(xiàn)多個應(yīng)用程序?qū)嵗?lt;/p><p>  多實例指同時有一個應(yīng)用程序的多個副本在運行。同一個應(yīng)用程序的多個副本可以相互獨立地同時運行,是Win32操作系統(tǒng)提供的一個功能。但我們開發(fā)《增值稅納稅申報系統(tǒng)》時,沒有限制應(yīng)用程序的多個副本同時運行,有的納稅人在使用時就出現(xiàn)了數(shù)據(jù)錄入錯誤。納稅人在操作時雙擊桌面圖標啟動申報系統(tǒng)時由于計算機系統(tǒng)比較慢,應(yīng)用系統(tǒng)一時出不來,操作人員就又雙

65、擊桌面圖標。這樣就導(dǎo)致同時運行多個副本。在一個副本錄入完數(shù)據(jù)后退出系統(tǒng),在另一個副本中沒有錄入數(shù)據(jù)就退出系統(tǒng),到下一次啟動應(yīng)用系統(tǒng)時發(fā)現(xiàn)數(shù)據(jù)沒有了。為了防止此類現(xiàn)象的發(fā)生,我們就在開發(fā)時限制多個副本的同時運行。</p><p>  在16位的Windows中,要防止出現(xiàn)多個實例是很簡單的,因為系統(tǒng)變量hPrevInst可以被用來判斷是否有其他的實例存在。當hPrevInst變量不為0時,表示已經(jīng)有別的應(yīng)用程序?qū)嵗?/p>

66、在運行。然而,在Win32系統(tǒng)中每個進程之間有R32絕緣層來彼此隔絕。因此,在Win32系統(tǒng)中變量hPrevInst的值總為0。</p><p>  另一種既適合Win32系統(tǒng)又適合于16位Windows的技術(shù),是調(diào)用FindWindow() API函數(shù)去搜索一個已激活的程序窗口。但是,這種方法有兩個缺陷:一是它只能基于窗口類名或標題來搜索窗口,但是在整個系統(tǒng)中窗口很可能會重復(fù)。所以,這樣做是不可靠的。而利用窗口

67、的標題的方法也有問題,因為窗口的標題有可能發(fā)生變化(以Delphi和Word為例,每次打開不同的文件,它們的標題是不同的)所以這種方法不可取。另一個缺陷是它每次搜索都要遍歷所有窗口,這樣執(zhí)行起來非常慢。</p><p>  在Win32系統(tǒng)中最好的解決辦法是利用那些不依賴于進程的API對象。當一個應(yīng)用程序首次進行時,我們就使一個互斥對象被API函數(shù)CreateMutex()創(chuàng)建。這個函數(shù)的參數(shù)lpName是一個唯

68、一標識互斥對象的字符串。當應(yīng)用程序的實例要運行前,它首先要用OpenMutex()來打開互斥對象,如果已經(jīng)有一個CreateMutex()創(chuàng)建的互斥對象則返回一個非零值。</p><p>  另外,當試圖運行另一個程序?qū)嵗龝r,使第一個實例被激活。對于這個問題最好的解決辦法是在首次運行時,利用RegisterWindowMessage()函數(shù)注冊一個消息,并在應(yīng)用程序中創(chuàng)建唯一的消息標識符。然后,利用第一個實例對這

69、個消息的響應(yīng)使它被第二個實例激活。</p><p><b>  程序清單如下:</b></p><p>  unit MultInst;</p><p><b>  interface</b></p><p><b>  const</b></p><p&g

70、t;  MI_QUERYWINDOWHANDLE = 1;</p><p>  MI_RESPONDWINDOWHANDLE = 2;</p><p>  MI_ERROR_NONE = 0;</p><p>  MI_ERROR_FAILSUBCLASS = 1;</p><p>  MI_ERROR_CREATIN

71、GMUTEX = 2;</p><p>  // Call this function to determine if error occurred in startup.</p><p>  // Value will be one or more of the MI_ERROR_* error flags.</p><p>  function GetMIErr

72、or: Integer;</p><p>  implementation</p><p>  uses Forms, Windows, SysUtils;</p><p><b>  const</b></p><p>  UniqueAppStr = 'DDG.I_am_the_Taxsbxt!';&

73、lt;/p><p><b>  var</b></p><p>  MessageId: Integer;</p><p>  WProc: TFNWndProc;</p><p>  MutHandle: THandle;</p><p>  MIError: Integer;</p>

74、<p>  function GetMIError: Integer;</p><p><b>  begin</b></p><p>  Result := MIError;</p><p><b>  end;</b></p><p>  function NewWndProc(Ha

75、ndle: HWND; Msg: Integer; wParam, lParam: Longint):</p><p>  Longint; stdcall;</p><p><b>  begin</b></p><p>  Result := 0;</p><p>  // If this is the regist

76、ered message...</p><p>  if Msg = MessageID then</p><p><b>  begin</b></p><p>  case wParam of</p><p>  MI_QUERYWINDOWHANDLE:</p><p>  // A new

77、 instance is asking for main window handle in order</p><p>  // to focus the main window, so normalize app and send back</p><p>  // message with main window handle.</p><p><b>

78、;  begin</b></p><p>  if IsIconic(Application.Handle) then</p><p><b>  begin</b></p><p>  Application.MainForm.WindowState := wsNormal;</p><p>  Appli

79、cation.Restore;</p><p><b>  end;</b></p><p>  PostMessage(HWND(lParam), MessageID, MI_RESPONDWINDOWHANDLE,</p><p>  Application.MainForm.Handle);</p><p><

80、;b>  end;</b></p><p>  MI_RESPONDWINDOWHANDLE:</p><p>  // The running instance has returned its main window handle,</p><p>  // so we need to focus it and go away.</p&g

81、t;<p><b>  begin</b></p><p>  SetForegroundWindow(HWND(lParam));</p><p>  Application.Terminate;</p><p><b>  end;</b></p><p><b>  e

82、nd;</b></p><p><b>  end</b></p><p>  // Otherwise, pass message on to old window proc</p><p><b>  else</b></p><p>  Result := CallWindowPr

83、oc(WProc, Handle, Msg, wParam, lParam);</p><p><b>  end;</b></p><p>  procedure SubClassApplication;</p><p><b>  begin</b></p><p>  // We subcla

84、ss Application window procedure so that</p><p>  // Application.OnMessage remains available for user.</p><p>  WProc := TFNWndProc(SetWindowLong(Application.Handle, GWL_WNDPROC,</p><p

85、>  Longint(@NewWndProc)));</p><p>  // Set appropriate error flag if error condition occurred</p><p>  if WProc = nil then</p><p>  MIError := MIError or MI_ERROR_FAILSUBCLASS;&l

86、t;/p><p><b>  end;</b></p><p>  procedure DoFirstInstance;</p><p>  // This is called only for the first instance of the application</p><p><b>  begin<

87、;/b></p><p>  // Create the mutex with the (hopefully) unique string</p><p>  MutHandle := CreateMutex(nil, False, UniqueAppStr);</p><p>  if MutHandle = 0 then</p><p&

88、gt;  MIError := MIError or MI_ERROR_CREATINGMUTEX;</p><p><b>  end;</b></p><p>  procedure BroadcastFocusMessage;</p><p>  // This is called when there is already an ins

89、tance running.</p><p><b>  var</b></p><p>  BSMRecipients: DWORD;</p><p><b>  begin</b></p><p>  // Prevent main form from flashing</p>&

90、lt;p>  Application.ShowMainForm := False;</p><p>  // Post message to try to establish a dialogue with previous instance</p><p>  BSMRecipients := BSM_APPLICATIONS;</p><p>  Broa

91、dCastSystemMessage(BSF_IGNORECURRENTTASK or BSF_POSTMESSAGE,</p><p>  @BSMRecipients, MessageID, MI_QUERYWINDOWHANDLE,</p><p>  Application.Handle);</p><p><b>  end;</b>

92、</p><p>  procedure InitInstance;</p><p><b>  begin</b></p><p>  SubClassApplication; // hook application message loop</p><p>  MutHandle := OpenMutex(MUT

93、EX_ALL_ACCESS, False, UniqueAppStr);</p><p>  if MutHandle = 0 then</p><p>  // Mutex object has not yet been created, meaning that no previous</p><p>  // instance has been created

94、.</p><p>  DoFirstInstance</p><p><b>  else</b></p><p>  BroadcastFocusMessage;</p><p><b>  end;</b></p><p>  initialization</p&

95、gt;<p>  MessageID := RegisterWindowMessage(UniqueAppStr);</p><p>  InitInstance;</p><p>  finalization</p><p>  // Restore old application window procedure</p><p&

96、gt;  if WProc <> Nil then</p><p>  SetWindowLong(Application.Handle, GWL_WNDPROC, LongInt(WProc));</p><p>  if MutHandle <> 0 then CloseHandle(MutHandle); // Free mutex</p>&

97、lt;p><b>  end.</b></p><p>  5.1.2代碼設(shè)計中避免創(chuàng)建一個窗體的多個實例</p><p>  在本系統(tǒng)中由于有幾十個窗體存在,如果在應(yīng)用系統(tǒng)運行時同時創(chuàng)建將使系統(tǒng)的啟動時間太長,消耗大量的內(nèi)存,影響系統(tǒng)的性能。所以,我們就在程序中用到窗體的時候才創(chuàng)建它,用完就釋放掉。那么,在使用Application.CreateForm()或

98、Tform.Create()來創(chuàng)建窗體的實例就要判斷相同的實例是否存在。對有模式的窗體,可以用如下的方法來解決:</p><p><b>  begin</b></p><p>  if not Assigned(SomeForm) then </p><p><b>  begin</b></p><

99、p>  Application.CreateForm(TsomeForm,SomeForm);</p><p><b>  Try</b></p><p>  SomeForm.ShowModal;</p><p><b>  Finally</b></p><p>  SomeForm.Fr

100、ee;</p><p>  SomeForm:=nil;</p><p><b>  End;</b></p><p><b>  End</b></p><p><b>  Else</b></p><p>  SomeForm.ShowModal;&

101、lt;/p><p><b>  End;</b></p><p>  對于無模式的窗體來說,程序代碼并不知道什么時候刪除窗體實例。因此,必須在處理OnDestroy事件的處理方法中把窗體的實例賦值為nil。</p><p>  5.1.3代碼設(shè)計中定義自己的消息</p><p>  消息,就是指Windows發(fā)出的一個通知,

102、告訴應(yīng)用程序某個事情發(fā)生了。例如,單擊鼠標,改變窗口尺寸、按下鍵盤上的一個鍵都會使Windows發(fā)送一個消息給應(yīng)用程序。在本系統(tǒng)中,為了告訴主程序,子程序(納稅人基本信息錄入模塊)中某一特殊事件發(fā)生了一些變化(如納稅人的名稱變了),于是子程序就向主程序發(fā)送一個自定義的消息,主程序在收到消息時都要檢查這個消息是否是自定義的,如果是就進行相應(yīng)的處理,不是就跳過。Delphi提供了幾種在一個應(yīng)用程序內(nèi)部發(fā)送消息的方式:調(diào)用PerForm()(

103、這種方式不依賴于Windows API),以及調(diào)用SendMessage()、PostMessage() API函數(shù)。在本系統(tǒng)中用的是SendMessage()。</p><p>  5.1.4代碼設(shè)計中加強了包的運用</p><p>  Delphi的包能把應(yīng)用程序的部分代碼放到一個單獨的模塊中,它能被多個應(yīng)用程序所共享。可以把包看作是若干個單元集中在一起以類似于DLL的形式存儲的模塊(

104、Borland Package Library 或BPL文件)。應(yīng)用程序在運行的時候鏈接上這些包中的單元而不是在編譯/鏈接時,因為這些單元的代碼存在于BPL文件而不是存在于EXE或DLL中,所以EXE和DLL的長度變得更短。BPL文件只能被Delphi所共享,不用被其他開發(fā)工具所共享,這是它的局限性。</p><p>  5.1.5代碼設(shè)計中實現(xiàn)了DLL的運用</p><p>  動態(tài)鏈接

105、庫(Dynamic Linking Library DLL)是程序模塊,它包括代碼、數(shù)據(jù)或資源,能夠被其他的Windows應(yīng)用程序共享。DLL的主要特點之一是應(yīng)用程序可以在運行時調(diào)入代碼執(zhí)行,而不是在編譯時鏈接代碼。因此,多個應(yīng)用程序可以共享同一個DLL代碼。另一個特點是有利于應(yīng)用程序的模塊化。這樣就簡化了應(yīng)用程序的修改,因為一般只需修改DLL,而不是整個應(yīng)用程序?!∨cBPL不同的時,它可以被其他開發(fā)工具所共享。</p>

106、<p>  在《稅務(wù)信息采集系統(tǒng)》中,它導(dǎo)出的XML接口文件同時都要對文件的內(nèi)容生成一個CRC碼存放在一個同名的校驗文件中。生成CRC碼的過程就是一個DLL文件(getcrcprj.dll)</p><p><b>  5.2人機界面設(shè)計</b></p><p>  界面設(shè)計一般只是作為附屬品;用戶模型概括了終端用戶的大致情況,只有對假想用戶的情況,包括年

107、齡、性別、心理情況、教育、文化、種族背景、動機、目的和個性等有所才能設(shè)計出有效的用戶界面;系統(tǒng)假想是終端用戶想象的系統(tǒng)映象,它描述了期望系統(tǒng)能提供的操作,至于這些描述的準確程度,則完全依賴于用戶的發(fā)問和他對軟件和熟悉程度;系統(tǒng)映象是系統(tǒng)的外部特征(指界面形式和感觀)與所有支撐信息的總和,一般來說,若系統(tǒng)映象能與系統(tǒng)假想吻合,用戶即對系統(tǒng)感到滿意并能有效地使用它。</p><p>  在界面設(shè)計上,我們采用了系統(tǒng)登

108、錄管理、基本信息管理、稅務(wù)信息采集管理等。在數(shù)據(jù)輸入上做到了:對表間關(guān)系實現(xiàn)自動計算盡量減少用戶輸入的動作、保證信息顯示方式與數(shù)據(jù)輸入方式的協(xié)調(diào)一致、為所有輸入動作提供幫助信息。</p><p>  在菜單設(shè)計上,我們使用了表集的概念,對各稅種信息、重點稅源信息等各類信息分門別類歸集的相應(yīng)的表集中,方便用戶選擇使用;在系統(tǒng)菜單設(shè)計上,則采用了比較簡便、通用的系統(tǒng)菜單,并在工具欄提供了相應(yīng)的菜單按鈕,方便了用戶的使

109、用。</p><p>  圖5.1 稅務(wù)采集系統(tǒng)登錄界面</p><p>  圖5.2 稅務(wù)信息采集系統(tǒng)表集功能示意圖</p><p>  圖5.2 稅務(wù)信息采集系統(tǒng)系統(tǒng)管理功能圖</p><p>  圖5.2 稅務(wù)信息采集系統(tǒng)表集初始化示意圖</p><p>  5.3數(shù)據(jù)庫引擎的采用</p>

110、<p>  在數(shù)據(jù)庫引擎的采用上,我們避免采用Delphi的BDE(Borland database Engine)數(shù)據(jù)庫引擎, 由于市面上的《速達財務(wù)軟件》等系統(tǒng)采用這種數(shù)據(jù)庫引擎,與之共用時可能我們的系統(tǒng)無法正常工作。為了避免這類事件的發(fā)生,我們就放棄了BDE,而采用了第三方的數(shù)據(jù)庫引擎KADAO。KADAO是一個免費的控件,透過 Microsoft DAO Engine 存取 Microsoft Access 數(shù)據(jù)庫,并

111、能夠使用 Delphi 的數(shù)據(jù)感知構(gòu)件,速度也比BDE快,功能也比較全。用delphi處理Access數(shù)據(jù)庫后,該數(shù)據(jù)庫文件會變得越來越大,如何來壓縮數(shù)據(jù)庫文件?BDE就沒有此功能, KADAO就可以,它直接調(diào)用DAO函數(shù),可以實現(xiàn)壓縮數(shù)據(jù)庫的工作(使用CompactAccessDatabase或CompactAccessDatabaseEx)。這個工具在很多方面強于Delphi自己的驅(qū)動,支持MS Access 2000并提供源程序。

112、</p><p><b>  5.4模塊處理過程</b></p><p>  在模塊處理過程中,我們除了按現(xiàn)實業(yè)務(wù)需求,對各稅種報表等各項資料的實現(xiàn)統(tǒng)一處理,還加強了如下技術(shù)的運用。</p><p>  5.4.1XML的運用</p><p>  XML是EXtensible Markup Language的縮寫,即擴展

113、標識語言。它是Internet環(huán)境下跨平臺的、依賴于內(nèi)容的技術(shù),是這個時代中處理分部式結(jié)構(gòu)信息的選擇工具。在W3C組織領(lǐng)導(dǎo)下的工作小組發(fā)展并支持XML技術(shù),使用它來簡化通過Internet的文檔信息傳輸。XML是年輕的元語言(meta)。早在1998年,W3C就發(fā)布了XML1.0規(guī)范。內(nèi)容建設(shè)們已經(jīng)開始開發(fā)各種各樣的XML應(yīng)用程序,比如說數(shù)據(jù)標記語言MathMl,化學標記語言CML等待。XML不僅滿足了WEB開發(fā)者的需要,而且適用于任何

114、對出格出版業(yè)感興趣的人。XML屬于SGML(Standard Greneralized Markup Language 標準通用標記語言)的一個子集, 它是一種采用標記來描述文檔(數(shù)據(jù))的種類和方法。 XML是由W3C下屬的XML小組在JonBosak 的領(lǐng)導(dǎo)下于1996年完成的規(guī)范, 1998年正是成為一種W3C推薦的標準。使用過HTML的開發(fā)人員都知道, HTML是屬于樹狀結(jié)構(gòu), 并且使用<…> 和 <…./>

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論