C語言程序設(shè)計考試系統(tǒng)畢業(yè)設(shè)計論文.doc_第1頁
C語言程序設(shè)計考試系統(tǒng)畢業(yè)設(shè)計論文.doc_第2頁
C語言程序設(shè)計考試系統(tǒng)畢業(yè)設(shè)計論文.doc_第3頁
C語言程序設(shè)計考試系統(tǒng)畢業(yè)設(shè)計論文.doc_第4頁
C語言程序設(shè)計考試系統(tǒng)畢業(yè)設(shè)計論文.doc_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

鐘山職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計論文 C語言程序設(shè)計考試系統(tǒng)【摘要】:C語言是Combined Language(組合語言)的中英混合簡稱。是一種計算機程序設(shè)計語言。它既具有高級語言的特點,又具有匯編語言的特點。它可以作為工作系統(tǒng)設(shè)計語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機硬件的應(yīng)用程序。因此,它的應(yīng)用范圍廣泛,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,具體應(yīng)用比如單片機以及嵌入式系統(tǒng)開發(fā)。 C語言考試系統(tǒng)采用Microsoft Visual C+和Microsoft SQL Server 2000相結(jié)合,很好的實現(xiàn)了登錄驗證功能。登錄身份有管理員和學(xué)生。管理員是對整個考試系統(tǒng)的環(huán)境設(shè)置,其中包括對各個題型的題量設(shè)置、定義考試說明、考場要求和對學(xué)生的管理等。學(xué)生登錄實現(xiàn)了讓有考試權(quán)限的學(xué)生進入考試環(huán)境。在這個環(huán)境下,系統(tǒng)完全實現(xiàn)了隨機抽題。 C語言考試系統(tǒng)實現(xiàn)了嵌入turboc2.0編譯器進行程序的編輯;采用了S數(shù)據(jù)庫訪問技術(shù)進行數(shù)據(jù)庫的操作;完成了學(xué)生考試、管理員管理的功能。C語言考試系統(tǒng)提高網(wǎng)絡(luò)教學(xué)質(zhì)量的同時大大拓展了考試的靈活性,閱卷效率,以及保證了考試的公平性、答案的安全性。 【關(guān)鍵詞】:C語言 考試系統(tǒng) 數(shù)據(jù)庫 編譯器 文件操作 目錄引 言3矚慫潤厲釤瘞睞櫪廡賴。第一章 C語言程序概述4聞創(chuàng)溝燴鐺險愛氌譴凈。1.1 C語言的演變及特點4殘騖樓諍錈瀨濟溆塹籟。1.1.1 C語言的發(fā)展過程4釅錒極額閉鎮(zhèn)檜豬訣錐。1.1.2 C語言版本41.1.3 C語言的特點5彈貿(mào)攝爾霽斃攬磚鹵廡。1.1.4 C語言與其他語言的差別51.2 C語言的程序結(jié)構(gòu)61.2.1 C源程序的結(jié)構(gòu)特點61.2.2 C語言程序結(jié)構(gòu)組成7謀蕎摶篋飆鐸懟類蔣薔。第二章 C語言考試系統(tǒng)8廈礴懇蹣駢時盡繼價騷。2.1 C語言考試系統(tǒng)發(fā)展背景8煢楨廣鰳鯡選塊網(wǎng)羈淚。2.2 C語言考試系統(tǒng)的組成82.2.1 Microsoft Visual C+9鵝婭盡損鵪慘歷蘢鴛賴。2.2.2 SQL SERVER 2000(結(jié)構(gòu)化查詢語言 SQL)10籟叢媽羥為贍僨蟶練淨(jìng)。2.2.3 Turboc2.0編譯器12預(yù)頌圣鉉儐歲齦訝驊糴。第三章 學(xué)生成績管理模塊系統(tǒng)14滲釤嗆儼勻諤鱉調(diào)硯錦。3.1 學(xué)生成績管理系統(tǒng)的重要性14鐃誅臥瀉噦圣騁貺頂廡。3.2 學(xué)生成績管理系統(tǒng)設(shè)計14擁締鳳襪備訊顎輪爛薔。3.2.1 系統(tǒng)需求14贓熱俁閫歲匱閶鄴鎵騷。3.2.2 總體設(shè)計14壇摶鄉(xiāng)囂懺蔞鍥鈴氈淚。3.2.3 功能結(jié)構(gòu)設(shè)計15蠟變黲癟報倀鉉錨鈰贅。3.2.4 學(xué)生成績管理系統(tǒng)運行過程16買鯛鴯譖曇膚遙閆擷凄。第四章 C語言考試系統(tǒng)發(fā)展前景展望25綾鏑鯛駕櫬鶘蹤韋轔糴。4.1 C語言考試系統(tǒng)與其他語言系統(tǒng)的對比25驅(qū)躓髏彥浹綏譎飴憂錦。4.2 C語言考試系統(tǒng)能夠解決的一些問題25貓蠆驢繪燈鮒誅髏貺廡。4.3 發(fā)展C語言考試系統(tǒng)的目的與意義26鍬籟饗逕瑣筆襖鷗婭薔。總 結(jié)27構(gòu)氽頑黌碩飩薺齦話騖。參 考 文 獻28輒嶧陽檉籪癤網(wǎng)儂號澩。引 言 C語言是1972年由美國的Dennis Ritchie設(shè)計的,并首次在UNIX操作系統(tǒng)的DEC PDP-11計算機上使用。它由早期的編程語言BCPL發(fā)展演變而來的。在1970年,AT&T貝爾實驗室的Ken Thompson根據(jù)BCPL語言設(shè)計出較先進的并取名為B的語言,隨后C語言問世了。隨著微型計算機的日益普及,C語言出現(xiàn)了許多版本。由于沒有統(tǒng)一的標準,使得這些C語言版本之間出現(xiàn)了一些不一致的地方。為了改變這種情況,美國國家標準學(xué)會(ANSI)為C語言制定了一套ANSI標準,成為現(xiàn)行的C 語言標準。堯側(cè)閆繭絳闕絢勵蜆贅。 C語言考試系統(tǒng),是為了配合C語言的教學(xué)而設(shè)計的。它是C語言課件的一個重要組成部分。試卷可根據(jù)題庫中的內(nèi)容即時生成,可避免考試前的壓題;而且可以采用大量標準化試題,從而使用計算機閱卷,大大提高閱卷效率;還可以直接把成績送到數(shù)據(jù)庫中,進行統(tǒng)計、排序等操作。試題內(nèi)容放在服務(wù)器上,考生通過準考證號進行登錄,考試答案也存放在服務(wù)器中,這樣考試的公平性、答案的安全性可以得到有效的保證。因此,采用無紙化將是以后考試發(fā)展的必然趨勢。識饒鎂錕縊灩筧嚌儼淒。 考試是網(wǎng)絡(luò)教學(xué)的重要部分,日漸普及的網(wǎng)絡(luò)教學(xué)呼喚著功能強大的網(wǎng)絡(luò)考試系統(tǒng)的出現(xiàn)。網(wǎng)絡(luò)考試系統(tǒng)方便了傳統(tǒng)考試中的各個環(huán)節(jié)。提高了試題治理的自動化、標準化、便捷化,也提高了試題的安全性和保密性。試題的自動生成,使每個考生都有一套不同的試題,把固定在單一試卷中的試題發(fā)展到了可以自由組合的題庫,隨著題庫的建立,組卷變得方便了,測試的形式也發(fā)生著變化,由所有學(xué)生同考一張試卷的大規(guī)模的集體測試發(fā)展到了同一場考試使用等同考查效力的不同試卷,而且可以跨地域的進行同一考試,除了在本地也可以在異地進行,打破了以前考試的局限性。在成績統(tǒng)計方面,可以方便快捷地實現(xiàn)成績統(tǒng)計,如各種均值,方差,分布等的計算,同時還可以方便地評判考試的信度和效度。通過使用試題自動生成系統(tǒng)完全擺脫了紙和筆,考生使用計算機答卷,然后通過網(wǎng)絡(luò)提交試卷,系統(tǒng)自動閱卷?;谟嬎銠C網(wǎng)絡(luò)的考試需要專門的較高水平的技術(shù)支持,網(wǎng)絡(luò)考試已經(jīng)發(fā)展成為一種產(chǎn)業(yè)。凍鈹鋨勞臘鍇癇婦脛糴。 發(fā)展網(wǎng)絡(luò)教學(xué)有著非常深遠的意義,網(wǎng)絡(luò)教學(xué)在全世界范圍內(nèi)得到了迅速的發(fā)展。在國外,美國每年大約有近1700萬人通過網(wǎng)絡(luò)接受教育和培訓(xùn);歐洲網(wǎng)絡(luò)教育規(guī)模也很大,巨大的需求推動了網(wǎng)上教育業(yè)的快速發(fā)展。目前,在國際市場上比較聞名的網(wǎng)上教育軟件產(chǎn)品有:Lotus公司LearningSpace,英屬哥倫比亞大學(xué)計算機科學(xué)系開發(fā)的WebCT,WBTSystem公司的TopClass和加拿大SimonFraser大學(xué)開發(fā)的Virtual-U等。美國的NTU,英國的OpenCollege都是十分典型的網(wǎng)絡(luò)教育示例。恥諤銪滅縈歡煬鞏鶩錦。第一章 C語言程序概述1.1 C語言的演變及特點1.1.1 C語言的發(fā)展過程C語言的原型ALGOL 60語言(也稱為A語言)。1963年,劍橋大學(xué)將ALGOL 60語言發(fā)展成為CPL(Combined Programming Language)語言。1967年,劍橋大學(xué)的Matin Richards 對CPL語言進行了簡化,于是產(chǎn)生了BCPL語言。1970年,美國貝爾實驗室的Ken Thompson將BCPL進行了修改,并為它起了一個有趣的名字“B語言”。意思是將CPL語言煮干,提煉出它的精華。并且他用B語言寫了第一個UNIX操作系統(tǒng)。而在1973年,B語言也給人“煮”了一下,美國貝爾實驗室的D.M.RITCHIE在B語言的基礎(chǔ)上最終設(shè)計出了一種新的語言,他取了BGPL的第二個字母作為這種語言的名字,這就是C語言。為了使UNIX操作系統(tǒng)推廣,1977年Dennis M.Ritchie 發(fā)表了不依賴于具體機器系統(tǒng)的C語言編譯文本可移植的C語言編譯程序。1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著The C Programming Language,從而使C語言成為目前世界上流行最廣泛的高級程序設(shè)計語言。1987年,隨著微型計算機的日益普及,出現(xiàn)了許多C語言版本。由于沒有統(tǒng)一的標準,使得這些C語言之間出現(xiàn)了一些不一致的地方。為了改變這種情況,美國國家標準研究所(ANSI)為C語言制定了一套ANSI標準, 成為現(xiàn)行的C語言標準 3.C語言的主要特點 ,即經(jīng)典的87 ANSI C。C語言發(fā)展迅速, 而且成為最受歡迎的語言之一,主要因為它具有強大的功能。許多著名的系統(tǒng)軟件, 如DBASE PLUS、DBASE 都是由C語言編寫的。用C語言加上一些匯編語言子程序, 就更能顯示C語言的優(yōu)勢了,象PC- DOS 、WORDSTAR等就是用這種方法編寫的。1990年,國際化標準組織ISO(Intrernational StandardOrganization)接受了87 ANSI C為ISO C的標準(ISO9899-1990)。1994年,ISO修訂了C語言的標準。目前流行的C語言編譯系統(tǒng)大多是以ANSI C為基礎(chǔ)進行開發(fā)的,但不同版本的C編譯系統(tǒng)所實現(xiàn)的語言功能和語法規(guī)則略有差別。鯊腎鑰詘褳鉀溈懼統(tǒng)庫。1.1.2 C語言版本1983年,美國國家標準協(xié)會(American National Standards Institute)在標準C基礎(chǔ)上制定了C語言新標準,于1983年發(fā)表,稱為ANSI C,它比標準C有了更大的發(fā)展。目前廣泛流行的C語言版本有Microsoft C 或稱 MS C 。Borland Turbo C 或稱 Turbo C。AT&T C ,Quick C等。碩癘鄴頏謅攆檸攜驤蘞。1.1.3 C語言的特點(1)C是中級語言它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。C語言一共只有32個關(guān)鍵字,9種控制語句,程序書寫形式自由,主要用小寫字母表示。它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。C 語言可以像匯編語言一樣對位、字節(jié)和地址進行操作, 而這三者是計算機最基本的工作單元。閿擻輳嬪諫遷擇楨秘騖。(2)C是結(jié)構(gòu)式語言結(jié)構(gòu)式語言的顯著特點是代碼及數(shù)據(jù)的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?,便于使用、維護以及調(diào)試。C 語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。氬嚕躑竄貿(mào)懇彈瀘頷澩。(3)C語言功能齊全。C語言的運算符包含的范圍很廣泛,共有34種運算符。C語言把括號、賦值、強制類型轉(zhuǎn)換等都作為運算符處理。從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現(xiàn)在其它高級語言中難以實現(xiàn)的運算。C語言的數(shù)據(jù)類型有:整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等。能用來實現(xiàn)各種復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的運算。并且引入了指針概念,可使程序效率更高。另外C語言也具有強大的圖形功能,支持多種顯示器和驅(qū)動器。而且計算功能、邏輯判斷功能也比較強大,可以實現(xiàn)決策目的的游戲。釷鵒資贏車贖孫滅獅贅。(4) C語言適用范圍大。雖然C語言也是強類型語言,但它的語法比較靈活,允許程序編寫者有較大的自由度。由于C語言允許直接訪問物理地址,可以直接對硬件進行操作,因此它既具有高級語言的功能,又具有低級語言的許多功能,能夠像匯編語言一樣對位、字節(jié)和地址進行操作,而這三者是計算機最基本的工作單元,可用來寫系統(tǒng)軟件。適合于多種操作系統(tǒng),如Windows、DOS、UNIX等等;也適用于多種機型。C語言具有強大的繪圖能力,可移植性好,并具備很強的數(shù)據(jù)處理能力,因此適于編寫系統(tǒng)軟件,三維,二維圖形和動畫,它也是數(shù)值計算的高級語言。慫闡譜鯪逕導(dǎo)嘯畫長涼。1.1.4 C語言與其他語言的差別1. C語言吸取了匯編語言的精華匯編語言是一種面向機器的低級語言,盡管它的編程要比高級語言麻煩得多,但目標程序質(zhì)量高,運行快,所以在工業(yè)自動化控制系統(tǒng)等領(lǐng)域仍然被廣泛使用,顯現(xiàn)出強大的生命力。諺辭調(diào)擔(dān)鈧諂動禪瀉類。(1) C語言提供了對位、字節(jié)及地址的操作,使程序可以直接訪問硬件。(2) C語言吸取了宏匯編技術(shù)中的一些靈活處理方式,提供了宏替換命令#define和文件包含的預(yù)處理命令#include。嘰覲詿縲鐋囁偽純鉿錈。(3) C語言程序能與匯編語言程序?qū)崿F(xiàn)無縫連接,可以在C語言程序中方便地引用匯編語言程序。(4) C語言編譯生成的目標程序代碼質(zhì)量高,執(zhí)行效率高,運行速度快。與匯編程序生成的目標程序代碼執(zhí)行效率相比,只低10%20%,這是其他高級語言所無法達到的。熒紿譏鉦鏌觶鷹緇機庫。2. C語言繼承和發(fā)揚了高級語言的優(yōu)勢(1) 繼承了Pascal語言具有豐富數(shù)據(jù)類型的特點,并具有完備的數(shù)據(jù)結(jié)構(gòu)。(2) 吸取了FORTRAN語言中模塊結(jié)構(gòu)的思想,C語言中每個函數(shù)都是獨立的,允許單獨進行編譯。這有利于大程序的分工協(xié)作和調(diào)試。鶼漬螻偉閱劍鯫腎邏蘞。(3) 允許遞歸調(diào)用,使有些算法的實現(xiàn)簡明、清晰。(4) 發(fā)揚了高級語言面向用戶、可讀性強、容易編程和維護等特點,使C語言易學(xué)、易讀、易懂、易編程、易維護。(5) 具有良好的可移植性,它沒有依賴于硬件的輸入輸出語句,便于在不同硬件結(jié)構(gòu)的計算機之間移植。1.2 C語言的程序結(jié)構(gòu)1.2.1 C源程序的結(jié)構(gòu)特點一個實現(xiàn)某種特點功能的C語言程序(一個或多個文件)應(yīng)包含若干個函數(shù),每個函數(shù)又是由若干條語句組成的。同其他的高級語言一樣,C語言的語句用來向計算機系統(tǒng)發(fā)出操作指令。一條語句經(jīng)編譯后會產(chǎn)生若干條機器指令。因此,C語言程序的結(jié)構(gòu)形式如圖所示。紂憂蔣氳頑薟驅(qū)藥憫騖。說明:(1) 一個C語言源程序可以由一個或多個源文件組成。(2) 每個源文件可由一個或多個函數(shù)組成。(3) 一個源程序不論由多少個文件組成,都有且只能有一個main函數(shù),即主函數(shù)。(4) 源程序中可以有預(yù)處理命令(#include命令僅為其中的一種),預(yù)處理命令通常應(yīng)放在源文件或源程序的最前面。穎芻莖蛺餑億頓裊賠瀧。(5) 每一個說明,每一個語句都必須以分號結(jié)尾。但預(yù)處理命令,函數(shù)頭和花括號“”之后不能加分號。 1.2.2 C語言程序結(jié)構(gòu)組成(1) 數(shù)組。數(shù)組是一種非常重要的線性結(jié)構(gòu)的數(shù)據(jù)類型,在程序設(shè)計中常常使用。同時,語言中,“字符串”可以通過字符數(shù)組來實現(xiàn)。數(shù)組的定義和使用在語言中具有相當(dāng)重要的位置。在介紹數(shù)組的應(yīng)用時,可結(jié)合數(shù)據(jù)結(jié)構(gòu)課程中排序與檢索的常用算法,通過實例說明數(shù)組的具體應(yīng)用。濫驂膽閉驟羥闈詔寢賻。(2) 指針。指針是語言中最靈活,最活躍的數(shù)據(jù)類型,是語言的核心。要學(xué)習(xí)好語言,必須掌握指針的概念極其應(yīng)用。C語言指針應(yīng)用,在數(shù)據(jù)鏈式存儲中,指針是數(shù)據(jù)中不可分割的一個部分,既使在順序存儲的數(shù)據(jù)中,指針也是數(shù)據(jù)掃描(遍歷)、查找定位、插入、刪除、統(tǒng)計等各種數(shù)據(jù)加工處理的重要手段和工具。同時必須指出,指針應(yīng)用不當(dāng)也會帶來意想不到的后果。銚銻縵嚌鰻鴻鋟謎諏涼。(3) 函數(shù)。語言是一種函數(shù)式語言,函數(shù)是語言程序的基本組成部分。在教學(xué)中,可以通過一些實際例子說明,使學(xué)生掌握語言函數(shù)定義、函數(shù)調(diào)用、參數(shù)傳遞等內(nèi)容,樹立程序模塊的基本思想。擠貼綬電麥結(jié)鈺贖嘵類。(4) 變量存貯屬性。存貯屬性關(guān)系到變量的作用范圍,函數(shù)(模塊)間的程序接口,對樹立程序設(shè)計的全局觀念,變量存貯屬性起重要作用。賠荊紳諮侖驟遼輩襪錈。(5) 文件。在實際應(yīng)用中,我們一般通過文件的形式與外設(shè)進行交流,“文件”是語言實際應(yīng)用的主要方式,應(yīng)介紹文件的打開、讀、寫、關(guān)閉等基本操作。塤礙籟饈決穩(wěn)賽釙冊庫。(6) 結(jié)構(gòu)體。在實際應(yīng)用中,數(shù)據(jù)結(jié)構(gòu)類型往往以結(jié)構(gòu)體形式出現(xiàn)。只有掌握結(jié)構(gòu)體類型的定義和使用,才能在實際應(yīng)用中發(fā)揮語言作用。裊樣祕廬廂顫諺鍘羋藺。第2章 C語言考試系統(tǒng)2.1 C語言考試系統(tǒng)發(fā)展背景在線考試系統(tǒng)就是人們經(jīng)常談?wù)撝械囊粋€例子,在我國,不論是機關(guān)單位還是大中小學(xué)校,考試頻率堪稱世界之最,而傳統(tǒng)的考試一般要經(jīng)過出題,印試卷,安排考場,監(jiān)考,收集試卷,評改試卷,講評試卷和分析試卷。倉嫗盤紲囑瓏詁鍬齊驁。不僅如此,在線考試系統(tǒng)還打破了考場的時空局限性,考生可以自由選擇考試的時間和地點,而條件是只要具有一臺能上互聯(lián)網(wǎng)的電腦就行了,考生考試結(jié)束后,即可產(chǎn)即查詢自己的考試分數(shù),名次等信息,還可以對照標準答案對答錯的試題進行適當(dāng)?shù)姆治?,全部科目考試結(jié)束后,考生還可以打印自己的成績單,與傳統(tǒng)考試不同的是,在線考試系統(tǒng)需要管理員添加足夠多的題庫來保證每個考生隨機抽出來的題目是不一樣的,保證了考試的公證性。綻萬璉轆娛閬蟶鬮綰瀧。C語言是各大學(xué)所有理工科學(xué)生的必修課,是計算機專業(yè)編程語言的入門課程,C語言考試系統(tǒng),是為了配合C語言的教學(xué)而設(shè)計的。它是C語言課件的一個重要組成部分。試卷可根據(jù)題庫中的內(nèi)容即時生成,可避免考試前的壓題;而且可以采用大量標準化試題,從而使用計算機閱卷,大大提高閱卷效率;還可以直接把成績送到數(shù)據(jù)庫中,進行統(tǒng)計、排序等操作。試題內(nèi)容放在服務(wù)器上,考生通過準考證號進行登錄,考試答案也存放在服務(wù)器中,這樣考試的公平性、答案的安全性可以得到有效的保證。因此,采用無紙化將是以后考試發(fā)展的必然趨勢。驍顧燁鶚巰瀆蕪領(lǐng)鱺賻。2.2 C語言考試系統(tǒng)的組成完整的C語言考試系統(tǒng)應(yīng)具有題庫、自動組卷模塊、學(xué)生考試模塊、考試成績管理模塊,用以實現(xiàn)計算機自動出卷、答卷、批卷流程的全程管理。而我下面所介紹的就是這4個模塊的核心元件?,嶀暈R曖惲錕縞馭篩涼。2.2.1 Microsoft Visual C+VC是微軟公司推出的一個基于Windows系統(tǒng)平臺、可視化的集成開發(fā)環(huán)境,它的源程序按C+語言的要求編寫,并加入了微軟提供的功能強大的MFC類庫。MFC中封裝了大部分Windows API函數(shù)和Windows控件,它包含的功能涉及到整個Windows操作系統(tǒng)。MFC不僅給用戶提供了Windows圖形環(huán)境下應(yīng)用程序的框架,而且還提供了創(chuàng)建應(yīng)用程序的組件,這樣我們就可以從一個較高的起點編程,節(jié)省了大量時間。另外,它提供了大量的代碼,指導(dǎo)用戶編程是實現(xiàn)某些技術(shù)和功能。因此VC+提供的高度可視化的應(yīng)用程序開發(fā)工具和MFC類庫,可使應(yīng)用程序開發(fā)變得簡單。鎦詩涇艷損樓紲鯗餳類。C+(1)C+的組成1、C子語言。C+支持C語言的幾乎全部功能,在語法上與C語言僅有極微妙的差別。2、面向?qū)ο蟮腃+。C+首先作為一門面向?qū)ο蟮恼Z言而聞名,這個特點在這里不再詳述。3、泛型編程語言。C+強大(但容易失控的)模板功能使它能在編譯期完成許多工作,從而大大提高運行期效率。櫛緶歐鋤棗鈕種鵑瑤錟。4、STL(C+標準模板庫)。隨著STL的不斷發(fā)展,它已經(jīng)逐漸成為C+程序設(shè)計中不可或缺的部分,其效率可能比一般的naive代碼低些,但是其安全性與規(guī)范性使它大受歡迎。轡燁棟剛殮攬瑤麗鬮應(yīng)。(2)C+的優(yōu)勢傳統(tǒng)上認為,C+相對于目前一些新潮的語言,如Java、C#,優(yōu)勢在于程序的運行性能。這種觀念并不完全。一般認為,使用Java或C#的開發(fā)成本比C+低。但是,如果能夠充分分析C+和這些語言的差別,會發(fā)現(xiàn)這句話的成立是有條件的。這個條件就是:軟件規(guī)模和復(fù)雜度都比較小。如果不超過3萬行有效代碼(不包括生成器產(chǎn)生的代碼),這句話基本上還能成立。否則,隨著代碼量和復(fù)雜度的增加,C+的優(yōu)勢將會越來越明顯。造成這種差別的就是C+的軟件工程性。在Java和C#大談軟件工程的時候,C+實際上已經(jīng)悄悄地將軟件工程性提升到一個前所未有的高度。峴揚斕滾澗輻灄興渙藺。MFCMFC,微軟基礎(chǔ)類(Microsoft Foundation Classes),同VCL類似,是一種Application Framework,隨微軟Visual C+ 開發(fā)工具發(fā)布。MFC 應(yīng)用程序的總體結(jié)構(gòu)通常由開發(fā)人員從MFC類派生的幾個類和一個CWinApp類對象(應(yīng)用程序?qū)ο螅┙M成。VC是WinDOS下開發(fā)人員使用的專業(yè)C+ SDK(SDK,Standard SoftWare Develop Kit,專業(yè)軟件開發(fā)平臺),MFC就是掛在它之上的一個輔助軟件開發(fā)包。MFC不只是一個功能單純的界面開發(fā)系統(tǒng),它提供的類絕大部分用來進行界面開發(fā),關(guān)聯(lián)一個窗口的動作,但它提供的類中有好多類不與一個窗口關(guān)聯(lián),即類的作用不是一個界面類,不實現(xiàn)對一個窗口對象的控制(如創(chuàng)建,銷毀),而是一些在WinDOS(用MFC編寫的程序絕大部分都在WinDOS中運行)中實現(xiàn)內(nèi)部處理的類,如數(shù)據(jù)庫的管理類等。詩叁撻訥燼憂毀厲鋨驁。(1)一些重要的MFCCWnd:窗口,它是大多數(shù)“看得見的東西”的父類(Windows里幾乎所有看得見的東西都是一個窗口,大窗口里有許多小窗口),比如視圖CView、框架窗口CFrameWnd、工具條CToolBar、對話框CDialog、按鈕CButton,etc;一個例外是菜單(CMenu)不是從窗口派生的。該類很大,一開始也不必學(xué),知道就行了。 則鯤愜韋瘓賈暉園棟瀧。CDocument文檔:負責(zé)內(nèi)存數(shù)據(jù)與磁盤的交互。最重要的是OnOpenDocument(讀入),OnSaveDocument(寫盤),Serialize(讀寫)。脹鏝彈奧秘孫戶孿釔賻。CView視圖:負責(zé)內(nèi)存數(shù)據(jù)與用戶的交互。包括數(shù)據(jù)的顯示、用戶操作的響應(yīng)(如菜單的選取、鼠標的響應(yīng))。最重要的是OnDraw(重畫窗口),通常用CWnd:Invalidate()來啟動它。另外,它通過消息映射表處理菜單、工具條、快捷鍵和其他用戶消息。你自己的許多功能都要加在里面,你打交道最多的就是它。 鰓躋峽禱紉誦幫廢掃減。(2)MFC編程的優(yōu)勢隨著編程語言的推陳出新,MFC一些缺點日益突出。最重要的就是入門門檻相對其他語言要高,而且同樣完成一個任務(wù)代碼量相對較多。但是MFC真的沒有任何優(yōu)勢了嗎?不是,面對底層程序,它能很輕松的與Windows API或驅(qū)動程序結(jié)合,就是在自己的代碼中直接使用API函數(shù),而API和驅(qū)動程序的資料都是以C語言為基礎(chǔ)的,這使得VC程序員能夠更輕松的使用Windows API。這樣造成了一個很有意思的現(xiàn)象,即入門時VC程序員要付出更多的努力來學(xué)習(xí),但是一旦掌握后,開發(fā)其他領(lǐng)域的程序或使用第三方軟件時,如工業(yè)控制類的程序,由于底層的程序都是用C語言編寫,反倒是VC程序員能夠更快的掌握該領(lǐng)域的編程技術(shù)。而很多其他的編程語言甚至找不到相關(guān)的資料。這就說明VC(MFC)實際上是一種入門困難,但是擴展學(xué)習(xí)卻很輕松的語言框架。如果既限于某一領(lǐng)域的話VC毫無優(yōu)勢可言,但是如果開發(fā)一個新的領(lǐng)域的應(yīng)用程序或者該程序涉及多個應(yīng)用領(lǐng)域的話,可減少重復(fù)學(xué)習(xí)的頻率和難度,VC(MFC)的優(yōu)勢會立刻顯現(xiàn)出來。稟虛嬪賑維嚌妝擴踴糶。2.2.2 SQL SERVER 2000(結(jié)構(gòu)化查詢語言 SQL)1986年,ANSI把SQL作為關(guān)系數(shù)據(jù)庫語言的美國標準,同年公布了標準SQL文本。目前SQL標準有3個版本?;維QL定義是ANSIX3135-89,“Database Language - SQL with Integrity Enhancement”ANS89,一般叫做SQL-89。SQL-89定義了模式定義、數(shù)據(jù)操作和事務(wù)處理。SQL- 89和隨后的ANSIX3168-1989,“Database Language-Embedded SQL”構(gòu)成了第一代SQL標準。ANSIX3135-1992ANS92描述了一種增強功能的SQL,現(xiàn)在叫做SQL-92標準。SQL-92包括模式操作,動態(tài)創(chuàng)建和SQL語句動態(tài)執(zhí)行、網(wǎng)絡(luò)環(huán)境支持等增強特性。在完成SQL-92標準后,ANSI和ISO即開始合作開發(fā)SQL3標準。SQL3的主要特點在于抽象數(shù)據(jù)類型的支持,為新一代對象關(guān)系數(shù)據(jù)庫提供了標準。陽簍埡鮭罷規(guī)嗚舊巋錟。(1)SQL Server 2000特點1.完全的Web支持:SQL Server 2000提供了以 Web 標準為基礎(chǔ)的擴展數(shù)據(jù)庫編程功能。豐富的 XML 和 Internet 標準支持允許使用內(nèi)置的存儲過程以 XML 格式輕松存儲和檢索數(shù)據(jù)。還可以使用 XML 更新程序容易地插入、更新和刪除數(shù)據(jù)。通過 Web 輕松訪問數(shù)據(jù)。也可以使用 HTTP 來向數(shù)據(jù)庫發(fā)送查詢、對數(shù)據(jù)庫中存儲的文檔執(zhí)行全文搜索、以及通過 Web 進行自然語言查詢。SQL Server 2000分析服務(wù)功能被擴展到了 Internet。通過 Web 瀏覽器來訪問和控制多維數(shù)據(jù)。 溈氣嘮戇萇鑿鑿櫧諤應(yīng)。2.高度的可伸縮性和可靠性 使用 SQL Server 2000 可以獲得非凡的可伸縮性和可靠性。通過向上伸縮和向外擴展的能力,SQL Server 滿足了苛刻的電子商務(wù)和企業(yè)應(yīng)用程序要求。SQL Server 2000 利用了對稱多處理器 (SMP) 系統(tǒng)。SQL Server Enterprise Edition 最多可以使用 32 個處理器和 64 GB RAM。向外擴展可以將數(shù)據(jù)庫和數(shù)據(jù)負載分配給多臺服務(wù)器。通過增強的故障轉(zhuǎn)移群集、日志傳送和新增的備份策略,SQL Server 2000 達到了最大的可用性。 鋇嵐縣緱虜榮產(chǎn)濤團藺。(2)SQL數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)分為數(shù)據(jù)的邏輯結(jié)構(gòu)和數(shù)據(jù)的物理結(jié)構(gòu)。數(shù)據(jù)的邏輯結(jié)構(gòu)是從邏輯的角度(即數(shù)據(jù)間的聯(lián)系和組織方式)來觀察數(shù)據(jù),分析數(shù)據(jù),與數(shù)據(jù)的存儲位置無關(guān)。數(shù)據(jù)的物理結(jié)構(gòu)是指數(shù)據(jù)在計算機中存放的結(jié)構(gòu),即數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機中的實現(xiàn)形式,所以物理結(jié)構(gòu)也被稱為存儲結(jié)構(gòu)。這里只研究數(shù)據(jù)的邏輯結(jié)構(gòu),并將反映和實現(xiàn)數(shù)據(jù)聯(lián)系的方法稱為數(shù)據(jù)模型。懨俠劑鈍觸樂鷴燼觶騮。(3)SQL數(shù)據(jù)庫中常用的幾個系統(tǒng)表1、sysobjects系統(tǒng)對象表。 保存當(dāng)前數(shù)據(jù)庫的對象,如約束、默認值、日志、規(guī)則、存儲過程等sysobjects 重要字段解釋:sysObjects ( Name sysname, -object 名稱 id int, -object id xtype char(2), - object 類型 type char(2), - Object 類型 uid smallint, - object 所有者的ID . -其他的字段不常用到。 )該表中包含該數(shù)據(jù)庫中的所有對象,如有那些表 存儲過程 視圖 等信息2、sysColumns 數(shù)據(jù)庫字段表。 當(dāng)前數(shù)據(jù)庫的所有字段都保留在里面。 重要字段解釋:sysColumns ( name sysname, -字段名稱 id int, -該字段所屬的表的ID xtype tinyInt, -該字段類型,關(guān)聯(lián)systypes表 length smallint, -該字段物理存儲長度 .)比如要查詢某一個張表的有那些字段和這些字段的長度 3、sysusers當(dāng)前數(shù)據(jù)庫的系統(tǒng)組,以及用戶。sysusers( uid smallint, -用戶id name smallint , -名稱 uid varbinary(85) , -屬于一個登陸 .)對數(shù)據(jù)庫的用戶進行管理 2.2.3 Turboc2.0編譯器(1) 編譯器的工作原理與總體結(jié)構(gòu)編譯是從源代碼(通常為高階語言)到能直接被計算機或虛擬機執(zhí)行的目標代碼(通常為低階語言或機器語言)的翻譯過程。典型的編譯器輸出是由包含入口點的名字和地址, 以及外部調(diào)用(到不在這個目標文件中的函數(shù)調(diào)用)的機器代碼所組成的目標文件。一組目標文件,不必是同一編譯器產(chǎn)生,但使用的編譯器必需采用同樣的輸出格式,可以鏈接在一起并生成可以由用戶直接執(zhí)行的可執(zhí)行程序。一個現(xiàn)代編譯器的主要工作流程如下圖:謾飽兗爭詣繚鮐癩別瀘。源代碼 (source code) 預(yù)處理器 (preprocessor) 編譯器 (compiler) 匯編程序 (assembler) 目標代碼 (object code) 鏈接器 (Linker) 可執(zhí)行程序 (executables)咼鉉們歟謙鴣餃競蕩賺。(2) 編譯參數(shù)的設(shè)置主要通過IDE的菜單項Project-Settings-C/C+頁來完成。我們可以看到這一頁的最下面Project Options中的內(nèi)容,一般如下:瑩諧齷蘄賞組靄縐嚴減。1) General:一些總體設(shè)置。Warning level用來控制警告,其中Level 1是最嚴重的級別;Warnings as errors將警告當(dāng)作錯誤處理;Optimizations是代碼優(yōu)化,可以在Category的Optimizations項中進行更細的設(shè)置;Generate browse info用以生成.sbr文件,記錄類、變量等符號,可以在Category的Listing Files項中進行更多的設(shè)置。Debug info,生成調(diào)試:None,不產(chǎn)生任何調(diào)試;Line Numbers Only,僅生成全局的和外部符號的調(diào)試到.OBJ文件或.EXE文件,減小目標文件的尺寸;麩肅鵬鏇轎騍鐐縛縟糶。2) C+ Language:pointer_to_member representation用來設(shè)置類定義/引用的先后關(guān)系,一般為Best-Case Always表示在引用類之前該類肯定已經(jīng)定義了;Enable Exception Handling,進行同步的異常處理;Enable Run-Time Type Information迫使編譯器增加代碼在運行時進行對象類型檢查;Disable Construction Displacements,設(shè)置類構(gòu)造/析構(gòu)函數(shù)調(diào)用虛函數(shù)問題。納疇鰻吶鄖禎銣膩鰲錟。3) Code Generation:Processor表示代碼指令優(yōu)化,可以為80386、80486、Pentium、Pentium Pro,或者Blend表示混合以上各種優(yōu)化。Use run-time library用以指定程序運行時使用的運行時庫,有一個原則就是,一個進程不要同時使用幾個版本的運行時庫。連接了單線程庫就不支持多線程調(diào)用,連接了多線程庫就要求創(chuàng)建多線程的應(yīng)用程序。風(fēng)攆鮪貓鐵頻鈣薊糾廟。4) Customize:Disable Language Extensions,表示不使用微軟為標準C做的語言擴展;Eliminate Duplicate Strings,主要用于字符串優(yōu)化,使用這個參數(shù),使得滅噯駭諗鋅獵輛覯餿藹。char sBuffer = This is a character buffer;char tBuffer = This is a character buffer;sBuffer和tBuffer指向的是同一塊內(nèi)存空間;Enable Function-Level Linking ,告訴編譯器將各個函數(shù)按打包格式編譯;Enables minimal rebuild,通過保存關(guān)聯(lián)到.IDB文件,使編譯器只對最新類定義改動過的源文件進行重編譯,提高編譯速度;鐒鸝餉飾鐔閌貲諢癱騮。5) Listing Files:Generate browse info的功能上面已經(jīng)提到過。這里可以進行更多的設(shè)置。Exclude Local Variables from Browse Info表示是否將局部變量的放到.SBR文件中。Listing file type可以設(shè)置生成的列表文件的內(nèi)容:Assembly-Only Listing僅生成匯編代碼文件;Assembly With Machine Code生成機器代碼和匯編代碼文件;Machine Code,and Source生成機器碼、源代碼和匯編代碼文件。攙閿頻嶸陣澇諗譴隴瀘。6) Optimizations:代碼優(yōu)化設(shè)置。可以選擇Maximize Speed生成最快速的代碼,或Minimize Size生成最小尺寸的程序,或者Customize定制優(yōu)化。趕輾雛紈顆鋝討躍滿賺。第3章 學(xué)生成績管理模塊系統(tǒng)3.1 學(xué)生成績管理系統(tǒng)的重要性C語言考試中需要考慮到計算機死機、異常重啟、突然斷電等一些意外事故的發(fā)生,所以我們有必要對每一位考生的試卷(包括試題和考生的答案以及考試剩余時間)進行保存,以便在適當(dāng)?shù)臅r候進行恢復(fù),由于每一份試卷上的信息量很大,而且類型也不一樣,如果按傳統(tǒng)方法保存的話,將會是件相當(dāng)復(fù)雜的事情,還好學(xué)生成績管理系統(tǒng)為我們提供了對象序列化功能,我們可以新建了一個RandPaper類,上面包括了隨機生成的試卷的所有信息,當(dāng)考生登錄后,生成一個RandPaper對象,然后將這個對象序列化后保存到數(shù)據(jù)庫中,以后需要恢復(fù)試卷時,從數(shù)據(jù)庫中讀取后將其反序列化后即可得到原來對象的所有屬性值。這個保存函數(shù)每隔一定時間要執(zhí)行一次,這里可以采用JavaScritp來控制。夾覡閭輇駁檔驀遷錟減。3.2 學(xué)生成績管理系統(tǒng)設(shè)計3.2.1 系統(tǒng)需求1. 當(dāng)前學(xué)生信息:通過結(jié)構(gòu)體struct student 來保存學(xué)生的姓名、學(xué)號、性別、語文、數(shù)學(xué)、英語和計算機等等相關(guān)信息,并且通過cin函數(shù)來給當(dāng)前學(xué)生輸入初始信息。視絀鏝鴯鱭鐘腦鈞欖糲。2. 學(xué)生成績查詢: 輸入一個學(xué)號, 在文件中查找此學(xué)生, 若找到則輸出此學(xué)生的全部信息和成績; 若找不到則輸出查找失敗的信息。 同時也可以全部把各科的平均成績,最高和最低分輸出。偽澀錕攢鴛擋緬鐒鈞錠。3. 新生插入 :通過給該生的學(xué)號來和原班上的學(xué)生的學(xué)號比較大小,若大就在后,若小則靠前排,然后將該生的信息保存下來。緦徑銚膾齲轎級鏜撟廟。4. 輸出全部學(xué)生信息和全部學(xué)生成績。5. 退出系統(tǒng)。6. 附加說明:系統(tǒng)將來完善的功能有:可以通過性別來模糊查詢,也可以通過姓名的姓氏先進行模糊查詢,以便后面精確查找。騅憑鈳銘僥張礫陣軫藹。3.2.2 總體設(shè)計1.仔細閱讀系統(tǒng)要求,首先將此系統(tǒng)化分為如下幾個部分(即如下幾個函數(shù))(1)輸入初始的學(xué)生信息:其中包括學(xué)生的姓名、學(xué)號和性別以及學(xué)生的語文、數(shù)學(xué)、英語和計算機等相關(guān)信息;可用函數(shù)cin(stu *p1)來實現(xiàn)此操作。癘騏鏨農(nóng)剎貯獄顥幗騮。(2)查詢模塊:可用stu *lookdata(stu *p1)來實現(xiàn)。找到就輸出此學(xué)生全部信息,包括學(xué)生的語文、數(shù)學(xué)、英語和計算機等的成績。鏃鋝過潤啟婭澗駱讕瀘。(3)插入模塊:可用insert( )函數(shù)來實現(xiàn)。其中通過學(xué)號的大小來比較的,并且以此來排序。 (4)輸出學(xué)生的信息以及成績:通過學(xué)生的姓名來查看學(xué)生的語文、數(shù)學(xué)、英語和計算機等相關(guān)成績,同時也可以分別通過caverage() 、maverage() 、eaverage() 和comaverage()來輸出語文、數(shù)學(xué)、英語和計算機等成績的平均分數(shù)、最高和最低分數(shù)。榿貳軻謄壟該檻鯔塏賽。 (5)退出系統(tǒng):可用一個函數(shù)exit()來實現(xiàn),首先將信息保存到文件中,釋放動態(tài)創(chuàng)建的內(nèi)存空間,再退出此程序。邁蔦賺陘賓唄擷鷦訟湊。3.2.3 功能結(jié)構(gòu)設(shè)計 1. 界面設(shè)計:此系統(tǒng)界面采用圖形和數(shù)字化菜單設(shè)計。主界面初步設(shè)計如下: 學(xué)生成績管理系統(tǒng)請選擇相應(yīng)的數(shù)字執(zhí)行相應(yīng)的功能: 1:是否輸入其他數(shù)據(jù) 2:查看數(shù)據(jù) 3:插入數(shù)據(jù) 4:查找數(shù)據(jù) 5:更新數(shù)據(jù) 6:保留數(shù)據(jù) 7:顯示或打印數(shù)據(jù) 8:語文成績狀況 9:數(shù)學(xué)成績狀況 10:英語成績狀況 11:計算機成績狀況 12:幫助 13:退出系統(tǒng)2. 數(shù)據(jù)結(jié)構(gòu)設(shè)計: 程序設(shè)計中用到的結(jié)構(gòu)體類型: 學(xué)生信息結(jié)構(gòu)體類型:typedef struct student char nameMAX; int numMAX; char sexMAX; int chinese; int mathematic; int english; int computer; struct student *next; 3.2.4 學(xué)生成績管理系統(tǒng)運行過程#includestdio.h#includestddef.h#includestddef.h#includestring.h#define MAX 10typedef struct student /*定義結(jié)構(gòu)體*/ char nameMAX; /*姓名*/ int numMAX; /* 學(xué)號*/ char sexMAX; /*性別*/ int chinese; /*語文*/ int mathematic; /* 數(shù)學(xué)*/ int english; /*英語*/ int computer; /*計算機*/ struct student *next; /*結(jié)構(gòu)體指針*/ stu;stu *head; /*頭指針*/void print() /*顯示或打印函數(shù)*/嶁硤貪塒廩袞憫倉華糲。 system(cls); printf(tttScore Manage Systemn); /*成績管理系統(tǒng)*/ 該櫟諼碼戇沖巋鳧薩錠。 printf(Enter Recordt); /*輸入數(shù)據(jù)*/劇妝諢貰攖蘋塒呂侖廟。 printf(Displayt); /*顯示*/ printf(Insertt); /*插入數(shù)據(jù)*/臠龍訛驄椏業(yè)變墊羅蘄。 printf(Questt); /*訪問數(shù)據(jù)*/鰻順褸悅漚縫囅屜鴨騫。 printf(Updatet); /*以前數(shù)據(jù)*/穡釓虛綹滟鰻絲懷紓濼。 printf(Savet); /*保留數(shù)據(jù)*/隸誆熒鑒獫綱鴣攣駘賽。 printf(Fresht); /*更新數(shù)據(jù)*/浹繢膩叢著駕驃構(gòu)碭湊。 printf(Chinese Averaget); /*語文平均成績*/鈀燭罰櫝箋礱颼畢韞糲。 printf(Math Averaget); /*數(shù)學(xué)平均成績*/愜執(zhí)緝蘿紳頎陽灣熗鍵。 printf(English Averaget); /*英語平均成績*/貞廈給鏌綞牽鎮(zhèn)獵鎦龐。 printf(Computer Averaget); /*計算機平均成績*/嚌鯖級廚脹鑲銦礦毀蘄。 printf(Quittn); /*退出*/ void cin(stu *p1) /*輸入相關(guān)數(shù)據(jù)的函數(shù)*/薊鑌豎牘熒浹醬籬鈴騫。 printf(Enter name:n); scanf(%s,&p1-name); printf(Enter num:n); scanf(%d,&p1-num); printf(Enter sex:n); scanf(%s,&p1-sex); printf(Enter score:n); printf(Enter chinese:n); scanf(%d,&p1-chinese); printf(Enter math:n); scanf(%d,&p1

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論