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

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  信息科學(xué)與工程學(xué)院</b></p><p><b>  課程設(shè)計(jì)任務(wù)書(shū)</b></p><p>  題目: </p><p>  組 員:

2、 </p><p>  專 業(yè): 網(wǎng)絡(luò)工程 </p><p>  課 程: C++語(yǔ)言程序設(shè)計(jì) </p><p>  指導(dǎo)教師: 職稱: 助 教 </p><p>

3、;  完成時(shí)間: 2013年 5月----2013年 6 月</p><p>  課程設(shè)計(jì)任務(wù)書(shū)及成績(jī)?cè)u(píng)定</p><p><b>  目 錄</b></p><p>  一、摘要………………………………………………………………….</p><p>  二、問(wèn)題描述……………………………………………………………<

4、/p><p><b>  1.摘要</b></p><p>  本系統(tǒng)主要用于對(duì)學(xué)生的成績(jī)進(jìn)行管理。通過(guò)本系統(tǒng),可以將各個(gè)學(xué)生的成績(jī)記錄輸入到系統(tǒng)中,保存到文件,便于查閱和相關(guān)管理。此外,該系統(tǒng)還能實(shí)現(xiàn)對(duì)學(xué)生成績(jī)記錄的顯示,查詢以及插入或刪除學(xué)生的成績(jī)記錄等功能。</p><p><b>  2.問(wèn)題描述</b></p&

5、gt;<p>  編寫(xiě)一個(gè)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng)。學(xué)生成績(jī)管理系統(tǒng)有若干學(xué)生成績(jī)記錄組成,每個(gè)記錄由學(xué)號(hào)、姓名、性別和成績(jī)四部分組成,學(xué)號(hào)不超過(guò)11個(gè)字符,姓名不超過(guò)21個(gè)字符,性別為’m’(male)或’f’(female),成績(jī)?yōu)閐ouble型數(shù)據(jù)。該系統(tǒng)具有以下功能:</p><p>  程序開(kāi)始執(zhí)行時(shí)顯示如下版權(quán)信息和主菜單:</p><p>  *******學(xué)生成

6、績(jī)管理系統(tǒng)*************</p><p>  *1.添加學(xué)生成績(jī)記錄 </p><p>  *2.顯示學(xué)生成績(jī)記錄 </p><p>  *3.查找學(xué)生成績(jī)記錄</p><p>  *4.刪除學(xué)生成績(jī)記錄</p><p>  *5.保存學(xué)生成績(jī)記錄</p><p>  *6.加載學(xué)生

7、成績(jī)記錄</p><p>  *7.退出學(xué)生成績(jī)管理系統(tǒng)</p><p>  ************************************</p><p><b>  請(qǐng)輸入(1~7):</b></p><p>  通過(guò)鍵盤輸入數(shù)字1~7后,程序能夠執(zhí)行相應(yīng)的功能,執(zhí)行完后回到上述主菜單繼續(xù)等待用戶輸入,輸入

8、數(shù)字7后退出程序。</p><p>  選擇“添加學(xué)生成績(jī)記錄”后,輸入要插入記錄的位置。按程序提示依次輸入學(xué)號(hào),姓名,性別,成績(jī),插入記錄成功。</p><p>  選擇“顯示學(xué)生成績(jī)記錄”,顯示學(xué)生成績(jī)表中已有的學(xué)生記錄的個(gè)數(shù),并顯示出各個(gè)學(xué)生記錄的相關(guān)信息。</p><p>  選擇“查找學(xué)生成績(jī)記錄”,按提示輸入要查找的學(xué)生的學(xué)號(hào),輸入學(xué)號(hào),若該學(xué)號(hào)存在,則

9、輸出相應(yīng)的學(xué)生記錄,如該學(xué)號(hào)不存在,則按任意鍵返回主菜單。</p><p>  選擇“刪除學(xué)生成績(jī)記錄”,按提示輸入要?jiǎng)h除的學(xué)生的學(xué)號(hào),輸入學(xué)號(hào),若改學(xué)號(hào)存在,則刪除相應(yīng)的學(xué)生記錄,如果該學(xué)號(hào)不存在,則按任意鍵返回主菜單。</p><p>  選擇“保存學(xué)生成績(jī)記錄”,系統(tǒng)會(huì)將已有的學(xué)生記錄保存在默認(rèn)的文件名為fname.txt的文件中。</p><p>  選擇“

10、加載學(xué)生成績(jī)記錄”,系統(tǒng)會(huì)提示輸入文件名,輸入默認(rèn)的文件名為fname.txt,則可將文件中的相關(guān)信息導(dǎo)出。</p><p>  選擇“退出學(xué)生成績(jī)管理系統(tǒng)”,按任意鍵退出系統(tǒng)。</p><p><b>  3.解決方案</b></p><p>  這是一個(gè)很實(shí)際的編程實(shí)例。編程要求很詳細(xì),內(nèi)容也比較多,有一定難度。首先,學(xué)生成績(jī)記錄是一個(gè)復(fù)雜

11、的數(shù)據(jù)結(jié)構(gòu),至少應(yīng)包括學(xué)號(hào),姓名,性別和成績(jī)。所以,必須建立一個(gè)類student,用來(lái)記錄學(xué)號(hào),姓名,性別和成績(jī)。此外還得建立一個(gè)類stuscore,用來(lái)記錄多個(gè)學(xué)生的成績(jī)記錄。</p><p>  3.1建立類學(xué)生類student</p><p>  它至少包括學(xué)號(hào)number,姓名name,性別sex,成績(jī)chengji。具體如下:</p><p>  clas

12、s student</p><p><b>  {</b></p><p><b>  public:</b></p><p>  char name[21]; //姓名</p><p>  char number[11]; //學(xué)號(hào)</p><p>  

13、char sex; //性別</p><p>  double chengji; //成績(jī)</p><p>  student *next; //類指針,用來(lái)指向下一個(gè)記錄</p><p>  student();</p><p>  void init(string &Name,string &Number,char

14、Sex,double Chengji); //輸入學(xué)生成績(jī)記錄</p><p>  virtual ~student();</p><p><b>  };</b></p><p>  函數(shù)init(string &Name,string &Number,char Sex,double Chengji)用于輸入學(xué)生記錄,相當(dāng)于

15、一個(gè)注冊(cè)。其具體實(shí)現(xiàn)如下:</p><p>  void student::init(string &Name,string &Number,char Sex,double Chengji)</p><p><b>  {</b></p><p><b>  int len;</b></p>

16、<p>  len=Name.length();</p><p>  if(len>20)len=20;</p><p>  Name.copy(name,len,0);</p><p>  name[len]=0;</p><p>  len=Number.length();</p><p>  if

17、(len>10)len=10;</p><p>  Number.copy(number,len,0);</p><p>  number[len]=0;</p><p>  sex=((sex=='m')?'m':'f');</p><p>  chengji=Chengji;</

18、p><p><b>  }</b></p><p>  3.2建立學(xué)生成績(jī)記錄類stuscore</p><p>  該類是學(xué)生成績(jī)記錄的集合。其成員函數(shù)則是問(wèn)題中要求的添加、顯示、查找、刪除、保存、導(dǎo)出等各種操作。改類具體如下:</p><p>  class stuscore </p><p>

19、<b>  {</b></p><p>  student* head;</p><p><b>  public:</b></p><p>  bool add_record();//添加學(xué)生成績(jī)記錄</p><p>  void display_record();//顯示學(xué)生成績(jī)記錄</p

20、><p>  int length();//學(xué)生成績(jī)記錄個(gè)數(shù)</p><p>  bool delete_record();//刪除學(xué)生成績(jī)記錄</p><p>  void save_record();//保存學(xué)生成績(jī)記錄</p><p>  void load_record();//加載學(xué)生成績(jī)記錄</p><p> 

21、 bool find_record();//查找學(xué)生成績(jī)記錄</p><p>  stuscore();</p><p>  virtual ~stuscore();</p><p><b>  };</b></p><p>  3.3編寫(xiě)各個(gè)功能的函數(shù)實(shí)體</p><p>  3.3.1添加學(xué)生

22、成績(jī)記錄add_record()</p><p><b>  建立一個(gè)鏈表:</b></p><p>  bool stuscore::add_record()</p><p><b>  {</b></p><p><b>  int i;</b></p>&l

23、t;p><b>  int j=1;</b></p><p>  string Name;</p><p>  string Number;</p><p><b>  char Sex;</b></p><p>  double Chengji;</p><p>  

24、student *newnode,*current,*previous;</p><p>  current=previous=head;</p><p>  cout<<"請(qǐng)輸入插入的位置:";</p><p><b>  cin>>i;</b></p><p>  if(i

25、<=0||i>length()+1)</p><p><b>  {</b></p><p>  cout<<"輸入的位置不正確!";</p><p>  return false;</p><p><b>  }</b></p><p

26、>  cout<<"請(qǐng)輸入學(xué)號(hào):";</p><p>  cin>>Number;</p><p>  cout<<"請(qǐng)輸入姓名:";</p><p>  cin>>Name;</p><p>  cout<<"請(qǐng)輸入性別:&q

27、uot;;</p><p><b>  cin>>Sex;</b></p><p>  cout<<"請(qǐng)輸入成績(jī):";</p><p>  cin>>Chengji;</p><p>  newnode=new student();</p><p

28、>  newnode->init(Name,Number,Sex,Chengji);</p><p>  newnode->next=null;</p><p>  if(!newnode)</p><p><b>  {</b></p><p>  cout<<"內(nèi)存已滿!&qu

29、ot;;</p><p>  return false;</p><p><b>  }</b></p><p><b>  if(i==1)</b></p><p><b>  { </b></p><p>  newnode->next=he

30、ad;</p><p>  head=newnode;</p><p>  return true;</p><p><b>  }</b></p><p><b>  Else</b></p><p><b>  {</b></p>&l

31、t;p>  while(current&&j<i)</p><p><b>  {</b></p><p>  previous=current;</p><p>  current=current->next;</p><p><b>  j++;</b><

32、/p><p><b>  }</b></p><p>  newnode->next=current;</p><p>  previous->next=newnode;</p><p>  return true;</p><p><b>  }</b></p

33、><p><b>  }</b></p><p>  3.3.2顯示學(xué)生成績(jī)記錄display_record()</p><p><b>  具體實(shí)現(xiàn)如下:</b></p><p>  void stuscore::display_record()</p><p><b&g

34、t;  {</b></p><p>  student*current;</p><p>  current=head;</p><p>  cout<<"表中有"<<length()<<"條記錄!\n";</p><p>  if(length())&l

35、t;/p><p><b>  {</b></p><p>  cout<<setiosflags(ios::left)<<setw(15)<<"學(xué)號(hào)"<<setw(15)<<"姓名"<<setw(12)<<"性別"<<

36、setw(5)<<"成績(jī)"<<endl;</p><p>  while(current)</p><p><b>  {</b></p><p>  cout<<current;</p><p>  current=current->next;</p&

37、gt;<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  另外,對(duì)<<運(yùn)算符進(jìn)行了重載,這樣就可以直接用cout輸出學(xué)生成績(jī)記錄,函數(shù)重載如下:</p><p>  ost

38、ream&operator<<(ostream&output,const student *addr)</p><p><b>  {</b></p><p>  output<<setiosflags(ios::left)<<setw(15)<<addr->number<<setw(1

39、5)<<addr->name<<setw(12)<<addr->sex<<setw(5)<<addr->chengji<<endl;</p><p>  return output;</p><p><b>  }</b></p><p>  3.3.3查

40、找學(xué)生成績(jī)記錄find_record()</p><p><b>  具體實(shí)現(xiàn)如下:</b></p><p>  bool stuscore::find_record()</p><p>  {student *current,*previous;</p><p>  string Number;</p>

41、<p>  cout<<"請(qǐng)輸入要查找的學(xué)生的學(xué)號(hào):";</p><p>  cin>>Number;</p><p>  current=previous=head;</p><p>  while(current)</p><p><b>  {</b><

42、/p><p>  if(current->number==Number)</p><p><b>  {</b></p><p>  cout<<setiosflags(ios::left)<<setw(15)<<"學(xué)號(hào)"<<setw(15)<<"姓名&

43、quot;<<setw(12)<<"性別"<<setw(5)<<"成績(jī)"<<endl;</p><p>  cout<<current;</p><p>  return true;</p><p><b>  }</b></p

44、><p><b>  Else</b></p><p><b>  {</b></p><p>  previous=current;</p><p>  current=current->next;</p><p><b>  }</b></p

45、><p><b>  }</b></p><p>  if(!current)</p><p><b>  {</b></p><p>  cout<<"沒(méi)有找到該學(xué)生!";</p><p>  return false;</p>&

46、lt;p><b>  } </b></p><p>  return true;</p><p><b>  }</b></p><p>  3.3.4刪除學(xué)生記錄delete_record()</p><p><b>  具體實(shí)現(xiàn)如下:</b></p>&

47、lt;p>  bool stuscore::delete_record()</p><p><b>  {</b></p><p><b>  string s;</b></p><p>  student*current,*previous;</p><p>  current=previo

48、us=head;</p><p>  cout<<"成績(jī)表中有"<<length()<<"個(gè)學(xué)生成績(jī)記錄"<<endl;</p><p>  if(!length())</p><p><b>  {</b></p><p>  co

49、ut<<"學(xué)生成績(jī)表已空!\n";</p><p>  return false;</p><p><b>  }</b></p><p><b>  else{</b></p><p>  cout<<"請(qǐng)輸入要?jiǎng)h除的學(xué)生記錄的學(xué)號(hào):"

50、;</p><p><b>  cin>>s;</b></p><p>  while(current)</p><p><b>  {</b></p><p>  if(current->number==s)</p><p><b>  {<

51、;/b></p><p>  if(current==head)</p><p><b>  {</b></p><p>  head=head->next;</p><p>  delete current;</p><p>  cout<<"刪除成功!&quo

52、t;;</p><p>  return true;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  previous->next=current-&

53、gt;next;</p><p>  delete current;</p><p>  cout<<"刪除成功!";</p><p>  return true;</p><p><b>  }</b></p><p><b>  }</b>

54、</p><p><b>  else</b></p><p><b>  {</b></p><p>  previous=current;</p><p>  current=current->next;</p><p><b>  }</b>

55、</p><p><b>  }</b></p><p>  if(!current)</p><p><b>  {</b></p><p>  cout<<"沒(méi)有找到該學(xué)號(hào)所對(duì)應(yīng)的學(xué)生記錄!";</p><p>  return false

56、; </p><p><b>  }</b></p><p><b>  }</b></p><p>  return true</p><p><b>  }</b></p><p>  3.3.5保存學(xué)生成績(jī)記錄save_record()</p

57、><p><b>  具體實(shí)現(xiàn)如下:</b></p><p>  void stuscore::save_record()</p><p>  { ofstream file;</p><p>  student*current=head;</p><p>  file.open("./fn

58、ame.txt",ios::out);</p><p><b>  if(!file)</b></p><p><b>  {</b></p><p>  cout<<"打開(kāi)文件失敗!";</p><p>  cin.get();</p>&l

59、t;p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  while(current)</p><p><b>  {</b></p><p> 

60、 if(file&&!file.eof())</p><p>  file.write((char*)current,sizeof(*current));</p><p>  current=current->next;</p><p><b>  }</b></p><p>  cout<&

61、lt;"保存完成!";</p><p>  file.close();</p><p><b>  }</b></p><p><b>  }</b></p><p>  3.3.6加載學(xué)生成績(jī)記錄load_record()</p><p><b&g

62、t;  具體實(shí)現(xiàn)如下:</b></p><p>  void stuscore::load_record()</p><p><b>  {</b></p><p>  ifstream file;</p><p>  char fname[20];</p><p>  student

63、 *n;</p><p>  n=new student();</p><p>  cout<<"請(qǐng)輸入要打開(kāi)的文件名(fname.txt):";</p><p>  cin>>fname;</p><p>  file.open(fname,ios::in);</p><p&g

64、t;<b>  if(!file)</b></p><p><b>  {</b></p><p>  cout<<"文件打開(kāi)失敗!";</p><p>  cin.get();</p><p><b>  }</b></p>&l

65、t;p><b>  else</b></p><p><b>  {</b></p><p>  cout<<setiosflags(ios::left)<<setw(21)<<"姓名"<<setw(11)<<"學(xué)號(hào)"<<setw

66、(5)<<"性別"<<setw(5)<<"成績(jī)"<<endl;</p><p>  while(file&&file.peek()!=EOF)</p><p><b>  {</b></p><p>  file.read((char*)n,

67、sizeof(*n));</p><p>  cout<<n<<endl;</p><p><b>  }</b></p><p>  file.close();</p><p><b>  }</b></p><p><b>  }<

68、/b></p><p>  3.3.7計(jì)算學(xué)生成績(jī)記錄的個(gè)數(shù)length()</p><p><b>  具體實(shí)現(xiàn)如下:</b></p><p>  int stuscore::length()</p><p><b>  {</b></p><p><b>

69、  int j=0;</b></p><p>  student*current;</p><p>  current=head;</p><p>  while(current)</p><p>  {current=current->next;</p><p><b>  j++;<

70、;/b></p><p><b>  }</b></p><p><b>  return j;</b></p><p><b>  }</b></p><p><b>  四.程序運(yùn)行結(jié)果</b></p><p>  4.1

71、 主菜單界面 </p><p>  4.2添加學(xué)生成績(jī)記錄</p><p>  4.3顯示學(xué)生成績(jī)記錄</p><p>  4.4再添加幾個(gè)學(xué)生成績(jī)記錄</p><p><b>  顯示結(jié)果為:</b></p><p>  4.5查找學(xué)生成績(jī)記錄</p><p>  4.6

72、刪除學(xué)生成績(jī)記錄</p><p>  4.7刪除記錄后再顯示學(xué)生成績(jī)記錄</p><p>  4.8保存學(xué)生成績(jī)記錄</p><p>  4.9加載學(xué)生成績(jī)記錄</p><p>  4.10退出學(xué)生成績(jī)系統(tǒng)</p><p><b>  五.課程設(shè)計(jì)總結(jié)</b></p><p&g

73、t;  這是一個(gè)綜合性較強(qiáng),很實(shí)際的一個(gè)編程實(shí)例。剛學(xué)C++時(shí)候,感覺(jué)類和對(duì)象還挺有意思的,剛接觸到這個(gè)題目時(shí),覺(jué)得應(yīng)該沒(méi)什么大問(wèn)題吧,因?yàn)?,我自認(rèn)為一些基本知識(shí)點(diǎn)都已經(jīng)掌握了??墒?,真的當(dāng)我動(dòng)手編程的時(shí)候,才發(fā)現(xiàn)并沒(méi)有想象中的那么簡(jiǎn)單。單個(gè)知識(shí)點(diǎn)是弄清了,但是,將所有的知識(shí)點(diǎn)綜合起來(lái)運(yùn)用時(shí),就碰到了各種各樣的問(wèn)題了。有時(shí)候,一個(gè)錯(cuò)誤得找好久,才能發(fā)現(xiàn)。</p><p>  本系統(tǒng)的重點(diǎn)就是要會(huì)建立兩個(gè)類。一個(gè)是

74、學(xué)生類student,用來(lái)存放一個(gè)學(xué)生的成績(jī)記錄,相當(dāng)于一個(gè)結(jié)構(gòu)體的功能吧。另一個(gè)類是學(xué)生成績(jī)記錄系統(tǒng)類stuscore,該類用來(lái)存放多個(gè)學(xué)生的成績(jī)記錄。難點(diǎn)就是stuscore類里的各個(gè)功能的實(shí)現(xiàn)。總的來(lái)說(shuō),添加,顯示,查找,這三個(gè)功能比較容易,但是,刪除,保存,加載這三個(gè)功能就需要花點(diǎn)心思了,可能是平時(shí)用的比較少吧,生疏了??梢?jiàn)只有通過(guò)平時(shí)多加練習(xí),才能有助于自己鞏固知識(shí)點(diǎn)。</p><p>  最后想說(shuō)的是

75、,調(diào)試程序真的很關(guān)鍵。調(diào)試程序需要較大的耐心??赡苷{(diào)試程序的時(shí)間比自己編寫(xiě)整個(gè)程序的時(shí)間還要長(zhǎng),下的工夫還要深,但這是一個(gè)程序員必須了解,也必須接受的事實(shí)。有好幾次,幾個(gè)錯(cuò)誤讓我很是頭疼啊,很想刪了,重新來(lái)過(guò),可是最后發(fā)現(xiàn),還是得有耐心去調(diào)試程序。</p><p>  通過(guò)這個(gè)實(shí)驗(yàn)的練習(xí),我也學(xué)到了很多東西,特別是加深了對(duì)類和對(duì)象理解和應(yīng)用方面,也很謝謝老師給我的幫助。</p><p> 

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論