版權(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> 班 級:電氣信息類 班 </p><p><b> 學(xué) 號:</b></p><p><b> 姓 名: </b></p><p><b> 指導(dǎo)教師:</b></p><p><b> 二0一三年零七月
3、</b></p><p><b> 目錄:</b></p><p><b> 1. 課程設(shè)計(jì)目的</b></p><p> 2. 系統(tǒng)描述(需求分析)</p><p> 3. 功能模塊結(jié)構(gòu)(設(shè)計(jì)思路)</p><p> 4. 主要模塊的算法說明</
4、p><p> 5. 程序運(yùn)行結(jié)果(主要截圖及說明)</p><p><b> 6. 課程設(shè)計(jì)總結(jié)</b></p><p><b> 7. 參考文獻(xiàn)</b></p><p> 8. 附錄(程序源代碼)</p><p><b> 一.課程設(shè)計(jì)目的</b>
5、;</p><p> 1、使學(xué)生進(jìn)一步理解和掌握課堂上所學(xué)各種基本抽象數(shù)據(jù)類型的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和操作實(shí)現(xiàn)算法,以及它們在程序中的使用方法;</p><p> 2、使學(xué)生掌握軟件設(shè)計(jì)的基本內(nèi)容和設(shè)計(jì)方法,并培養(yǎng)學(xué)生進(jìn)行規(guī)范化軟件設(shè)計(jì)的能力;</p><p> 3、使學(xué)生掌握使用各種計(jì)算機(jī)資料和有關(guān)參考資料,提高學(xué)生進(jìn)行程序設(shè)計(jì)的基本能力。</p>
6、<p> 二.系統(tǒng)描述(需求分析)</p><p> 小型學(xué)生成績管理系統(tǒng)</p><p> 1、需要處理的基礎(chǔ)數(shù)據(jù)</p><p> ??學(xué)生基本信息:如班級、學(xué)號、姓名、性別、年齡、宿舍號碼、電話號碼等。</p><p> ??學(xué)生選修課程的基本信息:課程編號、課程名稱、考試成績、平時(shí)成績、綜合成績、學(xué)分、重修否等
7、。</p><p><b> 2、系統(tǒng)的基本功能</b></p><p> ??數(shù)據(jù)的錄入:如錄入學(xué)生的基本信息,以及該學(xué)生選修課程的基本信息;</p><p> ??數(shù)據(jù)的修改:如修改指定學(xué)號、或者指定姓名的學(xué)生信息,或者修改其選修課程信息;</p><p> ??數(shù)據(jù)的插入:插入某個學(xué)生信息</p>
8、;<p> ??數(shù)據(jù)的查詢:如按學(xué)號查詢、按姓名查詢等;</p><p> ??數(shù)據(jù)的刪除:如刪除指定學(xué)號、或者指定姓名的學(xué)生及其選修課程信息;</p><p> ??平均成績的計(jì)算:計(jì)算每個學(xué)生各門功課的平均成績,并按平均成績從高到低的次序輸出學(xué)生信息;</p><p> ??列出不及格學(xué)生清單(學(xué)號、姓名、不及格的課程和成績)。</p
9、><p> ??考慮用文件把數(shù)據(jù)保存起來(可選)。</p><p><b> 分析如下:</b></p><p> (1)如上所示,該系統(tǒng)要求處理一些學(xué)生成績的基本數(shù)據(jù),包括兩個方面:學(xué)生身份信息和學(xué)生成績信息。</p><p> ?。?)該系統(tǒng)不僅要求能錄入一些基本數(shù)據(jù)外,還要能對這些數(shù)據(jù)進(jìn)行處理,比如修改,刪除,插
10、入,查詢等。另外,因?yàn)閷?shù)據(jù)庫了解不多,可以考慮用文件保存的形式將數(shù)據(jù)保存起來。</p><p> 三.功能模塊分析(設(shè)計(jì)思路)</p><p> 考慮到每個學(xué)生都是一個對象,而且他們都有一些共性:各種身份信息和成績信息,于是可以定義一個類:里面包含各種成員信息(為了信息的隱蔽性,可以定義成私有數(shù)據(jù))。而對這些數(shù)據(jù)進(jìn)行處理的選項(xiàng),可以用一些函數(shù)來實(shí)現(xiàn),每一個函數(shù)對應(yīng)一個功能。在這里,既
11、可以定義成類的成員函數(shù),也可以定義類</p><p> 的友元函數(shù),為方便,本程序采用后者:友元函數(shù)。具體結(jié)構(gòu)如下:</p><p> 1.Stu類的結(jié)構(gòu):</p><p><b> 2.數(shù)據(jù)成員:</b></p><p><b> 3.功能函數(shù):</b></p><p&
12、gt; 以上每一個函數(shù)的形參都是一個類對象,因?yàn)槭怯言瘮?shù),故可以訪問類的數(shù)據(jù)成員。</p><p> 四.主要模塊的算法說明</p><p><b> 1學(xué)生信息的保存:</b></p><p> 由于沒有學(xué)習(xí)數(shù)據(jù)庫的有關(guān)知識,故在本程序設(shè)計(jì)中要用到文件保存和讀取:定義一個函數(shù)</p><p> void W
13、rite(Stu stud[],int n) //文件寫入函數(shù)</p><p><b> {</b></p><p> fstream myFile; //定義一個文件輸入輸出類</p><p> myFile.open("D:\\student.dat",ios::out|ios::binar
14、y);//目標(biāo)文件位置</p><p> if(!myFile)</p><p><b> {</b></p><p> cout<<"D:\\student.dat can't open!"<<endl;</p><p> //abort();異常終止一個進(jìn)程
15、,和的exit()函數(shù)功能相似</p><p><b> exit(1);</b></p><p><b> }</b></p><p> int count=n;</p><p> myFile<<count<<endl<<endl;</p>
16、<p> for(int i=0; i<=count; i++)</p><p><b> {</b></p><p> myFile<<stud[i].class_0<<"<<stud[i].num<<""<<stud[i].name<<&
17、quot; "<<stud[i].math<<" "<<stud[i].c_program<<""<<stud[i].english<<" "<<stud[i].average<<endl;</p><p><b> }</b>
18、;</p><p> myFile.close();</p><p><b> }</b></p><p> 學(xué)生信息的讀取,和保存很相像,這里不再介紹。</p><p> 2.對學(xué)生信息的處理:</p><p> 遵循一個大的原則,首先要將文件里的信息讀取出來,然后再按照過程化的語句結(jié)
19、構(gòu)對各種信息進(jìn)行處理,比如刪除,修改,插入,查找等,其中修改,插入,查找這三種的算法都比較簡單,只需設(shè)置if條件語句或while循環(huán)語句既可解決,下面著重講一下刪除功能的實(shí)現(xiàn)。在本程序中,采用一種替代的方法,將需要刪除的學(xué)生信息處理掉。即先找到需要刪除的學(xué)生的學(xué)號,然后將其所有的信息全部替換成后面一位同學(xué)的信息,也就是說該同學(xué)的信息全部被覆蓋掉,這樣在查詢的時(shí)候,此學(xué)生已經(jīng)不再存在。</p><p> void
20、 Delete(Stu stud[]) //刪除學(xué)生信息函數(shù)</p><p><b> {</b></p><p> system("cls");//調(diào)用系統(tǒng)函數(shù)cls,清除屏幕</p><p><b> int s;</b></p><p> int n=Rea
21、d(stud);//讀取學(xué)生數(shù)據(jù)</p><p> int i=0,j;</p><p> char sign;</p><p> cout<<endl<<"====>> 刪除學(xué)生成績 <<===="<<endl;</p><p> while(sign!
22、='n'&&sign!='N')</p><p><b> {</b></p><p> cout<<"請輸入需要刪除學(xué)生的學(xué)號:"<<endl;</p><p><b> cin>>s;</b></p>
23、;<p> while((stud[i].num-s)!=0&&i<n) i++;//這種結(jié)構(gòu)形式?jīng)Q定一次只能刪除一個學(xué)生</p><p><b> if(i==n)</b></p><p><b> {</b></p><p> cout<<"====&g
24、t;提示:對不起,無法找到該學(xué)生……"<<endl;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> for(j=i; j<n-1; j++)</
25、p><p><b> {</b></p><p> strcpy(stud[j].class_0,stud[j+1].class_0);//用后面一個學(xué)生的信息取代要刪除的學(xué)生信息,這樣原學(xué)生就已經(jīng)消失</p><p> stud[j].num=stud[j+1].num;</p><p> strcpy(stud[
26、j].name,stud[j+1].name);</p><p> stud[j].math=stud[j+1].math;</p><p> stud[j].c_program=stud[j+1].c_program;</p><p> stud[j].english=stud[j+1].english;</p><p> stud
27、[j].average=stud[j+1].average;</p><p><b> }</b></p><p> cout<<"====>提示:已成功刪除!"<<endl;</p><p><b> }</b></p><p><b&
28、gt; n--;</b></p><p> cout<<"====>提示:是否繼續(xù)刪除學(xué)生信息?(Y/N)";</p><p> cin>>sign;</p><p><b> }</b></p><p> Write(stud,n);//將未刪除的
29、學(xué)生數(shù)據(jù)保存</p><p><b> }</b></p><p><b> 3.排序的實(shí)現(xiàn):</b></p><p> 在本程序中,采用冒泡法對學(xué)生平均成績進(jìn)行排序,即首先將相鄰的兩個學(xué)生的成績進(jìn)行比較,若前者小于后者,則將兩者的信息</p><p> 全部交換,最后再依次按平均分由高到低
30、輸出學(xué)生所有信息。具體實(shí)現(xiàn)過程如下:</p><p> void Sort(Stu stud[]) //學(xué)生成績排序函數(shù)</p><p><b> {</b></p><p> system("cls");//調(diào)用系統(tǒng)函數(shù),清除屏幕</p><p> int i,j,
31、k;</p><p><b> float s;</b></p><p> char t[20];</p><p> cout<<endl<<"====>> 降序排序成績 <<===="<<endl;</p><p> int n=R
32、ead(stud);</p><p> for(i=0; i<n-1; i++)</p><p> for(j=0; j<n-1-i; j++)</p><p> if(stud[j].average<stud[j+1].average)//采用冒泡法比較大小,即相鄰兩個數(shù)比較,把大的放在前面</p><p><
33、b> {</b></p><p> strcpy(t,stud[j+1].class_0); //交換班級序號</p><p> strcpy(stud[j+1].class_0,stud[j].class_0);</p><p> strcpy(stud[j].class_0,t);</p><p> k=st
34、ud[j+1].num;//交換學(xué)號</p><p> stud[j+1].num=stud[j].num;</p><p> stud[j].num=k;</p><p> strcpy(t,stud[j+1].name);//交換姓名</p><p> strcpy(stud[j+1].name,stud[j].name);<
35、;/p><p> strcpy(stud[j].name,t);</p><p> s=stud[j+1].math;//交換數(shù)學(xué)成績</p><p> stud[j+1].math=stud[j].math;</p><p> stud[j].math=s;</p><p> s=stud[j+1].c_pro
36、gram;//交換C++成績</p><p> stud[j+1].c_program=stud[j].c_program;</p><p> stud[j].c_program=s;</p><p> s=stud[j+1].english;//交換英語成績</p><p> stud[j+1].english=stud[j].en
37、glish;</p><p> stud[j].english=s;</p><p> s=stud[j+1].average;//交換平均成績</p><p> stud[j+1].average=stud[j].average;</p><p> stud[j].average=s;</p><p><
38、;b> }</b></p><p> cout<<"----------------------------------------------------"<<endl;</p><p> cout<<"班級"<<"\t"<<"學(xué)號&q
39、uot;<<"\t"<<"姓名"<<"\t"<<"高數(shù)"<<"\t"<<"C++"<<"\t"<<"英語"<<"\t"<<"平均分
40、"<<"\t"<<"名次"<<endl;</p><p> cout<<"----------------------------------------------------"<<endl;</p><p> for(i=0; i<n; i++)&
41、lt;/p><p><b> {</b></p><p> stud[i].order=i+1;</p><p> cout<<stud[i].class_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<
42、<"\t"<<stud[i].math<<"\t"<<stud[i].c_program<<"\t "<<stud[i].english<<"\t"<<stud[i].average<<"\t"<<stud[i].order&
43、lt;<endl;</p><p><b> }</b></p><p> Write(stud,n);</p><p><b> }</b></p><p><b> 五.程序運(yùn)行結(jié)果</b></p><p> 經(jīng)過上面的介紹,該系統(tǒng)的
44、基本功能已經(jīng)具備,下面我們來介紹一下其實(shí)際使用效果:首先點(diǎn)擊運(yùn)行,會出現(xiàn)一個功能菜單供你選擇:</p><p><b> 1.信息的錄入:</b></p><p> 現(xiàn)在,我們首先選擇1,輸入學(xué)生信息:</p><p> 需要多輸入幾次以供后來使用,還可以使用6插入學(xué)生信息。</p><p><b>
45、2.信息的顯示:</b></p><p> 選擇2顯示統(tǒng)計(jì)數(shù)據(jù):</p><p> 選擇8顯示全部學(xué)生具體信息:</p><p><b> 3.查找學(xué)生信息:</b></p><p> 首先出現(xiàn)一個界面需要你輸入學(xué)號:</p><p> 再點(diǎn)擊回車,會出現(xiàn)該學(xué)生的信息:<
46、;/p><p><b> 4.修改學(xué)生成績:</b></p><p> 輸入需要修改的學(xué)生學(xué)號,會首先出現(xiàn)該學(xué)生的原本信息,接著在下面重新填寫該學(xué)生信息,保存即可</p><p><b> 5.刪除學(xué)生數(shù)據(jù):</b></p><p> 輸入需要刪除的學(xué)生的學(xué)號,點(diǎn)擊回車即可刪除,再查看時(shí),該成員
47、已經(jīng)消失</p><p><b> 再次查看全部成員:</b></p><p> 如上所示,已經(jīng)沒有學(xué)號為1005的學(xué)生信息了</p><p> 6.按平均分降序排列:</p><p> 如上所示,在選擇功能7并點(diǎn)擊回車時(shí),會以平均得分降序的形式排列出所有信息,并包含該學(xué)生的名次。</p><
48、p> 7.顯示不及格學(xué)生的信息:</p><p> 選擇功能9,會顯示不及格學(xué)生的身份信息和其不及格科目:</p><p> 如圖所示,這批學(xué)生里面有兩個學(xué)生的成績存在不及格現(xiàn)象,其中1002號學(xué)生有一門不及格科目,1004號學(xué)生有兩門不及格科目。</p><p> 全部都已經(jīng)顯示出來。</p><p><b> 8
49、.安全退出系統(tǒng):</b></p><p><b> 六.課程設(shè)計(jì)總結(jié)</b></p><p> ?。?)回顧此次課程設(shè)計(jì),感慨良多,從剛拿到題目時(shí)的一臉茫然,到最后能成功解決,覺得此次課程設(shè)計(jì)我又學(xué)到了好多知識。首先在這里要感謝一下王磊指導(dǎo)老師,經(jīng)過他的細(xì)心講解,我才有了一個完整的設(shè)計(jì)思路。</p><p> (2)在這次課程設(shè)
50、計(jì)的過程中,最大的感覺就是對知識的不熟悉,一些C++基礎(chǔ)知識似懂非懂,結(jié)果總要去查書才能寫出不出錯誤的代碼,結(jié)構(gòu)就是耗費(fèi)了大量的時(shí)間,事倍功半。經(jīng)歷這次教訓(xùn),我想會對我以后的計(jì)算機(jī)語言學(xué)習(xí)起到一定的幫助。</p><p> ?。?)在這次的課程設(shè)計(jì)過程中,通過查書的學(xué)習(xí),對C++的了解又加深了不少,包括類的結(jié)構(gòu),以及怎樣在類外訪問類類的私有成員等,我想下次再寫基于對象的程序時(shí),一定會得心應(yīng)手。</p>
51、<p> ?。?) 總的來說,這次程序設(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> 七.參考文獻(xiàn)</b></p><p> (1)C
52、++程序設(shè)計(jì)(第二版) 譚浩強(qiáng) 編著</p><p> (2)visual C++從入門到精通 明日科技 編著</p><p> ?。?)C++編程思想 (美)??藸?編著 劉宗田 譯</p><p> 八.附錄(完整源代碼)</p><p> #include <iostream></p>
53、<p> #include <fstream></p><p> #include <stdlib.h></p><p> #include <string.h></p><p> #include <stdio.h></p><p> using namespace s
54、td;</p><p> class Stu</p><p> { //把對類的私有成員的處理函數(shù)全部定義為友元函數(shù)</p><p><b> public:</b></p><p> friend void Input(Stu stud[]) ;
55、 //學(xué)生成績錄入函數(shù)</p><p> friend void Statistic(Stu stud[]);//學(xué)生信息輸出函數(shù)</p><p> friend void Lookup(Stu stud[]) ; //學(xué)生成績查找函數(shù)</p><p> friend void Modify(Stu stud[]) ; //學(xué)生成績修改函數(shù)</p&
56、gt;<p> friend void Delete(Stu stud[]) ; //學(xué)生信息刪除函數(shù)</p><p> friend void Output(Stu stud[]) ; //學(xué)生全部信息輸出函數(shù)</p><p> friend void Sort(Stu stud[]) ; //學(xué)生成績排序函數(shù)</p><p> f
57、riend void Insert(Stu stud[]) ; //學(xué)生成績插入函數(shù)</p><p> friend void Write(Stu stud[],int n);//學(xué)生成績寫入檔案函數(shù)</p><p> friend int Read(Stu stud[]); //學(xué)生成績信息讀取函數(shù)</p><p> friend void
58、Showfail(Stu stud[]); //查找不及格學(xué)生的函數(shù)</p><p><b> private:</b></p><p> char class_0[20];</p><p><b> int num;</b></p><p> char name[8];</p&g
59、t;<p> float math;</p><p> float c_program;</p><p> float english;</p><p> float average;</p><p> int order;</p><p><b> };</b><
60、/p><p> void Write(Stu stud[],int n) //文件寫入函數(shù)</p><p><b> {</b></p><p> fstream myFile; //定義一個文件輸入輸出類</p><p> myFile.open("D:\\studen
61、t.dat",ios::out|ios::binary);</p><p> if(!myFile)</p><p><b> {</b></p><p> cout<<"D:\\student.dat can't open!"<<endl;</p><p&
62、gt; //abort();</p><p><b> exit(1);</b></p><p><b> }</b></p><p> int count=n;</p><p> myFile<<count<<endl<<endl;</p>
63、<p> for(int i=0; i<=count; i++)</p><p><b> {</b></p><p> myFile<<stud[i].class_0<<" "<<stud[i].num<<" "<<stud[i].name&
64、lt;<" "<<stud[i].math<<" "</p><p> <<stud[i].c_program<<" "<<stud[i].english<<" "<<stud[i].average<<endl;</p>
65、<p><b> }</b></p><p> myFile.close();</p><p><b> }</b></p><p> int Read(Stu stud[]) //文件讀取函數(shù)</p><p><b> {</b&g
66、t;</p><p> fstream myFile;</p><p> myFile.open("D:\\student.dat",ios::in|ios::binary);</p><p> if(!myFile)</p><p><b> {</b></p><p&g
67、t; cout<<"D:\\student.dat can't open!"<<endl;</p><p> //abort(); //異常終止一個進(jìn)程,和下面的exit()函數(shù)功能相似</p><p><b> exit(1);</b></p><p><b>
68、; }</b></p><p> int count;</p><p> myFile.seekg(0);</p><p> myFile>>count;</p><p> for(int i=0; i<=count; i++)</p><p><b> {</
69、b></p><p> myFile>>stud[i].class_0>>stud[i].num>>stud[i].name>>stud[i].math>>stud[i].c_program>>stud[i].english>>stud[i].average;</p><p><b>
70、}</b></p><p> myFile.close();</p><p> return count ; //函數(shù)返回一個查詢出來的數(shù)值</p><p><b> }</b></p><p> void Input(Stu stud[]) //學(xué)生成績錄入函授</p
71、><p><b> {</b></p><p> system("cls"); //調(diào)用系統(tǒng)命令cls,清除屏幕</p><p><b> int i=0;</b></p><p><b> int flag;</b></p><
72、p> char sign;</p><p> cout<<endl<<"====>> 請輸入學(xué)生成績 <<===="<<endl;</p><p> while(sign!='n'&&sign!='N')</p><p><
73、;b> {</b></p><p> cout<<" 班級:";</p><p> cin>>stud[i].class_0;</p><p><b> loop:</b></p><p> cout<<" 學(xué)號:";
74、</p><p> cin>>stud[i].num;</p><p><b> int c=0;</b></p><p> while(c<i)</p><p><b> {</b></p><p><b> c++;</b>
75、;</p><p> if(stud[i].num==stud[i-c].num)</p><p><b> {</b></p><p> cout<<" 你輸入的學(xué)號已經(jīng)存在!請重新輸入。"<<endl;</p><p> goto loop;</p>
76、<p><b> }</b></p><p><b> }</b></p><p> cout<<" 姓名: ";</p><p> cin>>stud[i].name;</p><p> do
77、 //學(xué)生信息錄入循環(huán)</p><p><b> {</b></p><p><b> flag=0;</b></p><p> cout<<" 高等數(shù)學(xué):";</p><p> cin>>stud[i].math;</p><
78、;p> if(stud[i].math>100 ||stud[i].math<1)</p><p> cout<<"對不起,請輸入1-100之間的數(shù)字!!\n";</p><p><b> else</b></p><p><b> flag=1;</b></
79、p><p> }while(flag==0);</p><p><b> do</b></p><p><b> {</b></p><p><b> flag=0;</b></p><p> cout<<" C++程序設(shè)計(jì):
80、";</p><p> cin>>stud[i].c_program;</p><p> if(stud[i].c_program>100 ||stud[i].c_program<1)</p><p> cout<<"對不起,請輸入1-100之間的數(shù)字!!\n";</p><
81、p><b> else</b></p><p><b> flag=1;</b></p><p> }while(flag==0);</p><p><b> do</b></p><p><b> {</b></p><
82、;p><b> flag=0;</b></p><p> cout<<" 大學(xué)英語:";</p><p> cin>>stud[i].english;</p><p> if(stud[i].english>100 ||stud[i].english<1)</p>
83、<p> cout<<"對不起,請輸入1-100之間的數(shù)字!!\n";</p><p><b> else</b></p><p><b> flag=1;</b></p><p> }while(flag==0);</p><p> stud
84、[i].average=(stud[i].math+stud[i].c_program+stud[i].english)/3;</p><p> cout<<" 平均分為:"<<stud[i].average<<endl;</p><p> cout<<"====>提示:是否繼續(xù)寫入學(xué)生成績?(Y/N)
85、";</p><p> cin>>sign;</p><p><b> i++;</b></p><p><b> }</b></p><p> Write(stud,i); //調(diào)用文件寫入函數(shù),把信息寫入文件</p><p><b&
86、gt; }</b></p><p> void Statistic(Stu stud[]) //學(xué)生成績數(shù)據(jù)輸出函數(shù)</p><p><b> {</b></p><p> system("cls");</p><p> int n=Read(stu
87、d);</p><p> cout<<endl<<"====>> 輸出學(xué)生統(tǒng)計(jì)數(shù)據(jù) <<===="<<endl;</p><p> cout<<"班級"<<"\t"<<"學(xué)號"<<"\t&q
88、uot;<<" 姓名"<<"\t\t"<<" 平均分"<<endl;</p><p> for(int i=0; i<n; i++)</p><p> cout<<stud[i].class_0<<"\t"<<stud
89、[i].num<<"\t"<<stud[i].name<<"\t\t"<<stud[i].average<<endl;</p><p> system("pause");</p><p><b> }</b></p><p&g
90、t; void Lookup(Stu stud[]) //學(xué)生成績查找函數(shù)</p><p><b> {</b></p><p> system("cls");</p><p> int n=Read(stud);</p><p><b> int s;</b>
91、</p><p><b> int i=0;</b></p><p> cout<<endl<<"====>> 查找學(xué)生成績 <<===="<<endl;</p><p> cout<<"請輸入需要查找學(xué)生的學(xué)號:"<&l
92、t;endl;</p><p><b> cin>>s;</b></p><p> while((stud[i].num-s)!=0&&i<n) i++;</p><p><b> if(i==n)</b></p><p><b> {</b
93、></p><p> cout<<"=====>提示:對不起,無法找到該學(xué)生的信息!"<<endl;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b&
94、gt;</p><p> cout<<"---------------------------"<<endl;</p><p> cout<<"班級:"<<stud[i].class_0<<endl;</p><p> cout<<"學(xué)號:
95、"<<stud[i].num<<endl;</p><p> cout<<"姓名:"<<stud[i].name<<endl;</p><p> cout<<"高等數(shù)學(xué):"<<stud[i].math<<endl;</p>&l
96、t;p> cout<<"C++程序設(shè)計(jì):"<<stud[i].c_program<<endl;</p><p> cout<<"大學(xué)英語:"<<stud[i].english<<endl;</p><p> cout<<"平均分:"&l
97、t;<stud[i].average<<endl;</p><p><b> }</b></p><p><b> }</b></p><p> void Modify(Stu stud[]) //學(xué)生成績修改函數(shù)</p><p><b>
98、{</b></p><p> system("cls");</p><p> int n=Read(stud);</p><p><b> int s;</b></p><p><b> int i=0;</b></p><p> c
99、out<<endl<<"====>> 修改學(xué)生成績 <<===="<<endl;</p><p> cout<<"請輸入需要修改成績學(xué)生的學(xué)號:"<<endl;</p><p><b> cin>>s;</b></p>
100、<p> while((stud[i].num-s)!=0&&i<n) i++;</p><p><b> if(i==n)</b></p><p><b> {</b></p><p> cout<<"=====>提示:對不起,無該學(xué)生的成績……&q
101、uot;<<endl;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> cout<<"----------該學(xué)生的信息----------&quo
102、t;<<endl;</p><p> cout<<"班級"<<"\t"<<"學(xué)號"<<"\t"<<"姓名"<<"\t"<<"高數(shù)"<<"\t"&l
103、t;<"c++"<<"\t"<<"英語"<<"\t"<<"平均分"<<endl;</p><p> cout<<"---------------------------------"<<endl;<
104、/p><p> cout<<stud[i].class_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i].math<<"\t"<<stud[i].c_program&l
105、t;<"\t"<<stud[i].english<<"\t"<<stud[i].average<<endl;</p><p> cout<<"請重新輸入該學(xué)生的信息"<<endl;</p><p> cout<<"班級:&quo
106、t;<<endl;</p><p> cin>>stud[i].class_0;</p><p> cout<<"學(xué)號:"<<endl;</p><p> cin>>stud[i].num;</p><p> cout<<"姓名:&q
107、uot;<<endl;</p><p> cin>>stud[i].name;</p><p> cout<<"高等數(shù)學(xué):"<<endl;</p><p> cin>>stud[i].math;</p><p> cout<<"C++
108、程序設(shè)計(jì):"<<endl;</p><p> cin>>stud[i].c_program;</p><p> cout<<"大學(xué)英語:"<<endl;</p><p> cin>>stud[i].english;</p><p> stud[i
109、].average=(stud[i].math+stud[i].c_program+stud[i].english)/3;</p><p> cout<<"平均分為:"<<stud[i].average<<endl;</p><p><b> char c;</b></p><p>
110、 cout<<"是否保存數(shù)據(jù)?(y/n)"<<endl;</p><p><b> cin>>c;</b></p><p> if(c!='n'&&c!='N')</p><p> Write(stud,n);</p>&
111、lt;p><b> }</b></p><p><b> }</b></p><p> void Delete(Stu stud[]) //刪除學(xué)生信息函數(shù)</p><p><b> {</b></p><p> system("
112、cls");</p><p><b> int s;</b></p><p> int n=Read(stud);</p><p> int i=0,j;</p><p> char sign;</p><p> cout<<endl<<"==
113、==>> 刪除學(xué)生成績 <<===="<<endl;</p><p> while(sign!='n'&&sign!='N')</p><p><b> {</b></p><p> cout<<"請輸入需要刪除學(xué)生的學(xué)號:
114、"<<endl;</p><p><b> cin>>s;</b></p><p> while((stud[i].num-s)!=0&&i<n) i++;//這種結(jié)構(gòu)形式?jīng)Q定一次只能刪除一個學(xué)生</p><p><b> if(i==n)</b></p&
115、gt;<p><b> {</b></p><p> cout<<"====>提示:對不起,無法找到該學(xué)生……"<<endl;</p><p><b> }</b></p><p><b> else</b></p>
116、<p><b> {</b></p><p> for(j=i; j<n-1; j++)</p><p><b> {</b></p><p> strcpy(stud[j].class_0,stud[j+1].class_0);//用后面一個學(xué)生的信息取代要刪除的學(xué)生信息,這樣原學(xué)生就已經(jīng)消失&
117、lt;/p><p> stud[j].num=stud[j+1].num;</p><p> strcpy(stud[j].name,stud[j+1].name);</p><p> stud[j].math=stud[j+1].math;</p><p> stud[j].c_program=stud[j+1].c_program;&
118、lt;/p><p> stud[j].english=stud[j+1].english;</p><p> stud[j].average=stud[j+1].average;</p><p><b> }</b></p><p> cout<<"====>提示:已成功刪除!"
119、<<endl;</p><p><b> }</b></p><p><b> n--;</b></p><p> cout<<"====>提示:是否繼續(xù)刪除學(xué)生信息?(Y/N)";</p><p> cin>>sign;<
120、/p><p><b> }</b></p><p> Write(stud,n);</p><p><b> }</b></p><p> void Insert(Stu stud[]) //學(xué)生信息插入函數(shù)</p><p><b> {&l
121、t;/b></p><p> system("cls");</p><p> int n=Read(stud);</p><p><b> char s;</b></p><p> cout<<endl<<"====>> 增加學(xué)生成績<
122、<===="<<endl;</p><p> while(s!='n'&&s!='N')</p><p><b> {</b></p><p> cout<<"班級:"<<endl;</p><p&g
123、t; cin>>stud[n].class_0;</p><p> cout<<"學(xué)號:";</p><p> cin>>stud[n].num;</p><p> cout<<"姓名:";</p><p> cin>>stud[n]
124、.name;</p><p> cout<<"高等數(shù)學(xué):";</p><p> cin>>stud[n].math;</p><p> cout<<"C++程序設(shè)計(jì):";</p><p> cin>>stud[n].c_program;</p
125、><p> cout<<"大學(xué)英語:";</p><p> cin>>stud[n].english;</p><p> stud[n].average=(stud[n].math+stud[n].c_program+stud[n].english)/3;</p><p> cout<&l
126、t;"平均分"<<stud[n].average;</p><p><b> n++;</b></p><p> cout<<"=====>提示:插入成功!"<<endl;</p><p> cout<<"是否繼續(xù)輸入(y/n)&quo
127、t;<<endl;</p><p><b> cin>>s;</b></p><p><b> }</b></p><p> Write(stud,n);</p><p><b> }</b></p><p> void
128、 Sort(Stu stud[]) //學(xué)生成績排序函數(shù)</p><p><b> {</b></p><p> system("cls");</p><p> int i,j,k;</p><p><b> float s;</b></p
129、><p> char t[20];</p><p> cout<<endl<<"====>> 降序排序成績 <<===="<<endl;</p><p> int n=Read(stud);</p><p> for(i=0; i<n-1; i++)&l
130、t;/p><p> for(j=0; j<n-1-i; j++)</p><p> if(stud[j].average<stud[j+1].average)//采用冒泡法比較大小,即相鄰兩個數(shù)比較,把大的放在前面</p><p><b> {</b></p><p> strcpy(t,stud[j+1
131、].class_0); //交換班級序號</p><p> strcpy(stud[j+1].class_0,stud[j].class_0);</p><p> strcpy(stud[j].class_0,t);</p><p> k=stud[j+1].num;//交換學(xué)號</p><p> stud[j+1].num=stu
132、d[j].num;</p><p> stud[j].num=k;</p><p> strcpy(t,stud[j+1].name);//交換姓名</p><p> strcpy(stud[j+1].name,stud[j].name);</p><p> strcpy(stud[j].name,t);</p><
133、;p> s=stud[j+1].math;//交換數(shù)學(xué)成績</p><p> stud[j+1].math=stud[j].math;</p><p> stud[j].math=s;</p><p> s=stud[j+1].c_program;//交換C++成績</p><p> stud[j+1].c_program=s
134、tud[j].c_program;</p><p> stud[j].c_program=s;</p><p> s=stud[j+1].english;//交換英語成績</p><p> stud[j+1].english=stud[j].english;</p><p> stud[j].english=s;</p>
135、<p> s=stud[j+1].average;//交換平均成績</p><p> stud[j+1].average=stud[j].average;</p><p> stud[j].average=s;</p><p><b> }</b></p><p> cout<<&quo
136、t;----------------------------------------------------"<<endl;</p><p> cout<<"班級"<<"\t"<<"學(xué)號"<<"\t"<<"姓名"<<&q
137、uot;\t"<<"高數(shù)"<<"\t"<<"C++"<<"\t"<<"英語"<<"\t"<<"平均分"<<"\t"<<"名次"<<
138、endl;</p><p> cout<<"----------------------------------------------------"<<endl;</p><p> for(i=0; i<n; i++)</p><p><b> {</b></p><
139、p> stud[i].order=i+1;</p><p> cout<<stud[i].class_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i].math<<"\t&quo
140、t;<<stud[i].c_program<<"\t "<<stud[i].english<<"\t"<<stud[i].average<<"\t"<<stud[i].order<<endl;</p><p><b> }</b><
141、;/p><p> Write(stud,n);</p><p><b> }</b></p><p> void Output(Stu stud[]) //輸出全部學(xué)生成績</p><p><b> {</b></p><p> sys
142、tem("cls");</p><p> int n=Read(stud);</p><p> cout<<endl<<"====>> 顯示全部學(xué)生成績 <<===="<<endl;</p><p><b> if(!stud)</b>&l
143、t;/p><p> cout<<"沒有記錄";</p><p><b> else</b></p><p><b> {</b></p><p> cout<<"----------------------------------------
144、------------"<<endl;</p><p> cout<<"班級"<<"\t"<<"學(xué)號"<<"\t"<<"姓名"<<"\t"<<"高數(shù)"<<
145、"\t"<<"c++"<<"\t"<<"英語"<<"\t"<<"平均分"<<endl;</p><p> cout<<"----------------------------------------
146、--------"<<endl;</p><p> for(int i=0; i<n; i++)</p><p><b> {</b></p><p> cout<<stud[i].class_0<<"\t "<<stud[i].num<<&q
147、uot;\t "<<stud[i].name<<"\t "<<stud[i].math<<" \t"<<stud[i].c_program<<"\t "<<stud[i].english<<"\t"<<stud[i].average<&
148、lt;endl;</p><p><b> }</b></p><p> cout<<"--------------------------------------------------------"<<endl;</p><p><b> }</b></p>
149、<p><b> }</b></p><p> void Showfail(Stu stud[])</p><p><b> {</b></p><p> system("cls");</p><p> int n=Read(stud);</p>
150、;<p> cout<<endl<<"====>部分不及格學(xué)生信息顯示如下<===="<<endl;</p><p><b> if(!stud)</b></p><p><b> {</b></p><p> cout<<
151、;"對不起,現(xiàn)在還沒有學(xué)生信息記錄!"<<endl;</p><p><b> exit(1);</b></p><p><b> }else</b></p><p><b> {</b></p><p> for(int i=0;i&l
152、t;n;i++)</p><p><b> {</b></p><p> if(stud[i].math<60 || stud[i].c_program<60 || stud[i].english<60)</p><p><b> {</b></p><p> cout&l
153、t;<"班級"<<"\t"<<"學(xué)號"<<"\t"<<"姓名"<<endl;</p><p> cout<<stud[i].class_0<<"\t"<<stud[i].num<<
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《程序設(shè)計(jì)語言(c++)》課程設(shè)計(jì)
- c++程序設(shè)計(jì)語言課程設(shè)計(jì)-收銀臺結(jié)算程序
- c++程序設(shè)計(jì)語言課程設(shè)計(jì)-收銀臺結(jié)算程序
- c++課程設(shè)計(jì)-- c++面向?qū)ο蟪绦蛟O(shè)計(jì)
- 《c++語言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告
- c與c++程序設(shè)計(jì)語言大作業(yè)項(xiàng)目開發(fā)
- c++程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- c++程序設(shè)計(jì)語言作業(yè)題及解析
- 高級語言程序設(shè)計(jì)c++課程答辯
- 《c++語言程序設(shè)計(jì)》課程輔導(dǎo)二
- 一c++語言概述c++簡單程序設(shè)計(jì)
- c++語言程序設(shè)計(jì)試題
- 《c++程序設(shè)計(jì)課程設(shè)計(jì)——復(fù)數(shù)類》
- 《高級語言程序設(shè)計(jì)》c++課程設(shè)計(jì)數(shù)值微分
- 重大2016年c++程序設(shè)計(jì)語言 ( 第3次 )
- c++程序設(shè)計(jì)
- c++程序設(shè)計(jì) 課程大綱
- 重大2016年c++程序設(shè)計(jì)語言 ( 第1次 )
- 重大2016年c++程序設(shè)計(jì)語言 ( 第2次 )
- c++程序設(shè)計(jì)
評論
0/150
提交評論