版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、题目 班级 姓名 学号 日期课程设计任务书学院专业学生姓名学号设计题目多项式类的设计与实现内容及要求:开发多项式类,多项式的每一项用链表的结点表示,每项包含一个系数和一个指数。例如:2x4的指数为4,系数为2。请开发一个完整的类,包括构造函数、析构函数以及函 数(读取值)和“”函数(设置值)。该类还要提供以下重载的运算符:(1) 重载加法运算符+ ,将两个多项式相加。(2) 重载加法运算符-,将两个多项式相减。(3) 重载赋值运算符=,将一个多项式赋给另外一个多项式。(4) 重载加法运算符*,将两个多项式相乘。(5) 编写一个主函数测试多项式类的上述功能。进度安排:第17周:分析题目,查阅课题
2、相关资料,进行类设计、算法设计;第18周:程序的设计、调试与实现;第19周:程序测试与分析,撰写课程设计报告,进行答辩验收。指导教师(签字):学院院长(签字)年月日年月日1 需求分析2 算法基本原理3 类设计 .错误!未指定书签。.错误!未指定书签。.错误!未指定书签。.错误!未指定书签。.4.1 类的接口设计4.2 类的实现4.3 主函数设计.错. 误!未指定书签。错. 误!未指定书签。错. 误!未指定书签。5 界面程序运行结果及分析.错误!未指定书签。4 详细设计5.1 程序运行结果5.2 运行结果分析错. 误!未指定书签。错. 误!未指定书签。.错误!未指定书签。6 基于的图形界面程序开
3、发6.1 基于的图形界面程序设计错.误!未指定书签。6.2 程序测试错.误!未指定书签。6.3 程序编写总结错.误!未指定书签。.错误!未指定书签。.7 参考文献1 需求分析(1) 开发多项式类,多项式的每一项用链表的结点表示,每项包含一个系数和一个指数。例如:2x4的指数为4,系数为2。请开发一个完整的类,包括构造函数、析构函数以及“”函数(读取值)和“”函数(设置值) 。(2) 多项式的定义:n 个单项式的代数和叫多项式。(3) 程序测试数据:P1:23xA2+2xA4+3xA2P2:3xA2+2xA3(1)2 算法基本原理设有 2 个多项式p12P1:23xA2+2xA4+3xA2P2:
4、3xA2+2xA3实现多项式p1 和 p2 的计算, 关键是对p1 和 p2 的指数和系数进行加减生的操作,我们可以先编辑一个基类。通过链表和重载运算符的方法来实现。( 1)多项式即个个单项式的和,我们可以把一个多项式分解成一项一项来看,每一项用链表的一个节点表示,每个节点包括一个单项式的系数、指数和指向该节点类型的一个指针。(2)用创建对象pl、p2、p3,通过调用(c111)函数来构建多项式。( 3)通过重载+、 - 、 *以及=运算符,对多项式进行操作。( 4)通过p1() 来显示结果。3 类设计从上面的算法分析可以看到,本设计面临的计算问题的关键是多项式运算。可以定义一个多项式类。(
5、1)该类包括私有数据成员* ,是构造的节点类型的结构体,包括系数、指数和指向该节点类型的一个指针。(2)成员函数包括()构造函数,(&)拷贝构造函数,()析构函数*( e)读取 指数为e的项,返回其指针,(e)设置指数为e的项的系数为c, ( * * n)创建 多项式, +( b)重载+运算符, -(b)重载-运算符, *( b)重载*运算符, <<(,a) =( a)重载=运算符,(=)显示函数()复制函数对以上进行总结,该程序只包含一个类即,对多项式的所有操作都抽象在该类中。4 详细设计程序主要分为三个部分:类声明、类实现、主函数。4.1 类的接口设计类的声明() 0;
6、 构造函数( 6) 拷贝构造函数()*q,*p;(p)删除链表>(p) p;J* ( e)读取指数为e的项,返回其指针(e)设置指数为e的项的系数为c( * * n) 创建多项式+( b)重载+运算符-(b)重载-运算符*( b)重载*运算符<<( ,a);二(a)重载=运算符( = ) ;( );()<<" 链表头指针值为:"<<<<( 链表头指针;在程序中,声明了个个运算符的重载,通过* ( e); 读取指数为e 的项 ,返回其指针,通过(e)设置指数为e的项的系数为c,多项式的的系数、指数以及指针全部采用了动态内存
7、分配技术,这些工作都是由构造函数和()函数完成,它们的清理工作在析构函数中完成。4.2 类的实现类实现<><><>15链表结点指数系数*;( ) 复制对象(公用函数)*t,*s,*p;0;(p);(0) ;>>>>>(5) >(6) >0;(a)复制构造函数(a);( * * n) 创建多项式(n<1)<<"错误:要创建多项式的项数必须大于零。n"创建头结点>0;>0;*q,*;( 1<)>i;>i;>>0;* ( e)读取指数为e的项;
8、(p)(>) p;>没有找到,返回空指针(e)将指数为e系数为c的项加入多项式(原多项式无指数为e的项)*q,*p,*t;>>(0);>0;(e>>)>插入头部J;(p e<>);>(p)新的项插入p 所指结点前>> 插入尾部>>0;+( b)重载+运算符;*p,*q,*s,*t;x;先增加一个头结点;(p q)(>>)>>(0.0)» J>>J)>J>J)(»>)(»»>)(»»>
9、;)>J)(q)恒指向余下的项(P)>>>>>>>0; 链表尾标记;>s; 删除多余的头结点;-(b)重载-运算符;*p,*q,*0,*t;在此处添加代码,完成此函数(模仿上述重载"+" 的函数 )x;先增加一个头结点;(p q)(>>)>>(0.0);>>>>> >)(>>>)(>>>>>)(>>>>>)>)(q)恒指向余下的项(P)(;>>>>>
10、>)>0;链表尾标记>s; 删除多余的头结点;*(b)重载*运算符;*p,*q,*s;c;(p);(q)>*>>>(e)查中有无指数为e的项(s)中无指数为e的项>中无指数为e的项();>><<( , a)();J=(a)重载=运算符(*s,*p;()(若原多项式存在,先撤消它;(p)(;p;)(a);)()显示多项式(* e;()(><<"f(x)="<<>(e>1) <<"xA"<<e;(1) <<&q
11、uot;x")(<< "f(x)=0" << ;>(p)(>(>0.0)系数非零(>>0.0) <<"+'<<><<>(e>1) <<"xAH<<e;(1) <<"x")>)<<)通过类的成员函数实现对多项式的运算,构造和析构函数主要是实现初始化 以及销毁,其它函数则主要是实现功能。4.3主函数设计主函数()(e1221c12口;< <"
12、;多项式计算器"<<< <"请输入多项式P1的项数:”;>>1< <"请输入多项式P1的系数:";(0<1)(>>加«"请输入多项式p1的指数(0<1)(»e1i;«"请输入多项式P2的项数:”;»2;«"请输入多项式p2的系数(0<2)(»c2i;)«"请输入多项式p2的指数(0<2)(»e2i;)P123;p1(c111冶建多项式p1p2(c222)
13、创建多项式p2vv”多项式p1为”;P1();VV显示多项式p1VV”多项式p2为”;P2();vv显示多项式p2p3 = p1 + p2;vv”多项式p12为"vv p3vv显示多项式的和p3 = p1 - p2;vv”多项式p12为"vv p3vv显示多项式的差p3 = p1*p2;vv”多项式p1*p2为”vvp3vv显示多项式的积0;在程序的主函数部分,对算法进行了验证。首先, 输入了多项式的系数指数 项数,接着定义三个对象 pl, p2, p3,在定义过程中调用构造函数,进行初始 化并动态分配了内存。调用()显示多项式,通过调用重载运算符实现操作,最后 系统自动调
14、用析构函数清理。5界面程序运行结果及分析5.1 程序运行结果程序运行结果如图2所示。O多多多多多多X> 三人入人入入入F< 一请请请请请请% 二 多寸式式/ 财项项项项羽=1计空tpotp上弋Jt一二-二 E项畲项畲+3 一 IJP-ErTT IJ ,二|4二 rTT-JLJ-ILJL -2 拿 1112 2 2- +3 12 3 3 1多项式 m + 词为 f<xXx*2 *5x*7x*3*5iC*2多 项式皿-p2 为 £ 3 =1 xA2 -1 x-1+5 xA2多项式 pl «p2f<x>=12xA6+19x5 *22 xA4 +13
15、xA3 *6 xA2pi*ess an</ k曰y to cent inuBB图2程序运行结果通过计算对运行结果进行检测,经检测结果正确无误5.2 运行结果分析整个程序采用的是链表和动态内存分配方式。将多项式的运算抽象到一个类中,由该类生成三个对象pl, p2, p3,同时由系统调用构造函数初始化,调用()构造多项式,调用重载的运算符,实现加减乘的操作,由于涉及对象传值,调用拷贝构造函数6基于的图形界面程序开发的图形界面程序设计可在上述类设计的基础上进行改造,的图形界面程序与界面程序的主要不同点是:图形界面程序与界面程序的输入输出方式不同,界面程序采用字符交互式实现数据输入输出,主要通过
16、,等流实现,而的图形程序界面采用标准窗口和控件实现输入输出,因此必须在类的框架下加入上面所设计的 矩阵和方程组类,并通过图形界面的输入输出改造来完成。6.1基于的图形界面程序设计(1)界面设计首先在中建立()工程,名称为一元稀疏多项式运算,并在向导的1中选择即建立基于对话框的应用程序,如下图 45所示图4建立()工程图5建立基于对话框的应用程序将对话框资源中的默认对话框利用工具箱改造成如下界面,如图6所示图6方程组求解程序界面设计图6所示的界面中包含了 3个(分组框),4个 控件,5个控件,和9个 控 件,控件的基本信息列表如下表1所示表1控件基本信息控件类别控件控件说明项系数项指数项系数项指
17、数1添加2添加加法运算减法运算乘法运算1显示多项式p14显示多项式p27显示力口法运算结果8显示减法运算结果9显示乘法运算结果2输入每一项的系数3输入每一项的指数5输入每一项的系数6输入每一项的指数一兀多项式 1一兀多项式 1运算结果(2)代码设计为了能够将对话框界面上的控件能够与代码联系起来,需要为各个控件建立,按键进入 界面,选择 选项卡,可显示成员变量设置界面,如图 7所示Message Maps Memibcr VariablesAutomation | ActiveX Events Class InloPrujecl:Class name;卡稀疏多项式运算Add Class.出由季
18、trip mE«IW e|n g!即Mw.皿?曲 4- JB_j Orten 汁Ei.rirE,_d-KU出IIM/ IAdd Variable.引i刖XZ iCn-_|M a,Uril4 _J TbHc4J _J YpriniFk 油田rfWlV -FW- - 中ETC/I. / INFiriE |l口 ,jTjJbxEl_kznl u lr=.ixx 1'_Jani ui : niu W7田臣图 tt图7成员变量设置界面通过该界面设置控件对应的成员变量,具体如表 2所示表2控件基本信息控件成员变量类型成员变量名称1121I 31425262738495下面是编写代码的重要
19、阶段,可以借鉴在设计基于界面的控制台应用程序的 代码,并将其作必要的改写,具体改写的步骤与内容如下。 建立名为一元稀疏多项式计算的工程。 将对话框资源中的默认对话框利用工具箱改造。 设置控件对应的成员变量。 编写添加按钮的响应函数,具体代码如下:2()();(h2)创建链表d2->(22);d22->h2(22);d22;2(""(h2);(); 编写显示的消息处理函数,具体代码如下:(*h)显示函数*J(t)多项式的显示(>0)多项式的项系数等于0 的情况 (>>0)多项式的项系数大于0 的情况("","+&qu
20、ot;);("">);("","X");(""");("">);(>1)(>1)()该项是否是显示的第一位;(>0)();();(>0)();(>1)();();(><0)多项式系数小于0 的情况"""-");"">);"","X");""”);("">);(>1) (>
21、0)(>1)(>0)(>1);J>("")"0"v; 编写加,减法运算的消息处理函数,具体代码如下:*( *p1 *p2) 多项式加法运算*h,*q1,*q2,*t,*k;q1122;J>1;(q1 q2)(q1->2->)指数相同的情况q1->1->2->q11->>2;q22->t;(q1->>q2->)第一项的指数比第二项指数大的情况>2;2->q2->1;>q2;(q1-><q2->)第一项的指数比第二项指数小
22、的情况q11->>(q2)>2;>t;h; 编写乘法运算处理函数,具体代码如下:*( *p1 *p2)*i,*j,*k,*s,*l,*m,* 乘法算法1;2;保存j 的头结点(0,0);保存k 为头结点(i)创建乘法计算结果链表,形成头结点为k的链表(j)乘法计算算法,并实现升序排序用于对之前生成的链表(0,0)新计算结果保存在一个单独结点中, 进行对比,形成升序排列>(>)*(>);>(>)+(>);J>用于对链表的遍历,n为s前驱(»)(»;I;J)(><>)(>>J)(&g
23、t;>)0>> 编写构造多项式具体代码如下:; 结点结构体*f( b)* ;> ;> ;> ;p; 创建结点*( *p) 复制链表的函数*h,*d,*q,*k,*s;(0,0)创建头结点,留空,为了能得到与新创建的结点对比的结点(即是k)的前驱;(q)(>>)创建新结点>是前驱,k 是与 d 做比较的(k)(>>)(>> ;)(><>)(>;>;)(>>>)(>;>;)()(>;)>;)>;)6.2 程序测试运行程序后,首先出现的界面如图 8所示图8程序初始运行界面单击添加按钮后,可将多项式在界面上显示出来,如图 9所示图9读入数据后的界面单击加法运算、减法运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年招标代理服务协议
- 2024教育培训费用协议协议
- 2024年车展参展商协议范本
- 保健食品区域代理协议(2024年)
- DB11∕T 1602-2018 生物防治产品应用技术规程 白蜡吉丁肿腿蜂
- 2024装饰监理服务化协议
- 2024年专业物流服务协议全书修订
- 2024年度电力工程技术合作协议
- 2024年企业万股股权融资合作协议
- 文书模板-《承重架使用协议书》
- 小学绘本阅读《白雪公主》
- 2024届新结构“8+3+3”选填限时训练1~10(学生版)
- JTT791-2010 公路涵洞通道用波纹钢管(板)
- 2024年航空职业技能鉴定考试-无人机AOPA驾驶证考试(视距内驾驶员视距内驾驶员)笔试历年真题荟萃含答案
- 科研的思路与方法
- 山东联通公司招聘笔试题
- 2024年新智认知数字科技股份有限公司招聘笔试参考题库含答案解析
- 金属探测器检测记录
- 安全教育记录范文(25篇)
- 2024年供应链管理竞赛考试题库
- 三年级语文下册第二单元群文阅读教学设计
评论
0/150
提交评论