多项式简单的计算器.doc
《多项式简单的计算器.doc》由会员分享,可在线阅读,更多相关《多项式简单的计算器.doc(27页珍藏版)》请在冰豆网上搜索。
目录
1 软件开发平台 1
2 软件功能说明 1
2.1 功能分析说明图 1
2.2 各项功能说明 3
3 软件设计详细内容 5
3.1 采用的主要数据结构类型 5
3.2 流程图 5
4 软件测试 8
4.1 软件测试用例 8
4.2 软件测试报告 8
5 总结和致谢 13
6 附录 13
6.1 软件使用说明 13
6.2 源码 16
6.3 参考文献 26
1.软件开发平台
配置环境WindowsXP系统或Windows7系统
运行环境WindowsXP系统或Windows7系统
开发工具VC++6.0
程序语言C语言
2.软件功能说明
一元多项式简单的计算器
该计算器具有以下功能:
① 能够按照多项式变量的指数降序创建一个多项式;
② 能够对已创建的多项式进行显示;
③ 能够对已创建的多项式之间的加法运算;
④ 能够对已创建的多项式之间的减法运算;
⑤ 能够对已创建的多项式进行删除;
⑥ 能够实现计算器退出操作;
2.1功能分析说明图
退出菜单
多项式的删除
多项式的相减
多项式的相加
多项式的显示
多项式的建立
一元多项式简单的计算器
2.2各项功能说明
要求对分别上面的每个功能模块进行详细的文字说明
主函数模块main()建立一个可供选择的菜单,通过switch语句,选择1则是去建立多项式,选择2则是去显示出多项式,选择3则是去进行两个多项式的相加,选择4则是进行两个多项式的相减,选择5则是去进行多项式的删除,选择6则是退出菜单。
多项式的建立模块Creatpol()建立一个链表,头指针均用结构体指针数组中的元素表示,且头指针所指的结构体的指数是表示该链表表示的多项式的项数,而后以指数递减的次序依次输入各项,链表中的第二个节点表示的是多项式中的第一项,依次类推,不断把多项式各项的指数,系数的值输入链表的节点中,并使链尾指针为空。
多项式的输出模块Outp_pol()首先用一个指针指向需要输出的多项式对应的链表的头指针,头指针的指数成员表示项数,接着通过链表依次输出各项,从第二项开始,系数不小于的项与系数小于0的项输出是不一样的,判断后依次输出。
多项式的相加模块Addpol()需要用到两个指针指向相加的两个多项式,用一个链表表示两个多项式相加后形成的新的多项式,首先确定两指针是否已到达链尾来作为循环条件,其次以两指针所指的节点的结构体的指数成员值的大小比较分成三种情况进行计算,指数偏大者指针向下一个移动,指数相同的两者系数相加,直到两者都到达链尾,从而伴随着新链表的形成,及相加后新的多项式的形成。
多项式的相减模块Decpol()需要用到两个指针指向相减的两个多项式,用一个链表表示两个多项式相减后形成的新的多项式,首先确定两指针是否已到达链尾来作为循环条件,其次以两指针所指的节点的结构体的指数成员值的大小比较分成三种情况进行计算,指数偏大者指针向下一个移动,指数相同的两者系数相减,直到两者都到达链尾,从而伴随着新链表的形成,及相减后新的多项式的形成。
多项式的删除模块Delpol()用一个指针指向要删除的多项式,运用free()函数,依次删除该链表的各个节点。
3.软件设计详细内容
3.1采用的主要数据结构类型
#include//标准输入、输出头文件
#include//包含动态存储与释放函数头文件
结构体:
structponode
{floatxishu;//系数
intzhishu;//指数
structponode*next;//自引用结构
}*polhead;//定义指针
p_polpolhead[26]={0};//定义结构体指针数组
charmenu,name,name1,name2;
inttuichu=0,j=0,n;
3.2流程图
1).主菜单流程图
inttuichu=0,j=0
tuichu==0?
j==0?
printf(“”)
READ(menu)
menu==1?
menu==2?
menu==3?
menu==4?
menu==5?
j++
menu==6?
Creatpol()
Creatpol()
Outp_pol()
Addpol()
Decpol()
Delpol()
tuichu==1
break
break
break
break
break
break
N
Y
N
N
N
N
N
N
Y
Y
Y
Y
Y
Y
printf(“再次选择”)
Y
2)Creatpol()函数流程图:
p_polp,t;
inti;
*p_polhead=(pol*)malloc(sizeof(pol))
(*p_polhead)->zhishu=n
t=*p_polhead
printf(“”)
ip=(pol*)malloc(sizeof(pol))
printf(“”)
scanf("%f%d"…)
t->next=p
t=p
i++
t->next=NULL
return1
Y
N
3)Outp_pol()函数流程图:
inti=0;p_polp;
p=p_polhead->next
printf(“…”)
printf("%f*x^%d",…)
izhishu
i==0
printf("%f*x^%d",…)
p->xishu>=0
printf("+%f*x^%d",…)
p=p->next
i++
printf("\n")
4)Addpol()函数流程图:
p1=polhead1->next
p2=polhead2->next
*p_polhead=(pol*)malloc(sizeof(pol))
p=t=*p_polhead
p1&&p2==0
e1=p1->zhishu
e2=p2->zhishu
e1>e2
e1==e2
e1p1=p1->next
sum=p1->xishu+p2->xishu
p1=p1->next;p2=p2->next
p2=p2->next
p1==0
i++
p1=p1->next
i++
p2==0
i++
p2=p2->next
t->next=NULL
(*p_polhead)->zhishu=i
Y
Y
Y
Y
Y
Y
N
N
N
N
N
N
5)Decpol()函数流程图:
p1=polhead1->next
p2=polhead2->next
*p_polhead=(pol*)malloc(sizeof(pol))
p=t=*p_polhead
p1&&p2==0
e1=p1->zhishu
e2=p2->zhishu
e1>e2
e1==e2
e1p1=p1->next
dif=p1->xishu-p2->xishu
p1=p1->next;p2=p2->next
p2=p2->next
p1==0
i++
p1=p1->next
i++
p2==0
i++
p2=p2->next
t->next=NULL
(*p_polhead)->zhishu=i
Y
Y
Y
Y
Y
Y
N
N
N
N
N
N
6)Delpol()函数流程图:
p_polp,t
p=t=*p_polhead
p->next==0
p=p->next
free(t)
t=p
N
Y
4.软件测试
4.1软件测试用例
打开软件,进入系统主界面:
多项式创建功能测试:
选择指令1,进入建立多项式的模块,先创建多项式a:
再次选择指令1,创建多项式b:
多项式输出功能测试
选择指令2,进入多项式输出的模块,先输出多项式a:
再次选择指令2,输出多项式b:
多项式相加功能测试
选择指令3,进入多项式相加的模块,并输出相加后的多项式c:
多项式相减功能测试
然后选择指令4,进入多项式相减的模块,并输入相减后的多项式d:
多项式删除功能测试
接着选择指令5,进入多项式删除的模块,删除多项式d,及释放多项式d对应的链表所占用的内存:
多项式删除功能测试
最后选择指令6,退出菜单:
所有测试完毕,功能全部正常。
4.2软件测试报告
将4.1测试过程中能完成的功能和不能完成的功能以及不能完全完成的功能进行列表分析,指出测试结果和出错原因,例如:
标号
项目
预期结果
实际结果
出错原因
出错次数
01
主函数菜单
美观的菜单
得到美观的菜单
无
无
02
多项式的创建
正确输入数据
完成
无
无
03
多项式的显示
正确显示数据
完成
无
无
04
多项式的相加
正确处理数据
完成
无
无
05
多项式的相减
正确处理数据
完成
无
无
06
多项式的删除
正确删除数据
完成
无
无
5.总结和致谢
开始选这个程序的时候,我以为这个程序很简单,可当选完以后,自己开始着手做这个程序的时候,查阅了相关资料,发现做这个程序还要用到链表,而链表在课本上算是一个比较难的知识点,我做这个程序发了很久的时间,单单就把书上的关于链表部分的知识看懂就发了比较多的时间,而自己把整个程序做出来的时候,一上机检测,发现错误到处都是,自己于是细心地想办法一个一个去改,最后运行到没问题时,才放了一大口气。
我感觉自己通过做这个实验收获的挺多的,而自己完成了这个程序也产生了一种自豪感。
通过这次课程设计,我发现了自己在学习中的诸多不足,我想我会积极改正的。
无论是在课堂学习,还是在课外的相关知识的拓展,我均通过这次课程设计认识到了不足,很感谢能有这样一次课程设计的机会。
另外,在我自己写完程序上机检测的时候,真的是很多错误,我要感谢我的同学,他们帮我指出了不少错误。
然而帮助我改正绝大部分错误的还是网络资料,因为很多莫名的错误根本看不懂,只是在网上一查才知道到底错误实质上是出在哪里了。
最后还是感谢老师和许多同学,我在这次课程设计中的收获离不开他们的帮助。
6.附录
6.1软件使用说明
运行条件:
本软件可以在VisualC++里运行,其他编程软件没有测试。
进入主菜单以后,选择你要执行模块,在初次使用时,应先选择指令1输入两个多项式后