1、完整版C语言毕业课程设计语言代码简易计算器设计定稿单 位 电气与电子工程 分院(系)专 业 电气与电子工程 学 号 学生姓名 彭东林 指导教师 刘辉 完成日期 年 月 日摘 要课程设计语言类课程的指导思想:使学生通过学习高级编程语言的知识、编程技术和基本算法,掌握课程设计的思想和方法,具备利用计算机求解实际问题的能力,能灵活运用高级语言进行程序设计。其实认真学习一门语言并不难,关键是所追求的学习方法和途径。通过C语言程序设计,可以使我们掌握软件开发过程的难题分析、系统设计、程序编码、测试程序等基本方法和技能。同时,还能加强我们的时间管理意识,锻炼对难题的发现、分析和处理能力。我认为遇到难题并不
2、可怕,可怕的是你不去解决,这可能是C语言课程设计的主要目的之一。现时学习生活中,常会遇到一些数目较大数据繁杂的数值运算,徒手运算起来很困难,这时候我们就必须用到计算器。人们对计算的要求不断提高,普通的功能简单的仅能进行四则运算的计算工具已经不能满足需要,需要一种能进行多种计算。现在已经有一些功能较为强大、涵盖面较广的计算软件,而且各种平台的小工具仍不断出现。这些大大方便了我们的生活给我们更多的选择和实现方式。本程序的编写基础是Tubro C2.0汉化版,它在tubro c的原有基础上实现了多汉字的支持方便了我们的使用。生成的程序可移植性强兼容性好稳定!本程序实现了加、减、乘、除、求幂、求模,求
3、平方根,求Sin,求Cos,求Log10,求阶乘,取整,求正切,以及进制之间的相互转换。它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。但是,每次只能运算一个表达式,按 CE清空后再计算下一组式子。本程序在进制转换方面有一些漏洞,但一般的进制转换结果还是准确的。关键字:C语言程序设计 基本算法 高级编程语言 思想和方法 计算器Tubro c 2.0汉化版 第1章 选题的意义 41.1 自我介绍 41.2 选题 4第2章 系统功能需求分析 52.1系统的基本要求 52.2 数据结构和用法 5第3章 系统设计 6第4章 系统实现 7第5章 总结 8第1章 选题的意义1.
4、1 自我介绍我的名字是彭东林,就读于石家庄铁道大学,电0905-2班,电气与电子工程分院。1.2 选题1. 我选的题目是:简单计算器的设计2. 我选这道题的原因如下: 计算器对我们每一的学生都很熟悉,从初中到高中再到大学。但是我们只知道按下几个按钮计算器便会显示出结果,很少有学生分析过计算器究竟是如何运行的。C语言课程设计便是一个很好的机会,让我去亲自写计算器的运行代码,尽管是简单计算器的设计,但其背后的知识那是相当多的,对我是个挑战,我接受!3. 运用的数据结构和知识点TuborC 绘图知识 数学函数 选择结构 循环结构 数组 指针 顺序结构 进制间的转换 4. 时间安排5. 主要参考文献:
5、 C语言绘图与计算机仿真技术 王强如 北京航空航天大学1科 钦.C语言程序设计.北京:电子工业出版社,1987:56-58 2徐君毅.C语言程序设计基础.上海:复旦大学出版社,1992:87-983李成付.C语言程序设计基础.北京:科学出版社,1992:42-674郝玉洁.C语言程序设计.北京:机械工业出版社,2000:63-885钱启平.C语言程序设计基础.北京:中国铁道出版社,2000:91-996李大友.C语言程序设计基础.北京:清华大学出版社,1999:58-987黄迪明.C语言程序设计.北京:电子科技大学出版社,1998:78-988姜仲秋.C语言程序设计基础.南京:南京大学出版社,
6、1998:16-1009李国昌.C语言程序设计基础.北京:科学出版社,1998:78-12010谭浩强.C语言程序设计.北京:清华大学出版社,2000:74-129第2章 系统功能需求分析2.1系统的基本要求1. 算术运算功能。能够实现+、-、*、mod、int运算。2. 函数运算功能。能够实现exp、ln、sin、xy、log、cos、x3、n!、tan、x2、1x等运算。3. 进制之间的转换功能。能够实现十六、十、二、八进制数据之间的转换。4.通过键盘控制字符和数字的输入。2.2数据结构设计及用法说明此程序调用的函数主要有2”,输出二进制结果。十进制转八进制:输入一个十进制数,按“10-8
7、”,输出八进制结果。八进制转十进制:输入一个八进制数,按“10-8”,输出十进制结果。第3章 系统设计第4章 系统实现本系统采用 C语言开发,生成可执行文件在任何系统下都可以执行,具有很好的数据处理能力和稳定性。并且使用Turbo C 2.0汉化版在原有基础上实现了多汉字的支持,方便了我们的使用。生成的程序可移植性强、兼容性好。这个系统是基于软件发展的生命周期来研制的,它可以直接输入数学表达式,不需要任何转换,就可以直接输出数学四则运算的结果。本程序通过调用int specialkey(void) 和#include =595) x=x0; m=0; else x=x+40; m+; if(v
8、=LEFT) *向左* if(x=x0) x=595; m=8-1; else x=x-40; m-; if(v=UP) *向上* if(y=410) y=y0; n=0; else y=y+50; n+; putimage(x,y,rar,XOR_PUT); c=str1n*8+m; if(isxdigit(c)|c=.) *判断是否是十六进制的数字、字母或小数点* if(flag1=-1) *flag1为负数标志* strcpy(str2,-); flag1=1; sprintf(temp,%c,c);*将字符保存到字符串变量temp中* strcat(str2,temp); *将temp
9、中的字符串连接到str2中* if(flag2=1) *flag2为填充x或y的标志* setfillstyle(1,3); bar(9);*填充x* setcolor(5); outtextxy(x=); outtextxy(str2);*显示字符串x的值* if(flag2=0) setcolor(6); setfillstyle(1,3); bar(9); *填充y* outtextxy(y=); outtextxy(str2);*显示字符串y的值* flag2=1; if(c=+) num1=atof(str2);*将第一个操作数转换为浮点数* strcpy(str2,); *清空st
10、r2* act=1; setfillstyle(1,6); setcolor(9); bar(9); outtextxy(+); *显示+* flag2=0; if(c=-) if(strcmp(str2,)=0) flag1=-1; else num1=atof(str2); strcpy(str2,); *将str2清空* act=2; *做计算减法标志值* setfillstyle(1,6); setcolor(9); bar(9); outtextxy(-); *显示-* flag2=0; if(c=*) num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(
11、str2,); *将str2清空* act=3; *做计算乘法标志值* setfillstyle(1,6); setcolor(9); bar(9); outtextxy(*); *显示* flag2=0; if(c=) num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,); *将str2清空* act=4; *做计算除法标志值* setfillstyle(1,6); setcolor(9); bar(9); outtextxy(); *显示* flag2=0; if(c=Q) num1=atof(str2); *将第二个操作数转换为浮点数* strcp
12、y(str2,); *将str2清空* act=7; *做计算除法标志值* setfillstyle(1,6); setcolor(9); bar(9); outtextxy(x2); *显示x2* flag2=0; if(c=H) num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,); *将str2清空* act=5; *做计算除法标志值* setfillstyle(1,6); setcolor(9); bar(9); outtextxy(xy); *显示xy* flag2=0; if(c=N) num1=atof(str2); *将第二个操作数转换为
13、浮点数* strcpy(str2,); *将str2清空* act=6; *做计算除法标志值* setfillstyle(1,6); setcolor(9); bar(9); outtextxy(x3); *显示x3* flag2=0; if(c=R) num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,); *将str2清空* act=8; *做计算除法标志值* setfillstyle(1,6); setcolor(9); bar(9); outtextxy(1x); *显示1x* flag2=0; if(c=S) if(flag3=0) num1=a
14、tof(str2); *将第二个操作数转换为浮点数* strcpy(str7,str2); strcpy(str2,); *将str2清空* act=28; *做计算除法标志值* setfillstyle(1,6); setcolor(9); bar(9); outtextxy(jz:16-10); *显示jz:16-10* flag3=0; flag5=0; else num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,); *将str2清空* act=9; *做计算除法标志值* setcolor(9); setfillstyle(1,6); bar(9
15、); outtextxy(sin); *显示sin* setcolor(6); setfillstyle(1,3); bar(9); *填充y* outtextxy(y=); flag2=0; if(c=M) num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,); *将str2清空* act=10; *做计算除法标志值* setfillstyle(1,6); setcolor(9); bar(9); outtextxy(cos); *显示cos* flag2=0; if(c=P) num1=atof(str2); *将第二个操作数转换为浮点数* strc
16、py(str2,); *将str2清空* act=11; *做计算除法标志值* setfillstyle(1,6); setcolor(9); bar(9); outtextxy(tan); *显示tan* flag2=0; if(c=I) num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,); *将str2清空* act=12; *做计算除法标志值* setfillstyle(1,6); setcolor(9); bar(9); outtextxy(log); *显示log* flag2=0; if(c=J) num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str2,); *将str2清空* act=13; *做计算除法标志值* setfillstyle(1,6); setcolor(9); bar(9); outtextxy(ln); *显示ln* flag2=0; if(c=T) if(flag3=0) num1=atof(str2); *将第二个操作数转换为浮点数* strcpy(str7,str2); strcpy(str2
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1