復數(shù)計算器課程設計
《復數(shù)計算器課程設計》由會員分享,可在線閱讀,更多相關(guān)《復數(shù)計算器課程設計(26頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、目 錄 1 題目內(nèi)容及設計要求 1 2 總體設計 1 2.1 總體功能框圖 1 2.2 類的設計說明 1 2.3 主要算法流程圖 1 3 程序清單及注釋 1 4 運行結(jié)果與分析 1 5 總結(jié) 2 6 參考文獻 2 1 題目內(nèi)容及設計要求 題目17 復數(shù)計算器 內(nèi)容及要求: (1)所設計的復數(shù)計算器可以進行+ - * += -= *= ++ -- >= <= == !=運算符,其中 >= <=是針對復數(shù)的模進行運算。 (2)設計輸入重載函數(shù),要求能接收從鍵盤輸入a+bi形式的復數(shù),在程序中可以識別 出實部虛部并正確賦值。 (3) 設計計算器
2、測試程序,對加減法進行測試,要求在兩位數(shù)以內(nèi)進行,對乘法進行測 試,乘法要求為一位數(shù)的運算。 (4) 設計記錄功能,可以記錄下不同用戶使用計算器的情況,記錄以文件的形式保存在 計算機內(nèi),開機時要求用戶輸入用戶名,顯示該名戶以前的記錄。用戶記錄用包括:做了多 少次加減法、乘法、進行測試的次數(shù),后3次的測試平均分等,在退出計算器程序時用心的 用戶記錄代替原有的記錄。 2 總體設計 2.1 總體功能框圖 根據(jù)題中任務的功能,首先要搞清復數(shù)的運算法則, 并使用c++語言表達。復數(shù)包含實部與虛部,如何將這兩部分表達出來也使關(guān)鍵 定義一個復數(shù)類complex。 聲明所需成員函
3、數(shù)和友元函數(shù)對各運算符進行重載。 定義各成員函數(shù)。 定義主函數(shù),實現(xiàn)對整個程序的控制。 編譯、運行并調(diào)試 2.2 類的設計說明 class CComplex //定義命名空間NameCComplex { private: double Real,Image; public: CComplex(double real=0,double image =0) //構(gòu)造函數(shù) { Real=real;Image=image; } friend istream & op
4、erator>>(istream &is,CComplex &com ); //重載輸入 friend ostream & operator<<(ostream &os,CComplex &com); //重載輸出 CComplex operator+(CComplex &com); //加法重載 CComplex operator-(CComplex &com); //減法重載 CComplex operator*(CComplex &com);
5、 //乘法重載 CComplex operator+=(CComplex &com); //加法賦值重載 CComplex operator-=(CComplex &com); //減法賦值重載 CComplex operator*=(CComplex &com); //乘法賦值重載 CComplex operator++(); //自加 CComplex ope
6、rator--(); //自減 double mod (void); //求復數(shù)的模 int operator>(CComplex &com); int operator<(CComplex &com); int operator!=(CComplex &com); int operator==(CComplex &com); }; 2.3 主要算法流程圖 開始 聲明一個complex類,并定義
7、double,real,image; 聲明類的函數(shù),構(gòu)造函數(shù),加減乘除和取模運算 c.real=real+c2.real;c.imag=imag+c2.imag; c.real=real-c2.real;c.imag=imag-c2.imag; c.real=(real*c2.real+imag*c2.imag)/a;c.imag=(imag*c2.real-real*c2.imag)/a c.real=real*c2.real-imag*c2.imag;c.imag=real*c2.imag+imag*c2.real; Sqrt(real*real=imag*imag); 輸出
8、c1,c2,c1+c2,c1-c2,c1*c2,c1/c2, ∣c1∣的值
終止
。。。。。。
圖2-1 算法流程圖
3 程序清單及注釋
#include
9、空間 NameCComplex { /*----------------------------------------------------------------------- |部分A: | 復數(shù)類 CComplex 的聲明和定義,以及結(jié)構(gòu)體類型 用戶 User 的定義 | ----------------------------------------------------------------------*/ /*--------------------------------- | 復數(shù)類 CComplex 的聲明
10、 --------------------------------*/ class CComplex { private: double Real, Image; // 分別為復數(shù)的實部和虛部 public: CComplex(double real=0, double image=0) // 構(gòu)造函數(shù) { Real = real; Image = image; } friend istream & operator >> (istream & is, CComplex & com); // 重載輸入
11、 friend ostream & operator << (ostream & os, CComplex & com); // 重載輸出 CComplex operator + (CComplex & com); // 加法重載 CComplex operator - (CComplex & com); // 減法重載 CComplex operator * (CComplex & com); //
12、乘法重載 CComplex operator += (CComplex & com); // 加法賦值重載 CComplex operator -= (CComplex & com); // 減法賦值重載 CComplex operator *= (CComplex & com); // 乘法賦值重載 CComplex operator ++ ();
13、 // 自加 CComplex operator -- (); // 自減 double mod(void); int operator > (CComplex & com); int operator < (CComplex & com); int operator != (CComplex & com); int operator == (CComplex & com); }; /*----------------------------------
14、-- | 結(jié)構(gòu)體類型 用戶 User 的定義 -----------------------------------*/ struct User { char szName[20]; // 用戶名 int nTime; // 使用次數(shù) int nTest; // 測試次數(shù) double dlAve; // 平均成績 int nAdd; // 加法次數(shù) int nSub;
15、 // 減法次數(shù) int nMul; // 乘法次數(shù) double dlScore[3]; // 3次測試得分 } user; /*--------------------------------------------------------------- | 復數(shù)類 CComplex 的類外定義部分 ---------------------------------------------------------------*/ // 重載運算
16、符“++”,實部與虛部均加 1 CComplex CComplex::operator ++ () { Real++; Image++; return *this; } // 重載運算符“--”,實部與虛部均減 1 CComplex CComplex::operator -- () { Real--; Image--; return *this; } // 求復數(shù)的模,返回 實部^2 + 虛部^2 double CComplex::mod() { return Real * Real + Image * Im
17、age; } // 重載運算符“>”,比較模的大小 int CComplex::operator > (CComplex & com) { if ( mod() > com.mod() ) return 1; // 若大,則返回 1 else return 0; } // 重載運算符“<”,比較模的大小 int CComplex::operator < (CComplex & com) { if ( mod() < com.mod() ) return 1; // 若小,則
18、返回 1 else return 0; } // 重載運算符“!=”,分別判斷復數(shù)的實部與虛部 int CComplex::operator != (CComplex & com) { if ( *this==com ) return 0; else return 1; } // 重載復數(shù)的輸入, a+bi 的形式 istream & operator >> (istream & is, CComplex & com) { cout << "輸入復數(shù):"; char s[80]; is >>
19、 s; // 用字符串的形式接收復數(shù)
int len = strlen(s); // 求出字符串的長度
int n = 0, sign = 1; // 其中的 n 值 為當前從字符串中提取出的數(shù)字,會在下面的 while 語句中得到確定的值
// sign 為狀態(tài)變量,表示數(shù)值的正負符號,以輔助辨認正負值
com.Image = com.Real = 0;
// 判斷接收的字符串是否合法
for(int k=0; k 20、 if ( (s[k]<0 || s[k]>9) && (s[k]!=+ && s[k]!=- && s[k]!=i) )
{
cout << "error" << endl;
return is; // 錯誤,輸出出錯信息并返回
}
}
// 順序識別字符串中各字符
for(int k=0; k 21、 // 是符號位,且 n!=0,即 n 已被賦值(通過下面的whlie語句),表明當前讀取的是虛部的符號
n = 0; // 將原 n*sign 值(帶正負號的數(shù)值)賦給實部后,將 n 清零,準備下一次繼續(xù)接收并判斷是否為虛部的值
}
if ( s[k] == -) // 當前字符若為負號
{
sign = -1; k++; // 給符號標志變量 sign 賦值,表示為負數(shù)
}
if ( s[k] == +) 22、 // 當前字符若為正號
{
sign = 1; k++; // 給符號標志變量 sign 賦值,表示為正數(shù)
}
if ( s[k]==i ) // 若當前字符為“i”
{
if ( k!=len-1 ) // 判斷字符 i 是否為字符串中最后一個字符
cout << "error\n"; // 如果不是,說明復數(shù)數(shù)據(jù)格式錯誤
else
com.Image = sign * n; // 是最后一個字符,復 23、數(shù)對象已接收完,用 sign*n 為虛部賦值
break;
}
while ( s[k]>=0 && s[k]<=9 ) // 當前字符若在 0~9 之間,則將數(shù)字字符轉(zhuǎn)換成數(shù)字數(shù)值
{
n = n * 10 + s[k] - 0;
k++;
}
}
if ( s[len-1]!=i && n!=0 ) // 如果最后一個字符不是 i,表示復數(shù)對象內(nèi)只有實部,沒有虛部,如:-a
com.Real = n * sign;
return is;
}
// 重載復 24、數(shù)的輸出
ostream & operator << (ostream & os, CComplex & com)
{
if ( fabs(com.Image)==0 ) // 如果虛部為 0
os << com.Real; // 只輸出實部
else if ( fabs(com.Real)==0 ) // 如果實部為 0
os << com.Image << "i"; // 只輸 25、出虛部
else if ( com.Image>0 )
os << com.Real << "+" << com.Image << "i"; // 虛部為正
else
os << com.Real << com.Image << "i"; // 如 實部為 3,虛部為 -6i,就變?yōu)?3 - 6i,而不是 3 + -6i
return os;
}
// 加法重載
CComplex CComplex::operator + (CComplex & com)
{
CComplex sum;
sum.Real = 26、Real + com.Real; // 實部相加
sum.Image = Image + com.Image; // 虛部相加
return sum;
}
// 乘法重載
CComplex CComplex::operator * (CComplex & com)
{
CComplex multi;
multi.Real = Real * com.Real - Image * com.Image; // 乘積實部
multi.Image = Real * com.Image + Image * com.Rea 27、l; // 乘積虛部
return multi;
}
// 減法重載
CComplex CComplex::operator - (CComplex & com)
{
CComplex sub;
sub.Real = Real - com.Real; // 實部相減
sub.Image = Image - com.Image; // 虛部相減
return sub;
}
// 加法賦值重載
CComplex CComplex::operator += (CComplex & com)
{
28、 Real = Real + com.Real; // 實部
Image = Image + com.Image; // 虛部
return *this;
}
// 減法賦值重載
CComplex CComplex::operator -= (CComplex & com)
{
Real = Real - com.Real; // 實部
Image = Image - com.Image; // 虛部
return *this;
}
// 乘法賦值重載
CComplex CComplex::ope 29、rator *= (CComplex & com)
{
double nReal = Real * com.Real - Image * com.Image; // 乘積實部
double nImage = Real * com.Image - Image * com.Real; // 乘積虛部
Real = nReal;
Image = nImage;
return *this;
}
// 重載 == 運算符,分別比較兩個復數(shù)對象的實部和虛部
int CComplex::operator == (CComplex & com)
{
30、 if ( Real==com.Real && Image==com.Image )
return 1; // 實部與虛部部分相等,則返回 1
else
return 0;
}
/*----------------------------------------------------------------------------
|部分B:
| 測試函數(shù) void Test(void)
| 實現(xiàn)復數(shù)的加法函數(shù) void Add()
| 實現(xiàn)復數(shù)的減法函數(shù) void Sub()
| 實現(xiàn)復數(shù)的乘法函數(shù) void Mul()
31、
| 實現(xiàn)復數(shù)的自加函數(shù) void Add1()
| 比較兩個復數(shù)的大小函數(shù) void Compare()
| 輸出本次用戶使用計算器的情況記錄 void userprint()
| 當前用戶使用完計算器,保存或更新用戶資料函數(shù) void SaveFile()
|
----------------------------------------------------------------------------*/
// 測試函數(shù),隨機出 10 道運算題,可以打分
void Test(void)
{
user.nTest++; // 用戶測試 32、次數(shù)加 1
cout << "共10道題,作10以內(nèi)的加減運算,滿分 100分:\n";
double real1, real2, image1, image2, real3, real4, image3, image4; // 1 和 2 分別代表兩個待相加的復數(shù)的實部和虛部,3 和 4 則為相乘
CComplex answer, temp;
int score = 0;
char op;
for(int i=0; i<=9; i++)
{
real1 = rand()%200 - 100; // 產(chǎn)生的隨機數(shù)是兩位數(shù),可 33、以是正數(shù)或負數(shù)
image1 = rand()%200 - 100;
real2 = rand()%200 - 100;
image2 = rand()%200 - 100;
CComplex a(real1, image1), b(real2, image2); // 用產(chǎn)生的隨機數(shù)對象分別初始化兩個復數(shù)對象
real3 = rand()%20 - 10; // 產(chǎn)生的隨機數(shù)是一位數(shù),可以是正數(shù)或負數(shù)
image3 = rand()%20 - 10;
real4 = rand()%20 - 10;
imag 34、e4 = rand()%20 - 10;
CComplex c(real3, image3), d(real4, image4);
op = rand()%3; // 隨機產(chǎn)生 3 種運算符
switch(op)
{
case 0:
answer = a + b;
cout << a << "加上" << b << "等于";
break;
case 1:
answer = a - b;
cout << a << "減去" << b << "等于";
break;
35、 case 2: // 乘法運算,用實部和虛部都是 1 位數(shù)的對象操作
answer = c * d;
cout << c << "乘以" << d << "等于";
break;
}
cin >> temp; // 接收用戶輸入的結(jié)果
if ( answer==temp ) score+=10; // 正確則加 10分
else
{
cout << "此題做錯了\n";
cout << "正確答案為:" << answer << endl;
}
} 36、
cout << "你的最后得分是:" << score << endl;
// 計算最后 3次的平均分
if ( user.nTest<=3 ) // 若累計次數(shù)沒有超過 3次
{
user.dlAve = 0;
user.dlScore[user.nTest-1] = score; // 將本次測試成績添加進記錄中
for(int i=0; i 37、算平均分
user.dlAve = user.dlAve / user.nTest; // 計算平均分,user.dlAve 從累計的分數(shù) 變成了平均分
}
else // 如果累計測試超過 3次
{
user.dlScore[0] = user.dlScore[1]; // 最前面的一次記錄將被覆蓋,即:刪除
user.dlScore[1] = user.dlScore[2];
user.dlScore[2] = score; // 將本次記錄添加進測試記錄的尾部
user.dl 38、Ave=0;
for(int i=0; i<3; i++) // 計算最新 3次的平均分
user.dlAve += user.dlScore[i];
user.dlAve = user.dlAve / 3;
}
cout << "按任意鍵繼續(xù)\n";
cout .flush();
cin.get();
cin.get();
}
// 實現(xiàn)復數(shù)的加法
void Add()
{
user.nAdd++;
CComplex num1, num2, sum, Zero(0, 0);
cout << " 39、加法計算\n" << "最少輸入兩個復數(shù),輸入“0”結(jié)束\n";
cout << "第1個復數(shù):";
cin >> num1; // 輸入第 1個復數(shù)
cout << "第2個復數(shù):";
cin >> num2; // 輸入第 2個復數(shù)
sum = num1 + num2;
cout << "第3個復數(shù):";
cin >> num1; // 輸入第 3個復數(shù)
int i = 4;
while ( !(num1==Zero) )
{
40、sum = sum + num1; // 實現(xiàn)復數(shù)相加
cout << "第" << i << "個復數(shù):";
cin >> num1; // 輸入第 i個復數(shù)
i++;
}
cout << "結(jié)果是:" << sum << endl;
cout << "按任意鍵繼續(xù)\n";
cout.flush();
cin.get();
cin.get();
}
// 實現(xiàn)復數(shù)的減法
void Sub()
{
user.nSub++;
CComplex num1, num2, s 41、ub, Zero(0, 0);
cout << "減法計算\n" << "最少輸入兩個復數(shù),輸入“0”結(jié)束\n";
cout << "第1個復數(shù):";
cin >> num1; // 輸入第 1個復數(shù)
cout << "第2個復數(shù):";
cin >> num2; // 輸入第 2個復數(shù)
sub = num1 - num2;
cout << "第3個復數(shù):";
cin >> num1; // 輸入第 3個復數(shù)
int i = 4;
while 42、 ( !(num1==Zero) )
{
sub = sub - num1; // 實現(xiàn)復數(shù)減法
cout << "第" << i << "個復數(shù):";
cin >> num1; // 輸入第 i個復數(shù)
i++;
}
cout << "結(jié)果是:" << sub << endl;
cout << "按任意鍵繼續(xù)\n";
cin.get();
cin.get();
}
// 實現(xiàn)復數(shù)的乘法
void Mul()
{
user.nMul++;
CComplex nu 43、m1, num2, mul, Zero(0, 0);
cout << "乘法計算\n" << "最少輸入兩個復數(shù),輸入“0”結(jié)束\n";
cout << "第1個復數(shù):";
cin >> num1; // 輸入第 1個復數(shù)
cout << "第2個復數(shù):";
cin >> num2; // 輸入第 2個復數(shù)
mul = num1 + num2;
cout << "第3個復數(shù):";
cin >> num1; // 輸入第 3個復數(shù)
int i = 44、4;
while ( !(num1==Zero) )
{
mul *= num1; // 實現(xiàn)復數(shù)的減法
cout << "第" << i << "個復數(shù):";
i++;
cin >> num1; // 輸入第 i個復數(shù)
}
cout << "結(jié)果是:" << mul << endl;
cout << "按任意鍵繼續(xù)\n";
cin.get();
cin.get();
}
// 實現(xiàn)復數(shù)的自加,實部與虛部均自加 1
void Add1()
{
45、user.nAdd++; // 用戶加法記錄次數(shù)加 1
CComplex num1;
cin >> num1; // 這里 輸入的數(shù)可能是虛部為0的數(shù),原書代碼未作判斷
num1++; // 實部與虛部分別加 1
cout << "自加結(jié)果為" << num1 << endl;
cout << "按任意鍵繼續(xù)\n";
cout.flush();
cin.get();
cin.get();
}
// 實現(xiàn)復數(shù)的自減
void Sub1()
{
user.nSub++; 46、 // 用戶減法記錄次數(shù)加 1
CComplex num1;
cin >> num1;
num1--;
cout << "自減結(jié)果為" << num1 << endl;
cout << "按任意鍵繼續(xù)\n";
cout.flush();
cin.get();
cin.get();
}
// 比較兩個復數(shù)的大小
void Compare()
{
CComplex num1, num2;
cout << "輸入兩個復數(shù)\n";
cout << "第1個復數(shù):";
cin >> num1;
c 47、out << "第2個復數(shù):";
cin >> num2;
if ( num1==num2 )
cout << " 這兩個復數(shù)相等\n";
else if ( num1>num2 )
cout << num1 << "的模大于" << num2 << "的模\n";
else if ( num1 48、.get();
}
// 輸出本次用戶使用計算器的情況記錄
void userprint()
{
cout << user.szName << "使用的次數(shù)為:" << user.nTime << "次" << endl;
cout << "其中:\t 加法次數(shù):" << user.nAdd << "次\n"
<< "\t 減法次數(shù):" << user.nSub << "次\n"
<< "\t 乘法次數(shù):" << user.nMul << "次\n"
<< "\t 測試次數(shù):" << user.nTest << "次\n"
49、 << "\t 平均成績:" << user.dlAve << "次" << endl;
}
// 用戶登陸,開始啟動計算器
void Login()
{
char szName[20];
cout << "請輸入您的姓名:";
cin.getline(szName, 20);
ifstream infile;
User user1;
infile.open("user.dat", ios::binary|ios::in); // 打開用戶資料文件 (這個地方 若沒有文件,則不會創(chuàng)建新文件,不知何問題
if 50、 ( !infile ) // 若沒有用戶資料文件
{
cout << "沒有原始記錄文件, 您是第 1位用戶!\n";
strcpy(user.szName, szName); // 為全局變量 user 中 szName 成員賦值
user.nTime++;
return; // 函數(shù)返回
}
// 讀取用戶資料文件(從該文件的第1個字節(jié)開始逐個讀取信息)
// 如果用戶資料中找到了當前姓名的用戶,則說明是老用戶,顯示一些信息,并作一些使用次數(shù)的記錄。
infile.re 51、ad( (char *)&user1, sizeof(User) );
while ( !infile.eof() ) // 只要沒到文件末尾(未遇文件結(jié)束符),則一直進行此循環(huán)
{
if ( strcmp(user.szName, szName)==0 ) // 將用戶資料文件中的用戶名與讀取的用戶名進行比較
{
user = user1; // 若該用戶以前使用計算器,將原資料賦值給全局變量 user
user.nTime++; // 用戶使用次數(shù)加 1
cout << "歡 52、迎您再次使用復數(shù)計算器!";
userprint(); // 輸出用戶資料中的信息
cin.get();
infile.close();
return;
}
infile.read( (char *)&user1, sizeof(User) );
}
// 如果用戶資料中沒有當前用戶,表明該用戶是第 1次使用計算器
cout << "歡迎您使用復數(shù)計算器!";
strcpy(user.szName, szName); // 為全局變量 user 中 szName 成員賦值
user 53、.nTime++; //用戶使用次數(shù)加 1
infile.close();
return;
}
// 當前用戶使用完計算器后,保存或更新用戶資料
void SaveFile()
{
userprint(); // 輸出當前用戶使用計算器的詳細信息
fstream file;
User user1;
file.open("user.dat", ios::binary|ios::in|ios::out); // 打開用戶資料
if (!file)
{
cout < 54、< "文件打開錯誤,不能將記錄更新\n";
return;
}
file.seekg(0, ios::beg); // 文件指針指向文件頭
while( !file.eof() )
{
file.read( (char *)&user1, sizeof(User) ); // 逐個讀取用戶資料文件中的用戶信息
// 將用戶資料文件中的用戶名依次與當前用戶名進行比較
if ( strcmp(user1.szName, user.szName)==0 ) // 若在用戶資料文件中找到該用戶
{ 55、
file.seekp(-(sizeof(User)), ios::cur); // 文件指針退回到該用戶資料信息的首位置
file.write( (char *)&user, sizeof(User) ); // 將全局變量 user 的內(nèi)容寫到用戶資料文件中,即更新該用戶的資料
file.close();
return; // 程序返回
}
}
file.close();
fstream outfile;
// 若在用戶資料文件中找不到當前用戶的資料,表明當前用戶是第 1次使用計算器
56、 outfile.open("user.dat", ios::binary|ios::app); // 以添加的方式打開用戶資料文件
outfile.write( (char *)&user, sizeof(User) ); // 將當前用戶的資料添加在用戶資料文件中
outfile.close();
return;
}
}
using namespace NameCComplex; // 使用標準命名空間 NameCComplex
/*----------------------------------- 57、------------------------------------
|
| 主函數(shù)部分
|
----------------------------------------------------------------------*/
int main(void)
{
srand( time(NULL) ); // 初始化隨機數(shù)種子
Login(); // 打開文件,登記用戶
int Choice;
do
{
system("cls"); 58、 // 系統(tǒng)執(zhí)行命令:cls 為清屏
cout << " 這是一個簡單的復數(shù)計算器程序,可以實現(xiàn)以下功能,請按下對應的鍵(1 ~ 7)進入\n\n\n";
cout << "\t================================主菜單=================================\n";
cout << "\t 1:多復數(shù)加法\n";
cout << "\t 2:多復數(shù)減法\n";
cout << "\t 3:測試 100以內(nèi)的復數(shù)加減乘法運算,1次測試10道題\n";
cout << "\t 4:多復數(shù)乘法 59、\n";
cout << "\t 5:復數(shù)自加\n";
cout << "\t 6:復數(shù)自減\n";
cout << "\t 7:復數(shù)比較\n";
cout << "\t 0:退出計算器程序\n\n";
cout << "\t 請輸入您的選擇:";
cin >> Choice;
// 下面用 switch - case 語句實現(xiàn)多現(xiàn)選擇,當然也可以用 if - else 語句實現(xiàn)多項選擇
switch(Choice)
{
case 1:
Add(); break;
case 2:
Sub(); break 60、;
case 3:
Test(); break;
case 4:
Mul(); break;
case 5:
Add1(); break;
case 6:
Sub1(); break;
case 7:
Compare(); break;
case 0:
cout << "\n\t 歡迎下次繼續(xù)使用復數(shù)計算器!\n\n";
break;
default:
cout << "\n\t 輸入錯誤,請按任意鍵后重新輸入!\n";
cin.get();
cin.get();
} 61、
}while(Choice); // 當 Choice 值為 0時, 結(jié)束循環(huán)
SaveFile(); // 退出程序前,保存或更新當前用戶的使用情況
system("pause");
return 0;
}
/* 書上的主函數(shù)寫法:
int main(void)
{
srand( time(NULL) ); // 初始化隨機數(shù)種子
Login(); // 打開文件,登記用戶
char strChoice[20];
do
{
62、system("cls"); // 系統(tǒng)執(zhí)行命令:cls 為清屏
cout << " 這是一個簡單的復數(shù)計算器程序,可以實現(xiàn)以下功能,請按下對應的鍵(1~7)進入\n\n\n";
cout << "\t================================主菜單=================================\n";
cout << "\t 1:多復數(shù)加法\n";
cout << "\t 2:多復數(shù)減法\n";
cout << "\t 3:測試 100以內(nèi)的復數(shù)加減乘法運算,1次測試10道題\n";
cout 63、<< "\t 4:多復數(shù)乘法\n";
cout << "\t 5:復數(shù)自加\n";
cout << "\t 6:復數(shù)自減\n";
cout << "\t 7:復數(shù)比較\n";
cout << "\t 0:退出計算器程序\n\n";
cout << "\t 請輸入您的選擇:";
cin >> strChoice;
// 下面用 if - else 語句實現(xiàn)多現(xiàn)選擇,當然也可以用 switch - case 語句實現(xiàn)多項選擇
if ( strcmp(strChoice, "1")==0 )
Add();
else if ( st 64、rcmp(strChoice, "2")==0 )
Sub();
else if ( strcmp(strChoice, "3")==0 )
Test();
else if ( strcmp(strChoice, "4")==0 )
Mul();
else if ( strcmp(strChoice, "5")==0 )
Add1();
else if ( strcmp(strChoice, "6")==0 )
Sub1();
else if ( strcmp(strChoice, "7")==0 )
Compare 65、();
else if ( strcmp(strChoice, "0")==0 )
{
cout << "\n\t 歡迎下次繼續(xù)使用復數(shù)計算器!\n\n";
break;
}
else
{
cout << "\n\t 輸入錯誤,請按任意鍵后重新輸入!\n";
cin.get();
cin.get();
}
}while( (strcmp(strChoice, "0")) );
SaveFile(); // 退出程序前,保存或更新當前用戶的使用情況
system("pause");
66、 return 0;
}
*/}
4 運行結(jié)果與分析
5 總結(jié)
1. 明確實驗操作對象和目的。
2. 針對目的和對象進行總體設計。
3. 細化流程:書寫程序,編譯、運行并調(diào)試。
4. 一開始錯誤的將復數(shù)的兩個部分一起聲明,在后來的編程過程中遇到了計算上的錯誤,于是將復數(shù)的實部和虛部分開聲明,問題得到了解決
5. 計算器還可擴充用戶輸入錯誤算式時提示用戶的功能
6. 計算器還可以擴充帶有括號的功能
(課程設計過程中出現(xiàn)的問題及其解決方案,可擴充的功能及設計等。)
6 參考文獻
[1]李愛華,程磊著. 面向?qū)ο蟪绦蛟O計(C++語言) .北京:清華大學出版社,2010
[2]劉振安,劉燕君著. C++程序設計課程設計. 北京: 機械工業(yè)出版社,2004
[3]譚浩強著. C++程序設計實踐指導. 北京:清華大學出版社,2005
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。