复数计算器课程设计



《复数计算器课程设计》由会员分享,可在线阅读,更多相关《复数计算器课程设计(26页珍藏版)》请在装配图网上搜索。
1、目 录 1 题目内容及设计要求 1 2 总体设计 1 2.1 总体功能框图 1 2.2 类的设计说明 1 2.3 主要算法流程图 1 3 程序清单及注释 1 4 运行结果与分析 1 5 总结 2 6 参考文献 2 1 题目内容及设计要求 题目17 复数计算器 内容及要求: (1)所设计的复数计算器可以进行+ - * += -= *= ++ -- >= <= == !=运算符,其中 >= <=是针对复数的模进行运算。 (2)设计输入重载函数,要求能接收从键盘输入a+bi形式的复数,在程序中可以识别 出实部虚部并正确赋值。 (3) 设计计算器
2、测试程序,对加减法进行测试,要求在两位数以内进行,对乘法进行测 试,乘法要求为一位数的运算。 (4) 设计记录功能,可以记录下不同用户使用计算器的情况,记录以文件的形式保存在 计算机内,开机时要求用户输入用户名,显示该名户以前的记录。用户记录用包括:做了多 少次加减法、乘法、进行测试的次数,后3次的测试平均分等,在退出计算器程序时用心的 用户记录代替原有的记录。 2 总体设计 2.1 总体功能框图 根据题中任务的功能,首先要搞清复数的运算法则, 并使用c++语言表达。复数包含实部与虚部,如何将这两部分表达出来也使关键 定义一个复数类complex。 声明所需成员函
3、数和友元函数对各运算符进行重载。 定义各成员函数。 定义主函数,实现对整个程序的控制。 编译、运行并调试 2.2 类的设计说明 class CComplex //定义命名空间NameCComplex { private: double Real,Image; public: CComplex(double real=0,double image =0) //构造函数 { 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); //求复数的模 int operator>(CComplex &com); int operator<(CComplex &com); int operator!=(CComplex &com); int operator==(CComplex &com); }; 2.3 主要算法流程图 开始 声明一个complex类,并定义
7、double,real,image; 声明类的函数,构造函数,加减乘除和取模运算 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: | 复数类 CComplex 的声明和定义,以及结构体类型 用户 User 的定义 | ----------------------------------------------------------------------*/ /*--------------------------------- | 复数类 CComplex 的声明
10、 --------------------------------*/ class CComplex { private: double Real, Image; // 分别为复数的实部和虚部 public: CComplex(double real=0, double image=0) // 构造函数 { 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、-- | 结构体类型 用户 User 的定义 -----------------------------------*/ struct User { char szName[20]; // 用户名 int nTime; // 使用次数 int nTest; // 测试次数 double dlAve; // 平均成绩 int nAdd; // 加法次数 int nSub;
15、 // 减法次数 int nMul; // 乘法次数 double dlScore[3]; // 3次测试得分 } user; /*--------------------------------------------------------------- | 复数类 CComplex 的类外定义部分 ---------------------------------------------------------------*/ // 重载运算
16、符“++”,实部与虚部均加 1 CComplex CComplex::operator ++ () { Real++; Image++; return *this; } // 重载运算符“--”,实部与虚部均减 1 CComplex CComplex::operator -- () { Real--; Image--; return *this; } // 求复数的模,返回 实部^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; } // 重载运算符“!=”,分别判断复数的实部与虚部 int CComplex::operator != (CComplex & com) { if ( *this==com ) return 0; else return 1; } // 重载复数的输入, a+bi 的形式 istream & operator >> (istream & is, CComplex & com) { cout << "输入复数:"; char s[80]; is >>
19、 s; // 用字符串的形式接收复数
int len = strlen(s); // 求出字符串的长度
int n = 0, sign = 1; // 其中的 n 值 为当前从字符串中提取出的数字,会在下面的 while 语句中得到确定的值
// sign 为状态变量,表示数值的正负符号,以辅助辨认正负值
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 值(带正负号的数值)赋给实部后,将 n 清零,准备下一次继续接收并判断是否为虚部的值
}
if ( s[k] == -) // 当前字符若为负号
{
sign = -1; k++; // 给符号标志变量 sign 赋值,表示为负数
}
if ( s[k] == +) 22、 // 当前字符若为正号
{
sign = 1; k++; // 给符号标志变量 sign 赋值,表示为正数
}
if ( s[k]==i ) // 若当前字符为“i”
{
if ( k!=len-1 ) // 判断字符 i 是否为字符串中最后一个字符
cout << "error\n"; // 如果不是,说明复数数据格式错误
else
com.Image = sign * n; // 是最后一个字符,复 23、数对象已接收完,用 sign*n 为虚部赋值
break;
}
while ( s[k]>=0 && s[k]<=9 ) // 当前字符若在 0~9 之间,则将数字字符转换成数字数值
{
n = n * 10 + s[k] - 0;
k++;
}
}
if ( s[len-1]!=i && n!=0 ) // 如果最后一个字符不是 i,表示复数对象内只有实部,没有虚部,如:-a
com.Real = n * sign;
return is;
}
// 重载复 24、数的输出
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,就变为 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;
}
// 重载 == 运算符,分别比较两个复数对象的实部和虚部
int CComplex::operator == (CComplex & com)
{
30、 if ( Real==com.Real && Image==com.Image )
return 1; // 实部与虚部部分相等,则返回 1
else
return 0;
}
/*----------------------------------------------------------------------------
|部分B:
| 测试函数 void Test(void)
| 实现复数的加法函数 void Add()
| 实现复数的减法函数 void Sub()
| 实现复数的乘法函数 void Mul()
31、
| 实现复数的自加函数 void Add1()
| 比较两个复数的大小函数 void Compare()
| 输出本次用户使用计算器的情况记录 void userprint()
| 当前用户使用完计算器,保存或更新用户资料函数 void SaveFile()
|
----------------------------------------------------------------------------*/
// 测试函数,随机出 10 道运算题,可以打分
void Test(void)
{
user.nTest++; // 用户测试 32、次数加 1
cout << "共10道题,作10以内的加减运算,满分 100分:\n";
double real1, real2, image1, image2, real3, real4, image3, image4; // 1 和 2 分别代表两个待相加的复数的实部和虚部,3 和 4 则为相乘
CComplex answer, temp;
int score = 0;
char op;
for(int i=0; i<=9; i++)
{
real1 = rand()%200 - 100; // 产生的随机数是两位数,可 33、以是正数或负数
image1 = rand()%200 - 100;
real2 = rand()%200 - 100;
image2 = rand()%200 - 100;
CComplex a(real1, image1), b(real2, image2); // 用产生的随机数对象分别初始化两个复数对象
real3 = rand()%20 - 10; // 产生的随机数是一位数,可以是正数或负数
image3 = rand()%20 - 10;
real4 = rand()%20 - 10;
imag 34、e4 = rand()%20 - 10;
CComplex c(real3, image3), d(real4, image4);
op = rand()%3; // 随机产生 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 位数的对象操作
answer = c * d;
cout << c << "乘以" << d << "等于";
break;
}
cin >> temp; // 接收用户输入的结果
if ( answer==temp ) score+=10; // 正确则加 10分
else
{
cout << "此题做错了\n";
cout << "正确答案为:" << answer << endl;
}
} 36、
cout << "你的最后得分是:" << score << endl;
// 计算最后 3次的平均分
if ( user.nTest<=3 ) // 若累计次数没有超过 3次
{
user.dlAve = 0;
user.dlScore[user.nTest-1] = score; // 将本次测试成绩添加进记录中
for(int i=0; i 37、算平均分
user.dlAve = user.dlAve / user.nTest; // 计算平均分,user.dlAve 从累计的分数 变成了平均分
}
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 << "按任意键继续\n";
cout .flush();
cin.get();
cin.get();
}
// 实现复数的加法
void Add()
{
user.nAdd++;
CComplex num1, num2, sum, Zero(0, 0);
cout << " 39、加法计算\n" << "最少输入两个复数,输入“0”结束\n";
cout << "第1个复数:";
cin >> num1; // 输入第 1个复数
cout << "第2个复数:";
cin >> num2; // 输入第 2个复数
sum = num1 + num2;
cout << "第3个复数:";
cin >> num1; // 输入第 3个复数
int i = 4;
while ( !(num1==Zero) )
{
40、sum = sum + num1; // 实现复数相加
cout << "第" << i << "个复数:";
cin >> num1; // 输入第 i个复数
i++;
}
cout << "结果是:" << sum << endl;
cout << "按任意键继续\n";
cout.flush();
cin.get();
cin.get();
}
// 实现复数的减法
void Sub()
{
user.nSub++;
CComplex num1, num2, s 41、ub, Zero(0, 0);
cout << "减法计算\n" << "最少输入两个复数,输入“0”结束\n";
cout << "第1个复数:";
cin >> num1; // 输入第 1个复数
cout << "第2个复数:";
cin >> num2; // 输入第 2个复数
sub = num1 - num2;
cout << "第3个复数:";
cin >> num1; // 输入第 3个复数
int i = 4;
while 42、 ( !(num1==Zero) )
{
sub = sub - num1; // 实现复数减法
cout << "第" << i << "个复数:";
cin >> num1; // 输入第 i个复数
i++;
}
cout << "结果是:" << sub << endl;
cout << "按任意键继续\n";
cin.get();
cin.get();
}
// 实现复数的乘法
void Mul()
{
user.nMul++;
CComplex nu 43、m1, num2, mul, Zero(0, 0);
cout << "乘法计算\n" << "最少输入两个复数,输入“0”结束\n";
cout << "第1个复数:";
cin >> num1; // 输入第 1个复数
cout << "第2个复数:";
cin >> num2; // 输入第 2个复数
mul = num1 + num2;
cout << "第3个复数:";
cin >> num1; // 输入第 3个复数
int i = 44、4;
while ( !(num1==Zero) )
{
mul *= num1; // 实现复数的减法
cout << "第" << i << "个复数:";
i++;
cin >> num1; // 输入第 i个复数
}
cout << "结果是:" << mul << endl;
cout << "按任意键继续\n";
cin.get();
cin.get();
}
// 实现复数的自加,实部与虚部均自加 1
void Add1()
{
45、user.nAdd++; // 用户加法记录次数加 1
CComplex num1;
cin >> num1; // 这里 输入的数可能是虚部为0的数,原书代码未作判断
num1++; // 实部与虚部分别加 1
cout << "自加结果为" << num1 << endl;
cout << "按任意键继续\n";
cout.flush();
cin.get();
cin.get();
}
// 实现复数的自减
void Sub1()
{
user.nSub++; 46、 // 用户减法记录次数加 1
CComplex num1;
cin >> num1;
num1--;
cout << "自减结果为" << num1 << endl;
cout << "按任意键继续\n";
cout.flush();
cin.get();
cin.get();
}
// 比较两个复数的大小
void Compare()
{
CComplex num1, num2;
cout << "输入两个复数\n";
cout << "第1个复数:";
cin >> num1;
c 47、out << "第2个复数:";
cin >> num2;
if ( num1==num2 )
cout << " 这两个复数相等\n";
else if ( num1>num2 )
cout << num1 << "的模大于" << num2 << "的模\n";
else if ( num1 48、.get();
}
// 输出本次用户使用计算器的情况记录
void userprint()
{
cout << user.szName << "使用的次数为:" << user.nTime << "次" << endl;
cout << "其中:\t 加法次数:" << user.nAdd << "次\n"
<< "\t 减法次数:" << user.nSub << "次\n"
<< "\t 乘法次数:" << user.nMul << "次\n"
<< "\t 测试次数:" << 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); // 打开用户资料文件 (这个地方 若没有文件,则不会创建新文件,不知何问题
if 50、 ( !infile ) // 若没有用户资料文件
{
cout << "没有原始记录文件, 您是第 1位用户!\n";
strcpy(user.szName, szName); // 为全局变量 user 中 szName 成员赋值
user.nTime++;
return; // 函数返回
}
// 读取用户资料文件(从该文件的第1个字节开始逐个读取信息)
// 如果用户资料中找到了当前姓名的用户,则说明是老用户,显示一些信息,并作一些使用次数的记录。
infile.re 51、ad( (char *)&user1, sizeof(User) );
while ( !infile.eof() ) // 只要没到文件末尾(未遇文件结束符),则一直进行此循环
{
if ( strcmp(user.szName, szName)==0 ) // 将用户资料文件中的用户名与读取的用户名进行比较
{
user = user1; // 若该用户以前使用计算器,将原资料赋值给全局变量 user
user.nTime++; // 用户使用次数加 1
cout << "欢 52、迎您再次使用复数计算器!";
userprint(); // 输出用户资料中的信息
cin.get();
infile.close();
return;
}
infile.read( (char *)&user1, sizeof(User) );
}
// 如果用户资料中没有当前用户,表明该用户是第 1次使用计算器
cout << "欢迎您使用复数计算器!";
strcpy(user.szName, szName); // 为全局变量 user 中 szName 成员赋值
user 53、.nTime++; //用户使用次数加 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 的内容写到用户资料文件中,即更新该用户的资料
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、------------------------------------
|
| 主函数部分
|
----------------------------------------------------------------------*/
int main(void)
{
srand( time(NULL) ); // 初始化随机数种子
Login(); // 打开文件,登记用户
int Choice;
do
{
system("cls"); 58、 // 系统执行命令:cls 为清屏
cout << " 这是一个简单的复数计算器程序,可以实现以下功能,请按下对应的键(1 ~ 7)进入\n\n\n";
cout << "\t================================主菜单=================================\n";
cout << "\t 1:多复数加法\n";
cout << "\t 2:多复数减法\n";
cout << "\t 3:测试 100以内的复数加减乘法运算,1次测试10道题\n";
cout << "\t 4:多复数乘法 59、\n";
cout << "\t 5:复数自加\n";
cout << "\t 6:复数自减\n";
cout << "\t 7:复数比较\n";
cout << "\t 0:退出计算器程序\n\n";
cout << "\t 请输入您的选择:";
cin >> Choice;
// 下面用 switch - case 语句实现多现选择,当然也可以用 if - else 语句实现多项选择
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 欢迎下次继续使用复数计算器!\n\n";
break;
default:
cout << "\n\t 输入错误,请按任意键后重新输入!\n";
cin.get();
cin.get();
} 61、
}while(Choice); // 当 Choice 值为 0时, 结束循环
SaveFile(); // 退出程序前,保存或更新当前用户的使用情况
system("pause");
return 0;
}
/* 书上的主函数写法:
int main(void)
{
srand( time(NULL) ); // 初始化随机数种子
Login(); // 打开文件,登记用户
char strChoice[20];
do
{
62、system("cls"); // 系统执行命令:cls 为清屏
cout << " 这是一个简单的复数计算器程序,可以实现以下功能,请按下对应的键(1~7)进入\n\n\n";
cout << "\t================================主菜单=================================\n";
cout << "\t 1:多复数加法\n";
cout << "\t 2:多复数减法\n";
cout << "\t 3:测试 100以内的复数加减乘法运算,1次测试10道题\n";
cout 63、<< "\t 4:多复数乘法\n";
cout << "\t 5:复数自加\n";
cout << "\t 6:复数自减\n";
cout << "\t 7:复数比较\n";
cout << "\t 0:退出计算器程序\n\n";
cout << "\t 请输入您的选择:";
cin >> strChoice;
// 下面用 if - else 语句实现多现选择,当然也可以用 switch - case 语句实现多项选择
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 欢迎下次继续使用复数计算器!\n\n";
break;
}
else
{
cout << "\n\t 输入错误,请按任意键后重新输入!\n";
cin.get();
cin.get();
}
}while( (strcmp(strChoice, "0")) );
SaveFile(); // 退出程序前,保存或更新当前用户的使用情况
system("pause");
66、 return 0;
}
*/}
4 运行结果与分析
5 总结
1. 明确实验操作对象和目的。
2. 针对目的和对象进行总体设计。
3. 细化流程:书写程序,编译、运行并调试。
4. 一开始错误的将复数的两个部分一起声明,在后来的编程过程中遇到了计算上的错误,于是将复数的实部和虚部分开声明,问题得到了解决
5. 计算器还可扩充用户输入错误算式时提示用户的功能
6. 计算器还可以扩充带有括号的功能
(课程设计过程中出现的问题及其解决方案,可扩充的功能及设计等。)
6 参考文献
[1]李爱华,程磊著. 面向对象程序设计(C++语言) .北京:清华大学出版社,2010
[2]刘振安,刘燕君著. C++程序设计课程设计. 北京: 机械工业出版社,2004
[3]谭浩强著. C++程序设计实践指导. 北京:清华大学出版社,2005
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。