C++课程设计模板.doc_第1页
C++课程设计模板.doc_第2页
C++课程设计模板.doc_第3页
C++课程设计模板.doc_第4页
C++课程设计模板.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C+课程设计设计题目:姓 名 张旭 院 系 信息与电气工程学院 专 业 电气工程 年 级 11级 学 号 20113615911 指导教师 邓冠龙 2013年 12月1日目录1. 课程设计概述- 2 -1.1课程设计目的- 2 -1.2课程设计题目- 2 -1.3题目要求- 2 -2.总体设计- 3 -2.1总体组成框图:- 3 -2.2总体流程图:- 3 -3. 详细设计- 4 -3.1 矩阵头文件的设计 - 4 -3.2 矩阵函数的设计- 5 -3.3 主函数的设计 - 10 -4、运行结果- 13 -4.1- 13 -4.2- 13 -4.3- 14 -4.4- 14 -4.5- 15 -5、课程设计总结- 18 -6、参考文献- 19 -1. 课程设计概述 1.1课程设计目的:本设计是在学完C+程序设计基础课程后,进行的一项综合程序设计。在设计当中综合“面向对象程序设计与结构化程序设计”的思想方法和知识点,编制一个小型的类或应用程序系统。目的是: 1)复习、巩固C+语言的基础知识,进一步加深对C+语言的理解和掌握;2)通过这次实践的机会,进一步熟悉和理解开发并测试一个类或者应用程序的思想、方法和流程,锻炼分析解决实际问题的能力。3)培养在项目开发中团队合作精神、创新意识及能力。1.2课程设计题目:矩阵Matrix 类的实现1.3题目要求: 1)问题描述(功能要求):建立一个Matrix 类用来表示m 行n 列的矩阵,它有至少但不限于以下成员函数:构造函数:根据参数值创建一个矩阵,并为矩阵元素动态分配存储空间,同时完成数据输入;析构函数:将矩阵占用的动态存储区释放;拷贝构造函数:实现矩阵对象之间的深拷贝构造;= 运算符重载函数:实现矩阵对象之间的深拷贝赋值;transpose 函数:实现矩阵的转置;另外重载 + 和 * 运算符,实现矩阵的加法和乘法;自行设计类中的数据成员和其他内容,同时编写测试代码使用Matrix 类。2)问题的解决方案: 建立矩阵类头文件包含矩阵的输入、引用、赋值、提取方阵对角元素、求共轭矩阵、判断相等、判断不等、矩阵转置、加减乘除的函数声明;编写Matrix.cpp的程序,设计Matrix类:调用默认构造,调用拷贝构造,调用构析,编辑把矩阵元素拷贝进矩阵的函数、矩阵比较函数、矩阵转置、加减乘除函数、矩阵乘法函数,输出矩阵更新构造构析函数调用次数,定义矩阵输出形状。编写主函数。3)其它要求:(1)只能使用C/C+语言,源程序要有适当的注释,使程序容易阅读。(2)要求采用模块化程序设计方法,代码书写要求美观实用,并调试通过,实现基本功能。(3)必须进行充分的测试,在总结中指出有不足或有待完善的部分。(4)设计报告一人一份,不得抄袭。2.总体设计 Matrix.cpp程序2.1总体组成框图:矩阵类头文件矩阵输入、引用、赋值、提取方阵对角元素、求共轭、判断相等不等、转置、加减乘除的函数声明调用默认构造、拷贝构造、构析,编辑把元素拷贝进矩阵的函数、矩阵比较函数、矩阵转置、加减乘除函数、矩阵乘法函数,输出矩阵更新构造构析函数调用次数,定义矩阵输出形状编写主函数,实现题目要求 开始2.2总体流程图:矩阵比较,两个矩阵是否应该行列相等定义矩阵转置、加减乘除、乘法函数检查是否自我赋值,把矩阵元素放进矩阵调用构造构析拷贝函数定义矩阵类主函数程序结束求c,d的加减乘除,输出结果求a矩阵的转置、共轭输出结果输入矩阵a(2,3)b(3,2)c(3,3)d(3,3)a,b的矩阵乘积,c的对角元素,输出3. 详细设计3.1矩阵头文件的设计/构造矩阵类MATRIX_H#ifndef MATRIX_H#define MATRIX_H#include Complex.h#include class Matrixfriend ostream &operator(istream &,Matrix &);/输入矩阵元素时,列之间请以“,”隔开,行之间请以“;”隔开friend Matrix diag(Matrix &);/提取方阵对角元素friend Matrix con(Matrix &);/求共轭矩阵public:Matrix(int r=0,int c=0);Matrix(const Matrix &M);Matrix();int getRow() const;int getCol() const;int getsize() const;Complex &operator()(int i,int j);/引用const Matrix &operator=(const Matrix &);/赋值Matrix operator=(const Matrix &) const;/判断相等,输出相同大小的矩阵 比较的两个矩阵应该行列相等Matrix operator!=(const Matrix &) const;/判断不等,输出相同大小的矩阵 比较的两个矩阵应该行列相等Matrix operator();/矩阵转置Matrix operator+(Matrix &);/矩阵元素相加Matrix operator-(Matrix &);/矩阵元素相减Matrix operator*(Matrix &);/矩阵元素相乘Matrix operator/(Matrix &);/矩阵元素相除Matrix operator&(Matrix &);/矩阵乘法static int getMatrixCount();private:Complex *ptr;int Row;int Col;int size;static int MatrixCount;#endif3.2 矩阵函数的设计/MATRIX_CPP#include #include #include #include #include Matrix.h#include Complex.hMatrix:Matrix(int r,int c)+MatrixCount;Row=r;Col=c;size=Row*Col;ptr=new Complexsize;assert(ptr!=0);cout调用默认构造 构造矩阵个数: MatrixCountendl;Matrix:Matrix(const Matrix &temp)+MatrixCount;Row=temp.Row;Col=temp.Col;size=Row*Col;ptr=new Complexsize;assert(ptr!=0);for(int i=0;isize;i+)ptri=temp.ptri;cout调用拷贝构造 构造矩阵个数: MatrixCountendl;Matrix:Matrix()-MatrixCount;delete ptr;cout调用析构 构造矩阵个数: MatrixCountendl;int Matrix:getRow() constreturn Row;int Matrix:getCol() constreturn Col;int Matrix:getsize() constreturn size;int Matrix:MatrixCount=0;int Matrix:getMatrixCount()return MatrixCount;const Matrix &Matrix:operator=(const Matrix &mat)if(&mat!=this)/检查是否自我赋值delete ptr; /回收内存空间Row=mat.Row;Col=mat.Col;size=mat.size; /指定对象大小ptr=new Complexsize; /为对象拷贝分配内存空间assert(ptr!=0); /内存分配不成功时中止for(int i=0;iRow;i+)for(int j=0;jCol;j+)ptri*Col+j=mat.ptri*Col+j; /把矩阵元素拷贝到矩阵中return *this;Matrix Matrix:operator=(const Matrix &temp) constMatrix mat(Row,Col);if(Row!=temp.Row|Col!=temp.Col)cout错误!比较的两个矩阵应该行列相等!endl;return temp;if(Row=temp.Row&Col=temp.Col)for(int i=0;iRow;i+)for(int j=0;jCol;j+)mat.ptri*Col+j=ptri*Col+j=temp.ptri*Col+j;return mat;Matrix Matrix:operator!=(const Matrix &temp) constMatrix mat(Row,Col);if(Row!=temp.Row|Col!=temp.Col)cout错误!比较的两个矩阵应该行列相等!endl;return temp;if(Row=temp.Row&Col=temp.Col)for(int i=0;iRow;i+)for(int j=0;jCol;j+)mat.ptri*Col+j=ptri*Col+j!=temp.ptri*Col+j;return mat;Matrix Matrix:operator()/矩阵转置int i=0,j=0;Matrix temp(Col,Row);for(i=0;iRow;i+)for(j=0;jCol;j+)temp.ptrj*Row+i=ptri*Col+j;return temp;Matrix Matrix:operator+(Matrix &mat)/矩阵元素相加int i=0,j=0;Matrix temp(Row,Col);for(i=0;iRow;i+)for(j=0;jCol;j+)temp.ptri*Col+j=ptri*Col+j+mat.ptri*Col+j;return temp;Matrix Matrix:operator-(Matrix &mat)/矩阵元素相减int i=0,j=0;Matrix temp(Row,Col);for(i=0;iRow;i+)for(j=0;jCol;j+)temp.ptri*Col+j=ptri*Col+j-mat.ptri*Col+j;return temp;Matrix Matrix:operator*(Matrix &mat)/矩阵元素相乘int i=0,j=0;Matrix temp(Row,Col);for(i=0;iRow;i+)for(j=0;jCol;j+)temp.ptri*Col+j=ptri*Col+j*mat.ptri*Col+j;return temp;Matrix Matrix:operator/(Matrix &mat)/矩阵元素相除int i=0,j=0;Matrix temp(Row,Col);for(i=0;iRow;i+)for(j=0;jCol;j+)temp.ptri*Col+j=ptri*Col+j/mat.ptri*Col+j;return temp;Matrix Matrix:operator&(Matrix &mat)/矩阵乘法Matrix temp(Row,mat.Col);if(Col!=mat.Row)cout错误!A*B中,A的列数要与B的行数相同!endl;if(Col=mat.Row)int i=0,j=0,n=0;for(i=0;iRow;i+)for(j=0;jmat.Col;j+)for(n=0;nCol;n+)temp.ptri*mat.Col+j=temp.ptri*mat.Col+j+ptri*Col+n*mat.ptrn*mat.Col+j;return temp;ostream &operator(ostream &output,const Matrix &mat)int i=0,j=0;for(i=0;imat.Row;i+)for(j=0;jmat.Col;j+)outputsetprecision(3)setw(5)mat.ptri*mat.Col+jtsetw(5);output(istream &input,Matrix &mat)int i=0,j=0;for(i=0;imat.Row;i+)for(j=0;jmat.ptri*mat.Col+j;return input;Matrix diag(Matrix &mat)int i=0;Matrix temp(mat.Row,1);for(i=0;imat.Row;i+)temp.ptri=mat.ptri*mat.Col+i;return temp;Matrix con(Matrix &mat)int i=0,j=0;Matrix temp(mat.Row,mat.Col);for(i=0;imat.Row;i+)for(j=0;jmat.Col;j+)temp.ptri*temp.Col+j=mat.ptri*mat.Col+j.con();return temp;3.3 主函数的设计/TEST_CPP#include #include Matrix.hvoid main()Matrix a(2,3),b(3,2),c(3,3),d(3,3);cout请输入a.getRow()行a.getCol()列的矩阵a: endla=a;cout请输入b.getRow()行b.getCol()列的矩阵b: endlb=b;cout请输入c.getRow()行c.getCol()列的方阵c: endlc=c;cou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论