面向?qū)ο蟪绦蛟O(shè)計(jì)(高校學(xué)籍管理系統(tǒng))_第1頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)(高校學(xué)籍管理系統(tǒng))_第2頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)(高校學(xué)籍管理系統(tǒng))_第3頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)(高校學(xué)籍管理系統(tǒng))_第4頁(yè)
面向?qū)ο蟪绦蛟O(shè)計(jì)(高校學(xué)籍管理系統(tǒng))_第5頁(yè)
已閱讀5頁(yè),還剩40頁(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)介

1、課 程 設(shè) 計(jì) 報(bào) 告 課程名稱 面向?qū)ο蟪绦蛟O(shè)計(jì) 課題名稱 高校學(xué)籍管理系統(tǒng)一、設(shè)計(jì)內(nèi)容與設(shè)計(jì)要求1.課程設(shè)計(jì)目的:面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)是集中實(shí)踐性環(huán)節(jié)之一,是學(xué)習(xí)完面向?qū)ο蟪绦蛟O(shè)計(jì)課程后進(jìn)行的一次全面的綜合練習(xí)。要求學(xué)生達(dá)到熟練掌握C+語(yǔ)言的基本知識(shí)和技能;基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的思想和方法;能夠利用所學(xué)的基本知識(shí)和技能,解決簡(jiǎn)單的面向?qū)ο蟪绦蛟O(shè)計(jì)問(wèn)題,從而提高動(dòng)手編程解決實(shí)際問(wèn)題的能力。2.課題題目高校學(xué)籍管理系統(tǒng)3設(shè)計(jì)要求:設(shè)計(jì)課題題目:每位同學(xué)根據(jù)自己學(xué)號(hào)除以4所得的余數(shù)加一選擇相應(yīng)題號(hào)的課題。換題者不記成績(jī)。根據(jù)自己對(duì)應(yīng)的課題完成以下主要工作:完成系統(tǒng)需求分析:主要包括系統(tǒng)設(shè)

2、計(jì)目的與意義;系統(tǒng)功能需求(系統(tǒng)框圖);輸入輸出的要求等內(nèi)容。完成系統(tǒng)總體設(shè)計(jì):主要包括系統(tǒng)功能分析;系統(tǒng)功能模塊劃分與設(shè)計(jì)(系統(tǒng)功能模塊圖)。完成系統(tǒng)詳細(xì)設(shè)計(jì):主要包括類層次圖;界面設(shè)計(jì)與各功能模塊實(shí)現(xiàn)等累人。完成系統(tǒng)調(diào)試:主要包括調(diào)試出現(xiàn)的主要問(wèn)題,編譯語(yǔ)法錯(cuò)誤及修改,重點(diǎn)是運(yùn)行邏輯問(wèn)題修改和調(diào)整。使用說(shuō)明書(shū)及編程體會(huì):說(shuō)明系統(tǒng)的使用和操作步驟,詳細(xì)列出每一步的操作步驟。附錄:關(guān)鍵源程序(帶注釋),可以只選取程序主要部分。按規(guī)定格式完成課程設(shè)計(jì)報(bào)告,將其打印稿(A4紙)上交給老師存檔。不得抄襲他人程序、課程設(shè)計(jì)報(bào)告,每個(gè)人應(yīng)體現(xiàn)自己的個(gè)性設(shè)計(jì)。二、進(jìn)度安排第17周 星期一 08時(shí):00分1

3、2時(shí):00分 星期三 14時(shí):00分18時(shí):00分 星期四 14時(shí):00分18時(shí):00分課題2:高校學(xué)籍管理系統(tǒng) (一)、課程設(shè)計(jì)題目:高校學(xué)籍管理系統(tǒng)(二)、目的與要求: 1、目的: (1)要求學(xué)生達(dá)到熟練掌握C+語(yǔ)言的基本知識(shí)和技能; (2)基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法; (3)能夠利用所學(xué)的基本知識(shí)和技能,解決簡(jiǎn)單的面向?qū)ο蟪绦蛟O(shè)計(jì)問(wèn)題。 2、基本要求: (1)要求利用面向?qū)ο蟮姆椒ㄒ约癈+的編程思想來(lái)完成系統(tǒng)的設(shè)計(jì);(2)要求在設(shè)計(jì)的過(guò)程中,建立清晰的類層次; (3)在系統(tǒng)的設(shè)計(jì)中,至少要用到面向?qū)ο蟮囊环N機(jī)制。3、創(chuàng)新要求: 在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì),如根據(jù)查找結(jié)

4、果進(jìn)行修改的功能。 4、寫(xiě)出設(shè)計(jì)說(shuō)明書(shū) (三)、設(shè)計(jì)方法和基本原理: 1、問(wèn)題描述(功能要求): (1)能夠從屏幕上讀取一個(gè)學(xué)生的信息并將信息存入到數(shù)據(jù)文件中。(2)能夠?qū)⒅付ǖ男畔奈募袆h除。(3)能夠按編號(hào)、姓名對(duì)學(xué)生的信息進(jìn)行檢索并將檢索結(jié)果顯示在屏幕上。(4)可以統(tǒng)計(jì)全部學(xué)生的總成績(jī),及其在班上的排名。(5)能夠統(tǒng)計(jì)各科的平均成績(jī)及及格率。(6)要求有錯(cuò)誤提示功能,例如性別只能輸入男女,輸入錯(cuò)誤提示重新輸入。(7)如果檢索不到相應(yīng)的信息應(yīng)提示用戶。(8)擴(kuò)展要求:能先行設(shè)置本學(xué)期的科目 每個(gè)學(xué)生信息應(yīng)該包括:姓名、學(xué)號(hào)、成績(jī)成績(jī)信息應(yīng)該包括:科目數(shù)量、各科目名稱、各科目成績(jī)2、問(wèn)題的

5、解決方案: 根據(jù)系統(tǒng)功能要求,可以將問(wèn)題解決分為以下步驟: (1)寫(xiě)出需求分析(做什么);(2)分析系統(tǒng)中的各個(gè)實(shí)體之間的關(guān)系及其屬性和行為; (3)根據(jù)問(wèn)題描述,設(shè)計(jì)系統(tǒng)的類層次; (4)完成類層次中各個(gè)類的描述(包括屬性和方法); (5)完成類中各個(gè)成員函數(shù)的定義; (6)用戶界面的設(shè)計(jì); (7)分析系統(tǒng)功能模塊(系統(tǒng)流程圖);(8)代碼編寫(xiě),功能調(diào)試;(9)完成系統(tǒng)總結(jié)報(bào)告以及系統(tǒng)使用說(shuō)明書(shū)。目 錄1.系統(tǒng)需求分析12.總體設(shè)計(jì)13.詳細(xì)設(shè)計(jì)24.系統(tǒng)調(diào)試與使用說(shuō)明45.結(jié)果分析216.總結(jié)22湖南工程學(xué)院課程設(shè)計(jì)報(bào)告1. 系統(tǒng)需求分析1. 程序的功能這個(gè)程序的主要功能是能夠從屏幕上讀取

6、一個(gè)學(xué)生的信息并將其信息存入到數(shù)據(jù)文件中;能夠?qū)⒅付ǖ男畔奈募袆h除;能夠按編號(hào)、姓名對(duì)學(xué)生的信息進(jìn)行檢索并將檢索結(jié)果顯示在屏幕上;可以統(tǒng)計(jì)全部學(xué)生的總成績(jī),及其在班上的排名;能夠統(tǒng)計(jì)各科的平均成績(jī)及及格率;要求有錯(cuò)誤提示功能,例如性別只能輸入男女,輸入錯(cuò)誤提示重新輸入,如果檢索不到相應(yīng)的信息應(yīng)提示用戶該信息不存在。 2、系統(tǒng)的設(shè)計(jì)目標(biāo) 本系統(tǒng)要求工作人員輸入并存儲(chǔ)學(xué)生學(xué)籍的有關(guān)信息,如:學(xué)生的姓名、學(xué)號(hào)、性別、年齡、班級(jí)等信息。能夠在查詢學(xué)生信息的時(shí)候根據(jù)提示項(xiàng)輸入所要查找的類型,再根據(jù)提示輸入一項(xiàng)學(xué)生信息進(jìn)行查找及修改,實(shí)現(xiàn)學(xué)生學(xué)籍的動(dòng)態(tài)管理。2. 總體設(shè)計(jì)1. 系統(tǒng)功能分析這個(gè)程序是用

7、來(lái)對(duì)學(xué)生的學(xué)籍資料進(jìn)行管理。主要功能包括:a.能夠從屏幕上讀取一個(gè)學(xué)生的信息并將其信息存入到數(shù)據(jù)文件中;b.能夠?qū)⒅付ǖ男畔奈募袆h除;c.能夠按編號(hào)、姓名對(duì)學(xué)生的信息進(jìn)行檢索并將檢索結(jié)果顯示在屏幕上;d.可以統(tǒng)計(jì)全部學(xué)生的總成績(jī),及其在班上的排名;e.能夠統(tǒng)計(jì)各科的平均成績(jī)及及格率;f.要求有錯(cuò)誤提示功能,例如性別只能輸入男女,輸入錯(cuò)誤提示重新輸入,如果檢索不到相應(yīng)的信息應(yīng)提示用戶該信息不存在。2.系統(tǒng)功能模塊劃分與設(shè)計(jì)高校學(xué)籍管理系統(tǒng)main函數(shù)Stu類Student類 Student類進(jìn)行學(xué)生基本信息的錄入及保存,學(xué)生基本信息包括姓名、學(xué)號(hào)、年齡、性別、班級(jí)、各科成績(jī)等。Stu類里定義

8、了Student類的子對(duì)象,不但繼承了Student類的數(shù)據(jù)及函數(shù),還能對(duì)信息進(jìn)行進(jìn)一步的加工。如:學(xué)生信息的錄入、顯示、修改、查詢、刪除以及對(duì)學(xué)生成績(jī)進(jìn)行統(tǒng)計(jì),算出全部學(xué)生的總成績(jī)、班上排名、各科平均分和及格率等,main函數(shù)貫穿全局,利用mune函數(shù)對(duì)程序的各部分進(jìn)行掌控。 3. 詳細(xì)設(shè)計(jì)Student類構(gòu)造函數(shù)Student信息錄入函數(shù)input信息顯示函數(shù)showStu類由Student類定義其對(duì)象構(gòu)造函數(shù)Stu信息錄入函數(shù)insert信息顯示函數(shù)Show信息檢索函數(shù)search刪除信息函數(shù)Delete修改信息函數(shù)update統(tǒng)計(jì)信息函數(shù)tongji菜單函數(shù)munemain函數(shù)文件的打

9、開(kāi)、創(chuàng)建及關(guān)閉關(guān)閉函數(shù)mune的調(diào)用科目設(shè)置函數(shù)subjects該程序應(yīng)用了2個(gè)類,Student類和Stu類,其UML圖如下:Student類的UML圖Student類# Tag: bool#name: char # num: int #sex: char #cname: char #age: int #mark: int #sum: double+Student( )+input( ) :void+show( ):voidStu類的UML圖Stu類#count: int# s: Student+insert( ):void+Show( ):void+search( ):void+Delet

10、e( ):void+update( ):void+tongji( ):void+mune( ):void4. 系統(tǒng)調(diào)試與使用說(shuō)明4.1系統(tǒng)調(diào)試過(guò)程中遇到的問(wèn)題及解決方法4.1.1信息顯示時(shí)出錯(cuò)程序運(yùn)行后出現(xiàn)以下界面設(shè)置好科目信息,錄入學(xué)生信息后。選擇3,本應(yīng)將之前錄入的信息顯示出來(lái)的。但沒(méi)有將所有的學(xué)生信息顯示出來(lái),而是只顯示了最后一個(gè)同學(xué)的信息。經(jīng)檢查發(fā)現(xiàn),show函數(shù)里沒(méi)有使用循環(huán),導(dǎo)致每輸入一個(gè)學(xué)生信息時(shí)就會(huì)將前一個(gè)的學(xué)生信息覆蓋,所以只能輸入最后一個(gè)學(xué)生的信息。信息顯示的原有程序?yàn)椋簐oid show() sum=0; cout姓名:nameendl;cout學(xué)號(hào):numendl;co

11、ut性別:sexendl;cout年齡ageendl;cout班級(jí):cnameendl;for(int i=0;inumb;i+) sum+=marki;coutsbji成績(jī):markiendl; cout總分為:sumendl;在Stu類中再定義一個(gè)Show函數(shù),使用循環(huán),然后這個(gè)Show函數(shù)里調(diào)用Student類中的show函數(shù),便可以將所有的學(xué)生信息顯示出來(lái)。修改后的程序?yàn)?void Stu:Show() for(int i=0;icount;i+)if(si.Tag=true) si.show();coutendl; 若是退出程序再運(yùn)行,上來(lái)選擇3就應(yīng)該將所有的信息顯示出來(lái),可是顯示的

12、是亂碼。經(jīng)檢查后發(fā)現(xiàn),在錄入信息后,保存信息時(shí),沒(méi)有成功把信息保存到文件中。導(dǎo)致程序再次運(yùn)行時(shí)打開(kāi)文件后找不到相應(yīng)的學(xué)生信息,所以輸出了亂碼。原程序中使用了C+中二進(jìn)制文件的保存方式,file.seekg(0,ios:end);file.write(char*)&stu,sizeof(Student);而卻沒(méi)有對(duì)該保存方式進(jìn)行相應(yīng)的函數(shù)聲明,造成未能成功保存信息。后經(jīng)老師幫忙修改才得以將信息保存到文件中。修改后的程序,上來(lái)選擇3就可以將所有已錄入的學(xué)生信息顯示出來(lái)。4.1.2刪除、修改、檢索信息時(shí)出錯(cuò)因?yàn)樵谛畔浫霑r(shí),保存信息的不對(duì),致使要對(duì)信息進(jìn)行刪除、修改或檢索等操作時(shí),都未能在打開(kāi)的文件

13、中找到相應(yīng)的信息,所以都不能對(duì)信息進(jìn)行這些操作。后經(jīng)老師修改,都能正常顯示。在執(zhí)行修改模塊時(shí)還出現(xiàn)了不該有的錯(cuò)誤。修改學(xué)號(hào)的時(shí)候選擇“y”也不能修改就直接跳到下一步。經(jīng)檢查程序,發(fā)現(xiàn)將變量ch1寫(xiě)成了ch,導(dǎo)致不能識(shí)別輸入的是否為“y”。原程序?yàn)?cout是否要修改學(xué)號(hào)?(y/n)ch1;if(ch=y|ch=Y)cout請(qǐng)輸入新學(xué)號(hào):以回車鍵結(jié)束si.num;修改后程序:cout是否要修改學(xué)號(hào)?(y/n)ch1;if(ch1=y|ch1=Y)cout請(qǐng)輸入新學(xué)號(hào):以回車鍵結(jié)束si.num;改正后的程序便可以對(duì)學(xué)號(hào)進(jìn)行修改。4.1.3統(tǒng)計(jì)信息時(shí)出錯(cuò)在對(duì)已有的學(xué)生信息進(jìn)行統(tǒng)計(jì)時(shí)出現(xiàn)了幾個(gè)錯(cuò)誤。1

14、. 計(jì)算全部學(xué)生總成績(jī)時(shí),未對(duì)all進(jìn)行初始化,導(dǎo)致輸出的是亂碼。原程序?yàn)椋簐oid Stu:tongji() int i,j,t; float sbj; float cnum=0,pass=0; double all,aver; cout$1.全部學(xué)生總成績(jī),2.班上排名,3.各科平均成績(jī),4.及格率$endl; cout*請(qǐng)從14中選擇*t; switch(t) case 1: /全部學(xué)生總成績(jī) for(j=0;jcount;j+) sj.sum=0; for(i=0;inumb;i+) sj.sum=sj.sum+sj.marki; 的總成績(jī)?yōu)?sj.sumendl

15、; all =all+sj.sum; cout全部學(xué)生的總成績(jī)?yōu)?allendl; break;修改后程序?yàn)椋篶ase 1: /全部學(xué)生總成績(jī) all=0; for(j=0;jcount;j+) sj.sum=0; for(i=0;inumb;i+) sj.sum=sj.sum+sj.marki; 的總成績(jī)?yōu)?sj.sumendl; all =all+sj.sum; cout全部學(xué)生的總成績(jī)?yōu)?allendl; break;對(duì)all進(jìn)行初始化后便能夠正常顯示出總成績(jī)。 2. 對(duì)已有學(xué)生的總成績(jī)進(jìn)行排名時(shí)出錯(cuò)。經(jīng)調(diào)試檢查后發(fā)現(xiàn)在該程序中多寫(xiě)了一個(gè)for循環(huán)且少寫(xiě)了位置的交換

16、,導(dǎo)致將排名信息輸出時(shí)出錯(cuò)。原程序?yàn)椋篶ase 2:int n ,zf100; double pm100,t; for(j=0;jcount;j+) sj.sum=0; for(i=0;inumb;i+) sj.sum=sj.sum+sj.marki; cout班上排名為:n; for(j=0;jcount;j+) pmj=sj.sum; zfj=j; for(n=j+1;ncount;n+) if(pmjpmn) t=pmn; pmn=pmj; pmj=t; for(j=0;jcount;j+) cout第j+1名總分為:pmjendl; break;修改后的程序?yàn)椋篶as

17、e 2: int n,z,zf100; double pm100,t; for(j=0;jcount;j+) sj.sum=0; for(i=0;inumb;i+) sj.sum=sj.sum+sj.marki; pmj=sj.sum; zfj=j; cout班上排名為:n; for(j=0;jcount;j+) for(n=j+1;npmj) t=pmn; pmn=pmj; pmj=t; z=zfn;zfn=zfj;zfj=z; cout第j+1名總分為:pmjendl; break;去掉最后一個(gè)for循環(huán)后,便可以正常輸出排名信息。3. 計(jì)算各科平均分時(shí)顯示的信息出錯(cuò)。經(jīng)

18、檢查后發(fā)現(xiàn)在定義及格人數(shù)cnum和及格率pass時(shí),將其定義為了int型,所以計(jì)算時(shí)科目及格率不對(duì)。原程序?yàn)椋篿nt i,j,t; float sbj; int cnum=0,pass=0; double all,aver; coutt$請(qǐng)從以下項(xiàng)選擇$endl; coutt1.全部學(xué)生總成績(jī)tttendl; coutt2.班上排名tttendl; coutt3.各科平均成績(jī)tttendl; coutt4.各科及格率tttendl; coutt$請(qǐng)從14中選擇$t; switch(t)修改后的程序?yàn)椋?int i,j,t; float sbj; float cnum=0,pass=0; dou

19、ble all,aver; coutt$請(qǐng)從以下項(xiàng)選擇$endl; coutt1.全部學(xué)生總成績(jī)tttendl; coutt2.班上排名tttendl; coutt3.各科平均成績(jī)tttendl; coutt4.各科及格率tttendl; coutt$請(qǐng)從14中選擇$t; switch(t)將cnum和pass的類型改為float類后,便可以正常計(jì)算各科及格率。4.2運(yùn)行結(jié)果4.2.1主菜單界面4.2.2科目設(shè)置界面4.2.3信息錄入界面4.2.4信息顯示界面4.2.5刪除信息界面4.2.6信息修改界面4.2.7信息檢索界面4.2.8統(tǒng)計(jì)信息界面計(jì)算總成績(jī)班上排名各科平均分各科及格率5. 結(jié)果

20、分析1. 該程序的修改模塊先提示輸入要修改的學(xué)生姓名,再根據(jù)提示一項(xiàng)一項(xiàng)的進(jìn)行修改。不需要修改的項(xiàng)則保留原有的數(shù)據(jù),使用起來(lái)簡(jiǎn)單方便快捷。2. 不足之處 a. 選擇進(jìn)入某一功能模塊之后,要對(duì)該模塊執(zhí)行操作完后才能推出到主菜單,使得有時(shí)候選擇了錯(cuò)誤的功能也無(wú)法返回。 b. 程序利用了C+中二進(jìn)制fstream的保存方法,該方法操作很不方便,容易出錯(cuò)。 c. 該程序?qū)⒈4媾c退出綁定在一起,要求一定要選擇正確的退出方式退出才能將數(shù)據(jù)保存到文件,否則保存失敗。6. 總結(jié)這次課程設(shè)計(jì),從拿到題目開(kāi)始到現(xiàn)在,前前后后自己大概花了整整一個(gè)多星期去搞。剛拿到題目時(shí)以為很簡(jiǎn)單,誰(shuí)知真正寫(xiě)起程序來(lái)才發(fā)現(xiàn)它的困難之

21、處。一開(kāi)始自己總是貪圖程序簡(jiǎn)單功能又多,老想著寫(xiě)好了基本的模板就能用它來(lái)實(shí)現(xiàn)各項(xiàng)具體的要求。于是在寫(xiě)程序時(shí)只是簡(jiǎn)單的把基本的東西寫(xiě)出來(lái)就完了,然而調(diào)試時(shí)才發(fā)現(xiàn)根本行不通。要想寫(xiě)出好的程序就得下功夫,不能貪圖簡(jiǎn)單而使用不懂的東西,這會(huì)使程序越寫(xiě)越吃力,越行不通。就比如在將信息保存到文件時(shí),本來(lái)可以用C語(yǔ)言里的方法,很快就能搞定的,自己卻貪圖簡(jiǎn)單而去使用未學(xué)過(guò)的C+里的方法。不僅又花了大量時(shí)間去看書(shū),而且還寫(xiě)不出能用的程序。最后還得勞煩老師去修改。通過(guò)這次課設(shè)才發(fā)現(xiàn)自己原來(lái)存在很多的不足。很多東西以前都是只知道理論,并沒(méi)有將其用到實(shí)踐中來(lái),導(dǎo)致使用時(shí)才發(fā)現(xiàn)原來(lái)什么都不會(huì)。一些以前學(xué)過(guò)的知識(shí)也因長(zhǎng)期

22、沒(méi)有運(yùn)用,導(dǎo)致要用時(shí)卻也不懂理了。理解上存在誤區(qū),寫(xiě)程序時(shí)不能理好前后的邏輯關(guān)系,導(dǎo)致出現(xiàn)很多不該有的問(wèn)題。經(jīng)過(guò)這一次的課設(shè),我們?cè)僖淮螌W(xué)習(xí)中學(xué)到的各個(gè)知識(shí)點(diǎn)串聯(lián)起來(lái)統(tǒng)一的運(yùn)用到程序的設(shè)計(jì)中去,將理論與應(yīng)用結(jié)合在一起。再一次鞏固了學(xué)過(guò)的知識(shí),也加深了對(duì)新知識(shí)的了解。附錄#include#include#include#include#include#include#includeint numb=0; /科目數(shù)量char sbj2020; /科目名稱class Student /定義學(xué)生類 public: bool Tag; /有效標(biāo)志,true:有效 false:無(wú)效 char name2

23、0; /姓名 int num; /學(xué)號(hào) char sex3; /性別 char cname20; /班級(jí) int age; /年齡 int mark10; /各科成績(jī) double sum; /總成績(jī) Student() Tag=false;/保證新對(duì)象產(chǎn)生時(shí)被置為無(wú)效,即表示這個(gè)對(duì)象尚未填入信息 void input() cout請(qǐng)輸入學(xué)生信息endl;cout姓名:name;cout學(xué)號(hào):num;cout性別(f,m):sex;while(strcmp(sex,f)!=0&strcmp(sex,m)!=0)cout錯(cuò)誤請(qǐng)重新輸入!sex;break; cout班級(jí):cname;cout年齡

24、:age;cout請(qǐng)輸入成績(jī):endl;for(int i=0;inumb;i+)coutsbjimarki; Tag=true; void show() sum=0; cout姓名:nameendl;cout學(xué)號(hào):numendl;cout性別:sexendl;cout年齡ageendl;cout班級(jí):cnameendl;for(int i=0;inumb;i+) sum+=marki; coutsbji成績(jī):markiendl; cout總分為:sumendl; ;/*科目設(shè)置函數(shù)*/void subjects() cout請(qǐng)?jiān)O(shè)置科目數(shù)量numb; cout請(qǐng)輸入科目名稱endl;for(i

25、nt i=0;inumb;i+) couti+1sbji;class Stu /定義Stu類 Student s100; public: int count; /表示有效學(xué)生的數(shù)量Stu()count=0; /一開(kāi)始沒(méi)學(xué)生void insert(); /錄入信息 void Show(); /顯示信息 void search(); /檢索信息 void Delete(); /刪除信息void update(); /修改信息void tongji(); /統(tǒng)計(jì)信息void mune(fstream &file,Stu &c); /菜單函數(shù)friend fstream &operator(fstre

26、am &f, Stu &c);friend fstream &operator(fstream &f, Stu &c)fc.count;for(int i=0;c.si.numc.si.sexc.si.sum;/每次從文件讀入一個(gè)學(xué)生信息for(int j=0;jc.si.markj;c.si.Tag=true;return f;fstream &operator(fstream &f, Stu &c)fc.count ;for(int i=0;i100;i+)if(c.si.Tag=true)fc.si.age ame c

27、. c.si.num c.si.sex c.si.sum ;/每次向文件寫(xiě)入一個(gè)學(xué)生的信息for(int j=0;jnumb;j+) fc.si.markj ;return f;void save(fstream &f, Stu &c)fnumb ;/文件中先保存科目信息for(int i=0;inumb;i+)fsbji ;fc;/再保存學(xué)生信息/*信息錄入*/void Stu:insert() char c2; while(1)for(int i=0;i100;i+)if(si.Tag=false)/此對(duì)象為空,即未被占用si.input();count+;break;cou

28、tc;if( c0=n | c0=N)break; /*顯示信息*/void Stu:Show() for(int i=0;icount;i+) if(si.Tag=true) si.show(); coutendl; /*檢索信息*/void Stu:search() int j; int xh; /學(xué)生學(xué)號(hào)char xm20; /學(xué)生姓名coutt$請(qǐng)選擇查找方式:$endl;coutt1.按學(xué)號(hào)查找endl; coutt2.按姓名查找j;while(j!=1)&(j!=2) cout輸入錯(cuò)誤,請(qǐng)重新輸入!j;if(j=1) cout請(qǐng)輸入要查找的學(xué)號(hào):xh; for(int i=0;i=

29、count) cout查無(wú)此人n;else if(j=2) cout請(qǐng)輸入你要查找的學(xué)生的姓名:xm;for(int i=0;i=count) cout查無(wú)此人!endl;/*刪除信息*/void Stu:Delete() int xh;cout請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào)xh;for(int i=0;icount;i+)if(si.Tag=true)if(si.num=xh) cout您將要?jiǎng)h除的學(xué)生信息為:endl;si.show();si.Tag=false;/刪除count-; cout刪除成功!=count) cout查無(wú)此人!endl;/*修改信息*/void Stu:update()

30、cout輸入要修改信息的學(xué)生姓名,根據(jù)程序提示修改學(xué)生的信息:endl; /修改信息,先輸入要修改的學(xué)生姓名,判斷小項(xiàng)目是否要進(jìn)行修改,選是才進(jìn)行修改!cout請(qǐng)輸入要修改信息的學(xué)生姓名xm;for(int i=0;icount;i+) if(si.Tag=true) if(strcmp(,xm)=0)cout是否要修改姓名?(y/n)ch;if(ch=y|ch=Y)cout請(qǐng)輸入新姓名:以回車鍵結(jié)束;cout是否要修改學(xué)號(hào)?(y/n)ch1;if(ch1=y|ch1=Y)cout請(qǐng)輸入新學(xué)號(hào):以回車鍵結(jié)束si.num;cout是否要修改性別?(y/n)ch2;if

31、(ch2=y|ch2=Y)cout請(qǐng)輸入新性別,以回車鍵結(jié)束si.sex;if (strcmp(si.sex,f)!=0&strcmp(si.sex,m)!=0) cout輸入性別錯(cuò)誤,請(qǐng)重新輸入(性別類型為f/m)!:endl;cout是否要修改年齡?(y/n)ch3;if(ch3=y|ch3=Y)cout請(qǐng)輸入新年齡:以回車鍵結(jié)束si.age;cout是否要修改班級(jí)?(y/n)ch4;if(ch4=y|ch4=Y)cout請(qǐng)輸入新班級(jí):以回車鍵結(jié)束ame;cout學(xué)生信息已修改完畢!endl; cout你剛剛輸入的學(xué)生信息為:=count) cout查無(wú)此人!endl;/*統(tǒng)計(jì)信

32、息*/void Stu:tongji() int i,j,t; float sbj; float cnum=0,pass=0; double all,aver; coutt$請(qǐng)從以下項(xiàng)選擇$endl; coutt1.全部學(xué)生總成績(jī)tttendl; coutt2.班上排名tttendl; coutt3.各科平均成績(jī)tttendl; coutt4.各科及格率tttendl; coutt$請(qǐng)從14中選擇$t; switch(t) case 1: /全部學(xué)生總成績(jī) all=0; for(j=0;jcount;j+) sj.sum=0; for(i=0;inumb;i+) sj.sum=sj.sum+s

33、j.marki; 的總成績(jī)?yōu)?sj.sumendl; all =all+sj.sum; cout全部學(xué)生的總成績(jī)?yōu)?allendl; break; case 2: /班上排名 int n,z,zf100; double t,pm100; for(j=0;jcount;j+) sj.sum=0; for(i=0;inumb;i+) sj.sum=sj.sum+sj.marki; pmj=sj.sum; zfj=j; cout班上排名為:n; for(j=0;jcount;j+) for(n=j+1;npmj) t=pmn; pmn=pmj; pmj=t; z=zfn; zfn=zfj; zfj=z; cout第j+1名總分為:pmjendl; break;case 3: /各科平均分cout請(qǐng)輸入要計(jì)算的科目:n;for(i=0;inumb;i+) if(i=(n-1) sbj=0;for(j=0;jcount;j

溫馨提示

  • 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)論