復(fù)數(shù)計算器課程設(shè)計
《復(fù)數(shù)計算器課程設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《復(fù)數(shù)計算器課程設(shè)計(26頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、目 錄 1 題目內(nèi)容及設(shè)計要求 1 2 總體設(shè)計 1 2.1 總體功能框圖 1 2.2 類的設(shè)計說明 1 2.3 主要算法流程圖 1 3 程序清單及注釋 1 4 運行結(jié)果與分析 1 5 總結(jié) 2 6 參考文獻 2 1 題目內(nèi)容及設(shè)計要求 題目17 復(fù)數(shù)計算器 內(nèi)容及要求: (1)所設(shè)計的復(fù)數(shù)計算器可以進行+ - * += -= *= ++ -- >= <= == !=運算符,其中 >= <=是針對復(fù)數(shù)的模進行運算。 (2)設(shè)計輸入重載函數(shù),要求能接收從鍵盤輸入a+bi形式的復(fù)數(shù),在程序中可以識別 出實部虛部并正確賦值。 (3) 設(shè)計計算器
2、測試程序,對加減法進行測試,要求在兩位數(shù)以內(nèi)進行,對乘法進行測 試,乘法要求為一位數(shù)的運算。 (4) 設(shè)計記錄功能,可以記錄下不同用戶使用計算器的情況,記錄以文件的形式保存在 計算機內(nèi),開機時要求用戶輸入用戶名,顯示該名戶以前的記錄。用戶記錄用包括:做了多 少次加減法、乘法、進行測試的次數(shù),后3次的測試平均分等,在退出計算器程序時用心的 用戶記錄代替原有的記錄。 2 總體設(shè)計 2.1 總體功能框圖 根據(jù)題中任務(wù)的功能,首先要搞清復(fù)數(shù)的運算法則, 并使用c++語言表達。復(fù)數(shù)包含實部與虛部,如何將這兩部分表達出來也使關(guān)鍵 定義一個復(fù)數(shù)類complex。 聲明所需成員函
3、數(shù)和友元函數(shù)對各運算符進行重載。 定義各成員函數(shù)。 定義主函數(shù),實現(xiàn)對整個程序的控制。 編譯、運行并調(diào)試 2.2 類的設(shè)計說明 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); //求復(fù)數(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: | 復(fù)數(shù)類 CComplex 的聲明和定義,以及結(jié)構(gòu)體類型 用戶 User 的定義 | ----------------------------------------------------------------------*/ /*--------------------------------- | 復(fù)數(shù)類 CComplex 的聲明
10、 --------------------------------*/ class CComplex { private: double Real, Image; // 分別為復(fù)數(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; /*--------------------------------------------------------------- | 復(fù)數(shù)類 CComplex 的類外定義部分 ---------------------------------------------------------------*/ // 重載運算
16、符“++”,實部與虛部均加 1 CComplex CComplex::operator ++ () { Real++; Image++; return *this; } // 重載運算符“--”,實部與虛部均減 1 CComplex CComplex::operator -- () { Real--; Image--; return *this; } // 求復(fù)數(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; } // 重載運算符“!=”,分別判斷復(fù)數(shù)的實部與虛部 int CComplex::operator != (CComplex & com) { if ( *this==com ) return 0; else return 1; } // 重載復(fù)數(shù)的輸入, a+bi 的形式 istream & operator >> (istream & is, CComplex & com) { cout << "輸入復(fù)數(shù):"; char s[80]; is >>
19、 s; // 用字符串的形式接收復(fù)數(shù)
int len = strlen(s); // 求出字符串的長度
int n = 0, sign = 1; // 其中的 n 值 為當(dāng)前從字符串中提取出的數(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語句),表明當(dāng)前讀取的是虛部的符號
n = 0; // 將原 n*sign 值(帶正負號的數(shù)值)賦給實部后,將 n 清零,準(zhǔn)備下一次繼續(xù)接收并判斷是否為虛部的值
}
if ( s[k] == -) // 當(dāng)前字符若為負號
{
sign = -1; k++; // 給符號標(biāo)志變量 sign 賦值,表示為負數(shù)
}
if ( s[k] == +) 22、 // 當(dāng)前字符若為正號
{
sign = 1; k++; // 給符號標(biāo)志變量 sign 賦值,表示為正數(shù)
}
if ( s[k]==i ) // 若當(dāng)前字符為“i”
{
if ( k!=len-1 ) // 判斷字符 i 是否為字符串中最后一個字符
cout << "error\n"; // 如果不是,說明復(fù)數(shù)數(shù)據(jù)格式錯誤
else
com.Image = sign * n; // 是最后一個字符,復(fù) 23、數(shù)對象已接收完,用 sign*n 為虛部賦值
break;
}
while ( s[k]>=0 && s[k]<=9 ) // 當(dāng)前字符若在 0~9 之間,則將數(shù)字字符轉(zhuǎn)換成數(shù)字數(shù)值
{
n = n * 10 + s[k] - 0;
k++;
}
}
if ( s[len-1]!=i && n!=0 ) // 如果最后一個字符不是 i,表示復(fù)數(shù)對象內(nèi)只有實部,沒有虛部,如:-a
com.Real = n * sign;
return is;
}
// 重載復(fù) 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;
}
// 重載 == 運算符,分別比較兩個復(fù)數(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)復(fù)數(shù)的加法函數(shù) void Add()
| 實現(xiàn)復(fù)數(shù)的減法函數(shù) void Sub()
| 實現(xiàn)復(fù)數(shù)的乘法函數(shù) void Mul()
31、
| 實現(xiàn)復(fù)數(shù)的自加函數(shù) void Add1()
| 比較兩個復(fù)數(shù)的大小函數(shù) void Compare()
| 輸出本次用戶使用計算器的情況記錄 void userprint()
| 當(dāng)前用戶使用完計算器,保存或更新用戶資料函數(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 分別代表兩個待相加的復(fù)數(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ù)對象分別初始化兩個復(fù)數(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)復(fù)數(shù)的加法
void Add()
{
user.nAdd++;
CComplex num1, num2, sum, Zero(0, 0);
cout << " 39、加法計算\n" << "最少輸入兩個復(fù)數(shù),輸入“0”結(jié)束\n";
cout << "第1個復(fù)數(shù):";
cin >> num1; // 輸入第 1個復(fù)數(shù)
cout << "第2個復(fù)數(shù):";
cin >> num2; // 輸入第 2個復(fù)數(shù)
sum = num1 + num2;
cout << "第3個復(fù)數(shù):";
cin >> num1; // 輸入第 3個復(fù)數(shù)
int i = 4;
while ( !(num1==Zero) )
{
40、sum = sum + num1; // 實現(xiàn)復(fù)數(shù)相加
cout << "第" << i << "個復(fù)數(shù):";
cin >> num1; // 輸入第 i個復(fù)數(shù)
i++;
}
cout << "結(jié)果是:" << sum << endl;
cout << "按任意鍵繼續(xù)\n";
cout.flush();
cin.get();
cin.get();
}
// 實現(xiàn)復(fù)數(shù)的減法
void Sub()
{
user.nSub++;
CComplex num1, num2, s 41、ub, Zero(0, 0);
cout << "減法計算\n" << "最少輸入兩個復(fù)數(shù),輸入“0”結(jié)束\n";
cout << "第1個復(fù)數(shù):";
cin >> num1; // 輸入第 1個復(fù)數(shù)
cout << "第2個復(fù)數(shù):";
cin >> num2; // 輸入第 2個復(fù)數(shù)
sub = num1 - num2;
cout << "第3個復(fù)數(shù):";
cin >> num1; // 輸入第 3個復(fù)數(shù)
int i = 4;
while 42、 ( !(num1==Zero) )
{
sub = sub - num1; // 實現(xiàn)復(fù)數(shù)減法
cout << "第" << i << "個復(fù)數(shù):";
cin >> num1; // 輸入第 i個復(fù)數(shù)
i++;
}
cout << "結(jié)果是:" << sub << endl;
cout << "按任意鍵繼續(xù)\n";
cin.get();
cin.get();
}
// 實現(xiàn)復(fù)數(shù)的乘法
void Mul()
{
user.nMul++;
CComplex nu 43、m1, num2, mul, Zero(0, 0);
cout << "乘法計算\n" << "最少輸入兩個復(fù)數(shù),輸入“0”結(jié)束\n";
cout << "第1個復(fù)數(shù):";
cin >> num1; // 輸入第 1個復(fù)數(shù)
cout << "第2個復(fù)數(shù):";
cin >> num2; // 輸入第 2個復(fù)數(shù)
mul = num1 + num2;
cout << "第3個復(fù)數(shù):";
cin >> num1; // 輸入第 3個復(fù)數(shù)
int i = 44、4;
while ( !(num1==Zero) )
{
mul *= num1; // 實現(xiàn)復(fù)數(shù)的減法
cout << "第" << i << "個復(fù)數(shù):";
i++;
cin >> num1; // 輸入第 i個復(fù)數(shù)
}
cout << "結(jié)果是:" << mul << endl;
cout << "按任意鍵繼續(xù)\n";
cin.get();
cin.get();
}
// 實現(xiàn)復(fù)數(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)復(fù)數(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();
}
// 比較兩個復(fù)數(shù)的大小
void Compare()
{
CComplex num1, num2;
cout << "輸入兩個復(fù)數(shù)\n";
cout << "第1個復(fù)數(shù):";
cin >> num1;
c 47、out << "第2個復(fù)數(shù):";
cin >> num2;
if ( num1==num2 )
cout << " 這兩個復(fù)數(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é)開始逐個讀取信息)
// 如果用戶資料中找到了當(dāng)前姓名的用戶,則說明是老用戶,顯示一些信息,并作一些使用次數(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、迎您再次使用復(fù)數(shù)計算器!";
userprint(); // 輸出用戶資料中的信息
cin.get();
infile.close();
return;
}
infile.read( (char *)&user1, sizeof(User) );
}
// 如果用戶資料中沒有當(dāng)前用戶,表明該用戶是第 1次使用計算器
cout << "歡迎您使用復(fù)數(shù)計算器!";
strcpy(user.szName, szName); // 為全局變量 user 中 szName 成員賦值
user 53、.nTime++; //用戶使用次數(shù)加 1
infile.close();
return;
}
// 當(dāng)前用戶使用完計算器后,保存或更新用戶資料
void SaveFile()
{
userprint(); // 輸出當(dāng)前用戶使用計算器的詳細信息
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) ); // 逐個讀取用戶資料文件中的用戶信息
// 將用戶資料文件中的用戶名依次與當(dāng)前用戶名進行比較
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;
// 若在用戶資料文件中找不到當(dāng)前用戶的資料,表明當(dāng)前用戶是第 1次使用計算器
56、 outfile.open("user.dat", ios::binary|ios::app); // 以添加的方式打開用戶資料文件
outfile.write( (char *)&user, sizeof(User) ); // 將當(dāng)前用戶的資料添加在用戶資料文件中
outfile.close();
return;
}
}
using namespace NameCComplex; // 使用標(biāo)準(zhǔn)命名空間 NameCComplex
/*----------------------------------- 57、------------------------------------
|
| 主函數(shù)部分
|
----------------------------------------------------------------------*/
int main(void)
{
srand( time(NULL) ); // 初始化隨機數(shù)種子
Login(); // 打開文件,登記用戶
int Choice;
do
{
system("cls"); 58、 // 系統(tǒng)執(zhí)行命令:cls 為清屏
cout << " 這是一個簡單的復(fù)數(shù)計算器程序,可以實現(xiàn)以下功能,請按下對應(yīng)的鍵(1 ~ 7)進入\n\n\n";
cout << "\t================================主菜單=================================\n";
cout << "\t 1:多復(fù)數(shù)加法\n";
cout << "\t 2:多復(fù)數(shù)減法\n";
cout << "\t 3:測試 100以內(nèi)的復(fù)數(shù)加減乘法運算,1次測試10道題\n";
cout << "\t 4:多復(fù)數(shù)乘法 59、\n";
cout << "\t 5:復(fù)數(shù)自加\n";
cout << "\t 6:復(fù)數(shù)自減\n";
cout << "\t 7:復(fù)數(shù)比較\n";
cout << "\t 0:退出計算器程序\n\n";
cout << "\t 請輸入您的選擇:";
cin >> Choice;
// 下面用 switch - case 語句實現(xiàn)多現(xiàn)選擇,當(dāng)然也可以用 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ù)使用復(fù)數(shù)計算器!\n\n";
break;
default:
cout << "\n\t 輸入錯誤,請按任意鍵后重新輸入!\n";
cin.get();
cin.get();
} 61、
}while(Choice); // 當(dāng) Choice 值為 0時, 結(jié)束循環(huán)
SaveFile(); // 退出程序前,保存或更新當(dāng)前用戶的使用情況
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 << " 這是一個簡單的復(fù)數(shù)計算器程序,可以實現(xiàn)以下功能,請按下對應(yīng)的鍵(1~7)進入\n\n\n";
cout << "\t================================主菜單=================================\n";
cout << "\t 1:多復(fù)數(shù)加法\n";
cout << "\t 2:多復(fù)數(shù)減法\n";
cout << "\t 3:測試 100以內(nèi)的復(fù)數(shù)加減乘法運算,1次測試10道題\n";
cout 63、<< "\t 4:多復(fù)數(shù)乘法\n";
cout << "\t 5:復(fù)數(shù)自加\n";
cout << "\t 6:復(fù)數(shù)自減\n";
cout << "\t 7:復(fù)數(shù)比較\n";
cout << "\t 0:退出計算器程序\n\n";
cout << "\t 請輸入您的選擇:";
cin >> strChoice;
// 下面用 if - else 語句實現(xiàn)多現(xiàn)選擇,當(dāng)然也可以用 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ù)使用復(fù)數(shù)計算器!\n\n";
break;
}
else
{
cout << "\n\t 輸入錯誤,請按任意鍵后重新輸入!\n";
cin.get();
cin.get();
}
}while( (strcmp(strChoice, "0")) );
SaveFile(); // 退出程序前,保存或更新當(dāng)前用戶的使用情況
system("pause");
66、 return 0;
}
*/}
4 運行結(jié)果與分析
5 總結(jié)
1. 明確實驗操作對象和目的。
2. 針對目的和對象進行總體設(shè)計。
3. 細化流程:書寫程序,編譯、運行并調(diào)試。
4. 一開始錯誤的將復(fù)數(shù)的兩個部分一起聲明,在后來的編程過程中遇到了計算上的錯誤,于是將復(fù)數(shù)的實部和虛部分開聲明,問題得到了解決
5. 計算器還可擴充用戶輸入錯誤算式時提示用戶的功能
6. 計算器還可以擴充帶有括號的功能
(課程設(shè)計過程中出現(xiàn)的問題及其解決方案,可擴充的功能及設(shè)計等。)
6 參考文獻
[1]李愛華,程磊著. 面向?qū)ο蟪绦蛟O(shè)計(C++語言) .北京:清華大學(xué)出版社,2010
[2]劉振安,劉燕君著. C++程序設(shè)計課程設(shè)計. 北京: 機械工業(yè)出版社,2004
[3]譚浩強著. C++程序設(shè)計實踐指導(dǎo). 北京:清華大學(xué)出版社,2005
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 導(dǎo)游服務(wù)技能
- 德國BASLER_品牌發(fā)布會方案
- 第1章聲現(xiàn)象(共27張PPT)分解
- 華為公司戰(zhàn)略規(guī)劃(PPT35頁)
- 文明交往禮為先課件
- 《小獅子愛爾莎》課件3(教育精品)
- 高三化學(xué)上學(xué)期燃料電池復(fù)習(xí)專題
- 中國移動企業(yè)文化理念體系宣講稿件
- 上海來福士廣場智能商場體驗活動方案Final(備份
- 節(jié)點電壓法經(jīng)典例題85299課件
- 腳手架荷載計算課件
- 有機化學(xué)酸堿理論
- 2013外研版英語七年級下冊M4_U2
- 某汽車鑄件質(zhì)量管理措施課件
- 第1講 種群的特征和數(shù)量變化