c++課程設(shè)計(jì)--c++程序設(shè)計(jì)語言_第1頁
已閱讀1頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論