版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程名称:C语言程序设计
课题名称:简易计算器
80S
00
00S
00
班级:
学号:
姓名:
指导老师:
成绩:
一、课程设计目的
1.通过这次的课程设计,巩固此前所学的知识:
1)深入熟悉了多种语句,如宏定义语句,语句的嵌套等等。
2)对次序,选择,循环构造的综合运用。
3)深入巩固了某些算法,如求四则混合运算,三角函数,指对数H勺算法。
2.在课程设计的过程中,拓展了自己的知识面,懂得我们所学过H勺C语言知识不过
是很少H勺一部分。尚有诸多知识等待我们自己去学习。
3.为了完善自己的程序,通过上网,查阅图书等途径学到了某些新的知识,如对C
语言中某些常用图形函数口勺应用。
4.通过课程设计,加深对构造化程序设计思想的理解,能进行一种系统功能需求分
析,并设计合理的I模块化构造。
5.通过课程设计,提高程序开发能力,能运用合理日勺控制流编写清晰高效的程序。
二、设计内容
我设计口勺是一款简易计算器,界面清晰,操作以便,它能实现如下功能:
1.查询当时时间
2.简朴的四则混合运算(支持小括号、优先级)
3.正弦、余弦函数计算
4.指对数计算
三、总体设计
简朴计算器由六大模块构成,模块调用图如下:
Main()
1.主函数voidmain()
功能:调用各个重要模块,实现简朴计算器日勺整体功能。
2.主界面函数voidZhuJicMianO
功能:使用有关图形函数模拟出可视化H勺计算器外观界面,并提供顾客输入窗口。
3.时钟函数intTimeO
功能:在模拟的可视化计算器中显示当时的时间。
4.四则混合运算函数voidSiZeHunHeYunSuan0
功能:实现简朴附加减乘除混合运.算,并支持优先级和带括号的运算。
5.三角运算函数voidSanJiaoYunSuanO
功能:实现基本的三角函数运算:sin(x)和8s(x)。
6.指对数函数voidZhiDuiShuYunSuan()
功能:实现基本的指数和对数运算。
四、详细设计
a)数据构造设计:
包括附子函数的函数原型:
voidSiZchunhcYunSuanJicMian();用「制作界面
char*readstrO;将输入的持续单个字符整合成一种完整的串,并返回其首
地址
doubleyunsuan(doubleshul,doubleshu2,charoption);对shul和shu2
的简朴加减乘除运算,并返回运算成果
Intpriority(charleft,charright);判断左符、右符区I优先级谁高,若右
不小于左,返回正值,否则返回负值
doublecompute(char*p);传入体现式串的首地址,返回体现式之值
3.三角运算:voidSanJiaoYunSuan()
包括附子函数的函数原型;
voidSanJiaojieMian();用于制作界面。
doubleiiudu(doublex);把接受到的实数粒化为弧度返回。
doubletodouble(char*p);将字符串转化为实数。
doubleread();将持续输入的字符整合成一种浮点数并在屏
幕上逆向输出将其返回。
doublesin(doublex);求sinx,实数型参数,返回实数型值。
doublecos(doublex);求cosx,实数型参数,返【口I实数型值。
4.指对数运算:voidZhiDuiShuYunSuanO
包括的子函数U勺函数原型:
voidZhiDuiShuJieMianO;用于制作界面。
doubleread();将持续输入的字符整合成•种浮点数
在屏幕上逆向输出将其返回。
doubleexp(doublex);求e『Jx次方,返回双精度实数值。
doubleInx(doublex);求InxH勺值,返回双精度实数值。
c)流程图:
1.主函数的流程图:
调用主界面函数
2.优先级:
intl[J={4,4,6,6,2,10,0}:
yes
yno
yes
xiang=sign*(fz/fm);
4.In函数:
yes
no
五、调试与测试
碰到日勺问题:
1.计算器的)界面不会做,有时数字显示在边框外面。
2.时钟显示不出来。
3.编写In函数碰到困难。
采用的处理措施:
1.去图书馆借有关图书,上网查资料,通过自己的阅读,研究,不停的尝试,运行,修改,
最终做出了简朴H勺界面,但仍存在诸多局限性H勺地方,只能模拟出大体口勺外观,没能模拟出
计算器中的各个键。
2.查在界面显示的函数原型,对比自己口勺程序,不停修改,对比,调试,检查,反思,最终
发现是语句次序错误,显示写在了判断口勺背面,修改成功。
3.在编写In函数的时候,碰到很大困难,最终通过查阅资料,向他人请教编写出了函数。
界面截图及有关阐明:
主界面:
NeleoneToUseThisCaculator:
Itsfunctionsisasfo1lows:
1CurrentTine
2Sizehunhe<junsuan
3Sanjiaouunsuan
4Zhiduishu<junsuan
5Quit
Pleasechooseanorder:
按1:进入时钟界面按2:进入四则混合运算界面按3:进入三角函数运算界面
按4:进入指对数运算界面按5:退出程序
时钟界面械图:
先按一下s键,并输入体现式之后U勺四则混合运算界面截图:
inputexpressions
representstart
spaserepresent
drepresentQUit
Pleasechooseanorder
运算成果截图:
先按一下S键,并输入数字的三角函数界面截图:
Pleasechooseanorderandthen
inputdatas:
srepresentsinx
crepresentcosx
representto__zero
qrepresentQUit
Pleasechooseanorder:
运算成果截图:
先按一下e键,并输入数字的指对数运算界面截图:
Pleasechooseanorderandthen
inputdatas:
0represent€SXR<x>
1representln<x)
spaserepresentto_zero
qrepresentQUit
Pleasechooseanorder:
运算成果截图:
按空格键,再按1键,并输入数字H勺指对数运算界面截图:
Pleasechooseanorderandthen
inputdatas:
eexp<x)
1ln<x>
spaseto_zero
qquit
Pleasechooseanorder:
成果界面截图:
#includc<math.h>
#include<dos.h>
#include<stdio.h>
#include<string.h>
#include<graphics.h>
#include<conio.h>
#defineQINGLINGsetfillstyle(l,15);bar(195,80,445,130);outtextxy(435,120,"0")
#defineSHUCHUsetfillstyle(1,15);bar(195,80,445,130);setcolor(0);outtextxy(220,120,ch)
#defineJIEMIANsetfillstyle(l,7);bar(l65,40,475,400);/*底板*/setfillstyle(l,15);
bar(195,80,445,130);/*工作区*/
#definePI3.1415926
doublehudu(doublex);/*把输入时数转化为弧度*/
voidZhuJieMian();
voidTimeJieMianO;
voidSiZehunheYunSuanJieMian();
voidSanJiaoJieMian();
voidZhiDuiShuJicMian();
doubleto_double(char*p);
doubleread();/*将读到口勺数字整和成实数*/
doublesin(doublex);
doublecos(doublex);
doubleexp(doublex);/*e口勺次方*/
floatlnx(floalx);
char*readstr();
doubleyunsuan(doubleshuI,doubleshu2,charoption);
intpriority(charleft,charright);
doublecompute(char*p);
intTinic();
voidSiZchunhcYunSuanO:
doublesqrt(doublcx);
voidSanJiaoYunSuan();
voidZhiDuiShuYunSuan();
voidmain()
{charc;
ZhuJieMian();
c=getch();
while(c!='5')
{switch(c)
{caseT:Timc();break;
case'2':SiZehunheYunSuan();break;
case'3':SanJiaoYunSuan();break;
case'4':ZhiDuiShuYunSuan();break;
)
ZhuJieMian();
c=getch();
}
}
doublehudu(doublcx)
{return(x*PI/180.0);
voidZhuJieMian()
{intgdriver=DETECT.gmode;
initgrapli(&gdriver,&gmode,"");
JIEMIAN;
outtcxtxy(200,160,"WelcomeToUseThisCaculator:")
outtcxtxy(200,170,"Itsfunctionsisasfollows:");
outtcxtxy(2()(),21(),"lCurrentTime");
outtextxy(200,230,"2Sizehunheyunsuan");
oultex(xy(200,250,"3Sanjiaoyunsuan");
outtextxy(200,270,"4Zhiduishuyunsuan");
outtextxy(200,290,"5Quit");
outtextxy(200,310,"Pleasechooseanorder:");
voidTinicJieMianO
{intgdrivcr=DETECT,ginodc;
initgraph(&gdrivcr,&gmodc,"");
JIEMIAN;
outtcxtxy(20(),200,"qrepresentQuit");
voidSiZehunheYunSuanJieMian()
{intgdriver=DETECT,gmode;
inilgraph(&gdriver,&gmode,"");
setfillstyle(1,LIGHTGRAY);
JIEMIAN;
outtcxtxy(200,160,"Pleaseinputexpressions");
outtextxy(200,215/'sstart");
outtextxy(200,240,"spaseto_zero");
outtextxy(200,265/'qquit");
ouitextxy(200,310,"Pleasechooseanorder");}
voidSanJiaoJieMianO
{intgdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"");
setfillstyle(1,LIGHTGRAY);
JIEMIAN;
outtcxtxy(2()(),160/'Pleasechooseanorderandthen");
outtextxy(200,170,"inputdatas:");
outtcxtxy(2(X),210,”ssinx");
outtextxy(200,230,"ccosx");
oultexixy(200,250,"spaseto_zero");
outtextxy(200,270,"qquit");
outtextxy(200,310,"Pleasechooseanorder:");
}
voidZhiDuiShuJieMian()
{intgdrivcr=DETECT,gmodc;
initgraph(&gdriver,&gn】ode,"");
JIEMIAN;
oullextxy(200,160,"Pleasechooseanorderandthen");
outtexixy(200,170,"inpuidatas:");
oultex(xy(200,210,"eexp(x)");
outtextxy(200,230,"1ln(x)");
outtextxy(200,250,"spaseto_zero");
outtextxy(200,270,"qquit");
outtextxy(200.310,"Pleasechooseanorder:");
doubleto_doublc(char*p)
{inti,sign=l;
floati;
doublenum;
i=0;
if(p[i]==*-'){sign=-l;i++;J
num=0.0;
for(;p[i]<='9'&&p[i]>=,0*;i++)
num=num*lO.O+pliJ-'O';
for(i++,t=10.0;pliJ>='0'&&pli]<='9,;i++)
{num+=(p[iJ-,0')/t;
t*=10;)
retum(sign*num);
)
doubleread()/*将读到的数字整和成实数*/
{charc,a[81],ch[34];/*将读到的串先保留在a中*/
inti=0;
c=gctch();
while(c!=V)/*gctch(i只读取回车键『、J第一种回车符*/
{a[i++]=c;a[i]-\O';
setfillstyle(l,WHITE);
bar(l95,80,445,130);
sprintf(ch,"%28s,',a);
setcolor(BLACK);
outtextxy(220.120xh);/*不停刷系刷新屏幕以显现出逆向输出*/
c=getch();
)
rcturn(to_double(a));
)
doublesin(doublex)
{doublefz,l'ni,sinx=x,xiang;
intsign=-l,l;
xiang=x,fz=x,fm=l,t=l;
while(fabs(xiang)>1e-8)
{fz*=x*x;
fm*=(t+l)*(t+2);t+=2;
xiang=sign*(fz/fm);
sinx+=xiang;
sign=sign*(-l):
retum(sinx);
doublecos(doublex)
{doublefz,fm,cosx=l.xiang;
intsign="l,t;
xiang=x,fz=1,fm=1,t=0;
whilc(fabs(xiang)>1c-8)
{fz*=x*x;
fm*=(t+l)*(t+2);t+=2;
xiang=sign*(fz/fm);
cosx+=xiang;
sign=sign*(-l);
retuni(cosx);
doubleexp(doublex)/*e时次方*/
{doubles=1.(),xiang=1.0;
intt=l;
do{
xiang*=x/(t++);
s+=xiang;}
while(fabs(xiang)>le-6);
retuni(s);}
floatlnx(floatx)/*ln(x)*/
{ints=-1,n=0;
floaty=0,t=0,m=l;
if(x>0&&x<=l)
{do
{y+=t;
n++;
s=-s;
m*=(x-l);
l=m*s/n;
}while(fabs(t)>1e-6);
)
if(x>l)
{x=l/x;
do
{y+=t;
n++;
s=-s;
m*=(x-D;
t=m*s/n;
}while(fabs(t)>1e-6);
return0-y;
char*readstr()
{charc,a[81],ch[34];/小将读到W、J串先保留在a中V
inti=0;
c=getch();
while(c!=V)/*getch。只读取回车键的第一种回车符刃
{a[i++]=c;a[i]='=';a[i+1]-'\0';
setfillstyle(l,WHITE);
bar(l95,80,445,130);
sprintf(ch,"%28s,',a);
sctcolor(BLACK):
outtcxtxy(220,120,ch);
c=getch();
)
retum(a);
I
doubleyunsuan(doubleshukdoubleshu2,charoption)
{doublere=0;
switch(option)
{case'+':re=shu1+shu2;break;
case'-':re=shuI-shu2;break;
case'*':re=shu1*shu2;break;
case'/":re=shul/shu2;break;
)
returnre;
I
intpriority(charleft,charright)
{charoption[]={V;-'/*,X,(,,')',,=,);
inti,le,ri;
intl[]=<4,4,6,6,2,IO,O};
int川={3,3,5,5,9,30};
for(i=0;i<=7;i++)
{if(op(ion[i]==lef()le=l[i];
if(option[i1==right)ri=r[i];
)
retuni(ri-le);
)
doublecomputc(char*p)
{inti=0,j=0;
doubleshu[20],num=0;
charop[20],c;
int1=0;
c=p[l++];
while(c)
{if(c<=,9'&&c>='0'||c==7)
{while(c<='9'&&c>='0')
{num二num"0+(c-O);
c=p[l++];
if(c=='.')
{intt=10;
c=pll++J;
while(c<=,9'&&c>='01)
{num=num+(c-'O,)/t;
t*=10;
c=p[l++];
)
)
shu[i++]=nu:n;
num=O;/*截取一种数字*/
)
elseif(j==0){op[j++j=c;c=pll++];}
else
{if(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 压力容器安全文化测试
- 企业IT运维服务合同协议
- 慢阻肺患者肺康复依从性多维度干预策略
- 关于打击欺诈骗保专项治理自查自纠总结
- 2026年焊接工人岗前培训卷
- 城际配送货物配送服务协议
- 即时配送委托协议书
- 《劳动合同法》知识竞赛试题及答案
- 餐饮品牌授权协议
- 慢病防控:从急性期管理到慢性期管理
- 2025锦泰财产保险股份有限公司招聘理赔管理岗等岗位54人(公共基础知识)综合能力测试题附答案解析
- 光伏屋面施工专项安全方案
- 2026年黑龙江农业工程职业学院单招综合素质考试题库附答案
- 四川农商银行2026年校园招聘1065人考试题库附答案
- 2026年度交通运输部所属事业单位第三批统一公开招聘备考笔试试题及答案解析
- 2025秋学期六年级上册信息科技期末测试卷附答案(苏科版)
- 2026年广东省春季高考模拟数学试卷试题及答案
- 机械类中职学业水平考试专业综合理论考试题库(含答案)
- 国家职业技术技能标准 6-05-04-01 制鞋工 2024年版
- 广数980TD操作手册
- 年度供应商审核计划表
评论
0/150
提交评论