




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 基于UML測試用例的研究和實現(xiàn)密級: UNIVERSITY 學(xué) 士 學(xué) 位 論 文THESIS OF BACHELOR( 20 年 ) 題 目 學(xué) 院: 系 專 業(yè): 班 級: 學(xué) 號: 學(xué)生姓名: 指導(dǎo)教師: 起訖日期: 摘 要計算機是一門研究用計算機進行信息表示和處理的科學(xué),這就需要我們能夠有效的表示信息,處理信息。隨著計算機的普及,信息量的增加,信息范圍的拓寬,使許多系統(tǒng)程序和應(yīng)用程序的規(guī)模很大,結(jié)構(gòu)又相當復(fù)雜,因此,為了編寫出一個“好”的程序,必須分析待處理的對象的特征及各對象之間存在的關(guān)系,這就是程序設(shè)計這所要研究的問題。計算機解決一個具體問題時,大致需要經(jīng)過下列幾個步驟:首先要從
2、具體問題中抽象出一個適當?shù)臄?shù)學(xué)模型,然后設(shè)計一個解此數(shù)學(xué)模型的算法(Algorithm),最后編出程序、進行測試、調(diào)整直至得到最終解答。尋求數(shù)學(xué)模型的實質(zhì)是分析問題,從中提取操作的對象,并找出這些操作對象之間含有的關(guān)系,然后用數(shù)學(xué)的語言加以描述。計算機算法與數(shù)據(jù)的結(jié)構(gòu)密切相關(guān),算法無不依附于具體的數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)直接關(guān)系到算法的選擇和效率。設(shè)計充分利用C#的強大力量,提高了編程效率和可靠性。算法設(shè)計是軟件工程、計算機科學(xué)及相關(guān)專業(yè)重要的專業(yè)技術(shù)基礎(chǔ)課程和關(guān)鍵性核心課程,是系統(tǒng)軟件及大型應(yīng)用軟件的重要基礎(chǔ)。本課程系統(tǒng)的介紹了軟件設(shè)計中常用的算法設(shè)計與分析方法,鍛煉學(xué)生分析問題和解決問題的能力,
3、為開發(fā)高效的軟件系統(tǒng)及相關(guān)領(lǐng)域的研究工作奠定堅實的基礎(chǔ),為學(xué)習(xí)專業(yè)課程及提高軟件設(shè)計水平打下良好的基礎(chǔ)。關(guān)鍵字 :編程;C#;窗體System Based on C#Abstract :The computer is a study of computer science and processing, which requires that we can effectively represent information, process information. With the proliferation of computers, the increase in the amount
4、of information, information on the scope of expanding, and so many systems and applications a large scale, the structure is quite complex, Therefore, in order to write a "good" program, you must analyze the pending the relationship that exists between the characteristics of the object and
5、the object, this is the program designed to study the problem. Computer to solve a specific problem, roughly the following steps: first abstract from specific issues in an appropriate mathematical model, and then design a solution of this mathematical model algorithm (Algorithm), and finally compile
6、 the program, test, adjustment until you get the final answer. Seeking the essence of the mathematical model of the problem, extract the object of the operation, and to identify the relationship between the operation target containing, and then use the language of mathematics will be described. Comp
7、uter algorithms and data related to the structure, algorithms are all attached to a specific data structure, the data structure directly related to the selection and efficiency of the algorithm. Designed to take advantage of the powerful force of the C # programming efficiency and reliability. The a
8、lgorithm design software engineering, computer science and related professional important professional and technical foundation courses and critical core curriculum is an important foundation of the system software and large-scale applications. This course introduces the software design algorithm de
9、sign and analysis methods, training students to analyze problems and problem-solving skills, and lay a solid foundation for the development of efficient software systems and related research in the field, learning curriculum and improve software design level and lay a good foundation.Keywords: Progr
10、amming; C #; Forms目 次摘要IAbstractII摘 要II1 緒論11.1 課題背景及其意義11.2 當前國內(nèi)外發(fā)展概況調(diào)研11.2.1 系統(tǒng)理論的發(fā)展11.2.2應(yīng)用技術(shù)的發(fā)展11.3 課題任務(wù)21.4 本文的組織結(jié)構(gòu)32 系統(tǒng)需求分析42.1 系統(tǒng)可行性分析42.2 功能需求分析42.5 本章小結(jié)53 系統(tǒng)概要設(shè)計63.1 系統(tǒng)功能設(shè)計63.2 系統(tǒng)的體系結(jié)構(gòu)設(shè)計73.2.1 系統(tǒng)實現(xiàn)技術(shù)73.2.2 開發(fā)語言93.2.3 系統(tǒng)結(jié)構(gòu)93.4 本章小結(jié)104 系統(tǒng)數(shù)據(jù)庫設(shè)計114.1 數(shù)據(jù)庫表結(jié)構(gòu)114.2 本章小結(jié)115 系統(tǒng)的具體實現(xiàn)125.1 數(shù)據(jù)訪問層的實現(xiàn)125
11、.1.1 配置數(shù)據(jù)庫連接125.1.2數(shù)據(jù)庫類成員125.2 業(yè)務(wù)邏輯層的實現(xiàn)135.3 頁面顯示層的實現(xiàn)135.4 本章小結(jié)156 系統(tǒng)測試166.1 系統(tǒng)測試目的166.2 測試方法166.3 測試結(jié)果166.3.1 結(jié)構(gòu)信息測試166.3.2 系統(tǒng)用戶界面測試176.3.3 系統(tǒng)登錄測試177 總結(jié)與展望187.1 總結(jié)187.2 展望18參考文獻191 緒論1.1 課題背景及其意義有限狀態(tài)自動機(FSM "finite state machine" 或者FSA "finite state automaton" )是為研究有限內(nèi)存的計算過程和某些語
12、言類而抽象出的一種計算模型。有限狀態(tài)自動機擁有有限數(shù)量的狀態(tài),每個狀態(tài)可以遷移到零個或多個狀態(tài),輸入字串決定執(zhí)行哪個狀態(tài)的遷移。有限狀態(tài)自動機可以表示為一個有向圖。有限狀態(tài)自動機是自動機理論的研究對象。經(jīng)過大學(xué)四年理論課程的學(xué)習(xí),以及校內(nèi)校外的實踐,極大的豐富了自身的理論基礎(chǔ),并且也具備了一些處理簡單問題的能力,但即將踏上社會的我深知這還遠遠不夠,因此我利用了畢業(yè)設(shè)計的機會,在老師的指導(dǎo)下去完成一個具有挑戰(zhàn)性的,其具體應(yīng)用及社會服務(wù)相結(jié)合的項目,深知通過對它的開發(fā),將對我的能力有更高層次的突破。開發(fā)軟件的一個目的是針對目前市面上的系統(tǒng)存在的功能不全,操作復(fù)雜,系統(tǒng)要求高等一系列問題,而設(shè)想一個
13、具有個性化系統(tǒng)。管理人員軟件操作的適應(yīng)時間和操作感覺這些方面都將大大的提高。給定xml格式的自動機(自動機描述了邏輯信息)(有代碼),xml里面存儲邏輯控制信息,生成腳本(這個腳本里面就是控制信息)(所謂的控制信息,就是 測試場景),這些信息是由自動機轉(zhuǎn)換來的,自動機里有什么邏輯,轉(zhuǎn)換的腳本就包含什么邏輯,然后和數(shù)據(jù)庫里的數(shù)據(jù) 合并為一個最后的執(zhí)行腳本二當自動機描述的邏輯是,加減乘除的時候,就是用來測試計算器的三數(shù)據(jù)驅(qū)動腳本是將測試輸入和期望輸出存儲在數(shù)據(jù)文件中,而不是存儲在腳本中,腳本中只存放控制信息。執(zhí)行測試時,從文件中而不是從腳本中讀取測試輸入。 1.2 當前國內(nèi)外發(fā)展概況調(diào)研1.2.1
14、 系統(tǒng)理論的發(fā)展系統(tǒng)的基本理論研究,正朝著以下幾個方向的發(fā)展:(1)系統(tǒng)研制方法的進一步系統(tǒng)化的研究。(2)系統(tǒng)研制工具的進一步改善和完善的研究。(3)系統(tǒng)模型的進一步研究。(4)信息系統(tǒng)對人、組織和社會影響的進一步研究。1.2.2應(yīng)用技術(shù)的發(fā)展C#是Microsoft為.NET平臺量身定做的語言,是基于.NET平臺的最佳語言。它不僅能輕松的完成其他語言的程序設(shè)計任務(wù),對高級程序設(shè)計任務(wù)的支持也吸引了大批的程序員,如網(wǎng)絡(luò)編程、數(shù)據(jù)庫連接1、多線程、安全和保護特性等。C#是Microsoft專用在.NET Framework平臺上進行開發(fā)的一門新型編程語言。.NET Framework由兩部分構(gòu)
15、成:托管代碼執(zhí)行的運行環(huán)境和幾乎可以完成所有編程任務(wù)的眾多類庫。雖然很多語言都能夠編寫.NET代碼,但C#是惟一針對.NET Framework而設(shè)計的語言,因此在今后幾年內(nèi),C#將會成為編寫.NET應(yīng)用程序的首選。 B/S模式:將服務(wù)器分解成一個數(shù)據(jù)服務(wù)器和一個或多個應(yīng)用服務(wù)器,從而構(gòu)成一個三層結(jié)構(gòu)體系。利用B/S構(gòu)架技術(shù),即可在內(nèi)部網(wǎng)上發(fā)布各種信息,供查詢、借閱。在查詢過程中,我們可以在客戶機通過瀏覽器實現(xiàn),不必另外安裝軟件,從而減少了維護工作量,同時還可以不斷推出新的查詢版本,以滿足用戶不斷增長的需要。C/S模式: 將系統(tǒng)分布于兩個獨立的實體客戶機和數(shù)據(jù)庫服務(wù)器中,開發(fā)的應(yīng)用程序安裝在每
16、個客戶機端,并與網(wǎng)絡(luò)服務(wù)器數(shù)據(jù)庫相連。其優(yōu)點在于人機交互方面具有更大的靈活性,在數(shù)據(jù)訪問處理速度和數(shù)據(jù)安全上有一定的優(yōu)勢;缺點是在更新客戶端服務(wù)程序時,大大增加維護量,造成維護工作困難。1.3 課題任務(wù)有多種類型的有限狀態(tài)自動機:接受器判斷是否接受輸入;轉(zhuǎn)換器對給定輸入產(chǎn)生一個輸出。常見的轉(zhuǎn)換器有 Moore 機 與 Mealy 機。Moore 機對每一個狀態(tài)都附加有輸出動作,Mealy 機對每一個轉(zhuǎn)移都附加有輸出動作。有限狀態(tài)自動機還可以分成確定與非確定兩種。非確定有限狀態(tài)自動機可以轉(zhuǎn)化為確定有限狀態(tài)自動機。有限狀態(tài)自動機識別的語言是正規(guī)語言。有限狀態(tài)自動機除了它在理論上的價值,還在數(shù)字電路
17、設(shè)計、詞法分析、文本編輯器程序等領(lǐng)域得到了應(yīng)用。自動機接受的所有字串構(gòu)成了自動機識別的語言 L(M)。非確定有限狀態(tài)自動機一個非確定有限狀態(tài)自動機(NFA "Non-deterministic finite automaton")M 是由下述元素構(gòu)成的五元組 (Q,q0,F)有窮狀態(tài)集合 Q ;有窮輸入字母表 ;轉(zhuǎn)移函數(shù) : Q × -> 2Q;初始狀態(tài) q0;終結(jié)狀態(tài)集合 F,F(xiàn) 包含于 Q 。自動機從初始狀態(tài) q0 起,逐一讀入輸入串(由輸入字母表 的字母構(gòu)成)的每一個字母,根據(jù)當前狀態(tài)、輸入字母和轉(zhuǎn)移函數(shù) 決定自動機的下一步狀態(tài);如果輸入串結(jié)束時,自動
18、機處于終結(jié)狀態(tài)集合 F 的某一個狀態(tài),這表示自動機接受該字串;否則自動機不接受該字串。非確定有限狀態(tài)自動機與確定有限狀態(tài)自動機的唯一區(qū)別是它們的轉(zhuǎn)移函數(shù)不同。確定有限狀態(tài)自動機對每一個可能的輸入只有一個狀態(tài)的轉(zhuǎn)移。非確定有限狀態(tài)自動機對每一個可能的輸入可以有多個狀態(tài)轉(zhuǎn)移,接受到輸入時從這多個狀態(tài)轉(zhuǎn)移中非確定地選擇一個。自動機接受的所有字串構(gòu)成了自動機識別的語言 L(M)。1.4 本文的組織結(jié)構(gòu)本文以基于C#的設(shè)計與實現(xiàn)為主題,圍繞c#所采用的技術(shù),及其需求和設(shè)計進行詳細闡述,分為七部分:第一章主要介紹了課題產(chǎn)生的背景,圍繞背景闡述此課題研究目的和意義,并結(jié)合國內(nèi)外的研究現(xiàn)狀,分析理論的發(fā)展以及
19、在實際應(yīng)用中的發(fā)展。接著介紹了課題任務(wù)和文章的章節(jié)安排。第二章主要對進行系統(tǒng)的可行性分析,并按照由簡單到細致的順序?qū)τ脩粜枨筮M行分析以及從業(yè)務(wù)流程的角度對系統(tǒng)的功能需求進行詳細描述。第三章主要研究分析系統(tǒng)的功能模塊和體系結(jié)構(gòu)。第四章主要是對系統(tǒng)的實現(xiàn)進行數(shù)據(jù)庫設(shè)計。第五章陳述了系統(tǒng)的具體實現(xiàn)過程,分別對系統(tǒng)的表示層、業(yè)務(wù)層和數(shù)據(jù)層的實現(xiàn)進行了說明。第六章介紹了系統(tǒng)的測試過程。第七章總結(jié)了全文的工作,并提出了系統(tǒng)需要進一步完善和改進的地方。 2 系統(tǒng)需求分析2.1 系統(tǒng)可行性分析可行性分析又稱為可行性研究,是在系統(tǒng)調(diào)查的基礎(chǔ)上針對新系統(tǒng)的開發(fā)是否具備必要性和可能性,對新系統(tǒng)的開發(fā)從技術(shù)、經(jīng)濟、社
20、會方面進行分析和研究,以避免投資失誤,保證新系統(tǒng)的開發(fā)成功??尚行匝芯康哪康木褪怯米钚〉拇鷥r在盡可能短的時間內(nèi)確定難題是否得到解決。作為該系統(tǒng)的開發(fā),該系統(tǒng)的可行性分析包括以下幾個方面。(1)經(jīng)濟可行性。主要指費用的支出與收益回報的比例,二者是否匹配。用計算機代替人工進行錄入,核對,統(tǒng)計,不但節(jié)約了時間,也節(jié)約了人力,例如實現(xiàn)了無紙化輸入,節(jié)約了紙張的開銷;網(wǎng)上訂購和信息發(fā)布,可以減少采購中間環(huán)節(jié)的成本,及時將讀者的需求進行反饋,大大提高了工作的效率。(2)技術(shù)可行性。隨著Internet網(wǎng)絡(luò)的發(fā)展,利用互聯(lián)網(wǎng)進行信息的采集和發(fā)布已經(jīng)用在任何地方任何場合,為此本系統(tǒng)考慮采用C/S結(jié)構(gòu),利用先進
21、的、效率高的新的系統(tǒng)開發(fā)工具C#來開發(fā)該系統(tǒng),后臺數(shù)據(jù)庫2使用安全性高、可移植性好的SQL Server 2000,利用ADO.NET接口技術(shù)實現(xiàn)對后臺數(shù)據(jù)庫的訪問。(3)人力資源可行性??尚行缘闹攸c應(yīng)在人員素質(zhì)方面。在使用c#的過程中,新的業(yè)務(wù)流程,新的操作方式。(4)時機可行性。為了提高學(xué)C#編程研管理能力,改變以往傳統(tǒng)的管理方法,考慮使用效率更高、技術(shù)更先進的管理方式。在這種環(huán)境下,開發(fā)該系統(tǒng)有非常大的實際意義和可行性。2.2 功能需求分析用戶對系統(tǒng)的功能要求主要包括:信息要求、處理要求、安全性要求、完整性要求。信息要求:能夠通本系統(tǒng),達到任務(wù)書要求的規(guī)范和完成系統(tǒng)功能,。處理要求:當系
22、統(tǒng)信息和交互信息發(fā)生變化時候,系統(tǒng)能正確處理。安全性要求:系統(tǒng)應(yīng)設(shè)置訪問用戶的標識以鑒別是否是合法用戶,并要求合法用戶設(shè)置其密碼,保證用戶身份不被盜用。 完整性要求:各種信息記錄的完整性,信息記錄內(nèi)容不能為空;各種數(shù)據(jù)間相互的聯(lián)系的正確性;相同的數(shù)據(jù)在不同記錄中的一致性。2.5 本章小結(jié)本章首先對系統(tǒng)的可行性進行了詳細分析,接著對用戶需求進行分析。其次對論文的組織結(jié)構(gòu)進行概述。最后功能需求分析中首先介紹對系統(tǒng)的總體功能需求,然后在簡析各個功能的要求。3 系統(tǒng)概要設(shè)計3.1 系統(tǒng)功能設(shè)計通過前面章節(jié)所述的用戶需求可以看出,要功能模塊如圖3.1所示:圖3.1 系統(tǒng)主要功能模塊圖功能描述如下:(1)
23、讀取數(shù)據(jù)庫的值。(2)讀取XML的符號。(3)自動生成結(jié)果。(4)導(dǎo)出txt。 3.2 系統(tǒng)的體系結(jié)構(gòu)設(shè)計 3.2.1 系統(tǒng)實現(xiàn)技術(shù)sqlDataReader對象 data reader對象允許你獲得從command對象的SELECT語句得到的結(jié)果??紤]性能的因素,從data reader返回的數(shù)據(jù)都是快速的且只是“向前”的數(shù)據(jù)流。這意味著你只能按照一定的順序從數(shù)據(jù)流中取出數(shù)據(jù)。這對于速度來說是有好處的,但是如果你需要操作數(shù)據(jù),更好的辦法是使用DataSet。 DataSet對象 該對象包括多個DataTable對象,而DataTable包含列和行,就象一個普通的數(shù)據(jù)庫中的表。你甚至能夠定義表
24、之間的關(guān)系來創(chuàng)建主從關(guān)系(parent-child relationships)。DataSet是在特定的場景下使用幫助管理內(nèi)存中的數(shù)據(jù)并支持對數(shù)據(jù)的斷開操作的。DataSet是被所有Data Providers使用的對象,因此它并不像Data Provider一樣需要特別的前綴。 SqlDataAdapter對象 該對象通過斷開模型來幫助用戶方便的完成對以上情況的處理。當在一單批次的對數(shù)據(jù)庫的讀寫操作的持續(xù)的改變返回至數(shù)據(jù)庫的時候,Data adapter 填充(fill)DataSet對象。data adapter包含對連接對象以及當對數(shù)據(jù)庫進行讀取或者寫入的時候自動的打開或者關(guān)閉連接的引
25、用。另外,data adapter包含對數(shù)據(jù)的SELECT,INSERT,UPDATE和DELETE操作的command對象引用。你將為DataSet中的每一個table都定義data adapter,它將為你照顧所有與數(shù)據(jù)庫的連接。所有你將做的工作是告訴data adapter什么時候裝載或者寫入到數(shù)據(jù)庫3.2.2 開發(fā)語言C#是微軟公司研究員Anders Hejlsberg的最新成果9。C#看起來與Java有著驚人的相似;它包括了諸如單一繼承、接口、與Java幾乎同樣的語法和編譯成中間代碼再運行的過程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型
26、)是直接集成的,而且它是微軟公司.NET windows網(wǎng)絡(luò)框架的主角。C#是一種安全的、穩(wěn)定的、簡單的,由C和C+衍生出來的面向?qū)ο蟮木幊陶Z言10。它在繼承C和C+強大功能的同時去掉了一些它們的復(fù)雜特性(例如沒有宏和模版,不允許多重繼承)。C#綜合了VB簡單的可視化操作和C+的高運行效率,以其強大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程的支持成為.NET開發(fā)的首選語言。C#已經(jīng)成為ECMA與ISO的標準規(guī)范11。C#看似基于C+寫成,但又融入其它語言如Delphi、Java、VB,大大方便熟悉不同語言的程序員的使用。3.2.3 系統(tǒng)結(jié)構(gòu)C/S (Client/Serve
27、r)結(jié)構(gòu),即大家熟知的客戶機和服務(wù)器結(jié)構(gòu)。它是軟件系統(tǒng)體系結(jié)構(gòu),通過它可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client端和Server端來實現(xiàn),降低了系統(tǒng)的通訊開銷。目前大多數(shù)應(yīng)用軟件系統(tǒng)都是Client/Server形式的兩層結(jié)構(gòu),由于現(xiàn)在的軟件應(yīng)用系統(tǒng)正在向分布式的Web應(yīng)用發(fā)展,Web和Client/Server 應(yīng)用都可以進行同樣的業(yè)務(wù)處理,應(yīng)用不同的模塊共享邏輯組件;因此,內(nèi)部的和外部的用戶都可以訪問新的和現(xiàn)有的應(yīng)用系統(tǒng),通過現(xiàn)有應(yīng)用系統(tǒng)中的邏輯可以擴展出新的應(yīng)用系統(tǒng)。3.4 本章小結(jié)本章首先對系統(tǒng)所包含的功能模塊進行劃分,明確各功能模塊所面向的用戶類型和應(yīng)當實現(xiàn)的功能;
28、最后從系統(tǒng)建設(shè)的角度,對系統(tǒng)的宏觀結(jié)構(gòu)進行劃分,系統(tǒng)結(jié)構(gòu)確定選用C/S架構(gòu),選擇C#編程語言進行系統(tǒng)的開發(fā)。4 系統(tǒng)數(shù)據(jù)庫設(shè)計4.1 數(shù)據(jù)庫表結(jié)構(gòu)id int Uncheckednum1nvarchar(MAX)Checkednum2nvarchar(MAX)Checkednum3nvarchar(MAX)Checkednum4nvarchar(MAX)Checked在系統(tǒng)中,數(shù)據(jù)庫還是最佳的數(shù)據(jù)存儲方式,雖然已經(jīng)有很多的書籍在指導(dǎo)我們進行數(shù)據(jù)庫設(shè)計,但應(yīng)該那種方式是設(shè)計數(shù)據(jù)庫的表結(jié)構(gòu)的最好方法、設(shè)計時應(yīng)遵從什么樣的原則、四個范式如何能夠用一種方式達到順暢的應(yīng)用等是我一直在思考和總結(jié)的問題,下
29、文是我針對這幾個問題根據(jù)自己的設(shè)計經(jīng)歷準備總結(jié)的一篇文章的提綱,歡迎大家一塊進行探討,集思廣益。其中提到了領(lǐng)域建模的概念,但未作詳細解釋,希望以后能夠有時間我們針對這個命題進行深入探討。1)不應(yīng)該針對整個系統(tǒng)進行數(shù)據(jù)庫設(shè)計,而應(yīng)該根據(jù)系統(tǒng)架構(gòu)中的組件劃分,針對每個組件所處理的業(yè)務(wù)進行組件單元的數(shù)據(jù)庫設(shè)計;不同組件間所對應(yīng)的數(shù)據(jù)庫表之間的關(guān)聯(lián)應(yīng)盡可能減少,如果不同組件間的表需要外鍵關(guān)聯(lián)也盡量不要創(chuàng)建外鍵關(guān)聯(lián),而只是記錄關(guān)聯(lián)表的一個主鍵,確保組件對應(yīng)的表之間的獨立性,為系統(tǒng)或表結(jié)構(gòu)的重構(gòu)提供可能性。2)采用領(lǐng)域模型驅(qū)動的方式和自頂向下的思路進行數(shù)據(jù)庫設(shè)計,首先分析系統(tǒng)業(yè)務(wù),根據(jù)職責(zé)定義對象。對象要
30、符合封裝的特性,確保與職責(zé)相關(guān)的數(shù)據(jù)項被定義在一個對象之內(nèi),這些數(shù)據(jù)項能夠完整描述該職責(zé),不會出現(xiàn)職責(zé)描述缺失。并且一個對象有且只有一項職責(zé),如果一個對象要負責(zé)兩個或兩個以上的職責(zé),應(yīng)進行分拆。3)根據(jù)建立的領(lǐng)域模型進行數(shù)據(jù)庫表的映射,此時應(yīng)參考數(shù)據(jù)庫設(shè)計第二范式:一個表中的所有非關(guān)鍵字屬性都依賴于整個關(guān)鍵字。關(guān)鍵字可以是一個屬性,也可以是多個屬性的集合,不論那種方式,都應(yīng)確保關(guān)鍵字能夠保證唯一性。在確定關(guān)鍵字時,應(yīng)保證關(guān)鍵字不會參與業(yè)務(wù)且不會出現(xiàn)更新異常,這時,最優(yōu)解決方案為采用一個自增數(shù)值型屬性或一個隨機字符串作為表的關(guān)鍵字。4)由于第一點所述的領(lǐng)域模型驅(qū)動的方式設(shè)計數(shù)據(jù)庫表結(jié)構(gòu),領(lǐng)域模型
31、中的每一個對象只有一項職責(zé),所以對象中的數(shù)據(jù)項不存在傳遞依賴,所以,這種思路的數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計從一開始即滿足第三范式:一個表應(yīng)滿足第二范式,且屬性間不存在傳遞依賴。5)同樣,由于對象職責(zé)的單一性以及對象之間的關(guān)系反映的是業(yè)務(wù)邏輯之間的關(guān)系,所以在領(lǐng)域模型中的對象存在主對象和從對象之分,從對象是從1N或NN的角度進一步主對象的業(yè)務(wù)邏輯,所以從對象及對象關(guān)系映射為的表及表關(guān)聯(lián)關(guān)系不存在刪除和插入異常。6)在映射后得出的數(shù)據(jù)庫表結(jié)構(gòu)中,應(yīng)再根據(jù)第四范式進行進一步修改,確保不存在多值依賴。這時,應(yīng)根據(jù)反向工程的思路反饋給領(lǐng)域模型。如果表結(jié)構(gòu)中存在多值依賴,則證明領(lǐng)域模型中的對象具有至少兩個以上的職責(zé),
32、應(yīng)根據(jù)第一條進行設(shè)計修正。第四范式:一個表如果滿足BCNF,不應(yīng)存在多值依賴。7)在經(jīng)過分析后確認所有的表都滿足二、三、四范式的情況下,表和表之間的關(guān)聯(lián)盡量采用弱關(guān)聯(lián)以便于對表字段和表結(jié)構(gòu)的調(diào)整和重構(gòu)。并且,我認為數(shù)據(jù)庫中的表是用來持久化一個對象實例在特定時間及特定條件下的狀態(tài)的,只是一個存儲介質(zhì),所以,表和表之間也不應(yīng)用強關(guān)聯(lián)來表述業(yè)務(wù)(數(shù)據(jù)間的一致性),這一職責(zé)應(yīng)由系統(tǒng)的邏輯層來保證,這種方式也確保了系統(tǒng)對于不正確數(shù)據(jù)(臟數(shù)據(jù))的兼容性。當然,從整個系統(tǒng)的角度來說我們還是要盡最大努力確保系統(tǒng)不會產(chǎn)生臟數(shù)據(jù),單從另一個角度來說,臟數(shù)據(jù)的產(chǎn)生在一定程度上也是不可避免的,我們也要保證系統(tǒng)對這種情
33、況的容錯性。這是一個折中的方案。8)應(yīng)針對所有表的主鍵和外鍵建立索引,有針對性的(針對一些大數(shù)據(jù)量和常用檢索方式)建立組合屬性的索引,提高檢索效率。雖然建立索引會消耗部分系統(tǒng)資源,但比較起在檢索時搜索整張表中的數(shù)據(jù)尤其時表中的數(shù)據(jù)量較大時所帶來的性能影響,以及無索引時的排序操作所帶來的性能影響,這種方式仍然是值得提倡的。9)盡量少采用存儲過程,目前已經(jīng)有很多技術(shù)可以替代存儲過程的功能如“對象/關(guān)系映射”等,將數(shù)據(jù)一致性的保證放在數(shù)據(jù)庫中,無論對于版本控制、開發(fā)和部署、以及數(shù)據(jù)庫的遷移都會帶來很大的影響。但不可否認,存儲過程具有性能上的優(yōu)勢,所以,當系統(tǒng)可使用的硬件不會得到提升而性能又是非常重要
34、的質(zhì)量屬性時,可經(jīng)過平衡考慮選用存儲過程。10)當處理表間的關(guān)聯(lián)約束所付出的代價(常常是使用性上的代價)超過了保證不會出現(xiàn)修改、刪除、更改異常所付出的代價,并且數(shù)據(jù)冗余也不是主要的問題時,表設(shè)計可以不符合四個范式。四個范式確保了不會出現(xiàn)異常,但也可能由此導(dǎo)致過于純潔的設(shè)計,使得表結(jié)構(gòu)難于使用,所以在設(shè)計時需要進行綜合判斷,但首先確保符合四個范式,然后再進行精化修正是剛剛進入數(shù)據(jù)庫設(shè)計領(lǐng)域時可以采用的最好辦法。11)設(shè)計出的表要具有較好的使用性,主要體現(xiàn)在查詢時是否需要關(guān)聯(lián)多張表且還需使用復(fù)雜的SQL技巧。12)設(shè)計出的表要盡可能減少數(shù)據(jù)冗余,確保數(shù)據(jù)的準確性,有效的控制冗余有助于提高數(shù)據(jù)庫的性
35、能。5.2 業(yè)務(wù)邏輯層的實現(xiàn)業(yè)務(wù)層的設(shè)計是整個系統(tǒng)的重點和難點。在該系統(tǒng)中根據(jù)需求分析和設(shè)計,抽象出主要的業(yè)務(wù)層組件。5.3 頁面顯示層的實現(xiàn)在表示層中,主要采用C#來實現(xiàn)。.NET本身提供了比較豐富的控件,基本上可以滿足需要,為了維護系統(tǒng)界面的一致性,對一些比較常用的頁面元素作成控件,這樣每個用到的頁面可直接利用這些控件,簡化了設(shè)計。在實現(xiàn)時,使用C#的Form1結(jié)合用戶控件寫的。例如用戶登錄頁面Login完成登錄功能,頁面布局如圖 所示。在此插入系統(tǒng)圖片頁面布局圖當用戶單擊“登錄”按鈕時,系統(tǒng)將根據(jù)用戶的輸入對其進行身份驗證,實現(xiàn)代碼如下: String str = "Data
36、Source=; Initial Catalog=LMS;User ID=sa;pwd=" SqlConnection conn = new SqlConnection(str);/ 建立數(shù)據(jù)庫連接 String p = "select * from Userid where 用戶名 ='" + textBox1.Text.Trim() + "' and 密碼 ='" + textBox2.Text.Trim() + "'" SqlDataAdapter adapter =
37、new SqlDataAdapter(p, conn); SqlCommandBuilder build = new SqlCommandBuilder(adapter); DataSet ds = new DataSet(); adapter.Fill(ds); if (ds.Tables0.Rows.Count > 0) MainFrom main = new MainFrom(); main.Show(); this.Visible = false; else i+; MessageBox.Show("信息輸入不正確", "提示", Mess
38、ageBoxButtons.OK, MessageBoxIcon.Information); textBox1.Text = "" textBox2.Text = "" if (i > 2) MessageBox.Show("錯誤次數(shù)大于3次,強制退出!"); Application.Exit(); return; catch (Exception) MessageBox.Show("請輸入正確信息!"); using System;using System.Collections.Generic;using
39、 System.Text;using System.Data; /添加引用using System.Windows.Forms;using System.Data.SqlClient;using System.Collections; namespace RDSystem.ItemClass class SqlBaseClass #region 代碼中用到的變量 SqlDataAdapter G_Da; /聲明數(shù)據(jù)適配器對象 DataSet G_Ds; /聲明數(shù)據(jù)集對象 SqlCommand G_Com; SqlConnection G_Con; /聲明鏈接對象 #endregion #reg
40、ion 連接數(shù)據(jù)庫 public SqlConnection GetCon() string StrConn = "Data Source=.;Initial Catalog=zdj;Integrated Security=True" G_Con = new SqlConnection(StrConn); G_Con.Open(); return G_Con; #endregion #region 構(gòu)造函數(shù) / <summary> / 構(gòu)造函數(shù) / </summary> public SqlBaseClass() #endregion /#regio
41、n 連接數(shù)據(jù)庫 / <summary> / 連接數(shù)據(jù)庫 / </summary> / <returns></returns> /public SqlConnection GetCon() / / G_Con = new SqlConnection(G_Str_ConnectionString); / G_Con.Open(); / return G_Con; / /#endregion #region 執(zhí)行SQL語句 / <summary> / 執(zhí)行SQL語句 / </summary> / <param name=&
42、quot;cmdtxt">要執(zhí)行的SQL語句</param> / <returns></returns> public bool GetExecute(string cmdtxt) G_Com = new SqlCommand(cmdtxt, GetCon(); G_Com.ExecuteNonQuery(); if (GetCon().State = ConnectionState.Open) GetCon().Close(); GetCon().Dispose(); return true; #endregion #region 返回數(shù)據(jù)
43、集類型 / <summary> / 返回數(shù)據(jù)集類型 / </summary> / <param name="cmdtxt">需要查詢的SQL語句</param> / <returns></returns> public DataSet GetDs(string cmdtxt) G_Da = new SqlDataAdapter(cmdtxt, GetCon(); G_Ds = new DataSet(); G_Da.Fill(G_Ds); if (GetCon().State = ConnectionS
44、tate.Open) GetCon().Close(); GetCon().Dispose(); return G_Ds; #endregion #region 返回數(shù)據(jù)表類型 / <summary> / 返回數(shù)據(jù)表 / </summary> / <param name="cmdtxt"></param> / <param name="tablename"></param> / <returns></returns> public DataTable GetT
45、able(string cmdtxt,string tablename) DataTable P_tbl; /聲明一個DataTable對象 G_Da = new SqlDataAdapter(cmdtxt, tablename); P_tbl = new DataTable(tablename); G_Da.Fill(P_tbl); /將表中對象放入P_tbl中 if (GetCon().State = ConnectionState.Open) GetCon().Close(); GetCon().Dispose(); return P_tbl; #endregion #region 返回
46、SqlDaraReader類型數(shù)據(jù) / <summary> / 返回SqlDataReader類型數(shù)據(jù) / </summary> / <param name="cmdtxt">要執(zhí)行的SQL語句</param> / <returns></returns> public SqlDataReader GetReader(string cmdtxt) G_Com = new SqlCommand(cmdtxt, GetCon(); /聲明SqlCommand對象 SqlDataReader P_Dr; P_D
47、r = G_Com.ExecuteReader(); if (GetCon().State = ConnectionState.Open) GetCon().Close(); GetCon().Dispose(); return P_Dr; #endregion 5.4 讀取XML數(shù)據(jù)源可擴展標記語言 (Extensible Markup Language, XML) ,用于標記電子文件使其具有結(jié)構(gòu)性的標記語言,可以用來標記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標記語言進行定義的源語言。 XML是標準通用標記語言 (SGML) 的子集,非常適合 Web 傳輸。XML 提供統(tǒng)一的方
48、法來描述和交換獨立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。XML與Access,Oracle和SQL Server等數(shù)據(jù)庫不同,數(shù)據(jù)庫提供了更強有力的數(shù)據(jù)存儲和分析能力,例如:數(shù)據(jù)索引、排序、查找、相關(guān)一致性等,XML僅僅是存儲數(shù)據(jù)。事實上XML與其他數(shù)據(jù)表現(xiàn)形式最大的不同是:他極其簡單。這是一個看上去有點瑣細的優(yōu)點,但正是這點使XML與眾不同。XML與HTML的設(shè)計區(qū)別是:XML 被設(shè)計為傳輸和存儲數(shù)據(jù),其焦點是數(shù)據(jù)的內(nèi)容。而HTML 被設(shè)計用來顯示數(shù)據(jù),其焦點是數(shù)據(jù)的外觀。HTML 旨在顯示信息,而 XML 旨在傳輸信息。XML和HTML語法區(qū)別:HTML的標記不是所有的都需要成對出現(xiàn),XML則要
49、求所有的標記必須成對出現(xiàn);HTML標記不區(qū)分大小寫,XML則 大小敏感,即區(qū)分大小寫。XML的簡單使其易于在任何應(yīng)用程序中讀寫數(shù)據(jù),這使XML很快成為數(shù)據(jù)交換的唯一公共語言,雖然不同的應(yīng)用軟件也支持其它的數(shù)據(jù)交換格式,但不久之后他們都將支持XML,那就意味著程序可以更容易的與Windows,Mac OS,Linux以及其他平臺下產(chǎn)生的信息結(jié)合,然后可以很容易加載XML數(shù)據(jù)到程序中并分析他,并以XML格式輸出結(jié)果。using System.Xml;/初始化一個xml實例XmlDocument xml=new XmlDocument();/導(dǎo)入指定xml文件xml.Load(path);xml.L
50、oad(HttpContext.Current.Server.MapPath("/file/bookstore.xml");/指定一個節(jié)點XmlNode root=xml.SelectSingleNode("/root");/獲取節(jié)點下所有直接子節(jié)點XmlNodeList childlist=root.ChildNodes;/判斷該節(jié)點下是否有子節(jié)點root.HasChildNodes;/獲取同名同級節(jié)點集合XmlNodeList nodelist=xml.SelectNodes("/Root/News");/生成一個新節(jié)點XmlElement node=xml.CreateElement("News");/將節(jié)點加到指定節(jié)點下,作為其子節(jié)點root.AppendChild(node);/將節(jié)點加到指定節(jié)點下某個子節(jié)點前root.InsertBefore(node,root.ChildeNodesi);/為指定節(jié)點的新建屬性并賦值node.SetAttribute("id","11111");/為指定節(jié)點添加子節(jié)點root.AppendChild(node);/獲取指定節(jié)點的指定屬性
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年關(guān)于格式合同的法律規(guī)制與挑戰(zhàn)
- 2025混凝土拌合站租賃合同范本
- 2025年橋梁工程試題
- 2025年腸梗阻理論試題
- 幼兒園語言教育與活動設(shè)計 課件 第6、7章 幼兒園語言教育活動實施的價值取向與反思;幼兒園語言教育活動中的教師與幼兒
- 高三高考數(shù)學(xué)知識點總結(jié)
- 保險-72名億萬富翁死亡的背后
- 縱隔疝的臨床護理
- 火災(zāi)應(yīng)急流程制作指南
- 某咨詢-北京世博偉業(yè)房地產(chǎn)0806一階段人力資源診斷報告
- 第18課《井岡翠竹》課件-2024-2025學(xué)年統(tǒng)編版語文七年級下冊
- 【MOOC】《思想道德與法治》(東南大學(xué))章節(jié)中國大學(xué)慕課答案
- 卜算子-送鮑浩然之浙東課件
- 上海市社區(qū)工作者管理辦法
- 顱腦損傷患者護理查房課件
- 口腔疾病與全身系統(tǒng)性疾病的關(guān)系課件
- 年產(chǎn)16萬噸焦油焦油車間蒸餾工段工藝初步設(shè)計 畢業(yè)設(shè)計
- 霍亂弧菌實驗室檢測PPT
- 五年級下學(xué)期信息技術(shù)3Done三維制作蘿卜課件
- DB51∕T 2858-2021 農(nóng)業(yè)科技成果效益計算方法及規(guī)程
- 監(jiān)控系統(tǒng)投標書(施工組織設(shè)計)
評論
0/150
提交評論