C#实验二Word文件下载.docx
- 文档编号:20064705
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:20
- 大小:143.39KB
C#实验二Word文件下载.docx
《C#实验二Word文件下载.docx》由会员分享,可在线阅读,更多相关《C#实验二Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
根据工作时间,每周发放工资。
每周工作的时间不超过40小时。
(5)Employee类中定义了一个方法Earnings(),该方法没有实质性的工作;
而在每个子类中都提供了恰当的Earnings()方法的重写。
(6)定义TestEmployee类,在其Main方法中,创建三种类型的员工对象,并计算相应的工资。
2、请定义一个矩阵类,实现矩阵的转置、矩阵元素值的取反、矩阵的相减、矩阵的相加、矩阵的相乘、以及将矩阵元素的值乘以n等运算。
参考实验步骤及类图:
(1)在Matrix类中,定义私有变量rows、cols和mat。
(2)定义两个构造方法:
Matrix(intiRow,intCols),Matrix(intiRow,intCols,intdispersion)。
其中,参数dispersion指定随机生成的矩阵元素的范围。
如参数值dispersion为5,则使得矩阵元素的值在-5~5的范围内。
(3)定义属性Rows和Cols。
在Set访问器中,提供参数合法性检查的代码。
(4)定义索引器this[intiRow,intiCol],实现根据行列号访问矩阵中的元素。
(5)重写ToString()方法,以“矩阵”的格式输出矩阵中的所有元素。
(6)定义私有方法MatrixStrassenMultiply(MatrixA,MatrixB),实现两个矩阵的相乘。
(7)定义私有方法MatrixMultiply(doublen,Matrixm),实现将矩阵元素的值乘以n。
(8)定义私有方法MatrixAdd(Matrixm1,Matrixm2),实现两个矩阵的相加。
(9)调用上述方法,重载运算符“-”、“+”、“*”,依次实现将矩阵元素的取反、矩阵的相减、矩阵的相加、矩阵的相乘、以及将矩阵元素的值乘以n五类运算。
如:
publicstaticMatrixoperator-(Matrixm)
{returnMatrix.Multiply(-1,m);
}
publicstaticMatrixoperator-(Matrixm1,Matrixm2)
{returnMatrix.Add(m1,-m2);
(10)定义publicstaticMatrixTranspose(Matrixm)方法,生成转置矩阵。
(11)定义Test类,在其Main方法中,完成相关测试。
三、实验环境
VisualStudio2012
四、实验步骤
1、每周工资单计算的程序
源代码如下:
Employee类:
usingSystem;
namespaceSalaryList
{
abstractclassEmployee
{
privatestringname;
publicstringName
set;
get;
publicEmployee()
publicabstractdecimalEarnings();
publicabstractoverridestringToString();
}
Boss类:
classBoss:
Employee
privatedecimalweeklySalary;
publicdecimalWeeklySalary
set
if(value<
0)
weeklySalary=0;
else
weeklySalary=value;
get
returnweeklySalary;
publicBoss()
Name="
Beal"
;
WeeklySalary=2500m;
publicoverridedecimalEarnings()
returnWeeklySalary;
publicoverridestringToString()
return"
Boss"
+Name+"
的周工资是:
"
+WeeklySalary;
HourlyWorker类:
classHourlyWorker:
privatedecimalhours;
privatedecimalwageOfHour;
publicdecimalHours
if(value>
=0&
&
value<
=40)
hours=value;
hours=0;
}
returnhours;
publicdecimalWageOfHour
wageOfHour=0;
wageOfHour=value;
returnwageOfHour;
publicHourlyWorker()
jack"
Hours=38m;
WageOfHour=10m;
returnWageOfHour*Hours;
HourlyWorker"
+this.Earnings();
PieceWorker类:
classPieceWorker:
privateintquantity;
privatedecimalwageOfPiece;
publicintQuantity
quantity=0;
quantity=value;
returnquantity;
publicdecimalWageOfPiece
wageOfPiece=0;
wageOfPiece=value;
returnwageOfPiece;
publicPieceWorker()
tom"
Quantity=100;
WageOfPiece=10m;
returnWageOfPiece*Quantity;
PieceWorker"
TestEmployee类:
classTestEmployee
publicstaticvoidMain(string[]args)
Bossboss1=newBoss();
HourlyWorkerhourlyWorker1=newHourlyWorker();
PieceWorkerpieceWorker1=newPieceWorker();
Console.WriteLine(boss1);
Console.WriteLine(hourlyWorker1);
Console.WriteLine(pieceWorker1);
Bossboss2=newBoss();
boss2.Name="
Gate"
boss2.WeeklySalary=4000;
HourlyWorkerhourlyWorker2=newHourlyWorker();
hourlyWorker2.Name="
小明"
hourlyWorker2.Hours=13m;
hourlyWorker2.WageOfHour=8;
PieceWorkerpieceWorker2=newPieceWorker();
pieceWorker2.Name="
老王"
pieceWorker2.Quantity=120;
pieceWorker2.WageOfPiece=17;
Console.WriteLine(boss2);
Console.WriteLine(hourlyWorker2);
Console.WriteLine(pieceWorker2);
Console.ReadKey();
2、矩阵类操作的程序
Matrix类:
namespaceMatrix
classMatrix
privateintcols;
privateintrows;
privateint[,]mat;
publicintCols
set
if(value>
cols=value;
cols=0;
returncols;
publicintRows
rows=value;
rows=0;
returnrows;
//构造方法
publicMatrix(intiRows,intiCols)
Rows=iRows;
Cols=iCols;
this.mat=newint[iRows,iCols];
//构造方法
publicMatrix(intiRows,intiCols,intdispersion)
Randomrandom=newRandom();
for(inti=0;
i<
iRows;
i++)
for(intj=0;
j<
iCols;
j++)
mat[i,j]=random.Next(-dispersion,dispersion+1);
//定义索引器,根据行列号访问矩阵中的元素。
publicintthis[intiRow,intiCol]
returnmat[iRow,iCol];
mat[iRow,iCol]=value;
//实现两个矩阵的相乘
privatestaticMatrixStrassenMultiply(MatrixA,MatrixB)
Matrixmatrix=newMatrix(A.Rows,B.Cols);
if(A.Cols==B.Rows)
for(inti=0;
A.Rows;
for(intj=0;
B.Cols;
for(intk=0;
k<
A.Cols;
k++)
matrix[i,j]+=A[i,k]*B[k,j];
Console.WriteLine("
两个矩阵不能相乘"
);
matrix=null;
returnmatrix;
//实现将矩阵元素的值乘以n
privatestaticMatrixMultiply(intn,Matrixm)
Matrixmatrix=newMatrix(m.Rows,m.Cols);
m.Rows;
m.Cols;
matrix[i,j]=m[i,j]*n;
//实现两个矩阵的相加。
privatestaticMatrixAdd(Matrixm1,Matrixm2)
{
Matrixmatrix=newMatrix(m1.Rows,m1.Cols);
if(m1.Rows==m2.Rows&
m1.Cols==m2.Cols)
m1.Rows;
m1.Cols;
matrix[i,j]=m1[i,j]+m2[i,j];
两个矩阵不同行列,不能相加减"
//重载运算符"
-"
实现将矩阵元素的值取反
publicstaticMatrixoperator-(Matrixm)
returnMatrix.Multiply(-1,m);
//重载运算符"
实现两个矩阵的相减
returnMatrix.Add(m1,-m2);
+"
实现两个矩阵的相加
publicstaticMatrixoperator+(Matrixm1,Matrixm2)
returnMatrix.Add(m1,m2);
//重载运算符"
*"
实现两个矩阵的相乘
publicstaticMatrixoperator*(MatrixA,MatrixB)
returnMatrix.StrassenMultiply(A,B);
实现将矩阵元素的值乘以n
publicstaticMatrixoperator*(intn,Matrixm)
returnMatrix.Multiply(n,m);
//重写ToString()方法
inti,j;
stringstr="
"
for(i=0;
mat.GetLength(0);
for(j=0;
mat.GetLength
(1);
str=str+string.Format("
{0,4}"
mat[i,j])+"
str+="
\n"
returnstr;
//生成转置矩阵
publicstaticMatrixTranspose(Matrixm)
matrix[i,j]=m[j,i];
Test类:
classTest
staticvoidMain(string[]args)
//Matrixm1=newMatrix(2,2,3);
//Matrixm2=newMatrix(4,3,3);
Matrixm1=newMatrix(2,2,4);
Matrixm2=newMatrix(2,2,3);
矩阵m1为:
+m1);
矩阵m2为:
+m2);
矩阵m1取反为:
\n{0}"
(-m1));
矩阵m1+m2=:
(m1+m2));
矩阵m1-m2=:
(m1-m2));
矩阵m1*m2=:
(m1*m2));
矩阵m1*4=:
4*m1);
m1的转置矩阵为:
+Matrix.Transpose(m1));
五、实验调试与结果分析
1、每周工资单计算的程序
第一组测试代码
Matrixm1=newMatrix(2,2,3);
Matrixm2=newMatrix(4,3,3);
结果为:
第二组测试代码
六、总结
通过本次实验对属性和索引器更加熟悉,了解了Random类的使用,对面向对象的继承与多态有了进一步的理解,学会了如何通过operator关键字重载运算符。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 实验