版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 二○一二~二○一三學(xué)年第二學(xué)期</p><p><b> 信息科學(xué)與工程學(xué)院</b></p><p><b> C++程序設(shè)計(jì)語言</b></p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 課程名稱:C++程序設(shè)計(jì)語言</p&
2、gt;<p> 班 級:電氣信息類1206班 </p><p><b> 學(xué) 號: </b></p><p><b> 姓 名: </b></p><p><b> 指導(dǎo)教師: </b></p><p><b> 目錄<
3、/b></p><p> 1.課程設(shè)計(jì)目的3</p><p> 2.系統(tǒng)描述(需求分析)3</p><p> 2.1需要處理的基礎(chǔ)數(shù)據(jù)3</p><p> 2.2系統(tǒng)的基本功能3</p><p> 2.3可行性分析4</p><p> 3.功能模塊設(shè)計(jì)4</p
4、><p> 3.1類的分析與設(shè)計(jì)4</p><p> 3.1.1 Course類4</p><p> 3.1.2 Stu類5</p><p><b> 3.2整體流程6</b></p><p> 4.主要模塊的算法說明7</p><p> 4.1信息的保存
5、和讀取7</p><p> 4.2 對信息的處理7</p><p> 4.2.1 數(shù)據(jù)的錄入和插入7</p><p> 4.2.2 數(shù)據(jù)的查詢7</p><p> 4.2.3 數(shù)據(jù)的修改7</p><p> 4.2.4 數(shù)據(jù)的刪除7</p><p> 4.2.5 數(shù)據(jù)的排
6、序8</p><p> 5.程序運(yùn)行結(jié)果8</p><p> 5.1 菜單歡迎界面8</p><p> 5.3信息的顯示9</p><p> 5.4 信息的查詢9</p><p> 5.5 信息的修改10</p><p> 5.6 信息的刪除11</p>
7、<p> 5.7 按平均分降序排列11</p><p> 5.8 查看全部信息12</p><p> 5.9 輸出不及格學(xué)生信息12</p><p> 5.10 退出系統(tǒng)13</p><p> 6.課程設(shè)計(jì)總結(jié)13</p><p><b> 7.參考文獻(xiàn)13</b>
8、;</p><p> 8.附錄(源代碼)14</p><p><b> 1.課程設(shè)計(jì)目的</b></p><p> 1.1使學(xué)生進(jìn)一步理解和掌握課堂上所學(xué)各種基本抽象數(shù)據(jù)類型的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和操作實(shí)現(xiàn)算法,以及它們在程序中的使用方法。</p><p> 1.2使學(xué)生掌握軟件設(shè)計(jì)的基本內(nèi)容和設(shè)計(jì)方法,并培養(yǎng)學(xué)
9、生進(jìn)行規(guī)范化軟件設(shè)計(jì)的能力。</p><p> 1.3使學(xué)生掌握使用各種計(jì)算機(jī)資料和有關(guān)參考資料,提高學(xué)生進(jìn)行程序設(shè)計(jì)的基本能力。</p><p> 2.系統(tǒng)描述(需求分析)</p><p> 2.1需要處理的基礎(chǔ)數(shù)據(jù)</p><p> 學(xué)生基本信息:如班級、學(xué)號、姓名、性別、年齡、宿舍號碼、電話號碼等。</p><
10、;p> 學(xué)生選修課程的基本信息:課程編號、課程名稱、考試成績、平時(shí)成績、綜合成績、學(xué)分、</p><p><b> 重修否等。</b></p><p> 2.2系統(tǒng)的基本功能</p><p> 數(shù)據(jù)的錄入:如錄入學(xué)生的基本信息,以及該學(xué)生選修課程的基本信息;</p><p> 數(shù)據(jù)的修改:如修改指定學(xué)號、
11、或者指定姓名的學(xué)生信息,或者修改其選修課程信息;</p><p> 數(shù)據(jù)的插入:插入某個(gè)學(xué)生信息</p><p> 數(shù)據(jù)的查詢:如按學(xué)號查詢、按姓名查詢等;</p><p> 數(shù)據(jù)的刪除:如刪除指定學(xué)號、或者指定姓名的學(xué)生及其選修課的信息;</p><p> 平均成績的計(jì)算:計(jì)算每個(gè)學(xué)生各門功課的平均成績,并按平均成績從高到低的次序輸
12、出</p><p><b> 學(xué)生信息;</b></p><p> 列出不及格學(xué)生清單(學(xué)號、姓名、不及格的課程和成績)。</p><p> 考慮用文件把數(shù)據(jù)保存起來(可選)。</p><p><b> 2.3可行性分析</b></p><p> 2.3.1如上所示
13、,該系統(tǒng)要求處理一些學(xué)生成績的基本數(shù)據(jù),包括兩個(gè)方面:學(xué)生身份信息和學(xué)生成績信息。具體可以考慮創(chuàng)建兩個(gè)類,一個(gè)學(xué)生基本信息類,一個(gè)學(xué)科基本信息類。這樣既可以保持二者的獨(dú)立性,也可以使之相關(guān)聯(lián)。</p><p> 2.3.2該系統(tǒng)不僅要求能錄入一些基本數(shù)據(jù)外,還要能對這些數(shù)據(jù)進(jìn)行處理,比如修改,刪除,插入,查詢等。對這些操作的實(shí)現(xiàn)可以暫時(shí)放開面向?qū)ο?,而采用面向過程的方法。另外,因?yàn)閷?shù)據(jù)庫了解不多,可以考慮用文
14、件保存的形式將數(shù)據(jù)保存起來,最后在查找的時(shí)候采用文件讀取。</p><p><b> 3.功能模塊設(shè)計(jì)</b></p><p> 3.1類的分析與設(shè)計(jì)</p><p> 由上面的需求分析可以知道,在本程序中,需要處理兩大類數(shù)據(jù):一個(gè)是學(xué)生的身份基本信息,另一個(gè)是該同學(xué)的課程基本信息。而且要求二者既要相互聯(lián)系,又不能太相互制約。于是可以考慮
15、創(chuàng)建兩個(gè)類: Stu 類(學(xué)生信息類)和 Course 類(課程信息類)。為了使二者相互關(guān)聯(lián),可以讓 Course 的一個(gè)類對象作為Stu 對象的一個(gè)基本數(shù)據(jù)成員。具體如下:</p><p> 3.1.1 Course類</p><p> 由于學(xué)生只需要一些課程信息,故在該類中只有一些基本的成員數(shù)據(jù),不涉及成員函數(shù)之類的對數(shù)據(jù)進(jìn)行操作的函數(shù)。把對學(xué)生信息進(jìn)行處理的函數(shù)放在Stu類中。&
16、lt;/p><p> 由于這些數(shù)據(jù)信息是作為Stu類的一個(gè)信息的,為了使stu類中的函數(shù)可以訪問這些成員數(shù)據(jù),故要將訪問類型定義為public型。</p><p> 3.1.2 Stu類</p><p> 正如上面所述,Course類的一個(gè)對象作為Stu類的一個(gè)數(shù)據(jù)成員,但是正常情況下,一個(gè)同學(xué)是不只一門科目的,所以要定義一個(gè)Course類的數(shù)組來存放同一學(xué)生的不
17、同科目信息Course course[20]。為了其信息的隱蔽性,我們把所有的數(shù)據(jù)成員都聲明為private。</p><p> 接下來,要處理的就是函數(shù)了。有兩種處理方式,但到底是采用成員函數(shù)還是采用友元函數(shù)呢?在本例中,我采用的是友元函數(shù)。原因如下:</p><p> ?。?)采用友元函數(shù),可以使類的結(jié)構(gòu)變得更加簡單,有助于整個(gè)設(shè)計(jì)過程的思考。</p><p&g
18、t; ?。?)使用友元函數(shù),將函數(shù)獨(dú)立于類的結(jié)構(gòu)之外而采用類對象傳參的方式,可以使該函數(shù)的獨(dú)立性大大提高,有助于在其他地方的使用。</p><p><b> 具體如下:</b></p><p><b> 友元函數(shù):</b></p><p><b> 3.2整體流程</b></p>
19、<p> 上面已經(jīng)主要分開介紹了兩個(gè)獨(dú)立的類及其內(nèi)部成員,現(xiàn)在來介紹整個(gè)學(xué)生系統(tǒng)功能實(shí)現(xiàn)的流程。</p><p> 4.主要模塊的算法說明</p><p> 4.1信息的保存和讀取</p><p> 在本次課程設(shè)計(jì)中,因?yàn)檫€沒有接觸到數(shù)據(jù)庫的有關(guān)知識,故采用文件流來寫入和讀取信息。主要涉及到fstream類。在系統(tǒng)運(yùn)行過程中,會利用該類將學(xué)生的基本
20、身份信息和基本課程信息全部存到自定義的一個(gè)文件中,當(dāng)需要使用這些數(shù)據(jù)時(shí),例如查詢,修改,顯示等,再將需要的讀取出來進(jìn)行相關(guān)的操作。</p><p> 4.2 對信息的處理</p><p> 4.2.1 數(shù)據(jù)的錄入和插入</p><p> 數(shù)據(jù)的錄入和插入基本一樣,這里只介紹錄入。</p><p> 當(dāng)在主菜單里選擇信息錄入時(shí),會跳出錄
21、入頁面,只需依次輸入提示的信息即可。在整個(gè)大體框架上,采用一個(gè)while語句判斷是否繼續(xù)錄入。注意在錄入學(xué)生成績信息時(shí)。需要輸入要登記的課程數(shù)目。其中成績信息的各科綜合成績和是否重修不需要手動(dòng)錄入,它會在登記完平時(shí)成績和末考成績后自動(dòng)生成。當(dāng)所有信息錄入完成后,該生所有科目的平均成績average也會自動(dòng)計(jì)算。</p><p> 4.2.2 數(shù)據(jù)的查詢</p><p> 所謂數(shù)據(jù)的查
22、詢,就是把存放在文檔中的學(xué)生數(shù)據(jù)讀取出來并加以輸出。</p><p> 當(dāng)只針對某個(gè)人的查詢時(shí),需要輸入學(xué)號或姓名,再調(diào)用read()函數(shù)將相關(guān)的數(shù)據(jù)讀取出來,至于需要輸出哪些,可以自己控制。</p><p> 當(dāng)要輸出所有學(xué)生的數(shù)據(jù)是時(shí),首先調(diào)用read()函數(shù)返回?cái)?shù)據(jù)的個(gè)數(shù)count,即學(xué)生的個(gè)數(shù)。最后采用for循環(huán)控制依次輸出每一個(gè)學(xué)生的信息。</p><p&
23、gt; 4.2.3 數(shù)據(jù)的修改</p><p> 當(dāng)修改數(shù)據(jù)時(shí),只需輸入需要修改學(xué)生的學(xué)號即可。首先會將該生的相關(guān)信息輸出出來。然后再提示重新輸入信息。執(zhí)行到這里時(shí)基本就和前面的數(shù)據(jù)錄入,插入一樣了。</p><p> 4.2.4 數(shù)據(jù)的刪除</p><p> 本例中,對數(shù)據(jù)的刪除比較簡單。只需輸入學(xué)號或姓名,當(dāng)查找到該生的相關(guān)信息后。將后面一個(gè)學(xué)生的信息賦
24、值給他,相當(dāng)于該生的信息被覆蓋,也就是刪除。</p><p> 4.2.5 數(shù)據(jù)的排序</p><p> 在需求分析中,有一項(xiàng)功能,按學(xué)生成績平均分降序排列。此功能還是比較好實(shí)現(xiàn)的。</p><p> 在輸入學(xué)生數(shù)據(jù)時(shí),當(dāng)所有課程分?jǐn)?shù)輸入完畢,會自動(dòng)生成一個(gè)平均分,該數(shù)值就是學(xué)生類Stu中的average數(shù)據(jù)成員。然后采用冒泡法比較大小,把這些學(xué)生的數(shù)據(jù)重新排
25、列,最后再依次輸出。</p><p><b> 5.程序運(yùn)行結(jié)果</b></p><p> 5.1 菜單歡迎界面</p><p><b> 5.2 信息的錄入</b></p><p> 如上所示,依次輸入需要填寫的信息,其中“該門課的綜合成績”和“是否重修”是不需要輸入,系統(tǒng)自動(dòng)執(zhí)行的。最后
26、還會提示是否繼續(xù)填寫(Y\N)。</p><p><b> 5.3信息的顯示</b></p><p> 在這個(gè)功能里面主要顯示全部同學(xué)的身份信息和平均分:</p><p><b> 5.4 信息的查詢</b></p><p> 信息的查詢分兩種方式:</p><p>
27、 當(dāng)你選擇1 時(shí),表示按學(xué)號查詢,</p><p> 當(dāng)你選擇2 時(shí),表示按姓名查詢。</p><p> 下面介紹的是按學(xué)號查詢。。。</p><p> 如上所示,當(dāng)輸入需要查詢的同學(xué)的學(xué)號時(shí),會輸出該同學(xué)的身份信息以及每一門課的綜合成績,還有這些課的平均成績。</p><p><b> 5.5 信息的修改</b&g
28、t;</p><p> 當(dāng)輸入需要修改的學(xué)生學(xué)號時(shí),會首先輸出該同學(xué)現(xiàn)在的已經(jīng)存在的信息:</p><p><b> 然后提示重新輸入:</b></p><p> 輸入完成后,會提示是否保存:</p><p><b> 5.6 信息的刪除</b></p><p>
29、信息的刪除也分兩種類型:</p><p> 選擇不同的方式,進(jìn)入不同的界面</p><p><b> 按姓名刪除</b></p><p><b> 按學(xué)號刪除</b></p><p> 5.7 按平均分降序排列</p><p> 會輸出學(xué)生的一些基本信息和平均分與名
30、次。</p><p> 5.8 查看全部信息</p><p> 由于一個(gè)同學(xué)的全部信息較多,于是分成兩部分輸出:身份信息和成績信息</p><p> 在身份信息中,主要包括班級,學(xué)號,姓名,年齡,性別,宿舍,電話等。在成績信息中,包括該同學(xué)的各科成績,是否重修,獲得的學(xué)分,以及所有科目的平均分。</p><p> 5.9 輸出不及格學(xué)
31、生信息</p><p> 當(dāng)選擇該功能時(shí),首先會輸出該同學(xué)的學(xué)號,姓名和班級,然后再輸出他的不及格科目以及分?jǐn)?shù),如下所示。</p><p><b> 5.10 退出系統(tǒng)</b></p><p><b> 6.課程設(shè)計(jì)總結(jié)</b></p><p> (1)回顧此次課程設(shè)計(jì),感慨良多,從剛拿到題
32、目時(shí)的一臉茫然,到最后能成功解決,覺得此次課程設(shè)計(jì)我又學(xué)到了好多知識。首先在這里要感謝一下王磊指導(dǎo)老師,經(jīng)過他的細(xì)心講解,我才有了一個(gè)完整的設(shè)計(jì)思路。</p><p> ?。?)在這次課程設(shè)計(jì)的過程中,最大的感覺就是對知識的不熟悉,一些C++基礎(chǔ)知識似懂非懂,結(jié)果總要去查書才能寫出不出錯(cuò)誤的代碼,結(jié)構(gòu)就是耗費(fèi)了大量的時(shí)間,事倍功半。經(jīng)歷這次教訓(xùn),我想會對我以后的計(jì)算機(jī)語言學(xué)習(xí)起到一定的幫助。</p>
33、<p> ?。?)在這次的課程設(shè)計(jì)過程中,通過查書的學(xué)習(xí),對C++的了解又加深了不少,包括類的結(jié)構(gòu),以及怎樣在類外訪問類類的私有成員等,我想下次再寫基于對象的程序時(shí),一定會得心應(yīng)手。</p><p> (4)還有比較重要的收獲就是類的相互嵌套使用,就拿本例來說,在一個(gè)類中設(shè)置一個(gè)數(shù)據(jù)成員,而該數(shù)據(jù)成員確是另一個(gè)類的對象。這對理解數(shù)據(jù)類型起到了不少的作用。</p><p>
34、(5) 總的來說,這次程序設(shè)計(jì)讓我獲益匪淺,對C++語言也有了進(jìn)一步的認(rèn)識:語言功能高、表達(dá)能力強(qiáng)、使用靈活方便、目標(biāo)程序效率高等等。C++語言是在國內(nèi)外廣泛使用的一種計(jì)算機(jī)語言,相信除了以上優(yōu)點(diǎn),還有許多我們還未發(fā)現(xiàn),希望能在以后的學(xué)習(xí)中有更深入的認(rèn)識。</p><p><b> 7.參考文獻(xiàn)</b></p><p> (1)C++程序設(shè)計(jì)(第二版)
35、 譚浩強(qiáng) 編著</p><p> ?。?)visual C++從入門到精通 明日科技 編著</p><p> (3)C++編程思想 (美)??藸?編著 劉宗田 譯</p><p><b> 8.附錄(源代碼)</b></p><p> #include <iostream></
36、p><p> #include <fstream></p><p> #include <stdlib.h>//后面的exit函數(shù)和syetem函數(shù)要用</p><p> #include <string></p><p> using namespace std;</p><p&g
37、t; class Course //定義一個(gè)課程信息類</p><p><b> {</b></p><p><b> public:</b></p><p> int course_num; //課程編號</p><p> string course_name;//課程名
38、稱</p><p> float regular_score;//平時(shí)成績</p><p> float final_score;//末考成績</p><p> float average_score;//綜合成績</p><p> float study_score;//學(xué)分</p><p> string
39、 rebulid;//是否重修</p><p><b> };</b></p><p> class Stu</p><p><b> {</b></p><p> //把對類的私有成員的處理函數(shù)全部定義為友元函數(shù)</p><p><b> public
40、:</b></p><p> friend void Input(Stu stud[]) ; //學(xué)生成績錄入函數(shù)</p><p> friend void Statistic(Stu stud[]);//學(xué)生信息輸出函數(shù)</p><p> friend void Lookup(Stu stud[]) ; //學(xué)生成績查找函數(shù)</p&g
41、t;<p> friend void Modify(Stu stud[]) ; //學(xué)生成績修改函數(shù)</p><p> friend void Delete(Stu stud[]) ; //學(xué)生信息刪除函數(shù)</p><p> friend void Output(Stu stud[]) ; //學(xué)生全部信息輸出函數(shù)</p><p> fr
42、iend void Sort(Stu stud[]) ; //學(xué)生成績排序函數(shù)</p><p> friend void Insert(Stu stud[]) ; //學(xué)生成績插入函數(shù)</p><p> friend void Write(Stu stud[],int n);//學(xué)生成績寫入檔案函數(shù)</p><p> friend int Read(S
43、tu stud[]); //學(xué)生成績信息讀取函數(shù)</p><p> friend void Showfail(Stu stud[]); //查找不及格學(xué)生</p><p><b> private:</b></p><p> int class_num; //班級號碼</p><p> int n
44、um;//學(xué)號</p><p> string name;//姓名</p><p> int age;//年齡</p><p> char sex;//性別</p><p> int room;//宿舍</p><p> string tel;//電話</p><p> float
45、 average;//所有課程平均分</p><p> int num_of_course;//課程數(shù)目</p><p> int order;//名次</p><p> Course course[20];//課程信息數(shù)組</p><p><b> };</b></p><p> vo
46、id Write(Stu stud[],int n) //文件寫入函數(shù)</p><p><b> {</b></p><p> fstream myFile; //定義一個(gè)文件輸入輸出類</p><p> myFile.open("D:\\student.dat.txt",ios::
47、out|ios::binary);</p><p> if(!myFile)</p><p><b> {</b></p><p> cout<<"D:\\student.dat.txt can't open!"<<endl;</p><p><b>
48、 exit(1);</b></p><p><b> }</b></p><p> int count=n;</p><p> myFile<<count<<endl<<endl;</p><p> for(int i=0; i<count; i++)<
49、/p><p><b> {</b></p><p> myFile<<stud[i].class_num<<" "<<stud[i].num<<" "<<stud[i].name<<" "<<stud[i].age<&l
50、t;" "</p><p> <<stud[i].sex<<" "<<stud[i].room<<" "<<stud[i].tel<<" "<<stud[i].num_of_course<<" "<<stu
51、d[i].average<<" "<<endl;</p><p> for(int j=0; j<stud[i].num_of_course; j++)</p><p><b> {</b></p><p> myFile<<stud[i].course[j].course_n
52、um<<" "<<stud[i].course[j].course_name<<" "<<stud[i].course[j].regular_score</p><p> <<" "<<stud[i].course[j].final_score<<" &quo
53、t;<<stud[i].course[j].average_score<<" "<<stud[i].course[j].study_score</p><p> <<" "<<stud[i].course[j].rebulid<<endl;</p><p><b>
54、 }</b></p><p><b> }</b></p><p> myFile.close();</p><p><b> }</b></p><p> int Read(Stu stud[]) //文件讀取函數(shù)</p><p&g
55、t;<b> {</b></p><p> fstream myFile;</p><p> myFile.open("D:\\student.dat.txt",ios::in|ios::binary);</p><p> if(!myFile)</p><p><b> {<
56、;/b></p><p> cout<<"D:\\student.dat.txt can't open!"<<endl;</p><p><b> exit(1);</b></p><p><b> }</b></p><p> in
57、t count;</p><p> myFile.seekg(0);</p><p> myFile>>count;</p><p> for(int i=0; i<count; i++)</p><p><b> {</b></p><p> myFile>&g
58、t;stud[i].class_num>>stud[i].num>>stud[i].name>>stud[i].age>>stud[i].sex>>stud[i].room>>stud[i].tel>>stud[i].num_of_course>>stud[i].average;</p><p> for(int j
59、=0; j<stud[i].num_of_course; j++)</p><p><b> {</b></p><p> myFile>>stud[i].course[j].course_num>>stud[i].course[j].course_name>>stud[i].course[j].regular_score
60、>></p><p> stud[i].course[j].final_score>>stud[i].course[j].average_score>>stud[i].course[j].study_score>>stud[i].course[j].rebulid;</p><p><b> }</b></p&
61、gt;<p><b> }</b></p><p> myFile.close();</p><p> return count ; //函數(shù)返回一個(gè)查詢出來的數(shù)值</p><p><b> }</b></p><p> void Input(Stu stud[])
62、 //學(xué)生成績錄入函授</p><p><b> {</b></p><p> system("cls"); //調(diào)用系統(tǒng)命令cls,清除屏幕</p><p><b> int i=0;</b></p><p> // int num;</p&g
63、t;<p> char sign;</p><p> cout<<endl<<"====>> 請輸入學(xué)生成績 <<===="<<endl;</p><p> while(sign!='n'&&sign!='N')</p><
64、p><b> {</b></p><p> cout<<"班級:";</p><p> cin>>stud[i].class_num;</p><p> loop: //loop循環(huán),VB中的循環(huán)</p><p> cou
65、t<<"學(xué)號:";</p><p> cin>>stud[i].num;</p><p><b> int c=0;</b></p><p> while(c<i)</p><p><b> {</b></p><p>
66、;<b> c++;</b></p><p> if(stud[i].num==stud[i-c].num)</p><p><b> {</b></p><p> cout<<" 你輸入的學(xué)號已經(jīng)存在!請重新輸入。"<<endl;</p><p>
67、; goto loop;</p><p><b> }</b></p><p><b> }</b></p><p> cout<<"姓名:";</p><p> cin>>stud[i].name;</p><p>
68、cout<<"年齡:";</p><p> cin>>stud[i].age;</p><p> cout<<"性別:";</p><p> cin>>stud[i].sex;</p><p> cout<<"宿舍:"
69、;;</p><p> cin>>stud[i].room;</p><p> cout<<"電話:";</p><p> cin>>stud[i].tel;</p><p> cout<<"請輸入需要登記的學(xué)科數(shù)目:";</p>&
70、lt;p> cin>>stud[i].num_of_course;</p><p><b> int j;</b></p><p> float sum=0;</p><p> for(j=0; j<stud[i].num_of_course; j++)</p><p><b>
71、 {</b></p><p> cout<<"請登記第"<<j+1<<"門課的信息:"<<endl;</p><p> cout<<"課程編號:";</p><p> cin>>stud[i].course[j].c
72、ourse_num;</p><p> cout<<"課程名稱:";</p><p> cin>>stud[i].course[j].course_name;</p><p> cout<<"平時(shí)成績:";</p><p> cin>>stud[i
73、].course[j].regular_score;</p><p> cout<<"末考成績:";</p><p> cin>>stud[i].course[j].final_score;</p><p> cout<<"學(xué)分:";</p><p> cin
74、>>stud[i].course[j].study_score;</p><p> stud[i].course[j].average_score=stud[i].course[j].regular_score*0.3+stud[i].course[j].final_score*0.7;</p><p> cout<<"該門課的綜合成績是:"
75、<<stud[i].course[j].average_score<<endl;</p><p> if(stud[i].course[j].average_score<60)</p><p> stud[i].course[j].rebulid="是";</p><p><b> else</
76、b></p><p> stud[i].course[j].rebulid="否";</p><p> cout<<"是否重修:"<<stud[i].course[j].rebulid<<endl;</p><p> sum=sum+stud[i].course[j].avera
77、ge_score;</p><p><b> }</b></p><p> stud[i].average=sum/stud[i].num_of_course;</p><p> cout<<" 該學(xué)生這幾門課的平均分為:"<<stud[i].average<<endl;</p
78、><p> cout<<"====>提示:是否繼續(xù)寫入學(xué)生成績?(Y/N)";</p><p> cin>>sign;</p><p><b> i++;</b></p><p><b> }</b></p><p>
79、Write(stud,i); //調(diào)用文件寫入函數(shù),把信息寫入文件</p><p><b> }</b></p><p> void Statistic(Stu stud[]) //學(xué)生成績數(shù)據(jù)輸出函數(shù)</p><p><b> {</b></p><p>
80、 system("cls");</p><p> int n=Read(stud);</p><p> cout<<"班級"<<"\t"<<"學(xué)號"<<"\t"<<"姓名"<<"\t&q
81、uot;<<"年齡"<<"\t"<<"性別"<<"\t"<<"宿舍"<<"\t"<<"電話"<<"\t\t"<<"平均成績"<<endl;&
82、lt;/p><p> for(int i=0; i<n; i++)</p><p> cout<<stud[i].class_num<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i].
83、age<<"\t"<<stud[i].sex<<"\t"<<stud[i].room<<"\t"<<stud[i].tel<<"\t"<<stud[i].average<<endl;</p><p> system("
84、;pause");</p><p><b> }</b></p><p> void Lookup(Stu stud[]) //學(xué)生成績查找函數(shù)</p><p><b> {</b></p><p> system("cls");</p>
85、<p> int n=Read(stud);</p><p><b> int s1;</b></p><p> string s2;</p><p><b> int i=0;</b></p><p> int choose;</p><p> cou
86、t<<"請輸入查詢方式:"<<endl<<endl;</p><p> cout<<"----->按學(xué)號查詢: 1 <-------"<<endl;</p><p> cout<<"----->按姓名查詢: 2 <-------"
87、;<<endl;</p><p><b> do</b></p><p><b> {</b></p><p> cout<<"請輸入您的選擇:";</p><p> cin>>choose;</p><p>
88、 }while((choose!=1)&&(choose!=2));</p><p> switch(choose)</p><p><b> {</b></p><p><b> case 1:</b></p><p> system("cls");&l
89、t;/p><p> cout<<endl<<"====>> 查找學(xué)生成績 <<===="<<endl;</p><p> cout<<"請輸入需要查找學(xué)生的學(xué)號:"<<endl;</p><p><b> cin>>s1
90、;</b></p><p> while((stud[i].num-s1)!=0&&i<n) i++;</p><p><b> if(i==n)</b></p><p><b> {</b></p><p> cout<<"=====
91、>提示:對不起,無法找到該學(xué)生的信息!"<<endl;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> cout<<"------
92、---------------------"<<endl;</p><p> cout<<"班級:"<<stud[i].class_num<<endl;</p><p> cout<<"學(xué)號:"<<stud[i].num<<endl;</p>
93、<p> cout<<"姓名:"<<stud[i].name<<endl;</p><p> cout<<"年齡:"<<stud[i].age<<endl;</p><p> cout<<"性別:"<<stud[i]
94、.sex<<endl;</p><p> cout<<"宿舍:"<<stud[i].room<<endl;</p><p> cout<<"電話:"<<stud[i].tel<<endl;</p><p> for(int j=0; j&
95、lt;stud[i].num_of_course; j++)</p><p><b> {</b></p><p> cout<<stud[i].course[j].course_name<<":";</p><p> cout<<stud[i].course[j].average_
96、score<<endl;</p><p><b> }</b></p><p> cout<<"平均分:"<<stud[i].average<<endl;</p><p><b> }</b></p><p><b>
97、; break;</b></p><p><b> case 2:</b></p><p> system("cls");</p><p> cout<<endl<<"====>> 查找學(xué)生成績 <<===="<<endl;&
98、lt;/p><p> cout<<"請輸入需要查找學(xué)生的姓名:"<<endl;</p><p><b> cin>>s2;</b></p><p> int flag=0;</p><p> for(i=0; i<n; i++)</p>&l
99、t;p><b> {</b></p><p> if(stud[i].name==s2)</p><p><b> {</b></p><p> cout<<"---------------------------"<<endl;</p><p&
100、gt; cout<<"班級:"<<stud[i].class_num<<endl;</p><p> cout<<"學(xué)號:"<<stud[i].num<<endl;</p><p> cout<<"姓名:"<<stud[i].na
101、me<<endl;</p><p> cout<<"年齡:"<<stud[i].age<<endl;</p><p> cout<<"性別:"<<stud[i].sex<<endl;</p><p> cout<<"
102、宿舍:"<<stud[i].room<<endl;</p><p> cout<<"電話:"<<stud[i].tel<<endl;</p><p> for(int j=0; j<stud[i].num_of_course; j++)</p><p><b&g
103、t; {</b></p><p> cout<<stud[i].course[j].course_name<<":";</p><p> cout<<stud[i].course[j].average_score<<endl;</p><p><b> }</b&
104、gt;</p><p> cout<<"平均分:"<<stud[i].average<<endl;</p><p><b> flag=1;</b></p><p><b> break;</b></p><p><b> }
105、</b></p><p><b> }</b></p><p> if(flag==0)</p><p> cout<<"=====>提示:對不起,無法找到該學(xué)生的信息!"<<endl;</p><p><b> }</b><
106、;/p><p><b> }</b></p><p> void Modify(Stu stud[]) //學(xué)生成績修改函數(shù)</p><p><b> {</b></p><p> system("cls");</p><p>
107、 int n=Read(stud);</p><p><b> int s;</b></p><p><b> int i=0;</b></p><p> cout<<endl<<"====>> 修改學(xué)生成績 <<===="<<endl;
108、</p><p> cout<<"請輸入需要修改成績學(xué)生的學(xué)號:"<<endl;</p><p><b> cin>>s;</b></p><p> while((stud[i].num-s)!=0&&i<n) i++;</p><p>
109、<b> if(i==n)</b></p><p><b> {</b></p><p> cout<<"=====>提示:對不起,無該學(xué)生的成績……"<<endl;</p><p><b> }</b></p><p>
110、;<b> else</b></p><p><b> {</b></p><p> cout<<"----------該學(xué)生的信息----------"<<endl;</p><p> cout<<"班級"<<"\t
111、"<<"學(xué)號"<<"\t"<<"姓名"<<"\t"<<"年齡"<<"\t"<<"性別"<<"\t"<<"宿舍"<<"\t
112、"<<"電話"<<endl;</p><p> cout<<"---------------------------------"<<endl;</p><p> cout<<stud[i].class_num<<"\t"<<stud
113、[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i].age<<"\t"<<stud[i].sex<<"\t"<<stud[i].room<<"\t"<<stud[i].tel<&l
114、t;endl;</p><p> for(int j=0; j<stud[i].num_of_course; j++)</p><p><b> {</b></p><p> cout<<stud[i].course[j].course_name<<":";</p><
115、p> cout<<stud[i].course[j].average_score<<endl;</p><p><b> }</b></p><p> cout<<"平均分:"<<stud[i].average<<endl;</p><p> cout
116、<<"請重新輸入該學(xué)生的信息"<<endl;</p><p> cout<<"班級:"<<endl;</p><p> cin>>stud[i].class_num;</p><p> cout<<"學(xué)號:"<<end
117、l;</p><p> cin>>stud[i].num;</p><p> cout<<"姓名:"<<endl;</p><p> cin>>stud[i].name;</p><p> cout<<"年齡:"<<endl
118、;</p><p> cin>>stud[i].age;</p><p> cout<<"性別:"<<endl;</p><p> cin>>stud[i].sex;</p><p> cout<<"宿舍:"<<endl;&
119、lt;/p><p> cin>>stud[i].room;</p><p> cout<<"電話:"<<endl;</p><p> cin>>stud[i].tel;</p><p> cout<<" 請輸入需要登記的學(xué)科數(shù)目:";<
120、;/p><p> cin>>stud[i].num_of_course;</p><p><b> int j;</b></p><p> float sum=0;</p><p> for(j=0; j<stud[i].num_of_course; j++)</p><p>
121、;<b> {</b></p><p> cout<<"請登記第"<<j+1<<"門課的信息:"<<endl;</p><p> cout<<"課程編號:";</p><p> cin>>stud[i].c
122、ourse[j].course_num;</p><p> cout<<"課程名稱:";</p><p> cin>>stud[i].course[j].course_name;</p><p> cout<<"平時(shí)成績:";</p><p> cin>
123、>stud[i].course[j].regular_score;</p><p> cout<<"末考成績:";</p><p> cin>>stud[i].course[j].final_score;</p><p> cout<<"學(xué)分:";</p><
124、p> cin>>stud[i].course[j].study_score;</p><p> stud[i].course[j].average_score=stud[i].course[j].regular_score*0.3+stud[i].course[j].final_score*0.7;</p><p> cout<<"該門課的綜合
125、成績是:"<<stud[i].course[j].average_score<<endl;</p><p> if(stud[i].course[j].average_score<60)</p><p> stud[i].course[j].rebulid="是";</p><p><b>
126、 else</b></p><p> stud[i].course[j].rebulid="否";</p><p> cout<<"是否重修:"<<stud[i].course[j].rebulid<<endl;</p><p> sum=sum+stud[i].cours
127、e[j].average_score;</p><p><b> }</b></p><p> stud[i].average=sum/stud[i].num_of_course;</p><p> cout<<" 該學(xué)生這幾門課的平均分為:"<<stud[i].average<<e
128、ndl;</p><p><b> char c;</b></p><p> cout<<"是否保存數(shù)據(jù)?(y/n)"<<endl;</p><p><b> cin>>c;</b></p><p> if(c!='n'
129、&&c!='N')</p><p> Write(stud,n);</p><p><b> }</b></p><p><b> }</b></p><p> void Delete(Stu stud[]) //刪除學(xué)生信息函數(shù)<
130、/p><p><b> {</b></p><p> system("cls");</p><p><b> int s1;</b></p><p> string s2;</p><p> int n=Read(stud);</p>
131、<p> int i=0,j;</p><p> char sign;</p><p> cout<<"請選擇刪除學(xué)生信息的方式"<<endl<<endl;</p><p> cout<<"---->按學(xué)號刪除 1 <-----"<<
132、;endl;</p><p> cout<<"---->按姓名刪除 2 <-----"<<endl;</p><p> int choose;</p><p><b> do</b></p><p><b> {</b></
133、p><p> cout<<"請輸入您的選擇:";</p><p> cin>>choose;</p><p> }while((choose!=1)&&(choose!=2));</p><p> switch(choose)</p><p><b&
134、gt; {</b></p><p><b> case 1:</b></p><p> system("cls");</p><p> cout<<endl<<"====>> 刪除學(xué)生成績 <<===="<<endl;<
135、/p><p> while(sign!='n'&&sign!='N')</p><p><b> {</b></p><p> cout<<"請輸入需要?jiǎng)h除學(xué)生的學(xué)號:"<<endl;</p><p><b> ci
136、n>>s1;</b></p><p> while((stud[i].num-s1)!=0&&i<n) i++;//這種結(jié)構(gòu)形式?jīng)Q定一次只能刪除一個(gè)學(xué)生</p><p><b> if(i==n)</b></p><p><b> {</b></p><
137、;p> cout<<"====>提示:對不起,無法找到該學(xué)生……"<<endl;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p&g
138、t; for(j=i; j<n-1; j++)</p><p><b> {</b></p><p> stud[j]=stud[j+1];</p><p><b> }</b></p><p> cout<<"====>提示:已成功刪除!"&l
139、t;<endl;</p><p><b> }</b></p><p><b> n--;</b></p><p> cout<<"====>提示:是否繼續(xù)刪除學(xué)生信息?(Y/N)";</p><p> cin>>sign;</p
140、><p><b> }</b></p><p> Write(stud,n);</p><p><b> break;</b></p><p><b> case 2:</b></p><p> system("cls");&l
141、t;/p><p> int flag=0;</p><p> cout<<endl<<"====>> 刪除學(xué)生成績 <<===="<<endl;</p><p> while(sign!='n'&&sign!='N')</p>
142、<p><b> {</b></p><p> cout<<"請輸入需要?jiǎng)h除學(xué)生的姓名:"<<endl;</p><p><b> cin>>s2;</b></p><p> for(i; i<n; i++)</p><
143、p><b> {</b></p><p> if(stud[i].name==s2)</p><p><b> {</b></p><p> // stud[i]=stud[i+1];</p><p> for(j=i;j<n-1;j++)</p><p&g
144、t;<b> {</b></p><p> stud[j]=stud[j+1];</p><p><b> }</b></p><p> cout<<"====>提示:已成功刪除!"<<endl;</p><p><b> fla
145、g=1;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(flag==0)</p><p><b> {</
146、b></p><p> cout<<"====>提示:對不起,無法找到該學(xué)生……"<<endl;</p><p><b> break;</b></p><p><b> }</b></p><p><b> n--;<
147、/b></p><p> cout<<"====>提示:是否繼續(xù)刪除學(xué)生信息?(Y/N)";</p><p> cin>>sign;</p><p><b> }</b></p><p> Write(stud,n);</p><p>
148、;<b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> void Insert(Stu stud[]) //學(xué)生信息插入函數(shù)</p><p><b> {</b&
149、gt;</p><p> system("cls");</p><p><b> int flag;</b></p><p> int n=Read(stud);</p><p><b> char s;</b></p><p> cout<
150、;<endl<<"====>> 增加學(xué)生成績<<===="<<endl;</p><p> while(s!='n'&&s!='N')</p><p><b> {</b></p><p> cout<<&
151、quot;班級:";</p><p> cin>>stud[n].class_num;</p><p> cout<<"學(xué)號:";</p><p> cin>>stud[n].num;</p><p> cout<<"姓名:";</
152、p><p> cin>>stud[n].name;</p><p> cout<<"年齡:";</p><p> cin>>stud[n].age;</p><p> cout<<"性別:";</p><p> cin>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計(jì)----學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)c++課程設(shè)計(jì)
- c++課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)
- c++課程設(shè)計(jì)---學(xué)生成績管理系統(tǒng)
- c++課程設(shè)計(jì)---學(xué)生成績管理系統(tǒng)
- c++課程設(shè)計(jì)——學(xué)生成績管理系統(tǒng)
- c++課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)
- c++學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)
- c++課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)
- c++課程設(shè)計(jì)--學(xué)生成績管理
- c++課程設(shè)計(jì)--- 學(xué)生成績管理系統(tǒng)設(shè)計(jì)
- c++課程設(shè)計(jì)--學(xué)生成績管理
- c++學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c++學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c++學(xué)生成績管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)報(bào)告--學(xué)生成績管理系統(tǒng)
- c&c++課程設(shè)計(jì)-學(xué)生成績管理系統(tǒng)
- c++課程設(shè)計(jì)--學(xué)生成績管理系統(tǒng)設(shè)計(jì)與管理
- c++程序課程設(shè)計(jì)報(bào)告—學(xué)生成績管理系統(tǒng)
- c++程序設(shè)計(jì)課程設(shè)計(jì)---學(xué)生成績管理系統(tǒng)
評論
0/150
提交評論