C++課程設(shè)計學(xué)生成績管理系統(tǒng)]_第1頁
C++課程設(shè)計學(xué)生成績管理系統(tǒng)]_第2頁
C++課程設(shè)計學(xué)生成績管理系統(tǒng)]_第3頁
C++課程設(shè)計學(xué)生成績管理系統(tǒng)]_第4頁
C++課程設(shè)計學(xué)生成績管理系統(tǒng)]_第5頁
免費預(yù)覽已結(jié)束,剩余20頁可下載查看

下載本文檔

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

文檔簡介

1、中南大學(xué)二。一二二。一三學(xué)年第二學(xué)期信息科學(xué)與工程學(xué)院C+班序設(shè)計語言課程設(shè)計報告課程名稱:C+福序設(shè)計語言班 級:電氣信息類1206班姓 名:期繼陽指導(dǎo)教師:王磊二0一三年零七月目錄1 .課程設(shè)計目的2 .系統(tǒng)描述(需求分析) 2.1 需要處理的基礎(chǔ)數(shù)據(jù) 2.2 系統(tǒng)的基本功能 2.3 可行性分析3 .功能模塊設(shè)計 3.1 類的分析與設(shè)計 3.1.1 Course 類3.1.2 Stu 類3.2 整體流程4 .豐要模塊的尊法說明 4.1 信息的保存和讀取 4.2 對信息白處理 4.2.1 數(shù)據(jù)的錄入和插入 4.2.2 數(shù)據(jù)的查詢4.2.3 數(shù)據(jù)的修改4.2.4 數(shù)據(jù)的刪除4.2.5 數(shù)據(jù)的排

2、序5 .程序運行結(jié)果 5.1 菜單歡迎界面 5.3 信息的顯示5.4 信息的查詢5.5 信息的修改5.6 信息的刪除5.7 按平均分降序排列 5.8 查看全部信息 5.9 輸出不及格學(xué)生信息 5.10 退出系統(tǒng)6 .課程設(shè)方f總結(jié)7 .參考文獻8 .附錄(源代碼)1 .課程設(shè)計目的1.1 使學(xué)生進一步理解和掌握課堂上所學(xué)各種基本抽象數(shù)據(jù)類型的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和操作實現(xiàn)算法,以 及它們在程序中的使用方法。1.2 使學(xué)生掌握軟件設(shè)計的基本內(nèi)容和設(shè)計方法,并培養(yǎng)學(xué)生進行規(guī)范化軟件設(shè)計的能力。1.3 使學(xué)生掌握使用各種計算機資料和有關(guān)參考資料,提高學(xué)生進行程序設(shè)計的基本能力。2 .系統(tǒng)描述(需求分析

3、)2.1 需要處理的基礎(chǔ)數(shù)據(jù)學(xué)生基本信息:如班級、學(xué)號、姓名、性別、年齡、宿舍號碼、電話號碼等。學(xué)生選修課程的基本信息:課程編號、課程名稱、考試成績、平時成績、綜合成績、學(xué)分、重修否等。2.2 系統(tǒng)的基本功能數(shù)據(jù)的錄入:如錄入學(xué)生的基本信息,以及該學(xué)生選修課程的基本信息;數(shù)據(jù)的修改:如修改指定學(xué)號、或者指定姓名的學(xué)生信息,或者修改其選修課程信息;數(shù)據(jù)的插入:插入某個學(xué)生信息數(shù)據(jù)的查詢:如按學(xué)號查詢、按姓名查詢等;數(shù)據(jù)的刪除:如刪除指定學(xué)號、或者指定姓名的學(xué)生及其選修課的信息; 平均成績的計算:計算每個學(xué)生各門功課的平均成績,并按平均成績從高到低的次序輸出學(xué)生信息;列出不及格學(xué)生清單(學(xué)號、姓名

4、、不及格的課程和成績)??紤]用文件把數(shù)據(jù)保存起來(可選)。2.3 可行性分析2.3.1 如上所示,該系統(tǒng)要求處理一些學(xué)生成績的基本數(shù)據(jù),包括兩個方面:學(xué)生身份信息和學(xué)生成績信息、。具體可以考慮創(chuàng)建兩個類,一個學(xué)生基本信息類,一個學(xué)科基本信息類。這樣既可以保持二者的獨立性,也可以使之相關(guān)聯(lián)。2.3.2 該系統(tǒng)不僅要求能錄入一些基本數(shù)據(jù)外,還要能對這些數(shù)據(jù)進行處理,比如修改,刪除,插入,查詢等。對這些操作的實現(xiàn)可以暫時放開面向?qū)ο螅捎妹嫦蜻^程的方法。另外,因為對數(shù)據(jù)庫了解不多,可以考慮用文件保存的形式將數(shù)據(jù)保存起來,最后在查找的時候采用文件讀取。3 .功能模塊設(shè)計3.1 類的分析與設(shè)計由上面的

5、需求分析可以知道,在本程序中,需要處理兩大類數(shù)據(jù):一個是學(xué)生的身份基本信息,另一 個是該同學(xué)的課程基本信息。而且要求二者既要相互聯(lián)系,又不能太相互制約。于是可以考慮創(chuàng)建兩個類: Stu類(學(xué)生信息類)和 Course類(課程信息類)。為了使二者相互關(guān)聯(lián),可以讓 Course的一個類對象作 為Stu對象的一個基本數(shù)據(jù)成員。具體如下:3.1.1 Course 類由于學(xué)生只需要一些課程信息,故在該類中只有一些基本的成員數(shù)據(jù),不涉及成員函數(shù)之類的對數(shù)據(jù)進 行操作的函數(shù)。把對學(xué)生信息進行處理的函數(shù)放在Stu類中。成員成員屬性訪問類型course_num數(shù)據(jù)成員publiccourse_name數(shù)據(jù)成員p

6、ublicregular_score數(shù)據(jù)成員publicFinal_score數(shù)據(jù)成員publicaverage_score數(shù)據(jù)成員publicstudy_score數(shù)據(jù)成員publicrebulid數(shù)據(jù)成員public由于這些數(shù)據(jù)信息是作為Stu類的一個信息的,為了使 stu類中的函數(shù)可以訪問這些成員數(shù)據(jù),故要將訪問類型定義為 public型。3.1.2 Stu 類正如上面所述,Course類的一個對象作為 Stu類的一個數(shù)據(jù)成員,但是正常情況下,一個同學(xué)是不只一 門科目的,所以要定義一個Course類的數(shù)組來存放同一學(xué)生的不同科目信息Course course20。為了其信息的隱蔽性,我們

7、把所有的數(shù)據(jù)成員都聲明為private。接下來,要處理的就是函數(shù)了。有兩種處理方式,但到底是采用成員函數(shù)還是采用友元函數(shù)呢?在本 例中,我采用的是友元函數(shù)。原因如下:(1)采用友元函數(shù),可以使類的結(jié)構(gòu)變得更加簡單,有助于整個設(shè)計過程的思考。(2)使用友元函數(shù),將函數(shù)獨立于類的結(jié)構(gòu)之外而采用類對象傳參的方式,可以使該函數(shù)的獨立性大 大提高,有助于在其他地方的使用。具體如下:成員成員屬性訪問類型Class_num數(shù)據(jù)成員privatenum數(shù)據(jù)成員privatename數(shù)據(jù)成員privatesex數(shù)據(jù)成員privateage數(shù)據(jù)成員privateroom數(shù)據(jù)成員privatetel數(shù)據(jù)成員priv

8、ateaverage數(shù)據(jù)成員privateNum_of_course數(shù)據(jù)成員privateorder數(shù)據(jù)成員privateCourse20數(shù)據(jù)成員private友元函數(shù):Input( Stu stud)輸入學(xué)生信息Statistic( Stu stud口)學(xué)生信息輸出Lookup( Stu stud)查找學(xué)生信息Modi伙 Stu stud)修改學(xué)生信息Delete( Stu stud口)刪除學(xué)生信息Output( Stu stud口)輸出全部信息Sort( Stu stud)對學(xué)生進行排序Insert( Stu stud口)插入學(xué)生信息Showfail( Stu stud)查找/、及格學(xué)生W

9、rite( Stu stud口)文件寫入函數(shù)Read( Stu stud口)文件讀取函數(shù)void menu()菜單函數(shù),以供選擇3.2 整體流程上面已經(jīng)主要分開介紹了兩個獨立的類及其內(nèi)部成員,現(xiàn)在來介紹整個學(xué)生系統(tǒng)功能實現(xiàn)的流程。個文件中,當需要使用這些數(shù)據(jù)時,例如查詢,修改,顯示等,再將需要的讀取出來進行相關(guān)的操作4.2對信息的處理4.2.1 數(shù)據(jù)的錄入和插入數(shù)據(jù)的錄入和插入基本一樣,這里只介紹錄入。當在主菜單里選擇信息錄入時,會跳出錄入頁面,只需依次輸入提示的信息即可。在整個大體框架上, 采用一個 while語句判斷是否繼續(xù)錄入。注意在錄入學(xué)生成績信息時。需要輸入要登記的課程數(shù)目。其中成

10、績信息的各科綜合成績和是否重修不需要手動錄入,它會在登記完平時成績和末考成績后自動生成。當所有 信息錄入完成后,該生所有科目的平均成績average也會自動計算。4.2.2 數(shù)據(jù)的查詢所謂數(shù)據(jù)的查詢,就是把存放在文檔中的學(xué)生數(shù)據(jù)讀取出來并加以輸出。當只針對某個人的查詢時,需要輸入學(xué)號或姓名,再調(diào)用read ()函數(shù)將相關(guān)的數(shù)據(jù)讀取出來,至于需要輸出哪些,可以自己控制。當要輸出所有學(xué)生的數(shù)據(jù)是時,首先調(diào)用read ()函數(shù)返回數(shù)據(jù)的個數(shù) count,即學(xué)生的個數(shù)。最后采用for循環(huán)控制依次輸出每一個學(xué)生的信息。4.2.3 數(shù)據(jù)的修改當修改數(shù)據(jù)時,只需輸入需要修改學(xué)生的學(xué)號即可。首先會將該生的相關(guān)

11、信息輸出出來。然后再提示 重新輸入信息。執(zhí)行到這里時基本就和前面的數(shù)據(jù)錄入,插入一樣了。本例中,對數(shù)據(jù)的刪除比較簡單。只需輸入學(xué)號或姓名,當查找到該生的相關(guān)信息后。將后面一個學(xué)生 的信息賦值給他,相當于該生的信息被覆蓋,也就是刪除。4.2.5 數(shù)據(jù)的排序在需求分析中,有一項功能,按學(xué)生成績平均分降序排列。此功能還是比較好實現(xiàn)的。在輸入學(xué)生數(shù)據(jù)時,當所有課程分數(shù)輸入完畢,會自動生成一個平均分,該數(shù)值就是學(xué)生類Stu中的average數(shù)據(jù)成員。然后采用冒泡法比較大小,把這些學(xué)生的數(shù)據(jù)重新排列,最后再依次輸出。5.程序運行結(jié)果率東*#*京索* /*;4:左*京*31u|c * s|c * *.* *

12、 * *C * l|c * * 率京求*章*率*£*聿*率*事*本* * 率本率常率率本率率案率軍率率率*1"*木* *本* 左*率事*£ *率本*聿*本*事 率*率*率*率率*宰率歡迎使用學(xué)生成績管理系統(tǒng) *宰*率*率*宰隼本窄京本卓*本* *率*率* 4=*聿*請輸入您的選擇(。一 9):5.1 菜單歡迎界面L輸入學(xué)生成績2 .顯示統(tǒng)計數(shù)據(jù)3 .查找統(tǒng)計成績4 .修改學(xué)生成績5 .刪除學(xué)生成績6 .插入學(xué)生成績7 .按平均分降序排列8 .顯示學(xué)生詳細信息9 .顯示不及格學(xué)生信息0.安全退出系統(tǒng)5.2信息的錄入如上所示,依次輸入需要填寫的信息,其中“該門課的綜合

13、成績”和“是否重修”是不需要輸入,系統(tǒng) 自動執(zhí)行的。最后還會提示是否繼續(xù)填寫(YN)。5.3 信息的顯示在這個功能里面主要顯示全部同學(xué)的身份信息和平均分:5.4 信息的查詢信息的查詢分兩種方式:當你選擇1 時,表示按學(xué)號查詢,當你選擇2 時,表示按姓名查詢。下面介紹的是按學(xué)號查詢。如上所示,當輸入需要查詢的同學(xué)的學(xué)號時,會輸出該同學(xué)的身份信息以及每一門課的綜合成績,還有這些 課的平均成績。5.5 信息的修改當輸入需要修改的學(xué)生學(xué)號時,會首先輸出該同學(xué)現(xiàn)在的已經(jīng)存在的信息:然后提示重新輸入:輸入完成后,會提示是否保存:5.6 信息的刪除信息的刪除也分兩種類型:選擇不同的方式,進入不同的界面按姓名

14、刪除按學(xué)號刪除5.7 按平均分降序排列會輸出學(xué)生的一些基本信息和平均分與名次。5.8 查看全部信息由于一個同學(xué)的全部信息較多,于是分成兩部分輸出:身份信息和成績信息在身份信息中,主要包括班級,學(xué)號,姓名,年齡,性別,宿舍,電話等。在成績信息中,包括該同學(xué)的各 科成績,是否重修,獲得的學(xué)分,以及所有科目的平均分。5.9 輸出不及格學(xué)生信息當選擇該功能時,首先會輸出該同學(xué)的學(xué)號,姓名和班級,然后再輸出他的不及格科目以及分數(shù),如下所示。5.10 退出系統(tǒng)6.課程設(shè)計總結(jié)( 1 ) 回顧此次課程設(shè)計,感慨良多,從剛拿到題目時的一臉茫然,到最后能成功解決,覺得此次課程設(shè)計我又學(xué)到了好多知識。首先在這里要

15、感謝一下王磊指導(dǎo)老師,經(jīng)過他的細心講解,我才有了一個完整的 設(shè)計思路。(2)在這次課程設(shè)計的過程中,最大的感覺就是對知識的不熟悉,一些C+煌礎(chǔ)知識似懂非懂,結(jié)果總要去查書才能寫出不出錯誤的代碼,結(jié)構(gòu)就是耗費了大量的時間,事倍功半。經(jīng)歷這次教訓(xùn),我想會對我 以后的計算機語言學(xué)習起到一定的幫助。(3)在這次的課程設(shè)計過程中,通過查書的學(xué)習,對C+的了解又加深了不少,包括類的結(jié)構(gòu),以及怎樣在類外訪問類類的私有成員等,我想下次再寫基于對象的程序時,一定會得心應(yīng)手。( 4) 還有比較重要的收獲就是類的相互嵌套使用,就拿本例來說,在一個類中設(shè)置一個數(shù)據(jù)成員,而該數(shù)據(jù)成員確是另一個類的對象。這對理解數(shù)據(jù)類型

16、起到了不少的作用。(5) ?總的來說,這次程序設(shè)計讓我獲益匪淺,對C+語言也有了進一步的認識:語言功能高、表達能力強、使用靈活方便、目標程序效率高等等。C+語言是在國內(nèi)外廣泛使用的一種計算機語言,相信除了以上優(yōu)點,還有許多我們還未發(fā)現(xiàn),希望能在以后的學(xué)習中有更深入的認識。7.參考文獻(1) C+程序設(shè)計(第二版)譚浩強 編著(2) visual C+從入門到精通明日科技 編著(3) C+編程思想(美)??藸?編著 劉宗田 譯.附錄(源代碼)#include <iostream>#include <fstream>#include <stdlib.h>/ 后面

17、的 exit 函數(shù)和 syetem 函數(shù)要用#include <string>using namespace std;class Course /定義一個課程信息類public:int course_num; / 課程編號 string course_name;/ 課程名稱 float regular_score;/ 平時成績 float final_score;/ 末考成績 float average_score;/ 綜合成績 float study_score;/ 學(xué)分 string rebulid;/ 是否重修;class Stu/ 把對類的私有成員的處理函數(shù)全部定義為友元函

18、數(shù)public:friend void Input(Stu stud) ;friend void Statistic(Stu stud);/ friend void Lookup(Stu stud) ;friend void Modify(Stu stud) ; friend void Delete(Stu stud) ; friend void Output(Stu stud) ;friend void Sort(Stu stud) ; friend void Insert(Stu stud) ;/ 學(xué)生成績錄入函數(shù)學(xué)生信息輸出函數(shù)/ 學(xué)生成績查找函數(shù)/ 學(xué)生成績修改函數(shù)/ 學(xué)生信息刪除函數(shù)

19、/ 學(xué)生全部信息輸出函數(shù) / 學(xué)生成績排序函數(shù) / 學(xué)生成績插入函數(shù)friend void Write(Stu stud,int n);/friend int Read(Stu stud);friend void Showfail(Stu stud);private:int class_num; / 班級號碼int num;/ 學(xué)號string name;/ 姓名int age;/ 年齡char sex;/ 性別int room;/ 宿舍string tel;/ 電話float average;/ 所有課程平均分int num_of_course;/ 課程數(shù)目int order;/ 名次Cou

20、rse course20;/ 課程信息數(shù)組學(xué)生成績寫入檔案函數(shù)/學(xué)生成績信息讀取函數(shù)/ 查找不及格學(xué)生;void Write(Stu stud,int n)fstream myFile;if(!myFile)exit(1);int count=n;myFile<<count<<endl<<endl;/ 定義一個文件輸入輸出類/ 文件寫入函數(shù)for(int i=0; i<count; i+)myFile<<studi.class_num<<" "<<studi.num<<" &

21、quot;<<<<" "<<studi.age<<" "<<studi.sex<<" "<<studi.room<<" "<<studi.tel<<" "<<studi.num_of_course<<" "<<studi.average<<" "<<endl;

22、for(int j=0; j<studi.num_of_course; j+)myFile<<studi.coursej.course_num<<""<<studi.coursej.course_name<<""<<studi.coursej.regular_score<<""<<studi.coursej.final_score<<""<<studi.coursej.average_score<

23、<""<<studi.coursej.study_score<<" "<<studi.coursej.rebulid<<endl;myFile.close();int Read(Stu stud)/文件讀取函數(shù)fstream myFile;if(!myFile)exit(1);int count;myFile.seekg(0);myFile>>count;for(int i=0; i<count; i+)myFile>>studi.class_num>>stu

24、di.num>>>>studi.age>>studi.sex>>studi.room>>studi.tel>>stud i.num_of_course>>studi.average;for(int j=0; j<studi.num_of_course; j+)myFile>>studi.coursej.course_num>>studi.coursej.course_name>>studi.coursej.regular_score>>s

25、tudi.coursej.final_score>>studi.coursej.average_score>>studi.coursej.study_score>>studi.coursej.rebu lid;myFile.close();return count ;/函數(shù)返回一個查詢出來的數(shù)值void Input(Stu stud)/ 學(xué)生成績錄入函授system("cls"); /調(diào)用系統(tǒng)命令cls,清除屏幕int i=0;/ int num;char sign;cout<<endl<<"=>&

26、gt; 請輸入學(xué)生成績<<="<<endl;while(sign!='n'&&sign!='N') cout<<"班級:"cin>>studi.class_num;loop:/loop循環(huán),VB中的循環(huán)cout<<"學(xué)號:"cin>>studi.num;int c=0;while(c<i) c+;if(studi.num=studi-c.num) cout<<"你輸入的學(xué)號已經(jīng)存在!請重新輸入。&q

27、uot;<<endl;goto loop;)cout<<"姓名:"cin>>;cout<<"年齡:"cin>>studi.age;cout<<"性別:";cin>>studi.sex;cout<<"宿舍:"cin>>studi.room;cout<<"電話:";cin>>studi.tel;cout<<"請輸入需要登記的學(xué)科

28、數(shù)目:"cin>>studi.num_of_course;int j;float sum=0;for(j=0; j<studi.num_of_course; j+) cout<<"請登記第"<<j+1<<"門課的信息:"<<endl;cout<<"課程編號:"cin>>studi.coursej.course_num;cout<<"課程名稱:"cin>>studi.coursej.course

29、_name;cout<<"平時成績:"cin>>studi.coursej.regular_score;cout<<"末考成績:"cin>>studi.coursej.final_score;cout<<"學(xué)分:"cin>>studi.coursej.study_score;studi.coursej.average_score=studi.coursej.regular_score*0.3+studi.coursej.final_score*0.7; cout&

30、lt;<"該門課的綜合成績是:"<<studi.coursej.average_score<<endl;if(studi.coursej.average_score<60) studi.coursej.rebulid="是"; elsestudi.coursej.rebulid="否";cout<<"是否重修:"<<studi.coursej.rebulid<<endl;sum=sum+studi.coursej.average_score;

31、studi.average=sum/studi.num_of_course; cout<<"該學(xué)生這幾門課的平均分為:"<<studi.average<<endl;cout<<"=>提示:是否繼續(xù)寫入學(xué)生成績?(Y/N)"cin>>sign; i+; Write(stud,i); /調(diào)用文件寫入函數(shù),把信息寫入文件 void Statistic(Stu stud)/學(xué)生成績數(shù)據(jù)輸出函數(shù)system("cls");int n=Read(stud);cout<<

32、"班級"<<"t"<<"學(xué)號"<<"t"<<"姓名"<<"t"<<"年齡"<<"t"<<"性別"<<"t"<<"宿舍"<<"t"<<"電話 "<<"tt"<&

33、lt;"平均成績"<<endl;for(int i=0; i<n; i+)cout<<studi.class_num<<"t"<<studi.num<<"t"<<<<"t"<<studi.age<<"t"<<studi.sex<<"t"<<st udi.room<<"t"<

34、;<studi.tel<<"t"<<studi.average<<endl;system("pause"); void Lookup(Stu stud) /學(xué)生成績查找函數(shù) system("cls");int n=Read(stud);int s1;string s2;int i=0;int choose;cout<<"請輸入查詢方式:"<<endl<<endl;cout<<"> 按學(xué)號查詢:1<&quo

35、t;<<endl;cout<<"> 按姓名查詢:2<"<<endl;doII.cout<<"請輸入您的選擇: cin>>choose;while(choose!=1)&&(choose!=2);switch(choose)(case 1:system("cls");cout<<endl<<"=>> 查找學(xué)生成績<<="<<endl;cout<<"請輸入需要查

36、找學(xué)生的學(xué)號:"<<endl;cin>>s1;while(studi.num-s1)!=0&&i<n) i+;if(i=n)(cout<<"=>提示:對不起,無法找到該學(xué)生的信息! "<<endl; else(cout<<""<<endl;cout<<"班級:"<<studi.class_num<<endl;cout<<"學(xué)號:"<<studi.n

37、um<<endl;cout<<"姓名:"<<<<endl;cout<<"年齡:"<<studi.age<<endl;cout<<"性別:"<<studi.sex<<endl;cout<<"宿舍:"<<studi.room<<endl;cout<<"電話:"<<studi.tel<<end

38、l;for(int j=0; j<studi.num_of_course; j+) (cout<<studi.coursej.course_name<<":"cout<<studi.coursej.average_score<<endl;cout<<"平均分:"<<studi.average<<endl; break;case 2:system("cls");cout<<endl<<"=>> 查找學(xué)生

39、成績<<="<<endl;cout<<"請輸入需要查找學(xué)生的姓名:"<<endl;cin>>s2;int flag=0;for(i=0; i<n; i+) (if(=s2)(cout<<""<<endl;cout<<"班級:"<<studi.class_num<<endl;cout<<"學(xué)號:"<<studi.num<<end

40、l;cout<<"姓名:"<<<<endl;cout<<"年齡:"<<studi.age<<endl;cout<<"性別:"<<studi.sex<<endl;cout<<"宿舍:"<<studi.room<<endl;cout<<"電話:"<<studi.tel<<endl;for(int j=0

41、; j<studi.num_of_course; j+) (cout<<studi.coursej.course_name<<":"cout<<studi.coursej.average_score<<endl; cout<<"平均分:"<<studi.average<<endl; flag=1; break; if(flag=0)cout<<"=>提示:對不起,無法找到該學(xué)生的信息!"<<endl; void Mo

42、dify(Stu stud)/學(xué)生成績修改函數(shù)( system("cls"); int n=Read(stud); int s; int i=0; cout<<endl<<"=>> 修改學(xué)生成績 <<="<<endl; cout<<"請輸入需要修改成績學(xué)生的學(xué)號:"<<endl;cin>>s; while(studi.num-s)!=0&&i<n) i+; if(i=n) (cout<<"=>

43、;提示:對不起,無該學(xué)生的成績 "<<endl; else (cout<<"該學(xué)生的信息 "<<endl;cout<<"班級"<<"t"<<"學(xué)號"<<"t"<<"姓名"<<"t"<<"年齡"<<"t"<<"性別"<<"t&

44、quot;<<"宿舍"<<"t"<<"電 iB"<<endl;cout<<""<<endl;cout<<studi.class_num<<"t"<<studi.num<<"t"<<<<"t"<<studi.age<<"t"<<studi.s

45、ex<<"t"<<st udi.room<<"t"<<studi.tel<<endl;for(int j=0; j<studi.num_of_course; j+)(cout<<studi.coursej.course_name<<":"cout<<studi.coursej.average_score<<endl;cout<<"平均分:"<<studi.average<&

46、lt;endl;cout<<" 請重新輸入該學(xué)生的信息"<<endl;cout<<" 班級 :"<<endl;cin>>studi.class_num;cout<<" 學(xué)號:"<<endl;cin>>studi.num;cout<<" 姓名:"<<endl;cin>>;cout<<" 年齡:"<<endl;cin>&

47、gt;studi.age;cout<<" 性別:"<<endl;cin>>studi.sex;cout<<" 宿舍:"<<endl;cin>>studi.room;cout<<" 電話:"<<endl;cin>>studi.tel;cout<<" 請輸入需要登記的學(xué)科數(shù)目:"cin>>studi.num_of_course;int j;float sum=0;for(j=0; j<

48、;studi.num_of_course; j+)cout<<" 請登記第"<<j+1<<" 門課的信息:"<<endl;cout<<" 課程編號:"cin>>studi.coursej.course_num;cout<<" 課程名稱:"cin>>studi.coursej.course_name;cout<<" 平時成績:"cin>>studi.coursej.regular

49、_score;cout<<" 末考成績:"cin>>studi.coursej.final_score;cout<<" 學(xué)分: "cin>>studi.coursej.study_score;studi.coursej.average_score=studi.coursej.regular_score*0.3+studi.coursej.final_score*0.7;cout<<" 該門課的綜合成績是:"<<studi.coursej.average_score

50、<<endl;if(studi.coursej.average_score<60)studi.coursej.rebulid=" 是"elsestudi.coursej.rebulid=" 否"cout<<" 是否重修:"<<studi.coursej.rebulid<<endl;sum=sum+studi.coursej.average_score;studi.average=sum/studi.num_of_course;cout<<" 該學(xué)生這幾門課的平

51、均分為:"<<studi.average<<endl;char c;cout<<" 是否保存數(shù)據(jù)?(y/n)"<<endl;cin>>c;if(c!='n'&&c!='N') Write(stud,n); ) ) void Delete(Stu stud)/刪除學(xué)生信息函數(shù)( system("cls"); int s1; string s2; int n=Read(stud); int i=0,j; char sign;cout<&

52、lt;"請選擇刪除學(xué)生信息的方式"<<endl<<endl;cout<<"-> 按學(xué)號刪除1<"<<endl;cout<<"-> 按姓名刪除2<"<<endl;int choose; do ( cout<<"請輸入您的選擇:" cin>>choose;while(choose!=1)&&(choose!=2); switch(choose) ( case 1:system(&quo

53、t;cls");cout<<endl<<"=>> 刪除學(xué)生成績<<="<<endl;while(sign!='n'&&sign!='N') ( cout<<"請輸入需要刪除學(xué)生的學(xué)號:“<<endl;cin>>s1;while(studi.num-s1)!=0&&i<n) i+;/這種結(jié)構(gòu)形式?jīng)Q定一次只能刪除一個學(xué)生if(i=n) (cout<<"=>提示:對不起

54、,無法找到該學(xué)生 "<<endl; else (for(j=i; j<n-1; j+) (studj=studj+1; cout<<"=> 提示:已成功刪除!"<<endl; n-;cout<<"=>提示:是否繼續(xù)刪除學(xué)生信息? ( Y/N)" cin>>sign;)Write(stud,n);break;case 2:system ("cis");int flag=O;cout«endl«"=» 刪除學(xué)生成

55、績«="«endl;while(sign!="n'&&sign!="N') (coutw"請輸入需要刪除學(xué)生的姓名:"«endl;cin»s2;for(i; in; i+) (if(=s2) (/ studi=studi+1; for(j=i;jn-1;j+) (studj=studj+1;) coutv"=提示:已成功刪除!"«endl;flag=1; break; ) if(flag=O) ("«en

56、dl;COUtvv"=提示:對不起,無法找到該學(xué)生break;)n-;coutv"=提示:是否繼續(xù)刪除學(xué)生信息? ( Y/N) cin»sign; )Write(stud,n); break; ) ) void lnsert(Stu stud)/學(xué)生信息插入函數(shù)system ("cis");int flag;int n=Read(stud);char s;cout«endl«"=» 增力口學(xué)生成績 «="«endl; while(s!="n"&&a

57、mp;s!="N')cout<<" 班級 :" cin>>studn.class_num; cout<<" 學(xué)號:"cin>>studn.num;cout<<" 姓名:"cin>>;cout<<" 年齡:"cin>>studn.age;cout<<" 性別:"cin>>studn.sex;cout<<" 宿舍:&quo

58、t;cin>>studn.room;cout<<" 電話:"cin>>studn.tel;cout<<" 請輸入需要登記的學(xué)科數(shù)目:"cin>>studn.num_of_course;int j;float sum=0;for(j=0; j<studn.num_of_course; j+) cout<<" 請登記第"<<j+1<<" 門課的信息:"<<endl;cout<<" 課程

59、編號:"cin>>studn.coursej.course_num;cout<<" 課程名稱:"cin>>studn.coursej.course_name;cout<<" 平時成績:"cin>>studn.coursej.regular_score;cout<<" 末考成績:"cin>>studn.coursej.final_score;cout<<" 學(xué)分: "cin>>studn.course

60、j.study_score;studn.coursej.average_score=studn.coursej.regular_score*0.3+studn.coursej.final_score*0.7; cout<<" 該門課的綜合成績是:"<<studn.coursej.average_score<<endl;if(studn.coursej.average_score<60)studn.coursej.rebulid=" 是 " else studn.coursej.rebulid=" 否 &

61、quot; cout<<" 是否重修:"<<studn.coursej.rebulid<<endl;sum=sum+studn.coursej.average_score;studn.average=sum/studn.num_of_course;cout<<" 該學(xué)生這幾門課的平均分為:"<<studn.average<<endl;n+;cout<<"> 提示:插入成功!"<<endl;cout<<"是否繼續(xù)輸

62、入(y/n)"<<endl; cin>>s;) Write(stud,n);) void Sort(Stu stud)/學(xué)生成績排序函數(shù)( system("cls"); int i,j,k; float s; char t20;cout<<endl<<"=>> 降序排序成績<<="<<endl;int n=Read(stud); for(i=0; i<n-1; i+) for(j=0; j<n-1-i; j+)if(studj.average<

63、studj+1.average)/采用冒泡法比較大小,即相鄰兩個數(shù)比較,把大的放在前面(Stu temp;temp=studj;studj=studj+1; studj+1=temp; )cout<<""<<endl;cout<<"班級"<<"t"<<"學(xué)號"<<"t"<<"姓名"<<"t"<<"年齡"<<"

64、t"<<"性別"<<"t"<<"宿舍"<<"t"<<"電話 "<<"tt"<<"平均分"<<"t"<<"名次"<<endl;cout<<""<<endl;for(i=0; i<n; i+) (studi.order=i+1;cout<

65、<studi.class_num<<"t"<<studi.num<<"t"<<<<"t"<<studi.age<<"t"<<studi.sex<<"t "<<studi.room<<"t"<<studi.tel<<"t"<<studi.average<<

66、"t"<<studi.order<<endl; ) Write(stud,n); ) void Output(Stu stud)/輸出全部學(xué)生成績( system("cls"); int n=Read(stud); cout<<endl<<"=>> 顯示全部學(xué)生成績<<="<<endl;if(!stud) cout<<"沒有記錄" else (for(int i=0; i<n; i+)cout<<&qu

67、ot;"<<endl;cout<<"身份信息:"<<endl;cout<<"班級"<<"t"<<"學(xué)號"<<"t"<<"姓名"<<"t"<<"年齡"<<"t"<<"性別"<<"t"<<"宿 舍

68、 "<<"t"<<"電話"<<endl;cout<<studi.class_num<<"t"<<studi.num<<"t"<<<<"t"<<studi.age<<"t"<<studi.sex<<"t"<<st udi.room<<"t"<<studi.tel<<endl;cout<<"成績信息:"<<endl;for(int j=0; j<studi.num_of_course; j+)(cout<<studi.coursej.course_name<<"t"<<"重修? "<<"t"<<"學(xué)分"<<&

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論