![用c語(yǔ)言解決學(xué)生成績(jī)管理問題_第1頁(yè)](http://file4.renrendoc.com/view/87129e82f1cb52f37fbb615424523864/87129e82f1cb52f37fbb6154245238641.gif)
![用c語(yǔ)言解決學(xué)生成績(jī)管理問題_第2頁(yè)](http://file4.renrendoc.com/view/87129e82f1cb52f37fbb615424523864/87129e82f1cb52f37fbb6154245238642.gif)
![用c語(yǔ)言解決學(xué)生成績(jī)管理問題_第3頁(yè)](http://file4.renrendoc.com/view/87129e82f1cb52f37fbb615424523864/87129e82f1cb52f37fbb6154245238643.gif)
![用c語(yǔ)言解決學(xué)生成績(jī)管理問題_第4頁(yè)](http://file4.renrendoc.com/view/87129e82f1cb52f37fbb615424523864/87129e82f1cb52f37fbb6154245238644.gif)
![用c語(yǔ)言解決學(xué)生成績(jī)管理問題_第5頁(yè)](http://file4.renrendoc.com/view/87129e82f1cb52f37fbb615424523864/87129e82f1cb52f37fbb6154245238645.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《用C++語(yǔ)言解決學(xué)生成績(jī)管理問題》第PAGE77頁(yè)共18頁(yè)P(yáng)AGE用C++語(yǔ)言解決學(xué)生成績(jī)管理問題摘要本課程設(shè)計(jì)主要解決在一個(gè)學(xué)校的某個(gè)年級(jí)中對(duì)所有班級(jí)中的學(xué)生考試成績(jī)進(jìn)行管理,包括表和記錄的添加,刪除,更新,查找等的程序設(shè)計(jì)。在課程設(shè)計(jì)中,系統(tǒng)開發(fā)平臺(tái)為Windows2021,程序設(shè)計(jì)設(shè)計(jì)語(yǔ)言采用VisualC++,數(shù)據(jù)庫(kù)采用Access2021,程序運(yùn)行平臺(tái)為Windows98/2021/XP。對(duì)于學(xué)生成績(jī)按班級(jí)進(jìn)行分類,管理,更新。程序通過調(diào)試運(yùn)行,初步實(shí)現(xiàn)了設(shè)計(jì)目標(biāo),并且經(jīng)過適當(dāng)完善后,將可以應(yīng)用在學(xué)校中解決實(shí)際問題。關(guān)鍵詞程序設(shè)計(jì);Access2021;VisualC++
1引言本課程設(shè)計(jì)主要解決在一個(gè)在一個(gè)學(xué)校的某個(gè)年級(jí)中對(duì)所有班級(jí)的學(xué)生考試成績(jī)進(jìn)行管理,包括表和記錄的添加,刪除,更新,查找等的程序設(shè)計(jì)。。1.1背景民辦高中在創(chuàng)辦初期辦學(xué)規(guī)模比較小,學(xué)校各班級(jí)的人數(shù)也比較少,所以一直以來對(duì)學(xué)生成績(jī)管理的主要方式是基于文本,表格等紙介質(zhì)的手工處理,管理水平普遍不高,效率非常低。這種管理手段已不能適應(yīng)時(shí)代的發(fā)展,因?yàn)樗速M(fèi)了了許多的人力和物力。在當(dāng)今信息時(shí)代這種傳統(tǒng)的管理方法必然被計(jì)算機(jī)為基礎(chǔ)的信息管理系統(tǒng)所代替。如果本系統(tǒng)能被學(xué)校所采用,將會(huì)改變以前靠手工管理學(xué)生成績(jī)的狀況,可以樹立良好的辦學(xué)形象,提高工作效率。當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代,在各行各業(yè)中離不開信息處理,這正是計(jì)算機(jī)被廣泛應(yīng)用于信息管理系統(tǒng)的環(huán)境。計(jì)算機(jī)的最大好處在于利用它能夠進(jìn)行信息管理。使用計(jì)算機(jī)進(jìn)行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對(duì)于復(fù)雜的信息管理,計(jì)算機(jī)能夠充分發(fā)揮它的優(yōu)越性。
管理信息系統(tǒng)是進(jìn)行信息的采集,存儲(chǔ),加工,維護(hù)和使用的系統(tǒng),它是隨著管理科學(xué)和技術(shù)科學(xué)的發(fā)展而形成的。學(xué)生成績(jī)管理系統(tǒng)是一個(gè)教育單位不可缺少的部分,它的內(nèi)容對(duì)于學(xué)校的決策者和管理者來說都至關(guān)重要,所以學(xué)生成績(jī)管理系統(tǒng)應(yīng)該能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄?,?duì)學(xué)生來說可以輕松的查閱自己在校的成績(jī)以及信息等。但是一直以來人們都是靠傳統(tǒng)人工的方式管理學(xué)生成績(jī),這種管理方式存在著許多缺點(diǎn),如:效率低,保密性差,另外時(shí)間一長(zhǎng),將產(chǎn)生大量的文件和數(shù)據(jù),這對(duì)于查找,更新和維護(hù)都帶來了不少的困難。
隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),它已進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來越重要的作用。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)學(xué)生成績(jī)信息進(jìn)行管理,有著手工管理所無法比擬的優(yōu)點(diǎn)。例如:檢索迅速,查找方便,可靠性高,存儲(chǔ)量大,保密性好,壽命長(zhǎng),成本低等。這些優(yōu)點(diǎn)能夠極大地提高學(xué)生成績(jī)管理的效率,也是企業(yè)的科學(xué)化,正規(guī)化管理,與世界接軌的重要條件。因此,開發(fā)這樣的一套成績(jī)管理系統(tǒng)成為很有必要的事情。
學(xué)生成績(jī)管理系統(tǒng)提供了強(qiáng)大的學(xué)生成績(jī)管理管理功能,方便系統(tǒng)管理員對(duì)學(xué)生成績(jī)等信息的添加,修改,刪除,查詢,等操作,同時(shí)學(xué)生對(duì)自己各科成績(jī)查詢,進(jìn)行學(xué)習(xí)交流[1]。1.2課程設(shè)計(jì)目的將理論教學(xué)中涉及到的知識(shí)點(diǎn)貫穿起來,對(duì)不同的數(shù)據(jù)類型、程序控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)作一比較和總結(jié),結(jié)合設(shè)計(jì)題目進(jìn)行綜合性應(yīng)用,對(duì)所學(xué)知識(shí)達(dá)到融會(huì)貫通的程度。通過課程設(shè)計(jì),我們?cè)谙率龈鞣矫娴哪芰?yīng)該得到鍛煉:對(duì)于給定的設(shè)計(jì)題目,如何進(jìn)行分析,理清思路,并給出相應(yīng)的數(shù)學(xué)模型;掌握自頂而下的設(shè)計(jì)方法,將大問題進(jìn)行模塊化,領(lǐng)會(huì)結(jié)構(gòu)化程序設(shè)計(jì)的方法;熟練掌握C++語(yǔ)言的基本語(yǔ)法,靈活運(yùn)用各種數(shù)據(jù)類型;進(jìn)一步掌握在集成環(huán)境下如何調(diào)試程序(單步調(diào)試,設(shè)置斷點(diǎn)、觀察表達(dá)式,分塊調(diào)試)和修改程序;樹立正確的程序設(shè)計(jì)思想,培養(yǎng)我們的程序設(shè)計(jì)能力和創(chuàng)新能力;學(xué)會(huì)面向?qū)ο蟮某绦蛟O(shè)計(jì)的方法,掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的一般規(guī)律;進(jìn)行程序設(shè)計(jì)的基本技能訓(xùn)練,如算法分析與設(shè)計(jì)、類的設(shè)計(jì)與使用、學(xué)會(huì)查閱關(guān)的圖書和文獻(xiàn)資料等。根據(jù)學(xué)生成績(jī)表特點(diǎn),通過對(duì)學(xué)生管理系統(tǒng)的系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、編碼、調(diào)試及維護(hù)工作的實(shí)踐,了解信息管理系統(tǒng)的一般設(shè)計(jì)思路,熟悉和掌握軟件設(shè)計(jì)的一般方法,深入了解數(shù)據(jù)庫(kù)設(shè)計(jì)的基本理論及方法,從而達(dá)到以下目的:(1)掌握用VisualC++6.0開發(fā)環(huán)境開發(fā)軟件的方法;(2)掌握基于對(duì)話框的應(yīng)用程序的編程方法;(3)掌握用資源編輯器進(jìn)行圖標(biāo)、菜單、工具欄、對(duì)話框等資源的編輯;(4)掌握對(duì)話框、常用控件和ActiveX控件的使用方法;(5)熟悉文檔/視圖結(jié)構(gòu),掌握文檔和視圖相互控制的技巧;(6)掌握用MFC編寫Access的數(shù)據(jù)庫(kù)應(yīng)用程序的方法和技巧;(7)提高學(xué)生成績(jī)管理的效率,節(jié)約相關(guān)的管理成本;(8)為學(xué)校提供系統(tǒng)、規(guī)范的成績(jī)管理手段。總之,通過該系統(tǒng)的建設(shè)來優(yōu)化該學(xué)校的學(xué)生成績(jī)管理系統(tǒng),提高管理效率,為學(xué)校的進(jìn)一步發(fā)展提供更有力的支持。2相關(guān)技術(shù)分析2.1VisualC++6.0簡(jiǎn)介VisualC++是Microsoft公司提供的在Windows環(huán)境下應(yīng)用程序開發(fā)的C/C++編譯器。相比其它的編程工具而言,VisualC++在提供可視化的編程方法的同時(shí),也適應(yīng)編寫直接對(duì)系統(tǒng)進(jìn)行底層操作的程序。隨VisualC++一起提供的Microsoft基礎(chǔ)類庫(kù)(MicrosoftFoundationClassLibrary,簡(jiǎn)寫為MFC)對(duì)Windows9X/NT所用的Win32應(yīng)用程序接口(Win32ApplicationProgrammingInterface)進(jìn)行了十分徹底的封裝,這使得Windows9X/NT應(yīng)用程序的開發(fā)可以使用完全的面向?qū)ο蟮姆椒ㄟM(jìn)行,從而能夠大量地節(jié)省應(yīng)用程序的開發(fā)周期,降低開發(fā)成本,也使得Windows程序員從大量的繁雜的勞動(dòng)中解脫出來。VisualC++6.0是Microsoft公司出品的基于Windows的C++開發(fā)工具,它是MicrosoftVisualStudio套件的一個(gè)有機(jī)組成部分。VisualC++軟件包含有許多單獨(dú)的組件,例如編輯器、編譯器、鏈接器、生成實(shí)用程序、調(diào)試器,以及各種各樣為開發(fā)MicrosoftWindows下的C/C++程序而設(shè)計(jì)的工具。VisualStudio把所有的VisualC++工具結(jié)合在一起,集成為一個(gè)整體,通過一個(gè)由窗口、對(duì)話框、菜單、工具欄、快捷鍵等組成的完整系統(tǒng),你可以觀察和控制整個(gè)開發(fā)過程。該環(huán)境就是VisualC++中所能“看見”的所有東西,一般情況下,術(shù)語(yǔ)VisualC++既是指這個(gè)產(chǎn)品,又是指它的開發(fā)環(huán)境VisualC++6.0集成開發(fā)環(huán)境的操作界面最頂行是窗口標(biāo)題行,將顯示當(dāng)前編輯的程序文件名。第二行是菜單行,菜單行中的每一項(xiàng)都對(duì)應(yīng)一個(gè)下拉菜單,第三行是按鈕工具行。屏幕中間的左半?yún)^(qū)是工作區(qū)窗口,右半?yún)^(qū)是程序編輯窗口。屏幕的最下部是狀態(tài)輸出窗口[2]。2.2Access數(shù)據(jù)庫(kù)簡(jiǎn)介數(shù)據(jù)庫(kù)是20世紀(jì)60年代后期發(fā)展起來的一項(xiàng)重要技術(shù)。70年代以來,數(shù)據(jù)庫(kù)技術(shù)得到了迅速發(fā)展和廣泛應(yīng)用,已經(jīng)成為計(jì)算機(jī)科學(xué)與技術(shù)的一個(gè)重要分支。MicrosoftAccess作為一種關(guān)系型桌面數(shù)據(jù)庫(kù)管理系統(tǒng)是中小型數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的理想開發(fā)環(huán)境,具有界面友好、易學(xué)好用、開發(fā)簡(jiǎn)單、接口靈活等特點(diǎn),已經(jīng)得到越來越廣泛的應(yīng)用。Access數(shù)據(jù)庫(kù)管理系統(tǒng)是MicrosoftOffice套件的重要組成部分,是Access的最新版本,可在Windows95環(huán)境下運(yùn)行。Access適用于小型商務(wù)活動(dòng),用以存貯和管理商務(wù)活動(dòng)所需要的數(shù)據(jù)。Access不僅是一個(gè)數(shù)據(jù)庫(kù),而且它具有強(qiáng)大的數(shù)據(jù)管理功能,它可以方便地利用各種數(shù)據(jù)源,生成窗體(表單),查詢,報(bào)表和應(yīng)用程序等[3]。3總體設(shè)計(jì)3.1需求分析(1)功能需求學(xué)生成績(jī)管理系統(tǒng)需要滿足三方面的要求,分別是班級(jí)成績(jī)管理、年級(jí)成績(jī)管理、參數(shù)設(shè)置。班級(jí)管理需求是對(duì)學(xué)生的成績(jī)按班進(jìn)行分類管理,包括增加某個(gè)學(xué)生的成績(jī)記錄、刪除某個(gè)學(xué)生的成績(jī)記錄、修改學(xué)生成績(jī)等;年級(jí)成績(jī)管理中需要對(duì)年級(jí)人數(shù)及平均分進(jìn)行統(tǒng)計(jì),在這個(gè)年級(jí)中對(duì)某個(gè)學(xué)生的成績(jī)進(jìn)行查詢等;由于分班的原因班級(jí)的數(shù)目有可能改變,因此需要?jiǎng)?chuàng)建或是刪除班級(jí),科目調(diào)整是為了便于及時(shí)更新文理分科及其他原因所帶來的科目變動(dòng)。該系統(tǒng)需要實(shí)現(xiàn)以下基本功能:管理系統(tǒng)操作人員根據(jù)實(shí)際情況對(duì)學(xué)生考試成績(jī)進(jìn)行修改、添加、刪除以及查詢等操作;對(duì)某個(gè)班級(jí)的總成績(jī)、平均成績(jī)、優(yōu)秀人數(shù)以及及格人數(shù)進(jìn)行管理;顯示不同班級(jí)的任課老師名單。統(tǒng)計(jì)出年級(jí)總成績(jī)、平均成績(jī)、及格人數(shù)以及優(yōu)秀人數(shù);能根據(jù)查詢條件及查詢值對(duì)全年級(jí)的任何一個(gè)學(xué)生的成績(jī)進(jìn)行查詢;根據(jù)實(shí)際情況對(duì)全年級(jí)的班級(jí)進(jìn)行管理,例如創(chuàng)建或刪除某個(gè)班級(jí),及時(shí)調(diào)整所學(xué)科目信息,對(duì)其進(jìn)行增加或刪除;對(duì)現(xiàn)有的數(shù)據(jù)庫(kù)進(jìn)行管理,包括數(shù)據(jù)備份和恢復(fù),以方便用戶對(duì)數(shù)據(jù)庫(kù)的管理和維護(hù)工作,提高系統(tǒng)的數(shù)據(jù)安全性[4]。(2)性能需求要求該系統(tǒng)具有一定的可擴(kuò)展性以適應(yīng)發(fā)展,且易于維護(hù)。3.2設(shè)計(jì)思路根據(jù)學(xué)生成績(jī)表特點(diǎn),決定選用鏈表這種數(shù)據(jù)結(jié)構(gòu)來作為組成成績(jī)數(shù)據(jù)庫(kù)的基本框架。鏈表是最簡(jiǎn)單也是最常用的一種動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)。它是對(duì)動(dòng)態(tài)獲得的內(nèi)存進(jìn)行組織的一種結(jié)構(gòu)。選用鏈表的原因有:(1)即用即申請(qǐng),不會(huì)造成內(nèi)存空間的浪費(fèi);(2)是數(shù)據(jù)之間既有獨(dú)立性,又便于數(shù)據(jù)的相互連系;(3)便于數(shù)據(jù)的添加及刪除等優(yōu)點(diǎn)。用模塊化程序設(shè)計(jì)理念,對(duì)各個(gè)功能定義不同函數(shù),分塊處理,這樣有利于后期調(diào)試及今后對(duì)功能的完善。3.3系統(tǒng)層次模塊圖及流程處理本系統(tǒng)是一個(gè)相對(duì)封閉的單機(jī)運(yùn)行系統(tǒng),不提供與其他系統(tǒng)的數(shù)據(jù)交換,界面美觀,簡(jiǎn)單易用,實(shí)現(xiàn)學(xué)生成績(jī)管理的計(jì)算機(jī)處理。采用VisualC++6.0開發(fā),Access作為后臺(tái)數(shù)據(jù)庫(kù),在滿足需求的前提下將系統(tǒng)對(duì)運(yùn)行環(huán)境的性能要求降到最低。系統(tǒng)基本的流程是:主界面選擇各項(xiàng)功能。學(xué)生成績(jī)管理系統(tǒng)可分為三個(gè)大的模塊:班級(jí)成績(jī)、年級(jí)成績(jī)、參數(shù)設(shè)置,如圖3-1所示。系統(tǒng)業(yè)務(wù)處理流程如圖3-2所示。圖3-1學(xué)生成績(jī)管理系統(tǒng)模塊圖3-2系統(tǒng)業(yè)務(wù)處理流程4具體實(shí)現(xiàn)本系統(tǒng)的詳細(xì)設(shè)計(jì)是基于系統(tǒng)需求分析與系統(tǒng)總體設(shè)計(jì)的結(jié)論來進(jìn)行的,并采用VisualC++6.0實(shí)現(xiàn)各模塊的功能。因此,系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)按照模塊的劃分分別闡述。4.1數(shù)據(jù)庫(kù)設(shè)計(jì)根據(jù)系統(tǒng)功能的要求以及功能模塊的劃分,對(duì)于本系統(tǒng)的數(shù)據(jù)庫(kù),可以列出以下數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu):(1)名稱:各科成績(jī)情況設(shè)置表(見表4-1)表名稱標(biāo)識(shí):OBJECT數(shù)據(jù)來源:基礎(chǔ)數(shù)據(jù)設(shè)置模塊進(jìn)行錄入表4-1OBJECT表名稱類型主鍵非空科目文本YesYes總成績(jī)數(shù)字NoNo平均成績(jī)數(shù)字NoNo及格人數(shù)數(shù)字NoNo優(yōu)秀人數(shù)數(shù)字NoNo(2)名稱:學(xué)生成績(jī)具體情況設(shè)置表(見表4-2)表名稱標(biāo)識(shí):STUDENT數(shù)據(jù)來源:基礎(chǔ)數(shù)據(jù)設(shè)置模塊進(jìn)行錄入表4-2STUDENT表名稱類型主鍵非空學(xué)號(hào)數(shù)字YesYes姓名文本NoNo數(shù)學(xué)數(shù)字NoNo物理數(shù)字NoNo化學(xué)數(shù)字NoNo英語(yǔ)數(shù)字NoNo政治數(shù)字NoNo總成績(jī)數(shù)字NoNo平均成績(jī)數(shù)字NoNo(3)名稱:任課老師情況設(shè)置表(見表4-3)表名稱標(biāo)識(shí):TEACHER數(shù)據(jù)來源:基礎(chǔ)數(shù)據(jù)設(shè)置模塊進(jìn)行錄入表4-3TEACHER表名稱類型主鍵非空科目文本YesYes任課老師文本NoNo所以的班級(jí)均按照以上表格數(shù)據(jù)設(shè)計(jì)數(shù)據(jù)庫(kù)表格。4.2函數(shù)說明程序中所定義的函數(shù)及說明如表4-4所示。表4-4函數(shù)及說明函數(shù)聲明功能聲明BoolOnInitDialog()對(duì)話框初始化,布爾型函數(shù)。void:OnStatr()實(shí)現(xiàn)班級(jí)對(duì)話框中的“顯示”按鈕的功能。voidEqual()尋找與查詢條件相匹配的信息,無返回。voidOnAdd()增加記錄,無返回。voidOnDelect()刪除記錄,無返回。voidOnFind()查找記錄,無返回。voidOnAll()顯示全部記錄,不返回。voidOnEdit()修改記錄,不返回。voidOnAddobject()添加對(duì)象,無返回值。voidOnDelectobject()刪除對(duì)象,無返回值。voidCTabSheet::SetRect()主對(duì)話框功能的實(shí)現(xiàn),無返回值。4.3系統(tǒng)主控平臺(tái)(1)主對(duì)話框添加“Tab”控件,用于切換各界面,并設(shè)定相應(yīng)的屬性,具體如圖4-1所示。其屬性如圖4-2所示。圖4-1設(shè)置主界面圖4-2主界面屬性(2)插入“班級(jí)成績(jī)”對(duì)話框“班級(jí)成績(jī)”對(duì)話框主要顯示所選擇的班級(jí)的學(xué)生成績(jī)表、各課成績(jī)表、任課老師表的所以記錄,所以需要三個(gè)列表控件,以及實(shí)現(xiàn)刪除記錄、增加記錄、修改記錄和查詢記錄等功能。設(shè)計(jì)好的控件如圖4-3所示,班級(jí)對(duì)話框?qū)傩匀鐖D4-4所示。圖4-3“班級(jí)成績(jī)”對(duì)話框圖4-4“班級(jí)成績(jī)”對(duì)話框?qū)傩?3)插入“年級(jí)成績(jī)”對(duì)話框“年級(jí)成績(jī)”對(duì)話框主要顯示兩中信息,一是顯示年級(jí)中所有同學(xué)的成績(jī)信息,包括學(xué)號(hào)、姓名、各科成績(jī)、總成績(jī)和平均成績(jī),另外,還用來顯示年級(jí)的總成績(jī)、平均成績(jī)、及格人數(shù)、優(yōu)秀人數(shù)。除了顯示外,還需要提供查詢記錄。插入后的“年級(jí)成績(jī)”對(duì)話框如圖4-5所示。圖4-5“年級(jí)成績(jī)”對(duì)話框其中查詢記錄中的部分代碼如下://功能:輸入查詢值和查詢條件,查詢滿足條件的學(xué)生情況voidCNaDilalog::OnFind()//OnFind是CNaDialog類的成員函數(shù){if(m_Set.IsOpen())//條件判斷m_Set.Close();//調(diào)用SetCloseJS=FALSE;//賦JS的初值為FALSEif(dlg.DoModal()==IDOK)//判斷是否使用OK按鈕{m_ListCtrlx.DeleteAllItems(); //刪除列表控件m_Set.Open(AFX_DB_USE_DEFAULT_TYPE,"一班STUDENT");//在一班中查找滿足條件的學(xué)生信息this->Select();//指針指向Select函數(shù)m_Set.Open(AFX_DB_USE_DEFAULT_TYPE,"[二班STUDENT]");//在二班中查找滿足條件的學(xué)生信息this->Select();this->Sql();if(JS==FALSE)//當(dāng)JS的值為假時(shí)AfxMessageBox("沒有符合條件的記錄");//沒有查找到符合條件的記錄}函數(shù)的流程圖如圖4-6所示。圖4-6部分程序流程圖經(jīng)過調(diào)試后,如果有符合條件的學(xué)生存在,則顯示其信息,否則彈出“沒有符合條件記錄”的提示信息。(4)插入“增加記錄”對(duì)話框當(dāng)用戶點(diǎn)擊班級(jí)成績(jī)對(duì)話框中的“增加記錄“按鈕時(shí),就會(huì)彈出”增加記錄“對(duì)話框,在該對(duì)話框中需要輸入一個(gè)學(xué)生的成績(jī)的所有信息,包括學(xué)號(hào)、姓名、數(shù)學(xué)、物理、化學(xué)、英語(yǔ)、政治。具體的設(shè)計(jì)如圖4-7示。圖4-7“增加記錄“對(duì)話框(5)插入“刪除記錄”對(duì)話框當(dāng)用戶點(diǎn)擊“班級(jí)成績(jī)”對(duì)話框中的“刪除記錄”按鈕時(shí),就誰(shuí)彈出“刪除記錄”對(duì)話框,在該對(duì)話框中用戶只需要輸入某個(gè)學(xué)生的學(xué)號(hào)以及密碼之后,就可以將其記錄刪除。具體的設(shè)計(jì)如圖4-8示。圖4-8“刪除記錄”對(duì)話框(6)插入“修改記錄”對(duì)話框當(dāng)用戶點(diǎn)擊“班級(jí)成績(jī)”對(duì)話框中的“修改記錄”按鈕時(shí),就會(huì)自動(dòng)彈出“修改記錄”對(duì)話框,在該對(duì)話框中需要輸入一個(gè)學(xué)生的成績(jī)的所有信息,包括學(xué)號(hào)、姓名、數(shù)學(xué)、物理、化學(xué)、英語(yǔ)、政治以及密碼。具體的設(shè)計(jì)如圖4-9示。圖4-9修改記錄”對(duì)話框(7)插入“查詢記錄”對(duì)話框當(dāng)用戶點(diǎn)擊“班級(jí)成績(jī)”對(duì)話框中的“查詢記錄”按鈕室,就會(huì)彈出“查詢記錄”對(duì)話框,在該對(duì)話框中選擇查詢條件,并可指定查詢值。具體的設(shè)計(jì)如圖4-10示。圖4-10“查詢記錄”對(duì)話框(8)插入“參數(shù)設(shè)置”對(duì)話框“參數(shù)設(shè)置”對(duì)話框主要用于對(duì)班級(jí)進(jìn)行創(chuàng)建或是刪除,對(duì)科目進(jìn)行調(diào)整。具體設(shè)計(jì)如圖4-11所示。圖4-11“參數(shù)設(shè)置“對(duì)話框4.4程序運(yùn)行結(jié)果程序運(yùn)行結(jié)果分別如圖4-12、圖4-13和圖4-14所示。圖4-12學(xué)生成績(jī)管理——班級(jí)成績(jī)圖4-13學(xué)生成績(jī)管理——年級(jí)成績(jī)圖4-14學(xué)生成績(jī)管理——參數(shù)設(shè)置結(jié)束語(yǔ)經(jīng)過三個(gè)周的課程設(shè)計(jì)和對(duì)相關(guān)資料的收集,讓我深刻的感到隨著網(wǎng)絡(luò)科技的不斷發(fā)展和網(wǎng)絡(luò)的廣泛應(yīng)用,我們的生活越來越離不開它了。在教育越來越受重視的21世紀(jì),隨著學(xué)生成績(jī)管理類型的不斷增加和成績(jī)管理要求的不斷提高,管理方面的工作量將會(huì)越來越大,并且其工作將是一件十分煩瑣和非常容易出錯(cuò)的事情。每次考試結(jié)束,老師們總要統(tǒng)計(jì)大量的學(xué)生成績(jī),這些數(shù)據(jù)的歸檔、統(tǒng)計(jì)工作任務(wù)重,時(shí)間緊,統(tǒng)計(jì)結(jié)束后往往錯(cuò)誤百出。長(zhǎng)時(shí)間以后,將產(chǎn)生大量文件和資料,給查找、維護(hù)帶來不少困難。在這樣的情況下有一個(gè)實(shí)用學(xué)生成績(jī)管理系統(tǒng)是有其必然性的,如果能做出一個(gè)完善的學(xué)生成績(jī)管理系統(tǒng)就使管理方面的工作量減少很多。本實(shí)例完成了一個(gè)相對(duì)較完善的學(xué)生成績(jī)管理的功能。程序中包括表的添加,刪除和更新,記錄的添加、刪除、更新、查找等,能滿足該學(xué)校目前及最近一段時(shí)間的發(fā)展需求。建立學(xué)生成績(jī)管理系統(tǒng),采用計(jì)算機(jī)對(duì)學(xué)生成績(jī)進(jìn)行管理,能進(jìn)一步提高辦學(xué)效益和現(xiàn)代化水平。幫助廣大教師提高工作效率,實(shí)現(xiàn)學(xué)生成績(jī)信息管理工作流程的系統(tǒng)化、規(guī)范化和自動(dòng)化。如果本系統(tǒng)能被學(xué)校所采用,將會(huì)改變以前靠手工管理學(xué)生成績(jī)的狀況,可以樹立良好的辦學(xué)形象,提高工作效率。在這次的課程設(shè)計(jì)中我學(xué)會(huì)了很多,也深感自身知識(shí)的貧乏,希望在日后的努力中能做出更完善的系統(tǒng)。由于時(shí)間關(guān)系該系統(tǒng)可能存在很多不足之處,希望老師能從百忙之中抽出時(shí)間給以點(diǎn)評(píng)。參考文獻(xiàn)[1]黃明,梁旭,周紹兵.VisualC++信息系統(tǒng)設(shè)計(jì)與開發(fā)實(shí)例.北京:機(jī)械工業(yè)出版社,2021[2]鄭阿奇,丁有和.VisualC++教程.北京:機(jī)械工業(yè)出版社,2021[3]關(guān)正美.中文版Access2021教程.北京:中國(guó)宇航出版社,2021[4]沈煒,徐慧.VisualC++數(shù)據(jù)庫(kù)編程技術(shù)與實(shí)例.第一版.北京:人民郵電出版社,2021.致謝這次的課程設(shè)計(jì)讓我對(duì)VisualC++又有了更深一步的了解,在做這個(gè)課題的過程中遇到過不少的困難,有些是我以前從未見過的,如果沒有彭紀(jì)良老師的悉心指導(dǎo)我可能到現(xiàn)在還不能順利完成設(shè)計(jì),在這里我對(duì)彭老師表示我最衷心的感謝。彭紀(jì)良老師的言傳身教將會(huì)是我以后學(xué)習(xí)中的榜樣,無論是從她嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度還是認(rèn)真的工作態(tài)度或是專業(yè)水平來說都值得我努力,所以我要感謝她,不僅是因?yàn)樵谡n程設(shè)計(jì)上對(duì)我的幫助而且對(duì)我未來人生還具有深遠(yuǎn)的影響。同時(shí)我還要感謝學(xué)校為我們提供方便的設(shè)計(jì)環(huán)境,以及各位同學(xué)對(duì)我最真心的幫助。附錄:源程序清單(1)//程序名稱:Addialog.cpp//程序功能:通過輸入某個(gè)學(xué)生的學(xué)號(hào)、姓名、數(shù)學(xué)、物理、化學(xué)、英語(yǔ)、政治的信息增加該學(xué)生的記錄。//程序聶誠(chéng)鳳//最后修改日期:2021-9-//Addialog.cpp:實(shí)現(xiàn)文件#include"stdafx.h"http://預(yù)編譯頭文件#include"lhwy.h"#include"Addialog.h"CAddialog::CAddialog(CWnd*pParent/*=NULL*/):CDialog(CAddialog::IDD,pParent){//{{AFX_DATA_INIT(CAddialog)m_fchemistry=0.0f;//初始化化學(xué)成績(jī)m_fenglish=0.0f;//初始化英語(yǔ)成績(jī)m_fmaths=0.0f;//初始化數(shù)學(xué)成績(jī)m_strName=_T("");//初始化姓名為空串m_fphysical=0.0f;//初始化物理成績(jī)m_nxue=0;//初始化學(xué)號(hào)m_fpolitic=0.0f;//初始化政治成績(jī)//}}AFX_DATA_INIT}voidCAddialog::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAddialog)DDX_Control(pDX,IDOK,m_OkButton);//OK按鈕DDX_Control(pDX,IDCANCEL,m_CancelButton);//取消按鈕DDX_Text(pDX,IDC_CHMISTRY,m_fchemistry);DDV_MinMaxFloat(pDX,m_fchemistry,0.f,100.f);//化學(xué)成績(jī)的范圍為1-100DDX_Text(pDX,IDC_ENGLISH,m_fenglish);DDV_MinMaxFloat(pDX,m_fenglish,0.f,100.f);//英語(yǔ)成績(jī)的范圍為1-100DDX_Text(pDX,IDC_MATHS,m_fmaths);DDV_MinMaxFloat(pDX,m_fmaths,0.f,100.f);//數(shù)學(xué)成績(jī)的范圍為1-100DDX_Text(pDX,IDC_NAME,m_strName);DDX_Text(pDX,IDC_PHYCICAL,m_fphysical);DDV_MinMaxFloat(pDX,m_fphysical,0.f,100.f);//物理成績(jī)的范圍為1-100DDX_Text(pDX,IDC_XUEHAO,m_nxue);DDV_MinMaxInt(pDX,m_nxue,1,1000000);//學(xué)號(hào)范圍DDX_Text(pDX,IDC_POLITIC,m_fpolitic);DDV_MinMaxFloat(pDX,m_fpolitic,0.f,100.f);//英語(yǔ)成績(jī)的范圍為1-100 //}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAddialog,CDialog)//開始執(zhí)行相應(yīng)的子程序 //{{AFX_MSG_MAP(CAddialog) //}}AFX_MSG_MAPEND_MESSAGE_MAP()//結(jié)束執(zhí)行子程序(2)//程序程序:BaDialog.cpp//程序功能:實(shí)現(xiàn)班級(jí)成績(jī)對(duì)話框中的顯示、增加記錄、刪除記錄、修改記錄、查詢錄、全部記錄等的功能//程序聶誠(chéng)鳳//最后修改日期:2021-9-#include"stdafx.h"#include"lhwy.h"http://工程頭文件#include"BaDialog.h"http://BaDialog頭文件#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;//靜態(tài)指針#endif//“班級(jí)成績(jī)”對(duì)話框的初始化,主要完成初始化列表控件BOOLCBaDialog::OnInitDialog(){CDialog::OnInitDialog();//初始化對(duì)話框CDRecordsetm_Set(&theApp.m_DB);//學(xué)生成績(jī)記錄集CBRecordsetm_bSet(&theApp.m_DB);//各科成績(jī)記錄集CTRecordsetm_tSet(&theApp.m_DB);//任課老師記錄集unsignedi=0;//賦值 CODBCFieldInfoInfo; m_Set.Open(AFX_DB_USE_DEFAULT_TYPE,"一班STUDENT");//打開記錄集//設(shè)置列表風(fēng)格 m_ListCtrlx.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);//填充列表 for(i=0;i<m_Set.m_nFields;i++) {m_Set.GetODBCFieldInfo(i,Info); //獲取學(xué)生成績(jī)記錄集信息 m_ListCtrlx.InsertColumn(i,Info.m_strName,LVCFMT_LEFT,70);//插入的內(nèi)容 }m_Set.Close();//關(guān)閉記錄集m_bSet.Open(AFX_DB_USE_DEFAULT_TYPE,"一班OBJECT");//打開記錄集//設(shè)置列表風(fēng)格m_ListCtrlb.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);//填充列表 for(i=0;i<m_bSet.m_nFields;i++) {m_bSet.GetODBCFieldInfo(i,Info);//獲取學(xué)生成績(jī)記錄集信息 m_ListCtrlb.InsertColumn(i,Info.m_strName,LVCFMT_LEFT,80);//插入的內(nèi)容 } m_bSet.Close();//關(guān)閉記錄集 m_ListCtrll.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);//設(shè)置列表風(fēng)格m_ListCtrll.InsertColumn(0,_T("科目"),LVCFMT_IMAGE|LVCFMT_LEFT);//插入科目信息m_ListCtrll.InsertColumn(1,"任課老師");//插入任課老師信息for(i=0;i<2;i++) m_ListCtrll.SetColumnWidth(i,80);//設(shè)置列表每一欄的寬度//設(shè)置當(dāng)前列表的選擇m_cob.SetCurSel(0);this->Enable(FALSE);//賦值為假m_Timer=SetTimer(1,2,NULL);//設(shè)置記時(shí)器m_bIsAsc=TRUE;//賦值為假m_bS=TRUE; GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);//獲取文件名 sPath.ReleaseBuffer();//緩沖釋放路徑 intnPos;//定義nPos變量的類型 nPos=sPath.ReverseFind('\\');//反向查找路徑 sPath=sPath.Left(nPos); nPos=sPath.ReverseFind('\\');sPath=sPath.Left(nPos);lpszFile=sPath+"\\tect.txt";//為lpszFile賦值CFileaFile;CFileFindfFind; BOOLbSuccess;//定義bSuccess為布爾型變量 bSuccess=fFind.FindFile(lpszFile);//bSuccess為真時(shí)的情況 if(!bSuccess)//如果不成功 aFile.Open(lpszFile,CFile::modeCreate);//打開創(chuàng)建文件 else { aFile.Open(lpszFile,CFile::modeReadWrite);//打開讀寫文件CArchivearr(&aFile,CArchive::load);//檔案改編Serialize(arr);//連續(xù)if(m_Three=="三班")//如果選擇為“三班”m_cob.AddString(m_Three);//在組合框中添加“三班”的字符串if(m_Four=="四班")//若是選擇為“四班”m_cob.AddString(m_Four);//在組合框中添加“四班”的字符串if(m_Five=="五班")//若是選擇為“五班”m_cob.AddString(m_Five);//在組合框中添加“五班”的字符串if(m_Six=="六班")//若是選擇為“六班“m_cob.AddString(m_Six);//在組合框中添加“六班”的字符串if(m_Seven=="七班")//若是選擇為“七班”m_cob.AddString(m_Seven);//在組合框中添加“七班”的字符串if(m_Eight=="八班")//若是選擇為“八班”m_cob.AddString(m_Eight);//在組合框中添加“八班”的字符串 }aFile.Close();//關(guān)閉文件 returnTRUE;}//“班級(jí)成績(jī)”對(duì)話框中的“顯示”按鈕消息處理voidCBaDialog::OnStatr(){ m_ListCtrlx.DeleteAllItems();//刪除學(xué)生成績(jī)列表中的所有項(xiàng)目 m_ListCtrlb.DeleteAllItems();//刪除各科成績(jī)列表中的所有項(xiàng)目 m_ListCtrll.DeleteAllItems();//刪除任課老師列表中的所有項(xiàng)目 if(m_Set.IsOpen())//如果學(xué)生成績(jī)記錄集的打開的 m_Set.Close();//關(guān)閉記錄集 if(m_bSet.IsOpen())//如果各科成績(jī)記錄集的打開的 m_bSet.Close();//關(guān)閉記錄集m_cob.GetLBText(m_cob.GetCurSel(),m_Getstring);//組合框控件 this->Select();//選擇CStringstr;//定義str變量類型 str.Format("%sTECHER",m_Getstring);//類型轉(zhuǎn)換m_tSet.Open(AFX_DB_USE_DEFAULT_TYPE,str);//打開記錄集m_nRecordCount=this->Show();//顯示記錄數(shù)目this->display();//顯示this->exhibit();//顯示m_bS=GetDlgItem(IDC_STATR)->EnableWindow(FALSE);//獲取對(duì)話框項(xiàng)目 this->Enable(TRUE); //賦值為真}//“班級(jí)成績(jī)”對(duì)話框中顯示全部記錄intCBaDialog::Show(){inti=0;//定義變量類型并賦初值m_Set.MoveFirst();//移向第一個(gè)學(xué)生成績(jī)記錄集if(m_Set.m_column1==0)//如果第一欄為空{(diào) m_Set.Close();//關(guān)閉學(xué)生成績(jī)記錄集 returni;//返回i }do//記錄集的遍歷以及顯示{CStrings;//定義變量ss.Format("%d",m_Set.m_column1);//將第一欄的雙精度型轉(zhuǎn)換為字符型m_ListCtrlx.InsertItem(i,s,0);//插入項(xiàng)目m_ListCtrlx.SetItemText(i,1,m_Set.m_column2);//設(shè)置第一欄內(nèi)容s.Format("%.1f",m_Set.m_column3);//將第三欄浮點(diǎn)型轉(zhuǎn)換為字符型m_ListCtrlx.SetItemText(i,2,s);//設(shè)置第二欄內(nèi)容s.Format("%.1f",m_Set.m_column4);//類型轉(zhuǎn)換m_ListCtrlx.SetItemText(i,3,s);//設(shè)置第三欄內(nèi)容s.Format("%.1f",m_Set.m_column5);//類型轉(zhuǎn)換m_ListCtrlx.SetItemText(i,4,s);//設(shè)置第四欄內(nèi)容s.Format("%.1f",m_Set.m_column6);//類型轉(zhuǎn)換m_ListCtrlx.SetItemText(i,5,s);//設(shè)置第五欄內(nèi)容s.Format("%.1f",m_Set.m_column7);//類型轉(zhuǎn)換m_ListCtrlx.SetItemText(i,6,s);//設(shè)置第六欄內(nèi)容s.Format("%.1f",m_Set.m_column8);//類型轉(zhuǎn)換m_ListCtrlx.SetItemText(i,7,s);//設(shè)置第七欄內(nèi)容s.Format("%.2f",m_Set.m_column9);//類型轉(zhuǎn)換m_ListCtrlx.SetItemText(i,8,s);//設(shè)置第八欄內(nèi)容 i++;//自增m_Set.MoveNext();//移向下一個(gè) }while(!m_Set.IsEOF());//直到出現(xiàn)異常m_Set.Close();//關(guān)閉記錄集returni;//返回i}voidCBaDialog::display()//顯示{inti=0;m_bSet.MoveFirst();do//記錄集的遍歷以及顯示 {CStrings; m_ListCtrlb.InsertItem(i,m_bSet.m_column1,0);//插入第一欄內(nèi)容 s.Format("%.1f",m_bSet.m_column2);//類型轉(zhuǎn)換 m_ListCtrlb.SetItemText(i,1,s);//設(shè)置第二欄內(nèi)容 s.Format("%.2f",m_bSet.m_column3);//類型轉(zhuǎn)換m_ListCtrlb.SetItemText(i,2,s);//設(shè)置第三欄內(nèi)容s.Format("%d",m_bSet.m_column4);//類型轉(zhuǎn)換m_ListCtrlb.SetItemText(i,3,s);//設(shè)置第四欄內(nèi)容s.Format("%d",m_bSet.m_column5);//類型轉(zhuǎn)換m_ListCtrlb.SetItemText(i,4,s);//設(shè)置第五欄內(nèi)容 i++;m_bSet.MoveNext();//移向下一個(gè) }while(!m_bSet.IsEOF());//出現(xiàn)異常時(shí)結(jié)束m_bSet.Close();//關(guān)閉記錄集}voidCBaDialog::exhibit()//顯示{inti=0;do//記錄集的遍歷以及顯示{m_ListCtrll.InsertItem(i,m_tSet.m_column1,0);//插入第一欄內(nèi)容m_ListCtrll.SetItemText(i,1,m_tSet.m_column2);//設(shè)置第二欄內(nèi)容i++;m_tSet.MoveNext();//移向下一個(gè)}while(!m_tSet.IsEOF());//異常情況出現(xiàn)時(shí)跳出m_tSet.Close();關(guān)閉記錄集}voidCBaDialog::Enable(BOOLp)//賦值{ GetDlgItem(IDC_ADD)->EnableWindow(p);//獲取“ADD”控件賦區(qū)域 GetDlgItem(IDC_DELECT)->EnableWindow(p);//獲取“DELECT”控件賦值區(qū)域 GetDlgItem(IDC_EDIT)->EnableWindow(p);//獲取“EDIT”控件賦值區(qū)域 GetDlgItem(IDC_FIND)->EnableWindow(p);//獲取“FIND”控件賦值區(qū)域 GetDlgItem(IDC_ALL)->EnableWindow(p);//獲取“ALL”控件賦值區(qū)域 GetDlgItem(IDC_EXPORT)->EnableWindow(p);//獲取“EXPORT”控件賦值區(qū)}CStringCBaDialog::Select()//增加學(xué)生成績(jī)記錄,先判斷其增加的記錄在哪個(gè)班上,后判斷其學(xué)號(hào)是否超出,接著在記錄集中添加,最后顯示出來{ CStringstr;str.Format("%sSTUDENT",m_Getstring);//類型轉(zhuǎn)換 m_Set.Open(AFX_DB_USE_DEFAULT_TYPE,str);//打開學(xué)生成績(jī)記錄集 str.Format("%sOBJECT",m_Getstring);//類型轉(zhuǎn)換m_bSet.Open(AFX_DB_USE_DEFAULT_TYPE,str);//打開各科成績(jī)記錄集 returnm_Getstring;}voidCBaDialog::Equal()//判斷在哪個(gè)班級(jí){for(inti=0;i<5;i++) {floatp=0;//初始化p if(i==0)//如果i為0 p=m_Set.m_column3;//在三班if(i==1) p=m_Set.m_column4;//在四班if(i==2) p=m_Set.m_column5;//在五班 if(i==3) p=m_Set.m_column6;//在六班if(i==4) p=m_Set.m_column7;//在七班m_bSet.Edit();//修改各科成績(jī)記錄 if(Selec==FALSE)//如果查詢值為假時(shí) {m_bSet.m_column2-=p;//將p值賦與各科成績(jī)表第二欄值的差值賦給第二欄 m_bSet.m_column3=(float)(m_bSet.m_column2/m_nRecordCount); if(p>=60)//若p不小于60m_bSet.m_column4-=1;//將p值賦與各科成績(jī)表第四欄值的差值賦給第四欄 if(p>=80)//如果p不小于80 m_bSet.m_column5-=1; } Else//否則 {m_bSet.m_column2+=p;//將p值賦與各科成績(jī)表第二欄值的差值賦給第二欄 m_bSet.m_column3=(float)(m_bSet.m_column2/m_nRecordCount); if(p>=60)//p大于等于60時(shí) m_bSet.m_column4+=1; if(p>=80)//p大于等于80時(shí) m_bSet.m_column5+=1; } m_bSet.Update();//學(xué)生各科成績(jī)記錄集更新 if(!m_bSet.IsEOF())//如果正常的情況m_bSet.MoveNext();//移至下一個(gè) else break;//否則跳出 }}voidCBaDialog::Xuan()//選擇{m_ListCtrlb.DeleteAllItems(); this->display();//顯示m_ListCtrlx.DeleteAllItems();this->Show();//顯示}voidCBaDialog::OnTimer(UINTnIDEvent)//記時(shí)器{ CStringm_string;//定義變量m_string的類型m_cob.GetLBText(m_cob.GetCurSel(),m_string);//獲取內(nèi)容 if(m_Getstring!=m_string)//當(dāng)獲取的字符串與定義的一樣時(shí) { GetDlgItem(IDC_STATR)->EnableWindow(TRUE);//給窗口項(xiàng)目賦值 this->Enable(FALSE);//賦初值為假 } CDialog::OnTimer(nIDEvent);//事件記時(shí)器}voidCBaDialog::OnAdd()//添加{ Selec=TRUE;//選擇的初值為真 CAddialogdlg;//添加窗口if(dlg.DoModal()==IDOK)//選擇OK按鈕時(shí) { CStringstr=this->Select();//選擇字符串if(str=="一班")//如果字符為”一班” { if(dlg.m_nxue>=200||dlg.m_nxue<100) { AfxMessageBox("一班學(xué)號(hào)在100—200之間");//彈出“一班學(xué)號(hào)在100—200之間消息對(duì)話框 m_Set.Close();//關(guān)閉學(xué)生成績(jī)記錄集 m_bSet.Close();//關(guān)閉各科成績(jī)記錄集return;//返回 } } elseif(str=="二班")//如果為“二班” { if(dlg.m_nxue<200||dlg.m_nxue>=300) {AfxMessageBox("二班學(xué)號(hào)在200—300之間");//彈出“二班學(xué)號(hào)在200—30之間”消息對(duì)話框m_Set.Close();//關(guān)閉學(xué)生成績(jī)記錄集 m_bSet.Close();//關(guān)閉各科成績(jī)記錄集 return;//返回 } } elseif(str=="三班")//如果為“三班” {if(dlg.m_nxue<300||dlg.m_nxue>=400) { AfxMessageBox("三班學(xué)號(hào)在300—400之間");//彈出“三班學(xué)號(hào)300—400之間”的消息對(duì)話框m_Set.Close();//關(guān)閉學(xué)生成績(jī)記錄集 m_bSet.Close();;//關(guān)閉各科成績(jī)記錄集 return;//返回 } } elseif(str=="四班")//如果為“四班” {if(dlg.m_nxue<400||dlg.m_nxue>=500) { AfxMessageBox("三班學(xué)號(hào)在400—500之間");//彈出“四班學(xué)號(hào)在300—40之間”消息對(duì)話框m_Set.Close();//關(guān)閉學(xué)生成績(jī)記錄集 m_bSet.Close();//關(guān)閉各科成績(jī)記錄集 return;//返回 } }elseif(str=="五班")//如果為“五班” {if(dlg.m_nxue<500||dlg.m_nxue>=600) {AfxMessageBox("三班學(xué)號(hào)在500—600之間");//彈出“五班學(xué)號(hào)在300—400之間”消息對(duì)話框m_Set.Close();//關(guān)閉學(xué)生成績(jī)記錄集 m_bSet.Close();//關(guān)閉各科成績(jī)記錄集 return;}//返回 }elseif(str=="六班")//如果為“六班” {if(dlg.m_nxue<600||dlg.m_nxue>=700) {AfxMessageBox("六班學(xué)號(hào)在400—500之間");//彈出“六班學(xué)號(hào)在300—40之間”消息對(duì)話框m_Set.Close();//關(guān)閉學(xué)生成績(jī)記錄集 m_bSet.Close();//關(guān)閉各科成績(jī)記錄集 return;}//返回}elseif(str=="七班")//如果為“七班” {if(dlg.m_nxue<700||dlg.m_nxue>=800) {AfxMessageBox("七班學(xué)號(hào)在700—800之間");//彈出“七班學(xué)號(hào)在300—400之間”消息對(duì)話框m_Set.Close();//關(guān)閉學(xué)生成績(jī)記錄集 m_bSet.Close();;//關(guān)閉各科成績(jī)記錄集 return;}//返回}elseif(str=="八班")//如果為“八班” {if(dlg.m_nxue<800||dlg.m_nxue>=900) {AfxMessageBox("八班學(xué)號(hào)在800—900之間");//彈出“八班學(xué)號(hào)在300—400之間”消息對(duì)話框m_Set.Close();//關(guān)閉學(xué)生成績(jī)記錄集 m_bSet.Close();//關(guān)閉各科成績(jī)記錄集 return;//返回}} m_Set.AddNew();//添加消息 m_nRecordCount+=1;//統(tǒng)計(jì)數(shù)加1 m_Set.m_column1=dlg.m_nxue;//第一欄為學(xué)號(hào) m_Set.m_column2=dlg.m_strName;//第二欄為姓名m_Set.m_column3=dlg.m_fmaths;//第三欄為數(shù)學(xué)成績(jī)m_Set.m_column4=dlg.m_fphysical;//第四欄為物理成績(jī)m_Set.m_column5=dlg.m_fchemistry;//第五欄為化學(xué)成績(jī) m_Set.m_column6=dlg.m_fenglish;//第六欄為英語(yǔ)成績(jī) m_Set.m_column7=dlg.m_fpolitic;//第七欄為政治成績(jī) m_Set.m_column8=dlg.m_fmaths+dlg.m_fphysical+dlg.m_fchemistry+dlg.m_fenglish+dlg.m_fpolitic;//第八欄為以上所有成績(jī)的總和 m_Set.m_column9=(float)(m_Set.m_column8/5);//第九欄為平均成績(jī)this->Equal();//等于 m_Set.Update();//Update()一定放在Equal()后m_Set.MoveFirst();//移向第一個(gè) if(m_Set.m_column1==0)//如果第一欄為0 {m_Set.Delete();//刪除學(xué)生成績(jī) m_Set.Requery();//請(qǐng)求 }m_Set.Requery(); this->Xuan();//選擇 }}voidCBaDialog::OnDelect()//刪除記錄{CDelectDialogdlg;//刪除對(duì)話框 Selec=FALSE;//賦初值為假 if(dlg.DoModal()==IDOK)//如果選擇OK按鈕 { if(dlg.m_nPass!=1234)//密碼為1234 AfxMessageBox("密碼不正確!你沒有權(quán)限刪除記錄");//彈出“密碼不正確!你沒有權(quán)限刪除記錄”的消息對(duì)話框else { this->Select();//選擇m_Set.MoveFirst();//移向第一個(gè) BOOLsel=FALSE;//賦初值為假 do { if(m_Set.m_column1!=dlg.m_nxue)//第一欄不為學(xué)號(hào) m_Set.MoveNext(); //移至下一個(gè) else {m_nRecordCount-=1;//統(tǒng)計(jì)數(shù)減一 sel=TRUE;//賦真值m_bSet.MoveFirst();this->Equal();//等于m_Set.Delete();//刪除 m_Set.Requery();//查詢 break;//跳出 } }while(!m_Set.IsEOF());//出現(xiàn)異常時(shí)結(jié)束 if(sel==FALSE) { AfxMessageBox("沒有此記錄");//彈出“沒有此記錄”的消息對(duì)話框 return;//返回 } else this->Xuan();//選擇 }} }voidCBaDialog::OnFind()//查詢{CFinDialogdlg;//查詢對(duì)話框if(dlg.DoModal()==IDOK)//如果選擇OK按鈕{this->Select();//選擇m_bSet.Close();//關(guān)閉各科成績(jī)記錄集if(dlg.m_Getstring2==">=")//如果組合框中選擇的是“>=”m_Set.m_strFilter.Format("[%s]>=%.2f",dlg.m_Getstring1,dlg.m_find);if(dlg.m_Getstring2=="=")//如果組合框中選擇的是“=”m_Set.m_strFilter.Format("[%s]=%.2f",dlg.m_Getstring1,dlg.m_find);if(dlg.m_Getstring2=="<=")//組合框中選擇的是“<=”m_Set.m_strFilter.Format("[%s]<=%.2f",dlg.m_Getstring1,dlg.m_find);m_ListCtrlx.DeleteAllItems();m_Set.Requery();//查詢if(m_Set.IsEOF())//沒找到{AfxMessageBox("沒有符合條件的記錄");//彈出“沒有符合條件的記錄”的消息對(duì)話框m_Set.Close();//關(guān)閉學(xué)生成績(jī)記錄集return;}elsethis->Show();//顯示}}voidCBaDialog::OnAll()//顯示所有記錄{ this->Select();//選擇 m_bSet.Close();//關(guān)閉各科成績(jī)記錄集 m_Set.m_strFilter.Empty(); m_Set.Requery();//查詢 m_ListCtrlx.DeleteAllItems(); this->Show();//顯示}voidCBaDialog::OnEdit()//修改記錄{ CEditDialogdlg;//彈出修改框 if(dlg.DoModal()==IDOK)//如果選擇OK按鈕 {if(strcmp(dlg.m_pass,"1234")!=0)//密碼錯(cuò)誤 AfxMessageBox("你沒有權(quán)限更改記錄!請(qǐng)重輸入密碼!");//彈出“你沒有權(quán)限更改記錄!請(qǐng)重輸入密碼!”的消息對(duì)話框else {this->Select();//選擇 m_Set.m_strFilter.Format("[學(xué)號(hào)]=%d",dlg.m_xue); m_Set.Requery();//查詢 if(m_Set.IsEOF())//沒有找到 AfxMessageBox("沒有此記錄");//彈出“沒有此記錄”的消息對(duì)話框 else {for(inti=0;i<5;i++) {floatp=0,q=0;//賦初值 if(i==0)//如果i為0 {p=dlg.m_fmaths;//數(shù)學(xué)成績(jī)的值賦給p q=m_Set.m_column3;//學(xué)生成績(jī)第3欄的數(shù)據(jù)賦給q }if(i==1)//如果i為1 { p=dlg.m_fphysical;//物理成績(jī)的值賦給p q=m_Set.m_column4;//學(xué)生成績(jī)第4欄的數(shù)據(jù)賦給q }if(i==2)//如果i為2{p=dlg.m_fchemistry;//化學(xué)成績(jī)的值賦給pq=m_Set.m_column5;//學(xué)生成績(jī)第5欄的數(shù)據(jù)賦給q} if(i==3)//如果i為3 {p=dlg.m_fenglish;//英語(yǔ)成績(jī)的值賦給p q=m_Set.m_column6;//學(xué)生成績(jī)第6欄的數(shù)據(jù)賦給q }if(i==4)//如果i為4 {p=dlg.m_fpolitic;//政治成績(jī)的值賦給p q=m_Set.m_column7;//學(xué)生成績(jī)第7欄的數(shù)據(jù)賦給q } m_bSet.Edit();//修改m_bSet.m_column2=m_bSet.m_column2+p-q; m_bSet.m_column3=m_bSet.m_column2/m_nRecordCount; if(p>=60&&q<60)//p大于等于60與q小于60時(shí) m_bSet.m_column4+=1; if(p<60&&q>=60)//p小于60與q大于等于60時(shí) m_bSet.m_column4-=1; if(p>=80&&q<80)//p大于等于80與q小于80時(shí) m_bSet.m_column5+=1; if(p<80&&q>=80)//p小于60與q大于等于60時(shí) m_bSet.m_column5-=1;m_bSet.Update();//更新各科成績(jī)表if(!m_bSet.IsEOF())//如果正常m_bSet.MoveNext();//移向下一個(gè)elsebreak;//跳出 }m_Set.Edit();//修改m_Set.m_column2=dlg.m_strName;//姓名m_Set.m_column3=dlg.m_fmaths;//數(shù)學(xué)m_Set.m_column4=dlg.m_fphysical;//物理m_Set.m_column5=dlg.m_fchemistry;//化學(xué)m_Set.m_column6=dlg.m_fenglish;//英語(yǔ)m_Set.m_column7=dlg.m_fpolitic;//政治 m_Set.m_column8=dlg.m_fmaths+dlg.m_fphysical+dlg.m_fchemistry+dlg.m_fenglish+dlg.m_fpolitic;//第八欄為所有成績(jī)的總和m_Set.m_column9=(float)(m_Set.m_column8/5);//平均成績(jī)m_Set.Update();//更新 }m_Set.m_strFilter.Empty();m_bSet.Close();//關(guān)閉各科成績(jī)記錄集 m_Set.Close();//關(guān)閉學(xué)生成績(jī)記錄集 m_ListCtrlx.DeleteAllItems(); m_ListCtrlb.DeleteAllItems(); this->Select();//選擇 this->Show();//顯示 this->display();//顯示 } }}voidCBaDialog::Sort(BOOLisAsc,intsecol){ if(m_Set.IsOpen())//記錄集是打開的m_Set.Close();//關(guān)閉記錄集 this->Select();//選擇 m_bSet.Close();//關(guān)閉各科成績(jī)記錄集 CODBCFieldInfofieldInfo;//數(shù)據(jù)源信息 m_Set.GetODBCFieldInfo(secol,fieldInfo); if(isAsc) {m_Set.m_strSort=fieldInfo.m_strName+"ASC";//升序排列m_bIsAsc=TRUE;//真 } else { m_Set.m_strSort=fieldInfo.m_strName+"DESC";//降序排列 m_bIsAsc=FALSE; } m_Set.Requery(); //查詢}//列表控件voidCBaDialog::OnColumnclickList3(NMHDR*pNMHDR,LRESULT*pResult){ NM_LISTVIEW*pNMListView=(NM_LISTVIEW*)pNMHDR; if(FALSE==m_bS) {intk=pNMListView->iSubItem;//列表視圖 Sort(!m_bIsAsc,k);//升序 m_ListCtrlx.DeleteAllItems(); this->Show();//顯示 } *pResult=0;//結(jié)果}LRESULTCBaDialog::OnCreateTabel(WPARAMwParam,LPARAMlParam)//創(chuàng)建表{ switch(wParam) { case3://創(chuàng)建三班的成績(jī)表 m_Three=_T("三班");//選擇的是“三班” m_cob.AddString("三班");//在組合框中添加 break;//跳出 case4://創(chuàng)建四班的成績(jī)表 m_Four="四班";//選擇的是“四班” m_cob.AddString("四班");//在組合框中添加 break;//跳出 case5://創(chuàng)建五班的成績(jī)表 m_Five="五班";//選擇的是“五班” m_cob.AddString("五班");//在組合框中添加 break;//跳出 case6://創(chuàng)建六班的成績(jī)表 m_Six="六班";//選擇的是“六班” m_cob.AddString("六班");//在組合框中添加 break;//跳出 case7://創(chuàng)建七班的成績(jī)表 m_Seven="七班";//選擇的是“七班” m_cob.AddString("七班");//在組合框中添加 break;//跳出 case8://創(chuàng)建八班的成績(jī)表 m_Eight="八班";//選擇的是“八班” m_cob.AddString("八班");//在組合框中添加 break;//跳出 default: break;//全部跳出 }Save();return0;//返回}voidCBaDialog::Save(){//異常處理CFilebFile;try{bFile.Open(lpszFile,CFile::modeCreate|CFile::modeReadWrite);//讀寫}catch(CFileException*e){CStringstr;//定義變量 str.Format("%s",e->m_cause); AfxMessageBox(str);//字符型消息對(duì)話框}CArchiveart(&bFile,CArchive::store);art.m_pDocument=(CDocument*)&bFile;//重要if(art.m_pDocument!=NULL)//文檔為空Serialize(art);}voidCBaDialog::Serialize(CArchive&ar){ if(ar.IsStoring()) { //存
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 海南2025年國(guó)家糧食和物資儲(chǔ)備局海南儲(chǔ)備物資管理處招聘16人筆試歷年參考題庫(kù)附帶答案詳解
- 標(biāo)準(zhǔn)緊固件項(xiàng)目籌資方案
- 泰州2025年江蘇泰州職業(yè)技術(shù)學(xué)院口腔門診部招聘合同制口腔助理醫(yī)師筆試歷年參考題庫(kù)附帶答案詳解
- 河北河北省第三榮軍優(yōu)撫醫(yī)院選聘高層次退休人才3人筆試歷年參考題庫(kù)附帶答案詳解
- 昆明2025年云南昆明市五華區(qū)云銅中學(xué)合同制教師招聘筆試歷年參考題庫(kù)附帶答案詳解
- 2025年中國(guó)印染廢水特效脫色劑市場(chǎng)調(diào)查研究報(bào)告
- 廣州2025年廣東廣州市天河區(qū)瑜翠園幼兒園編外聘用制專任教師招聘筆試歷年參考題庫(kù)附帶答案詳解
- 2025年綠籬機(jī)齒輪項(xiàng)目可行性研究報(bào)告
- 2025年滴流樹脂項(xiàng)目可行性研究報(bào)告
- 2025年楓木實(shí)木地板項(xiàng)目可行性研究報(bào)告
- 《婦女保健》課件
- 汽油安全技術(shù)說明書(MSDS)
- 2023年安徽合肥高新區(qū)管委會(huì)招聘72人筆試參考題庫(kù)(共500題)答案詳解版
- 《現(xiàn)代食品檢測(cè)技術(shù)》全套教學(xué)課件
- 政府機(jī)關(guān)法律服務(wù)投標(biāo)方案
- 員工能力評(píng)價(jià)表(全套)
- 部編版語(yǔ)文四年級(jí)下冊(cè) 教材解讀
- 《自相矛盾》說課課件
- 自然保護(hù)區(qū)規(guī)劃研究課件
- 《學(xué)會(huì)積極歸因》教學(xué)設(shè)計(jì)
- 半導(dǎo)體溫度計(jì)設(shè)計(jì)與制作
評(píng)論
0/150
提交評(píng)論