课程设计报告——计算器.doc_第1页
课程设计报告——计算器.doc_第2页
课程设计报告——计算器.doc_第3页
课程设计报告——计算器.doc_第4页
课程设计报告——计算器.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

北京化工大学20112012课程设计报告计算机科学与技术计算器程序的设计与实现数据结构课程设计班级:计科1001学 号姓 名完成功能简述成 绩2010014315王悦晨1. 界面的编写2. 表达式求值功能3.高级选项的定积分及一元二次方程功能4.程序的整合调试5.帮助文件整理与制作2010014319任倩茹1.GPA计算器功能2.GPA计算器功能帮助材料2010014322宋 辉1.矩阵运算功能2.矩阵运算功能帮助材料3.流程图4.课程设计实验报告整理2010014329赵姗姗1.简易运算功能2.简易运算功能帮助材料北京化工大学信息科学与技术学院计算机科学与技术专业201112.目录一、功能描述21.1 系统实现的目的和意义31.2 系统实现的功能31.3 系统开发的环境3二、总体结构22.1 文件清单(按文件系统树型方式排列)32.2 系统的总流程图(标明每个模块的文件名)4三、详细设计(均需注释)23.1 数据结构23.2 各模块(或算法)流程图(标明函数名)2四、系统实现54.1模块一(写出模块的名字)54.2模块二(写出模块的名字)5五、程序的过程展示95.1 程序运行过程展示95.2 程序结果展示及分析9六、软件的辅助说明146.1 本软件的优点146.2 本软件的缺点146.3 本软件的BUG14七、课程设计结论(意见、建议、心得、申报成绩)14八、参考文献(参考网站)16九、附录提交文档169.1 书面形式清单169.2 电子形式清单169.3 文档命名要求1617一、功能描述1.1 系统实现的目的和意义实现计算器的主要功能以及很多计算器不能实现的功能。一些简单的日常运算如:实数范围内的加减乘除和乘方运算、三减函数及反三角函数运算等等。还有矩阵的一些基本运算:如矩阵的加法、减法、乘法和求逆运算。也有更多高级功能,如计算学生的GPA绩点、求解固定形式函数定积分、解一元二次方程、求一些列数据的平均数与和数及回归方程。方便学生的日常使用。 1.2 系统实现的功能 一些简单的日常运算如:实数范围内的加减乘除和乘方运算、三减函数及反三角函数运算等等。还有矩阵的一些基本运算:如矩阵的加法、减法、乘法和求逆运算。也有更多高级功能,如计算学生的GPA绩点、求解固定形式函数定积分、解一元二次方程、求一些列数据的平均数与和数及回归方程。1.3 系统开发的环境 DEV-C+ 4.9.9.0二、总体结构2.1 文件清单(按文件系统树型方式排列) 2.3 系统的总流程图启动计算器1.简易运算 2.矩阵运算3.算术表达式求值 4. GPA计算器5. 高级选项9.帮助 0.退出(调用MainMenu()函数)选择1234 590退出帮助调用FuncHelp()函数高级选项调用FuncFive()函数GPA计算器调用FuncFour()函数算术表达式求值调用FuncThree()函数矩阵运算调用FuncTwo()函数简易运算调用FuncOne()函数选择选择调用head.h头文件1.计算回归方程调用DoReturn()函数2.计算定积分调用Interial()函数3.一元二次方程求解调用SolveEquation()函数4.求和、平均数调用DoSumAndEve()函数调用matrix.h头文件1.矩阵乘法调用Multify()函数2.矩阵加法调用Add()函数3.矩阵减法调用Minus()函数4.矩阵求逆调用Reverse()函数三、详细设计(均需注释)3.1 数据结构栈的基本操作一维数组二维数组四、系统实现4.1模块一:简易运算(该子模块为屏幕输入和屏幕输出显示)4.1.1 输入:4.1.1.1:3*8+7-94.1.1.2:6*7+7+5*2-34.1.2 输出4.1.2.1逆波兰式:38*7+9- 求值结果:224.1.2.2逆波兰式:67*7+52*3-+ 求值结果:564.2模块二:矩阵运算(该子模块为文件读入和文件输出,不执行屏幕输入和输出显示)4.2.1 输入:在根目录matrix.txt下按如下格式输入=输入矩阵的行(中间空格)列,然后输入矩阵的各元素值。根目录matrix.txt下的输入:(例子如:3*3矩阵两个矩阵的运算)3 31.0 2.3 3.42.4 4.6 5.72.4 5.6 7.9 3 32.4 5.6 3.52.6 4.6 6.21.2 0.4 5.64.2.2输出:在根目录matrx.txt下输入完数据并保存后,执行程序,选择相应的功能(加、减、乘、逆),执行完后,根据相应提示,然后打开根目录result.txt。(输出如下:)(若矩阵相乘)The result is: 12.46 17.54 36.80 24.56 36.88 68.84 29.80 42.36 87.36(若矩阵相加)The result is: 3.40 7.90 6.90 5.00 9.20 11.90 3.60 6.00 13.50(若矩阵相减)The result is: -1.40 -3.30 -0.10 -0.20 0.00 -0.50 1.20 5.20 2.30(若矩阵求逆)行列式的值为 : 0.44The result is: 10.14 2.00 -5.80 -12.11 -0.60 5.64 5.50 -0.18 -2.114.3模块三:表达式求值(该子模块为屏幕输入和屏幕输出显示)4.1.1 输入:注:三角函数的输入是以角度制输入的。4.1.1.1:sin23.5+cos89*(ln67/arctan2.4)=4.1.1.2:75+3*(2-lg45/(4.37-23.4)=4.1.1.3:e2-4.4*PI*(sin32.4-24.56+12.004)=4.1.1.4:=4.1.2 输出:4.1.2.1: sin23.5+cos89*(ln67/arctan2.4)=-0.818314 4.1.2.2:75+3*(2-lg45/(4.37-23.4)=35080.44.1.1.3:e2-4.4*PI*(sin32.4-24.56+12.004)=-348.874.1.1.4:按任意键返回主菜单4.4模块四:GPA计算器(该子模块为文件读入数据,执行结果屏幕显示)4.4.1输入: 在执行程序前会有提示,确保在根目录GPA.txt下输入数据,输入完后并保存,然后按相应提示执行操作。(根目录GPA.txt下输入,例子如下:)高数 5.5 A+,物理 4.0 84,英语 4.0 78,物理实验 1.5 C+,离散数学 2.5 C+,思修 2.5 79,语言 4.0 87,金工实习 1.0 C+,4.4.1输出:您今年的GPA为 3.044.5模块五:高级选项4.5.1:计算回归方程(该子模块为文件读入数据,结果屏幕输出显示)4.5.1.1输入:在根目录data.txt下输入数据并保存,输入形式如:。例子如下:80.00 2.00 4.00 6.00 8.00 10.00 12.00 14.00814.21 14.84 15.43 16.02 16.66 17.23 18.10 18.694.5.1.1输出:相关系数 = 0.998806 回归方程为:y = 0.320x + 14.164.5.2:计算定积分(该子模块为屏幕输入和屏幕输出显示)4.5.2.1输入:所求定积分的被积函数的形式已限定且最高次幂为4次,根据提示进行相关操作,依次输入系、常数,完成后会有提示,然后依次输入上下限。例子如下:1 2 3 4 5 6 7 8 9输入上下限:2 34.5.2.1输出:算得定积分为: I = 110.8038 0.00824.5.3:一元二次方程求解(该子模块为屏幕输入和屏幕输出显示)4.5.3.1输入:所求解方程形式已经限定,形如:a x2 + b x + c1 = c2。注:系数为整型数据。例子如下:6 5 1 44.5.3.2输入:7 3 2 14.5.3.1输出:方程 6 x2 + 5 x + 1 = 4的解为:X1 = -1.2374X2 = 0.4040714.5.3.2输出:方程 7 x2 +3 x + 2 = 1的解为:X1 = -0.214186 + 0.31135 iX2 = -0.214186 - 0.31135 i4.5.4:求和及平均数(该子模块为文件读入数据,屏幕输出显示)4.5.4.1输入:在根目录data.txt下输入数据并保存,输入形式如:。例子如下:(data.txt文件下输入,例子如下:)80.00 2.00 4.00 6.00 8.00 10.00 12.00 14.004.5.4.2输入:61 2 3 4 5 64.5.4.1输出:数据的和为:56.00平均数为:7.004.5.4.2输出:数据的和为:21.00平均数为:3.5五、程序的过程展示主界面如下图1 主界面在主界面选择 1 操作,显示下界面,输入算式后按回车显示结果图 2 简易运算界面在主界面选择2操作,界面如下所示,请根据提示在根目录下输入数据如下右图所示图 3 矩阵的界面可以再根目录下的 result.txt 中查看结果(以下依次为乘、求逆的结果)图 4矩阵运算结果在主界面选择3选项,则界面如下所示 具体使用运算符参数,请参看所附帮助文件图 5 表达式在主界面选择4选项,界面如下所示,在 GPA.txt 中输入绩点格式为:图 6 GPA计算器在主界面选择5 ,选择功能界面如有所示,共有4 个功能选项。5.1计算回归方程,在根目录 data.txt 中输入数据,先输入数据的长度再输入数据。图5.1 回归方程5.2 计算定积分,只能输入形如:的方程式的定积分求解。先输入9 个系数,再输入上下限之后便可以计算积分图5.2 计算定积分5.3 一元二次方程求解功能,输入方程项 的各项的系数,利用方程求解的一般方法解出 、 ( 0的情况)或 、 ( 0的情况)图5.3 二元一次方程求解5.4 计算平均数 和 和数在根目录下的 data.txt 中,先输入数据长度再依次输入数据,即可算出一系列数据的和、平均数图5.4 计算和平均数六、软件的辅助说明6.1 本软件的优点好用,拥有了一般计算器的功能,并且可以在“表达式求值”选项中直接输入例如 sin30 、ln 8、3.23、PI、e之类的数进行运算。矩阵、GPA和回归方程之类的功能采用文件输入方式。用户可以更随心,更方便地输入计算量比较大的一系列数据。界面更亲和,方便用户使用。6.2 本软件的局限性以及BUG 1.所有的操作请严格按照要求的格式进行输入,否则可能会造成程序报错的情况; 2.简易运算只能计算一位整数运算;3.在“矩阵运算”的功能选项中,矩阵只能在文件下输入,而且一旦有非法操作(如2x2阶矩阵不能与3x2阶矩阵相乘),程序会马上终止,result.txt 中会显示相应的错误提示。4.在“表达式求值”的功能选项中,该功能不能计算以多项式为参数的函数,如sin(3*34)、ln e等问题,使用时请注意。5. 在“表达式求值”的功能选项中,亦不能计算 复数 以及 负数。6.有时进入副菜单时会出现错误提示,此时是由于您的误操作造成的,请尝试返回主菜单再进入,或者重新启动程序。7.只能计算固定形式方程的定积分和求解;8.在“表达式求值”中不能计算以括号项为首的形如 (3-4)= 类型的算式;更多BUG 正在发现中,如用户发现问题,请及时联系我们。七、课程设计结论王悦晨:不得不说,这次课设收获很大。正如伟大徐晓明老师所言:“你们在课程设计的时候学到的东西比你们平时课上学的东西要多得多得多。”真是这样。平时上课,学的都是一些理论,并没有实际的算法描述和代码实现,对我们的编程能力其实没有太多的什么建树。真正的能力是建立在思考和运用的基础上的。为了实现“计算器”功能,我必须把书上那些有板有眼的文字信息整理过滤,写成我自己能理解的算法描述,而之后的代码实现就自然十分简单了。现在回想,为了这个课设,曾经因为出现的BUG伤心沮丧过,也会因为程序的实现的成功而欢喜过;我会记得为了想出一个算法苦心竭虑到废寝忘食(真的因为些程序一直从早上8点到晚上9点左右才罢休),也会记得为了赌那么一口气要写出算法曾经一宿未眠。回头看来,并没有觉得一丝酸楚或其他什么的,我只觉得十分欣慰,因为这是我一生的财富。最终,程序是完成了,虽然还是又BUG,有局限性;但是也有很多优点。我觉得在这行中,这正重要的并不是所谓的什么“记住那么多的数据结构的用法”,又是徐晓明老师说的:“学习计算机,就应该努力忘掉书本上的内容。”这这好似“大盈若冲”“无招胜有招”之类的哲理其实到现在我也不是很明白,但在这课设过程中,也稍有感悟。起先照书照搬,生搬硬套,反而给自己带来不上的困扰;而之后来,干脆放弃通过修改书本上的伪代码实现功能。我通过总结出了算法描述,用自己的想法居然能够一气呵成,油然而生行云流水的快感。也许这才是计算机作为艺术的魅力所在。我知道我的算法不一定是效率最高的,但却有一股自信说,我的算法一定是独特的。开句玩笑说:“这是你们百度不到的”至此,课程设计到此结束,这么多天的忙碌也到此结束。但是,继续学习的路没有结束。我知道我的各方面的能力十分有限,能做出这样的成绩,我也深感欣慰了。毕竟这是我第一次这么多的时间和精力做出的第一个程序,按说成绩我想申请A。事实上,按程序的功能和复杂度来说,与诸位大神们的无论是B树(真心敬佩 支瑞 和 高培航 两位大神)也好,还是类似MatLab的制作界面也好,比之也相差甚远,成绩给B甚至C也无妨。在我看来,这些成绩已然不如开始看的那么重要了。倒也不是假清高真虚伪,事实也是如此。各种题外话到此结束,心得到此不为止而为我继续保留,以提出对自己的希冀和鼓励。感谢观看。任倩茹:在此次课程设计中,收获知识的同时,还收获了阅历,收获了成熟,在此过程中培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,体会到了很多些写较大程序的方法。而这是日后最实用的,真的是受益匪浅。锻炼自己的C语言编程能力。在此次课程设计中,我做的和GPA有关的内容。本来以为很简单,很容易做,但是实际做的过程中还是出现了各种各样的问题。有过没有考虑周全的时候,比如说忽略了有的科目是按照等级记成绩的,没有编写分数与等级相对应的部分。也出现过多次的编译错误。的确让我看到了自身存在的巨大差距。通过这个做的课程设计,也的确让我学到了很多东西。在我们组同学的帮助下,学会了很多东西也完善了很多。我觉得,课程设计是一个平台,通过这个平台,我们有机会将平时不太懂的东西与同学交流讨论。平时没有机会问的,不好意思问的,通过这次课程设计都可以在一定程度上得到解答。经过这次课设的操作之后,我觉得自己对数据结构的认识更多了,我们不是把它看做一门学科,一次任务,我们能从中获取很多的乐趣,如果很多东西是我们自己创造的,那么我们怎么会不乐于这种创造的工作,还有就是不能气馁,不能烦躁,一定要有耐心,有毅力的坚持,即使不能成功,想法也很重要,拿我们的想法去与别人交流,我们的想法就会变得更丰满,更切合实际。在这次的课程设计中,我们组的同学齐心协力,大家都在努力做好自己的工作,我们组编程比较厉害的王悦晨同学给了我们很多耐心的讲解和指导,使我们每一个人都受益匪浅。当我们组的程序基本成型时,面对电脑屏幕上的程序,界面,我内心有说不出的激动,忘不了一天干几个小时的时候,也忘不了为某个问题而苦苦纠结的时候,虽然曾出现过很多次BUG,虽然有过一次次修改的过程,但当这一切过去之后,我收获的不仅仅是知识,还有很多人生道理,这个团队给了我很大帮助,我学习了很多,我也付出了,路还很长,收拾行装,继续前进!宋 辉:这是第一次做课程设计,第一次写这么大的程序(可能现在看来还算不了什么,但比起之前些的那些程序已经很多了),同时也是第一次进行团队合作,虽然比起那些出名的编程团队算不了什么,可对初出茅庐的我们来说,也算是真真正正地体会了一次团队编程,真的真的很值得,让我学到的不仅有知识上的东西,还明白了一些道理。我们的团队有四个人,各有分工,而我的任务则是做矩阵的运算,分加减乘逆。在这次的编程里,我们花了两个星期的时间进行编写程序,在这个期间里,真的很烦,每天花很多时间去写,有的时候遇到某个问题困扰了半天,或是程序中某个地方出了错,调试了好长时间才发现,真的很头疼。但是,当把某个功能完善的时候,没有什么明显的BUG的时候,确实很欣慰。从这个过程中,我也深刻地认识到一个简单的道理,凡是作任何事都要有耐心,不能半途而废,否则将前功尽弃,贵在坚持;其次,还要有信心,不仅是对自己,对自己的团队成员也是一样,因为我们是一个集体,一个团队,我们各自的任务是紧密相联,缺了任何一块都不行,所以在整个编程过程中,尽管有困难,但我们还是充满信心和耐心,这样才能达到预期的自己有学到了很多,这是值得欣慰的、总之,在这次课程设计中,确实受益匪浅,尤其是团队合作意识,对于自己所学的专业,今后不可能是一个人去独立完成一个项目,而是一个团队。并且,在团队合作的过程中,通过互相交流,您会从队友那里学到跟多东西,这也会让自己进步一大截。最后,我想申报的成绩是良,同时,也希望老师以后上课稍微放慢速度点,其实理解真的很难的。我也做一个自我评价吧:对于这个专业,我觉得自己的投入不够训练太少和自己也很难学懂这些知识,好些知识还没真正掌握,导致现在的编程水平还很低。通过这次的课设,不仅从我们这个小组里学到了很多,从其他小组那里,我还看到的是“投入”,这一让我深刻反省了自己。一切尚未成功,我还须更加努力,相信在同学的帮助下和自己的努力下,我会慢慢地跨过这道坎,真正地融入其中,并坚信自己会好的。赵姗姗:这次课设我们做的是计算器,我们是四个人一组,各有分工,我负责的是简易计算的部分,主要是输入一个表达式的值,然后能实现逆波兰式

温馨提示

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

评论

0/150

提交评论