【課程設(shè)計(jì)】面向?qū)ο蟪绦蛟O(shè)計(jì)_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程設(shè)計(jì)</p><p>  09計(jì)應(yīng)1 09821122 謝燕清</p><p>  課題設(shè)計(jì)內(nèi)容、具備的功能 </p><p><b> ?。ㄒ唬┰O(shè)計(jì)內(nèi)容 </b></p><p><b>  1.性質(zhì)</b></p><

2、p>  本課程是學(xué)生在學(xué)習(xí)完《程序設(shè)計(jì)基礎(chǔ)》、《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程后,為提高學(xué)生使用面向?qū)ο蟮恼Z言解決實(shí)際問題的能力設(shè)置的一門實(shí)踐性課程,是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)計(jì)算機(jī)應(yīng)用方向的必修課。</p><p><b>  2.目的 </b></p><p>  本課程實(shí)驗(yàn)教學(xué)的目的是:</p><p>  使學(xué)生通過實(shí)踐環(huán)節(jié)深入理解和掌握課堂

3、教學(xué)內(nèi)容,進(jìn)一步加深理解面向?qū)ο蟮幕纠碚?,掌握基本方法、基本技術(shù)。</p><p>  通過設(shè)計(jì)一個(gè)功能比較完整的,有實(shí)際應(yīng)用價(jià)值的應(yīng)用軟件,使學(xué)生了解采用面向?qū)ο蠹夹g(shù)開發(fā)軟件的全部過程,掌握采用面向?qū)ο蠹夹g(shù)開發(fā)軟件的方法。提高學(xué)生使用面向?qū)ο蠓椒?,和面向?qū)ο蟮恼Z言解決實(shí)際問題的能力。</p><p>  通過本課程設(shè)計(jì),為后續(xù)《數(shù)據(jù)庫系統(tǒng)原理與應(yīng)用》《數(shù)據(jù)結(jié)構(gòu)》《編譯原理》等課程打下扎

4、實(shí)的專業(yè)基礎(chǔ)。</p><p><b>  3.任務(wù)</b></p><p>  學(xué)生成績(jī)管理系統(tǒng),系統(tǒng)存儲(chǔ)以下信息:</p><p>  1) 學(xué)生基本信息和成績(jī);</p><p><b>  2) 學(xué)生的人數(shù)。</b></p><p><b>  4.要求<

5、;/b></p><p>  1) 根據(jù)題目要求,對(duì)問題進(jìn)行需求調(diào)查和分析,識(shí)別類和對(duì)象,合理設(shè)計(jì)類和對(duì)象;</p><p>  2) 合理設(shè)計(jì)程序結(jié)構(gòu),系統(tǒng)各項(xiàng)功能要求在函數(shù)中實(shí)現(xiàn)。在主函數(shù)中設(shè)計(jì)菜單,通過菜單調(diào)用這個(gè)函數(shù);</p><p>  3) 輸入輸出要求由提取運(yùn)算符和插入運(yùn)算符的重載函數(shù)實(shí)現(xiàn);公用過程盡可能設(shè)計(jì)成函數(shù)或函數(shù)模板;</p>

6、<p>  4) 設(shè)計(jì)過程中必須考慮程序的健壯性,在關(guān)鍵的地方必須要有容錯(cuò)處理。</p><p><b> ?。ǘ┚邆涞墓δ?lt;/b></p><p><b>  系統(tǒng)功能:</b></p><p>  1.系統(tǒng)初始化 包括上述文件的創(chuàng)建和讀?。ǘM(jìn)制或ASCII文件);</p><p&

7、gt;  2.增加學(xué)生 新增加學(xué)生信息和成績(jī);</p><p>  3.刪除學(xué)生 根據(jù)學(xué)號(hào)刪除相應(yīng)學(xué)生信息;</p><p>  4查詢 根據(jù)學(xué)號(hào),查詢相應(yīng)學(xué)生信息;</p><p>  5.排序 根據(jù)學(xué)生學(xué)號(hào)、姓名、成績(jī)對(duì)學(xué)生信息排序,并顯示;</p><p>  6.修改 修改指定學(xué)號(hào)

8、的學(xué)生數(shù)據(jù)。</p><p>  模塊(函數(shù))的劃分、各模塊(函數(shù))的功能、采用的自定義的數(shù)據(jù)類型</p><p><b>  模塊(函數(shù))的劃分</b></p><p>  1.類的定義:student.h</p><p>  1) 定義抽象類person</p><p>  protected

9、: </p><p>  int ID; //學(xué)號(hào)</p><p>  char Name[10]; //姓名</p><p><b>  publ

10、ic:</b></p><p>  virtual bool operator<(Person &)=0; //>運(yùn)算符重載</p><p>  virtual bool operator>=(Person &)=0; //<=運(yùn)算符重載</p><p> 

11、 2) 定義派生數(shù)據(jù)類student,基類為person類。</p><p><b>  Private:</b></p><p>  int Score[4]; //成績(jī)</p><p>  void SwapData(Student *);

12、 //交換數(shù)據(jù)</p><p><b>  public:</b></p><p>  Student(int =0,char* =NULL,int* =NULL); //構(gòu)造函數(shù)</p><p>  bool operator<(Person &); //>運(yùn)算

13、符重載</p><p>  bool operator>=(Person &); //<=運(yùn)算符重載</p><p>  friend ofstream& operator<<(ofstream&,Student*); //<<運(yùn)算符重載輸出到文件</p><p> 

14、 friend ifstream& operator>>(ifstream&,Student*); //>>運(yùn)算符重載從文件輸入</p><p>  friend ostream_withassign& operator<<(ostream_withassign&,Student*);//<<運(yùn)</p><p>

15、;  算符重載輸出到顯示器</p><p>  friend istream_withassign& operator>>(istream_withassign&,Student*);//>>運(yùn)算</p><p><b>  符重載從鍵盤輸入</b></p><p>  friend class List

16、; //List為友元類</p><p>  3) 定義設(shè)計(jì)結(jié)點(diǎn)類Node</p><p><b>  private: </b></p><p>  Student *Stup; //指向?qū)W生對(duì)象指針</p><

17、p>  Node *Prev,*Next; //指向前后結(jié)點(diǎn)指針</p><p><b>  public:</b></p><p>  Node(); //構(gòu)造函數(shù)</p><p>  Node(Student *);

18、 //構(gòu)造函數(shù)</p><p>  Node(Node &); //復(fù)制構(gòu)造函數(shù)</p><p>  ~Node(); //析構(gòu)函數(shù)</p><p>  friend class List;

19、 //List為友元類</p><p>  4)定義帶有頭結(jié)點(diǎn)鏈表類List,私有數(shù)據(jù)成員為Node *Head,*Tail分別,指向鏈表頭尾:</p><p><b>  private:</b></p><p>  void InitList(); //

20、初始化函數(shù)</p><p><b>  public:</b></p><p>  List(); //構(gòu)造函數(shù)</p><p>  ~List(); //析構(gòu)函數(shù)</p><p>  void

21、ClearList(); //清空鏈表</p><p>  Node *FindID(int &); //根據(jù)學(xué)號(hào)尋找學(xué)生所在結(jié)點(diǎn)</p><p>  void Insert(Node *); //插入一個(gè)學(xué)生</p><p>  No

22、de *CreateNode(Student *); //建立一個(gè)學(xué)生結(jié)點(diǎn)</p><p>  void Add(); //增加一個(gè)學(xué)生</p><p>  void Update(); //修改學(xué)生成績(jī)</p><p>  void Dele

23、te(); //刪除一個(gè)學(xué)生</p><p>  void Query(); //查找一個(gè)學(xué)生</p><p>  void SortID(); //按學(xué)號(hào)排序</p><p>  void SortScore();

24、 //按學(xué)生總成績(jī)排序</p><p>  void SaveBin(); //以二進(jìn)制形式保存數(shù)據(jù)</p><p>  void PrintList(); //顯示鏈表</p><p>  void PrintTitle();

25、 //顯示標(biāo)題</p><p>  void PrintOne(Student *); //顯示一個(gè)學(xué)生數(shù)據(jù)</p><p>  2.student類的實(shí)現(xiàn):student.cpp</p><p>  3.node類的實(shí)現(xiàn):node.cpp</p><p>  4.list類的實(shí)

26、現(xiàn):list.cpp</p><p>  5.主函數(shù):main.cpp</p><p>  各模塊(函數(shù))的功能</p><p>  1.實(shí)現(xiàn)類和函數(shù)聲明;</p><p>  2.實(shí)現(xiàn)派生類student的各函數(shù);</p><p>  3.實(shí)現(xiàn)結(jié)點(diǎn)類Node的各函數(shù);</p><p>  4.

27、實(shí)現(xiàn)結(jié)點(diǎn)類List的各函數(shù)。程序結(jié)束運(yùn)行前,調(diào)用SaveBin()函數(shù)以二進(jìn)制形式保存學(xué)生數(shù)據(jù)到文件student.dat中;</p><p>  5. 設(shè)計(jì)主函數(shù)。主函數(shù)中顯示功能菜單,通過菜單調(diào)用類的成員函數(shù)實(shí)現(xiàn)系統(tǒng)各項(xiàng)功能。</p><p>  采用自定義的數(shù)據(jù)類型</p><p>  自定義的數(shù)據(jù)類型:student.h</p><p&g

28、t;  #ifndef STUDATA_H</p><p>  #define STUDATA_H</p><p>  #include<fstream.h></p><p>  int GetID();</p><p>  class List;</p><p>  class Person{

29、 //抽象類</p><p>  protected:</p><p><b>  int ID;</b></p><p>  char Name[10];</p><p><b>  public:</b></p><p>  

30、virtual bool operator<(Person &)=0;</p><p>  virtual bool operator>=(Person &)=0;</p><p><b>  };</b></p><p>  class Student:public Person{</p><p

31、>  int Score[4];</p><p>  void SwapData(Student *);</p><p><b>  public:</b></p><p>  Student(int =0,char* =NULL,int* =NULL);</p><p>  bool operator<(P

32、erson &);</p><p>  bool operator>=(Person &);</p><p>  friend ofstream& operator<<(ofstream&,Student*);</p><p>  friend ifstream& operator>>(ifstr

33、eam&,Student*);</p><p>  friend ostream_withassign& operator<<(ostream_withassign&,Student*);</p><p>  friend istream_withassign& operator>>(istream_withassign&,S

34、tudent*);</p><p>  friend class List;</p><p><b>  };</b></p><p>  class Node{</p><p>  Student *Stup;</p><p>  Node *Prev,*Next;</p><

35、;p><b>  public:</b></p><p><b>  Node();</b></p><p>  Node(Student *);</p><p>  Node(Node &);</p><p><b>  ~Node();</b></p&g

36、t;<p>  friend class List;</p><p><b>  };</b></p><p>  class List{</p><p>  Node *Head,*Tail;</p><p>  void InitList();</p><p><b>

37、  public:</b></p><p><b>  List();</b></p><p><b>  ~List();</b></p><p>  void ClearList();</p><p>  Node *FindID(int &);</p><

38、;p>  void Insert(Node *);</p><p>  Node *CreateNode(Student *);</p><p>  void Add();</p><p>  void Update();</p><p>  void Delete();</p><p>  void Query

39、();</p><p>  void SortID();</p><p>  void SortScore();</p><p>  void SaveBin();</p><p>  void PrintList();</p><p>  void PrintTitle();</p><p>

40、  void PrintOne(Student *);</p><p><b>  };</b></p><p><b>  #endif</b></p><p><b>  程序運(yùn)行流程圖</b></p><p>  注:在主函數(shù)中,輸入選項(xiàng),判斷是否等于END,如等于END

41、則保存數(shù)據(jù);如不等于則實(shí)行switch中增加學(xué)生、修改成績(jī)、刪除學(xué)生、查詢數(shù)據(jù)、顯示數(shù)據(jù)、按學(xué)號(hào)排序、按總成績(jī)排序。</p><p>  注:增加學(xué)生,判斷學(xué)號(hào)是否有相同,有相同是拋出異常,無相同則繼續(xù)增加,并顯示鏈表、保存數(shù)據(jù)。</p><p>  注:運(yùn)行程序,先實(shí)現(xiàn)鏈表數(shù)據(jù),再按執(zhí)行。</p><p>  修改成績(jī):輸入學(xué)號(hào),判斷是否存在,存在則對(duì)該學(xué)生的成績(jī)

42、進(jìn)行修改;不存在則拋出異常。</p><p>  刪除學(xué)生:輸入學(xué)號(hào),判斷是否存在,存在則繼續(xù)判斷要求刪除的學(xué)生的結(jié)點(diǎn)所在位置,根據(jù)學(xué)生的結(jié)點(diǎn)所在位置不同,做不同的操作;不存在則拋出異常。</p><p>  查詢數(shù)據(jù):輸入學(xué)號(hào),判斷是否存在,存在則顯示該學(xué)生信息;不存在則拋出異常。</p><p>  顯示數(shù)據(jù):顯示鏈表中所有的數(shù)據(jù)。</p><

43、;p>  按學(xué)號(hào)排序:比較學(xué)號(hào)大小,學(xué)號(hào)小的在前,大的在后。</p><p>  按總成績(jī)排序:比較總成績(jī)大小,總成績(jī)大的在前,總成績(jī)小的在后。</p><p>  程序設(shè)計(jì)過程、調(diào)試過程中所用的測(cè)試用例、測(cè)試方法,程序運(yùn)行的結(jié)果</p><p><b>  程序設(shè)計(jì)過程</b></p><p>  student

44、.cpp中所要設(shè)計(jì)的程序:</p><p>  bool Student::operator <(Person & per){</p><p>  return Score[3]<((Student&)per).Score[3]; //學(xué)生設(shè)計(jì)</p><p><b>  }</b></p&

45、gt;<p>  bool Student::operator>=(Person & per){</p><p>  return Score[3]>=((Student&)per).Score[3]; //學(xué)生設(shè)計(jì)</p><p><b>  }</b></p><p>  void

46、 Student::SwapData(Student * stup){ //學(xué)生數(shù)據(jù)交換(學(xué)生設(shè)計(jì))</p><p>  Student t=*this;</p><p>  *this=*stup;</p><p><b>  *stup=t;</b></p><p><b>  }<

47、;/b></p><p>  ofstream & operator<<(ofstream & out,Student * stup) //<<運(yùn)算符重載輸出至文件</p><p>  out.write((char *)stup,sizeof(Student)); //學(xué)生設(shè)計(jì)</p><p>  

48、return out;</p><p><b>  }</b></p><p>  ostream_withassign & operator<<(ostream_withassign& out,Student* stup){ //<<運(yùn)算符重載輸出至標(biāo)準(zhǔn)文件</p><p>  int i;

49、 //學(xué)生設(shè)計(jì)</p><p>  out<<stup->ID<<"\t"<<stup->Name <<"\t";</p><p>  for(i=0;i<4;i++)</p><p>  out

50、<<stup->Score[i]<<"\t";</p><p>  out<<endl;</p><p>  return out; </p><p><b>  }</b></p><p>  node.cpp中要求設(shè)計(jì)的程序:</p>

51、<p>  Node::Node(Student* stup){</p><p>  Stup=stup; //學(xué)生設(shè)計(jì)</p><p>  Prev=Next=NULL;</p><p><b>  }</b></p><p>  Node::

52、Node(Node& node){</p><p>  // *Stup=*Prev=*Next; //學(xué)生設(shè)計(jì)</p><p><b>  }</b></p><p>  Node::~Node(){</p><p>  delete Stup;

53、 //學(xué)生設(shè)計(jì)</p><p><b>  }</b></p><p>  list.cpp中要求設(shè)計(jì)的程序:</p><p>  void List::Update(){ //修改學(xué)生成績(jī)</p><p>  // S

54、tudent * stup; //學(xué)生設(shè)計(jì)</p><p>  Node *nodep;</p><p>  int id=GetID();</p><p><b>  int i;</b></p><p>  if((nodep=FindID(id))==NU

55、LL)</p><p><b>  throw(1);</b></p><p>  nodep->Stup->Score[3]=0;</p><p>  for(i=0;i<3;i++)</p><p><b>  {</b></p><p>  cout&

56、lt;<"Score"<<i;</p><p>  cin>>nodep->Stup->Score[i];</p><p>  nodep->Stup->Score[3]+=nodep->Stup->Score[i];</p><p><b>  }</b>&

57、lt;/p><p>  PrintTitle();</p><p>  PrintOne(nodep->Stup);</p><p><b>  }</b></p><p>  void List::Delete(){ //刪除一個(gè)學(xué)生</p>&

58、lt;p>  // Student * stup; //學(xué)生設(shè)計(jì)</p><p>  Node * nodep;</p><p>  int id=GetID();</p><p>  if((nodep=FindID(id))==NULL)</p><p><b>

59、  throw(1);</b></p><p>  if(Tail!=nodep){</p><p>  nodep->Next->Prev=nodep->Prev; //刪除中間的結(jié)點(diǎn)</p><p>  nodep->Prev->Next=nodep->Next;</p><p

60、><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  nodep->Prev->Next=nodep->Next; //刪除最后一個(gè)結(jié)點(diǎn)</p><p>  T

61、ail=nodep->Prev;</p><p><b>  }</b></p><p>  delete nodep;</p><p>  PrintList();</p><p><b>  }</b></p><p>  void List::Query(){

62、 //查詢學(xué)生數(shù)據(jù)</p><p>  // Student * stup; //學(xué)生設(shè)計(jì)</p><p>  Node *nodep;</p><p>  int id=GetID();</p><p>  if((node

63、p=FindID(id))==NULL)</p><p>  throw(1); </p><p>  PrintTitle();</p><p>  PrintOne(nodep->Stup);</p>&l

64、t;p><b>  }</b></p><p>  void List::Insert(Node * nodep){ //在鏈表尾插入一個(gè)學(xué)生</p><p>  Tail->Next =nodep; //學(xué)生設(shè)計(jì)</p><p>  nodep->Prev=Tai

65、l;</p><p>  Tail=nodep; </p><p><b>  }</b></p><p>  void List::SortScore(){ //按總成績(jī)排序</p><p>  Node * nodef,*nodel=Tai

66、l; //學(xué)生設(shè)計(jì)</p><p>  if(Head!=Tail){</p><p>  while(Head->Next!=nodel){</p><p>  nodef=Head->Next;</p><p>  while(nodef!=nodel){</p><p&

67、gt;  if(*(nodef->Stup)<*(nodef->Next->Stup))</p><p>  nodef->Stup->SwapData(nodef->Next->Stup);</p><p>  nodef=nodef->Next;</p><p><b>  }</b>&

68、lt;/p><p>  nodel=nodel->Prev;</p><p><b>  }</b></p><p>  PrintList();</p><p><b>  }</b></p><p><b>  }</b></p>&

69、lt;p>  void List::SaveBin(){ //鏈表數(shù)據(jù)保存在二進(jìn)制文件</p><p>  Node *nodep=Head->Next; //學(xué)生設(shè)計(jì)</p><p>  ofstream outStudent;</p><p>  if(Head!=Tail)

70、{</p><p>  outStudent.open("Student.dat",ios::binary);</p><p>  while(nodep){</p><p>  outStudent<<nodep->Stup;</p><p>  nodep=nodep->Next;</p&

71、gt;<p><b>  }</b></p><p><b>  }</b></p><p>  outStudent.close();</p><p><b>  }</b></p><p>  void List::PrintList(){

72、 //顯示鏈表中數(shù)據(jù)</p><p>  Node* nodep=Head->Next;</p><p>  if(Head!=Tail){</p><p>  PrintTitle(); //學(xué)生設(shè)計(jì)</p><p>  while(nodep!=NULL){&

73、lt;/p><p>  PrintOne(nodep->Stup);</p><p>  nodep=nodep->Next;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b&

74、gt;</p><p>  cout<<"No student"<<endl;</p><p><b>  } </b></p><p>  main.cpp中要設(shè)計(jì)的程序:</p><p>  case UPDATE: //

75、修改學(xué)生成績(jī)</p><p>  try{ //學(xué)生設(shè)計(jì)</p><p>  ls.Update();</p><p><b>  }</b></p><p>  catch(int){</p><p>  cout<<"Wrong

76、!This Score is NULL"<<endl;</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case DELETE: //刪除一個(gè)學(xué)生</p><p>

77、  try{ //學(xué)生設(shè)計(jì)</p><p>  ls.Delete();</p><p><b>  }</b></p><p>  catch(int){</p><p>  cout<<"Wrong!This Student is NULL&quo

78、t;<<endl;</p><p><b>  }</b></p><p><b>  break;</b></p><p>  case QUERY: //查詢一個(gè)學(xué)生數(shù)據(jù)</p><p>  try{

79、 //學(xué)生設(shè)計(jì)</p><p>  ls.Query();</p><p><b>  }</b></p><p>  catch(int){</p><p>  cout<<"Wrong!This Data is NULL"<<endl;</p>

80、<p><b>  }</b></p><p><b>  break;</b></p><p>  case SORTSCORE: //根據(jù)總成績(jī)排序</p><p>  ls.SortScore(); //學(xué)生設(shè)計(jì)</p&g

81、t;<p>  調(diào)試過程中所用的測(cè)試用例</p><p>  1. 自動(dòng)生成測(cè)試函數(shù):</p><p>  無須手工編輯測(cè)試代碼,建立、編輯測(cè)試用例在測(cè)試用例編輯器中進(jìn)行。</p><p>  2. 測(cè)試用例可視化編輯: </p><p>  使用測(cè)試用例編輯器建立、編輯測(cè)試用例,VU自動(dòng)生成代碼,通常只須填入輸入輸出的數(shù)值。&

82、lt;/p><p>  3. 測(cè)試用例可用點(diǎn)操作符訪問成員變量,還可以用同樣的語法調(diào)用成員函數(shù)。 </p><p><b>  測(cè)試方法</b></p><p>  源程序編制完成后,首先由C++編譯程序build編譯成.obj文件,再由連接程序連接成可執(zhí)行文件。在編譯時(shí),如果源程序存在語法錯(cuò)誤(errors),則系統(tǒng)不允許連接,直到改正了所有的語

83、法錯(cuò)誤后,才能進(jìn)行連接。另外,在編譯時(shí)還可能存在另一類錯(cuò)誤,即警告性錯(cuò)誤(warnings),這類錯(cuò)誤一般不影響程序的連接。</p><p>  選擇編譯菜單(Build)對(duì)編譯好的源程序進(jìn)行編譯,若程序編譯沒有發(fā)現(xiàn)錯(cuò)誤,則該窗口顯示“”,這是可以進(jìn)行程序的連接;若編譯后存在語法錯(cuò)誤或警告,該窗口中則顯示兩類錯(cuò)誤的個(gè)數(shù),并列出相應(yīng)的錯(cuò)誤位置和原因。</p><p>  改正編譯期錯(cuò)誤的方法

84、和一般原則為:</p><p>  改正錯(cuò)誤是一般從第一個(gè)錯(cuò)誤開始,然后依次高正后續(xù)的錯(cuò)誤。因?yàn)榍懊驽e(cuò)誤的出現(xiàn),往往會(huì)導(dǎo)致編譯系統(tǒng)在編譯時(shí)錯(cuò)位,把本來正確的語句認(rèn)為是錯(cuò)的,也可能把某些語句的錯(cuò)誤掩蓋掉。所以當(dāng)改正當(dāng)前的錯(cuò)誤后,可能會(huì)使錯(cuò)誤量減少很多,也可能增加很多;</p><p>  根據(jù)情況,每改正一個(gè)或幾個(gè)錯(cuò)誤后,應(yīng)重新編譯一下,然后再從第一個(gè)錯(cuò)誤進(jìn)行改錯(cuò),知道所有錯(cuò)誤都被 改正過來

85、。</p><p>  實(shí)踐中發(fā)現(xiàn),往往很小的程序在執(zhí)行時(shí)也會(huì)出現(xiàn)錯(cuò)誤。當(dāng)一個(gè)程序可以被連接成功,但執(zhí)行時(shí)卻存在不正?,F(xiàn)象,如不能得到預(yù)期的運(yùn)行結(jié)果或出現(xiàn)死機(jī)等,而一下子很難熬出出錯(cuò)原因時(shí),可以采取單步跟蹤執(zhí)行命令。</p><p><b>  單步跟蹤執(zhí)行命令:</b></p><p>  單步跟蹤執(zhí)行程序,能夠清楚地看到程序的一步步執(zhí)行過程

86、,從而判斷源程序的執(zhí)行流程是否與事先設(shè)計(jì)的流程一致,從中發(fā)現(xiàn)造成死循環(huán)或死機(jī)的原因所在。</p><p>  程序調(diào)試完畢,或想取消程序的調(diào)試狀態(tài)回到編輯狀態(tài),可以選擇集成環(huán)境調(diào)試(Debug),即能夠達(dá)到目的。</p><p><b>  程序運(yùn)行的結(jié)果</b></p><p>  程序運(yùn)行后的菜單顯示</p><p>

87、;  “1:add student”界面</p><p>  “2:update student”界面</p><p>  “3:delete student”界面</p><p>  “4:query student”界面</p><p>  “5:display student”界面</p><p>  

88、“6:sort student by No”界面</p><p>  “7:Sort student by score”界面 </p><p>  “8:保存數(shù)據(jù)”界面</p><p>  在課程設(shè)計(jì)中遇到的問題和解決的方法,還沒有能解決的問題</p><p><b> ?。ㄒ唬┯龅降膯栴}:</b></

89、p><p>  設(shè)計(jì)刪除一個(gè)學(xué)生的程序后,在程序運(yùn)行過程中,刪除了所有學(xué)生的信息,僅顯示標(biāo)題,沒有其他學(xué)生的信息?同時(shí)在刪除學(xué)生時(shí),若刪除最后一個(gè)學(xué)生,則出現(xiàn)提示終止程序?</p><p>  答:(1)刪除一個(gè)學(xué)生,不是指僅僅刪除這個(gè)學(xué)生,還包括刪除結(jié)點(diǎn)。</p><p> ?。?)在設(shè)計(jì)刪除結(jié)點(diǎn)的同時(shí),還要考慮刪除的是中間的結(jié)點(diǎn)還是最后一個(gè)結(jié)點(diǎn),即if…else…對(duì)

90、應(yīng),根據(jù)刪除結(jié)點(diǎn)位置的不同設(shè)計(jì)相應(yīng)的程序才行。</p><p>  在修改學(xué)生成績(jī)和查詢學(xué)生數(shù)據(jù)設(shè)計(jì)程序過程中,在編譯后顯示無錯(cuò)誤,但有警告,但在繼續(xù)運(yùn)行程序中,修改學(xué)生成績(jī)和查詢學(xué)生數(shù)據(jù)不能執(zhí)行?</p><p>  答:編譯后無錯(cuò)誤即可運(yùn)行程序,但若想正確執(zhí)行程序,則需要修改源程序,直至源程序既無錯(cuò)誤又無警告才能實(shí)現(xiàn)程序的正常運(yùn)行及顯示結(jié)果。</p><p> 

91、 3. 數(shù)據(jù)交換如何設(shè)計(jì)?</p><p>  答:void Student::SwapData(Student * stup){ //學(xué)生數(shù)據(jù)交換</p><p>  Student t=*this;</p><p>  *this=*stup;</p><p><b>  *stup=t;&l

92、t;/b></p><p><b>  }</b></p><p>  要實(shí)現(xiàn)Swap數(shù)據(jù)交換,一定要定義一個(gè)中間量。這里要求對(duì)*this指針的靈活使用。</p><p>  4.總成績(jī)比較大小,為什么編譯后顯示Score無定義?</p><p>  答:若直接寫per.Score[3],則顯示無定義。因?yàn)镾cor

93、e在Person類里沒定義,它是定義在Student類中的,所以要寫成((Student&)per).Score[3]才能保證編譯無錯(cuò)誤。</p><p>  5.插入運(yùn)算符重載輸出至標(biāo)準(zhǔn)文件的程序設(shè)計(jì)?</p><p>  答: ostream_withassign& operator<<(ostream_withassign& out,Studen

94、t* stup){ //<<運(yùn)算符重載輸出至標(biāo)準(zhǔn)文件</p><p><b>  int i;</b></p><p>  out<<stup->ID<<"\t"<<stup->Name <<"\t";</p><p>  for

95、(i=0;i<4;i++)</p><p>  out<<stup->Score[i]<<"\t";</p><p>  out<<endl;</p><p>  return out; </p><p><b>  }</b></p>

96、;<p>  使程序運(yùn)行后顯示的標(biāo)題是:</p><p>  ID Name Score1 Score2 Score3 Score</p><p> ?。ǘ┪茨芙鉀Q的問題:</p><p>  對(duì)于指針的前驅(qū)和后繼的理解不清,老是混淆。</p><p>  對(duì)文件的輸入與輸出存在問題。</p><

97、;p>  課程設(shè)計(jì)的體會(huì)和收獲</p><p>  通過這兩周的課程設(shè)計(jì),我完成了一個(gè)較大的C++語言面向?qū)ο蟪绦蛟O(shè)計(jì),,以及認(rèn)真完成了課程設(shè)計(jì)報(bào)告。</p><p>  回憶這兩周的時(shí)間,我收獲很大。首先,我熟練地運(yùn)用所學(xué)的知識(shí)編寫程序,并較好地完成,心里很高興;其次,在設(shè)計(jì)的過程中遇到一些難題,我會(huì)認(rèn)真地去思考,或者充分利用網(wǎng)絡(luò)資源來尋求幫助,提高獲取信息的能力。如果自己還是解決

98、不了的話,我會(huì)向同學(xué)和老師求助,在交流中共同進(jìn)步。</p><p>  對(duì)于計(jì)算機(jī)專業(yè)的大學(xué)生來說,積累實(shí)戰(zhàn)經(jīng)驗(yàn)是一項(xiàng)極其重要的內(nèi)容,很可能成為將來就業(yè)的敲門磚。而課程設(shè)計(jì)就是積累實(shí)戰(zhàn)經(jīng)驗(yàn)的一個(gè)過程,雖然程序的規(guī)模并不大,但能夠讓我們盡早地認(rèn)識(shí)軟件開發(fā)的重要性和必要性,為將來的就業(yè)打下堅(jiān)實(shí)的基礎(chǔ)。</p><p>  經(jīng)過兩個(gè)星期的上機(jī)實(shí)踐學(xué)習(xí),使我對(duì)C++語言有了更進(jìn)一步的認(rèn)識(shí)和了解,要

99、想學(xué)好它,重在實(shí)踐,要通過不斷的上機(jī)操作才能更好地學(xué)習(xí)它。通過實(shí)踐,我也發(fā)現(xiàn)我的好多不足之處。首先是自己編程粗心大意,經(jīng)常出錯(cuò),通過學(xué)習(xí)也有所改進(jìn);再有對(duì)C++語言的一些函數(shù)不太了解,還有對(duì)函數(shù)調(diào)用的正確使用不夠熟悉,以及對(duì)C++語言中經(jīng)常出現(xiàn)的錯(cuò)誤也不了解,通過實(shí)踐,使我在這幾個(gè)方面的認(rèn)識(shí)有所提高。這次的課程設(shè)計(jì)讓我認(rèn)識(shí)到很多C++的內(nèi)在要素:</p><p>  程序設(shè)計(jì)語言是程序設(shè)計(jì)的工具。這是我通過兩周課

100、程設(shè)計(jì)深深體會(huì)的一點(diǎn),并且發(fā)現(xiàn)如果想有效的進(jìn)行程序設(shè)計(jì),正確地應(yīng)用程序設(shè)計(jì)語言表達(dá)算法,必須準(zhǔn)確的運(yùn)用程序設(shè)計(jì)語言,掌握其語法知識(shí)。</p><p>  學(xué)習(xí)課程設(shè)計(jì)必須重視時(shí)間環(huán)節(jié),多讀程序,多編寫程序,多上機(jī)實(shí)踐。這次的課程設(shè)計(jì)就使得課堂教學(xué)、式樣和實(shí)踐之間的關(guān)系更加緊密,對(duì)我的學(xué)習(xí)有著很深的影響。</p><p>  我發(fā)現(xiàn)C++并不是純粹的面向?qū)ο蟮恼Z言,它是一種混合語言。學(xué)習(xí)C+

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論