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

下載本文檔

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

文檔簡介

1、<p>  基于VC++的班級信息管理系統(tǒng)</p><p>  計算機科學(xué)系 計算機科學(xué)與技術(shù)專業(yè)</p><p>  學(xué)號: 姓名: 指導(dǎo)老師</p><p>  摘 要 隨著社會的發(fā)展與科技的全面進步,使得人們越來越向信息化、數(shù)字化發(fā)展,管理信息系統(tǒng)(MIS)是一個由人、計算機等組成的能進行信息收集、傳遞、加工、維

2、護和實用的系統(tǒng),必然會代替過去大量的、繁瑣的手工操作。對于學(xué)校來說,對學(xué)生的個各種信息進行統(tǒng)計并顯示是非常重要的,本文通過Visual C++6.0的編程環(huán)境編寫班級信息管理系統(tǒng),利用Microsoft SQL server 2005數(shù)據(jù)庫系統(tǒng)編寫數(shù)據(jù)表,采用ODBC數(shù)據(jù)庫訪問技術(shù),用模塊化設(shè)計方式將系統(tǒng)各個功能模塊層層分解,設(shè)計出系統(tǒng)的模塊化結(jié)構(gòu),并根據(jù)系統(tǒng)的具體要求和需要實現(xiàn)功能,詳細的定義了各個模塊的具體功能。開發(fā)主要包括后期數(shù)據(jù)

3、庫的建立和維護以及前期應(yīng)用程序的開發(fā)兩方面,實現(xiàn)了學(xué)生信息的創(chuàng)建及學(xué)生成績、違紀(jì)情況的輸入、瀏覽、維護和統(tǒng)計,使得系統(tǒng)具有功能強大,界面友好的特點。</p><p>  關(guān)鍵詞:信息管理;Visual C++6.0;SQL server 2005;ODBC</p><p><b>  目 錄</b></p><p>  第一章 引 言5&l

4、t;/p><p>  第二章 系統(tǒng)設(shè)計6</p><p>  2.1 需求分析6</p><p><b>  2.2系統(tǒng)目標(biāo)6</b></p><p>  2.3 可行性分析7</p><p>  第三章 運行環(huán)境及系統(tǒng)技術(shù)簡介7</p><p>  3.1 Visu

5、al C++ 6.0簡介7</p><p>  3.2 Microsoft SQL Server 2005技術(shù)簡介7</p><p>  3.3 SQL數(shù)據(jù)庫的優(yōu)點 8</p><p>  3.4 ODBC技術(shù)簡介9</p><p>  3.5 C++語言簡介9</p><p>  第四章 系統(tǒng)結(jié)構(gòu)功能分

6、析10</p><p>  4.1班級信息管理系統(tǒng)的功能結(jié)構(gòu)10</p><p>  4.2學(xué)生管理系統(tǒng)的業(yè)務(wù)流程圖11</p><p>  4.3數(shù)據(jù)庫設(shè)置11</p><p>  4.3.1.數(shù)據(jù)庫分析11</p><p>  4.3.2.數(shù)據(jù)庫概念設(shè)置12</p><p>  

7、4.3.3.數(shù)據(jù)庫設(shè)計邏輯結(jié)構(gòu)13</p><p>  4.4.公共類的設(shè)置14</p><p>  第五章 主體窗設(shè)計及模塊功能實現(xiàn)15</p><p>  5.1主窗體設(shè)計15</p><p>  5.2科目信息管理模塊設(shè)計16</p><p>  5.2.1科目信息管理模塊概述16</p>

8、<p>  5.2.2科目信息管理技術(shù)分析16</p><p>  5.2.3科目信息管理實現(xiàn)過程17</p><p>  5.3學(xué)生信息管理模塊設(shè)計24</p><p>  5.3.1學(xué)生信息管理模塊概述24</p><p>  5.3.2學(xué)生信息管理實現(xiàn)過程25</p><p>  5.4學(xué)

9、生成績錄入模塊設(shè)置31</p><p>  5.4.1學(xué)生成績錄入模塊概述31</p><p>  5.4.2學(xué)生成績錄入技術(shù)分析31</p><p>  5.4.3學(xué)生成績錄入實現(xiàn)過程32</p><p>  5.5 學(xué)生違紀(jì)查詢模塊設(shè)置35</p><p>  5.5.1學(xué)生違紀(jì)查詢模塊概述35<

10、/p><p>  5.5.2學(xué)生違規(guī)查詢技術(shù)分析36</p><p>  5.5.3學(xué)生違規(guī)查詢實現(xiàn)過程36</p><p>  5.6學(xué)生成績報表打印模塊設(shè)計41</p><p>  第六章.項目文件清單45</p><p><b>  第七章軟件測46</b></p>&l

11、t;p><b>  結(jié)束語47</b></p><p><b>  致謝47</b></p><p><b>  參考文獻48</b></p><p><b>  第一章 引 言</b></p><p>  人類已經(jīng)進入了一個科學(xué)技術(shù)突飛猛進

12、的時代,經(jīng)濟知識和信息產(chǎn)業(yè)日漸重要。信息技術(shù)和網(wǎng)絡(luò)的迅猛發(fā)展和廣泛應(yīng)用,對社會的各個領(lǐng)域產(chǎn)生了深刻的影響,極大地改變了人們的工作、學(xué)習(xí)和交流方式。信息的獲取、交流和應(yīng)用能力,已經(jīng)成為人們最重要的能力之一。在知識經(jīng)濟占主導(dǎo)地位的將來,國家綜合國力和國際競爭能力越來越取決于教育發(fā)展、科學(xué)技術(shù)和知識創(chuàng)新的水平,教育在經(jīng)濟和社會發(fā)展過程中呈現(xiàn)出越來越突出的重要作用。學(xué)生信息管理系統(tǒng)是一個教育代為不可或缺的部分,他的內(nèi)容對于學(xué)校的決策者和管理者來

13、說都是至關(guān)重要的。這就要求學(xué)生信息管理系統(tǒng)擁有強大的功能,能夠提供用戶足夠的信息和快捷的查詢你手段。一直以來,人們實用傳統(tǒng)人工的方法管理學(xué)生信息,這種管理方式存在著許多缺點,入效率低、保密性差、數(shù)據(jù)容易出錯等。此外,時間一長將產(chǎn)生大量冗余的文件和數(shù)據(jù),這對于查找、更新和維護都帶來了不少的困難。 科學(xué)技術(shù)的不斷發(fā)展和提高計算機科學(xué)日漸成熟,其強大的功能人們已經(jīng)有了深刻的認識。作為計算機應(yīng)用的一部分,使用計算機對學(xué)生信息管理系統(tǒng)進行信息管理

14、。有著手工管理無法比擬的優(yōu)點,如檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命</p><p><b>  第二章 系統(tǒng)設(shè)計</b></p><p>  本班級信息管理系統(tǒng)可以說是一個綜合性的學(xué)校學(xué)生管理系統(tǒng),它集成了學(xué)生學(xué)籍管理系統(tǒng)、學(xué)生班級管理系統(tǒng)、學(xué)生成績管理系統(tǒng)和學(xué)生選課管理系統(tǒng)多種功能,因而具有較強的實用行和先進性。</p><p

15、><b>  2.1 需求分析</b></p><p>  通過對學(xué)生管理過程的研究和分析,要求本系統(tǒng)應(yīng)該具有以下功能。</p><p>  (1)學(xué)生信息錄入。</p><p> ?。?)學(xué)生成績錄入。</p><p> ?。?)成績等級設(shè)置。</p><p>  (4)學(xué)生違規(guī)處理。&l

16、t;/p><p> ?。?)學(xué)生成績排行。</p><p> ?。?)學(xué)生信息查詢。</p><p> ?。?)學(xué)生成績查詢、打印。</p><p><b>  2.2系統(tǒng)目標(biāo)</b></p><p>  學(xué)生信息管理系統(tǒng)以實現(xiàn)學(xué)生日常的信息管理為設(shè)計目標(biāo),加以強大的數(shù)據(jù)庫管理功能,可以方便對學(xué)生信息

17、進行管理,大大提高了學(xué)校日常工作的效率。本系統(tǒng)在設(shè)計時應(yīng)該滿足以下幾點:</p><p>  1.采用人機對話的操作方式,信息查詢靈活、方便、快捷、準(zhǔn)確,數(shù)據(jù)存儲安全可靠。</p><p>  2.對學(xué)生信息的操作簡單,可以方便地進行添加、修改和刪除操作。</p><p>  3.可以根據(jù)需要靈活地調(diào)整科目信息。</p><p>  4.可以

18、錄入教師信息,方便任命班級的班主任。</p><p>  5.編輯考試類別,更靈活地對學(xué)生測驗。</p><p>  6.打印學(xué)生成績報表,更直觀地了解學(xué)生成績。</p><p>  7.學(xué)生違規(guī)處理,對違反校規(guī)的學(xué)生進行處罰。</p><p>  8.對用戶輸入的數(shù)據(jù),系統(tǒng)進行嚴(yán)格地數(shù)據(jù)檢驗,盡可能排除人為錯誤。</p>&l

19、t;p>  2.3 可行性分析 </p><p>  由于本系統(tǒng)的管理對象單一,都是在校學(xué)生,且每個數(shù)據(jù)內(nèi)容具有較強的關(guān)聯(lián)性涉及的計算過程不是很復(fù)雜。因此,比較適合采用數(shù)據(jù)庫管理。而且學(xué)校用于學(xué)生管理計算機在存儲量、速度方面都能滿足數(shù)據(jù)庫運行要求。另一方面此小型管理系統(tǒng)從投入的人力、財力與物力來講是非常之小的。由于有指導(dǎo)老師的指導(dǎo)和相關(guān)參考文獻,特別是網(wǎng)上資料以及參考其他程序的功能,因此完全可以實

20、現(xiàn)。</p><p>  第三章 運行環(huán)境及系統(tǒng)技術(shù)簡介 </p><p>  本系統(tǒng)是基于Visual C++ 6.0 編程環(huán)境而開發(fā)的,利用Microsoft SQL Server 2005 建立數(shù)據(jù)庫,通過ODBC訪問數(shù)據(jù)庫。 </p><p>  3.1 Visual C++ 6.0簡介 </p><p>  本班級信息管理系

21、統(tǒng)是基于Visual C++ 6.0環(huán)境而進行開發(fā)的。Visual C++ 6.0 是Microsoft Visual Studio 6.0 系列組件之一,是微軟公司推出的一款C++集成開發(fā)工具。Visual C++是現(xiàn)在最為通用的開發(fā)工具之一,它提供了相當(dāng)齊備類庫和友好的界面,為數(shù)據(jù)庫開發(fā)提供了比較好的開發(fā)環(huán)境。提供了多種數(shù)據(jù)庫訪問技術(shù),可視化的編程環(huán)境,使操作更加直觀簡便。因此借助Visual C++可以開發(fā)出功能強大、速度快、應(yīng)用

22、廣泛并且占用資源少的中小型數(shù)據(jù)庫信息管理系統(tǒng)。</p><p>  3.2 Microsoft SQL Server 2005技術(shù)簡介 </p><p>  本系統(tǒng)以Microsoft SQL Server 2005為后臺數(shù)據(jù)庫,Microsoft SQL Server 2005就是關(guān)系數(shù)據(jù)庫開發(fā)工具,它是一款比較方便易用的數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)庫能匯集各種信息以供查詢、存儲和檢索。所謂的數(shù)據(jù)庫

23、就是由一些有意義和有關(guān)系的數(shù)據(jù)(Data)組成的,一個數(shù)據(jù)庫中包含了許多條記錄(Record),而每條記錄是由多個字段(Field)所做成的,不同的字段存放不同的數(shù)據(jù)。所以數(shù)據(jù)庫的嚴(yán)格定義是一組相關(guān)記錄的集合。而字段則是最基本的數(shù)據(jù)項,也是數(shù)據(jù)庫中最小的單位。在計算機中用來幫助我們管理數(shù)據(jù)庫系統(tǒng),我們稱之為數(shù)據(jù)庫管理系統(tǒng)DataBase Management System(DBMS)。數(shù)據(jù)庫管理系統(tǒng)是架構(gòu)在一個或多個數(shù)據(jù)庫之上的,并針對

24、數(shù)據(jù)庫中的數(shù)據(jù)進行管理運用。</p><p>  3.3 SQL數(shù)據(jù)庫的優(yōu)點 </p><p>  1、存儲方式簡單,易于維護管理。SQL管理的對象有表、查詢、窗體、報表、頁、宏和模塊,以上對象都存放在后綴為.mdf或.ldf的數(shù)據(jù)庫文件中,便于用戶的操作和管理。 </p><p>  2、面向?qū)ο?SQL是一個面向?qū)ο蟮拈_發(fā)工具,利用面向?qū)ο蟮姆绞綄?shù)

25、據(jù)庫系統(tǒng)中的各種功能對象化,將數(shù)據(jù)庫管理的各種功能封裝在各類對象中。它將一個應(yīng)用系統(tǒng)當(dāng)作是由一系列對象組成的,對每個對象它都定義一組方法和屬性,以定義該對象的行為和外圍用戶還可以按需要給對象擴展方法和屬性。通過對象的方法、屬性完成數(shù)據(jù)庫的操作和管理,極大地簡化了用戶的開發(fā)工作。同時,這種基于面向?qū)ο蟮拈_發(fā)方式使得開發(fā)應(yīng)用程序更為簡便。 </p><p>  3、界面友好、易操作。SQL是一個可視化工具,

26、是風(fēng)格與Windows完全一樣,用戶想要生成對象并應(yīng)用,只要使用鼠標(biāo)進行拖放即可,非常直觀方便。系統(tǒng)還提供了表生成器、查詢生成器、報表設(shè)計器以及數(shù)據(jù)庫向?qū)?、表向?qū)?、查詢向?qū)А⒋绑w向?qū)?、報表向?qū)У裙ぞ?,使得操作簡便,容易使用和掌握?</p><p>  4、集成環(huán)境、處理多種數(shù)據(jù)信息。SQL基于Windows操作系統(tǒng)下的集成開發(fā)環(huán)境。該環(huán)境集成了各種向?qū)Ш蜕善鞴ぞ?,極大地提高了開發(fā)人員的作效率,使得建

27、立數(shù)據(jù)庫、創(chuàng)建表、設(shè)計用戶界面、設(shè)計數(shù)據(jù)查詢、報表打印等可以方便有序地進行。   5、SQL支持ODBC開發(fā)數(shù)據(jù)庫互連Open Data Base Connectivity。利用SQL強大的DDE(動態(tài)數(shù)據(jù)交換)和OLE(對象的聯(lián)接和嵌入)特性,可以在一個數(shù)據(jù)表中嵌入位圖、聲音、Excel表格、Word文檔,還可以建立動態(tài)的數(shù)據(jù)庫報表和窗體等。SQL還可以將程序應(yīng)用于網(wǎng)絡(luò),并與網(wǎng)絡(luò)上的動態(tài)數(shù)據(jù)相聯(lián)接。利用數(shù)據(jù)庫訪

28、問對象生成HTML文件,輕松構(gòu)建Internet/Intranet的應(yīng)用。 </p><p>  6、支持廣泛、易于擴展、彈性較大,能夠?qū)⑼ㄟ^鏈接表的方式來打開EXCEL文件、格式化文本文件等。這樣就可以利用數(shù)據(jù)庫的高效率對其中的數(shù)據(jù)進行查詢、處理。還可以通過以Access作為前臺客戶端,以SQL Server作為后臺數(shù)據(jù)庫的方式,如ADP開發(fā)大型數(shù)據(jù)庫應(yīng)用系統(tǒng)??傊?,SQL是一個既可以只用來存放數(shù)據(jù)的

29、數(shù)據(jù)庫,也可以作為一個客戶端開發(fā)工具來進行數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā),即可以開發(fā)方便易用的小型軟件,也可以用來開發(fā)大型的應(yīng)用系統(tǒng)。</p><p>  3.4 ODBC技術(shù)簡介</p><p>  開放式數(shù)據(jù)庫互連(Open-DataBase-Connectivity,簡稱ODBC)。ODBC的基本思想是為用戶提供簡單、標(biāo)準(zhǔn)、透明的數(shù)據(jù)庫連接的公共編程接口,開發(fā)廠商根據(jù)ODBC的標(biāo)準(zhǔn)去實現(xiàn)底層的驅(qū)

30、動程序,這個驅(qū)動對用戶是透明的,并允許根據(jù)不同的DBMS采用不同的技術(shù)加以優(yōu)化實現(xiàn),概括起來,ODBC具有以下靈活的特點:</p><p>  1. 使用戶程序有很高的互操作性,相同的目標(biāo)代碼適用于不同的DBMS;</p><p>  2. 由于ODBC的開放性,它為程序集成提供了便利,為客戶機/服務(wù)器結(jié)構(gòu)提供了技術(shù)支持;</p><p>  3. 由于應(yīng)用與底層網(wǎng)

31、絡(luò)環(huán)境和DBMS分開,簡化了開發(fā)維護上的困難。</p><p>  3.5 C++語言簡介 </p><p>  C++語言是一種優(yōu)秀的面向?qū)ο蟪绦蛟O(shè)計語言。它在C語言的基礎(chǔ)上發(fā)展而來,但它比C語言更容易為人們學(xué)習(xí)和掌握。C++以其獨特的語言機制在計算機科學(xué)的各個領(lǐng)域中得到了廣泛的應(yīng)用。面向?qū)ο蟮脑O(shè)計思想是在原來結(jié)構(gòu)化程序設(shè)計方法基礎(chǔ)上的一個質(zhì)的飛躍,C++完美地體現(xiàn)了面向?qū)ο蟮母?/p>

32、種特性。 C++所提供的抽象機制能夠被應(yīng)用于那些對效率和可適應(yīng)性具有極高要求的程序設(shè)計任務(wù)之中。 C++的一個目標(biāo)就是提供更易用并具有一定承受能力的設(shè)計思想和程序設(shè)計技術(shù),進一步提高程序的質(zhì)量。然而,C++的設(shè)計目標(biāo)總還是在于要支持一定范圍內(nèi)的各種程序設(shè)計風(fēng)格和設(shè)計思想。這與一般在語言設(shè)計方面的觀點形成一定對比。一般在語言設(shè)計上總是試圖將所有系統(tǒng)內(nèi)建于單獨一個被重點支持的、帶有強制性的程序設(shè)計風(fēng)格之中或稱典范(paradigm)。 C+

33、+提供了class、namespace和訪問控制,使設(shè)計決策的各異化(locality)成為可能。</p><p>  第四章 系統(tǒng)結(jié)構(gòu)功能分析</p><p>  4.1班級信息管理系統(tǒng)的功能結(jié)構(gòu)</p><p>  班級信息管理系統(tǒng)的功能結(jié)構(gòu)如圖4.1所示</p><p>  圖4.1 學(xué)生管理系統(tǒng)功能結(jié)構(gòu)圖</p><

34、;p>  4.2學(xué)生管理系統(tǒng)的業(yè)務(wù)流程圖</p><p>  圖4.2 學(xué)生管理業(yè)務(wù)流程圖</p><p><b>  4.3數(shù)據(jù)庫設(shè)置</b></p><p>  4.3.1.數(shù)據(jù)庫分析</p><p>  在學(xué)生管理系統(tǒng)中由于涉及大量的學(xué)生信息,因此在設(shè)計該系統(tǒng)時選擇使用了Microsoft SQL Serve

35、r 2005來滿足系統(tǒng)的要求,數(shù)據(jù)庫的名稱是db_student,在數(shù)據(jù)庫中創(chuàng)建11張表用于存儲不同信息。</p><p>  4.3.2.數(shù)據(jù)庫概念設(shè)置</p><p>  根據(jù)前面的需求分析和系統(tǒng)設(shè)計規(guī)劃,本系統(tǒng)中使用的數(shù)據(jù)庫實體對象分別為管理員實體、教師信息實體、學(xué)生信息實體、違紀(jì)信息實體、成績段實體和成績信息實體等,下面將給出幾個關(guān)鍵實體的E—R圖。</p><

36、p>  管理員實體:包括管理員名稱和管理員密碼。管理員實體E_R如圖4.3所示</p><p>  教師信息實體:教師信息實體包括教師編號實體、教師姓名實體、教師性別實體、所在辦公室實體、教師文憑實體和教師職稱實體,教師信息實體E_R圖如4.4所示</p><p>  圖4.3 管理員實體E_R圖 圖4.4 教師信息實體E_R圖<

37、/p><p>  學(xué)生信息實體:學(xué)生信息實體包括學(xué)生編號實體、學(xué)生姓名實體、學(xué)生年齡實體、學(xué)生性別實體、聯(lián)系電話實體、家庭地址實體和所在班級實體。學(xué)生信息實體E_R圖如圖4.5所示</p><p>  違規(guī)信息實體:違規(guī)信息實體包括:違規(guī)編號實體、違規(guī)內(nèi)容實體、處理結(jié)果實體、備注信息實體和違規(guī)時間實體。違規(guī)信息實體E_R圖如圖4.6所示</p><p>  圖4.5 學(xué)

38、生信息實體E_R圖 圖4.6 違規(guī)信息實體E_R圖</p><p>  成績等級實體:成績等級實體包括等級名稱實體、成績上限實體、成績下限實體、成績等級實體E_R圖如圖4.7所示</p><p>  成績信息實體:成績信息實體包括學(xué)生編號實體、考試科目實體、考試成績實體、考試類別實體、考試時間實體。成績信息實體E_R圖如圖4.8所示</p>

39、<p>  圖4.7成績實體等級E_R圖 圖4.8成績信息實體E_R圖</p><p>  4.3.3.數(shù)據(jù)庫設(shè)計邏輯結(jié)構(gòu)</p><p>  下面給出學(xué)生管理系統(tǒng)數(shù)據(jù)庫中主要表的表結(jié)構(gòu)。</p><p>  tb_user(管理員信息表):管理員信息表用于保存管理員的信息,如表4.1所示</p&g

40、t;<p>  表4.1 表tb_user的結(jié)構(gòu)</p><p>  tb_teacher(教師信息表):用于保存教師的信息,如表4.2所示</p><p>  表4.2 表tb_teacher的結(jié)構(gòu)</p><p>  tb_studentinfo(學(xué)生信息表):用于保存學(xué)生的信息,如表4.3所示</p><p>  表4.3

41、 表tb_studentinfo的結(jié)構(gòu)</p><p>  tb_regbreakinfo(違規(guī)信息表):用于保存違規(guī)事件的信息,如表4.4所示</p><p>  表4.4 表tb_regbeakinfo的結(jié)構(gòu)</p><p>  tb_gradelevel(成績等級表):成績等級表用于保存學(xué)生成績等級信息,如表4.5所示</p><p>

42、  表4.5 表tb_gradelevel的結(jié)構(gòu)</p><p>  tb_examinfo_sub(成績信息表):成績信息表用于保存學(xué)生的等級信息,如表4.6所示</p><p>  表4.6 表tb_examinfo_sub的結(jié)構(gòu)</p><p>  4.4.公共類的設(shè)置</p><p>  本系統(tǒng)是由ODBC連接的數(shù)據(jù)源,可以通過CDa

43、tabase類的Open函數(shù)連接數(shù)據(jù)源Open函數(shù)用于創(chuàng)建數(shù)據(jù)源的連接,語法如下:</p><p>  virtual BOOL Open(LPCTSTR lpszDSN,BOOL bExclusive=FALSE,BOOL bReadonly FALSE,LPCTSTR lpszConnect=”O(jiān)DBC;”,BOOL bUseCursorLib=TURE);</p><p>  Ope

44、n函數(shù)中的參數(shù)說明如表4.7所示。</p><p>  表4.7 Open函數(shù)的參數(shù)說明</p><p>  在CMystudentsysApp類中構(gòu)造一個CDatabase類對象,在InitInstance方法中連接數(shù)據(jù)源,代碼如下:</p><p>  if(CoInitialize(NULL)!=0) //初始化COM環(huán)境&

45、lt;/p><p><b>  {</b></p><p>  AfxMessagebox(“初始化COM支持庫失?。 ?;</p><p><b>  exit(1);</b></p><p><b>  }</b></p><p><b>  

46、try{</b></p><p>  CString strConnect;</p><p>  strConnect.Format(“DSN=mystudentsys;”); //設(shè)置連接字符串</p><p>  //判斷連接數(shù)據(jù)庫是否成功</p><p>  if(m_DB.Open(NULL,false,f

47、alse,”O(jiān)DBC;DSN=mystudentsys;UID=Sa;pwd=;”)==0);</p><p><b>  {</b></p><p>  AfxMessageBox(“Unable to the Specified Data Source”);</p><p>  return FALSE;</p><p&

48、gt;<b>  }</b></p><p><b>  }</b></p><p>  catch(CDBRxception *pE)</p><p><b>  {</b></p><p>  pE—>ReportError();</p><p&g

49、t;  pE—>Delete(); //刪除</p><p>  return FLASE;</p><p><b>  }</b></p><p>  第五章 主體窗設(shè)計及模塊功能實現(xiàn)</p><p><b>  5.1主窗體設(shè)計</b></p><p

50、>  “學(xué)生信息管理系統(tǒng)”主窗口由菜單和客戶區(qū)域組成,其中,其中客戶區(qū)域顯示了一幅位圖,主窗體效果如圖5.1所示</p><p>  圖5.1 主窗體效果圖</p><p>  主窗體設(shè)計步驟如下:</p><p> ?。?)啟動Visual C++6.0,選擇“File”/“New”命令,打開“New”對話框,。</p><p>  

51、(2)在“New”對話框左方的列表視圖中選擇“MFC AppWizard(exe)”選項,在“Project name”文本框中輸入工程名稱,在“Location”文本框中設(shè)置工程保存的路徑。單機“OK”按鈕進入“MFC AppWizard-Step 1”對話框。 (3)單機“Finish”按鈕完成工程的創(chuàng)建。</p><p> ?。?)在主窗口中放置1個圖像控件,并導(dǎo)入1幅位圖資源,適當(dāng)調(diào)整圖像控件的位

52、置。</p><p> ?。?)創(chuàng)建一個菜單資源,并設(shè)置各個菜單項的ID和名稱。</p><p> ?。?)通過類向?qū)蛑鞔翱谔砑硬藛雾椀膯螕羰录?lt;/p><p>  5.2科目信息管理模塊設(shè)計</p><p>  5.2.1科目信息管理模塊概述</p><p>  科目信息管理用于維護科目信息,主要實現(xiàn)科目的添加,

53、修改和刪除等操作,“科目信息管理”窗口如圖5.2所示</p><p>  圖5.2 科目信息管理</p><p>  5.2.2科目信息管理技術(shù)分析</p><p>  本系統(tǒng)是用ODBC連接的數(shù)據(jù)源,在進行對數(shù)據(jù)表的操作時可以以CRecordset類為基類派生一個數(shù)據(jù)表映射類,這樣可以方便地操作數(shù)據(jù)表。派生數(shù)據(jù)表映射類的步驟如何:</p><p

54、> ?。?)創(chuàng)建一個與數(shù)據(jù)表映射的類CSubjectinfo,打開“New Class”對話框,單擊“Add Class”按鈕,在彈出菜單中選擇“New”命令,打開新建類窗口。</p><p> ?。?)在“Name”文本框中輸入類名“CSubjectinfo”,在“Base class”下拉列表框中選擇基類“CREcordset”,單擊“OK”按鈕,打開“Database Options”對話框。<

55、/p><p> ?。?)在“ODBC”下拉列表框中選擇一個數(shù)據(jù)源,本例為“mystudentsys”?!癿ystudentsys”是學(xué)生管理系統(tǒng)所需的數(shù)據(jù)源,用于連接tb_subject數(shù)據(jù)庫。</p><p>  (4)單擊“OK”按鈕,打開“SQL Server登陸”對話框。</p><p> ?。?)單擊“確定”按鈕,打開“Select Database Tabl

56、e”對話框。</p><p> ?。?)選擇“dbo.tb_subject”選項,單擊“OK”按鈕創(chuàng)建映射類。</p><p> ?。?)在映射類CSubjectinfo的頭文件中引入afxdb.h頭文件。</p><p>  5.2.3科目信息管理實現(xiàn)過程</p><p> ?。?)創(chuàng)建一個對話框類,打開對話框?qū)傩源翱?,將對話框的“ID”改

57、為“IDD_DIg_subjectinfo”,將對話框標(biāo)題改為“科目信息管理”。</p><p> ?。?)向?qū)υ捒蛑刑砑右粋€群組控件、2個靜態(tài)文本控件和2個編輯框控件,各個控件的屬性設(shè)置如表所示。</p><p>  (3)創(chuàng)建一個工具欄資源“IDR_TOOLBAR_subjectinfo”。</p><p>  (4)為創(chuàng)建的對話框添加一個類,類名為“CSubj

58、ectdlg”。在該類的頭文件中引入Subjectinfo.h頭文件,使其可以使用映射類CSubjectinfo。</p><p> ?。?)向?qū)υ捒蛑刑砑覱nInitDialog()方法,在對話框初始化時創(chuàng)建工具欄并打開本模塊使用的數(shù)據(jù)表,代碼如下:</p><p>  BOOL CSubjectdlg::OnInitDialog()</p><p><b&

59、gt;  {</b></p><p>  CDialog::OnInitDialog();</p><p>  //創(chuàng)建工具欄并設(shè)置工具欄屬性</p><p>  if(!m_ToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP|CBRS_GRIPPER|CBRS_TOOLTIPS

60、|CBRS_SIZE_DYNAMIC)||!M_ToolBar.LoadToolBar(IDR_TOOLBAR_subjectinfo))</p><p><b>  {</b></p><p>  TRACE90(_T(“創(chuàng)建工具條失敗\n”));</p><p>  return FALSE;</p><p><

61、;b>  }</b></p><p><b>  //顯示工具欄</b></p><p>  RepositionBars(AFX_IDW_CONTROLBAR_FIRTS,AFX_IDW_CONTROLBAR_LAST,0);</p><p>  //設(shè)置工具欄按鈕風(fēng)格</p><p>  m_Too

62、lBar.SetButtonStyle(0,TBBS_CHECKBOX);</p><p>  m_ToolBar.SetButtonStyle(1,TBBS_CHECKBOX);</p><p>  m_ToolBar.SetButtonStyle(2,TBBS_CHECKBOX);</p><p>  m_ToolBar.SetButtonStyle(3,TBB

63、S_CHECKBOX);</p><p>  m_ToolBar.SetButtonStyle(4,TBBS_CHECKBOX);</p><p>  m_ToolBar.SetButtonStyle(5,TBBS_CHECKBOX);</p><p>  m_ToolBar.SetButtonStyle(6,TBBS_CHECKBOX);</p>&

64、lt;p><b>  //設(shè)置SQL語句</b></p><p>  CString sqlStr;</p><p>  sqlStr="SELECT * FROM tb_subject";</p><p>  mysubjectset = new CSubjectinfo(&((CMystudentsysAp

65、p*)AfxGetApp())->m_DB);</p><p>  if(!mysubjectset->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr)) </p><p><b>  {</b></p><p>  AfxMessageBox("tb_subject 表打開失敗!");&

66、lt;/p><p><b>  }</b></p><p>  return TRUE;</p><p><b>  }</b></p><p> ?。?)自定義一個DisplayRecord()方法,在記錄集指針移動時為控件賦值,代碼如下:</p><p>  bool CSu

67、bjectdlg::DisplayRecord()</p><p>  //判斷是否移動到開頭和結(jié)尾</p><p><b>  {</b></p><p>  if(mysubjectset->IsEOF()&&mysubjectset->IsBOF()) </p><p><b>

68、;  {</b></p><p>  m_subjectname = ""; //為控件賦空值</p><p>  m_subjectid = "";</p><p><b>  }</b></p><p><b> 

69、 else</b></p><p><b>  {</b></p><p>  if(mysubjectset->IsBOF()) //如果移動到了開頭,就向后移動</p><p><b>  {</b></p><p>  mysubjectset-&

70、gt;MoveNext(); //向下移動記錄集指針</p><p><b>  }</b></p><p>  else //否則前移</p><p><b>  {</b></p><p>  if(mysu

71、bjectset->IsEOF())</p><p><b>  {</b></p><p>  mysubjectset->MovePrev(); //向上移動記錄集指針</p><p><b>  }</b></p><p><b>  }</b>&

72、lt;/p><p><b>  }</b></p><p>  m_subjectname = mysubjectset->m_subject; //為對應(yīng)的變量賦值</p><p>  m_subjectid = mysubjectset->m_code;</p><p>  UpdateData(

73、FALSE);</p><p>  return TRUE;</p><p><b>  }</b></p><p>  (7)處理工具欄中的“添加”按鈕的單擊事件,當(dāng)單擊“添加”按鈕時,將清空控件中的數(shù)據(jù),以便用戶進行輸入,代碼如下:</p><p>  void CSubjectdlg::Onsubjectinfot

74、oolbaradd() </p><p><b>  {</b></p><p>  //清空控件中的數(shù)據(jù)</p><p>  m_subjectname = "";</p><p>  m_subjectid = "";</p><p>  Updat

75、eData(FALSE);</p><p><b>  }</b></p><p> ?。?)處理工具欄中的“保存”按鈕的單擊事件,當(dāng)單擊“保存”按鈕時,將控件中的數(shù)據(jù)保存到數(shù)據(jù)庫中,代碼如下:</p><p>  void CSubjectdlg::Onsubjectinfotoolbarsave() </p><p>

76、;<b>  {</b></p><p>  UpdateData(TRUE); //更新控件信息</p><p>  //判斷控件中的數(shù)據(jù)是否為空</p><p>  if(m_subjectname.IsEmpty()||m_subjectid.IsEmpty())</p>

77、<p><b>  {</b></p><p>  AfxMessageBox("請輸入相應(yīng)的數(shù)據(jù)!");</p><p><b>  return ;</b></p><p><b>  }</b></p><p><b>  //設(shè)置

78、SQL數(shù)據(jù)</b></p><p>  CString sqlStr_findid;</p><p>  sqlStr_findid = "SELECT * FROM tb_subject WHERE tb_subject.code='"+m_subjectid+"' ";</p><p>  my

79、subjectset_find = new CSubjectinfo(&((CMystudentsysApp*)AfxGetApp())->m_DB);</p><p><b>  //打開數(shù)據(jù)表</b></p><p>  if(!mysubjectset_find->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr_fin

80、did))</p><p><b>  {</b></p><p>  AfxMessageBox("tb_subject 打開失敗!");</p><p><b>  }</b></p><p>  //判斷記錄集中是否有要保存的數(shù)據(jù)信息</p><p>

81、;  if(mysubjectset_find->GetRecordCount()!=0)</p><p><b>  {</b></p><p>  AfxMessageBox("科目代碼不能重復(fù),請修改后再輸入!");</p><p>  if(mysubjectset_find->IsOpen())

82、 //判斷數(shù)據(jù)表是否打開</p><p><b>  {</b></p><p>  mysubjectset_find->Close(); //關(guān)閉數(shù)據(jù)表</p><p>  delete mysubjectset_find;

83、 //釋放指針</p><p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  if(mysubjectset_find->IsOpen())

84、 //判斷數(shù)據(jù)表是否打開</p><p><b>  {</b></p><p>  mysubjectset_find->Close(); //關(guān)閉數(shù)據(jù)表</p><p>  delete mysubjectset_find; //釋

85、放指針</p><p><b>  } </b></p><p>  mysubjectset->AddNew(); //調(diào)用添加記錄的函數(shù)出理</p><p>  mysubjectset->m_subject = m_subjectname; //為記

86、錄中的字段賦值</p><p>  mysubjectset->m_code = m_subjectid;</p><p><b>  try</b></p><p><b>  {</b></p><p>  mysubjectset->Update();

87、 //更新記錄集</p><p>  mysubjectset->Requery(); //刷新記錄集</p><p>  AfxMessageBox("成功保存數(shù)據(jù)!");</p><p><b>  }</b>&l

88、t;/p><p>  catch( CDBException* e )</p><p><b>  {</b></p><p>  AfxMessageBox( e->m_strError,MB_ICONEXCLAMATION );</p><p>  e->Delete();</p><p&

89、gt;<b>  }</b></p><p>  DisplayRecord(); //¸更新顯示</p><p><b>  }</b></p><p> ?。?)處理工具欄中的“刪除”按鈕的單擊事件,當(dāng)單擊“刪除”按鈕時,將控

90、件中的數(shù)據(jù)對應(yīng)的數(shù)據(jù)庫中的記錄刪除,代碼如下:</p><p>  void CSubjectdlg::Onsubjectinfotoolbardel() </p><p><b>  {</b></p><p>  // 設(shè)置SQL語句</p><p>  CString sqlStr_findid;</p>

91、;<p>  sqlStr_findid="SELECT*FROMtb_class_subject WHERE tb_class_subject.code='"+m_subjectid+"' ";</p><p>  myclass_subject_findref=newCClass_subjectset(&((CMystudentsy

92、sApp*)AfxGetApp())->m_DB);</p><p><b>  //打開數(shù)據(jù)表</b></p><p>  if(!myclass_subject_findref->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr_findid))</p><p><b>  {</b>

93、</p><p>  AfxMessageBox("tb_class_subject 表打開失敗!");</p><p><b>  }</b></p><p>  //判斷記錄集中是否有要保存的數(shù)據(jù)信息</p><p>  if(myclass_subject_findref->GetReco

94、rdCount() != 0)</p><p><b>  {</b></p><p>  AfxMessageBox("科室名稱在<班級科目表>里有引用,不能刪除!");</p><p>  if(myclass_subject_findref->IsOpen()) //

95、判斷數(shù)據(jù)表是否打開</p><p><b>  {</b></p><p>  myclass_subject_findref->Close(); //關(guān)閉數(shù)據(jù)表</p><p>  delete myclass_subject_findref; //釋放指針<

96、;/p><p><b>  }</b></p><p><b>  return;</b></p><p><b>  }</b></p><p>  if(myclass_subject_findref->IsOpen()) //判斷數(shù)據(jù)表是否

97、打開</p><p><b>  {</b></p><p>  myclass_subject_findref->Close(); //關(guān)閉數(shù)據(jù)表</p><p>  delete myclass_subject_findref; //釋放指針</p><

98、;p><b>  } </b></p><p>  mysubjectset->Delete(); //刪除記錄</p><p>  mysubjectset->Requery(); //刷新記錄</p><p>

99、  DisplayRecord(); </p><p>  } (10)分別處理工具欄中的“第一條”、“上一條”、“下一條”、和“末一條”按鈕的單擊事件,當(dāng)工具欄按鈕按下時,實現(xiàn)顯示“第一條”、“上一條”、“下一條”和“末一條”記錄的功能,代碼如下:</p><p>  void CSubjectdlg::Onsubjectinfotoolbarfirst() </p>&

100、lt;p><b>  {</b></p><p>  if(!mysubjectset->IsBOF())</p><p><b>  {</b></p><p>  mysubjectset->MoveFirst(); //移動到第一條記錄</p><p>  DisplayRe

101、cord(); //¸更新窗口顯示</p><p><b>  }</b></p><p><b>  }</b></p><p>  void CSubjectdlg::Onsubjectinfotoolbarlast() </p><p><b>  {&

102、lt;/b></p><p>  if(!mysubjectset->IsEOF())</p><p><b>  {</b></p><p>  mysubjectset->MoveLast(); //移動到末一條記錄</p><p>  DisplayRecord(); /

103、/更新窗口顯示</p><p><b>  }</b></p><p><b>  }</b></p><p>  void CSubjectdlg::Onsubjectinfotoolbarnext() </p><p><b>  {</b></p><

104、p>  // TODO: Add your command handler code here</p><p>  if(!mysubjectset->IsEOF())</p><p><b>  {</b></p><p>  mysubjectset->MoveNext(); //移動到下一條記錄</p>

105、;<p>  DisplayRecord(); //更新窗口顯示</p><p><b>  } </b></p><p><b>  }</b></p><p>  void CSubjectdlg::Onsubjectinfotoolbarpre() </p>

106、<p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><p>  if(!mysubjectset->IsBOF())</p><p><b>  {</b></p><p>  mys

107、ubjectset->MovePrev(); //移動到上一條記錄</p><p>  DisplayRecord(); //更新窗口顯示</p><p><b>  } </b></p><p><b>  }</b></p><p>  (

108、11)處理對話框的WM_CLOSE事件,當(dāng)窗口關(guān)閉時,斷開與數(shù)據(jù)表的連接,并且釋放指針,代碼如下:</p><p>  void CSubjectdlg::OnClose() </p><p><b>  {</b></p><p>  if(mysubjectset->IsOpen()) //判斷數(shù)據(jù)表是否打開

109、</p><p><b>  {</b></p><p>  mysubjectset->Close(); //關(guān)閉數(shù)據(jù)表</p><p>  delete mysubjectset; //釋放指針</p><p><b>  }</b><

110、;/p><p>  CDialog::OnClose();</p><p><b>  }</b></p><p>  5.3學(xué)生信息管理模塊設(shè)計</p><p>  5.3.1學(xué)生信息管理模塊概述</p><p>  信息管理用于設(shè)置學(xué)生的基本信息,主要表現(xiàn)對學(xué)生信息的添加、修改和刪除等操作,“學(xué)生

111、信息管理”界面如圖5.3所示</p><p>  圖5.3 學(xué)生信息管理</p><p>  修改記錄使用CRecordset類的Edit函數(shù),調(diào)用了Edit函數(shù)以后,就可以重新設(shè)定當(dāng)前記錄中的每個字段的值了,但是這時修改的記錄值只是被保存起來,只有在調(diào)用了CRecordset類的Updata函數(shù)以后才修改,否則不對記錄作修改。</p><p>  刪除記錄需要使用

112、CRecordset類的Delete函數(shù),并且在調(diào)用Delete函數(shù)之后不需要再調(diào)用Updata函數(shù),但是在調(diào)用Delete函數(shù)時,記錄集中必須具有有效記錄。</p><p>  5.3.2學(xué)生信息管理實現(xiàn)過程</p><p> ?。?)創(chuàng)建一個對話框,打開對話框?qū)傩源翱?,將對話框的“ID”改為“IDD_DIginfostudent”將對話框的標(biāo)題改為“學(xué)生信息管理”。</p>

113、<p> ?。?)向?qū)υ捒蛑刑砑右粋€組群控件、七個靜態(tài)文本控件和七個編輯框控件,各控件的屬性設(shè)置如表所示</p><p>  表 控件的資源設(shè)置</p><p>  (3)以CRecordset類為基類派生一個CStudentinfoset類,具體步驟請參考中的是實現(xiàn)過程。</p><p> ?。?)向?qū)υ捒蛑刑砑覱nInitDialog()方法在對

114、話框初始化時創(chuàng)建工具欄并打開本模塊使用的數(shù)據(jù)表,代碼如下:</p><p>  BOOL CInfoStudent::OnInitDialog() </p><p><b>  {</b></p><p>  CDialog::OnInitDialog();</p><p><b>  //創(chuàng)建工具欄</

115、b></p><p>  if(!m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD|WS_VISIBLE|CBRS_TOP</p><p>  |CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_SIZE_DYNAMIC)</p><p>  ||!m_ToolBar.LoadToolBar(IDR_

116、TOOLBAR_subjectinfo))</p><p><b>  {</b></p><p>  TRACE0(_T("創(chuàng)建工具條失敗\n"));</p><p>  return FALSE;</p><p><b>  }</b></p><p>

117、;<b>  //顯示工具欄</b></p><p>  RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);</p><p>  m_ToolBar.SetButtonStyle(0,TBBS_CHECKBOX);</p><p>  m_ToolBar.S

118、etButtonStyle(1,TBBS_CHECKBOX);</p><p>  m_ToolBar.SetButtonStyle(2,TBBS_CHECKBOX);</p><p>  m_ToolBar.SetButtonStyle(3,TBBS_CHECKBOX);</p><p>  m_ToolBar.SetButtonStyle(4,TBBS_CHEC

119、KBOX);</p><p>  m_ToolBar.SetButtonStyle(5,TBBS_CHECKBOX);</p><p>  m_ToolBar.SetButtonStyle(6,TBBS_CHECKBOX);</p><p><b>  //設(shè)置SQL語句</b></p><p>  CString sq

120、lStr;</p><p>  sqlStr="SELECT * FROM tb_studentinfo";</p><p>  mystudentset = new CStudentinfoset(&((CMystudentsysApp*)AfxGetApp())->m_DB);</p><p>  if(!mystudentse

121、t->Open(AFX_DB_USE_DEFAULT_TYPE,sqlStr)) //´打開數(shù)據(jù)表</p><p><b>  {</b></p><p>  AfxMessageBox("tb_studentinfo表打開失敗!");</p><p><b>  }</b></p

122、><p>  return TRUE;</p><p> ?。?)自定義一個DisplayRecrod()方法,在記錄集指針移動時為控件賦值,代碼如何:</p><p>  bool CInfoStudent::DisplayRecord()</p><p><b>  {</b></p><p> 

123、 if(mystudentset->IsBOF()&&mystudentset->IsEOF())//判斷記錄集中是否有數(shù)</p><p><b>  { </b></p><p>  //情況數(shù)據(jù)中的數(shù)據(jù)</p><p>  m_studentaddr = "";</p>&

124、lt;p>  m_studentage = 0.0f;</p><p>  m_studentclass = "";</p><p>  m_studentname = "";</p><p>  m_studentphone = "";</p><p>  m_stud

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論