已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计题 目 简易计算器的设计 学生姓名 指导教师 学 院 专业班级 完成时间 目 录第一章 课程设计目的2第二章 课程设计内容和要求2第三章 课程设计分析3第四章 算法描述4第五章 源代码8第六章 运行结果分析13第七章 结束语15第八章 参考文献15第一章 课程设计目的本学期我们对数据结构这门课程进行了学习。这门课程是一门实践性非常强的课程,为了让大家更好地理解与运用所学知识,提高动手能力,我们进行了此次课程设计实习。这次课程设计不但要求实习者掌握数据结构中的各方面知识,还要求实习者具备一定的C语言基础和编程能力。具体说来,这次课程设计主要有两大方面目的。 通过本项课程设计,可以培养独立思考、 综合运用所学有关相应知识的能力,能更好的巩固C语言程序设计课程学习的内容,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性! 通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。第二章 课程设计内容和要求2.1课程设计内容在功能上功能接近操作系统中的计算器,系统界面不做强制要求。功能: 对包含加、减、乘、除、括号运算符的任意整型表达式进行求解。分步实施:1 初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数;2 完成最低要求:求出2维数组的功能;3 进一步要求:完成3维以上数组的功能。有兴趣的同学可以自己扩充系统功能。要求:1)界面友好,函数功能要划分好2)总体设计应画一流程图3)程序要加必要的注释4)要提供程序测试方案2.2 运行环境该程序的运行环境为Windows xp系统,Microsoft Visual C+6.0版本。第三章 课程设计分析3.1系统的基本要求1. 算术运算功能。能够实现+、-、*、/的简单运算。3. 进制之间的转换功能。能够实现十六、十、二、八进制数据之间的转换。4.通过键盘控制字符和数字的输入。3.2数据结构设计及用法说明此程序调用的函数主要有 /*数学函数的定义*/ /*屏幕操作函数*/ /*I/O函数*/ /*库函数*/ /*变量长度参数表*/ /*图形函数*/ /*字符串函数*/ /*字符操作函数*/。基本使用:用控制鼠标图形移动,当移动到相应得按钮时按回车键输入当前数字或执行对应的函数。加法:输入一个被加数数,按“+”,输入被加数,按“=”,输出结果。减法:输入被减数数,按“-”,输入减数,按“=”,输出结果。乘法: 输入一个数,按“*”,输入另个数,按“=”,输出结果。除法: 输入一个被除数,按“+”,输入另个除数,按“=”,输出结果。求x的y次方: 输入数x,按“”,输入数y,按“=”,输出结果。求余:输入一个数,按“mod”,按“=”,输出结果。取整:输入一个数,按“int”,按“=”,输出结果。十进制转二进制:输入一个十进制数,按“10-2”,输出二进制结果。十进制转八进制:输入一个十进制数,按“10-8”,输出八进制结果。八进制转十进制:输入一个八进制数,按“10-8”,输出十进制结果。第4章 系统设计开始显示结果结束进制转换输入第二个数y+、-、*、/、xy、log、等输入第一个数x第5章 系统实现本系统采用 C语言开发,生成可执行文件在任何系统下都可以执行,具有很好的数据处理能力和稳定性。并且使用Microsoft Visual C+6.0在原有基础上实现了多汉字的支持,方便了我们的使用。生成的程序可移植性强、兼容性好。这个系统是基于软件发展的生命周期来研制的,它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。本程序通过调用int specialkey(void) 和#include 来实现对屏幕的操作,通过调用int arrow()函数,int specialkey(void) 和match来实现对光标的操作。第6章 程序源代码: #include char token;/*定义程序要使用到的一些函数*/void match( char expectedToken ) /*对当前的标志进行匹配*/if( token = expectedToken ) token = getchar(); /*匹配成功,获取下一个标志*/else printf(cannot matchn);exit(1); /*匹配不成功,退出程序*/int low( void )/*用于计算表达式中级别最低的运算*/int result = mid(); /*计算比加减运算优先级别高的部分*/while( token = + ) | ( token = - )if ( token = +)match(+); /*进行加法运算*/result += mid();break;else if ( token = -)match(-); /*进行减法运算*/result -= mid(); break;return result;int mid( void )/*用于计算表达式中级别较高的运算*/int div; /*除数*/int result = high(); /*计算比乘除运算优先级别高的部分*/while( token = * ) | ( token = / )if ( token = *)match(*); /*进行乘法运算*/result *= high();break; else if (token = /)match(/); /*进行除法运算*/div = high();if( div = 0 ) /*需要判断除数是否为0*/printf( 除数为0.n ); exit(1);result /= div; break;return result;int high( void )/*用于计算表达式中级别最高的运算,即带()的运算*/int result; if( token = ( ) /*带有括号的运算*/match( ( );result = low();/*递归计算表达式*/match();else if ( token= 0&token=9 )/*实际的数字*/ungetc( token, stdin ); /*将读入的字符退还给输入流,为读取整个数*/scanf( %d, &result ); /*读出数字*/token = getchar(); /*读出当前的标志*/else printf(The input has unexpected charn); /*不是括号也不是数字*/ exit(1);return result;main() int result; /*运算的结果*/ printf(*n);printf(*Welcome to use this simple calculator*n); printf(*Please input a multinomial like *n);printf(* 6-3*(5-1)/2+14/7 *n);printf(*n);token = getchar(); /*载入第一个符号*/result = low(); /*进行计算*/if( token = n ) /* 是否一行结束 */printf( The answer is : %dn, result );else printf( Unexpected char!);exit(1); /* 出现了例外的字符 */scanf(%d,result);return 0; 第7章 简单的试验结果1最初的运行示图2.简单的运算3 匹配不成功4不能配对5除数为06一般的多项运算7负数的运算8 多位数的运算9优先级的运算第8章 运行结果分析1 对于高精度加法,先判断两个数符号,如果为异号,则进行高精度减法,否则将各位逐个相加,然后逐位进位,返回答案即可。2 对于高精度减法,先判断两个数符号,如果为异号,则进行高精度加法,否则用大数减小数,逐个相减,然后逐位退位,判断符号、返回答案即可。3 对于高精度乘法,用第二个数的各位乘以第一个数的各位。然后错位相加,相当于小学生摆竖式。最后将各位相乘的结果相加,逐位进位,判断符号、返回答案即可。4 对于高精度整除,采用各位从09枚举形式,如果此位与09相乘刚好小于等于相应数字,则为此位答案为这个数。最后返回答案即可。5 对于高精度取模,则只需求出高精度整除,然后将数字减去整除的结果即可。6 对于n阶乘,做n次乘法,每乘一次,乘数减一。7 对于左移,虽然是建立在位运算基础上,但其效果只是乘以二,所以只需高精度乘以二即可。8 对于x的平方、立方、y次方,只需将x高精度相乘2次、3次或者更多次即可。9 对于与运算,先将两个数转换为二进制,然后对每位进行与运算,最后转换回十进制即可。对于异或运算,原理同与运算。第9章 结束语转眼,为期两周的数据结构课程设计实习即将结束了。在这次实习中,自己的C语言知识和数据结构知识得到了巩固,编程能力也有了一定的提高。同时也学会了解决问题的方法。总结起来,自己主要有以下几点体会:测试阶段中发现了几处错误导致程序不能编译,去图书馆查找相关的资料, 又同学一起讨论。通过耐心的分析源代码终于编好了一个完整无误的程序。在这次的c语言程序设计实习中遇到了现实编程中必然见到的问题通过这些问题的解决积累了编程的实践经验。在实际的编程操作中发现自己c语言知识的不足,加深了对c语言的理解。在学习之余体验到收获的感觉.善于总结,也是学习能力的一种体现,每次完成一个编程任务,完成一段代码,都应当有目的的跟踪该程序的应用状况,随时总结,找到自己的不足,这样所编写的程序才能逐步提高.课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。自从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相我们把前面所学过的知识又重新温故了一遍。通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。安排课程设计的基本目的,在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟。尤其是观察、分析和解决问题的实际工作能力,以便培养成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。作为整个学习体系的有机组成部分,课程设计虽然安排在一周进行,但并不具有绝对独立的意义。它的一个重要功能,在于运用学习成果,检验学习成果。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。这也是一次预演和准备毕业设计工作。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。课程设计促进了我系人才培养计划的完善和课程设置的调整。近年来,我系为适应学生的实践需要陆续增设与调整了一系列课程,受到同学的欢迎,其中这次的设计很受同学们的喜欢。课程设计达到了专业学习的预期目的。在一个星期的课程设计之后,我们普遍感到不仅实际动手能力有所提高,更重要的是通过对软件开发流程的了解,进一步激发了我们对专业知识的兴趣,并能够结合实际存在的问题在专业领域内进行更深入的学习。第10章 几点经验1.必须牢固掌握基础知识。由于C语言是大一所学知识,有所遗忘,且未掌握好这学期所学的数据结构这门课,所以在实习之初感到棘手。不知如何下手,但在后来的实习过程中自己通过看书和课外资料,并请教其他同学,慢慢地对C语言和数据结构知识有所熟悉。这时才逐渐有了思路。所以,这次实习之后,我告诫自己:今后一定要牢固掌握好专业基础知识。2.必须培养严谨的科学态度。自己在编程时经常因为一些类似于“少了分号”的小错误而
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省大学收学通知书
- 广南秸秆禁烧通知书
- 广州微法院立案通知书
- 店村车管所放号通知书
- 康乐社区停电通知书
- 廊坊金地小区停水通知书
- 延安瓶颈路启用通知书
- 建平矿山停业整顿通知书
- 建筑工程开始设计通知书
- 开关门装修完工通知书
- (34)-妇人病证治特点解读《金匮要略》
- 攻略:炎龙骑士团2
- 市北资优六年级分册 第10章 10.6 探索用平面截正方体所得截面形状 郑斌
- 高二物理竞赛力学课件
- GA 423-2015警用防弹盾牌
- 监狱消防安全知识讲座课件
- 中国文化概论(第三版)全套课件
- 材料作文“空白罚单”作文导写
- 农业机械安全操作规程手册课件
- 医院招聘护士考试题库(附答案)
- 产前筛查血清学指标及临床意义课件(PPT 31页)
评论
0/150
提交评论