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頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、中南大學(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ù)的排序 5程序運行結(jié)果 5.1菜單歡迎界面 5.3信息的顯示5.4信息的

2、查詢5.5信息的修改5.6信息的刪除5.7按平均分降序排列 5.8查看全部信息 5.9輸出不及格學(xué)生信息 5.10退出系統(tǒng)6.課程設(shè)計總結(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)描述(需求分析)2.1需要處理的基礎(chǔ)數(shù)據(jù)學(xué)生基本信息:如班級、學(xué)號、姓名、性別、年齡、宿舍號碼、電話號碼等。學(xué)生選修課程的基

3、本信息:課程編號、課程名稱、考試成績、平時成績、綜合成績、學(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é)號、姓名、不及格的課程和成績)。 考慮用文件把數(shù)據(jù)保存起來(可選)。2.3 可行性分析2.3.1 如上所示,該系統(tǒng)

4、要求處理一些學(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è)計由上面的需求分析可以知道,在本程序中,需要處理兩大類數(shù)據(jù):一個是學(xué)生的身份基本信息,另 一個是該同學(xué)的

5、課程基本信息。而且要求二者既要相互聯(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ù)成員publicregular score數(shù)據(jù)成員publicFin al score數(shù)據(jù)成員

6、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。為了其信息的隱蔽性,我們把所有的數(shù)據(jù)成員都聲明為private。接下來,要處理的就是函數(shù)了。有兩種處理方式,但到底

7、是采用成員函數(shù)還是采用友元函數(shù)呢?在 本例中,我采用的是友元函數(shù)。原因如下:(1)采用友元函數(shù),可以使類的結(jié)構(gòu)變得更加簡單,有助于整個設(shè)計過程的思考。(2)使用友元函數(shù),將函數(shù)獨立于類的結(jié)構(gòu)之外而采用類對象傳參的方式,可以使該函數(shù)的獨立 性大大提高,有助于在其他地方的使用。具體如下:成員成員屬性訪冋類型Class num數(shù)據(jù)成員privatenum數(shù)據(jù)成員privaten ame數(shù)據(jù)成員privatesex數(shù)據(jù)成員privateage數(shù)據(jù)成員privateroom數(shù)據(jù)成員privatetel數(shù)據(jù)成員privateaverage數(shù)據(jù)成員privateNum of course數(shù)據(jù)成員privat

8、eorder數(shù)據(jù)成員privateCourse20數(shù)據(jù)成員private友元函數(shù):In put( Stu stud)輸入學(xué)生信息Statistic( Stu stud)學(xué)生信息輸出Lookup( Stu stud)查找學(xué)生信息Modify( Stu stud)修改學(xué)生信息Delete( Stu stud)刪除學(xué)生信息Output( Stu stud)輸出全部信息Sort( Stu stud)對學(xué)生進行排序In sert( Stu stud)插入學(xué)生信息Showfail( Stu stud)查找不及格學(xué)生Write( Stu stud)文件寫入函數(shù)Read( Stu stud)文件讀取函數(shù)voi

9、d menu()菜單函數(shù),以供選擇3.2整體流程上面已經(jīng)主要分開介紹了兩個獨立的類及其內(nèi)部成員,查詢刪除顯示不及格顯示全部_主菜單函數(shù)Switch語句選擇 排序查看學(xué)生成績4主要模塊的算法說明4.1信息的保存和賣取輸入 修改 插入文件保存現(xiàn)在來介紹整個學(xué)生系統(tǒng)功能實現(xiàn)的流程。在本次課程設(shè)計中,因為還沒有接觸到數(shù)據(jù)庫的有關(guān)知識,故采用文件流來寫入和讀取信息。主要 涉及到fstream類。在系統(tǒng)運行過程中,會利用該類將學(xué)生的基本身份信息和基本課程信息全部存到自定義的一個文件中,當需要使用這些數(shù)據(jù)時,例如查詢,修改,顯示等,再將需要的讀取出來進行相關(guān) 的操作。4.2 對信息的處理4.2.1 數(shù)據(jù)的錄

10、入和插入數(shù)據(jù)的錄入和插入基本一樣,這里只介紹錄入。當在主菜單里選擇信息錄入時,會跳出錄入頁面,只需依次輸入提示的信息即可。在整個大體框架 上, 采用一個 while 語句判斷是否繼續(xù)錄入。 注意在錄入學(xué)生成績信息時。 需要輸入要登記的課程數(shù)目。 其中成績信息的各科綜合成績和是否重修不需要手動錄入, 它會在登記完平時成績和末考成績后自動生 成。當所有信息錄入完成后,該生所有科目的平均成績 average 也會自動計算。4.2.2 數(shù)據(jù)的查詢所謂數(shù)據(jù)的查詢,就是把存放在文檔中的學(xué)生數(shù)據(jù)讀取出來并加以輸出。當只針對某個人的查詢時,需要輸入學(xué)號或姓名,再調(diào)用read ()函數(shù)將相關(guān)的數(shù)據(jù)讀取出來,至于

11、需要輸出哪些,可以自己控制。當要輸出所有學(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)信息輸出出來。然后再提 示重新輸入信息。執(zhí)行到這里時基本就和前面的數(shù)據(jù)錄入,插入一樣了。4.2.4 數(shù)據(jù)的刪除本例中,對數(shù)據(jù)的刪除比較簡單。只需輸入學(xué)號或姓名,當查找到該生的相關(guān)信息后。將后面一個 學(xué)生的信息賦值給他,相當于該生的信息被覆蓋,也就是刪除。4.2.5 數(shù)據(jù)的排序在需求分析中,有一項功能,按學(xué)生成績平均分降序排列。此功能還是

12、比較好實現(xiàn)的。 在輸入學(xué)生數(shù)據(jù)時,當所有課程分數(shù)輸入完畢,會自動生成一個平均分,該數(shù)值就是學(xué)生類Stu 中的average 數(shù)據(jù)成員。然后采用冒泡法比較大小,把這些學(xué)生的數(shù)據(jù)重新排列,最后再依次輸出。5. 程序運行結(jié)果5.1采單歡迎界面1 h SkjdL|J帝 *水* 詰*#*# * 球 !*lfc*ijc* * 牢 * 寧 * 窣*京*朿* *來;:卞*責 *皓*字卓* 眾*宰寧*宰*宰率*率* * 竊冷* 琲半宰家*卒*宰學(xué)*半*+* 歡迎使用學(xué)生成績管理系統(tǒng) * *宰字* * 章眾請輸入您的選擇(0-9):1 一輸入學(xué)生成績2. 顯示統(tǒng)計數(shù)搖3. 查找統(tǒng)計成績4. 修改學(xué)生成績5. 刪除

13、學(xué)生成績6. 插入學(xué)生成績7. 按平均分澤序排列8. 顯示學(xué)生詳細信息9. 顯示不及格學(xué)生信息0.安全退出系統(tǒng)5.2信息的錄入如上所示,依次輸入需要填寫的信息,其中“該門課的綜合成績”和“是否重修”是不需要輸入,系統(tǒng)自動執(zhí)行的。最后還會提示是否繼續(xù)填寫(YN)。5.3信息的顯示在這個功能里面主要顯示全部同學(xué)的身份信息和平均分:5.4信息的查詢信息的查詢分兩種方式:當你選擇1時,表示按學(xué)號查詢,當你選擇2時,表示按姓名查詢。下面介紹的是按學(xué)號查詢。如上所示,當輸入需要查詢的同學(xué)的學(xué)號時,會輸出該同學(xué)的身份信息以及每一門課的綜合成績,還有 這些課的平均成績。5.5信息的修改當輸入需要修改的學(xué)生學(xué)號

14、時,會首先輸出該同學(xué)現(xiàn)在的已經(jīng)存在的信息: 然后提示重新輸入:輸入完成后,會提示是否保存:5.6 信息的刪除信息的刪除也分兩種類型: 選擇不同的方式,進入不同的界面 按姓名刪除按學(xué)號刪除5.7 按平均分降序排列會輸出學(xué)生的一些基本信息和平均分與名次。5.8 查看全部信息由于一個同學(xué)的全部信息較多,于是分成兩部分輸出:身份信息和成績信息 在身份信息中,主要包括班級,學(xué)號,姓名,年齡,性別,宿舍,電話等。在成績信息中,包括該同學(xué) 的各科成績,是否重修,獲得的學(xué)分,以及所有科目的平均分。5.9 輸出不及格學(xué)生信息當選擇該功能時,首先會輸出該同學(xué)的學(xué)號,姓名和班級,然后再輸出他的不及格科目以及分數(shù),如

15、 下所示。5.10 退出系統(tǒng)6. 課程設(shè)計總結(jié)(1) 回顧此次課程設(shè)計,感慨良多,從剛拿到題目時的一臉茫然,到最后能成功解 決,覺得此次課程設(shè)計我又學(xué)到了好多知識。 首先在這里要感謝一下王磊指導(dǎo)老 師,經(jīng)過他的細心講解,我才有了一個完整的設(shè)計思路。(2) 在這次課程設(shè)計的過程中,最大的感覺就是對知識的不熟悉,一些C+基礎(chǔ)知識似懂非懂, 結(jié)果總要去查書才能寫出不出錯誤的代碼, 結(jié)構(gòu)就是耗費了大量的時間,事倍功半。 經(jīng)歷這次教訓(xùn), 我想會對我以后的計算機語言學(xué)習(xí)起到一定的 幫助。(3) 在這次的課程設(shè)計過程中,通過查書的學(xué)習(xí),對C+勺了解又加深了不少,包括類的結(jié)構(gòu), 以及怎樣在類外訪問類類的私有成

16、員等, 我想下次再寫基于對象的 程序時,一定會得心應(yīng)手。( 4)還有比較重要的收獲就是類的相互嵌套使用,就拿本例來說,在一個類中設(shè)置 一個數(shù)據(jù)成員, 而該數(shù)據(jù)成員確是另一個類的對象。 這對理解數(shù)據(jù)類型起到了不 少的作用。(5)?總的來說,這次程序設(shè)計讓我獲益匪淺,對C+吾言也有了進一步的認識:語言功能高、表達能力強、使用靈活方便、目標程序效率高等等。C+吾言是在國內(nèi)外廣泛使用的一種計算機吾言, 相信除了以上優(yōu)點, 還有許多我們還未發(fā)現(xiàn), 希望能在以后的學(xué)習(xí)中有更深入的認識。7. 參考文獻(1) C+程序設(shè)計(第二版)譚浩強 編著(2) visual C+從入門到精通明日科技 編著(3) C+編

17、程思想(美)??藸?編著 劉宗田 譯.附錄(源代碼)#include #include #include / 后面的 exit 函數(shù)和 syetem 函數(shù)要用#include 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;/

18、是否重修;class Stu/ 把對類的私有成員的處理函數(shù)全部定義為友元函數(shù) public:friend void Input(Stu stud) ;/ 學(xué)生成績錄入函數(shù)friend void Statistic(Stu stud);/ 學(xué)生信息輸出函數(shù) friend void Lookup(Stu stud) ; / 學(xué)生成績查找函數(shù) friend void Modify(Stu stud) ; / 學(xué)生成績修改函數(shù) friend void Delete(Stu stud) ; / 學(xué)生信息刪除函數(shù) friend void Output(Stu stud) ; / 學(xué)生全部信息輸出函數(shù) fr

19、iend void Sort(Stu stud) ;/ 學(xué)生成績排序函數(shù)friend void Insert(Stu stud) ; / 學(xué)生成績插入函數(shù) friend void Write(Stu stud,int n);/ 學(xué)生成績寫入檔案函數(shù) friend int Read(Stu stud); / 學(xué)生成績信息讀取函數(shù) friend void Showfail(Stu stud); / 查找不及格學(xué)生 private:int class_num; / 班級號碼int num;/ 學(xué)號string name;/ 姓名int age;/ 年齡char sex;/ 性別int room;/

20、宿舍string tel;/ 電話float average;/ 所有課程平均分int num_of_course;/ 課程數(shù)目int order;/ 名次Course course20;/ 課程信息數(shù)組;void Write(Stu stud,int n)/ 文件寫入函數(shù)fstream myFile; / 定義一個文件輸入輸出類 if(!myFile)exit(1);int count=n;myFilecountendlendl;for(int i=0; icount; i+)myFilestudi.class_num studi.num studi.age studi

21、.sex studi.room studi.tel studi.num_of_course studi.average endl;for(int j=0; jstudi.num_of_course; j+)myFilestudi.coursej.course_numstudi.coursej.course_namestudi.coursej.regular_score studi.coursej.final_scorestudi.coursej.average_scorestudi.coursej.study_score studi.coursej.rebulidcount;for(int i

22、=0; istudi.class_studi.agestudi.sexstudi.roomstudi.tel studi.num_of_coursestudi.average;for(int j=0; jstudi.coursej.course_numstudi.coursej.course_namestudi.coursej.regular_score studi.coursej.final_scorestudi.coursej.average_scorestudi.coursej.study_scorestudi.coursej.rebulid;

23、myFile.close();return count ;/ 函數(shù)返回一個查詢出來的數(shù)值void Input(Stu stud)/ 學(xué)生成績錄入函授system(cls); /調(diào)用系統(tǒng)命令cis,清除屏幕 int i=0; / int num;char sign;coutendl 請輸入學(xué)生成績 =endl; while(sign!=n&sign!=N)coutstudi.class_num;loop: /loop 循環(huán), VB 中的循環(huán) coutstudi.num;int c=0;while(ci)c+;if(studi.num=studi-c.num)endl;cout 你輸入的學(xué)號已經(jīng)存

24、在 ! 請重新輸入。 goto loop;;coutstudi.age;coutstudi.sex;coutstudi.room;coutstudi.tel;coutstudi.num_of_course;int j;float sum=0;for(j=0; jstudi.num_of_course; j+)cout 請登記第 j+1 門課的信息: endl; coutstudi.coursej.course_num;coutstudi.coursej.course_name;coutstudi.coursej.regular_score;coutstudi.cou

25、rsej.final_score;coutstudi.coursej.study_score;studi.coursej.average_score=studi.coursej.regular_score*0.3+studi.coursej.final_score*0.7;cout 該門課的綜合成績是: studi.coursej.average_scoreendl; if(studi.coursej.average_score60)studi.coursej.rebulid= 是 ;elsestudi.coursej.rebulid= 否 ;cout 是否重修: studi.coursej.

26、rebulidendl; sum=sum+studi.coursej.average_score;studi.average=sum/studi.num_of_course;cout 該學(xué)生這幾門課的平均分為: studi.averageendl;cout 提示:是否繼續(xù)寫入學(xué)生成績 ?(Y/N);cinsign;i+;Write(stud,i); / 調(diào)用文件寫入函數(shù),把信息寫入文件void Statistic(Stu stud) / 學(xué)生成績數(shù)據(jù)輸出函數(shù)system(cls);int n=Read(stud);cout 班級 t 學(xué)號 t 姓名 t 年齡 t 性別 t 宿舍 t 電話 tt

27、 平均成績 endl;for(int i=0; in; i+)coutstudi.class_tstudi.agetstudi.sext studi.roomtstudi.teltstudi.averageendl;system(pause);void Lookup(Stu stud)/ 學(xué)生成績查找函數(shù)system(cls);int n=Read(stud);int s1;string s2;int i=0;int choose;cout 請輸入查詢方式: endlendl;cout 按學(xué)號查詢: 1 endl;cout 按姓名查詢: 2 en

28、dl;docoutchoose;while(choose!=1)&(choose!=2); switch(choose)case 1: system(cls); coutendl 查找學(xué)生成績 =endl; cout 請輸入需要查找學(xué)生的學(xué)號 :s1; while(studi.num-s1)!=0&in) i+;if(i=n)endl; cout提示:對不起,無法找到該學(xué)生的信息! elsecoutendl;cout 班級 :studi.class_numendl;cout學(xué)號:studi.numendl;cout 姓名 :endl;cout年齡:studi.ageendl

29、;cout性別:studi.sexendl;cout 宿舍 :studi.roomendl;cout 電話 :studi.telendl;for(int j=0; jstudi.num_of_course; j+)coutstudi.coursej.course_name:; coutstudi.coursej.average_scoreendl;cout 平均分 :studi.averageendl; break;case 2: system(cls); coutendl 查找學(xué)生成績 =endl; cout 請輸入需要查找學(xué)生的姓名 :s2; int flag=0;for(i=0; in;

30、 i+)if(=s2)coutendl;cout 班級 :studi.class_numendl;cout 學(xué)號 :studi.numendl;cout 姓名 :endl;cout 年齡 :studi.ageendl;cout 性別 :studi.sexendl;cout 宿舍 :studi.roomendl;cout 電話 :studi.telendl;for(int j=0; jstudi.num_of_course; j+) coutstudi.coursej.course_name:; coutstudi.coursej.average_scor

31、eendl;cout 平均分 :studi.averageendl;flag=1;break;if(flag=0) cout提示:對不起,無法找到該學(xué)生的信息!e ndl;void Modify(Stu stud)/ 學(xué)生成績修改函數(shù)system(cls);int n=Read(stud);int s;int i=0;coutendl 修改學(xué)生成績 =endl;cout請輸入需要修改成績學(xué)生的學(xué)號:s;while(studi.num-s)!=0&in) i+;if(i=n) cout提示:對不起,無該學(xué)生的成績e ndl;elsecout 該學(xué)生的信息 endl;cout 班 級 t 學(xué) 號

32、t 姓 名 t 年 齡 t 性 別 t 宿 舍 t 電話 endl;coutendl;coutstudi.class_tstudi.agetstudi.sext studi.roomtstudi.telendl;for(int j=0; jstudi.num_of_course; j+)coutstudi.coursej.course_name:;coutstudi.coursej.average_scoreendl;cout 平均分 :studi.averageendl;cout 請重新輸入該學(xué)生的信息 endl;cout 班級 :studi.

33、class_num;cout 學(xué)號 :studi.num;cout 姓名 :;cout 年齡 :studi.age;cout 性別 :studi.sex;cout 宿舍 :studi.room;cout 電話 :studi.tel;coutstudi.num_of_course;int j;float sum=0;for(j=0; jstudi.num_of_course; j+)cout 請登記第 j+1 門課的信息: endl;coutstudi.coursej.course_num;coutstudi.coursej.course_name;coutstudi.cou

34、rsej.regular_score;coutstudi.coursej.final_score;coutstudi.coursej.study_score;studi.coursej.average_score=studi.coursej.regular_score*0.3+studi.coursej.final_score*0.7; cout 該門課的綜合成績是: studi.coursej.average_scoreendl; if(studi.coursej.average_score60)studi.coursej.rebulid= 是 ;elsestudi.coursej.rebu

35、lid= 否 ;cout 是否重修: studi.coursej.rebulidendl;sum=sum+studi.coursej.average_score; studi.average=sum/studi.num_of_course; cout 該學(xué)生這幾門課的平均分為: studi.averageendl; char c; cout 是否保存數(shù)據(jù) ?(y/n)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

36、 i=0,j; char sign; cout 請選擇刪除學(xué)生信息的方式endlendl;cout 按學(xué)號刪除1endl;cout 按姓名刪除2endl;int choose;docoutchoose;while(choose!=1)&(choose!=2); switch(choose)case 1: system(cls); coutendl 刪除學(xué)生成績 =endl; while(sign!=n&sign!=N)cout 請輸入需要刪除學(xué)生的學(xué)號 :s1;while(studi.num-s1)!=0&in) i+;/ 這種結(jié)構(gòu)形式?jīng)Q定一次只能刪除一個學(xué)生 if(i=n)cout提示:對不

37、起,無法找到該學(xué)生e ndl;elsefor(j=i; jn-1; j+) studj=studj+1; cout 提示:已成功刪除! endl;n-;cout 提示:是否繼續(xù)刪除學(xué)生信息?(Y/N)cinsign;Write(stud,n);break;case 2:system(cls);int flag=0;coutendl 刪除學(xué)生成績 =endl; while(sign!=n&sign!=N)cout 請輸入需要刪除學(xué)生的姓名 :s2;for(i; in; i+)if(=s2)/ studi=studi+1;for(j=i;jn-1;j+) studj=studj

38、+1;cout 提示:已成功刪除!e ndl;flag=1;break; if(flag=0)endl;cout提示:對不起,無法找到該學(xué)生break;n-;cout提示:是否繼續(xù)刪除學(xué)生信息? ( Y/N) cinsign;Write(stud,n);break;void Insert(Stu stud) / 學(xué)生信息插入函數(shù)system(cls);int flag;int n=Read(stud);char s;coutendl 增加學(xué)生成績 =endl;while(s!=n&s!=N)coutstudn.class_num;coutstudn.num;;cou

39、tstudn.age;coutstudn.sex;coutstudn.room;coutstudn.tel;coutstudn.num_of_course;int j;float sum=0;for(j=0; jstudn.num_of_course; j+)cout 請登記第 j+1 門課的信息: endl;coutstudn.coursej.course_num;coutstudn.coursej.course_name;coutstudn.coursej.regular_score;coutstudn.coursej.final_score;coutstudn.coursej.study

40、_score;studn.coursej.average_score=studn.coursej.regular_score*0.3+studn.coursej.final_score*0.7; cout 該門課的綜合成績是: studn.coursej.average_scoreendl; if(studn.coursej.average_score60)studn.coursej.rebulid= 是 ;else studn.coursej.rebulid= 否 ;cout 是否重修: studn.coursej.rebulidendl; sum=sum+studn.coursej.ave

41、rage_score; studn.average=sum/studn.num_of_course;cout 該學(xué)生這幾門課的平均分為: studn.averageendl; n+;cout 提示:插入成功! endl; cout 是否繼續(xù)輸入 (y/n)s; Write(stud,n);void Sort(Stu stud) / 學(xué)生成績排序函數(shù)system(cls);int i,j,k;float s;char t20;coutendl 降序排序成績 =endl;int n=Read(stud);for(i=0; in-1; i+)for(j=0; jn-1-i; j+)if(studj.

42、averagestudj+1.average)/ 采用冒泡法比較大小,即相鄰兩個數(shù)比較,把大的放 在前面 Stu temp; temp=studj; studj=studj+1; studj+1=temp;coutendl;cout 班級 t 學(xué)號 t 姓名 t 年齡 t 性別 t 宿舍 t 電 話tt平均分t名次endl;coutendl;for(i=0; in; i+) studi.order=i+1;coutstudi.class_tstudi.agetstudi.sext studi.roomtstudi.teltstudi.averagetstudi.orderendl;Write(stud,n);void Output(Stu stud) / 輸出全部學(xué)生成績s

溫馨提示

  • 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

提交評論