數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)_第1頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)_第2頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)_第3頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)_第4頁(yè)
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

任務(wù)書(shū)題目:學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)內(nèi)容及要求:1。課程設(shè)計(jì)任務(wù)內(nèi)容設(shè)計(jì)一個(gè)簡(jiǎn)易的學(xué)生成績(jī)管理系統(tǒng),能夠完成學(xué)生成績(jī)的增加、刪除、查找、修改、統(tǒng)計(jì)等操作,數(shù)據(jù)信息保存文件保存。要求系統(tǒng)具有菜單和提示,界面友好。2。課程設(shè)計(jì)要求實(shí)現(xiàn)學(xué)生成績(jī)的管理和保存。開(kāi)發(fā)環(huán)境:vc++6.0實(shí)現(xiàn)目標(biāo):熟悉的運(yùn)用c語(yǔ)言程序編寫(xiě)代碼。能夠理清整個(gè)程序的運(yùn)行過(guò)程并繪畫(huà)流程圖了解如何定義局部變量和整體變量;學(xué)會(huì)上機(jī)調(diào)試程序,發(fā)現(xiàn)問(wèn)題,并解決學(xué)習(xí)使用C++程序來(lái)了解程序原理.學(xué)習(xí)用文檔書(shū)寫(xiě)程序說(shuō)明摘要管理信息系統(tǒng)正在向著網(wǎng)絡(luò)化、智能化和集成化等趨勢(shì)發(fā)展。學(xué)生成績(jī)管理系統(tǒng)是為了更好的管理學(xué)生考試成績(jī)而開(kāi)發(fā)的數(shù)據(jù)管理軟件。它對(duì)于一個(gè)學(xué)校是不可缺少的重要部分,它的內(nèi)容對(duì)于學(xué)校的決策者和管理者來(lái)說(shuō)都至關(guān)重要.學(xué)生成績(jī)管理管理系統(tǒng)為用戶提供充足的信息和快捷的查詢手段,實(shí)現(xiàn)學(xué)生基本信息、成績(jī)的錄入,刪除,查詢,維護(hù)以及成績(jī)的統(tǒng)計(jì)分析等幾方面的功能,是現(xiàn)實(shí)問(wèn)題的迫切要求.本系統(tǒng)開(kāi)發(fā)的總體任務(wù)是實(shí)現(xiàn)學(xué)生成績(jī)管理的系統(tǒng)化、規(guī)范化、自動(dòng)化.達(dá)到提高學(xué)生成績(jī)管理效率的目的.與傳統(tǒng)管理方法相比有明顯的優(yōu)點(diǎn):查找方便,可靠性高,保密性好,成本低。徹底改變了以前繁雜的管理模式,實(shí)現(xiàn)全面的、相對(duì)集中的、職能化的信息綜合管理.計(jì)算機(jī)被用到信息管理系統(tǒng)的環(huán)境正是適應(yīng)了當(dāng)今時(shí)代飛速發(fā)展的信息時(shí)代.人們深刻的認(rèn)識(shí)到了計(jì)算機(jī)功能的強(qiáng)大,對(duì)于復(fù)雜的信息管理,計(jì)算機(jī)充分發(fā)揮著它的優(yōu)越性。檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低,這些優(yōu)點(diǎn)極大地減輕了學(xué)院教學(xué)人員的工作量,縮小開(kāi)支,提高了學(xué)生檔案管理的效率和準(zhǔn)確性,能夠合理的安排時(shí)間,學(xué)生能夠盡快的知道自己的考試成績(jī)。同時(shí),學(xué)生管理系統(tǒng)的應(yīng)用也為今天的教育在未來(lái)市場(chǎng)的競(jìng)爭(zhēng)力有所提高。目錄TOC\o”1—3”\h\uHYPERLINK\l”_Toc9981"1。引言5HYPERLINK\l”_Toc23148"2.課題分析7_Toc25036”3.3.函數(shù)實(shí)現(xiàn)說(shuō)明10HYPERLINK\l”_Toc8845"4。程序運(yùn)行結(jié)果13HYPERLINK\l”_Toc18029"5.軟件使用說(shuō)明14HYPERLINK\l”_Toc30483”6。結(jié)論14_Toc25462”附錄:源代碼161.引言數(shù)據(jù)結(jié)構(gòu)在HYPERLINK”http:///view/92404。htm”計(jì)算機(jī)科學(xué)界至今沒(méi)有標(biāo)準(zhǔn)的定義。個(gè)人根據(jù)各自的理解的不同而有不同的表述方法:SartajSahni在他的《數(shù)據(jù)結(jié)構(gòu)、算法與應(yīng)用》一書(shū)中稱:“數(shù)據(jù)結(jié)構(gòu)是HYPERLINK”http:///view/178571。htm"數(shù)據(jù)對(duì)象,以及存在于該對(duì)象的http:///view/15061.htm"函數(shù)來(lái)給出."他將數(shù)據(jù)對(duì)象(dataobject)定義為“一個(gè)數(shù)據(jù)對(duì)象是實(shí)例或值的集合”.CliffordA.Shaffer在《HYPERLINK”/view/2583391.htm”數(shù)據(jù)結(jié)構(gòu)與算法分析》一書(shū)中的定義是:“數(shù)據(jù)結(jié)構(gòu)是ADT(HYPERLINK”http:///view/178593。htm"抽象數(shù)據(jù)類型AbstractDataType)的物理實(shí)現(xiàn)。"LobertL.Kruse在《數(shù)據(jù)結(jié)構(gòu)與程序設(shè)計(jì)》一書(shū)中,將一個(gè)數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)過(guò)程分成抽象層、數(shù)據(jù)結(jié)構(gòu)層和實(shí)現(xiàn)層。其中,抽象層是指抽象數(shù)據(jù)類型層,它討論數(shù)據(jù)的HYPERLINK”/view/540423。htm”邏輯結(jié)構(gòu)及其運(yùn)算,數(shù)據(jù)結(jié)構(gòu)層和實(shí)現(xiàn)層討論一個(gè)數(shù)據(jù)結(jié)構(gòu)的表示和在計(jì)算機(jī)內(nèi)的存儲(chǔ)細(xì)節(jié)以及運(yùn)算的實(shí)現(xiàn).數(shù)據(jù)結(jié)構(gòu)具體指同一類數(shù)據(jù)元素中,各元素之間的相互關(guān)系,包括三個(gè)組成成分,數(shù)據(jù)的邏輯結(jié)構(gòu),數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)和數(shù)據(jù)運(yùn)算結(jié)構(gòu)。1。1。重要意義一般認(rèn)為,一個(gè)數(shù)據(jù)結(jié)構(gòu)是由數(shù)據(jù)元素依據(jù)某種邏輯聯(lián)系組織起來(lái)的.對(duì)數(shù)據(jù)元素間邏輯關(guān)系的描述稱為數(shù)據(jù)的邏輯結(jié)構(gòu);數(shù)據(jù)必須在計(jì)算機(jī)內(nèi)存儲(chǔ),數(shù)據(jù)的http:///view/575391。htm”軟件設(shè)計(jì)方法和HYPERLINK”http:///view/128511.htm”程序設(shè)計(jì)語(yǔ)言的出現(xiàn),HYPERLINK”http:///view/324458.htm”面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言就是其中之一.1。2。研究?jī)?nèi)容在計(jì)算機(jī)科學(xué)中,數(shù)據(jù)結(jié)構(gòu)是一門(mén)研究非HYPERLINK”http:///view/920695。htm”數(shù)值計(jì)算的程序設(shè)計(jì)問(wèn)題中計(jì)算機(jī)的操作對(duì)象(數(shù)據(jù)元素)以及它們之間的關(guān)系和運(yùn)算等的學(xué)科,而且確保經(jīng)過(guò)這些運(yùn)算后所得到的新結(jié)構(gòu)仍然是原來(lái)的HYPERLINK”/view/1666047。htm”結(jié)構(gòu)類型.“數(shù)據(jù)結(jié)構(gòu)”作為一門(mén)獨(dú)立的課程在國(guó)外是從1968年才開(kāi)始設(shè)立的.1968年美國(guó)唐·歐·克努特教授開(kāi)創(chuàng)了數(shù)據(jù)結(jié)構(gòu)的最初體系,他所著的《HYPERLINK”/view/1145297。htm”計(jì)算機(jī)程序設(shè)計(jì)技巧》第一卷《基本算法》是第一本較系統(tǒng)地闡述數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)及其操作的著作?!皵?shù)據(jù)結(jié)構(gòu)”在計(jì)算機(jī)科學(xué)中是一門(mén)綜合性的專業(yè)基礎(chǔ)課.數(shù)據(jù)結(jié)構(gòu)是介于HYPERLINK”http:///view/1284.htm”數(shù)學(xué)、計(jì)算機(jī)硬件和http:///view/7809。htm"數(shù)據(jù)庫(kù)系統(tǒng)及其他系統(tǒng)程序的重要基礎(chǔ)。HYPERLINK”http:///view/3314。htm”計(jì)算機(jī)是一門(mén)研究用計(jì)算機(jī)進(jìn)行信息表示和處理的科學(xué)。這里面涉及到兩個(gè)問(wèn)題:HYPERLINK”/view/1527。htm”信息的表示,信息的處理。而信息的表示和組織又直接關(guān)系到處理信息的程序的效率。隨著計(jì)算機(jī)的普及,信息量的增加,信息范圍的拓寬,使許多系統(tǒng)程序和HYPERLINK”/view/330120。htm"應(yīng)用程序的規(guī)模很大,結(jié)構(gòu)又相當(dāng)復(fù)雜.因此,為了編寫(xiě)出一個(gè)“好”的程序,必須分析待處理的對(duì)象的特征及各對(duì)象之間存在的關(guān)系,這就是數(shù)據(jù)結(jié)構(gòu)這門(mén)課所要研究的問(wèn)題。眾所周知,計(jì)算機(jī)的程序是對(duì)信息進(jìn)行加工處理。在大多數(shù)情況下,這些信息并不是沒(méi)有組織,信息(數(shù)據(jù))之間往往具有重要的結(jié)構(gòu)關(guān)系,這就是數(shù)據(jù)結(jié)構(gòu)的內(nèi)容.數(shù)據(jù)的結(jié)構(gòu),直接影響算法的選擇和效率。計(jì)算機(jī)解決一個(gè)具體問(wèn)題時(shí),大致需要經(jīng)過(guò)下列幾個(gè)步驟:首先要從具體問(wèn)題中抽象出一個(gè)適當(dāng)?shù)腍YPERLINK”http:///view/76167。htm”數(shù)學(xué)模型,然后設(shè)計(jì)一個(gè)解此數(shù)學(xué)模型的算法(Algorithm),最后編出程序、進(jìn)行測(cè)試、調(diào)整直至得到最終解答。尋求數(shù)學(xué)模型的實(shí)質(zhì)是分析問(wèn)題,從中提取操作的對(duì)象,并找出這些操作對(duì)象之間含有的關(guān)系,然后用數(shù)學(xué)的語(yǔ)言加以描述.http:///view/38752。htm”數(shù)據(jù)是對(duì)客觀事物的符號(hào)表示,在計(jì)算機(jī)科學(xué)中是指所有能輸入到計(jì)算機(jī)中并由HYPERLINK”http:///view/178184。htm”計(jì)算機(jī)程序處理的符號(hào)的總稱。數(shù)據(jù)元素是數(shù)據(jù)的基本單位,在計(jì)算機(jī)程序中通常作為一個(gè)整體考慮。一個(gè)數(shù)據(jù)元素由若干個(gè)HYPERLINK”/view/178581。htm”數(shù)據(jù)項(xiàng)組成。數(shù)據(jù)項(xiàng)是數(shù)據(jù)的不可分割的最小單位。有兩類數(shù)據(jù)元素:一類是不可分割的原子型數(shù)據(jù)元素,如:整數(shù)”5”,字符”N”等;另一類是由多個(gè)款項(xiàng)構(gòu)成的數(shù)據(jù)元素,其中每個(gè)款項(xiàng)被稱為一個(gè)數(shù)據(jù)項(xiàng)。例如描述一個(gè)學(xué)生的信息的數(shù)據(jù)元素可由下列6個(gè)數(shù)據(jù)項(xiàng)組成。其中的出生日期又可以由三個(gè)數(shù)據(jù)項(xiàng):”年”、”月”和”日”組成,則稱"出生日期”為組合項(xiàng),而其它不可分割的數(shù)據(jù)項(xiàng)為原子項(xiàng)。關(guān)鍵字指的是能識(shí)別一個(gè)或多個(gè)數(shù)據(jù)元素的數(shù)據(jù)項(xiàng)。若能起唯一識(shí)別作用,則稱之為"主”關(guān)鍵字,否則稱之為”次”關(guān)鍵字.數(shù)據(jù)對(duì)象是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個(gè)HYPERLINK”http:///view/276935。htm”子集。數(shù)據(jù)對(duì)象可以是有限的,也可以是無(wú)限的。HYPERLINK”/view/51860。htm"數(shù)據(jù)處理是指對(duì)數(shù)據(jù)進(jìn)行查找、插入、刪除、合并、排序、統(tǒng)計(jì)以及簡(jiǎn)單計(jì)算等的操作過(guò)程。在早期,計(jì)算機(jī)主要用于科學(xué)和HYPERLINK”http:///view/1590193。htm”工程計(jì)算,進(jìn)入八十年代以后,計(jì)算機(jī)主要用于數(shù)據(jù)處理。據(jù)有關(guān)統(tǒng)計(jì)資料表明,現(xiàn)在計(jì)算機(jī)用于數(shù)據(jù)處理的時(shí)間比例達(dá)到80%以上,隨著時(shí)間的推移和\n請(qǐng)輸入學(xué)生姓名:";cin〉〉p3—>name;//從鍵盤(pán)接收輸入數(shù)賦值給結(jié)點(diǎn)的姓名cout〈<"\n請(qǐng)輸入學(xué)生數(shù)學(xué)成績(jī):";cin>>p3—〉math;//從鍵盤(pán)接收輸入數(shù)賦值給結(jié)點(diǎn)的數(shù)學(xué)成績(jī)cout<〈”\n請(qǐng)輸入學(xué)生英語(yǔ)成績(jī):”;cin〉〉p3—〉english;//從鍵盤(pán)接收輸入數(shù)賦值給結(jié)點(diǎn)的英語(yǔ)成績(jī)cout〈<"\n請(qǐng)輸入學(xué)生的計(jì)算機(jī)基礎(chǔ)成績(jī):”;cin〉>p3->computer;//從鍵盤(pán)接收輸入數(shù)賦值給結(jié)點(diǎn)的計(jì)算機(jī)成績(jī) p3->scoresum=p3-〉math+p3—〉english+p3—>computer;//計(jì)算結(jié)點(diǎn)的總成績(jī) p3-〉next=NULL;//將要插入結(jié)點(diǎn)的指針域設(shè)置為空 if(h==NULL)//當(dāng)鏈表中沒(méi)有結(jié)點(diǎn)時(shí),將要加入的結(jié)點(diǎn)作為頭結(jié)點(diǎn) {h=p3;returnh; } p1=p2=h;while(p1!=NULL&&p3—>num〉p1—>num)//查找結(jié)點(diǎn)的學(xué)號(hào)大于要插入結(jié)點(diǎn)學(xué)號(hào)的第一個(gè)結(jié)點(diǎn) //指針p1表示符合條件的結(jié)點(diǎn)的指針,指針p2是指針p1的前一個(gè)結(jié)點(diǎn)指針 { p2=p1; p1=p1-〉next; } if(p1==h)//插入位置為頭結(jié)點(diǎn)前 { p3—〉next=p3; h=p3;returnh; } else//插入位置為鏈表中間和鏈表尾部 { p2—〉next=p3; p3-〉next=p1; }studentSum+=1;//學(xué)生人數(shù)加1 returnh;//返回鏈表的頭結(jié)點(diǎn)}voidrecord::PrintRecord(SCORE*h){if(h==NULL) {cout<〈"\n抱歉,沒(méi)有任何記錄!\n”;return; }cout<<”\n學(xué)號(hào)\t姓名\t數(shù)學(xué)\t英語(yǔ)\t計(jì)算機(jī)\t總分”<〈endl; while(h)//輸出鏈表中每個(gè)結(jié)點(diǎn)的學(xué)生成績(jī)信息 {cout〈〈h->num<〈”\t”<〈h—〉name〈〈”\t"〈〈h—〉math〈〈”\t"〈〈h—〉english〈〈"\t"<<h—〉computer<〈”\t”<<h—>scoresum〈〈endl; h=h—>next; }}structSCORE*record::DeleteRecord(structSCORE*h){structSCORE*p1,*p2;intnum; if(h==NULL)//鏈表為空 {cout<<”\n抱歉,沒(méi)有任何記錄!”;returnh; }p1=p2=h;//將鏈表的頭結(jié)點(diǎn)指針h賦值給指針p1和指針p2cout<<"\n請(qǐng)輸入要?jiǎng)h除記錄的學(xué)生學(xué)號(hào)";cin>〉num;while(p1!=NULL&&p1—〉num!=num)//查找結(jié)點(diǎn)的學(xué)號(hào)等于要?jiǎng)h除學(xué)生學(xué)號(hào)的第一個(gè)結(jié)點(diǎn) //指針p1表示符合條件的結(jié)點(diǎn)的指針,指針p2是指針p1的前一個(gè)結(jié)點(diǎn)指針 { p2=p1; p1=p1—>next; } if(p1=NULL)//沒(méi)有找到符合要求的結(jié)點(diǎn) {cout〈〈"\n抱歉啊,表中沒(méi)有該記錄哦!";returnh; }if(p1-〉num==num) {studentSum—=1;//學(xué)生人數(shù)減1 if(p1==h)//刪除的是頭結(jié)點(diǎn) h=h—〉next; else//刪除的是非頭結(jié)點(diǎn) p2-〉next=p1-〉next; deletep1;//釋放p1所指向的儲(chǔ)存單元 }returnh;}structSCORE*record::UpdateRecord(structSCORE*h){structSCORE*p1;intnum; if(h==NULL)//鏈表為空{cout<<"\n抱歉,沒(méi)有任何記錄!”;returnh; } p1=h;//將鏈表的頭結(jié)點(diǎn)指針h賦值給指針p1cout〈<"\n請(qǐng)輸入要修改記錄的學(xué)生學(xué)號(hào)!";cin〉〉num;while(p1!=NULL&&p1—〉num!=num)//查找結(jié)點(diǎn)的學(xué)號(hào)等于要修改學(xué)生學(xué)號(hào)的指針結(jié)點(diǎn) { p1=p1->next;//將p1指針移到下一個(gè)結(jié)點(diǎn) } if(p1==NULL)//沒(méi)有找到符合要求的結(jié)點(diǎn) {cout〈<”\n抱歉啊,表中沒(méi)有該記錄哦!";returnh; } if(p1-〉num==num)//找到符合要求的結(jié)點(diǎn),并修改學(xué)生的相關(guān)成績(jī) {cout〈〈"\n請(qǐng)重新輸入學(xué)生的數(shù)學(xué)成績(jī):”;cin>〉p1—〉math;cout〈〈”\n請(qǐng)重新輸入學(xué)生英語(yǔ)成績(jī):”;cin>>p1—〉english;cout<<”\n請(qǐng)重新輸入學(xué)生的計(jì)算機(jī)基礎(chǔ)成績(jī):”;cin〉>p1—>computer; p1—〉scoresum=p1—〉math+p1—〉english+p1—〉computer; }returnh;}voidrecord::FindRecord(structSCORE*h,intx,floats1,floats2){if(h==NULL)//鏈表為空 {cout<〈"\n抱歉,沒(méi)有任何記錄!";return; }cout〈〈"\n學(xué)號(hào)\t姓名\t數(shù)學(xué)\t英語(yǔ)\t計(jì)算機(jī)\t總分”〈<endl;while(h) { if(x==1)//查找數(shù)學(xué)成績(jī)?cè)谀撤謹(jǐn)?shù)段的學(xué)生成績(jī)信息if(h—〉math〉=s1&&h—〉math<=s2)cout<<h—〉num〈〈”\t”<<h—>name〈<"\t”<〈h-〉math〈〈"\t"〈〈h->english〈<"\t”<〈h-〉computer〈〈”\t"<〈h—〉scoresum〈<endl; if(x==2)//查找英語(yǔ)成績(jī)?cè)谀撤謹(jǐn)?shù)段的學(xué)生成績(jī)信息if(h—>english〉=s1&&h-〉english〈=s2)cout〈〈h-〉num<〈”\t"<〈h—>name〈〈”\t”<<h—>math<〈”\t”〈〈h—〉english<〈”\t"〈〈h—>computer〈<”\t"〈〈h—>scoresum〈〈endl; if(x==3)//查找計(jì)算機(jī)成績(jī)?cè)谀撤謹(jǐn)?shù)段的學(xué)生成績(jī)信息if(h—〉computer〉=s1&&h—〉english<=s2)cout<<h-〉num<<"\t”<〈h—>name<〈”\t”<〈h->math〈<"\t"〈〈h—〉english〈〈”\t”<<h—〉computer〈〈”\t”〈〈h—〉scoresum〈〈endl; h=h-〉next; }}voidrecord::FindRecord(structSCORE*h,intnum)//根據(jù)學(xué)生學(xué)號(hào)查找學(xué)生成績(jī)信息{structSCORE*p1; if(h==NULL)//鏈表為空 {cout<〈”\n抱歉,沒(méi)有任何記錄!";return; } p1=h;//將鏈表的頭結(jié)點(diǎn)指針h賦值給指針p1while(p1!=NULL&&p1-〉num!=num)//查找節(jié)點(diǎn)的學(xué)號(hào)等于要查找學(xué)生學(xué)號(hào)的指針結(jié)點(diǎn) { p1=p1->next; } if(p1==NULL)//沒(méi)有找到 {cout<〈”\n抱歉,表中沒(méi)有該記錄哦!”;return; } if(p1—>num==num)//找到并顯示信息 {cout〈〈”\n學(xué)號(hào)\t姓名\t數(shù)學(xué)\t英語(yǔ)\t計(jì)算機(jī)\t總分"<<endl;cout〈<p1—>num〈〈”\t”〈<p1-〉name〈〈"\t”〈〈p1—>math〈<”\t"〈<p1-〉english〈<"\t"〈〈p1->computer〈<”\t”<〈p1—〉scoresum〈〈endl; }}voidrecord::FindRecord(structSCORE*h,stringname)//根據(jù)學(xué)生姓名查找學(xué)生成績(jī)信息{structSCORE*p1; if(h==NULL)//鏈表為空 {cout<<"\n抱歉,沒(méi)有任何記錄”;return; } p1=h;while(p1!=NULL&&p1—>name!=name) { p1=p1—〉next; }if(p1==NULL) {cout〈〈"\n抱歉,表中沒(méi)有該記錄哦!";return; }if(p1—〉name==name) {cout<〈”\n學(xué)號(hào)\t姓名\t數(shù)學(xué)\t英語(yǔ)\t計(jì)算機(jī)\t總分”〈<endl;cout〈<p1-〉num〈<”\t"<〈p1—〉name〈〈”\t”<<p1—〉math<〈”\t"<<p1-〉english〈<”\t"〈<p1->computer〈〈”\t”<〈p1—〉scoresum<〈endl; }}voidrecord::StatisticRecord(structSCORE*h,intx){structSCORE*p=h;//將鏈表的頭結(jié)點(diǎn)指針h復(fù)制給指針pintcount=0;//定義統(tǒng)計(jì)人數(shù)count變量并賦初始值為0 if(p==NULL)//鏈表為空 {cout〈〈"\n抱歉,沒(méi)有任何記錄!”;return; }while(p) { if(x==1)//統(tǒng)計(jì)數(shù)學(xué)成績(jī)及格的學(xué)生人數(shù)if(p—〉math〉=60)count+=1; if(x==2)//統(tǒng)計(jì)英語(yǔ)成績(jī)及格的學(xué)生人數(shù)if(p->english>=60)count+=1; if(x==3)//統(tǒng)計(jì)計(jì)算機(jī)成績(jī)及格的學(xué)生人數(shù)if(p-〉computer〉=60)count+=1; p=p->next; } if(x==1)//顯示數(shù)學(xué)成績(jī)及格的學(xué)生人數(shù)及及格率 {cout<〈”數(shù)學(xué)成績(jī)及格學(xué)生人數(shù)為";cout〈〈count;cout<〈”,及格率為";cout〈<count/(float)studentSum〈〈endl;if(count〈studentSum)cout〈<"\n學(xué)號(hào)\t姓名\t數(shù)學(xué)"<<endl;elsecout〈〈”沒(méi)有數(shù)學(xué)成績(jī)不及格學(xué)生”〈<endl; }else if(x==2)//顯示英語(yǔ)成績(jī)及格的學(xué)生人數(shù)及及格率 {cout〈〈"英語(yǔ)績(jī)及格學(xué)生人數(shù)為”;cout<<count;cout〈〈”,及格率為”;cout<〈count/(float)studentSum〈<endl;if(count<studentSum)cout〈〈"\n學(xué)號(hào)\t姓名\t英語(yǔ)”〈<endl;elsecout〈〈"沒(méi)有英語(yǔ)成績(jī)不及格的學(xué)生”〈〈endl; }else if(x==3)//顯示計(jì)算機(jī)成績(jī)及格的學(xué)生人數(shù)及及格率 {cout<<"計(jì)算機(jī)成績(jī)及格的學(xué)生人數(shù)為”;cout〈〈count;cout<<",及格率為”;cout〈〈count/(float)studentSum<<endl;if(count〈studentSum)cout<<”\n學(xué)號(hào)\t姓名\t計(jì)算機(jī)"<<endl;elsecout〈<”沒(méi)有計(jì)算機(jī)成績(jī)不及格的學(xué)生"〈<endl; } p=h;while(p) { if(x==1)//顯示數(shù)學(xué)成績(jī)不及格的學(xué)生信息if(p-〉math<60)cout〈〈p—>num〈〈”\t”〈〈p-〉name〈<”\t”〈<p-〉math〈<endl; if(x==2)//顯示英語(yǔ)成績(jī)不及格的學(xué)生信息if(p->english〈60)cout<〈p-〉num〈<”\t"〈〈p-〉name<<"\t"<〈p-〉english〈<endl; if(x==3)//顯示計(jì)算機(jī)成績(jī)不及格的學(xué)生信息if(p—〉computer〈60)cout〈〈p—>num<<"\t"〈<p-〉name<<”\t”<<p-〉computer<〈endl; p=p—〉next; }}voidrecord::StacRecordFine(structSCORE*h){structSCORE*p=h;//將鏈表的頭結(jié)點(diǎn)指針h賦值給指針平pintcount=0;//定義統(tǒng)計(jì)人數(shù)count變量并賦初始值為0 if(p==NULL)//鏈表為空 {cout〈<”\n抱歉,沒(méi)有任何記錄!”;return; }while(p) { if(p->math>=90&&p—>english>=90&&p—〉computer〉=90) //統(tǒng)計(jì)三門(mén)成績(jī)?nèi)繛閮?yōu)秀的學(xué)生人數(shù)count+=1; p=p—〉next;//將指針移到下一結(jié)點(diǎn) }cout〈<"三門(mén)成績(jī)?nèi)珵閮?yōu)秀的學(xué)生人數(shù)為”;cout<<count<〈endl;cout〈〈”\n學(xué)號(hào)\t姓名\t數(shù)學(xué)\t英語(yǔ)\t計(jì)算機(jī)\t總分"〈〈endl; p=h;//將鏈表的頭結(jié)點(diǎn)指針h賦值給指針pwhile(p) { if(p-〉math〉=90&&p—〉english〉=90&&p—〉computer>=90)//顯示三門(mén)成績(jī)?nèi)繛閮?yōu)秀的學(xué)生信息cout〈<p—〉num〈<"\t"〈〈p—〉name<<”\t”〈〈p-〉math<〈”\t”<<p-〉english<〈"\t"〈〈p—〉computer〈〈”\t"〈<p—〉scoresum〈〈endl; p=p—〉next; }}voidrecord::StacRecordDisq(structSCORE*h){structSCORE*p=h;//將鏈表的頭結(jié)點(diǎn)指針h賦值給指針pintcount=0;//定義統(tǒng)計(jì)人數(shù)count變量并賦初值為0 if(p==NULL)//鏈表為空 {cout〈〈”\n抱歉,沒(méi)有任何記錄!";return; }while(p) { if(p-〉math〈60&&p->english<60&&p—>computer<60)//統(tǒng)計(jì)三門(mén)成績(jī)?nèi)繛椴患案竦膶W(xué)生人數(shù)count+=1; p=p—〉next; }cout〈<”三門(mén)成績(jī)?nèi)坎患案竦膶W(xué)生信息為";cout〈〈count〈〈endl;cout〈〈"全為不及格的學(xué)生信息為:”〈<endl;cout<〈”\n學(xué)號(hào)\t姓名\t數(shù)學(xué)\t英語(yǔ)\t計(jì)算機(jī)\t總分"〈<endl; p=h;while(p) { if(p->math<60&&p—〉english〈60&&p—〉computer〈60)//顯示三門(mén)成績(jī)?nèi)繛椴患案竦膶W(xué)生信息cout<〈p-〉num〈<"\t"<<p-〉name<<”\t”〈〈p—〉math〈〈"\t"<〈p->english〈〈”\t"〈<p—〉computer<〈”\t”<〈p—〉scoresum〈<endl; p=p—>next; }}voidrecord::SaveRecordFile(structSCORE*h)//將鏈表中的數(shù)據(jù)寫(xiě)入文件{structSCORE*p;ofstreamofile;ofile。open(”score。dat",ios::out);//以寫(xiě)的方式打開(kāi)文件score。dat,若該文件不存在,則創(chuàng)建score。dat文件if(!ofile)//文件打開(kāi)錯(cuò)誤 {cout<〈”\n數(shù)據(jù)文件打開(kāi)錯(cuò)誤沒(méi)有將數(shù)據(jù)寫(xiě)入文件!\n”;return; }ofile<〈"學(xué)號(hào)\t姓名\t數(shù)學(xué)\t英語(yǔ)\t計(jì)算機(jī)\t總分";while(h) {ofile〈〈endl<〈h—〉num<〈"\t”〈〈h—〉name〈〈”\t”<〈h—>math〈<”\t"〈〈h—〉english<〈”\t"〈〈h—>computer<<"\t"〈〈h—〉scoresum;//將當(dāng)前結(jié)點(diǎn)的數(shù)據(jù)信息寫(xiě)入到文件中 p=h;h=h—>next;deletep; }ofile.close();//關(guān)閉文件對(duì)象}structSCORE*record::LoadRecordFile(structSCORE*h){ifstreamifile;//定義輸入文件對(duì)象ifile.open(”score。dat",ios::in);//以讀的方式打開(kāi)文件score.datstructSCORE*p,*q;if(!ifile)//文件打開(kāi)錯(cuò)誤 {cout<〈"\n數(shù)據(jù)文件不存在,加載不成功!\n";returnNULL; }chars[50];ifile。getline(s,50);//讀取文件指針當(dāng)前行數(shù)據(jù)while(!ifile.eof()) {studentSum=studentSum+1;//學(xué)生人數(shù)加1 p=newSCORE;//創(chuàng)建新的score變量ifile〉〉p—〉num>〉p-〉name〉>p—>math>〉p—〉english〉〉p—〉computer〉〉p—〉scoresum;//將數(shù)據(jù)從文件中讀取到新的結(jié)點(diǎn)中 p—>next=NULL;//新結(jié)點(diǎn)的指針域?yàn)榭?if(h==NULL)//將新結(jié)點(diǎn)插入到鏈表中 q=h=p;else { q—〉next=p; q=p; } }ifile.close();//關(guān)閉文件對(duì)象returnh;}voidSystemMenu(recordr)//系統(tǒng)菜單,及處理用戶的選擇{intchoice;while(1) {cout〈〈”\n\t\t歡迎進(jìn)入學(xué)生成績(jī)管理系統(tǒng)!”;//顯示系統(tǒng)主菜單cout<〈”\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@”;cout〈〈”\n\t1、添加學(xué)生成績(jī)信息”;cout〈〈"\n\t2、刪除學(xué)生成績(jī)信息”;cout<<”\n\t3、修改學(xué)生成績(jī)信息”;cout<〈"\n\t4、查詢學(xué)生成績(jī)信息";cout〈<”\n\t5、顯示所有學(xué)生成績(jī)信息”;cout〈<”\n\t6、統(tǒng)計(jì)學(xué)生成績(jī)信息";cout<〈”\n\t0、退出系統(tǒng)";cout〈<”\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@”;cout〈〈”\n請(qǐng)根據(jù)提示選擇操作:”;cin〉〉choice;switch(choice) { case1://增加學(xué)生成績(jī)信息head=r。InsertRecord(head);break; case2://刪除學(xué)生成績(jī)信息head=r。DeleteRecord(head); case3://修改學(xué)生成績(jī)信息head=r.UpdateRecord(head); case4://查詢學(xué)生成績(jī)信息while(1) {intc;cout〈〈”\n************************************************";cout〈〈”\n\t1。根據(jù)學(xué)號(hào)查詢學(xué)生成績(jī)信息”;cout〈〈"\n\t2。根據(jù)姓名查詢學(xué)生成績(jī)信息";cout〈〈"\n\t3.根據(jù)數(shù)學(xué)分?jǐn)?shù)查詢學(xué)生成績(jī)信息";cout〈<"\n\t4。根據(jù)英語(yǔ)成績(jī)查詢學(xué)生成績(jī)信息”;cout<<"\n\t5。根據(jù)計(jì)算機(jī)基礎(chǔ)成績(jī)查詢學(xué)生成績(jī)信息";cout<<”\n\t6.返回上級(jí)目錄”;cout<<”\n************************************************”; //顯示查詢子菜單cout<〈”\n請(qǐng)根據(jù)提示選擇操作:”;cin〉〉c; if(c==1)//根據(jù)學(xué)號(hào)查詢學(xué)生成績(jī)信息 {intx;cout<〈"\n請(qǐng)輸入需要查詢的學(xué)生學(xué)號(hào):”;cin>〉x;r.FindRecord(head,x); } if(c==1)//根據(jù)學(xué)生學(xué)號(hào)查詢學(xué)生成績(jī)信息 {intx;cout〈<”\n請(qǐng)輸入需要查詢的學(xué)生學(xué)號(hào):”;cin>〉x;r。FindRecord(head,x); } if(c==2)//根據(jù)學(xué)生姓名查詢學(xué)生成績(jī)信息 {stringname;cout〈〈”\n請(qǐng)輸入需要查詢的學(xué)生姓名:";cin〉〉name;r.FindRecord(head,name); }if(c==3)//根據(jù)數(shù)學(xué)分?jǐn)?shù)查詢學(xué)生成績(jī)信息 {floats1,s2;cout〈<”\n請(qǐng)輸入查詢的數(shù)學(xué)最低分和最高分:”;cin〉>s1〉>s2;r。FindRecord(head,1,s1,s2); } if(c==4)//根據(jù)英語(yǔ)分?jǐn)?shù)段查詢學(xué)生成績(jī)信息 {floats1,s2;cout〈<”\n請(qǐng)輸入查詢的英語(yǔ)最低分和最高分:";c

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論