收藏 分销(赏)

程序语言优秀课程设计一元多项式简单的计算器.doc

上传人:精**** 文档编号:2533256 上传时间:2024-05-31 格式:DOC 页数:44 大小:308.54KB
下载 相关 举报
程序语言优秀课程设计一元多项式简单的计算器.doc_第1页
第1页 / 共44页
程序语言优秀课程设计一元多项式简单的计算器.doc_第2页
第2页 / 共44页
程序语言优秀课程设计一元多项式简单的计算器.doc_第3页
第3页 / 共44页
程序语言优秀课程设计一元多项式简单的计算器.doc_第4页
第4页 / 共44页
程序语言优秀课程设计一元多项式简单的计算器.doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、西安文理学院软件学院课程设计汇报设计名称: 程序语言课程设计 设计题目: 一元多项式简单计算器 学生学号: 140215 专业班级: 软件学院一班 学生姓名: 张文东 学生成绩: 指导老师(职称): 袁溪(讲师) 课题工作时间: .12.9 至 .12.23 软件学院课程设计任务书学生姓名张文东学号专业班级1班设计题目一元多项式简单计算器内容概要: 设计或开发环境:Microsoft Visual Studio 关键技术:C语言 关键功效: 1建立一元数次多项式 2多项式相加 3多项式相减 4多项式相乘文件资料:1谭浩强C语言程序设计(第三版) 清华大学出版社 2姜敏芝 余健 C语言程序设计案

2、例精编 清华大学出版社 3李健学 余健 数据结构课程设计案例精编 4唐国民 王国均数据结构(C语言版) 清华大学出版社5网上相关文件资料设计要求:A.功效要求1)输入并建立多项式;2)输出多项式;3)两个多项式相加,输出和多项式;4)两个多项式相减,输出差多项式。B.文档格式*.c工作期限:设计工作自12月9日至12月23日止。指导老师: 院长: 日 期:12月9日软件学院课程设计进度安排表学生姓名: 张文东 学号: 140215 专业: 软件工程 班级: 一班 起止日期内 容备注12月9日下达任务书,制订进度安排计划 12月10日12月12日系统整体设计和具体设计12月13日12月17日系统

3、编码实现12月18日12月19日系统测试 12月20日12月23日撰写课程设计汇报 12月25日演示软件和答辩 指导老师署名: 12月11日成绩评定表学生姓名: 张文东 学号: 140215 专业: 软件工程 班级: 一班 类别累计分值各项分值评分标准实际得分累计得分平时表现1010按时参与设计指导,无违反纪律情况。完成情况3020按设计任务书要求完成了全部任务,能完整演示其设计内容,符合要求。10能对其设计内容进行具体、完整介绍,并能就指导老师提出问题进行正确回复。汇报质量3510汇报文字通顺,内容翔实,叙述充足、完整,立论正确,结构严谨合理;汇报字数符合相关要求,工整规范,整齐划一。5课题

4、背景介绍清楚,综述分析充足。5设计方案合理、可行,论证严谨,逻辑性强,含有说服力。5符号统一;图表完备、符合规范要求。5能对整个设计过程进行全方面总结,得出有价值结论或结果。5参考文件数量在2篇以上,格式符合要求,在正文中正确引用。答辩情况2510在要求时间内能就所设计内容进行叙述,言简意明,关键突出,论点正确,条理清楚。15在要求时间内能正确、完整、流利地回复老师所提出问题。总评成绩: 分 指导老师: (签字) 日期: 年12月 25 日摘 要 摘要:伴随科技不停发展,大家生活水平不停提升,方便、高效、快捷成为了大家所追求关键目标,面对部分复杂技术总会花费大量时间进行计算,所以有一个多项式功

5、效计算器是很有必需。 开发这么一个程序需要用到C结点、链表方面知识,系统分为多项式输入输出、多项式加法、多项式减法、多项式乘法四个模块。 该汇报关键是经过系统程序段、程序设计要求和计算器功效来介绍该计算器实现过程。关键字:多项式;C语言;结点;链表目 录目 录1第一章 课题背景21.1 绪论21.2 关键内容2第二章 设计介绍及设计方案叙述32.1 系统分析32.2 总体设计3第三章 具体设计53.1 建立多项式53.2 多项式相加73.3 多项式相减93.4 多项式相乘10关键代码以下:12关键代码以下:14第四章 设计结果及分析174.1 调试和测试174.2 运行结果194.3 结果分析

6、21总结22参考文件23附录24第一章 课题背景1.1 绪论伴随科技进步,社会不停发展,计算器已普遍应用于各行各业,为了帮助大家提升工作效率,节省运算时间,设计一个多功效计算器是很有必需,在此设计一个多项式计算器能够很方便对多项式相加、相减、相乘,对提升大家运算效率很有帮助。一个计算器需要用到C多方面知识,要实现多项式建立和输入输出等功效,必需要熟练掌握C,在此尤其是链表和结点。1.2 关键内容用C语言实现多项式输入输出和多项式加减乘等运算,其中关键用到链表和结点相关知识,具体功效以下:1)输入并建立多项式;2)输出多项式;3)两个多项式相加,输出和多项式;4)两个多项式相减,输出差多项式。第

7、二章 设计介绍及设计方案叙述2.1 系统分析2.1.1 功效需求多项式建立 多项式输入输出 多项式加减乘等运算2.1.2 数据需求在输入过程中,首先要给定输入数据,数据只能是数字,不能是字母或其它,不能连续输入数据,必需要求以空格分开要输入数据。2.1.3 系统需求系统必需安全可靠,不会出现无故死机状态,运算速度要快。2.2 总体设计2.2.1 系统设计方案采取菜单设计,选择你需要功效,用单链表储存你输入数据。(1) 菜单菜单包含计算器加减乘等功效选择(2) 文件保留方法利用带头节点单链表储存多项式(3) 抽象数据类型定义关键定义多项式系数和指数。系数项用浮点类型定义,指数项用整型定义(4)

8、存放结构采取链式结构,建立链表储存输入多项式(5) 算法设计利用链表知识,建立链表,给链表分配一定量存放空间,查找链表,插入链表和链表连接2.2.2 功效模块设计一元多项式计算器建立多项式 多项式相加 多项式相减 多项式相乘将输入多项式相乘将输入多项式相减将输入多项式相加建立一元多项式输出一元多项式图 2-1 功效模块设计第三章 具体设计一元多项式计算器关键分为4大部分,多项式建立,多项式加法,多项式减法和多项式乘法。多项式建立关键需要建立新链表,并分配给这个新链表一定量存放空间,分配存放空间内进行运算;多项式加减乘等运算关键利用了链表建立,链表存放空间分配,链表查找,插入和连接进行计算。3.

9、1 建立多项式此阶段是多项式建立,能够对计算器进行输入输出等功效。关键利用链表方面知识图 3-1所表示:开始PLOY *head,*inpt;NX!=0Yinpt=(PLOY *)malloc(sizeof(PLOY)Return head结束图 3-1 多项式建立关键代码以下:PLOY *creat(char ch)/建立多项式PLOY *head,*inpt;float x;int y;head=(PLOY *)malloc(sizeof(PLOY); head-next=NULL;printf(请输入一元多项式%c:(格式是:系数 指数;以0 0 结束!)n,ch);scanf(%f %

10、d,&x,&y);while(x!=0)inpt=(PLOY *)malloc(sizeof(PLOY); inpt-coef=x;inpt-expn=y;inpt-next=NULL;insert(head,inpt); printf(请输入一元多项式%c:(以0 0 结束!)n,ch);scanf(%f %d,&x,&y);return head;3.2 多项式相加此阶段是计算器加法利用功效,对你输入多项式进行相加计算,关键利用了链表,及链表插入等知识,图 3-2所表示:开始PLOY *inpt;N flag=0YN pre-next=NULLY Flag=1 pre=pre-next R

11、eturn head结束图 3-2 多项式相加关键代码以下:PLOY *addPLOY(PLOY *head,PLOY *pre)/多项式相加PLOY *inpt;int flag=0;while(flag=0)if(pre-next=NULL)flag=1;elsepre=pre-next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt-coef=pre-coef;inpt-expn=pre-expn;inpt-next=NULL;insert(head,inpt);return head;3.3 多项式相减此阶段是计算器减法利用功效,对你输入多项式进行相减计算,

12、关键利用了链表,链表查询,及链表插入等知识,图 3-3所表示:开始PLOY *inpt;N flag=0YN pre-next=NULLY Flag=1 pre=pre-next Return head结束图 3-3 多项式相减关键代码以下:PLOY *minusPLOY(PLOY *head,PLOY *pre)/多项式相减PLOY *inpt;int flag=0;while(flag=0)if(pre-next=NULL)flag=1;elsepre=pre-next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt-coef=0-pre-coef;inpt-e

13、xpn=pre-expn;inpt-next=NULL;insert(head,inpt);return head;3.4 多项式相乘此阶段是计算器乘法利用功效,对你输入多项式进行相乘计算,关键利用了链表,链表查询,及链表插入等知识,图 3-4所表示:开始PLOY *inpt,*flag,*pre; Nflag=0Y pre- Nnext=NULLYpre=head2Continuehead1=NULLYNflag=1continuepre=pre-nextreturn res结束图 3-4多项式相乘关键代码以下:PLOY *byPLOY(PLOY *head1,PLOY *head2)/多项

14、式相乘PLOY *inpt,*res,*pre;int flag=0;res=(PLOY *)malloc(sizeof(PLOY);res-next=NULL;head1=head1-next;pre=head2;while(flag=0)if(pre-next=NULL)pre=head2;head1=head1-next;continue;if(head1=NULL)flag=1;continue;pre=pre-next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt-coef=pre-coef*head1-coef;inpt-expn=pre-expn+h

15、ead1-expn;inpt-next=NULL;insert(res,inpt);return res;3.5 计算器主函数 开始PLOY *f,*gN sign!=0Yscanf(“%d”,&sign)Nsign=0YN sign=1breakY printf(“你选择 操作是多项式N 相加n”); sign=2 Y break printf(“你选择 操作是多项式N 相减n”);sign=3 Y break printf(“你选择 操作是多项式N 相乘n”);sign=4 Y printf(“Error!breaksign=-1 请重新输入”); break break结束 图 3-5

16、计算器主函数关键代码以下:void main()PLOY *f,*g;int sign=-1;start();while(sign!=0)scanf(%d,&sign);switch(sign)case 0:break;case 1:printf(你选择操作是多项式相加:n);f=creat(f);printf(f(x)=);print(f);g=creat(g);printf(g(x)=);print(g);printf(-nn);printf(两个多项式相加结果为:nn);printf( F(x)=f(x)+g(x)=);f=addPLOY(f,g);print(f);printf(n-n

17、);sign=-1;start();break;case 2:printf(你选择操作是多项式相减:n);f=creat(f);printf(f(x)=);print(f);g=creat(g);printf(g(x)=);print(g);printf(-nn);printf(两个多项式相减结果为:nn);printf( F(x)=f(x)-g(x)=);f=minusPLOY(f,g);print(f);printf(n-n);sign=-1;start();break;case 3:printf(你选择操作是多项式相乘:n);f=creat(f);printf(f(x)=);print(

18、f);g=creat(g);printf(g(x)=);print(g);printf(-nn);printf(两个多项式相乘结果为:nn);printf( F(x)=f(x)*g(x)=);f=byPLOY(f,g);print(f);printf(n-n);sign=-1;start();break;case 4:sign=-1;start();break;default:printf(Error!请重新选择操作!n);start();break;printf( *n);printf( * 谢谢使用! *n);printf( *n); 第四章 设计结果及分析4.1 调试和测试4.1.1 调

19、试调试过程关键是运行编制好程序,然后碰到错误后依据系统提醒,找到相关问题所在。本系统调试过程中碰到关键问题、原因和处理方法以下面介绍。(1) cannot open Debug/Cpp1.exe for writing实施窗口没关闭就修改程序段关闭实施窗口后从新实施程序。(2) 系统提醒错误error C2065: addPLOY : undeclared identifieraddPLOY没有被明确定义。到程序段里仔细寻求addPLOY,并将其定义。4.1.2 测试软件测试是软件生存期中一个关键阶段,是软件质量确保关键步骤从用户角度来看,普遍期望经过软件测试暴露软件中隐藏错误和缺点,所以软件

20、测试应该是“为了发觉错误而实施程序过程”。或说,软件测试应该依据软件开发各阶段规格说明和程序内部结构而精心设计一批测试用例(即输入数据及其预期输出结果),并利用这些测试用例去运行程序,以发觉程序错误或缺点。过分测试则会浪费很多宝贵资源。到测试后期,即使找到了错误,然而付出了过高代价。测试数据过程以下:(1) 输入功效测试输入数据1:2 3 0 0预期结果:2.000000x3运行结果: 2.000000x3说明:符合输入要求输入数据2:a b 0 0 预期结果:a.000000xb运行结果:死循环说明:不符合输入要求(2) 运算功效测试输入数据1:2 3 0 0 5 6 0 0预期结果:2.0

21、00000x3+5.000000x6运行结果:2.000000x3+5.000000x6说明:符累计算要求输入数据2:a b 0 0 c d 0 0预期结果:a.000000xb+c.000000xd运行结果:死循环4.2 运行结果4.2.1 欢迎界面图 4-1 欢迎界面4.2.2 多项式加法图 4-2 多项式加法4.2.3 多项式减法图 4-3 多项式减法4.2.4 多项式乘法图4-4多项式乘法4.3 结果分析经过一段时间设计,我程序大致完成,任务书中所要求实现多项式输入输出、多项式加法、多项式减法全部实现了,而且实现了多项式乘法,但程序还存在部分缺点,比如,无法输入字母计算,无法进行多项连

22、续计算。总结 数据结构表现是处理问题一个思想,怎样把这种思想表现出来,需要我们对每个方面系统了解。并发觉了很多自己不足,平时没掌握知识在实践中暴露,经过不停思索,查阅书籍和上网查资料及上机运行,处理了大部分问题,还有部分小问题。不过,我相信在以后学习中,一定能把它处理好。当今计算机应用在生活中能够说是无处不在。所以作为二十一世纪大学生来说掌握程序开发技术是十分关键,而C语言又是最常见,功效最强大一个高级语言,所以做好c语言版数据结构课程设计是十分必需。我不仅巩固了数据结构程序设计内容,掌握设计基础方法,强化了上机动手能力,还深入掌握了以下知识:数据类型,链表,结点,分支控制,循环控制,结构体及

23、数组,指针,文件操作,编译预处理等;经过课程设计,掌握了程序局部测试,调试方法,建立程序系统调试,测试基础概念和思想,学会较大程序系统测试和调试方法。当我选择这个多项式计算器系统时,首先系统分析关键思绪和框架哦,和同学讨论,联络所学知识。我知道书上和老师讲有限,所以上网搜也是一个利用资源表现。在编程中,尤其是结构体,指针部分,几乎是一片空白。不过经过几天努力,大致把书本上知识点看了一遍,知识点也基础上掌握了,所以下一步就是开始正式编程序了。当读懂了C语言编程基础过程和方法,经过一波三折,最终开始正式编程。 编译过程中,算法至关关键,多项式加法:系数相同时指数相加,不一样时两项做加法;多项式减法

24、:和加法相差无几,只是把加换成减;多项式乘法:指数相乘,系数相加,当然在设计过程中还要注意部分特殊值,如0,1等。经过这次课程设计,我感觉到要自己动手真正做出一个程序并不很轻易,但只要用心去做,总会有收获,尤其是当我碰到问题,问老师,问同学,想尽措施去处理,最终最终找到方法时,心里那份喜悦之情真是难以形容.编写程序中碰到问题再所难免,应耐心探究其中原因,从出现问题地方起,并联络前后程序,仔细推敲,逐一排查.直到最终搞清为止。在课程设计过程中,收获知识,提升能力同时,我也学到了很多人生哲理,知道了怎么去制订计划,怎么去实现这个计划,并掌握了在实施过程中怎样去克服心理上不良情绪。所以在以后生活和学

25、习过程中,我一定把课程设计精神带到生活中,使生活变得愈加好。参考文件1 谭浩强. C语言程序设计(第三版)M. 清华大学出版社, .2 姜敏芝,余健. C语言程序设计案例精编M. 清华大学出版社, .3 李健学,余健. 数据结构课程设计案例精编M. .4 唐国民,王国均. 数据结构(C语言版)M. 北京:清华大学出版社.5 王路明. C语言程序设计教程M. 北京:北京邮电大学出版社,5月.6 谭浩强. C+程序设计M. 北京:清华大学出版社.7 范策. 算法和数据结构(C语言版)M. 北京:机械工业出版社,.8 詹春华,杨沙. C语言程序设计教程M. 科学出版社,.8.9 董志民,崔建平,肖利

26、娜. C语言程序设计教学改革探索和实践J.福建电脑.附录#include#includetypedef struct myNode/数据结构float coef;/系数coefficientint expn;/指数exponentstruct myNode * next;PLOY;void start()/用户选择界面printf( n);printf( *n);printf( * 欢迎使用一元多项式计算器 *n);printf( *n);printf(n);printf( 请选择操作:nn);printf( 0.退出操作n);printf( 1.一元多项式相加n);printf( 2.一元多

27、项式相减n);printf( 3.一元多项式相乘nn);void insert(PLOY *head,PLOY *inpt)PLOY *pre,*now;int signal=0;pre=head; if(pre-next=NULL)pre-next=inpt;elsenow=pre-next;while(signal=0)if(inpt-expnexpn) if(now-next=NULL)now-next=inpt;signal=1;elsepre=now;now=pre-next;elseif(inpt-expnnow-expn)inpt-next=now;pre-next=inpt;s

28、ignal=1;elsenow-coef=now-coef+inpt-coef;signal=1;free(inpt); if(now-coef=0)pre-next=now-next;free(now);PLOY *creat(char ch)/建立多项式PLOY *head,*inpt;float x;int y;head=(PLOY *)malloc(sizeof(PLOY); head-next=NULL;printf(请输入一元多项式%c:(格式是:系数 指数;以0 0 结束!)n,ch);scanf(%f %d,&x,&y);while(x!=0)inpt=(PLOY *)mall

29、oc(sizeof(PLOY); inpt-coef=x;inpt-expn=y;inpt-next=NULL;insert(head,inpt); printf(请输入一元多项式%c:(以0 0 结束!)n,ch);scanf(%f %d,&x,&y);return head;PLOY *addPLOY(PLOY *head,PLOY *pre)/多项式相加PLOY *inpt;int flag=0;while(flag=0)if(pre-next=NULL)flag=1;elsepre=pre-next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt-coef=

30、pre-coef;inpt-expn=pre-expn;inpt-next=NULL;insert(head,inpt);return head;PLOY *minusPLOY(PLOY *head,PLOY *pre)/多项式相减PLOY *inpt;int flag=0;while(flag=0)if(pre-next=NULL)flag=1;elsepre=pre-next;inpt=(PLOY *)malloc(sizeof(PLOY);inpt-coef=0-pre-coef;inpt-expn=pre-expn;inpt-next=NULL;insert(head,inpt);re

31、turn head;PLOY *byPLOY(PLOY *head1,PLOY *head2)/多项式相乘PLOY *inpt,*res,*pre;int flag=0;res=(PLOY *)malloc(sizeof(PLOY);res-next=NULL;head1=head1-next;pre=head2;while(flag=0)if(pre-next=NULL)pre=head2;head1=head1-next;continue;if(head1=NULL)flag=1;continue;pre=pre-next;inpt=(PLOY *)malloc(sizeof(PLOY);

32、inpt-coef=pre-coef*head1-coef;inpt-expn=pre-expn+head1-expn;inpt-next=NULL;insert(res,inpt);return res;void print(PLOY *fun)PLOY *printing;int flag=0;printing=fun-next;if(fun-next=NULL)printf(0n);return;while(flag=0)if(printing-coef0&fun-next!=printing)printf(+);if(printing-coef=1); else if(printing

33、-coef=-1)printf(-);elseprintf(%f,printing-coef);if(printing-expn!=0) printf(x%d,printing-expn);else if(printing-coef=1)|(printing-coef=-1)printf(1);if(printing-next=NULL)flag=1;elseprinting=printing-next;printf(n);void main()PLOY *f,*g;int sign=-1;start();while(sign!=0)scanf(%d,&sign);switch(sign)ca

34、se 0:break;case 1:printf(你选择操作是多项式相加:n);f=creat(f);printf(f(x)=);print(f);g=creat(g);printf(g(x)=);print(g);printf(-nn);printf(两个多项式相加结果为:nn);printf( F(x)=f(x)+g(x)=);f=addPLOY(f,g);print(f);printf(n-n);sign=-1;start();break;case 2:printf(你选择操作是多项式相减:n);f=creat(f);printf(f(x)=);print(f);g=creat(g);printf(g(x)=);print(g);printf(-nn);printf(两个多项式相减结果为:nn);printf( F(x)=f(x)-g(x)=);

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服