C语言课程设计计算器图形界面.doc
《C语言课程设计计算器图形界面.doc》由会员分享,可在线阅读,更多相关《C语言课程设计计算器图形界面.doc(17页珍藏版)》请在咨信网上搜索。
C语言课程设计计算器图形界面 17 2020年4月19日 文档仅供参考 扬 州 大 学 C语言课程设计报告 题 目 一个简易计算器的设计与实现 班 级 学 号 姓 名 指导教师 成 绩 老师评语: 扬州大学信息工程学院 年 6 月 25 目录 一、 程序设计目的:………………………………………………1 二、 程序设计内容:………………………………………………1 三、 课程设计所补充的内容:补充的函数或算法…………3,4 四、 系统总体设计………………………………………………….4 五、 系统详细设计………………………………………5,6,7,8 六、 运行结果………………………………………………8,9,10 七、 系统调试…………………………………………8,9,10,11 八、 课程设计体会总结………………………………8,9,10,11 1 课程设计目的 (1).课程设计是一项综合性实践环节,是对平时实验的一个补充,课程设计内容包括课程的主要理论知识,但由于C语言对初学者较难掌握,因而对一个完整的C语言程序不适合平时实验。经过课程设计能够达到综合设计C语言程序的目的。 (2)经过本课程设计,能够培养独立思考,综合运用所学有关相应知识的能力,能更好地使用C语言的知识,更好地了解C语言的好处和其可用性!掌握基本的程序设计过程和技巧,掌握基本的分析问题和 利用计算机求解问题的能力,具备初步的高级程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础! (3)经过本程序训练程序设计的基本技能,掌握字符串的表示方法和字符串函数的功能、自学掌握四则运算的算法及WIN-TC的图形操作的基本知识、键盘上特殊键的获取及图形方式下光标的显示。 2 课程设计内容 目的:本课程的课程设计要求学生模拟实现一个简单计算器,要求(1)能够实现四则运算,并能支持优先级运算。(2)三角与反三角运算:如sinx,cosx等。(3)指数对数运算:如log(x),lnx,e的x次方等。(4)其它运算:如X!,x的累加等。(4)不允许调用库函数,使用自行开发的程序实现常见函数运算。(5)进一步考虑计算器外观设计,用可视化界面给出计算器外观、功能按键及输入界面。 使用说明:执行加法运算,'—'表示执行减法运算,表示执行乘法运算,'/'表示除法运算.‘Q’表示退出计算器‘C’表示清零,’=’表示得出结果'^'表示执行x的y次方,'e'表示执行e的x次方操作,'&'表示执行累加操作.,你能够能够用键盘上的上下左右键对光标进行移动,当光标移动到计算器按键上时,按ENTER即可执行该键的操作!最后按“=”则可得出结果。 3 课题设计的补充知识 本程序经过int specialkey(void)和#include<conio.h>来实现对屏幕的操作,经过调用int arrow()函数,int specialkey(void)和#include<conio.h>来实现对光标的操作。计算机图形采用Turbo C 2.0绘图程序制作。 因此涉及C的图形程序设计知识。另外,由于不允许调用库函数,则要自行开发程序实现sinx,cosx,e的x次方函数运算,则能够根据幂级数的展开式来设计实现其运算的算法,而x的阶乘和x的累加则可用for语句来实现。 最后,不得不说说四则运算的算法,有两种方法能够实现:(1)利用堆栈实现四则运算(2)还能够用递归整数的四则运算。 sinx函数 #include<stdio.h> #include<math.h> main() { int n=1; float x; double sum ,term; printf("input x:"); scanf("%f",&x); sum=x; term=x; do { term=-term*x*x/((n+1)*(n+2)); sum=sum+term; n=n+2; } while (fabs(term)>=1e-5); printf("sin(x)=%f ",sum); getch(); } cosx函数 #include<stdio.h> #include<math.h> main() { int n=0; float x; double sum ,term; printf("input x:"); scanf("%f",&x); sum=1; term=x; do { term=-term*x*x/((n+1)*(n+2)); sum=sum+term; n=n+2; } while (fabs(term)>=1e-5); printf("cos(x)=%f ",sum); getch(); } 使用使只需要将其转换为函数,在computer函数中对其进行调用即可 4课程总体设计 main()函数首先初始化图形系统,然后调用计算器computer()进行计算器的计算功能,当计算器程序返回时,关闭图形系统,结束程序。 其系统模块图如下: main函数 Computer函数计算 Initialize初始化图形系统 Closegraph关闭图形系统 5.1系统详细设计 5.1.1主界面:画一个带标题(calculator)的窗口,窗口最上面的光条显示数字和运算结果,光条下30个矩形块模拟命令按钮,按钮上面显示数字和运算符号,而且在按钮上有图形光标,经过移动光标键到所需位置,按回车键即可选择相应的符号。 5.1.2main()主函数:首先初始化图形系统(Initialize函数),然后调用计算器computer()函数进行计算器的计算功能,当计算器程序返回时,关闭图形系统(Closegraph),结束程序。 5.1.3initialize()初始化函数:调用initgraph(&GraphDriver,&&GraphMode,”初始化系统,将其装入相应的图形驱动器。图形函数所用的屏显模式由GraphMode所指向的整数值确定。用DETECT自动检测当前屏显硬件的类型,并选用最大分辨率的屏显模式。为了方便设计计算器界面,在这个函数中你,获取图形屏幕的最大尺寸及纵横比。 5.1.4mwindow()主窗口函数:设置视口大小为当前窗口的一半,然后调用画边框函数drawboder()画出边框。 5.1.5drawboder()画边框函数:经过函数getviewsettings(&vp)把有关当前视口的信息装入由vp所指向的结构中。vp是struct viewporttype类型,其结构定义如下: struct viewporttype {int left,top,right,bottom; int clip; } 域left,top,right,bottom中分为左上角和右下角的坐标。当clip为0时,不对超出视口边界裁剪,否则裁剪以防止超出边界。 因窗口是屏幕的活动部分,在这个活动窗口将显示输出,为保持字符屏幕和图形系统的独立。字符屏幕的函数提供了窗口(window),而图形系统提供了视口(ViewPort),当屏幕用字符模式时,左上角坐标为(1,1),而在图形状态下,左上角坐标为(0,0)。根据视口坐标,利用画矩形函数rectangle()画出边框线。 5.1.6computer()计算器函数:这是主要函数,实现了计算器的计算功能。先调用mwindow()函数显示窗口,再在窗口中显示计算器,最后接收按键进行运算。根据窗口大小设置按钮大小和位置,设置了两个单位变量width和height,图形显示以这两个变量为计算单位。图中的符号按钮利用setfillstyle()设置颜色来实体填充,再用把bar()函数画矩形条,setcolor()函数设置边框线颜色,rectangle()函数画矩形边框线,利用outtextxy()函数将预先存储在str1中的字符串中的字符输出,因outtextxy()输出的时字符串,则应利用sprintf()函数将要输出的字符写入字符数组str2中,转变为字符串,然后输出。界面设置好后,先在第一个按钮位置显示图标,此时可移动和按下光标,变量m和n记录光标的位置,光标移动某个位置按回车后,则程序判断所按的字符,进行相应处理:(1)若为数字或小数点,则判断是否为负数,若是则将负号连接到字符串中,否则只连接所选的数字或小数点,并显示数据。(2)当所选为“-“先判断有无操作数,没有,则为负数,做负号标记,否则是做减法,做减法标志,并将当前操作数保存。(3)当所选为”+“、”*“、”/“、”^“等符号时,处理方式一样均是先保存第一个操作数,做运算标志,准备接受第二个操作数。(4)当所选为”=“时,根据运算符号标志值act进行相应的运算,将结果显示。(5)当所选为”C“时,表示清零,将第一和第二操作数均置0。(6)当所选为“Q”时,则运算结束。另外,数据和结果的显示依然用outtextxy.()函数,而且填充二维矩阵条覆盖前一次的输出。 5.1.7arrow()设计图形鼠标函数:用fillpoly(8,raw)画一个由raw所指向的数组中定义的8个x、y坐标点所围成的封闭图形,用当前填充模式和颜色对该形状进行填充,利用imagesize()函数测试图像大小,分配内存区域,将图像保存,再经过图像的读取函数getimage()和putimage()以及XOR-PUT操作实现光标的显示和隐藏。 5.1.8speciallykey()读取特殊键函数:利用bioskey(1)读取用户所按键的信息,int bioskey(int cmb)函数原型在bios.h中,功能是完成直接按键操作。如果cmb是0 ,bioskey()返回下一个在键盘键入的值,即在等待到下一个键。如果cmb是1,bioskey()查询是否按下一个键,当按下一个键时返回非0值,否则返回0值,因此用while(bioskey(1)==0)语句等待按键 5.2.模块接口设计 int main() {initialize(); Computer(); Closegraph(); Return(0); } 先设置系统进入图形模式(调用initialize()函数),即为模块入口,然后调用computer()函数执行计算器的计算功能,最后调用closegraph()函数来关闭图形模式返回文本模式(模块出口),再结束程序。 5.3流程图 开始 设计计算器图形样式及光标 计算器计算功能,用switch语句 结束 Computer()函数流程图 按键 执行运算 显示结果 清零 增加一位 Q或C键 清零 结束 开始 前一位是运算符还是数字或小数点 Q或C键 运算符 数字或小数点 等于 Q键 清零 C键 总系统设计流程图 6运行结果 运算器主界面 4的阶乘运算结果 cos0运算结果 e的平方运算结果 Ln10的运算结果 7系统调试 该计算器系统不能实现四则运算功能,有望改进! 8课程设计体会总结 经过一周的C语言课程设计,使我加深了C语言程序的使用,并能达到基本上的运用。同时也增强了动手和实践的能力。虽然在遇到了不少困难,可是正因为这些困难,我也学到了更多的东西。 这次“简单计算器制作”的课程设计不但让我对C语言的的熟悉城的上升到了一个新的高度,是我在编程路上一个质的飞跃。当我看到一个具有图形界面的计算器的模型成品出现在我的面前时,心中有着无限的感慨,原来编程也不是非常遥不可及的,原来在编程的趣味中能让我学到更多有意思的知识! 9实验指导书与参考书 1.谭浩强,《C程序设计(第三版)》,清华大学出版社, 。 2.郭翠英,《C语言课程设计案例精编》,中国水利水电出版社, 。 3.黄勇,《C语言简单图形编程》,清华大学出版社, 。- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 计算器 图形界面
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文