版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 二○一二~二○一三學年第二學期</p><p><b> 信息科學與工程學院</b></p><p><b> C++程序設(shè)計語言</b></p><p><b> 課程設(shè)計報告</b></p><p> 課程名稱:C++程序設(shè)計語言</p&
2、gt;<p> 班 級:電氣信息類1206班 </p><p><b> 學 號: </b></p><p><b> 姓 名: </b></p><p><b> 指導教師: </b></p><p><b> 目錄<
3、/b></p><p> 1.課程設(shè)計目的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è)計4</p
4、><p> 3.1類的分析與設(shè)計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.程序運行結(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 輸出不及格學生信息12</p><p> 5.10 退出系統(tǒng)13</p><p> 6.課程設(shè)計總結(jié)13</p><p><b> 7.參考文獻13</b>
8、;</p><p> 8.附錄(源代碼)14</p><p><b> 1.課程設(shè)計目的</b></p><p> 1.1使學生進一步理解和掌握課堂上所學各種基本抽象數(shù)據(jù)類型的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和操作實現(xiàn)算法,以及它們在程序中的使用方法。</p><p> 1.2使學生掌握軟件設(shè)計的基本內(nèi)容和設(shè)計方法,并培養(yǎng)學
9、生進行規(guī)范化軟件設(shè)計的能力。</p><p> 1.3使學生掌握使用各種計算機資料和有關(guān)參考資料,提高學生進行程序設(shè)計的基本能力。</p><p> 2.系統(tǒng)描述(需求分析)</p><p> 2.1需要處理的基礎(chǔ)數(shù)據(jù)</p><p> 學生基本信息:如班級、學號、姓名、性別、年齡、宿舍號碼、電話號碼等。</p><
10、;p> 學生選修課程的基本信息:課程編號、課程名稱、考試成績、平時成績、綜合成績、學分、</p><p><b> 重修否等。</b></p><p> 2.2系統(tǒng)的基本功能</p><p> 數(shù)據(jù)的錄入:如錄入學生的基本信息,以及該學生選修課程的基本信息;</p><p> 數(shù)據(jù)的修改:如修改指定學號、
11、或者指定姓名的學生信息,或者修改其選修課程信息;</p><p> 數(shù)據(jù)的插入:插入某個學生信息</p><p> 數(shù)據(jù)的查詢:如按學號查詢、按姓名查詢等;</p><p> 數(shù)據(jù)的刪除:如刪除指定學號、或者指定姓名的學生及其選修課的信息;</p><p> 平均成績的計算:計算每個學生各門功課的平均成績,并按平均成績從高到低的次序輸
12、出</p><p><b> 學生信息;</b></p><p> 列出不及格學生清單(學號、姓名、不及格的課程和成績)。</p><p> 考慮用文件把數(shù)據(jù)保存起來(可選)。</p><p><b> 2.3可行性分析</b></p><p> 2.3.1如上所示
13、,該系統(tǒng)要求處理一些學生成績的基本數(shù)據(jù),包括兩個方面:學生身份信息和學生成績信息。具體可以考慮創(chuàng)建兩個類,一個學生基本信息類,一個學科基本信息類。這樣既可以保持二者的獨立性,也可以使之相關(guān)聯(lián)。</p><p> 2.3.2該系統(tǒng)不僅要求能錄入一些基本數(shù)據(jù)外,還要能對這些數(shù)據(jù)進行處理,比如修改,刪除,插入,查詢等。對這些操作的實現(xiàn)可以暫時放開面向?qū)ο?,而采用面向過程的方法。另外,因為對數(shù)據(jù)庫了解不多,可以考慮用文
14、件保存的形式將數(shù)據(jù)保存起來,最后在查找的時候采用文件讀取。</p><p><b> 3.功能模塊設(shè)計</b></p><p> 3.1類的分析與設(shè)計</p><p> 由上面的需求分析可以知道,在本程序中,需要處理兩大類數(shù)據(jù):一個是學生的身份基本信息,另一個是該同學的課程基本信息。而且要求二者既要相互聯(lián)系,又不能太相互制約。于是可以考慮
15、創(chuàng)建兩個類: Stu 類(學生信息類)和 Course 類(課程信息類)。為了使二者相互關(guān)聯(lián),可以讓 Course 的一個類對象作為Stu 對象的一個基本數(shù)據(jù)成員。具體如下:</p><p> 3.1.1 Course類</p><p> 由于學生只需要一些課程信息,故在該類中只有一些基本的成員數(shù)據(jù),不涉及成員函數(shù)之類的對數(shù)據(jù)進行操作的函數(shù)。把對學生信息進行處理的函數(shù)放在Stu類中。&
16、lt;/p><p> 由于這些數(shù)據(jù)信息是作為Stu類的一個信息的,為了使stu類中的函數(shù)可以訪問這些成員數(shù)據(jù),故要將訪問類型定義為public型。</p><p> 3.1.2 Stu類</p><p> 正如上面所述,Course類的一個對象作為Stu類的一個數(shù)據(jù)成員,但是正常情況下,一個同學是不只一門科目的,所以要定義一個Course類的數(shù)組來存放同一學生的不
17、同科目信息Course course[20]。為了其信息的隱蔽性,我們把所有的數(shù)據(jù)成員都聲明為private。</p><p> 接下來,要處理的就是函數(shù)了。有兩種處理方式,但到底是采用成員函數(shù)還是采用友元函數(shù)呢?在本例中,我采用的是友元函數(shù)。原因如下:</p><p> ?。?)采用友元函數(shù),可以使類的結(jié)構(gòu)變得更加簡單,有助于整個設(shè)計過程的思考。</p><p&g
18、t; ?。?)使用友元函數(shù),將函數(shù)獨立于類的結(jié)構(gòu)之外而采用類對象傳參的方式,可以使該函數(shù)的獨立性大大提高,有助于在其他地方的使用。</p><p><b> 具體如下:</b></p><p><b> 友元函數(shù):</b></p><p><b> 3.2整體流程</b></p>
19、<p> 上面已經(jīng)主要分開介紹了兩個獨立的類及其內(nèi)部成員,現(xiàn)在來介紹整個學生系統(tǒng)功能實現(xiàn)的流程。</p><p> 4.主要模塊的算法說明</p><p> 4.1信息的保存和讀取</p><p> 在本次課程設(shè)計中,因為還沒有接觸到數(shù)據(jù)庫的有關(guān)知識,故采用文件流來寫入和讀取信息。主要涉及到fstream類。在系統(tǒng)運行過程中,會利用該類將學生的基本
20、身份信息和基本課程信息全部存到自定義的一個文件中,當需要使用這些數(shù)據(jù)時,例如查詢,修改,顯示等,再將需要的讀取出來進行相關(guān)的操作。</p><p> 4.2 對信息的處理</p><p> 4.2.1 數(shù)據(jù)的錄入和插入</p><p> 數(shù)據(jù)的錄入和插入基本一樣,這里只介紹錄入。</p><p> 當在主菜單里選擇信息錄入時,會跳出錄
21、入頁面,只需依次輸入提示的信息即可。在整個大體框架上,采用一個while語句判斷是否繼續(xù)錄入。注意在錄入學生成績信息時。需要輸入要登記的課程數(shù)目。其中成績信息的各科綜合成績和是否重修不需要手動錄入,它會在登記完平時成績和末考成績后自動生成。當所有信息錄入完成后,該生所有科目的平均成績average也會自動計算。</p><p> 4.2.2 數(shù)據(jù)的查詢</p><p> 所謂數(shù)據(jù)的查
22、詢,就是把存放在文檔中的學生數(shù)據(jù)讀取出來并加以輸出。</p><p> 當只針對某個人的查詢時,需要輸入學號或姓名,再調(diào)用read()函數(shù)將相關(guān)的數(shù)據(jù)讀取出來,至于需要輸出哪些,可以自己控制。</p><p> 當要輸出所有學生的數(shù)據(jù)是時,首先調(diào)用read()函數(shù)返回數(shù)據(jù)的個數(shù)count,即學生的個數(shù)。最后采用for循環(huán)控制依次輸出每一個學生的信息。</p><p&
23、gt; 4.2.3 數(shù)據(jù)的修改</p><p> 當修改數(shù)據(jù)時,只需輸入需要修改學生的學號即可。首先會將該生的相關(guān)信息輸出出來。然后再提示重新輸入信息。執(zhí)行到這里時基本就和前面的數(shù)據(jù)錄入,插入一樣了。</p><p> 4.2.4 數(shù)據(jù)的刪除</p><p> 本例中,對數(shù)據(jù)的刪除比較簡單。只需輸入學號或姓名,當查找到該生的相關(guān)信息后。將后面一個學生的信息賦
24、值給他,相當于該生的信息被覆蓋,也就是刪除。</p><p> 4.2.5 數(shù)據(jù)的排序</p><p> 在需求分析中,有一項功能,按學生成績平均分降序排列。此功能還是比較好實現(xiàn)的。</p><p> 在輸入學生數(shù)據(jù)時,當所有課程分數(shù)輸入完畢,會自動生成一個平均分,該數(shù)值就是學生類Stu中的average數(shù)據(jù)成員。然后采用冒泡法比較大小,把這些學生的數(shù)據(jù)重新排
25、列,最后再依次輸出。</p><p><b> 5.程序運行結(jié)果</b></p><p> 5.1 菜單歡迎界面</p><p><b> 5.2 信息的錄入</b></p><p> 如上所示,依次輸入需要填寫的信息,其中“該門課的綜合成績”和“是否重修”是不需要輸入,系統(tǒng)自動執(zhí)行的。最后
26、還會提示是否繼續(xù)填寫(Y\N)。</p><p><b> 5.3信息的顯示</b></p><p> 在這個功能里面主要顯示全部同學的身份信息和平均分:</p><p><b> 5.4 信息的查詢</b></p><p> 信息的查詢分兩種方式:</p><p>
27、 當你選擇1 時,表示按學號查詢,</p><p> 當你選擇2 時,表示按姓名查詢。</p><p> 下面介紹的是按學號查詢。。。</p><p> 如上所示,當輸入需要查詢的同學的學號時,會輸出該同學的身份信息以及每一門課的綜合成績,還有這些課的平均成績。</p><p><b> 5.5 信息的修改</b&g
28、t;</p><p> 當輸入需要修改的學生學號時,會首先輸出該同學現(xiàn)在的已經(jīng)存在的信息:</p><p><b> 然后提示重新輸入:</b></p><p> 輸入完成后,會提示是否保存:</p><p><b> 5.6 信息的刪除</b></p><p>
29、信息的刪除也分兩種類型:</p><p> 選擇不同的方式,進入不同的界面</p><p><b> 按姓名刪除</b></p><p><b> 按學號刪除</b></p><p> 5.7 按平均分降序排列</p><p> 會輸出學生的一些基本信息和平均分與名
30、次。</p><p> 5.8 查看全部信息</p><p> 由于一個同學的全部信息較多,于是分成兩部分輸出:身份信息和成績信息</p><p> 在身份信息中,主要包括班級,學號,姓名,年齡,性別,宿舍,電話等。在成績信息中,包括該同學的各科成績,是否重修,獲得的學分,以及所有科目的平均分。</p><p> 5.9 輸出不及格學
31、生信息</p><p> 當選擇該功能時,首先會輸出該同學的學號,姓名和班級,然后再輸出他的不及格科目以及分數(shù),如下所示。</p><p><b> 5.10 退出系統(tǒng)</b></p><p><b> 6.課程設(shè)計總結(jié)</b></p><p> ?。?)回顧此次課程設(shè)計,感慨良多,從剛拿到題
32、目時的一臉茫然,到最后能成功解決,覺得此次課程設(shè)計我又學到了好多知識。首先在這里要感謝一下王磊指導老師,經(jīng)過他的細心講解,我才有了一個完整的設(shè)計思路。</p><p> ?。?)在這次課程設(shè)計的過程中,最大的感覺就是對知識的不熟悉,一些C++基礎(chǔ)知識似懂非懂,結(jié)果總要去查書才能寫出不出錯誤的代碼,結(jié)構(gòu)就是耗費了大量的時間,事倍功半。經(jīng)歷這次教訓,我想會對我以后的計算機語言學習起到一定的幫助。</p>
33、<p> ?。?)在這次的課程設(shè)計過程中,通過查書的學習,對C++的了解又加深了不少,包括類的結(jié)構(gòu),以及怎樣在類外訪問類類的私有成員等,我想下次再寫基于對象的程序時,一定會得心應(yīng)手。</p><p> ?。?)還有比較重要的收獲就是類的相互嵌套使用,就拿本例來說,在一個類中設(shè)置一個數(shù)據(jù)成員,而該數(shù)據(jù)成員確是另一個類的對象。這對理解數(shù)據(jù)類型起到了不少的作用。</p><p>
34、(5) 總的來說,這次程序設(shè)計讓我獲益匪淺,對C++語言也有了進一步的認識:語言功能高、表達能力強、使用靈活方便、目標程序效率高等等。C++語言是在國內(nèi)外廣泛使用的一種計算機語言,相信除了以上優(yōu)點,還有許多我們還未發(fā)現(xiàn),希望能在以后的學習中有更深入的認識。</p><p><b> 7.參考文獻</b></p><p> ?。?)C++程序設(shè)計(第二版)
35、 譚浩強 編著</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 //定義一個課程信息類</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;//平時成績</p><p> float final_score;//末考成績</p><p> float average_score;//綜合成績</p><p> float study_score;//學分</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[]) ; //學生成績錄入函數(shù)</p><p> friend void Statistic(Stu stud[]);//學生信息輸出函數(shù)</p><p> friend void Lookup(Stu stud[]) ; //學生成績查找函數(shù)</p&g
41、t;<p> friend void Modify(Stu stud[]) ; //學生成績修改函數(shù)</p><p> friend void Delete(Stu stud[]) ; //學生信息刪除函數(shù)</p><p> friend void Output(Stu stud[]) ; //學生全部信息輸出函數(shù)</p><p> fr
42、iend void Sort(Stu stud[]) ; //學生成績排序函數(shù)</p><p> friend void Insert(Stu stud[]) ; //學生成績插入函數(shù)</p><p> friend void Write(Stu stud[],int n);//學生成績寫入檔案函數(shù)</p><p> friend int Read(S
43、tu stud[]); //學生成績信息讀取函數(shù)</p><p> friend void Showfail(Stu stud[]); //查找不及格學生</p><p><b> private:</b></p><p> int class_num; //班級號碼</p><p> int n
44、um;//學號</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; //定義一個文件輸入輸出類</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ù)返回一個查詢出來的數(shù)值</p><p><b> }</b></p><p> void Input(Stu stud[])
62、 //學生成績錄入函授</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<<"====>> 請輸入學生成績 <<===="<<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<<"學號:";</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<<" 你輸入的學號已經(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<<"請輸入需要登記的學科數(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<<"平時成績:";</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<<"學分:";</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<<" 該學生這幾門課的平均分為:"<<stud[i].average<<endl;</p
78、><p> cout<<"====>提示:是否繼續(xù)寫入學生成績?(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[]) //學生成績數(shù)據(jù)輸出函數(shù)</p><p><b> {</b></p><p>
80、 system("cls");</p><p> int n=Read(stud);</p><p> cout<<"班級"<<"\t"<<"學號"<<"\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[]) //學生成績查找函數(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<<"----->按學號查詢: 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<<"====>> 查找學生成績 <<===="<<endl;</p><p> cout<<"請輸入需要查找學生的學號:"<<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、>提示:對不起,無法找到該學生的信息!"<<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<<"學號:"<<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<<"====>> 查找學生成績 <<===="<<endl;&
98、lt;/p><p> cout<<"請輸入需要查找學生的姓名:"<<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<<"學號:"<<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<<"=====>提示:對不起,無法找到該學生的信息!"<<endl;</p><p><b> }</b><
106、;/p><p><b> }</b></p><p> void Modify(Stu stud[]) //學生成績修改函數(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<<"====>> 修改學生成績 <<===="<<endl;
108、</p><p> cout<<"請輸入需要修改成績學生的學號:"<<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<<"=====>提示:對不起,無該學生的成績……"<<endl;</p><p><b> }</b></p><p>
110、;<b> else</b></p><p><b> {</b></p><p> cout<<"----------該學生的信息----------"<<endl;</p><p> cout<<"班級"<<"\t
111、"<<"學號"<<"\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、<<"請重新輸入該學生的信息"<<endl;</p><p> cout<<"班級:"<<endl;</p><p> cin>>stud[i].class_num;</p><p> cout<<"學號:"<<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<<" 請輸入需要登記的學科數(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<<"平時成績:";</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<<"學分:";</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<<" 該學生這幾門課的平均分為:"<<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[]) //刪除學生信息函數(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<<"請選擇刪除學生信息的方式"<<endl<<endl;</p><p> cout<<"---->按學號刪除 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<<"====>> 刪除學生成績 <<===="<<endl;<
135、/p><p> while(sign!='n'&&sign!='N')</p><p><b> {</b></p><p> cout<<"請輸入需要刪除學生的學號:"<<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定一次只能刪除一個學生</p><p><b> if(i==n)</b></p><p><b> {</b></p><
137、;p> cout<<"====>提示:對不起,無法找到該學生……"<<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ù)刪除學生信息?(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<<"====>> 刪除學生成績 <<===="<<endl;</p><p> while(sign!='n'&&sign!='N')</p>
142、<p><b> {</b></p><p> cout<<"請輸入需要刪除學生的姓名:"<<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<<"====>提示:對不起,無法找到該學生……"<<endl;</p><p><b> break;</b></p><p><b> }</b></p><p><b> n--;<
147、/b></p><p> cout<<"====>提示:是否繼續(xù)刪除學生信息?(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[]) //學生信息插入函數(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<<"====>> 增加學生成績<<===="<<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<<"學號:";</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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++課程設(shè)計----學生成績管理系統(tǒng)
- 學生成績管理系統(tǒng)c++課程設(shè)計
- c++課程設(shè)計-學生成績管理系統(tǒng)
- c++課程設(shè)計---學生成績管理系統(tǒng)
- c++課程設(shè)計---學生成績管理系統(tǒng)
- c++課程設(shè)計——學生成績管理系統(tǒng)
- c++課程設(shè)計--學生成績管理系統(tǒng)
- c++學生成績管理系統(tǒng)課程設(shè)計
- c++課程設(shè)計--學生成績管理系統(tǒng)
- c++課程設(shè)計--學生成績管理
- c++課程設(shè)計--- 學生成績管理系統(tǒng)設(shè)計
- c++課程設(shè)計--學生成績管理
- c++學生成績管理系統(tǒng)課程設(shè)計報告
- c++學生成績管理系統(tǒng)課程設(shè)計報告
- c++學生成績管理系統(tǒng)課程設(shè)計報告
- c++課程設(shè)計報告--學生成績管理系統(tǒng)
- c&c++課程設(shè)計-學生成績管理系統(tǒng)
- c++課程設(shè)計--學生成績管理系統(tǒng)設(shè)計與管理
- c++程序課程設(shè)計報告—學生成績管理系統(tǒng)
- c++程序設(shè)計課程設(shè)計---學生成績管理系統(tǒng)
評論
0/150
提交評論