2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計任務(wù)書</b></p><p><b>  目 錄</b></p><p>  1 題目內(nèi)容及設(shè)計要求1</p><p><b>  2 總體設(shè)計1</b></p><p>  2.1 總體功能框圖1</p>&l

2、t;p>  2.2 類的設(shè)計說明1</p><p>  2.3 主要算法流程圖1</p><p>  3程序清單及注釋1</p><p>  4運行結(jié)果與分析1</p><p><b>  5總結(jié)2</b></p><p><b>  6參考文獻2</

3、b></p><p><b>  題目內(nèi)容及設(shè)計要求</b></p><p>  題目: 統(tǒng)計學(xué)生成績</p><p><b>  內(nèi)容及要求:</b></p><p>  要求編寫一個“Student”類及用來存取文件的save()和load()函數(shù),使用函數(shù)及運算符重載技術(shù)完成如下操

4、作:</p><p> ?。?)計算每個學(xué)生的平均成績,將數(shù)據(jù)存入文件stud.dat中并驗證是否正確地存入了文件。</p><p> ?。?)要求對“<<”和“>>”運算符進行重載。</p><p> ?。?)把學(xué)生姓名和平均成績抽取出來,建立一個簡明文件stud_mean.dat,并驗證是否正確地存入了。</p><p

5、> ?。?)從文件stud.dat按如下格式輸出大于等于平均成績的學(xué)生信息:</p><p>  學(xué)號 姓名 算術(shù) 語文 平均</p><p> ?。?)將兩門功課成績都不及格的學(xué)生信息從文件中刪除并另外存入文件bad.dat中。(6)編寫能檢索文件中某個學(xué)生信息的子程序。如無此學(xué)生,輸出“未查到”信息。(7)使用多文件編程和菜單操作。</p><

6、;p><b>  2 總體設(shè)計</b></p><p>  2.1 總體功能框圖</p><p>  圖2-1總體功能框圖</p><p>  2.2 類的設(shè)計說明 </p><p>  設(shè)計一個菜單,通過菜單選擇實現(xiàn)相應(yīng)的操作,對于輸入的原始信息,使用鏈表存儲它們,這樣做的好處是,可以隨時增加內(nèi)容,也容易將兩

7、門功課不及格的學(xué)生從文件中刪除。為學(xué)生設(shè)計一個類,單獨設(shè)計完成這個這個文件讀寫的成員函數(shù)。</p><p>  使用結(jié)構(gòu)數(shù)組作為學(xué)生信息簡表和兩門不及格的學(xué)生的存儲器,由它們和文件建立讀寫關(guān)系,需要顯示它們時,現(xiàn)將文件讀入內(nèi)存,然后再顯示。需要顯示輸出大于等于平均成績的學(xué)生信息時,則直接從內(nèi)存鏈表中篩選。當然,需要顯示原始信息時,也通過直接顯示鏈表信息的方法實現(xiàn)。這四種數(shù)據(jù)的顯示問題均通過一個成員函數(shù)來實現(xiàn)。&l

8、t;/p><p>  為了操作方便,原始數(shù)據(jù)可以單獨存取.修改和查詢。</p><p>  2.3 主要算法流程圖</p><p>  圖2-2 算法流程圖</p><p><b>  圖2-3算法流程圖</b></p><p><b>  -</b></p>&

9、lt;p><b>  程序清單及注釋</b></p><p>  Header Files</p><p><b>  Cpp9.h</b></p><p>  #if !defined(CPP9_H) </p><p>  #define CPP9_H

10、 </p><p>  #include <fstream.h> //對文件操作 文件輸入輸出</p><p>  #include <stdlib.h> //標準庫頭文件 定義雜項函數(shù)及內(nèi)存分配函數(shù)</p><p>  #includ

11、e <stdio.h> //定義輸入輸出函數(shù)</p><p>  #include <string.h> //字符串處理</p><p>  #include <iostream.h> //數(shù)據(jù)輸入輸出</p><

12、;p>  #define ASK(p) { do {p = new Student; if (p == NULL) {cout << "memory fail!" << endl; exit(-1);}}while(0);}; //宏定義</p><p>  static struct shorts {

13、 //靜態(tài)結(jié)構(gòu)體聲明 定義變量</p><p>  char name[16];</p><p>  double ave;</p><p>  }sm[10]={{" ",0}}; //給靜態(tài)結(jié)構(gòu)體變量賦初值</p><p>  stat

14、ic struct bads { // 靜態(tài)結(jié)構(gòu)體聲明 定義變量</p><p>  char no[10]; //定義學(xué)生總數(shù)</p><p>  char name[16]; //定義學(xué)生姓名</p><p>  

15、int math; //定義數(shù)學(xué)成績</p><p>  int chi; //定義語文成績</p><p>  double ave; //定義平均成績</p><p>  }bad[1

16、0]={{" "," ",0,0}}; //給靜態(tài)結(jié)構(gòu)體變量賦初值</p><p>  class Student //定義一個學(xué)生類</p><p><b>  {</b></p><p>  pr

17、ivate: //定義私有成員</p><p>  char no[10]; </p><p>  char name[16];</p><p><b>  int math;</b></p><p>

18、<b>  int chi;</b></p><p>  double ave;</p><p>  Student *next; //定義對象指針</p><p>  int menu_select(void); //聲明菜單選擇函數(shù)</p>

19、<p>  public: //定義公有成員</p><p>  static int count; //定義了一個靜態(tài)對象</p><p>  Student(); //構(gòu)造函數(shù)的聲明</p>

20、<p>  ~Student(); //析構(gòu)函數(shù)的聲明</p><p>  Student *input(Student *); //輸入信息函數(shù)的聲明</p><p>  void display(Student *); //顯示數(shù)據(jù)信息函數(shù)的聲明&l

21、t;/p><p>  void save(Student *); //文件存儲操作函數(shù)的聲明</p><p>  Student *load(Student *); //文件讀取操作函數(shù)的聲明</p><p>  void handle_menu(Student *);

22、 //菜單處理函數(shù)的聲明</p><p>  Student *delete_record(Student *); //刪除學(xué)生信息函數(shù)的聲明</p><p>  void short_record(Student *); //建立簡明文件的聲明</p><p>  Student *bad_record(St

23、udent *top); //建立不及格文件的聲明</p><p>  void Student::find_record(Student *); //查詢學(xué)生信息文件的聲明</p><p>  friend ostream &operator <<( ostream &os, Student &ob); //重載"

24、<<"運算符函數(shù)聲明</p><p>  friend istream &operator >>( istream &is, Student &ob);//重載">>"運算符函數(shù)聲明</p><p><b>  };</b></p><p><b&g

25、t;  #endif</b></p><p>  Source Files</p><p><b>  Cpp9.cpp</b></p><p>  #include "cpp9.h"</p><p>  int Student::count=0;//聲明靜態(tài)成員記錄計數(shù)變量&

26、lt;/p><p>  /***************************************</p><p><b>  *構(gòu)造函數(shù)</b></p><p>  ***************************************/</p><p>  Student::Student()

27、 //定義構(gòu)造函數(shù)</p><p><b>  {</b></p><p>  next=NULL;</p><p>  name[0]='0';</p><p>  no[0]=' ';</p><p><b>  math

28、=0;</b></p><p><b>  chi=0;</b></p><p><b>  ave=0.0;</b></p><p><b>  }</b></p><p>  /***************************************<

29、;/p><p><b>  *析構(gòu)函數(shù)</b></p><p>  ***************************************/</p><p>  Student::~Student() //定義析構(gòu)函數(shù)</p><p><b>  {</b

30、></p><p>  if (next !=NULL)</p><p>  delete next; </p><p>  } //缺省析構(gòu)函數(shù)體為空</p><p>  void main()

31、 //定義主函數(shù)</p><p><b>  {</b></p><p>  Student *top; //定義對象指針</p><p><b>  ASK(top);</b></p><p>  top->handl

32、e_menu(top);</p><p><b>  }</b></p><p>  /***********************************</p><p><b>  *菜單處理函數(shù)</b></p><p>  **********************************

33、*/</p><p>  void Student::handle_menu(Student *top) //定義菜單處理函數(shù)</p><p><b>  {</b></p><p>  for ( ; ; ) //相當于while(1)語句(死循環(huán))</p>&

34、lt;p><b>  {</b></p><p>  switch(menu_select())</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  top = input(top);

35、 //調(diào)用輸入信息函數(shù)</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  display(top); //調(diào)用顯示數(shù)據(jù)信息函數(shù)</p><p><b>  break;<

36、/b></p><p><b>  case 3:</b></p><p>  save(top); //調(diào)用文件存儲操作函數(shù)</p><p><b>  break;</b></p><p><b>  case 4:</b><

37、;/p><p>  top=load(top); //調(diào)用文件讀取操作函數(shù)</p><p><b>  break;</b></p><p><b>  case 5:</b></p><p>  top=delete_record(top); //調(diào)用刪除

38、學(xué)生信息數(shù)據(jù)函數(shù)</p><p><b>  break;</b></p><p><b>  case 6:</b></p><p>  short_record(top); //調(diào)用生成簡明文件函數(shù)</p><p><b>  break;</b>&

39、lt;/p><p><b>  case 7:</b></p><p>  top=bad_record(top); //調(diào)用查詢學(xué)生信息函數(shù)</p><p><b>  break;</b></p><p><b>  case 8:</b></p&

40、gt;<p>  find_record(top);</p><p><b>  break;</b></p><p><b>  case 9:</b></p><p>  cout<<"\t退出操作,再見!"<<endl;</p><p>

41、;  delete top;</p><p>  return; //退出函數(shù)</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p

42、>  /***********************************</p><p><b>  *菜單選擇函數(shù)</b></p><p>  ***********************************/</p><p>  int Student::menu_select() //定義菜單選擇函數(shù)&

43、lt;/p><p><b>  {</b></p><p>  char s[2];</p><p><b>  int cn=0;</b></p><p>  cout<<'\n'</p><p>  <<"\t1,增加原始記錄

44、\n"</p><p>  <<"\t2,顯示各種文件\n"</p><p>  <<"\t3,保存原始文件\n"</p><p>  <<"\t4,讀取原始文件\n"</p><p>  <<"\t5,刪除原始記

45、錄\n"</p><p>  <<"\t6,建立簡明文件\n"</p><p>  <<"\t7,均不及格文件\n"</p><p>  <<"\t8,尋找原始記錄\n"</p><p>  <<"\t9,結(jié)束程

46、序運行\(zhòng)n"</p><p>  <<"\n\t左邊數(shù)字對應(yīng)功能選擇,請選擇1~9:"<<flush;</p><p>  for( ; ; )</p><p><b>  {</b></p><p>  gets(s); //從鍵盤接受字符串

47、,并放入數(shù)組s中</p><p>  cn=atoi(s);</p><p>  if(cn<1||cn>9) cout<<"\n\t輸入錯誤,重選1- 9:"<<flush;</p><p>  else break;</p><p><b>  }</b>&l

48、t;/p><p>  return cn; //退出函數(shù)</p><p><b>  }</b></p><p>  Save_load.cpp</p><p>  #include "cpp9.h"</p><p>  /*****************

49、**</p><p>  * 文件存儲操作函數(shù)</p><p>  *******************/</p><p>  void Student::save(Student *top) //定義文件存儲操作函數(shù)</p><p><b>  {</b></p><p

50、>  if(top->name[0]=='0') //如果指針指向?qū)ο蟮膎ame等于0,那么就直接退出函數(shù)</p><p><b>  {</b></p><p>  cout<<"\t沒有記錄可存!"<<endl;</p><p>  return;

51、 //退出函數(shù)</p><p><b>  }</b></p><p>  ofstream out; //建立輸出流對象</p><p>  out.open("stud.dat",ios::out); //與stud.dat關(guān)聯(lián)并制

52、定以輸出方式打開</p><p>  if (!out) //如果文件不能打開</p><p><b>  {</b></p><p>  cout<<"\t不能打開文件!"<<endl;</p><p>  exit(1);

53、 //非正常退出</p><p><b>  }</b></p><p>  cout<<"\n\t存文件"<<endl;</p><p>  out<<top->count<<'\n'; //重載"

54、<<"運算符</p><p>  Student *p=top; //定義對象指針</p><p>  while(p!=NULL) //當p不為空時</p><p><b>  {</b></p><p>  out<< *p;

55、 //重載"<<"運算符</p><p>  p=p->next; //對象訪問成員</p><p><b>  }</b></p><p>  out.close(); //關(guān)閉文件</p><

56、;p>  cout<<'\t'<<top->count<<"條記錄已經(jīng)存入文件,請繼續(xù)操作。"<<endl;</p><p><b>  }</b></p><p>  /*******************</p><p>  * 文件讀取操作函

57、數(shù)</p><p>  *******************/</p><p>  Student *Student::load(Student *top) //定義文件讀取操作函數(shù)</p><p><b>  {</b></p><p>  ifstream in;

58、 //建立輸入流對象</p><p>  in.open("stud.dat",ios::in|ios::nocreate);//與stud.dat關(guān)聯(lián)并制定以輸入方式打開/如果文件不存在,則打開文件失敗</p><p>  if(!in) //如果打開文件失敗</p><p><b>  {</

59、b></p><p>  cout<<"\t文件不存在!"<<endl;</p><p>  return top;</p><p><b>  }</b></p><p>  cout<<"\n\t取文件..."<<endl;

60、</p><p>  in>>top->count;</p><p>  in.ignore();</p><p>  Student *p=top;</p><p>  Student *old;</p><p>  for(int i=0;i<top->count;i++)</p

61、><p><b>  {</b></p><p><b>  in>>*p;</b></p><p>  ASK(p->next);</p><p><b>  old=p;</b></p><p>  p=p->next;</

62、p><p>  in.ignore();</p><p><b>  }</b></p><p>  old->next=NULL;</p><p>  in.close(); //關(guān)閉文件</p><p>  cout<&

63、lt;"\t取入"<<top->count<<"條記錄."<<endl;</p><p>  return(top); //退出函數(shù)</p><p><b>  }</b></p><p>  /***

64、****************</p><p>  * 重載>>運算符函數(shù)</p><p>  *******************/</p><p>  istream & operator >>(istream &is,Student &ob) //重載">>"運算符函數(shù)聲明&l

65、t;/p><p><b>  {</b></p><p>  is.getline(ob.no,10,'\n'); //使其能夠讀入字符串中的空格</p><p>  is.getline(ob.name,16,'\n'); //使其能夠讀入字符串中的空格</p><p>  is&g

66、t;>ob.math;</p><p>  is>>ob.chi;</p><p>  is>>ob.ave;</p><p>  return is; //退出函數(shù)</p><p><b>  }</b></p><

67、;p>  /*******************</p><p>  * 重載<<運算符函數(shù)</p><p>  *******************/</p><p>  ostream & operator<<(ostream &os,Student &ob) //重載"<<&qu

68、ot;運算符函數(shù)聲明</p><p><b>  {</b></p><p>  os<<ob.no<<'\n';</p><p>  os<<ob.name<<'\n';</p><p>  os<<ob.math<<

69、;'\n';</p><p>  os<<ob.chi<<'\n';</p><p>  os<<ob.ave<<'\n';</p><p>  return os; //退出函數(shù)</p><

70、p><b>  }</b></p><p>  Input_disp.cpp</p><p>  #include"cpp9.h"</p><p>  /******************</p><p><b>  * 輸入信息函數(shù)</b></p><

71、;p>  ******************/</p><p>  Student *Student::input(Student *top) //定義輸入信息函數(shù)</p><p><b>  {</b></p><p>  ifstream in; //

72、建立輸入流對象</p><p>  in.open("sname",ios::in|ios::nocreate); //與sname關(guān)聯(lián)并制定以輸入方式打開/如果文件不存在,則打開文件失敗</p><p>  if(!in) //判斷是否已有文件</p><p><b>  {</b>

73、</p><p>  cout<<"\t還沒有建文件,退出時別忘記存文件。"<<endl;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p>

74、;<p>  in.close(); //關(guān)閉文件</p><p>  if(top->count==0) //如果指針指向?qū)ο蟮腸ount等于0,那么就直接退出函數(shù) </p><p><b>  {</b></p><p>  cout<&l

75、t;"\t請稍候,取已有文件..."<<endl;</p><p>  top=load(top); //函數(shù)調(diào)用</p><p><b>  }</b></p><p><b>  }</b></p><p>  St

76、udent *old,*star; //定義對象指針</p><p>  ASK(star); //重新初始化</p><p>  old=top; //對象指針訪問對象</p&g

77、t;<p>  while(old->next!=NULL)</p><p><b>  {</b></p><p>  old=old->next;</p><p><b>  }</b></p><p>  cout<<"\t輸入數(shù)據(jù),輸入0時結(jié)束

78、。"<<endl;</p><p>  --top->count;</p><p><b>  do</b></p><p><b>  {</b></p><p>  ++top->count;</p><p>  cout<<

79、"\t學(xué)號:"<<flush;</p><p>  gets(star->no); //從鍵盤接受學(xué)號</p><p>  if(strcmp(star->no,"0")==0) //比較字符串</p><p>&l

80、t;b>  break;</b></p><p>  cout<<"\t名字:"<<flush;</p><p>  gets(star->name); //從鍵盤接受名字</p><p>  cout<<"\t數(shù)學(xué):"

81、<<flush;</p><p>  cin>>star->math; //輸入數(shù)學(xué)成績</p><p>  cout<<"\t語文:"<<flush;</p><p>  cin>>star->chi;

82、 //輸入語文成績</p><p>  star->ave=(star->chi+star->math)/2; //計算平均成績</p><p>  if(top->count==0) top=star;</p><p>  old->next=star;</p>&l

83、t;p><b>  old=star;</b></p><p>  ASK(star);</p><p>  }while(1);</p><p>  old->next=NULL;</p><p>  return(top); //

84、退出函數(shù)</p><p><b>  }</b></p><p>  /**********************</p><p>  * 顯示數(shù)據(jù)信息的函數(shù)</p><p>  **********************/</p><p>  void Student::display(St

85、udent *top) //定義顯示數(shù)據(jù)信息函數(shù)</p><p><b>  {</b></p><p>  char choose[2];//,input[30];</p><p><b>  int cn=0;</b></p><p>  cout&l

86、t;<"\t選擇要看到的文件類型"<<endl;</p><p>  cout<<"\t1.原文件"<<endl;</p><p>  cout<<"\t2.簡明文件"<<endl;</p><p>  cout<<"\

87、t3.均不及格文件"<<endl;</p><p>  cout<<"\t4.輸出高于或等于平均成績的學(xué)生名單"<<flush;</p><p>  cout<<"\t請選擇1-4:"<<flush;</p><p>  gets(choose) ;

88、 //從鍵盤接受字符串</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  cn=atoi(choose);</p><p>  if(cn<1||cn>4)</p><p

89、><b>  {</b></p><p>  cout<<"\t輸入錯誤,重選1-4:"<<flush;</p><p>  gets(choose); //從鍵盤接受字符串</p><p><b>  }</b></p><p&

90、gt;  else break;</p><p><b>  }</b></p><p>  switch(cn)</p><p><b>  { </b></p><p>  case 1: //顯示原始數(shù)據(jù)</p><p&g

91、t;<b>  {</b></p><p>  if(top->count==0)</p><p><b>  {</b></p><p>  cout<<"\n\t現(xiàn)在沒有記錄!"<<endl;</p><p><b>  return;

92、</b></p><p><b>  }</b></p><p>  Student*p=top;</p><p>  cout<<"\n\t現(xiàn)在共有如下"<<count<<"條記錄:\n";</p><p>  cout<&l

93、t;"\t學(xué)號\t名字\t數(shù)學(xué)\t語文\t平均\n";</p><p>  while(p!=NULL) //當p為非空時</p><p><b>  {</b></p><p>  cout<<'\t'<<p->no<<'\t&#

94、39;<<p->name<<'\t'</p><p>  <<p->math<<'\t'<<p->chi<<'\t'<<p->ave<<'\n'; //輸出原始數(shù)據(jù)</p><p>  p=p->nex

95、t;</p><p><b>  }</b></p><p>  cout<<endl;</p><p><b>  break;</b></p><p><b>  }</b></p><p>  case 2:

96、 //顯示簡明文件 </p><p><b>  {</b></p><p>  ifstream in; //建立輸入流對象</p><p>  in.open("stud_mean.dat",ios::in|ios::no

97、create);//與stud_mean.dat關(guān)聯(lián)并制定以輸入方式打開/如果文件不存在,則打開文件失敗</p><p>  if(!in) //判斷是否已有文件</p><p><b>  {</b></p><p>  cout<<"\t文件不存在!"<&

98、lt;endl;</p><p>  return; //退出函數(shù) </p><p><b>  }</b></p><p>  cout<<"\n\t取文件..."<<endl;</p><

99、;p>  in.read((char*)sm,sizeof sm);</p><p>  in.close(); //關(guān)閉文件</p><p>  cout<<"\t名字\t平均成績\n";</p><p>  for(int i=0;i<10;i++)//,p=p->next

100、)</p><p><b>  {</b></p><p>  if(sm[i].ave==0) break;</p><p>  cout<<'\t'<<sm[i].name<<'\t'<<sm[i].ave<<endl;</p><

101、;p><b>  }</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  case 3: //顯示均不及格文件</p><p><b>  {

102、</b></p><p>  ifstream in; //建立輸入流對象 </p><p>  in.open("bad.dat",ios::in|ios::nocreate);//與bad.dat關(guān)聯(lián)并制定以輸入方式打開/如果文件不存在,則打開文件失敗</p><p>  if(!in

103、) //判斷是否已有文件</p><p><b>  {</b></p><p>  cout<<"\t文件不存在!"<<endl;</p><p>  return; //退出函數(shù)</p&g

104、t;<p><b>  }</b></p><p>  cout<<"\n\t取文件..."<<endl;</p><p>  in.read((char*)bad,sizeof bad); </p><p>  in.close();

105、 //關(guān)閉文件</p><p>  cout<<"\t學(xué)號\t名字\t數(shù)學(xué)\t語文\t平均\n";</p><p>  for(int i=0;i<10;i++)</p><p><b>  {</b></p><p>  if(bad[i].ave==0) break;</

106、p><p>  cout<<'\t'<<bad[i].no<<'\t'<<bad[i].name</p><p>  <<'\t'<<bad[i].math<<'\t'<<bad[i].chi</p><p> 

107、 <<'\t'<<bad[i].ave<<endl; //輸出簡明文件</p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  }</b></p>&l

108、t;p>  case 4: //顯示高于或等于平均分的學(xué)生信息</p><p><b>  {</b></p><p>  if(top->count==0)</p><p><b>  {</b></p><p>  cout<<"

109、;\n\t現(xiàn)在沒有記錄!"<<endl;</p><p>  return; //退出函數(shù)</p><p><b>  }</b></p><p>  Student *p=top; //定義對象指針訪問對象<

110、/p><p>  cout<<"\n\t現(xiàn)在共有如下"<<count<<"條記錄:\n"; //計算平均成績</p><p>  int num=0;</p><p>  double mean=0;</p><p>  while(p!=NULL)

111、 //當p為非空時</p><p><b>  {</b></p><p>  ++num; //記載符合條件的學(xué)生人數(shù)</p><p>  mean+=p->ave; //計算平均分之和</p><p>  p=p->next;</p>

112、<p><b>  }</b></p><p>  mean=mean/num; //計算全部學(xué)生的平均分</p><p>  cout<<"\t平均成績?yōu)?"<<mean<<"分"<<endl;</p><p>  cout<

113、;<"\t其中高于或等于平均成績的學(xué)生信息如下:\n";</p><p>  cout<<"\t學(xué)號\t名字\t數(shù)學(xué)\t語文\t平均\n";</p><p><b>  p=top;</b></p><p>  while(p!=NULL) //當p為非

114、空時</p><p><b>  {</b></p><p>  if(p->ave>=mean)</p><p><b>  {</b></p><p>  cout<<'\t'<<p->no<<'\t'<

115、<p->name<<'\t'</p><p>  <<p->math<<'\t'<<p->chi<<'\t'<<p->ave<<'\n';//輸出高于或等于平均分的學(xué)生信息</p><p><b>  }

116、</b></p><p>  p=p->next;</p><p><b>  }</b></p><p>  cout<<endl;</p><p><b>  break;</b></p><p><b>  }</b>

117、</p><p><b>  }</b></p><p><b>  }</b></p><p>  Short_record.cpp</p><p>  #include "cpp9.h" </p><p>  /***************

118、****</p><p>  * 生成簡明函數(shù)文件</p><p>  ********************/</p><p>  void Student::short_record(Student *top) //定義簡明文件函數(shù)</p><p><b>  {</b></p>&l

119、t;p>  Student *p;</p><p><b>  p=top;</b></p><p>  if(p->count==0)</p><p><b>  {</b></p><p>  cout<<"\t內(nèi)存中沒有可用記錄"<<en

120、dl;</p><p><b>  return;</b></p><p><b>  }</b></p><p>  for(int i=0;i<p->count;i++,p=p->next)</p><p><b>  {</b></p>&

121、lt;p>  strcpy(sm[i].name,p->name);</p><p>  sm[i].ave=p->ave;</p><p><b>  }</b></p><p>  ofstream out; //建立輸出流對象</p><p&g

122、t;  out.open("stud_mean.dat",ios::out);</p><p>  if(!out) //如果文件不能打開</p><p><b>  {</b></p><p>  cout<<"\t不能打開文件!&

123、quot;<<endl;</p><p><b>  return;</b></p><p><b>  }</b></p><p>  cout<<"\n\t存文件"<<endl;</p><p>  out.write((char *)sm

124、,sizeof sm);</p><p>  out.close(); // 打開文件</p><p>  cout<<'\t'<<top->count<<"條記錄已經(jīng)存入文件,內(nèi)容如下:"<<endl;</p><p&

125、gt;  cout<<"\t名字\t平均成績\n";</p><p>  for(i=0;i<p->count;i++)</p><p>  cout<<"\t"<<sm[i].name<<"\t"<<sm[i].ave<<endl;</p&

126、gt;<p><b>  }</b></p><p><b>  Bad.cpp</b></p><p>  #include"cpp9.h" </p><p>  /*********************************</p><p>  * 生

127、成均不及格的學(xué)生文件的處理函數(shù)</p><p>  **********************************/</p><p>  Student *Student::bad_record(Student *top) //定義均不及格的學(xué)生文件處理函數(shù)</p><p><b>  {</b></p><p&g

128、t;<b>  int cb=0;</b></p><p>  Student *old,*star;</p><p>  old=star=top;</p><p>  if(top->count==0)</p><p><b>  {</b></p><p>  c

129、out<<"\t內(nèi)存中沒有可用記錄"<<endl;</p><p>  return top;</p><p><b>  }</b></p><p>  for (int i=0;star!=NULL;i++)</p><p><b>  {</b>&

130、lt;/p><p>  //取出均不及格學(xué)生的信息</p><p>  if((star->math<60)&&(star->chi<60))</p><p><b>  {</b></p><p>  strcpy(bad[cb].no,star->no);</p>

131、<p>  strcpy(bad[cb].name,star->name);</p><p>  bad[cb].math=star->math;</p><p>  bad[cb].chi=star->chi;</p><p>  bad[cb].ave=star->ave;</p><p>  if(

132、top==star) top=star->next;</p><p>  else old->next=star->next;</p><p>  star=star->next;</p><p><b>  ++cb;</b></p><p><b>  --count;</b&

133、gt;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  old=star;</b></p><p>  star=star-&

134、gt;next;</p><p><b>  }</b></p><p><b>  }</b></p><p>  cout<<"\n\t兩科均不及格的學(xué)生信息如下:"<<endl;</p><p>  cout<<"\t學(xué)號\t名

135、字\t數(shù)學(xué)\t語文\t平均\n"; //輸出兩科均不及格的學(xué)生信息</p><p>  for( i=0;i<cb;i++)</p><p><b>  {</b></p><p>  if(bad[i].ave==0) break;</p><p>  cout<<

136、9;\t'<<bad[i].no<<'\t'<<bad[i].name<<'\t'</p><p>  <<bad[i].math<<'\t'<<bad[i].chi<<'\t'<<bad[i].ave<<endl;<

137、/p><p><b>  }</b></p><p><b>  //存入文件</b></p><p>  ofstream out; //建立輸出流對象</p><p>  out.open("bad.dat",ios::out)

138、;</p><p>  if(!out) //如果文件不能打開</p><p><b>  {</b></p><p>  cout<<"\t不能打開文件!"<<endl;</p><p>  return top;<

139、/p><p><b>  }</b></p><p>  out.write((char *)bad,sizeof bad);</p><p>  out.close(); //打開文件</p><p>  cout<<"\n\t文件存儲成功&

140、quot;<<endl;</p><p>  if(count==0) //說明鏈表已空,需要重新初始化</p><p><b>  {</b></p><p>  ASK(top); //重新初始化</p><p>  cout<<&q

141、uot;\t原文件在內(nèi)存中的記錄已經(jīng)刪空"<<endl;</p><p><b>  }</b></p><p>  return top;</p><p><b>  }</b></p><p><b>  Find.cpp</b></p>

142、<p>  #include "cpp9.h"</p><p>  /********************** </p><p><b>  查找學(xué)生信息函數(shù)</b></p><p>  ***********************/</p><p>  void Student:

143、:find_record(Student *top) //定義查找學(xué)生信息函數(shù)</p><p><b>  {</b></p><p>  char choose[2],input[30];</p><p>  int cn=0;</p><p>  cout<<"\t1.通過學(xué)號尋找&qu

144、ot;<<endl; </p><p>  cout<<"\t2.通過名字尋找"<<endl;</p><p>  cout<<"\t請選擇1-2:"<<flush;</p><p>  gets(choose);

145、 //從鍵盤接受字符串</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  cn=atoi(choose);</p><p>  if(cn!=1&&cn!=2)</p><p>

146、;<b>  {</b></p><p>  cout<<"\t輸入錯誤,重選1-2:"<<flush;</p><p>  gets(choose); //從鍵盤接受字符串</p><p><b>  }</b></p><p&g

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論