C语言课程设计--计算器(图形界面)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程设计--计算器(图形界面)
扬州大学
C语言课程设计报告题目一个简易计算器的设计与实现
班级
学号
姓名
指导教师
成绩
老师评语:
第 2 页共 14 页
第 3 页共 14 页
一、系统调试…………………………………………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)进一步考虑计算器外观设计,用可视化界面给出计算器外观、功能按键及输入界面。
使用说明:执行加法运算,'—'表示执行减法运算,表示执行乘法运算,'/'表
第 4 页共 14 页
示除法运算.‘Q’表示退出计算器‘C’表示清零,’=’表示得出结果'^'表示执行x的y次方,'e'表示执行e的x次方操作,'&'表示执行累加操作.,你可以可以用键盘上的上下左右键对光标进行移动,当光标移动到计算器按键上时,按ENTER即可执行该键的操作!最后按“=”则可得出结果。
3 课题设计的补充知识
本程序通过int specialkey(void)和#include
最后,不得不说说四则运算的算法,有两种方法可以实现:(1)利用堆栈实现四则运算(2)还可以用递归整数的四则运算。
sinx函数
#include
#include
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();
}
第 5 页共 14 页
cosx函数
#include
#include
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()进行计算器的计算功能,当计算器程序返回时,关闭图形系统,结束程序。
其系统模块图如下:
第 6 页共 14 页
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()设
第 7 页共 14 页