版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程名稱:C語言程序設(shè)計(jì)
課題名稱:簡(jiǎn)易計(jì)算器
80S
00
00S
00
班級(jí):
學(xué)號(hào):
姓名:
指導(dǎo)老師:
成績(jī):
一、課程設(shè)計(jì)目的
1.通過這次的課程設(shè)計(jì),鞏固此前所學(xué)的知識(shí):
1)深入熟悉了多種語句,如宏定義語句,語句的嵌套等等。
2)對(duì)次序,選擇,循環(huán)構(gòu)造的綜合運(yùn)用。
3)深入鞏固了某些算法,如求四則混合運(yùn)算,三角函數(shù),指對(duì)數(shù)H勺算法。
2.在課程設(shè)計(jì)的過程中,拓展了自己的知識(shí)面,懂得我們所學(xué)過H勺C語言知識(shí)不過
是很少H勺一部分。尚有諸多知識(shí)等待我們自己去學(xué)習(xí)。
3.為了完善自己的程序,通過上網(wǎng),查閱圖書等途徑學(xué)到了某些新的知識(shí),如對(duì)C
語言中某些常用圖形函數(shù)口勺應(yīng)用。
4.通過課程設(shè)計(jì),加深對(duì)構(gòu)造化程序設(shè)計(jì)思想的理解,能進(jìn)行一種系統(tǒng)功能需求分
析,并設(shè)計(jì)合理的I模塊化構(gòu)造。
5.通過課程設(shè)計(jì),提高程序開發(fā)能力,能運(yùn)用合理日勺控制流編寫清晰高效的程序。
二、設(shè)計(jì)內(nèi)容
我設(shè)計(jì)口勺是一款簡(jiǎn)易計(jì)算器,界面清晰,操作以便,它能實(shí)現(xiàn)如下功能:
1.查詢當(dāng)時(shí)時(shí)間
2.簡(jiǎn)樸的四則混合運(yùn)算(支持小括號(hào)、優(yōu)先級(jí))
3.正弦、余弦函數(shù)計(jì)算
4.指對(duì)數(shù)計(jì)算
三、總體設(shè)計(jì)
簡(jiǎn)樸計(jì)算器由六大模塊構(gòu)成,模塊調(diào)用圖如下:
Main()
1.主函數(shù)voidmain()
功能:調(diào)用各個(gè)重要模塊,實(shí)現(xiàn)簡(jiǎn)樸計(jì)算器日勺整體功能。
2.主界面函數(shù)voidZhuJicMianO
功能:使用有關(guān)圖形函數(shù)模擬出可視化H勺計(jì)算器外觀界面,并提供顧客輸入窗口。
3.時(shí)鐘函數(shù)intTimeO
功能:在模擬的可視化計(jì)算器中顯示當(dāng)時(shí)的時(shí)間。
4.四則混合運(yùn)算函數(shù)voidSiZeHunHeYunSuan0
功能:實(shí)現(xiàn)簡(jiǎn)樸附加減乘除混合運(yùn).算,并支持優(yōu)先級(jí)和帶括號(hào)的運(yùn)算。
5.三角運(yùn)算函數(shù)voidSanJiaoYunSuanO
功能:實(shí)現(xiàn)基本的三角函數(shù)運(yùn)算:sin(x)和8s(x)。
6.指對(duì)數(shù)函數(shù)voidZhiDuiShuYunSuan()
功能:實(shí)現(xiàn)基本的指數(shù)和對(duì)數(shù)運(yùn)算。
四、詳細(xì)設(shè)計(jì)
a)數(shù)據(jù)構(gòu)造設(shè)計(jì):
包括附子函數(shù)的函數(shù)原型:
voidSiZchunhcYunSuanJicMian();用「制作界面
char*readstrO;將輸入的持續(xù)單個(gè)字符整合成一種完整的串,并返回其首
地址
doubleyunsuan(doubleshul,doubleshu2,charoption);對(duì)shul和shu2
的簡(jiǎn)樸加減乘除運(yùn)算,并返回運(yùn)算成果
Intpriority(charleft,charright);判斷左符、右符區(qū)I優(yōu)先級(jí)誰高,若右
不小于左,返回正值,否則返回負(fù)值
doublecompute(char*p);傳入體現(xiàn)式串的首地址,返回體現(xiàn)式之值
3.三角運(yùn)算:voidSanJiaoYunSuan()
包括附子函數(shù)的函數(shù)原型;
voidSanJiaojieMian();用于制作界面。
doubleiiudu(doublex);把接受到的實(shí)數(shù)粒化為弧度返回。
doubletodouble(char*p);將字符串轉(zhuǎn)化為實(shí)數(shù)。
doubleread();將持續(xù)輸入的字符整合成一種浮點(diǎn)數(shù)并在屏
幕上逆向輸出將其返回。
doublesin(doublex);求sinx,實(shí)數(shù)型參數(shù),返回實(shí)數(shù)型值。
doublecos(doublex);求cosx,實(shí)數(shù)型參數(shù),返【口I實(shí)數(shù)型值。
4.指對(duì)數(shù)運(yùn)算:voidZhiDuiShuYunSuanO
包括的子函數(shù)U勺函數(shù)原型:
voidZhiDuiShuJieMianO;用于制作界面。
doubleread();將持續(xù)輸入的字符整合成?種浮點(diǎn)數(shù)
在屏幕上逆向輸出將其返回。
doubleexp(doublex);求e『Jx次方,返回雙精度實(shí)數(shù)值。
doubleInx(doublex);求InxH勺值,返回雙精度實(shí)數(shù)值。
c)流程圖:
1.主函數(shù)的流程圖:
調(diào)用主界面函數(shù)
2.優(yōu)先級(jí):
intl[J={4,4,6,6,2,10,0}:
yes
yno
yes
xiang=sign*(fz/fm);
4.In函數(shù):
yes
no
五、調(diào)試與測(cè)試
碰到日勺問題:
1.計(jì)算器的)界面不會(huì)做,有時(shí)數(shù)字顯示在邊框外面。
2.時(shí)鐘顯示不出來。
3.編寫In函數(shù)碰到困難。
采用的處理措施:
1.去圖書館借有關(guān)圖書,上網(wǎng)查資料,通過自己的閱讀,研究,不停的嘗試,運(yùn)行,修改,
最終做出了簡(jiǎn)樸H勺界面,但仍存在諸多局限性H勺地方,只能模擬出大體口勺外觀,沒能模擬出
計(jì)算器中的各個(gè)鍵。
2.查在界面顯示的函數(shù)原型,對(duì)比自己口勺程序,不停修改,對(duì)比,調(diào)試,檢查,反思,最終
發(fā)現(xiàn)是語句次序錯(cuò)誤,顯示寫在了判斷口勺背面,修改成功。
3.在編寫In函數(shù)的時(shí)候,碰到很大困難,最終通過查閱資料,向他人請(qǐng)教編寫出了函數(shù)。
界面截圖及有關(guān)闡明:
主界面:
NeleoneToUseThisCaculator:
Itsfunctionsisasfo1lows:
1CurrentTine
2Sizehunhe<junsuan
3Sanjiaouunsuan
4Zhiduishu<junsuan
5Quit
Pleasechooseanorder:
按1:進(jìn)入時(shí)鐘界面按2:進(jìn)入四則混合運(yùn)算界面按3:進(jìn)入三角函數(shù)運(yùn)算界面
按4:進(jìn)入指對(duì)數(shù)運(yùn)算界面按5:退出程序
時(shí)鐘界面械圖:
先按一下s鍵,并輸入體現(xiàn)式之后U勺四則混合運(yùn)算界面截圖:
inputexpressions
representstart
spaserepresent
drepresentQUit
Pleasechooseanorder
運(yùn)算成果截圖:
先按一下S鍵,并輸入數(shù)字的三角函數(shù)界面截圖:
Pleasechooseanorderandthen
inputdatas:
srepresentsinx
crepresentcosx
representto__zero
qrepresentQUit
Pleasechooseanorder:
運(yùn)算成果截圖:
先按一下e鍵,并輸入數(shù)字的指對(duì)數(shù)運(yùn)算界面截圖:
Pleasechooseanorderandthen
inputdatas:
0represent€SXR<x>
1representln<x)
spaserepresentto_zero
qrepresentQUit
Pleasechooseanorder:
運(yùn)算成果截圖:
按空格鍵,再按1鍵,并輸入數(shù)字H勺指對(duì)數(shù)運(yùn)算界面截圖:
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);/*工作區(qū)*/
#definePI3.1415926
doublehudu(doublex);/*把輸入時(shí)數(shù)轉(zhuǎn)化為弧度*/
voidZhuJieMian();
voidTimeJieMianO;
voidSiZehunheYunSuanJieMian();
voidSanJiaoJieMian();
voidZhiDuiShuJicMian();
doubleto_double(char*p);
doubleread();/*將讀到口勺數(shù)字整和成實(shí)數(shù)*/
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()/*將讀到的數(shù)字整和成實(shí)數(shù)*/
{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);/*不停刷系刷新屏幕以顯現(xiàn)出逆向輸出*/
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時(shí)次方*/
{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;/*截取一種數(shù)字*/
)
elseif(j==0){op[j++j=c;c=pll++];}
else
{if(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 重癥醫(yī)學(xué)科護(hù)理題庫(kù)及答案解析
- 陪酒管理制度規(guī)范
- 統(tǒng)一規(guī)范請(qǐng)假制度
- 軍休所內(nèi)控制度規(guī)范
- 部門主管行為規(guī)范制度
- 足球場(chǎng)地規(guī)范管理制度
- 各單位升旗制度規(guī)范
- 衛(wèi)生室診療規(guī)范制度
- 食品廠著裝規(guī)范制度
- 客房行為規(guī)范制度
- 醫(yī)務(wù)科科長(zhǎng)年度述職報(bào)告課件
- 2026年及未來5年市場(chǎng)數(shù)據(jù)中國(guó)EPP保溫箱行業(yè)市場(chǎng)調(diào)研及投資戰(zhàn)略規(guī)劃報(bào)告
- 2025錦泰財(cái)產(chǎn)保險(xiǎn)股份有限公司招聘理賠管理崗等崗位54人(公共基礎(chǔ)知識(shí))綜合能力測(cè)試題附答案解析
- 2025浙江寧波象山縣水質(zhì)檢測(cè)有限公司招聘及對(duì)象筆試歷年參考題庫(kù)附帶答案詳解
- 四川農(nóng)商銀行2026年校園招聘1065人考試題庫(kù)附答案
- 大仲馬課件教學(xué)課件
- 2025至2030尿素硝酸銨(UAN)行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 集團(tuán)公司年度經(jīng)營(yíng)狀況分析報(bào)告
- 2025蜀道集團(tuán)下屬四川金通工程試驗(yàn)檢測(cè)有限公司招聘18人考試參考題庫(kù)附答案解析(奪冠)
- 2025四川長(zhǎng)江擔(dān)保集團(tuán)有限公司下屬子公司宜賓和正融資擔(dān)保有限公司第三批員工招聘1人筆試歷年參考題庫(kù)附帶答案詳解
- 浙江省臺(tái)金七校聯(lián)盟2025-2026學(xué)年高一上學(xué)期11月期中聯(lián)考語文試題含答案
評(píng)論
0/150
提交評(píng)論