2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩15頁(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>  C++課程設(shè)計(jì)報(bào)告書(shū)</p><p>  題目:學(xué)生成績(jī)管理系統(tǒng)</p><p>  專 業(yè):信息與計(jì)算科學(xué)</p><p><b>  班 級(jí): </b></p><p><b>  學(xué) 號(hào): </b></p><p>  學(xué)生成績(jī)管

2、理系統(tǒng)課程設(shè)計(jì)報(bào)告</p><p><b>  摘要:</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>  問(wèn)題描述</b&

3、gt;</p><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>  

4、*******學(xué)生成績(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>

5、<p>  * 6.加載學(xué)生成績(jī)記錄</p><p>  * 7.退出學(xué)生成績(jī)管理系統(tǒng)</p><p>  ************************************</p><p><b>  請(qǐng)輸入(1~7):</b></p><p>  通過(guò)鍵盤(pán)輸入數(shù)字1~7后,程序能夠執(zhí)行相應(yīng)的功能,

6、執(zhí)行完后回到上述主菜單繼續(xù)等待用戶輸入,輸入數(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ī)記錄”,按提示輸入要

7、查找的學(xué)生的學(xué)號(hào),輸入學(xué)號(hào),若該學(xué)號(hào)存在,則輸出相應(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的文件中。<

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

9、有一定難度。首先,學(xué)生成績(jī)記錄是一個(gè)復(fù)雜的數(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>  建立類學(xué)生類student,它至少包括學(xué)號(hào)number,姓名name,性別sex,成績(jī)chengji。具體如下:</p><p>  class stu

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

11、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 Sex,d

12、ouble 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)于一個(gè)注冊(cè)。

13、其具體實(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><p

14、>  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(len&

15、gt;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;</p>

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

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

18、//學(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>  bool find_record();//查找學(xué)生成績(jī)記錄

19、</p><p>  stuscore();</p><p>  virtual ~stuscore();</p><p><b>  };</b></p><p>  現(xiàn)在就要編寫(xiě)各個(gè)功能的函數(shù)實(shí)體了:</p><p>  添加學(xué)生成績(jī)記錄add_record(),建立一個(gè)鏈表:</p&g

20、t;<p>  bool stuscore::add_record()</p><p><b>  {</b></p><p><b>  int i;</b></p><p><b>  int j=1;</b></p><p>  string Name;&l

21、t;/p><p>  string Number;</p><p><b>  char Sex;</b></p><p>  double Chengji;</p><p>  student *newnode,*current,*previous;</p><p>  current=previo

22、us=head;</p><p>  cout<<"請(qǐng)輸入插入的位置:";</p><p><b>  cin>>i;</b></p><p>  if(i<=0||i>length()+1)</p><p><b>  {</b></p

23、><p>  cout<<"輸入的位置不正確!";</p><p>  return false;</p><p><b>  }</b></p><p>  cout<<"請(qǐng)輸入學(xué)號(hào):";</p><p>  cin>>Nu

24、mber;</p><p>  cout<<"請(qǐng)輸入姓名:";</p><p>  cin>>Name;</p><p>  cout<<"請(qǐng)輸入性別:";</p><p><b>  cin>>Sex;</b></p>

25、<p>  cout<<"請(qǐng)輸入成績(jī):";</p><p>  cin>>Chengji;</p><p>  newnode=new student();</p><p>  newnode->init(Name,Number,Sex,Chengji);</p><p>  ne

26、wnode->next=null;</p><p>  if(!newnode)</p><p><b>  {</b></p><p>  cout<<"內(nèi)存已滿!";</p><p>  return false;</p><p><b>  }

27、</b></p><p><b>  if(i==1)</b></p><p><b>  { </b></p><p>  newnode->next=head;</p><p>  head=newnode;</p><p>  return true

28、;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  while(current&&j<i)</p><p><b>  {&

29、lt;/b></p><p>  previous=current;</p><p>  current=current->next;</p><p><b>  j++;</b></p><p><b>  }</b></p><p>  newnode->

30、;next=current;</p><p>  previous->next=newnode;</p><p>  return true;</p><p><b>  }</b></p><p><b>  }</b></p><p>  顯示學(xué)生成績(jī)記錄displ

31、ay_record(),具體實(shí)現(xiàn)如下:</p><p>  void stuscore::display_record()</p><p><b>  {</b></p><p>  student*current;</p><p>  current=head;</p><p>  cout&l

32、t;<"表中有"<<length()<<"條記錄!\n";</p><p>  if(length())</p><p><b>  {</b></p><p>  cout<<setiosflags(ios::left)<<setw(15)<&

33、lt;"學(xué)號(hào)"<<setw(15)<<"姓名"<<setw(12)<<"性別"<<setw(5)<<"成績(jī)"<<endl;</p><p>  while(current)</p><p><b>  {</b&

34、gt;</p><p>  cout<<current;</p><p>  current=current->next;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b&

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

36、<p>  output<<setiosflags(ios::left)<<setw(15)<<addr->number<<setw(15)<<addr->name<<setw(12)<<addr->sex<<setw(5)<<addr->chengji<<endl;</p&g

37、t;<p>  return output;</p><p><b>  }</b></p><p>  查找學(xué)生成績(jī)記錄find_record(),具體實(shí)現(xiàn)如下:</p><p>  bool stuscore::find_record()</p><p>  {student *current,*pr

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

39、current)</p><p><b>  {</b></p><p>  if(current->number==Number)</p><p><b>  {</b></p><p>  cout<<setiosflags(ios::left)<<setw(15)

40、<<"學(xué)號(hào)"<<setw(15)<<"姓名"<<setw(12)<<"性別"<<setw(5)<<"成績(jī)"<<endl;</p><p>  cout<<current;</p><p>  return

41、 true;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  previous=current;</p><p>  current=current->

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

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

44、p><p>  bool stuscore::delete_record()</p><p><b>  {</b></p><p><b>  string s;</b></p><p>  student*current,*previous;</p><p>  curren

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

46、>  cout<<"學(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é)生記錄的

47、學(xué)號(hào):";</p><p><b>  cin>>s;</b></p><p>  while(current)</p><p><b>  {</b></p><p>  if(current->number==s)</p><p><b&

48、gt;  {</b></p><p>  if(current==head)</p><p><b>  {</b></p><p>  head=head->next;</p><p>  delete current;</p><p>  cout<<"

49、刪除成功!";</p><p>  return true;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  previous->next=

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

51、lt;/b></p><p><b>  else</b></p><p><b>  {</b></p><p>  previous=current;</p><p>  current=current->next;</p><p><b>  }&

52、lt;/b></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>  ret

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

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

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

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

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

58、<<"保存完成!";</p><p>  file.close();</p><p><b>  }</b></p><p><b>  }</b></p><p>  加載學(xué)生成績(jī)記錄load_record(),具體實(shí)現(xiàn)如下:</p><p>

59、;  void stuscore::load_record()</p><p><b>  {</b></p><p>  ifstream file;</p><p>  char fname[20];</p><p>  student *n;</p><p>  n=new student(

60、);</p><p>  cout<<"請(qǐng)輸入要打開(kāi)的文件名(fname.txt):";</p><p>  cin>>fname;</p><p>  file.open(fname,ios::in);</p><p><b>  if(!file)</b></p>

61、;<p><b>  {</b></p><p>  cout<<"文件打開(kāi)失敗!";</p><p>  cin.get();</p><p><b>  }</b></p><p><b>  else</b></p>

62、;<p><b>  {</b></p><p>  cout<<setiosflags(ios::left)<<setw(21)<<"姓名"<<setw(11)<<"學(xué)號(hào)"<<setw(5)<<"性別"<<setw(5)&

63、lt;<"成績(jī)"<<endl;</p><p>  while(file&&file.peek()!=EOF)</p><p><b>  {</b></p><p>  file.read((char*)n,sizeof(*n));</p><p>  cout&l

64、t;<n<<endl;</p><p><b>  }</b></p><p>  file.close();</p><p><b>  }</b></p><p><b>  }</b></p><p>  計(jì)算學(xué)生成績(jī)記錄的個(gè)數(shù)l

65、ength(),具體實(shí)現(xiàn)如下:</p><p>  int stuscore::length()</p><p><b>  {</b></p><p><b>  int j=0;</b></p><p>  student*current;</p><p>  curre

66、nt=head;</p><p>  while(current)</p><p>  {current=current->next;</p><p><b>  j++;</b></p><p><b>  }</b></p><p><b>  retur

67、n j;</b></p><p><b>  }</b></p><p><b>  程序運(yùn)行結(jié)果:</b></p><p><b>  主菜單界面 :</b></p><p><b>  添加學(xué)生成績(jī)記錄:</b></p>&l

68、t;p><b>  顯示學(xué)生成績(jī)記錄:</b></p><p>  按照①所示再添加幾個(gè)學(xué)生成績(jī)記錄,顯示結(jié)果為:</p><p><b>  查找學(xué)生成績(jī)記錄:</b></p><p><b>  刪除學(xué)生成績(jī)記錄:</b></p><p>  刪除記錄后再顯示學(xué)生成績(jī)

69、記錄:</p><p><b>  保存學(xué)生成績(jī)記錄:</b></p><p><b>  加載學(xué)生成績(jī)記錄:</b></p><p><b>  退出學(xué)生成績(jī)系統(tǒng):</b></p><p><b>  課程設(shè)計(jì)總結(jié)</b></p><

70、p>  這是一個(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è)類。

71、一個(gè)是學(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>  最后想

72、說(shuō)的是,調(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&g

溫馨提示

  • 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)論