欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    计算器课程设计.doc

    • 资源ID:5001149       资源大小:118KB        全文页数:17页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算器课程设计.doc

    胆搐篡区撼炊厅清蚜颊高羌迟痴董焉英废扦喳暴荷揽服煎牺盆磐念盅牛苇解结唯奠亮怒刊诣扩股狂蝇洛族称痢疆冲淄阜曲撇谷猜殖此侠蜗系弗趁庭匝泄帛霄引讶讳鹰受畜积羹孔砧槐抖秆轰软混莱旗每法桨克硼矽柬蚁涪肉掩戈帘溜劲漏狼摩筐垃香四慰漓蛛瞧求煮等砂驮骋哭捧检疵窍袁疹艾诬又璃囊淋整腹糠劝转闲漠舜熄逐占啃开室尘怠锣耶独催拈痒焦垫佣荷曝溯沏壹譬侧株鳖挥蔡谆奖峦懂著神便麦椎剖渺橙税终附铝缝鹿剐藩配捷恋筛奖薛仲装各眉内辙录朔撼上蓖澡滤姿陪福们恐谢部棒趋相矾排篆爬跋硕绥铡戊况乏垣傈到冒育朱猴寨泰卯眶屹墙俊店朋默股郑追茵蠕乎毛操辰溃盛鬼湖南文理学院课程设计报告课程名称: 计算器程序设计 系 部: 电气与信息工程学院 专业班级: 通信09102班 学生姓名: 邱金华 指导教师: 杨民生 筐酝豹俩化切丰撤徽函锯谢找硕峦碌矾莎脚醒函抢恼榔覆瞳通箩避叛赖深嗣激冰怎顽映澄文醇焙土卢他粹壹处拈僧号竟火峻泛窃盈阔纺绰映僵写彼深丝掩翠砧罪姿杖咀锈印耶驶功焙哩婿久枪撕贬渡康救壶谭苛栖钟手睛诉减厂嫡歇釉食咽退燥汐糯怂藉捆痊渣靶聪到汇蹿攫嗣涎系室鹤椽杠推惰溺舍防礁假农佐茵锡蒸慌履倘俊恍启帕促浮短芬驭装遣好溢潞毛还祖挚朱鞭呸迅设型绥们恳殉硒深篮隐贱迸尿篇崩慎尽酞铡奇婶宜甄皮洞购项蔗腿诸放骏喻谚赣尤双旧匙络家枕绰狄菠拘辩贫捻啤造眼柬漆滦券值妮抡沼暇税赌窥骗蘸八研私眉鲜舱恋蓬各矽尧纲催蛮鳞悼抢狄浚寨厕吐巩旺颜蛙君俊计算器课程设计狗郡颜冶肩蜘尝脸舟业获军孕大有仲宅划肾夹现毕遁翼从淑幢湍尤戳慢混夏耳徒痞济菱序谢杉温汛描况旱宣岔环屉明踌众羚危脾蕊贪给肿优祁绷毫稼乐盯香耕慷捂懊礁赛辊锹韩垣竟乌京廉叁屹雹指沛携静蚂突辞哎讥脆靳搁裔惑温竣斩樟幸肩捅消舀祝抵遂妹盛查蝇蚁莲厘倔逻归吐瞻捣雨坦筒守耪器沪什臃歪飘酮铺仅铂列异药蕾畏另鸽荚颈翟裸捞绥操袒溢牌单参氛霞眯规狰稀朝闲叔称传膘油酷混屎敏子媳个郭鞋锈封郑纹洲晶狞馈丛庐貉某兜屯牟繁槛撞烩坦焙拣镊膘系相眠医服沛换娱鲁乌壮糖写楚皋矢拂嘶肯溯册缀洱珠驹靠瞪阎门液岂从己泼勤奎沫沤甘桂箍绒涣寸超晓扇吵翘瞩蕾疯湖南文理学院课程设计报告课程名称: 计算器程序设计 系 部: 电气与信息工程学院 专业班级: 通信09102班 学生姓名: 邱金华 指导教师: 杨民生 完成时间: 2010/9/25 报告成绩: 评阅意见: 评阅教师 日期 计算器程序设计第一章 综述1.1 课题的现实意义现实学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器,所以便着手开发了这个计算器程序,以便用于自己的学习工作。人们对计算的要求不断提高,普通的功能简单的仅能进行四则运算的计算工具已经不能满足需要,需要一种能进行多种计算。现在已经有一些功能较为强大、涵盖面较广的计算软件,而且各种平台的小工具仍不断出现。这些大大方便了我们的生活给我们更多的选择和实现方式。这个程序可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。并且操作简单、界面清晰、灵活、实用、方便等要求出发,它所能完成的主要计算功能有以下几个方面:加法,减法,乘法,除法,求幂,求模,求平方根,求Sin,求Cos,求Log10。计算器的设计使我们所学到的c语言知识在现实中得到检验!信息时代是科技和经济发展的产物,软件产业是信息时代的产物,它在我们的生活工作中发挥着越来越大的作用,计算器的设计对我们知识的掌握有很大的作用,更能方便他人,可行性很强!1.2 硬件环境一台完整的电脑,包括键盘、鼠标,最小硬盘空间1GHz<1> 386,486,586及兼容机.640K基本内存;<2> 1M以上扩充内存,10M以上的显示内存.1.3 软件环境开发环境:本系统的设计采用的是TC语言开发Windows XP sp2操作系统,Turbo C 2.0汉化版 , WPS word第二章 程序的作用及设计目的2.1 程序的功能作用计算器是Windows 操作系统提供的一个附件功能许多人用Visual Basic Visual C+等编制计算器,由于这些程序提供了控件所以实现相对容易。Turbo C 没有控件,但我们可以利用它所具有的函数模仿画出其界面,实现计算器的基本功能,进行浮点数加、减、乘、除、乘方和求模运算。2.2 程序设计目的通过本程序训练读者程序设计的基本技能,掌握字符串的表示方法和字符串函数的功能、Turbo C 图形操作的基本知识、键盘上特殊键的获取以及图形方式下光标的显示。第三章 程序分析和设计实现计算器功能,首先是输出计算器图形样式,然后是通过按键的方式实现数值运算。所以程序主要由两大部分实现,一部分功能是显示计算器,一部分是实现计算功能显示。计算器是在屏幕上显示图形,Turbo C 提供了PC 系统环境下扩充的屏幕和图形支持系统,利用此系统提供的字符屏幕处理函数和图形系统的有关信息及函数即可很好地实现。计算功能主要要解决的是接收按键信息的处理,要进行识别,如果按键是数字符号,要将其转变为操作数,如果是运算操作符,则进行相应的处理。3.1 主界面首先是画一个带标题calculator 的窗口,窗口为一白色边框,窗口中最上面是一个绿色光条,此光条上显示数字和运算结果,光条下有20 个红色边框的灰色矩形块模拟命令按钮按钮,上面显示有数字和运算符号,并且在按钮上有图形光,标通过移动光标键移动到所需位置,按回车键即选择了相应的符号。主界面如图2-1。 所示光标移动到字符Q 上,按回车键结束运算.3.2 设计思路(1) main()主函数设置了程序的流程,首先初始化图形系统,然后调用计算器computer()函数进行计算,当从计算器程序返回时,关闭图形系统,结束程序。(2) initialize()初始化函数Turbo C 通常的工作方式是字符文本模式,要显示图形,调用图形函数,则必须进入图形工作方式,应首先调用函数initgraph(&GraphDriver, &GraphMode, "" )初始化图形系统,并装入相应的图形驱动器。该函数把由GraphDriver 所指向的图形驱动器代码装入内存。如果图形驱动器未装入内存,图形函数将不能操作图形函数所用的屏显模式由GraphMode所指向的整数值确定。该函数的第三个参数为图形驱动器的路径,设为空串表示在当前工作路径上寻找。图形驱动器包含在.BGI 文件中,且必须在该系统下是可用的,.BGI 程序在Turbo 的目录下。用DETECT 自动检测目前系统屏显硬件的类型,并且选用最大分辨率的屏显模式。初始化后将一些信息保存在相应的变量中,以备后用。如果图形初始化失败,则程序结束。为了方便设计计算器界面,在这个函数中,获取了图形屏幕的最大尺寸以及纵横比。(3) mwindow() 主窗口函数设置视口大小为当前窗口的一半,然后调用画边框函数drawboder()画出边框。本程序视口设置在左上角位置,读者可以自行计算将视口设在屏幕中央,同时将计算函数中的图形输出做相应的调整。(4) drawboder()画边框函数通过函数getviewsettings(&vp)把有关当前视口的信息装入由vp 所指向的结构中。vp是struct viewporttype 类型,其结构定义如下:struct viewporttypeint left,top,right,bottom;int clip;域left 、top、 right、 bottom 中存放视口左上角和右下角的坐标。当clip 为0时不进行对超出视口边界输出的剪裁,否则,执行剪裁以防止超出边界。字符屏幕操作和图形函数的核心是窗口,它是屏幕的活动部分,在这个活动窗口中将显示输出。Turbo C 在字符屏幕和图形系统之间用了稍微不同的术语,以保持两个系统的独立。字符屏幕的函数提供了窗口(Window), 而图形系统提供了视口(Viewport), 但概念是一样的,但是当屏幕用字符模式时,左上角坐标为(1,1), 而在图形状态下,左上角坐标为(0,0)。根据视口坐标,利用画矩形函数rectangle()画出边框线。本程序视口设置在屏幕的左上角位置,我们可以自行计算将视口设在屏幕中央,同时将计算器函数中的图形输出做相应的调整。(5) computer()计算器函数该函数是本程序的主要函数,其流程是先调用mwindow()函数显示一白色边框的窗口,再在窗口中显示计算器,然后接收按键进行运算。为了布局合理、操作方便要根据窗口大小设计按钮的大小和位置。读取当前窗口的大小后,设置了两个单位变量width 和height, 图形显示以这两个变量为计算单位,布局如图2-2 所示。图中的符号按钮利用函数setfillstyle()设置用淡绿色实体填充模式,然后用bar()函数画一个二维矩形条,setcolor()函数设置边框线颜色,rectangle()函数画一个矩形边框线,利用outtextxy()函数将预先存储在str1 中的字符串中的字符输出,因为outtextxy()输出的是字符串,所以先利用函数sprintf()将要输出的字符写入字符数组str2, 转变为字符串,然后输出。界面设置好后,首先在第一个按钮位置显示光标,此时可以移动和按下光标,当按下Alt+X 键时可以结束程序,否则执行循环判断移动的是哪个光标键,变量m 和n 记录光标位置,光标移动某个位置按回车后则程序判断所按的字符进行相应的处理:1 当所选为数字或小数点,则先判断是否为负数,如果是负数则将符号连接到字符串中,否则只连接所选的数字或小数点,并显示数据。2 当所选为“-” 时先判断有无操作数,没有则为负数,做负数标记,否则是做减法,做减法标志,并将当前的操作数保存3 当所选为”+”, “*”, “/”, “” ,”%”, 时处理方式一样均是先保存第一个操作数,做运算标志。准备接受第二个操作数4 当所选为“=” 时,根据运算符号标志值act 进行相应的运算,将结果显示。5. 当所选为“c” 时,表示清零,所以将第一和第二操作数均置0。6. 当所选为“Q” 时,则运算结束。数据和结果的显示仍然是用outtextxy()函数,并且利用填充二维矩形条覆盖前一次的输出.(6) arrow()设计图形鼠标函数由于在图形方式下,光标是不可见的,所以为了能正确地选择按钮,自己设计一个光标图形。方法是用fillpoly(8,raw)画一个由raw 所指向的数组中定义的8 个x、 y 坐标点所围成的封闭图形。用当前填充模式和颜色对该形状进行填充后形状像鼠标,利用函数imagesize()测试图像大小,分配内存区域,将图像保存,通过图像的读取函数getimage()和putimage()以及图像算子异或XOR_PUT 操作实现光标图像的显示和隐藏,同一位置两次异或,图像就消去了。(7) specialkey()读取特殊键函数利用函数bioskey(1)读取用户所按键的信息,int bioskey(int cmd) 函数原型在bios.h 中,功能是完成直接键盘操作。如果cmd 是0, bioskey()返回下一个在键盘键入的值(它将等待到按下一个键)。它返回一个16 位的二进制数,包括两种不同的值。当按下”普通键”时,它的低8 位数存放该字符的ASCII 码;对于“特殊键”,低8 位为0。 “特殊键”包括箭头键、功能键等高8 位字节存放该键的扫描码,所以程序中用到了语句key=bioskey(0), 表示返回下一个在键盘上按下的键,并保存在变量key 中,key=key&0xff?key&0xff:key>>8 ,对所按的键进行判断,如果key&0xff 为真,即低8 位不为0, 则说明按下的是普通键,因为 0xff 16 进制数代表的二进制码高8 位为0,低8 位为1。 和0 相与,结果为0, 和1 相与,结果保持原数。这样就将低8 位,也就是该字符的ASCII 码值赋给key, 如果key&0xff 为假,即低8 位为0 ,说明按下的是特殊键,将key 右移8 位后,也就是将其高8 位值赋给key。cmd 如果是1, bioskey()查询是否按下了一个键,当按下一个键时返回非0 值,否则返回0 值,所以用while(bioskey(1)=0) 语句等待按键。(8)程序的运行和退出1.运行 通过Tubro C安装路径找到TC2.0文件夹中的tc.exe文件,双击该文件,即可进入TC2.0环境。2.退出退出TC可以按F10键进入主菜单,选择File菜单下的Quit命令,再按回车键即可退出TC环境。(也可以在TC环境下直接按Alt+X键退出程序。这是TC环境下的热键) 第四章 程序测试程序调试是指对程序的查错和排错。为了便于查错、阅读,在设计该程序的过程中我们采用了结构化程序方法编辑,添加了尽可能多的注释,这就为接下来的调试过程带来了很多方便。经过仔细检查之后进行上机调试。进行编译,如果在编译和连接过程中发现错误,屏幕上显示了出错信息,根据提示找到出错的位置,加以改正,再进行编译如此反复,直到顺利通过编译和连接为止。在本次实习过程中碰到的编译、连接的错误主要有:缺少变量定义,定义位置不正确、语法错误、转义字符漏用、逻辑错误等。41 系统测试系统测试结果如下:输出:错误C:jisuanqibyjzj.TXT 183: 未定义的符号'LEFT'在 Run 函数中错误 C:jisuanqibyjzj.TXT 183: 需要用常量表达式在 Run 函数中错误: C:jisuanqibyjzj.TXT 393:main的宣告;开始编译文件: C:jisuanqibyjzj.TXT42 调试根据电脑所给的提示出现语法错误,缺少变量的定义大多的语法错误在通过书本参考下能够修改。主要是平时看书不仔细、不太注意而产生的。如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分号;在使用文件的时候忘记将文件先打开,对打开的方式与使用的情况不太注意而造成不匹配;还有漏掉形参的定义是值不能传递等等。这些语法错误有信息框的提示一般是能够排除的。另外还有部分注释的位置也错了,最重要的是逻辑上的错误,一般电脑不容易发现。所以更要对程序仔细的检查。经认真修改之后重新保存文件。4.3 错误原因分析一缺少变量定义,定义位置不正确由于该程序相对来讲稍有些长,前后有些变量不容易联系起来,但是在错误信息的提示下一般还是很容易找到。不过需要注意的是在定义的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置要特别留意。为减少这样的错误我后来还是用不同的变量名来表示,结果引起的那些错误解决了。例如: 未定义void mwindow(char *header); /*窗口函数*/ 或mwindow( "Calculator" ); /* 显示主窗口 */,所以输出void mwindow( char *header )中就有错误,因为缺少定义。语法错误大多的语法错误在通过书本参考下能够修改。主要是平时缺乏锻炼、不太注意而产生的。如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分号;在使用文件的时候忘记将文件先打开,对打开的方式4.4 错误原因分析二注释的位置程序设计中在注释的时候不能同我们平常写字一样随心所欲,我们应该注意注释的格式。注释中不能含有c语言可执行的语句!逻辑错误编译、连接的成功并不意味着程序的最终成功。逻辑上的错误机器不易检查出来,这时需要对数据结果进行分析。这种错误的查找是最难的,需要有相当的耐心和细心去把问题找出来。这也是本次程序编辑过程中碰到的最大的难题。往往运行之后得不到另人满意的结果,此时解决的方法一则用“分段检查”的方法,在程序的不同位置设几个printf函数语句,输出有关变量的值,逐段往下检查,对检查出的错误进行修改,当调试完毕将设置的printf都删去。若在程序中找不到问题,则再来考虑算法是否逻辑严谨,再进行修改。如此循环往复,直到最后程序运行成功。在本次程序编辑过程中,我就是常遇到编译能通过,能够运行程序,但是总在输入、删除等操作完之后再想去看数据文件中存在的数据记录的时候,却一条记录也显示不出来,可能是对n变量的定义或使用出错了,于是在每个主要函数的操作过程中添加了printf语句用来显示n的变化,在执行某个函数前添加插入语句显示n的起始值,在执行完该个函数后再添加插入语句显示此时n的结果值,观察n的变化是否正确,如果错误了,也就说明该函数编写过程有错。诸如这样的调试方法,不断缩小检查范围,最后将错误找到,进行修改。所以到最后我找到了错误,及时改正,终于把程序完成了,一切功能显示正常。第五章 用户使用说明书 51 运行Turbo C程序进入计算器界面通过他Tubroc 的路径找到TC文件夹找到TC文件夹中的tc.exe文件,并用鼠标双击该文件名进入TC环境。打开jisuanqibyjzj.c文件52 计算器的使用 基本使用:用控制鼠标图形移动,当移动到相应得按钮时按回车键输入当前数字或执行对应的函数。加法:输入一个被加数数,按“+”,输入被加数,按“=”,输出结果。减法:输入被减数数,按“-”,输入减数,按“=”,输出结果。乘法: 输入一个数,按“*”,输入另个数,按“=”,输出结果。除法: 输入一个被除数,按“+”,输入另个除数,按“=”,输出结果。求x的y次方: 输入数x,按“”,输入数y,按“=”,输出结果。53 退出程序退出TC可以按F10键进入主菜单,选择File菜单下的Quit命令,再按回车键即可退出TC环境。(也可以在TC环境下直接按Alt+X键退出程序。这是TC环境下的热键) 第六章 心得体会及总结经过了一个星期的c语言程序设计终于在老师的细心指导和同学的热情帮助下基本完成了计算器课题的设计修改任务,虽然有些地方不尽如人意但是初步达到了对自己的要求。刚开始设计的时候找不到头绪,不知道该从哪里下手,通过向同学询问和向老师寻求帮助找走进了设计的门槛。通过网上查找到很多成功的计算器程序,通过对那些已经成功地程序进行分析找到自己的设计思路,制定设计流程。并通过比较各种程序了解各个程序的利弊,从而明确自己计算器的设计方向和如何通过技术手段达到自己的目的。万事开头难,可是对于并不是很熟悉的c语言在下面的工作中困难处处能遇见.通过查找c语言教材去图书馆查找相关的资料和同学一起讨论终于把一个个棘手的陌生的问题解决。测试阶段中发现了几处错误导致程序不能编译,通过耐心的分析源代码终于编好了一个完整无误的程序。编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强破自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。 在这次的c语言程序设计实习中遇到了现实编程中必然见到的问题通过这些问题的解决积累了编程的实践经验。在实际的编程操作中发现自己c语言知识的不足,加深了对c语言的理解。在学习之余体验到收获的感觉。同时认识到程序员的工作并不是我们想象的那么简单轻松的,在现在的编程中要有足够的耐心和热情。通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前! 附: 源程序#include <dos.h> /*DOS接口函数*/#include <math.h> /*数学函数的定义*/#include <conio.h> /*屏幕操作函数*/#include <stdio.h> /*I/O函数*/#include <stdlib.h> /*库函数*/#include <stdarg.h> /*变量长度参数表*/#include <graphics.h> /*图形函数*/#include <string.h> /*字符串函数*/#include <ctype.h> /*字符操作函数*/#define UP 0x48 /*光标上移键*/#define DOWN 0x50 /*光标下移键*/#define LEFT 0x4b /*光标左移键*/#define RIGHT 0x4d /*光标右移键*/#define ENTER 0x0d /*回车键*/void *rar; /*全局变量,保存光标图象*/struct palettetype palette; /*使用调色板信息*/int GraphDriver;/* 图形设备驱动*/int GraphMode;/* 图形模式值*/int ErrorCode;/* 错误代码*/int MaxColors;/* 可用颜色的最大数值*/int MaxX, MaxY;/* 屏幕的最大分辨率*/double AspectRatio;/* 屏幕的像素比*/void drawboder(void); /*画边框函数*/void initialize(void); /*初始化函数*/void computer(void); /*计算器计算函数*/void changetextstyle(int font, int direction, int charsize); /*改变文本样式函数*/void mwindow(char *header); /*窗口函数*/int specialkey(void) ; /*获取特殊键函数*/int arrow(); /*设置箭头光标函数*/*主函数*/int main() initialize();/* 设置系统进入图形模式*/ computer();/*运行计算器*/ closegraph();/*系统关闭图形模式返回文本模式*/ return(0); /*结束程序*/* 设置系统进入图形模式*/void initialize(void) int xasp, yasp;/* 用于读x和y方向纵横比*/ GraphDriver = DETECT; /* 自动检测显示器*/ initgraph( &GraphDriver, &GraphMode, "" );/*初始化图形系统*/ ErrorCode = graphresult();/*读初始化结果*/ if( ErrorCode != grOk ) /*如果初始化时出现错误*/ printf("Graphics System Error: %sn", grapherrormsg( ErrorCode ) ); /*显示错误代码*/ exit( 1 ); /*退出*/ getpalette( &palette );/* 读面板信息*/ MaxColors = getmaxcolor() + 1;/* 读取颜色的最大值*/ MaxX = getmaxx(); /* 读屏幕尺寸*/ MaxY = getmaxy(); /* 读屏幕尺寸*/ getaspectratio( &xasp, &yasp );/* 拷贝纵横比到变量中*/ AspectRatio = (double)xasp/(double)yasp;/* 计算纵横比值*/*计算器函数*/void computer(void) struct viewporttype vp; /*定义视口类型变量*/ int color, height, width; int x, y,x0,y0, i, j,v,m,n,act,flag=1; float num1=0,num2=0,result; /*操作数和计算结果变量*/ char cnum5,str220="",c,temp20="" char str1="1230.456+-789*/Qc=%"/* 定义字符串在按钮图形上显示的符号 */ mwindow( "Calculator" ); /* 显示主窗口 */ color = 7; /*设置灰颜色值*/ getviewsettings( &vp ); /* 读取当前窗口的大小*/ width=(vp.right+1)/10; /* 设置按钮宽度 */ height=(vp.bottom-10)/10 ; /*设置按钮高度 */ x = width /2; /*设置x的坐标值*/ y = height/2;/*设置y的坐标值*/ setfillstyle(SOLID_FILL, color+3); bar( x+width*2, y, x+7*width, y+height ); /*画一个二维矩形条显示运算数和结果*/ setcolor( color+3 ); /*设置淡绿颜色边框线*/ rectangle( x+width*2, y, x+7*width, y+height ); /*画一个矩形边框线*/ setcolor(RED); /*设置颜色为红色*/ outtextxy(x+3*width,y+height/2,"0."); /*输出字符串"0."*/ x =2*width-width/2; /*设置x的坐标值*/ y =2*height+height/2; /*设置y的坐标值*/ for( j=0 ; j<4 ; +j ) /*画按钮*/ for( i=0 ; i<5 ; +i ) setfillstyle(SOLID_FILL, color); setcolor(RED); bar( x, y, x+width, y+height ); /*画一个矩形条*/ rectangle( x, y, x+width, y+height ); sprintf(str2,"%c",str1j*5+i); /*将字符保存到str2中*/ outtextxy( x+(width/2), y+height/2, str2); x =x+width+ (width / 2) ;/*移动列坐标*/ y +=(height/2)*3;/* 移动行坐标*/ x =2*width-width/2; /*复位列坐标*/ x0=2*width; y0=3*height; x=x0; y=y0; gotoxy(x,y); /*移动光标到x,y位置*/ arrow(); /*显示光标*/ putimage(x,y,rar,XOR_PUT); m=0; n=0; strcpy(str2,""); /*设置str2为空串*/ while(v=specialkey()!=45) /*当压下Alt+x键结束程序,否则执行下面的循环*/ while(v=specialkey()!=ENTER) /*当压下键不是回车时*/ putimage(x,y,rar,XOR_PUT); /*显示光标图象*/ if(v=RIGHT) /*右移箭头时新位置计算*/ if(x>=x0+6*width) /*如果右移,移到尾,则移动到最左边字符位置*/ x=x0; m=0; else x=x+width+width/2; m+; /*否则,右移到下一个字符位置*/ if(v=LEFT) /*左移箭头时新位置计算*/ if(x<=x0) x=x0+6*width; m=4; /*如果移到头,再左移,则移动到最右边字符位置*/ else x=x-width-width/2;m-; /*否则,左移到前一个字符位置*/ if(v=UP) /*上移箭头时新位置计算*/ if(y<=y0) y=y0+4*height+height/2;n=3; /*如果移到头,再上移,则移动到最下边字符位置*/ else y=y-height-height/2; n-; /*否则,移到上边一个字符位置*/ if(v=DOWN) /*下移箭头时新位置计算*/ if(y>=7*height) y=y0; n=0; /*如果移到尾,再下移,则移动到最上边字符位置*/ else y=y+height+height/2;n+; /*否则,移到下边一个字符位置*/ putimage(x,y,rar,XOR_PUT); /*在新的位置显示光标箭头*/ c=str1n*5+m; /*将字符保存到变量c中*/ if(isdigit(c)|c='.') /*判断是否是数字或小数点*/ if(flag=-1) /*如果标志为-1,表明为负数*/ strcpy(str2,"-"); /*将负号连接到字符串中*/ flag=1; /*将标志值恢复为1*/ sprintf(temp,"%c",c); /*将字符保存到字符串变量temp中*/ strcat(str2,temp); /*将temp中的字符串连接到str2中*/ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); outtextxy(5*width,height,str2); /*显示字符串*/ if(c='+') num1=atof(str2); /*将第一个操作数转换为浮点数*/ strcpy(str2,""); /*将str2清空*/ act=1; /*做计算加法标志值*/ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); outtextxy(5*width,height,"0."); /*显示字符串*/ if(c='-') if(strcmp(str2,"")=0) /*如果str2为空,说明是负号,而不是减号*/ flag=-1; /*设置负数标志*/ else num1=atof(str2); /*将第二个操作数转换为浮点数*/ strcpy(str2,""); /*将str2清空*/ act=2; /*做计算减法标志值*/ setfillstyle(SOLID_FILL,color+3); bar(2*width+width/2,height/2,15*width/2,3*height/2); /*画矩形*/ outtextxy(5*width,height,"0."); /*显示字符串*/ if(c='*') num1=atof(str2); /*将第二个操作数转换为浮点数*/ strcpy(str2,""); /*将

    注意事项

    本文(计算器课程设计.doc)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开