向量类的设计与实现_第1页
向量类的设计与实现_第2页
向量类的设计与实现_第3页
向量类的设计与实现_第4页
向量类的设计与实现_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

封封 皮皮 按学校要求手工填写 按学校要求手工填写 成成 绩绩 评评 定定 表表 学生姓名邵泽宇班级学号1203060107 专 业通信工程课程设计题目 向量类的设计与实现 评 语 组长签字 成绩 日期 20 年 月 日 课程设计任务书课程设计任务书 学 院信息科学与工程专 业通信工程 学生姓名邵泽宇班级学号 1203060107 课程设计题目向量类的设计与实现 实践教学要求与任务实践教学要求与任务 1 构造函数实现 n 维向量初始化构造 这里 n 可变 2 析构函数实现向量动态存储释放 3 拷贝函数实现向量的拷贝构造 4 重载赋值运算符 实现两个向量之间的赋值 5 编写成员函数求两个向量内积 6 编写成员函数求两个向量外积 7 编写成员函数求两个向量的和 8 编写成员函数求两个向量的差 9 编写成员函数判断两个向量之间的线性相关性 0 编写一个主函数测试多项式类的上述功能 工作计划与进度安排工作计划与进度安排 第 17 周 分析题目 查阅课题相关资料 进行类设计 算法设计 第 18 周 程序的设计 调试与实现 第 19 周 程序测试与分析 撰写课程设计报告 进行答辩验收 指导教师 201 年 月 日 专业负责人 201 年 月 日 学院教学副院长 201 年 月 日 摘 要 很多自然科学和工程技术中的问题的解决最终都归结到向量问题的处理 向量在 解物理中的许多问题例如物理中力 速度 加速度 位移都是利用向量解决合力 合 速度之类的问题 本文采用 C 语言实现了对向量的基本操作 采用 Visual C 6 0 的控制台工程和 MFC 工程分别实现了对向量的处理 关键词 队列 类模板 控制台工程 MFC 工程 目 录 1 需求分析 1 2 算法基本原理 1 3 类设计 1 4 基于控制台的应用程序 2 4 1 类的接口设计 2 4 2 类的实现 3 4 3 主函数设计 5 4 4 基于控制台的应用程序测试 6 5 基于 MFC 的应用程序 9 5 1 基于 MFC 的应用程序设计 9 5 1 1 MFC 程序界面设计 9 5 1 2 MFC 程序代码设计 10 5 2 基于 MFC 的应用程序测试 11 结 论 14 参考文献 15 1 1 1 需求分析需求分析 1 向量英文 Vector 又叫矢量 顾名思义 有方向的量 但是在计算机 里 vector 又可以翻译为容器 或者说理解为容器 其实这不是一种很好的理解 么 纯数学上的向量可以由 2 维 3 维推广到多维 实际上它不就是一个实数的 容器 在推广到其他领域 向量即一个若干相关因素的容器 也就是说向量可 以应用在很多领域中 可以轻松直观的描述事物的信息 也可以存放信息 例 如 二维三维中可以描述点 坐标 物体的位置 描述颜色 RGB 红绿蓝 在多维的话 可描述的范围就更广了 最简单的如描述一个人的性格 或者能 力 2 类是 C 中十分重要的概念 它是实现面向对象程序设计的基础 C 对 C 的改进 最重要的就是增加了 类 这样一种类型 类是所有面向对象的语 言的共同特征 所有面向对象的语言都提供了这种类型 如果一种计算机语言 中不包含类 它就不能称为面向对象的语言 2 2 算法基本原理算法基本原理 1 初始化一个名叫 XiangL 的类 为了便于类中的成员更改及操作 将要用 的两个向量数组设为 public 型 即 x N 和 y N 另外由于 n 维向量的 n 值需 要多次重复利用 可以把 n 设为全局变量 2 析构函数为了实现向量动态存储释放 其实可以直接让其函数体内为空 3 拷贝函数实现向量的拷贝构造 为了方便实现 用了一个选择语句让用 户选择要拷贝的是 x 还是 y 向量 4 重载赋值运算符 实现两个向量之间的赋值 为了方便返回值 定义 了一个 XLAdd 类 其类里有个公有成员数组 便于实现赋值后的输出 5 编写成员函数求两个向量内积 利用 for 循环实现对两个向量的内积求 和 6 编写成员函数求两个向量外积 由于内积 a b cosa 而外积 a b sina 而上面已经求了内积 根据上面的关系可推导出外积 7 编写成员函数求两个向量的和 利用 for 循环实现 8 编写成员函数求两个向量的差 利用 for 循环实现 9 编写成员函数判断两个向量之间的线性相关性 为了简化判断 选择向 量的前几项进行判断 另外如果内积为零的话 直接表示为两个向量是垂直的 关系 3 3 类设计类设计 2 1 对于基类 XiangL 来讲 为了方便实现操作 我们只是设了公有成员 有公有成员数据 x N y N 用于存放向量 其余则为公有函数 XingL 为构 造函数 XLCopy int a int b int d 为拷贝函数 XLAdd operator int a 为运算符 的重载 XLNeiJi int a int b int d 为求两个向量的 内积的函数 XLWaiJi int a int b int c int d 为求两个向量的外积的 函数 XLPlus int a int b int d 为求两个向量的和的函数 XLRedu int a int b int d 为求两个向量的差的函数 XLPanDuan int a int b int c 为判断两个向量的线性关系的函数 XiangL 析构函数 2 至于外加的类 XLAdd 了额方便进行对于 重载后能有很好的一个 返回值而加的 其含有一个公有成员数据 d N 用于存放一个向量 便于其的 输出与处理 4 4 基于控制台的应用程序基于控制台的应用程序 整个程序分为三个大部分 第一个部分即为对类 XiangL 的定义 第二个部 分则是对类 XiangL 中的各个成员函数进行定义 第三个部分即为主函数 主函 数中用了 switch 语句让用户选择要执行的函数 4 14 1 类的初始定义类的初始定义 include include using namespace std define N 100 int n class XLAdd 备用的向量类 public int d N class XiangL 类 XiangL 的声明 public int x N y N XiangL 构造函数 void XLCopy int a int b int d 拷贝函数 XLAdd operator int a 运算符 的重载 int XLNeiJi int a int b int d 求两个向量的内积 float XLWaiJi int a int b int c int d 求两个向量的外 积 void XLPlus int a int b int d 求两个向量的和 void XLRedu int a int b int d 求两个向量的差 3 void XLPanDuan int a int b int c 判断两个向量的线性 关系 XiangL 析构函数 s 4 24 2 类的实现类的实现 XiangL XiangL XiangL XiangL void XiangL XLCopy int a int b int d 拷贝函数 int i char c int z N cout 选择要拷贝的向量 选 x 或 y c switch c case x for i 0 i d i z i a i break case y for i 0 i d i z i b i break default break XLaddPrint z d XLAdd XiangL operator int a 重载 int i XLAdd b for i 0 i n i b d i a i return b int XiangL XLNeiJi int a int b int d 求内积 int i c c 0 for i 0 i d i c a i b i return c float XiangL XLWaiJi int a int b int c int d 求外积 4 int i sx sy sx 0 sy 0 double s1 s2 z y for i 0 i d i sx a i a i sy b i b i s1 sqrt float sx s2 sqrt float sy z float acos c s1 s2 y float sin z s1 s2 return y Void XiangL XLPlus int a int b int d 求和 int i int y N for i 0 i d i y i a i b i XLaddPrint y d Void XiangL XLRedu int a int b int d 求差 int i int y N for i 0 i n i y i a i b i XLaddPrint y d Void XiangL XLPanDuan int a int b int c 判断线性关系 if c 0 cout 垂直 endl else if a 0 a 0 b 1 b 1 cout 平行或在一条线 endl else cout 无线性关系 endl void XLaddPrint int r int b 输出 向量 5 int i cout 向量为 for i 0 i b i cout r i cout endl int IfContinue 判断是否继续执行 函数的函数 char i cout 继续执行函数请输入 Y y i if i Y i y return 0 else exit 1 4 34 3 主函数的设计主函数的设计 include include using namespace std define N 100 int n void main int i c n XiangL z int a N b N while 1 cout 1 初始化 2 进行拷贝 3 重载 cout 4 求内积 5 求外积 6 求和 7 求差 8 表示线性相关性 c i s XLNeiJi a b n switch c case 1 cout 请输入 n 维向量的 n 值 n cout 请输入 x 向量其向量有 n 个值 endl 输入值 for i 0 i a i cout 请输入 y 向量 其向量有 n 个值 endl for i 0 i b i 6 IfContinue break case 2 s XLCopy a b n IfContinue break case 3 z a XLaddPrint a n IfContinue break case 4 cout 内积为 s XLNeiJi a b n endl IfContinue break case 5 cout 外积为 s XLWaiJi a b i n endl IfContinue break case 6 s XLPlus a b n IfContinue break case 7 s XLRedu a b n IfContinue break case 8 s XLPanDuan a b i IfContinue break default break 4 44 4 基于控制台的应用程序测试基于控制台的应用程序测试 程序运行结果如图 1 3 所示 图 1 7 图 2 图 3 8 5 15 1 基于基于 MFCMFC 的应用程序设计的应用程序设计 5 1 15 1 1 MFCMFC 程序界面设计程序界面设计 首先在 VC 中建立 MFC AppWizard exe 工程 名称为向量 并在向导的 Step1 中选择 Dialog based 即建立基于对话框的应用程序 如下图 4 5 所示 图 4 建立 MFC AppWizard exe 工程 9 图 5 建立基于对话框的应用程序 将对话框资源中的默认对话框利用工具箱改造成如下界面 如图 6 所示 图 6 所示的界面中包含了 个 Static Text 控件 个 Button 控件 和 14 个 Edit Box 控件 控件的基本信息列表如下表 1 所示 表 1 控件基本信息 控件类别控件 ID控件 Caption说明 向量 x Static TextIDC STATIC 向量 y IDC BUTTON Plus 计算向量相加 10 IDC BUTTON Redu 计算向量相减 IDC BUTTON NeiJi 计算两个向量的内 积 Button IDC BUTTON WaiJi 计算两个向量的外 积 IDC EDIT A00 IDC EDIT A11 用于存放向量 IDC EDIT b0 用于存放内积 Edit Box IDC EDIT c0 用于存放外积 5 1 25 1 2 MFCMFC 程序代码设计程序代码设计 为了能够将对话框界面上的控件能够与代码联系起来 需要为 14 个 Edit Box 控件建立 Member Variables 按 Ctrl w 键进入 MFC ClassWizard 界 面 选择 Member Variables 选项卡 可显示成员变量设置界面 通过该界面设置与 14 个 Edit Box 控件对应的成员变量 具体如表 2 所 示 表 2 控件基本信息 控件 ID成员变量类型成员变量名称 IDC EDIT A01 IDC EDIT A3intx 1 x 3 IDC EDIT A04 IDC EDIT A6inty 1 y 3 IDC EDIT A07 IDC EDIT A9inth 1 h 3 IDC EDIT A10 IDC EDIT A12intc 1 c 3 IDC EDIT b0inti NJ IDC EDIT c0floatf WJ 下面是编写代码的重要阶段 可以借鉴在设计基于 DOS 界面的控制台应 用程序的代码 并将其作必要的改写 具体改写的步骤与内容如下 1 编写求和的消息处理函数 实现向量求和 具体代码如下 void CMyDlg OnAddPlus TODO Add your control notification handler code here UpdateData true h 1 x 1 y 1 h 2 x 2 y 2 h 3 x 3 y 3 UpdateData false 2 编写求差的消息处理函数 实现向量求差 具体代码如下 void CMyDlg OnReduceXL 11 TODO Add your control notification handler code here UpdateData true c 1 x 1 y 1 c 2 x 2 y 2 c 3 x 3 y 3 UpdateData false 3 编写求内积的消息处理函数 实现求两个向量的内积 具体代码如下 void CMyDlg OnNeiJiXL TODO Add your control notification handler code here UpdateData true i NJ x 1 y 1 x 2 y 2 x 3 y 3 UpdateData false 4 编写求外积的消息处理函数 实现求两个向量的外积 具体代码如下 void CMyDlg OnWaiJiXL TODO Add your control notification handler code here UpdateData true int sx sy sx 0 sy 0 double s1 s2 z sx x 1 x 1 x 2 x 2 x 3 x 3 sy y 1 y 1 y 2 y 2 y 3 y 3 s1 sqrt float sx s2 sqrt float sy z float acos i NJ s1 s2 f WJ float sin z s1 s2 UpdateData false 5 1 35 1 3 基于基于 MFCMFC 的应用程序测试的应用程序测试 运行程序后 首先出现的界面如图 8 所示 12 图 8 程序初始运行界面 进行

温馨提示

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

评论

0/150

提交评论