2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩20頁(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>  課 程 設(shè) 計(jì) 任 務(wù) 書</p><p><b>  目 錄</b></p><p>  1 需求分析- 1 -</p><p>  2 算法基本原理- 1 -</p><p>  3 類設(shè)計(jì)- 2 -</p><p>  4 詳細(xì)設(shè)計(jì)- 3 -</p>

2、<p>  4.1 類的接口設(shè)計(jì)- 3 -</p><p>  4.2 類的實(shí)現(xiàn)- 5 -</p><p>  4.3 主函數(shù)設(shè)計(jì)- 10 -</p><p>  5 DOS界面程序運(yùn)行結(jié)果及分析- 11 -</p><p>  5.1 程序運(yùn)行結(jié)果- 11 -</p><p>  5.2運(yùn)行結(jié)

3、果分析- 12 -</p><p>  6 基于MFC的圖形界面程序開發(fā)- 13 -</p><p>  6.1 基于MFC的圖形界面程序設(shè)計(jì)- 13 -</p><p>  6.2 程序測(cè)試- 17 -</p><p>  6.3 MFC程序編寫總結(jié)- 19 -</p><p>  7 參考文獻(xiàn)- 19

4、-</p><p><b>  1 需求分析</b></p><p>  (1) 計(jì)算機(jī)處理的對(duì)象分為數(shù)值數(shù)據(jù)和非數(shù)值數(shù)據(jù),字符串是最基本的非數(shù)值數(shù)據(jù)。其應(yīng)用非常廣泛,它是許多軟件系統(tǒng)(如字符編輯、情報(bào)檢索、詞法分析、符號(hào)處理、自然語(yǔ)言翻譯等系統(tǒng))的操作對(duì)象。其重要性不言而喻。</p><p>  (2)字符串是字符的有限集合,可記作a=’a1

5、 …an’。其中a是字符串的名,單括號(hào)里的字符序列是字符串的值,單引號(hào)不是字符串的成分,其作用是為了避免變量名與常量混淆。ai(0<i<n+1)稱為字符串的元素,是構(gòu)成字符串的基本單位。N表示字符串的長(zhǎng)度,且n=>0,如果等于0,則稱a為空串,記作:a=’’。 </p><p><b>  2 算法基本原理</b></p><p> ?。?)字符串從

6、結(jié)構(gòu)上看是一種以字符為數(shù)據(jù)元素的線性表,從存儲(chǔ)結(jié)構(gòu)的不同可分為順序表和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),它們都適用于字符串,但由于要求的操作不同,為了提高運(yùn)算效率所選用的存儲(chǔ)結(jié)構(gòu)也是不同的。對(duì)于字符串改動(dòng)較頻繁的一般用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),而順序存儲(chǔ)結(jié)構(gòu)能夠高效的讀取。所以各有優(yōu)點(diǎn)。本程序由于需要大量改動(dòng)數(shù)據(jù),理所當(dāng)然的選擇鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),其算法結(jié)構(gòu)為:</p><p>  Typedef struct</p><p>

7、;<b>  {</b></p><p>  Char *ch; /*若字符串為空,則按長(zhǎng)度分配存儲(chǔ)區(qū),否則為NULL */</p><p>  Int length; /*字符串的長(zhǎng)度*、</p><p><b>  }</b></p><p>  (2)本題字符串要求用堆來(lái)分

8、配字符串的存儲(chǔ)空間,采用堆分配函數(shù)malloc,它的格式為T->ch=(char *)malloc(sizeof(char)*len,就會(huì)為字符串分配內(nèi)存。</p><p> ?。?)函數(shù)是有字符串類進(jìn)行調(diào)用的,通過(guò)在主函數(shù)中定義字符串類的對(duì)象,作為函數(shù)的參數(shù),對(duì)于需要改寫對(duì)象的需要進(jìn)行址傳遞,我們可以通過(guò)函數(shù)在主函數(shù)中的反映來(lái)觀察他的執(zhí)行狀態(tài)。</p><p><b> 

9、 3 類設(shè)計(jì)</b></p><p><b>  4 詳細(xì)設(shè)計(jì)</b></p><p>  整個(gè)程序分為三個(gè)獨(dú)立的文檔,Linequ.h文件中包括矩陣類Matrix和線性方程組類Linequ的聲明,Linequ.cpp文件中包括這兩個(gè)類的成員函數(shù)實(shí)現(xiàn)文件;main.cpp文件包括程序的主函數(shù),主函數(shù)中定義了一個(gè)類Linequ的對(duì)象,通過(guò)這個(gè)對(duì)象求解一個(gè)四元

10、線性方程組。</p><p>  4.1 類的接口設(shè)計(jì)</p><p>  //Linequ.h文件,實(shí)現(xiàn)類的聲明</p><p>  #include <iostream></p><p>  #include <cmath></p><p>  using namespace std;<

11、;/p><p>  class Matrix//基類Matrix聲明</p><p><b>  {</b></p><p>  public://外部接口</p><p>  Matrix(int dims=2);//構(gòu)造函數(shù)</p><p>  ~Matrix();//析構(gòu)

12、函數(shù)</p><p>  void SetMatrix(double *rmax);//矩陣賦初值</p><p>  void PrintM();//顯示矩陣</p><p>  protected:</p><p>  int index;//方陣的行數(shù)</p><p>  double* MatrixA

13、;//矩陣存放數(shù)組首地址</p><p><b>  };</b></p><p>  class Linequ:public Matrix//公有派生類Linequ聲明</p><p><b>  {</b></p><p>  public://外部接口</p>&

14、lt;p>  Linequ(int dims=2);//構(gòu)造函數(shù)</p><p>  ~Linequ();//析構(gòu)函數(shù)</p><p>  void SetLinequ(double *a, double *b);//方程賦值</p><p>  void PrintL();//顯示方程</p><p>  int

15、Solve();//全選主元高斯消去法求解方程</p><p>  void ShowX();//顯示方程的解</p><p>  private://私有數(shù)據(jù)</p><p>  double *sums;//方程右端項(xiàng)</p><p>  double *solu;//方程的解</p>&l

16、t;p><b>  };</b></p><p>  經(jīng)過(guò)公有派生,Linequ類獲得了除構(gòu)造函數(shù)、析構(gòu)函數(shù)之外的Matrix類的全部成員,由于基類的成員是公有和保護(hù)類型,因此在派生類中的成員函數(shù)中,基類繼承來(lái)的成員全部可以訪問(wèn),而對(duì)于建立Linequ類對(duì)象的外部模塊來(lái)講,基類的保護(hù)成員是無(wú)法訪問(wèn)的。通過(guò)保護(hù)訪問(wèn)類型和公有的繼承方式,實(shí)現(xiàn)了基類Matrix的數(shù)據(jù)的有效共享和可靠保護(hù)。在

17、程序中,方程的系數(shù)矩陣、解以及右端項(xiàng)全部采用了動(dòng)態(tài)內(nèi)存分配技術(shù),這些工作都是在基類、派生類的構(gòu)造函數(shù)中完成,它們的清理工作在析構(gòu)函數(shù)中完成。</p><p><b>  4.2 類的實(shí)現(xiàn)</b></p><p><b>  4.3 主函數(shù)設(shè)計(jì)</b></p><p>  int main()</p><

18、p><b>  {</b></p><p>  int a=1,p,len;</p><p>  MyString S;</p><p>  MyString st1;</p><p>  MyString st2;</p><p>  MyString sub;</p>&l

19、t;p>  MyString T;</p><p>  char ch1[20];</p><p><b>  char cl;</b></p><p>  cout<<"****************************歡迎進(jìn)入字符串操作程序****************************"

20、<<endl;</p><p>  while (a!=0)</p><p>  { cout<<"-------------------------------------------------------------------------------"<<endl;</p><p>  cout&l

21、t;<"請(qǐng)選擇功能操作:"<<endl;</p><p>  cout<<"\n1.字符串的賦值\n2.字符串的長(zhǎng)度\n3.字符串的比較\n4.字符串的連接\n5.求字符串的子串\n6.清空字符串\n0.退出"<<endl;</p><p><b>  cin >>a;</b>

22、;</p><p><b>  switch(a)</b></p><p><b>  {</b></p><p>  case 0:cout<<"******************************謝謝使用!祝您工作順利!*****************************"

23、;<<endl;break;</p><p>  case 1: cout<<"請(qǐng)輸入用于賦值新字符串"<<endl;</p><p><b>  cin>>ch1;</b></p><p>  InitString(&st1); </p><p

24、>  StrAssign(&st1,ch1);</p><p>  cout<<"字符串被賦的值為:";</p><p>  PrintString(st1);break ;</p><p>  case 2: cout<<"請(qǐng)輸入新字符串S"<<endl;</p>

25、<p><b>  cin>>ch1;</b></p><p>  InitString(&st1);</p><p>  StrAssign(&st1,ch1);</p><p>  cout<<"長(zhǎng)度為:"<<StrLength(st1)<<e

26、ndl;break;</p><p>  case 3:{ cout<<"請(qǐng)輸入要比較的兩個(gè)字符串S pk T"<<endl;</p><p>  cout<<"請(qǐng)輸入第一個(gè)字符串st1(長(zhǎng)度<20:)";</p><p><b>  cin>>ch1;</

27、b></p><p>  InitString(&st1);</p><p>  StrAssign(&st1,ch1);</p><p>  cout<<"請(qǐng)輸入第二個(gè)字符串st2(長(zhǎng)度<20):";</p><p><b>  cin>>ch1;</b

28、></p><p>  InitString(&st2);</p><p>  StrAssign(&st2,ch1);</p><p>  StrCompare(st1,st2);</p><p>  int flag=StrCompare(st1,st2);</p><p>  if(flag

29、==0)</p><p><b>  {</b></p><p>  cout<<"字符串st1與st2相等"<<endl;</p><p><b>  }</b></p><p>  else if(flag>0)</p><p

30、><b>  {</b></p><p>  cout<<"字符串st1比st2大"<<endl;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {&

31、lt;/b></p><p>  cout<<"字符串st1比st2小"<<endl;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break ;</b></

32、p><p>  case 4:cout<<"請(qǐng)輸入要連接的兩個(gè)字符串S1 & S2"<<endl;</p><p>  cout<<"請(qǐng)輸入第一個(gè)字符串(長(zhǎng)度<20):";</p><p><b>  cin>>ch1;</b></p>

33、<p>  InitString(&st1);</p><p>  StrAssign(&st1,ch1);</p><p>  cout<<"請(qǐng)輸入第二個(gè)字符串(長(zhǎng)度<20):";</p><p><b>  cin>>ch1;</b></p>&l

34、t;p>  InitString(&st2);</p><p>  StrAssign(&st2,ch1);</p><p>  InitString(&T);</p><p>  Concat(&T,st1,st2);</p><p>  cout<<"連接后的新字符串:"

35、;<<endl;</p><p>  PrintString(T);</p><p><b>  break;</b></p><p><b>  case 5:</b></p><p>  cout<<"請(qǐng)輸入主串S(長(zhǎng)度<20):"<<

36、;endl;</p><p><b>  cin>>ch1;</b></p><p>  InitString(&S);</p><p>  StrAssign(&S,ch1);</p><p>  InitString(&sub);</p><p>  cou

37、t<<"請(qǐng)輸入起始位置p:"<<endl;</p><p><b>  cin>>p;</b></p><p>  cout<<"請(qǐng)輸入子串的長(zhǎng)度len(請(qǐng)考慮主串的長(zhǎng)度)"<<endl;</p><p><b>  cin>&g

38、t;len;</b></p><p>  cout<<"所求子串為:"<<endl;</p><p>  SubString(&sub,S,p,len);</p><p>  PrintString(sub);</p><p><b>  break;</b>

39、;</p><p>  case 6:cout<<"確定要清空的字符串(Y/N)"<<endl;</p><p><b>  cin>>cl;</b></p><p>  if(cl=='y'||cl=='Y')</p><p>&l

40、t;b>  {</b></p><p>  ClearString(&st1);</p><p>  ClearString(&st2);</p><p>  ClearString(&sub);</p><p>  ClearString(&T);</p><p>&

41、lt;b>  };</b></p><p>  cout<<"字符串操作清除成功!"<<endl;</p><p><b>  break;</b></p><p>  default:cout<<"操作錯(cuò)誤!請(qǐng)輸入正確序號(hào)!"<<endl

42、;</p><p><b>  } </b></p><p><b>  };</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  主函數(shù)的設(shè)計(jì)思路是

43、通過(guò)定義mystring類的對(duì)象,然后通過(guò)生成的對(duì)象去調(diào)用相應(yīng)的函數(shù)從而達(dá)到調(diào)試所編寫的函數(shù)功能的目的。此主函數(shù)有著演示函數(shù)的要求,為了使它能夠更靈活的進(jìn)行函數(shù)的調(diào)用,首先設(shè)計(jì)了一個(gè)循環(huán)體,由整型變量a控制,當(dāng)a=0時(shí)就結(jié)束循環(huán)。而在循環(huán)體中又由switch(a)函數(shù)來(lái)控制,通過(guò)輸入不同的a的值來(lái)控制不同的操作,即函數(shù)的演示。</p><p><b>  。</b></p>&

44、lt;p>  5 DOS界面程序運(yùn)行結(jié)果及分析</p><p>  從它運(yùn)行的界面可以看出,當(dāng)進(jìn)入函數(shù)調(diào)試狀態(tài)時(shí)我們可也通過(guò)輸入相應(yīng)的操作序號(hào)來(lái)選擇不同的操作。例如選擇輸入1將進(jìn)入字符串的賦值操作。下面就來(lái)看一下相應(yīng)的函數(shù)。</p><p>  輸入1點(diǎn)回車鍵就被要求輸入要賦得值,函數(shù)原型為StrAssign(&T, chars),執(zhí)行后就把字符串chars賦給對(duì)象T了。&l

45、t;/p><p>  輸入2則進(jìn)入字符串的長(zhǎng)度函數(shù),我們要測(cè)試它的功能只要輸入一個(gè)字符串就可以加以驗(yàn)證。例如上圖所示輸入字符串為:sfdffgffh,則串長(zhǎng)為9.</p><p>  選擇4則進(jìn)行字符串的比較功能,這個(gè)函數(shù)需要讀取相比較的兩個(gè)字符串,通過(guò)對(duì)字符串的每個(gè)字符的逐個(gè)的比較有一個(gè)返回值返給調(diào)用函數(shù)。</p><p>  選擇4則進(jìn)行字符串的連接功能,把一個(gè)字符

46、串連在另一個(gè)字符串的后面,如上圖所示:第一個(gè)字符串為dfghgh,另一個(gè)字符串為fgghf,則連接的字符串為dfghghfgghf。</p><p>  輸入5則選擇求字符串子串的功能,這個(gè)函數(shù)需要輸入一個(gè)主串,起始位置p和子串長(zhǎng)度len,輸入好參數(shù)后就可輸出所求的子串了。</p><p>  因?yàn)樯鲜鲎址僮髦卸冀o字符串賦了值,所以需要字符串,回到初始狀態(tài)。</p>&l

47、t;p>  選擇0則結(jié)束函數(shù)演示。</p><p>  5.1 程序運(yùn)行結(jié)果</p><p><b>  圖2 程序運(yùn)行結(jié)果</b></p><p>  從圖2中可以看出,程序能夠?qū)崿F(xiàn)全選主元高斯消去法對(duì)于線性方程組的求解,但是,對(duì)于求解結(jié)果的正確性問(wèn)題卻無(wú)法獲知,為了能夠驗(yàn)證求解結(jié)果的正確性,考慮將求解結(jié)果x帶入原方程Ax=b中,如果滿

48、足原方程,即說(shuō)明求解結(jié)果是正確的,否則,說(shuō)明求解存在問(wèn)題,需對(duì)程序進(jìn)行進(jìn)一步調(diào)試分析。</p><p>  為此,考慮在Linequ類中增加測(cè)試函數(shù)Test,用以驗(yàn)證求解結(jié)果的正確性。</p><p>  void Linequ::test()//求解結(jié)果驗(yàn)證函數(shù)</p><p><b>  {</b></p><p&g

49、t;  double *b2;</p><p>  b2=new double[index];</p><p>  for (int i=0;i<index;i++)//將解solu帶入原方程求出新的右端項(xiàng)b2</p><p><b>  {</b></p><p><b>  b2[i]=0;<

50、/b></p><p>  for (int j=0;j<index;j++)</p><p>  b2[i]=b2[i]+MatrixA[i*index+j]*solu[j];</p><p><b>  }</b></p><p>  for (i=0;i<index;i++)//輸出新的右端項(xiàng)&

51、lt;/p><p><b>  {</b></p><p>  cout<<b2[i]<<" ";</p><p><b>  }</b></p><p>  cout<<endl;</p><p><b>  

52、}</b></p><p>  在主函數(shù)main中增加語(yǔ)句:</p><p>  equ1.test();//驗(yàn)證求解結(jié)果</p><p>  經(jīng)過(guò)驗(yàn)證的程序運(yùn)行結(jié)果如圖3所示。</p><p>  圖3 程序運(yùn)行結(jié)果的驗(yàn)證</p><p>  從圖3中可以看出,方程組求解驗(yàn)證的右端項(xiàng)結(jié)果與原右端項(xiàng)結(jié)果完

53、全一致,這說(shuō)明了方程組求解的正確性。</p><p><b>  5.2運(yùn)行結(jié)果分析</b></p><p>  整個(gè)程序中的矩陣存儲(chǔ)采用的是一維數(shù)組和動(dòng)態(tài)內(nèi)存分配方式。</p><p>  基類是專門處理矩陣的類,公有派生類Linequ是針對(duì)線性方程組而設(shè)計(jì)的,除了繼承基類的基本特征之外,結(jié)合問(wèn)題的實(shí)際需要,增加了很多線性方程組所特有的成員,

54、使基類Matrix進(jìn)一步具體化、特殊化,達(dá)到對(duì)問(wèn)題的有效描述和處理。</p><p>  程序的訪問(wèn)控制也是根據(jù)問(wèn)題的需要而設(shè)計(jì)的?;惖臄?shù)據(jù)成員的存儲(chǔ)、維護(hù)著矩陣數(shù)據(jù),這正是派生類方程組的系數(shù)矩陣,使派生類解方程成員函數(shù)必須訪問(wèn)的。利用保護(hù)成員特征,將基類數(shù)據(jù)成員的訪問(wèn)控制屬性設(shè)置為保護(hù)型,在公有派生類Linequ中就可以訪問(wèn)到基類繼承下來(lái)的保護(hù)成員;而對(duì)于類外的其余模塊,這些數(shù)據(jù)無(wú)法訪問(wèn)。這樣,就在數(shù)據(jù)的共享

55、與隱藏之間尋找到一個(gè)比較恰當(dāng)?shù)慕Y(jié)合點(diǎn)。</p><p>  在派生過(guò)程中,基類的構(gòu)造函數(shù)和析構(gòu)函數(shù)無(wú)法繼承下來(lái),因此在派生類中需要添加構(gòu)造函數(shù)、析構(gòu)函數(shù)來(lái)完成派生類的初始化和最后清理工作。派生類的構(gòu)造函數(shù)通過(guò)調(diào)用基類的構(gòu)造函數(shù)來(lái)對(duì)基類數(shù)據(jù)進(jìn)行初始化,本設(shè)計(jì)中,派生類Linequ的構(gòu)造函數(shù)調(diào)用了基類Matrix的構(gòu)造函數(shù)并傳遞必須的初始化參數(shù)。派生類的析構(gòu)函數(shù)調(diào)用基類的構(gòu)造函數(shù),共同完成清理任務(wù)。</p>

56、;<p>  6 基于MFC的圖形界面程序開發(fā)</p><p>  MFC的圖形界面程序設(shè)計(jì)可在上述類設(shè)計(jì)的基礎(chǔ)上進(jìn)行改造,MFC的圖形界面程序與DOS界面程序的主要不同點(diǎn)是:MFC圖形界面程序與DOS界面程序的輸入輸出方式不同,DOS界面程序采用字符交互式實(shí)現(xiàn)數(shù)據(jù)輸入輸出,主要通過(guò)cin,cout等I/O流實(shí)現(xiàn),而MFC的圖形程序界面采用標(biāo)準(zhǔn)Windows窗口和控件實(shí)現(xiàn)輸入輸出,因此必須在MFC類

57、的框架下加入上面所設(shè)計(jì)的矩陣和方程組類,并通過(guò)圖形界面的輸入輸出改造來(lái)完成。</p><p>  6.1 基于MFC的圖形界面程序設(shè)計(jì)</p><p><b>  (1)界面設(shè)計(jì)</b></p><p>  首先在VC中建立MFC AppWizard(exe)工程,名稱為GuassLineGUI,并在向?qū)У腟tep1中選擇Dialog base

58、d,即建立基于對(duì)話框的應(yīng)用程序,如下圖4~5所示。</p><p>  圖4 建立MFC AppWizard(exe)工程</p><p>  圖5 建立基于對(duì)話框的應(yīng)用程序</p><p>  將對(duì)話框資源中的默認(rèn)對(duì)話框利用工具箱改造成如下界面,如圖6所示。</p><p>  圖6 方程組求解程序界面設(shè)計(jì)</p><p

59、>  圖6所示的界面中包含了3個(gè)Static Text控件,3個(gè)Button控件,和24個(gè)Edit Box控件,控件的基本信息列表如下表1所示。</p><p><b>  表1 控件基本信息</b></p><p><b> ?。?)代碼設(shè)計(jì)</b></p><p>  為了能夠?qū)?duì)話框界面上的控件能夠與代碼聯(lián)系起

60、來(lái),需要為24個(gè)Edit Box控件建立Member Variables,按Ctrl+w鍵進(jìn)入MFC ClassWizard界面,選擇Member Variables選項(xiàng)卡,可顯示成員變量設(shè)置界面,如圖7所示。</p><p>  圖7 成員變量設(shè)置界面</p><p>  通過(guò)該界面設(shè)置與24個(gè)Edit Box控件對(duì)應(yīng)的成員變量,具體如表2所示。</p><p>

61、<b>  表2 控件基本信息</b></p><p>  下面是編寫代碼的重要階段,可以借鑒在設(shè)計(jì)基于DOS界面的控制臺(tái)應(yīng)用程序的代碼,并將其作必要的改寫,具體改寫的步驟與內(nèi)容如下。</p><p> ?、賹inequ.h文件和Linequ.cpp文件合并成一個(gè)文件,重新命名為L(zhǎng)inequ.h,并將其加入MFC工程。</p><p> ?、?/p>

62、修改Linequ.h文件具體包括:</p><p>  將顯示矩陣PrintM()函數(shù)和顯示方程PrintL()函數(shù)注釋掉,因?yàn)樵趫D形界面的程序上已經(jīng)不需要連個(gè)函數(shù)承擔(dān)輸出功能了;</p><p>  將輸出方程組的解ShowX()函數(shù)加入?yún)?shù)double x[]變成ShowX(double x[]),以實(shí)現(xiàn)將所求的解輸出至參數(shù)x中,并最終完成在對(duì)話框界面上的顯示;</p>

63、<p>  將全選主元高斯法求解函數(shù)Solve()中的兩處cout語(yǔ)句去掉,因?yàn)椴恍枰膊荒軌蚴褂胏out流實(shí)現(xiàn)輸出。</p><p> ?、墼趯?duì)話框類的實(shí)現(xiàn)文件GuassLineGUIDlg.cpp中加入#include "Linequ.h",以實(shí)現(xiàn)在該文件中可使用Linequ類。</p><p> ?、茉贕uassLineGUIDlg.cpp文件中加入

64、以下全局變量的定義,以實(shí)現(xiàn)GuassLineGUIDlg類和Linequ類之間的通信,具體代碼如下:</p><p>  double a[]=//系數(shù)矩陣</p><p><b>  {</b></p><p>  0.2368,0.2471,0.2568,1.2671,</p><p>  0.1968,0.2

65、071,1.2168,0.2271,</p><p>  0.1581,1.1675,0.1768,0.1871,</p><p>  1.1161,0.1254,0.1397,0.1490</p><p><b>  };</b></p><p>  double b[4]={ 1.8471,1.7471,1.6471

66、,1.5471};//方程右端項(xiàng)</p><p>  double *X;//存放方程組的解</p><p> ?、菥帉懽x入數(shù)據(jù)按鈕的消息處理函數(shù),實(shí)現(xiàn)將矩陣和右端項(xiàng)的數(shù)據(jù)刷新到界面上,具體代碼如下:</p><p>  void CGuassLineGUIDlg::OnBUTTONRead() </p><p><b>  

67、{</b></p><p>  // TODO: Add your control notification handler code here</p><p>  m_A00=a[0]; m_A01=a[1]; m_A02=a[2]; m_A03=a[3];</p><p>  m_A10=a[5]; m_A11=a[6]; m_A12=a[7]; m

68、_A13=a[8];</p><p>  m_A20=a[9]; m_A21=a[10]; m_A22=a[11]; m_A23=a[12];</p><p>  m_A30=a[13]; m_A31=a[14]; m_A32=a[15]; m_A33=a[16];</p><p>  m_b0=b[0]; m_b1=b[1]; m_b2=b[2]; m_b3=b[

69、3];</p><p>  UpdateData(FALSE);</p><p><b>  }</b></p><p> ?、蘧帉懹?jì)算求解按鈕的消息處理函數(shù),實(shí)現(xiàn)將方程求解,具體代碼如下:</p><p>  void CGuassLineGUIDlg::OnButtonCalc() </p><p

70、><b>  {</b></p><p>  // TODO: Add your control notification handler code here</p><p>  Linequ equ1(4);//定義一個(gè)四元方程組對(duì)象</p><p>  equ1.SetLinequ(a,b);//設(shè)置方程組</p>

71、<p>  X=new double[4];</p><p>  if(equ1.Solve())//求解方程組</p><p><b>  {</b></p><p>  equ1.ShowX(X);//輸出方程組的解</p><p>  m_X0=X[0];</p><p>  

72、m_X1=X[1];</p><p>  m_X2=X[2];</p><p>  m_X3=X[3];</p><p>  UpdateData(FALSE);</p><p><b>  }</b></p><p><b>  else</b></p>&l

73、t;p>  MessageBox("求解失敗");//求解失敗</p><p><b>  }</b></p><p> ?、咄顺霭粹o比較簡(jiǎn)單,代碼如下:</p><p>  void CGuassLineGUIDlg::OnBUTTONExit() </p><p><b>  

74、{</b></p><p>  // TODO: Add your control notification handler code here</p><p><b>  OnOK();</b></p><p><b>  }</b></p><p><b>  6.2 程序

75、測(cè)試</b></p><p>  運(yùn)行程序后,首先出現(xiàn)的界面如圖8所示。</p><p>  圖8 程序初始運(yùn)行界面</p><p>  單擊讀入數(shù)據(jù)按鈕后,可將系數(shù)矩陣A和方程組右端項(xiàng)b的數(shù)據(jù)在界面上顯示出來(lái),如圖9所示。</p><p>  圖9 讀入數(shù)據(jù)后的界面</p><p>  單擊計(jì)算求解按鈕,

76、實(shí)現(xiàn)求解并將解顯示出來(lái),如圖10所示。</p><p>  圖10 求解方程組后的界面</p><p>  單擊退出按鈕后,程序能夠正常實(shí)現(xiàn)退出。</p><p>  6.3 MFC程序編寫總結(jié)</p><p>  MFC程序與DOS界面程序編寫的最大不同是程序員需要將編程精力放在圖形界面設(shè)計(jì)、圖形界面輸入輸出以及界面元素和代碼對(duì)應(yīng)轉(zhuǎn)換等問(wèn)題

77、上,而這些問(wèn)題在DOS界面程序中是不存在的,因此,初學(xué)MFC的編程者會(huì)對(duì)此感到困難,然而,當(dāng)你編寫出一個(gè)基于Windows界面的程序時(shí),所獲得的滿足程度遠(yuǎn)遠(yuǎn)大于簡(jiǎn)單的DOS界面程序,況且基于Windows的圖形界面的程序設(shè)計(jì)已成為主流,作為程序員而言,是非學(xué)會(huì)不可的。</p><p>  本次課程設(shè)計(jì)作為編寫Windows程序的初步嘗試,能夠?qū)崿F(xiàn)程序的主要功能,可以說(shuō)是取得了成功,然而好的程序絕不僅僅是只有功能性

78、這一個(gè)指標(biāo),本此編寫的MFC程序雖然能實(shí)現(xiàn)所需功能,但從面向?qū)ο蟪绦蛟O(shè)計(jì)理念和圖形界面設(shè)計(jì)要求來(lái)說(shuō),尚存在不足,主要包括以下幾個(gè)方面。</p><p> ?。?)使用全局變量存儲(chǔ)矩陣系數(shù)、方程組右端向量和解向量本身有悖面向?qū)ο蟪绦蛟O(shè)計(jì)理念,需要將其改進(jìn),利用局部變量和其它方式實(shí)現(xiàn)存儲(chǔ),作者認(rèn)為最理想的方式是使用文件。</p><p> ?。?)將類的定義與實(shí)現(xiàn)放在同一個(gè)頭文件Linequ.

79、h中也違背了面向?qū)ο蟪绦蛟O(shè)計(jì)理念,需要將二者分開成定義文件和實(shí)現(xiàn)文件。</p><p> ?。?)圖10所示的界面中對(duì)解的顯示沒(méi)有格式化,導(dǎo)致界面看起來(lái)不夠規(guī)范,需要對(duì)解的輸出進(jìn)行小數(shù)點(diǎn)固定位數(shù)顯示。</p><p><b>  7 參考文獻(xiàn)</b></p><p>  [1]徐士良. C常用算法程序集. 北京:清華大學(xué)出版社,1995<

80、/p><p>  [2]鄭莉,董淵,張瑞豐. C++語(yǔ)言程序設(shè)計(jì)(第3版). 北京:清華大學(xué)出版社,2007</p><p>  [3]錢能. C++程序設(shè)計(jì)教程(第二版). 北京:清華大學(xué)出版社,2007</p><p>  [4]陳志泊,王春玲. 面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言—C++. 北京:人民郵電出版社,2002</p><p>  [5]李慶

溫馨提示

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