面向?qū)ο骳++課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)_第1頁
已閱讀1頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  C++課程設(shè)計(jì)報(bào)告</b></p><p>  ——學(xué)生信息管理系統(tǒng)</p><p>  學(xué)院: 數(shù)學(xué)與計(jì)算科學(xué)學(xué)院 </p><p>  專業(yè): 信息與計(jì)算科學(xué) </p><p>  班級: 10級信計(jì)1班 </p><p> 

2、 學(xué)號: </p><p>  姓名: __</p><p>  指導(dǎo)老師: _</p><p>  設(shè)計(jì)日期: 2011年11月29日—2011年12月21日 </p><p>  目 錄</p>&

3、lt;p>  一、摘要··································&#

4、183;······························2</p><p>  二、緒論·&#

5、183;····································

6、···························3</p><p>  1、課程設(shè)計(jì)的背景····&

7、#183;····································

8、;········3</p><p>  2、課程設(shè)計(jì)的意義·······················

9、··························3</p><p>  3、可行性分析·····

10、83;····································&

11、#183;···········3</p><p>  4、課程設(shè)計(jì)的相關(guān)理論···················

12、························4 </p><p>  三、系統(tǒng)總體設(shè)計(jì)·······&

13、#183;····································

14、;········6</p><p>  1、系統(tǒng)功能設(shè)計(jì)·······················&

15、#183;·····························6</p><p>  2、系統(tǒng)結(jié)構(gòu)設(shè)計(jì)·

16、83;····································&

17、#183;··············6</p><p>  3、系統(tǒng)概念設(shè)計(jì)················

18、83;····································7

19、</p><p>  4、系統(tǒng)邏輯設(shè)計(jì)·······························

20、83;·····················7</p><p>  5、系統(tǒng)物理設(shè)計(jì)··········

21、;····································

22、83;······7</p><p>  四、系統(tǒng)實(shí)現(xiàn)過程·························

23、;···························7</p><p>  五、系統(tǒng)創(chuàng)新之處····&

24、#183;····································

25、;··········23</p><p>  六、系統(tǒng)存在的問題與不足····················&#

26、183;··················24</p><p>  七、課程設(shè)計(jì)的收獲與感想············

27、;···························24</p><p>  八、課程設(shè)計(jì)總結(jié)····

28、····································

29、3;··········24</p><p><b>  學(xué)生信息管理系統(tǒng)</b></p><p><b>  一、摘要</b></p><p>  自從19世紀(jì)60年代電子計(jì)算機(jī)誕生以來,它就憑借自身強(qiáng)大的功能和充分增強(qiáng)人

30、類生活、工作效率的作用而深受人類推崇。特別在21世紀(jì),這個(gè)飛速發(fā)展的時(shí)代,計(jì)算機(jī)的應(yīng)用更是深入到社會的各個(gè)角落。作為當(dāng)代最具潛力的大學(xué)生群體,我們更應(yīng)推動和實(shí)踐計(jì)算機(jī)信息系統(tǒng)在生活、娛樂、管理等方面的應(yīng)用,為將來的工作和發(fā)展奠定基礎(chǔ)。</p><p>  本系統(tǒng)為簡易的學(xué)生信息管理系統(tǒng)(姑且這么稱呼吧),主要作用是實(shí)現(xiàn)對學(xué)生的基本信息和學(xué)籍成績的管理。</p><p>  本系統(tǒng)采用了Mi

31、crosoft Visual C++ 6.0中的MFC類庫和Microsoft Office Access 2003相結(jié)合的結(jié)構(gòu)開發(fā)程序。Visual C++ 6.0是Microsoft推出的一個(gè)功能強(qiáng)大的可視化集成開發(fā)環(huán)境,其中MFC是Microsoft的基礎(chǔ)類庫,其核心是以C++類的形式封裝了Windows的API函數(shù),其中的類可以充分支持Windows應(yīng)用程序開發(fā),而且它提供了對數(shù)據(jù)庫程序設(shè)計(jì)的強(qiáng)大支持。Access 2003是M

32、icrosoft Office 2003套件產(chǎn)品之一,是世界上最流行的桌面數(shù)據(jù)庫系統(tǒng)之一,最突出的優(yōu)點(diǎn)是:不用編寫一行代碼,就可以在很短的時(shí)間內(nèi)開發(fā)出一個(gè)功能強(qiáng)大的數(shù)據(jù)庫應(yīng)用程序。</p><p>  本報(bào)告充分展現(xiàn)了整個(gè)系統(tǒng)從分析到設(shè)計(jì)再到實(shí)現(xiàn)的具體過程,其耗費(fèi)了我巨大的心血,從中我學(xué)到了許多知識和技能,我相信它們對我今后的工作和處世方面都將有不可磨滅的貢獻(xiàn)。</p><p>  關(guān)鍵詞

33、:學(xué)生信息管理系統(tǒng) MFC類庫 Access數(shù)據(jù)庫</p><p><b>  二、緒論</b></p><p><b>  1、課程設(shè)計(jì)的背景</b></p><p>  隨著現(xiàn)代社會信息技術(shù)的發(fā)展,社會經(jīng)濟(jì)結(jié)構(gòu)、生產(chǎn)方式和消費(fèi)結(jié)構(gòu)已經(jīng)發(fā)生了重大變化,這些變化深刻影響著人類生活的各個(gè)方面。尤其是近幾年人們對計(jì)

34、算機(jī)的依賴性越來越強(qiáng),可以說,現(xiàn)代社會就是建立在計(jì)算機(jī)基礎(chǔ)上的,但是人們對于計(jì)算機(jī)系統(tǒng)也提出了更高的要求。隨著計(jì)算機(jī)信息系統(tǒng)的不斷發(fā)展,傳統(tǒng)的Visual C++編程技術(shù)已經(jīng)滿足不了社會的要求,因此能支持?jǐn)?shù)據(jù)庫的MFC類庫應(yīng)運(yùn)而生。微型計(jì)算機(jī)在商業(yè)上的應(yīng)用,就要求用戶能快速訪問一個(gè)大型數(shù)據(jù)庫中的單個(gè)記錄,而VC里面就包含了編寫Microsoft Windows環(huán)境下C++數(shù)據(jù)庫應(yīng)用程序所需的所有組件。最受歡迎的C++編程軟件和最流行的A

35、ccess數(shù)據(jù)庫軟件的完美搭配,無疑是給管理人員提供了一個(gè)方便之門。</p><p><b>  2課程設(shè)計(jì)的意義</b></p><p>  當(dāng)前國內(nèi)各類企業(yè)對IT技術(shù)人員的需求日益旺盛,已經(jīng)遠(yuǎn)遠(yuǎn)超過了傳統(tǒng)學(xué)歷教育所能滿足的數(shù)量。據(jù)不完全統(tǒng)計(jì),中國在本世紀(jì)初的IT人才需求量為60萬,缺口則高達(dá)40多萬,而每年大學(xué)培養(yǎng)的專業(yè)人才僅有5萬,供需的巨大差距造成軟件人才的極

36、度缺乏。C++課程設(shè)計(jì)是我們大學(xué)生在大學(xué)中面臨的第一次軟件編程的實(shí)戰(zhàn)演練,它不同于我們以往我們普通的編程,這需要我們很強(qiáng)的邏輯思考能力和必要的程序編程知識,這是對我們這些教育理論與實(shí)踐脫節(jié)的大學(xué)生的一次嚴(yán)峻考驗(yàn)。它讓我們了解到自己對書本的過度依賴這一缺點(diǎn),借用這次機(jī)會,我們不僅可以掌握自學(xué)的要領(lǐng),而且能夠鍛煉自己充分把書本知識用于實(shí)踐的能力。另外,我們可以掌握并實(shí)踐C++中許多平時(shí)不知道的功能,這對我們今后從事軟件開發(fā)和網(wǎng)絡(luò)技術(shù)都有很大

37、幫助。</p><p><b>  3、可行性分析</b></p><p>  學(xué)生管理系統(tǒng)是對學(xué)生基本信息和學(xué)籍成績的管理,可以說是學(xué)校教務(wù)系統(tǒng)的一個(gè)簡單的分支。本系統(tǒng)使用C++的MFC類庫進(jìn)行實(shí)現(xiàn),而MFC類庫提供了對Access數(shù)據(jù)庫的支持。先在Access中編寫一個(gè)小型數(shù)據(jù)庫,在通過C++與Access的信息連接來實(shí)現(xiàn)用MFC對數(shù)據(jù)庫的操作,這樣的可行性是非常

38、大的。而且這個(gè)學(xué)生信息管理系統(tǒng)包含的信息雖然不是很多,但仍有一定的實(shí)用價(jià)值,可以展現(xiàn)學(xué)生的基本信息,而且可以實(shí)時(shí)對數(shù)據(jù)庫做出一定的更改??傊?,本學(xué)生信息管理系統(tǒng)無論在設(shè)計(jì)、實(shí)現(xiàn),還是應(yīng)用上,可行性都比較高。</p><p>  4、課程設(shè)計(jì)的相關(guān)理論</p><p>  課程設(shè)計(jì)就是在學(xué)完一門理論之后自己動手實(shí)現(xiàn)的一個(gè)較復(fù)雜的系統(tǒng),它是對我們所學(xué)知識的檢驗(yàn)和提升。下面就Microsoft

39、Visual C++ 6.0、MFC類庫和Access數(shù)據(jù)庫作簡要介紹。</p><p> ?、?Microsoft Visual C++ 6.0</p><p>  Microsoft Visual C++,這套功能強(qiáng)大的Windows應(yīng)用程序開發(fā)系統(tǒng)是由Microsoft C/C++演化而來的,它包含了支持Windows 95、Windows NT 4.0及Windows 98的Win

40、 32 SDK 文檔,是Visual Studio的重要組成元素,是集創(chuàng)建、編譯、鏈接、運(yùn)行和調(diào)試為一體的軟件集成開發(fā)環(huán)境。Visual C++最主要的特點(diǎn):可視化編程和支持面向?qū)ο蟮木幊碳夹g(shù),其中包括項(xiàng)目工作區(qū)、ClassWizard、AppWizard、WizardBar等。此外,Visual C++ 6.0的主要特點(diǎn)還有集成開發(fā)環(huán)境、向?qū)А⒆羁斓募蓴?shù)據(jù)庫訪問(采用ODBC類或ADO類)、強(qiáng)有力的Internet支持。在Visua

41、l C++開發(fā)環(huán)境中,程序員可以利用Windows提供的API(應(yīng)用程序編程接口)函數(shù)編寫Windows應(yīng)用程序。</p><p><b> ?、?MFC類庫</b></p><p>  MFC(Microsoft Foundation Class)是一個(gè)應(yīng)用程序的框架結(jié)構(gòu)。MFC不僅僅是一個(gè)類集合,他還幫助定義了應(yīng)用程序的結(jié)構(gòu)并為應(yīng)用程序處理許多雜務(wù)。MFC框架定義

42、了應(yīng)用程序的輪廓,并提供了用戶接口的標(biāo)準(zhǔn)實(shí)現(xiàn)方法,程序員所要做的就是通過預(yù)定義的接口把具體應(yīng)用程序特有的東西填入這個(gè)輪廓。</p><p>  MFC的特點(diǎn):MFC完整的封裝了Windows API函數(shù);減少了大量在建立Windows程序時(shí)必須編寫的代碼;效率高,可靠性高。</p><p>  MFC的類層次:Visual C++ 6.0版本的MFC類庫包含200多個(gè)類,下面著重介紹幾個(gè)常

43、用。</p><p> ?。?) CObject類,MFC中最重要也最基本的類之一,派生出窗口類、文件類、網(wǎng)絡(luò)類等,包含對運(yùn)行時(shí)類信息的支持、對動態(tài)創(chuàng)建的支持、對串行化的支持、對象診斷輸出等。</p><p> ?。?)文件類,用于文檔數(shù)據(jù)的存儲、調(diào)出以及修改文檔數(shù)據(jù),包括CFile類等。</p><p>  (3)窗口類,包括窗口支持類(CWnd)、窗口框架類(C

44、FrameWnd)、視圖類、空間類和對話框類。</p><p> ?。?)視圖類,CView,廣泛用于基于文檔的應(yīng)用程序。</p><p>  (5)對話框類,CDiolog,包括選擇顏色、選擇字體、打印、查找、替換等通用對話框。</p><p>  (6)網(wǎng)絡(luò)類,用于開發(fā)網(wǎng)絡(luò)程序。</p><p> ?。?)ODBC類,包括Cdatabas

45、e(封裝了對數(shù)據(jù)源的連接操作)、CRecordset(封裝了從數(shù)據(jù)源中選擇記錄)、CRecordView(封裝了對記錄集的數(shù)據(jù)顯示操作)、CDBException(數(shù)據(jù)庫操作的異常類)</p><p> ?、?Windows應(yīng)用程序的基本結(jié)構(gòu)</p><p>  ④ Microsoft Office Access 2003</p><p>  數(shù)據(jù)庫,顧名思義就是存

46、放數(shù)據(jù)的一些倉庫,是一些關(guān)于每個(gè)特定主題或目的的信息集合,它以一定的格式存放在計(jì)算機(jī)的存儲器上,用戶能方便的管理這些數(shù)據(jù)。數(shù)據(jù)庫有4個(gè)主要部分:數(shù)據(jù)、聯(lián)系、約束和模式。Access 2003是一個(gè)面向?qū)ο蟮摹⒉捎檬录?qū)動機(jī)制的新型關(guān)系數(shù)據(jù)庫管理系統(tǒng)。一般情況下,Access數(shù)據(jù)庫包括表、查詢、窗體、報(bào)表、數(shù)據(jù)訪問頁、宏和模塊7個(gè)對象,這些對象用于收集、存儲和操作各種不同的信息。在Access中,用戶可以為每一種類型的信息創(chuàng)建一個(gè)表,將數(shù)

47、據(jù)分別存放在自己創(chuàng)建的表中,然后可以通過聯(lián)機(jī)窗體方便的查看、添加及更新表中的數(shù)據(jù)。</p><p>  MFC的ODBC(開放數(shù)據(jù)庫互聯(lián))類對較復(fù)雜的ODBC API函數(shù)進(jìn)行了封裝,提供了簡化的調(diào)用接口,從而大大方便了數(shù)據(jù)庫應(yīng)用程序的開發(fā)。</p><p><b>  三、系統(tǒng)總設(shè)計(jì)</b></p><p>  本系統(tǒng)是為了實(shí)現(xiàn)對學(xué)生信息的基本

48、管理而編寫的,其中包括學(xué)生信息日常工作中的基本操作。本系統(tǒng)的項(xiàng)目名稱為學(xué)生信息管理系統(tǒng)1.0版。</p><p><b>  1、系統(tǒng)功能設(shè)計(jì)</b></p><p>  本系統(tǒng)包括對學(xué)生基本信息的處理操作,主要有以下幾個(gè)功能:</p><p> ?。?)信息輸入 實(shí)現(xiàn)對學(xué)生基本信息的輸入和添加,并保存到數(shù)據(jù)庫</p>&l

49、t;p> ?。?)信息排序 實(shí)現(xiàn)對學(xué)生信息的排序,包括按學(xué)號排序、按姓名排序和按學(xué)籍成績排序(由低到高)</p><p> ?。?)信息修改 實(shí)現(xiàn)對學(xué)生基本信息的修改,并保存到數(shù)據(jù)庫</p><p> ?。?)信息查詢 實(shí)現(xiàn)對學(xué)生信息的查詢,包括按學(xué)號查詢和按姓名查詢</p><p> ?。?)信息刪除 實(shí)現(xiàn)刪除當(dāng)前記錄的功能</

50、p><p> ?。?)信息瀏覽 通過工具欄中的游標(biāo)按鈕來實(shí)現(xiàn)對信息的瀏覽</p><p><b>  2、系統(tǒng)結(jié)構(gòu)設(shè)計(jì)</b></p><p><b>  3、系統(tǒng)概念設(shè)計(jì) </b></p><p>  學(xué)生信息管理系統(tǒng)實(shí)現(xiàn)對學(xué)生基本信息的輸入、添加、排序、修改、查詢、刪除、瀏覽、保存等功能。通過

51、MFC與數(shù)據(jù)庫的連接來實(shí)現(xiàn)對“學(xué)生信息表”中數(shù)據(jù)的各項(xiàng)操作:通過系統(tǒng)登錄進(jìn)入系統(tǒng),通過調(diào)用對話框來進(jìn)行輸入和修改,通過按鈕控件來實(shí)現(xiàn)信息的修改和查詢,通過菜單操作來實(shí)現(xiàn)信息的排序和刪除。在MFC的類框架中添加一定的代碼來實(shí)現(xiàn)諸多功能。</p><p><b>  4、系統(tǒng)邏輯設(shè)計(jì)</b></p><p>  用Access建立一張學(xué)生信息表Students,其中包括學(xué)

52、生的學(xué)院、專業(yè)、學(xué)號、姓名、性別、年齡、學(xué)科、學(xué)籍成績、家庭住址、宿舍區(qū)號和聯(lián)系方式。用Windows操作界面下的“控制面板”來實(shí)現(xiàn)對ODBC數(shù)據(jù)源的連接,這樣在MFC中就可實(shí)現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的操作。</p><p><b>  5、系統(tǒng)物理設(shè)計(jì)</b></p><p>  (1)用Access建立的學(xué)生信息表如下:</p><p><b

53、>  圖3</b></p><p>  (2)Visual C++中使用登錄對話框、信息輸入對話框和主窗口實(shí)現(xiàn)對學(xué)生信息的基本操作</p><p><b>  四、系統(tǒng)實(shí)現(xiàn)過程</b></p><p>  系統(tǒng)實(shí)現(xiàn)過程是課程設(shè)計(jì)的關(guān)鍵一步,下面我就對整個(gè)課程設(shè)計(jì)的具體實(shí)現(xiàn)過程作如下闡述:</p><p>

54、;  1、利用Microsoft Access 2003新建一個(gè)數(shù)據(jù)庫Students,“使用設(shè)計(jì)器創(chuàng)建表”新建一張學(xué)生信息表,不設(shè)置主鍵,編輯表,此時(shí)可以設(shè)置其初始信息,以便在程序中使用,保存,退出Access。如圖</p><p><b>  圖4</b></p><p>  注:所設(shè)計(jì)的表格見上頁</p><p>  2、在Windows

55、 XP環(huán)境下打開“控制面板”,雙擊“管理工具” 圖標(biāo)。雙擊“數(shù)據(jù)源(ODBC)”圖標(biāo),彈出ODBC數(shù)據(jù)源管理器對話框,如圖。</p><p><b>  圖5</b></p><p>  3、在“ODBC數(shù)據(jù)源管理器”對話框中選中MS Access Datebase選項(xiàng),單擊“添加”按鈕,彈出創(chuàng)建新數(shù)據(jù)源對話框,如圖。</p><p><

56、b>  圖6</b></p><p>  4、選擇數(shù)據(jù)源驅(qū)動程序,再次選擇Microsoft Access Driver(*.mdb)程序后,單擊“完成”按鈕,彈出ODBC Microsoft Access安裝對話框,如圖。</p><p><b>  圖7</b></p><p>  5、在“數(shù)據(jù)源名”文本框中輸入新建數(shù)據(jù)源

57、的名稱,在“說明”文本框中可以對該數(shù)據(jù)源進(jìn)行說明。完成后,單擊“選擇”按鈕,彈出選擇數(shù)據(jù)庫對話框,選擇合適的數(shù)據(jù)庫后,打擊“確定”按鈕,此時(shí)就已經(jīng)完成了數(shù)據(jù)源與數(shù)據(jù)庫的連接,應(yīng)用程序?qū)υ摂?shù)據(jù)源進(jìn)行操作。</p><p><b>  圖8</b></p><p>  6、啟動Visual C++6.0,選擇文件|新建命令(或使用快捷鍵Ctrl + N),彈出新建對話框,

58、選擇工程標(biāo)簽,然后在列表中選擇MFC AppWizard[exe]選項(xiàng)。在“工程”文本框中輸入工程名王星星(1007020101)。在“C位置:”文本框中指定應(yīng)用程序創(chuàng)建的位置。單擊確定按鈕,如圖。</p><p><b>  圖9</b></p><p>  7、彈出MFC AppWizard - Step 1對話框,選擇“S單個(gè)文檔”單選按鈕。單擊“N下一個(gè)”按鈕

59、,彈出MFC AppWizard - Step 2 of 6對話框,選擇數(shù)據(jù)源支持,選擇“D查看數(shù)據(jù)庫不使用文件支持”單選按鈕(此時(shí)工具欄會生成游標(biāo)按鈕,可以對記錄進(jìn)行移動)。單擊Data Source按鈕,彈出Database Options對話框,在ODBC下拉列表框中選擇Students數(shù)據(jù)源后,單擊OK按鈕,彈出Select Database Tables對話框,如圖。選擇后,單擊“OK”按鈕回到主對話框。如圖。</p&g

60、t;<p><b>  圖10</b></p><p><b>  圖11</b></p><p>  8、單擊“N下一個(gè)>”按鈕,彈出MFC AppWizard - Step 3 of 6對話框,根據(jù)需要選擇文檔所支持的功能。再次選擇“O不”單選按鈕,單擊“N下一個(gè)>”按鈕,彈出MFC AppWizard - Step

61、 4 of 6對話框,根據(jù)需要選擇文檔形式。在此保留默認(rèn)設(shè)置。單擊單擊“N下一個(gè)>”按鈕,彈出MFC AppWizard - Step 5 of 6對話框,根據(jù)需要選擇工程形式。在此保留默認(rèn)設(shè)置。單擊單擊“N下一個(gè)>”按鈕,彈出MFC AppWizard - Step 6 of 6對話框,在對話框中列出向?qū)傻念?,同時(shí)程序員可以改變類的基類,以實(shí)現(xiàn)新的功能。在此不改變基類。單擊“完成”按鈕,彈出“新建工程信息”對話框,該

62、對話框中列出了新建立的應(yīng)用程序中項(xiàng)目的詳細(xì)信息,包括項(xiàng)目的類型、向?qū)?chuàng)建的類、文檔的樣式特征,以及工程的目錄等。單擊“確定”按鈕,此時(shí)應(yīng)用程序向?qū)б呀?jīng)為用戶生成了一個(gè)可執(zhí)行的應(yīng)用程序框架。</p><p>  9、選擇Build(F7)圖標(biāo)。選擇Build Execute(Ctrl+F5)圖標(biāo),彈出無標(biāo)題 – 王星星(1007020101)文檔,如圖。</p><p><b> 

63、 圖12</b></p><p>  10、在項(xiàng)目工作區(qū)中,單擊Resource View面板,然后單擊Menu前面的加號圖標(biāo),顯示,雙擊此圖標(biāo),在工作區(qū)彈出新建的菜單資源,右擊菜單資源右邊的空白項(xiàng),在彈出的快捷菜單中選擇“屬性”命令,彈出Menu Item Properties對話框,如圖,在該對話框中可以對菜單資源的樣式進(jìn)行設(shè)計(jì)。在“信息管理(M)”下設(shè)計(jì)其它菜單,如圖。</p>&

64、lt;p><b>  圖13</b></p><p>  11、右擊“信息輸入”菜單,選擇“建立類向?qū)А泵?,彈出MFC ClassWizard對話框。選擇Message Maps標(biāo)簽,在Objects IDs列表框中選擇ID_Input,即“信息輸入”菜單的ID。雙擊Message列表框的COMMAND選項(xiàng),彈出Add Member Funtion對話框,單擊OK即可,這樣就添加了C

65、OMMAND的消息映射,其他菜單選項(xiàng)依此設(shè)計(jì),如圖。</p><p><b>  圖14</b></p><p><b>  圖15</b></p><p>  12、在工程工作區(qū)選擇“Resource View”標(biāo)簽,顯示應(yīng)用程序的資源,單擊文件夾中的“王星星1007020101resources”選項(xiàng),將資源樹展開。打

66、開Dialog資源文件夾。雙擊ID為IDD_MY1007020101_FORM的對話框,在資源編輯器中打開此對話框,然后添加相應(yīng)的Group Box(標(biāo)題為學(xué)生信息)和11個(gè)靜態(tài)文本(標(biāo)題分別為學(xué)院、專業(yè)、學(xué)號、姓名、性別、年齡、學(xué)科、學(xué)籍成績、家庭住址、宿舍區(qū)號、聯(lián)系方式)和11個(gè)編輯框,設(shè)置屬性,建立類向?qū)В砑幼兞?,m_pSet->m_column1、m_pSet->m_column2、m_pSet->m_col

67、umn3,……,m_pSet->m_column11,這就建立了數(shù)據(jù)源和各控件之間數(shù)據(jù)流的連接,為了對數(shù)據(jù)進(jìn)行修改和刪除,在主對話框上添加三個(gè)按鈕控件,分別是“修改”、“按姓名查詢”、“按學(xué)號查詢”,設(shè)置屬性并利用類向?qū)砑訂螕舭粹o的消息映射,如圖。</p><p><b>  圖16</b></p><p> ?、?添加修改按鈕的消息映射</p>

68、<p>  void CMy1007020101View::OnCorrect() </p><p><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  UpdateData(TRUE); //刷

69、新控件的值到對應(yīng)的變量(外部輸入值交給內(nèi)部變量)</p><p>  CInput correct;</p><p>  correct.m_College=m_pSet->m_column1;</p><p>  correct.m_Major=m_pSet->m_column2;</p><p>  correct.m_Num

70、ber=m_pSet->m_column3;</p><p>  correct.m_Name=m_pSet->m_column4;</p><p>  correct.m_Sex=m_pSet->m_column5;</p><p>  correct.m_Age=m_pSet->m_column6;</p><p>

71、;  correct.m_Subject=m_pSet->m_column7;</p><p>  correct.m_Score=m_pSet->m_column8;</p><p>  correct.m_Address=m_pSet->m_column9;</p><p>  correct.m_DormitoryNumber=m_pSet-

72、>m_column10;</p><p>  correct.m_Contaction=m_pSet->m_column11;</p><p>  CString str1=correct.m_College;</p><p>  CString str2=correct.m_Major;</p><p>  CString st

73、r3=correct.m_Number;</p><p>  CString str4=correct.m_Name;</p><p>  CString str5=correct.m_Sex;</p><p>  CString str6=correct.m_Age;</p><p>  CString str7=correct.m_Sub

74、ject;</p><p>  CString str8=correct.m_Score;</p><p>  CString str9=correct.m_Address;</p><p>  CString str10=correct.m_DormitoryNumber;</p><p>  CString str11=correct.m

75、_Contaction;</p><p>  if(correct.DoModal()==IDOK)</p><p><b>  {</b></p><p>  m_pSet->Edit(); //準(zhǔn)備實(shí)現(xiàn)當(dāng)前記錄的更改</p><p>  m_pSet->m_column1=corre

76、ct.m_College;</p><p>  m_pSet->m_column2=correct.m_Major;</p><p>  m_pSet->m_column3=correct.m_Number;</p><p>  m_pSet->m_column4=correct.m_Name;</p><p>  m_pS

77、et->m_column5=correct.m_Sex;</p><p>  m_pSet->m_column6=correct.m_Age;</p><p>  m_pSet->m_column7=correct.m_Subject;</p><p>  m_pSet->m_column8=correct.m_Score;</p>

78、;<p>  m_pSet->m_column9=correct.m_Address;</p><p>  m_pSet->m_column10=correct.m_DormitoryNumber;</p><p>  m_pSet->m_column11=correct.m_Contaction;</p><p>  m_pSet-

79、>Update();</p><p>  UpdateData(FALSE); //拷貝變量值到控件顯示(變量的最終運(yùn)算結(jié)果值交給外部輸出顯示)</p><p><b>  }</b></p><p><b>  }</b></p><p>  注釋:本段代碼首先將當(dāng)前數(shù)據(jù)庫中的信

80、息顯示在信息輸入對話框上,然后通過交換變量的方式來實(shí)現(xiàn)對數(shù)據(jù)庫中信息的修改</p><p> ?、?添加按姓名查詢按鈕的消息映射</p><p>  void CMy1007020101View::OnNameCheck() </p><p><b>  {</b></p><p>  // TODO: Add your

81、 control notification handler code here</p><p>  UpdateData(TRUE); //更新數(shù)據(jù)</p><p>  CString name="姓名";</p><p>  m_pSet->Close();</p><p>  m_pSet-

82、>m_strFilter=name+"='"+m_NameCheck+"'"; //按字段進(jìn)行查詢</p><p>  m_pSet->Open();</p><p>  UpdateData(FALSE); //更新數(shù)據(jù),顯示結(jié)果</p><p><b>  

83、}</b></p><p>  注釋:本段代碼通過用戶輸入的姓名和數(shù)據(jù)庫中的“姓名”進(jìn)行比較,然后查詢出結(jié)果,更新數(shù)據(jù)并顯示結(jié)果。</p><p> ?、?添加按學(xué)號查詢按鈕的消息映射</p><p>  void CMy1007020101View::OnNumberCheck() </p><p><b>  {&l

84、t;/b></p><p>  // TODO: Add your control notification handler code here</p><p>  UpdateData(TRUE); //更新數(shù)據(jù)</p><p>  CString name="學(xué)號";</p><p>  m

85、_pSet->Close();</p><p>  m_pSet->m_strFilter=name+"='"+m_NumberCheck+"'"; //按字段進(jìn)行查詢</p><p>  m_pSet->Open();</p><p>  UpdateData(FALSE);

86、 //更新數(shù)據(jù),顯示結(jié)果</p><p><b>  }</b></p><p>  注釋:本段代碼通過用戶輸入的學(xué)號和數(shù)據(jù)庫中的“學(xué)號”進(jìn)行比較,然后查詢出結(jié)果,更新數(shù)據(jù)并顯示結(jié)果。</p><p>  13、新建一個(gè)對話框,對其進(jìn)行設(shè)計(jì),并建立類向?qū)В鐖D</p><p><b>  圖17&l

87、t;/b></p><p>  14、單擊項(xiàng)目工作區(qū)的“Class View”面板,展開面板里面的內(nèi)容。單擊CMainFrame前面的加號圖標(biāo),顯示,雙擊此圖標(biāo),在其中添加代碼如下:</p><p>  CMainFrame::CMainFrame()</p><p><b>  {</b></p><p>  /

88、/ TODO: add member initialization code here</p><p>  CWelcome welcome; </p><p>  CString m_username="王星星",m_password="2000wxx"; </p><p>  int count=0;&l

89、t;/p><p>  while(count<3)</p><p><b>  {</b></p><p>  if(welcome.DoModal()==IDCANCEL)</p><p><b>  {</b></p><p>  MessageBox("您確

90、定退出系統(tǒng)嗎?","登錄對話框",MB_YESNO|MB_ICONQUESTION);</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p><b>  else</b></p><p>&l

91、t;b>  {</b></p><p>  if(welcome.m_UserName!=m_username)</p><p><b>  {</b></p><p>  AfxMessageBox("對不起,您輸入的用戶名不正確,請檢查后重新輸入!");</p><p><

92、b>  count++;</b></p><p>  if(count==3)</p><p><b>  {</b></p><p>  AfxMessageBox("您不是系統(tǒng)用戶,確認(rèn)后系統(tǒng)自動退出!");</p><p><b>  exit(0);</b&g

93、t;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  if(welcome.m_Passwor

94、d!=m_password)</p><p><b>  {</b></p><p>  AfxMessageBox("對不起,您輸入的密碼不正確,請檢查后重新輸入");</p><p><b>  count++;</b></p><p>  if(count==3)</

95、p><p><b>  {</b></p><p>  AfxMessageBox("您是非法用戶,確認(rèn)后系統(tǒng)自動退出!");</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p>

96、<b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  AfxMessageBox("恭喜您,登錄成功!");</p><p><b>  break;</b>&

97、lt;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p

98、><p>  注:① 此段代碼實(shí)現(xiàn)登錄時(shí)的用戶名和密碼輸入,分別對用戶名和密碼進(jìn)行判斷,只有兩者都正確時(shí)才能正常登錄系統(tǒng),否則將根據(jù)不同的錯(cuò)誤輸出不同的結(jié)果,而且系統(tǒng)只給用戶提供三次機(jī)會。</p><p> ?、?在代碼所在文件頭部學(xué)要添加#include "Welcome.h"</p><p>  15、新建一個(gè)對話框,對其進(jìn)行設(shè)計(jì),建立類向?qū)?,?/p>

99、圖。</p><p>  注:對于組合框,可以在“屬性”對話框中進(jìn)行添加。方法為右擊組合框,在彈出的快捷菜單中選擇“屬性”命令,彈出Combo Box Properties對話框。選擇Data標(biāo)簽,在編輯框控件中輸入選項(xiàng),每一行對應(yīng)組合框的一個(gè)選項(xiàng)。輸入數(shù)據(jù)時(shí),每輸入一項(xiàng)后,俺Ctrl+Enter組合鍵可換到下一行繼續(xù)輸入。</p><p><b>  圖18</b>

100、</p><p>  16、在CMY1007020101VIEW.cpp文件中添加信息輸入函數(shù)的代碼,如下。</p><p>  void CMy1007020101View::OnInput() </p><p><b>  {</b></p><p>  // TODO: Add your command handl

101、er code here</p><p>  CInput input;</p><p>  CString str;</p><p>  CMy1007020101Set m_pdatabase;</p><p>  if(input.DoModal()==IDOK)</p><p><b>  {<

102、/b></p><p><b>  try</b></p><p><b>  {</b></p><p>  if(m_pdatabase.IsOpen())</p><p>  m_pdatabase.Close();</p><p>  m_pdatabase.O

103、pen(CMy1007020101Set::snapshot,NULL,CMy1007020101Set::none);</p><p>  m_pdatabase.AddNew(); //準(zhǔn)備添加記錄</p><p>  m_pdatabase.m_column1=input.m_College;</p><p>  m_pdataba

104、se.m_column2=input.m_Major;</p><p>  m_pdatabase.m_column3=input.m_Number;</p><p>  m_pdatabase.m_column4=input.m_Name;</p><p>  m_pdatabase.m_column5=input.m_Sex;</p><p&

105、gt;  m_pdatabase.m_column6=input.m_Age;</p><p>  m_pdatabase.m_column7=input.m_Subject;</p><p>  m_pdatabase.m_column8=input.m_Score;</p><p>  m_pdatabase.m_column9=input.m_Address;

106、</p><p>  m_pdatabase.m_column10=input.m_DormitoryNumber;</p><p>  m_pdatabase.m_column11=input.m_Contaction;</p><p>  if(m_pdatabase.CanUpdate())</p><p>  m_pdatabase.

107、Update(); //進(jìn)行更新</p><p>  m_pSet->Requery();</p><p>  m_pdatabase.Close();</p><p>  if(!m_pSet->IsBOF()) //判斷記錄集是否應(yīng)定位在第一條記錄之前</p><p>  m_p

108、Set->MoveNext(); //下一條記錄</p><p><b>  }</b></p><p>  catch(CDBException* e) //捕捉異常</p><p><b>  {</b></p><p>  e

109、->ReportError();</p><p><b>  return;</b></p><p><b>  }</b></p><p>  str.Format("添加記錄[%s]成功",input.m_Name);</p><p>  MessageBox(str,

110、NULL,MB_OK|MB_ICONINFORMATION); //彈出消息框</p><p><b>  }</b></p><p><b>  else</b></p><p>  MessageBox("對不起,系統(tǒng)信息輸入中斷,信息沒有存儲",NULL,MB_OK|MB_ICONASTERI

111、SK);</p><p><b>  }</b></p><p>  //上面的代碼就是利用CMy1007020101Set的成員函數(shù)添加新的紀(jì)錄,同時(shí)利用CDBException類控制一些異常,此時(shí)選擇菜單“信息輸入”后會彈出剛才所建的對話框,加入信息以后,單擊確定按鈕,會在數(shù)據(jù)庫中增加這一新的紀(jì)錄</p><p>  注釋:在本段代碼所在文

112、件頭部添加#include "Input.h"</p><p>  17、在CMY1007020101VIEW.cpp文件中添加信息排序的代碼,如下:</p><p><b> ?。?)按學(xué)號排序</b></p><p>  void CMy1007020101View::OnNumberSort() </p>

113、<p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><p>  m_pSet->Close();</p><p>  m_pSet->m_strSort="學(xué)號"; //學(xué)號是表的字段的

114、名字</p><p>  m_pSet->Open();</p><p>  UpdateData(FALSE);</p><p><b>  }</b></p><p>  (2)按姓名的首字母排序</p><p>  void CMy1007020101View::OnNameSort(

115、) </p><p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><p>  m_pSet->Close();</p><p>  m_pSet->m_strSort="姓名";

116、 //姓名是表的字段的名字</p><p>  m_pSet->Open();</p><p>  UpdateData(FALSE);</p><p><b>  }</b></p><p> ?。?)按成績由高到低排序</p><p>  void CMy1007020101View

117、::OnScoreSort() </p><p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><p>  m_pSet->Close();</p><p>  m_pSet->m_strSort="學(xué)籍成

118、績"; //學(xué)籍成績是表的字段的名字</p><p>  m_pSet->Open();</p><p>  UpdateData(FALSE);</p><p><b>  }</b></p><p>  //CRecordset類的公共數(shù)據(jù)成員m_strSort封裝了排序功能,用來設(shè)置對記

119、錄的排序</p><p>  18、在CMY1007020101VIEW.cpp文件中添加信息刪除的代碼,如下:</p><p>  void CMy1007020101View::OnDelete() </p><p><b>  {</b></p><p>  // TODO: Add your command ha

120、ndler code here</p><p><b>  try</b></p><p><b>  {</b></p><p>  CString str;</p><p>  CMy1007020101Set m_pdatabase; //CRecordset中的數(shù)據(jù)成員

121、m_pdatabase實(shí)現(xiàn)了在應(yīng)用程序向?qū)У倪^程中,表和程序的聯(lián)系</p><p>  if(m_pdatabase.IsOpen())</p><p>  m_pdatabase.Close();</p><p>  str.Format("%s",m_pSet->m_column4);</p><p>  m_p

122、database.m_strFilter.Format("姓名='%s'",str);</p><p>  m_pdatabase.Open(CMy1007020101Set::snapshot,NULL,CMy1007020101Set::none);</p><p>  m_pdatabase.Delete(); //刪除

123、記錄</p><p>  if(!m_pdatabase.IsEOF())//判斷記錄集是否應(yīng)定位在第一條記錄之后</p><p>  m_pdatabase.MoveLast(); //定位在最后一條記錄</p><p><b>  else</b></p><p><b>  {</b

124、></p><p>  m_pdatabase.SetFieldNull(NULL);</p><p>  UpdateData(FALSE);</p><p><b>  }</b></p><p>  if(m_pdatabase.IsOpen())</p><p>  m_pdatab

125、ase.Close();</p><p>  m_pSet->Requery(); //刷新來自數(shù)據(jù)源的CRecordset對象的全部內(nèi)容</p><p>  str.Format("刪除記錄["+m_pdatabase.m_column4+"]成功!");</p><p>  MessageBox(str,NULL,M

126、B_OK|MB_ICONINFORMATION);</p><p><b>  }</b></p><p>  catch(CDBException* e) //捕捉異常</p><p><b>  {</b></p><p>  e->ReportError

127、();</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //CDBException表示數(shù)據(jù)庫引起的異常條件,CDBException對象由數(shù)據(jù)庫類成員函數(shù)構(gòu)造和產(chǎn)生,上面的

128、代碼是利用CRecordsetAdd的成員函數(shù)刪除記錄,利用CDBException類控制一些異常,此時(shí)選擇“信息刪除菜單”即可刪除當(dāng)前記錄</p><p>  19、編譯,構(gòu)建程序,確定無誤后即可運(yùn)行。</p><p><b>  五、系統(tǒng)創(chuàng)新之處</b></p><p>  本學(xué)生信息管理系統(tǒng)采用Visual C++ 6.0的MFC類庫和A

129、ccess數(shù)據(jù)庫結(jié)合的方式。用MFC的ODBC類實(shí)現(xiàn)對數(shù)據(jù)庫的訪問,用ODBC管理器注冊一個(gè)數(shù)據(jù)源,建立起ODBC與具體數(shù)據(jù)庫的聯(lián)系。只有在建立了連接之后才可以進(jìn)行對數(shù)據(jù)源的操作,進(jìn)而操作數(shù)據(jù)庫。</p><p>  六、系統(tǒng)存在的問題與不足</p><p>  由于設(shè)計(jì)者(也就是我)的水平有限,該系統(tǒng)不免有一些不足之處,現(xiàn)總結(jié)如下:</p><p>  1、本學(xué)生

130、信息系統(tǒng)在信息刪除過程中,數(shù)據(jù)庫中的數(shù)據(jù)雖已刪除,但在主窗口中仍然顯示出了這組數(shù)據(jù)。</p><p>  2、信息輸入后,如果想把這組數(shù)據(jù)刪除,則選擇當(dāng)前數(shù)據(jù),選定“信息刪除”菜單后,會使數(shù)據(jù)庫中的信息發(fā)生重復(fù)和刪除其他數(shù)據(jù),甚至?xí)露嘟M數(shù)據(jù)。</p><p>  3、系統(tǒng)的實(shí)用價(jià)值不是很高,信息量不是很大,操作無法滿足現(xiàn)代教務(wù)管理的要求。</p><p>  七

131、、課程設(shè)計(jì)的收獲與感想</p><p>  本次課程設(shè)計(jì)讓我明白自己理論上的不足與實(shí)踐能力的缺乏,雖然時(shí)間僅有短短的四個(gè)星期,但我深刻體會到過程的艱辛與成功的喜悅。從本次課程設(shè)計(jì)中,我懂得了Visual C++的另類神奇的功能和數(shù)據(jù)庫的基本知識,在實(shí)踐中,我的邏輯思維能力和程序編寫能力都獲得了大幅度提高。雖然這個(gè)學(xué)生信息管理系統(tǒng)沒有達(dá)到預(yù)期的目標(biāo),但這畢竟是我耗費(fèi)了巨大心血的作品,我將永遠(yuǎn)留住這份珍貴的回憶。我相

132、信,在以后的學(xué)習(xí)與工作中,當(dāng)遇到棘手的難題時(shí),我會記得這次課程設(shè)計(jì),記得我是如何過關(guān)斬將,到時(shí),我一定會努力解決問題并享受解決問題后的快感。</p><p><b>  八、課程設(shè)計(jì)總結(jié)</b></p><p>  1、本次課程設(shè)計(jì)對我來說,難度很大,不過收獲也很大,不僅讓我了解了MFC的用法以及各種運(yùn)行方式方法,還讓我對C++和Access的靈活運(yùn)用有了更深的認(rèn)識,

133、并且激發(fā)了我強(qiáng)烈的學(xué)習(xí)興趣。</p><p>  2、通過本次課程設(shè)計(jì)我了解到自己對C++語言運(yùn)用還不是很熟練,所以我在課程設(shè)計(jì)過程中花了很多的時(shí)間,雖然失敗次數(shù)很多,但是通過不斷努力,并向老師和同學(xué)積極請教,我最終還是做出了一些成績,希望在以后的時(shí)間,通過自己進(jìn)一步的學(xué)習(xí),能讓我更快地掌握C++語言和MFC的應(yīng)用以及數(shù)據(jù)庫的相關(guān)知識。</p><p>  3、本系統(tǒng)中的許多代碼是參考書本

溫馨提示

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

評論

0/150

提交評論