動(dòng)態(tài)函數(shù)圖像演示C語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告含源碼
《動(dòng)態(tài)函數(shù)圖像演示C語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告含源碼》由會(huì)員分享,可在線閱讀,更多相關(guān)《動(dòng)態(tài)函數(shù)圖像演示C語言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告含源碼(14頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 C語言課程?設(shè)計(jì)實(shí)驗(yàn)報(bào)?告 題 目:動(dòng)態(tài)函數(shù)圖?像演示 學(xué) 院:軟件學(xué)院 指 導(dǎo) 老 師: 學(xué) 號(hào): 姓 名: 2012年?9月3號(hào)—9月17日?
2、 一、實(shí)驗(yàn)題目及?要求 畫出函數(shù)y?=a*x^2+b*x+c 的曲線圖形? (1)設(shè)置對(duì)話框?確定函數(shù)參?數(shù) (2)設(shè)置對(duì)話框?確定曲線的?粗細(xì) (3)設(shè)置對(duì)話框?確定曲線的?顏色 (4)畫出一個(gè)小?人沿著曲線?軌跡移動(dòng),并畫出曲線?圖形 (5)將畫出的圖?形保存為j?pg格式,并要求可以?用其他看圖?軟件打開 二、程序主要流?程 (1)建立首界面?(即為進(jìn)入或?退出畫圖軟?件) (2)設(shè)定對(duì)話框?依次確定函?數(shù)參數(shù),
3、曲線粗細(xì),曲線顏色
(3)初始化畫圖?系統(tǒng)畫出坐?標(biāo)系與曲線?
(4)建立動(dòng)態(tài)畫?圖函數(shù)
(5)建立保存與?打開圖形的?函數(shù)
三、在程序中遇?到的困難及?解決方案
在構(gòu)建首界?面時(shí)運(yùn)用了?通過讀取鍵?盤值來控制?光標(biāo)的移動(dòng)?達(dá)到進(jìn)入或?退出看圖軟?件。在使用鍵盤?值時(shí),
由老師給出?的資料可以?得知
4、ey_e?nter 28 key_d?own 80為獲取?到的鍵盤值?。 例: int get_k?ey() /*設(shè)定鍵盤控?制*/ { union? REGS rg; rg.h.ah=0; int86?(0x16,&rg,&rg); retur?n rg.h.ah; getch?ar();
5、 } 在設(shè)置第一?個(gè)對(duì)話框時(shí)?,從TC-2.0函數(shù)軟件?查詢中搜查?到了 windo?w為建立字?符模式下的?矩形字符窗?口, textb?ackgr?ound為?設(shè)置字符模?式下的背景?顏色,textc?olor為?設(shè)置字符模?式下的字符?顏色,由此解決了?在 字符模式下?對(duì)話框背景?及字符的顏?色設(shè)置,gotox?y為將當(dāng)前?字符屏幕的?光標(biāo)位置移?動(dòng)到x,y坐標(biāo)位置?, gette?xt為保存?矩形屏幕上?的字符,putte?xt為將g?ettex?t函數(shù)保存?的字符恢復(fù)?到屏幕上,
6、由此解決了?在合
適的位置上?輸入字符的?問題。上述函數(shù)名?均在
7、畫時(shí)用到了?
8、 /*聲明一個(gè)文?件地址*/ char fileN?ame[20]; /*filen?ame代表?文件名被儲(chǔ)?存的所在數(shù)?組*/ windo?w(1,1,80,80); gotox?y(1,1); /*將當(dāng)前字符?屏幕的光標(biāo)?位置移動(dòng)到?(1,1)坐標(biāo)*/ print?f("\52 Input? The F
9、ile Name[.dat] To Be Saved?:"); /*輸入要被保?存圖像所在?的文件名并?儲(chǔ)存*/ scanf?("%s",fileN?ame); windo?w(1,1,80,80); if((fp=fopen?(fileN?ame,"w+"))==NULL) /*以讀寫的方?式打開文件?*/ { outte?xtxy(260,455,"Faile?d to open file!"); /* 圖形模式下?在x,y坐
10、標(biāo)位置?顯示一行字?符串*/ exit(0); } outte?xtxy(500,455,"savin?g..."); for(i=5;i<630;i++) /*保存像素到?文件*/ for(j=30;j<=445;j++) fputc?(getpi?xel(i,j),fp); fclos?e(fp); windo?w(1,1,
11、80,80); outte?xtxy(500,455,"Save Over!"); } 3、 心得體會(huì) 經(jīng)過了為期?一周的c語?言課程設(shè)計(jì)?后,我學(xué)到了很?多知識(shí)。以前總是注?重理論知識(shí)?,并沒有能夠?很好的掌握?這門課程。本次課設(shè)讓?我們進(jìn)行實(shí)?際操作的同?時(shí)還鞏固了?上一學(xué)期的?知識(shí),而且還加深?了對(duì)c語言?的熟練掌握?。但在這期間?也遇到了困?難,懂得了自己?掌握的知識(shí)?還不能夠靈?活運(yùn)用。課設(shè)讓我明?白了自己的?不足之處:缺乏實(shí)踐經(jīng)?驗(yàn)。所以要平時(shí)?應(yīng)該多多動(dòng)?手,鍛煉思維能?力,積累自己的?編碼經(jīng)
12、驗(yàn),為以后打好?堅(jiān)實(shí)的基礎(chǔ)?。
四、課設(shè)結(jié)果及?總結(jié)
執(zhí)行程序后?,結(jié)果無誤。畫圖程序可?通過對(duì)話框?來控制函數(shù)?參數(shù),曲線的粗細(xì)?,
曲線的顏色?。并畫出了動(dòng)?態(tài)的函數(shù)圖?像,而且能夠?qū)?圖像儲(chǔ)存到?文件中和打?開圖像
文件。在完成課設(shè)?時(shí),通過查閱資?料了解到了?很多以前沒?有接觸過的?函數(shù)名,學(xué)
習(xí)到了很多?新的知識(shí),而且已經(jīng)可?以熟練的應(yīng)?用它們來編?寫程序。但在編寫程?過
程中,出現(xiàn)了編寫?程序思路不?清晰的不足?之處,我會(huì)在以后?的學(xué)習(xí)中加?強(qiáng)這方面
的能力。
五、程序代碼及?注釋
#inclu?de 13、io?.h>
#inclu?de 14、e key_e?sc 1
#defin?e key_e?nter 28
int get_k?ey(); /*獲取鍵盤值?函數(shù)*/
int width? = 500, heigh?t = 500; /*圖形坐標(biāo)系?的大小*/
int left = 20, top = 20;
void save(); /*保存圖像函?數(shù)*/
void load(); /*打開圖像函?數(shù)*/
void main()
{ 15、
int m,n,radiu?s,form,hue,key,y; /*m,n 分別代表l?inest?yle數(shù)組?中的元素次?序和元素在?屏幕中的縱?坐標(biāo)*/
/*radiu?s代表所畫?曲線的粗細(xì)?*/
/* form代?表所畫曲線?的形式*/
/* hue代表?曲線的顏色? 16、*/
/* key代表?鍵盤值*/
/* y代表首頁?界面中字符?屏幕的縱坐?標(biāo)*/
int gdriv?er, gmode?, i, j,num,time; /*grive?r,gmode?代表初始化?圖形系統(tǒng)中?的變量*/
/*i,j代表構(gòu)建?坐標(biāo)系時(shí)表?格的寬度與?高度*/
/*num 17、代表?坐標(biāo)系中的?坐標(biāo)刻度*/
/*time代?表坐標(biāo)刻度?的縱軸刻度?*/
float? abc,ord,zong,hen,heng; /*abc代表?畫曲線時(shí)依?次取得的自?變量的值*/
/*ord代表?所畫曲線的?應(yīng)變量*/
/*zong,heng代?表曲線的頂?點(diǎn)坐 18、標(biāo)*/
char buf[20*20*4]; /*buf代表?緩沖區(qū)的存?儲(chǔ)量*/
char*homep?age[]={"Enter?","Exit"}; / *首界面的“進(jìn)入”與“退出*/
char*menu[]={"Param?eter ", "Thick?ness Of Curve?", "Color?"}; /*各個(gè)對(duì)話框?的內(nèi)容*/
char *argum?ent[]={ "value? of a ", "value? of b ", "value? of c "}; /*在第 19、一個(gè)對(duì)?話框中輸入?函數(shù)參數(shù)的?值*/
char *facto?r[]={"a","b","c"}; /* 函數(shù)參數(shù)的?儲(chǔ)存地址*/ /* char *lines?tyle[]={"SOLID?_LINE? = 0","DOTTE?D_LIN?E = 1","CENTE?R_LIN?E = 2","DASHE?D_LIN?E = 3","USERB 20、?IT_LI?NE = 4"}; /*在第二個(gè)對(duì)?話框中輸入?所畫曲線的?形式*/
char *color?[]={"black?","blue","green?","bluis?h green?","brown?","purpl?e","daris? yello?w", /*在第三 "gray"}; /*第三個(gè)個(gè) 21、對(duì)?話框中輸入?曲線的顏色?*/
textb?ackgr?ound(3); /*構(gòu)建首界面?*/ /* textc?olor(0); /*設(shè)置字符模?式下的字符?顏色*/
clrsc?r();
gotox?y(18,10);
print?f("THE SOFTW?ARE OF PICTU?RE 22、");
gotox?y(30,14);
print?f("%s",homep?age[0]);
gotox?y(30,16);
print?f("%s",homep?age[1]);
gette?xt(10,8,60,16,buf); /*保存矩形屏?幕上的字符?*/
key=0;
while?(1)
{ while?(biosk?ey(1)==0); /*讀取鍵盤值?*/
key=get_k?ey(); 23、 /*獲取鍵盤值?*/
if(key==key_e?nter&&y==16) exit(0); /*在首界面中?選擇“Exit”程序退出*/
if(key==key_u?p||key==key_d?own) /*設(shè)定鍵盤控?制光標(biāo)的移?動(dòng)得意實(shí)現(xiàn)?對(duì)“Enter?”或"Exit"的選擇*/
{
y=where?y(); /*得到字符模?式下窗口光?標(biāo)的y坐標(biāo)?數(shù)值*/
if(key==key_u?p) 24、 /*實(shí)現(xiàn)up鍵?盤控制光標(biāo)?上移的功能?*/
y=y==14? y-2:14;
if(key==key_d?own) /*實(shí)現(xiàn)dow?n鍵盤控制?光標(biāo)下移的?功能*/
y=y==16? y+2:16;
putte?xt(10,8,60,16,buf); /*將gett?ext函數(shù)?保存的字符?恢復(fù)到屏幕?上*/
gotox?y(30,y); /*將當(dāng)前字符? 25、屏幕的光標(biāo)?位置移動(dòng)到?(30,y)坐標(biāo)*/
if(y==14)
{
textb?ackgr?ound(0); /*設(shè)置字符模?式下的背景?顏色*/
textc?olor(6); /*設(shè)置字符模?式下的字符?顏色*/
gotox?y(30,y);
cprin?tf("%s",homep?age[0]);
}
if(y==16)
{
26、 textb?ackgr?ound(0);
textc?olor(6);
gotox?y(30,y);
cprin?tf("%s",homep?age[1]);
}
}
if(key==key_e?nter&y==14) /*實(shí)現(xiàn)選擇“Enter?”進(jìn)入程序的?功能*/
{ windo?w(1,1,80,25); /*建立字符模?式下的矩形?字符窗 27、口*/
clrsc?r();
textb?ackgr?ound(14);
textc?olor(0);
clrsc?r();
windo?w(12,6,70,20);
print?f("Pleas?e Input? The %s",menu[0]); /*關(guān)于函數(shù)參?數(shù)的對(duì)話框?*/
gotox?y(10,4); /*將當(dāng)前字符?屏幕的光標(biāo)?位置移動(dòng)到?(10,4)坐標(biāo)*/
28、
print?f("*********************");
for(m=0,n=6;m<3;m++,n++) /*實(shí)現(xiàn)依次輸?入函數(shù)參數(shù)?a,b,c的值并儲(chǔ)?存的功能*/
{
gotox?y(12,n);
print?f("\52 %s : ",argum?ent[m]);
scanf?("%d",facto?r[m]);
}
gotox?y(10,10); 29、 /*將當(dāng)前字符?屏幕的光標(biāo)?位置移動(dòng)到?(10,10)坐標(biāo)*/
print?f("*********************");
gotox?y(14,14); /*將當(dāng)前字符?屏幕的光標(biāo)?位置移動(dòng)到?(14,14)坐標(biāo)*/
print?f("\5 The Funct?ion Of Curve? : Y=%d*X^2+%d*X+%d ",*facto?r[0],*facto?r[1],*facto?r[2]);
30、 /*顯示出函數(shù)?的表達(dá)式*/
getch?();
clrsc?r();
windo?w(12,6,70,20);
print?f("Pleas?e Input? The %s",menu[1]); /*關(guān)于曲線形?式的對(duì)話框?*/
gotox?y(10,4); /*將當(dāng)前字符?屏幕 31、的光標(biāo)?位置移動(dòng)到?(10,4)坐標(biāo)*/
print?f("***********************");
for(m=0,n=6;m<5;m++,n++) /*實(shí)現(xiàn)依次輸?出曲線形式?的選項(xiàng)*/
{
gotox?y(12,n);
print?f("\52 %s ",lines?tyle[m]);
}
gotox?y(10,12); 32、 /*將當(dāng)前字符?屏幕的光標(biāo)?位置移動(dòng)到?(10,12)坐標(biāo)*/
print?f("***********************");
gotox?y(14,14);
print?f("\5 The Lines?tyle Of Curve? : "); /*實(shí)現(xiàn)輸入曲?線形式并儲(chǔ)?存的功能*/
scanf?("%d",&form);
if(form==4)
{
clrsc?r();
windo?w(12,6, 33、70,20);
print?f("Pleas?e Intpu?t The Thick?ness"); /*關(guān)于曲線粗?細(xì)的對(duì)話框?*/
gotox?y(10,4);
print?f("*********************");
gotox?y(12,6);
print?f("\52 norm_?width? = 1");
gotox?y(12,8);
print?f("\52 thick?_widt?h = 3") 34、;
gotox?y(10,10);
print?f("*********************");
gotox?y(19,14);
print?f("\5 The Thick?ness Of Curve? : "); / *實(shí)現(xiàn)輸入曲?線粗細(xì)并儲(chǔ)?存的功能*/
scanf?("%d",&radiu?s);
}
clrsc?r();
windo?w(12,6,70,20);
print?f( 35、"Pleas?e Input? The %s",menu[2]); /*關(guān)于曲線顏?色的對(duì)話框?*/
gotox?y(10,4); /*將當(dāng)前字符?屏幕的光標(biāo)?位置移動(dòng)到?(10,4)坐標(biāo)*/
print?f("*******************************************");
for(m=0,n=6;m<6;n++) /*輸出曲線顏?色的選 36、項(xiàng)*/
{
gotox?y(12,n);
print?f("\52 %d -- %s",m,color?[m]);
print?f(" \52 %d -- %s",m+1,color?[m+1]);
m=m+2;
}
gotox?y(12,9);
print?f("\52 6 -- %s",color?[6]);
print?f(" \52 7 -- %s",color?[7]);
gotox? 37、y(10,11);
print?f("********************************************");
gotox?y(19,14);
print?f("\5 The Color?s Num Of Curve? : "); /*實(shí)現(xiàn)輸入曲?線顏色并儲(chǔ)?存的功能*/
scanf?("%d",&hue);
gdriv?er = DETEC?T;
regis?terbg?idriv?er(EGAVG?A_dri?ver); 38、 /*注冊已連接?的圖形驅(qū)動(dòng)?器程序*/
initg?raph(&gdriv?er, &gmode?, ""); /*初始化圖形?系統(tǒng)*/
setco?lor(1); /*設(shè)置前景顏?色*/
for (i = left; i <= heigh?t * 2; i += 10) /*建立坐標(biāo)系?*/
{
lin 39、e(i, top, i, width? * 2);
}
for (i = top; i <= width? * 2; i += 10)
{
line(left, i, heigh?t * 2, i);
}
setco?lor(7); /*建立坐標(biāo)軸?*/
line(4,362.5,700,362.5); /*畫x軸直線? 40、*/
setco?lor(7);
line(300,10,300,500); /*畫y軸直線?*/
windo?w(1,1,100,100);
gotox?y(1,15); /*將當(dāng)前字符?屏幕的光標(biāo)?位置移動(dòng)到?(10,4)坐標(biāo)*/
print?f("\n\n\n\n");
for(num=15;num>0;num--) 41、 /*設(shè)定橫坐標(biāo)?軸上的負(fù)數(shù)?刻度*/
{
print?f("-%d",num);
}
for(num=0;num<18;num++) /*設(shè)定橫坐標(biāo)?軸上的正數(shù)?刻度*/
{
print?f(" %d",num);
}
windo?w(1,1,80,25);
print?f("\n\n");
for(num=21,time 42、=3;num>0;time++,num--) /*設(shè)定縱坐標(biāo)?軸上的刻度?*/
{
gotox?y(39,time);
print?f("%d\n",num);
}
gotox?y(39,25);
print?f("-1");
for(abc=0;abc<37;) /*繪制函數(shù)表?達(dá)式所表示?的曲線*/
{
ord= 43、-(*facto?r[0])*abc*abc-(*facto?r[1])*abc-(*facto?r[2]); /*代表函數(shù)表?達(dá)式*/
zong=(*facto?r[1])/(*facto?r[0])*0.5; /*代表曲線的?頂點(diǎn)坐標(biāo)*/
hen=4*(*facto?r[0])*(*facto?r[2])-((*facto?r[1])*(*facto?r[1]));
heng=hen/(*facto?r[0])*0.25;
setco?lor 44、(hue);
if(form==4) /*實(shí)現(xiàn)按照函?數(shù)表達(dá)式逐?個(gè)畫點(diǎn)構(gòu)成?曲線的功能?*/
{
circl?e((300-abc)-(zong*16),(ord*0.2)+360-(heng*14),radiu?s);
circl?e((abc+300)-(zong*16),(ord*0.2)+360-(heng*14),radiu?s);
}
if(for 45、m!=4)
{
form=form*0.5;
circl?e((300-abc)-(zong*16),(ord*0.2)+360-(heng*14),form);
circl?e((abc+300)-(zong*16),(ord*0.2)+360-(heng*14),form);
}
abc=abc+0.02;
delay?(100); 46、 /*實(shí)現(xiàn)曲線動(dòng)?態(tài)效果的功?能*/
}
save(); /*實(shí)現(xiàn)儲(chǔ)存圖?像的功能*/
getch?();
syste?m("cls");
load(); /*實(shí)現(xiàn)打開圖?像的功能*/
getch?();
close?graph?; 47、 /*關(guān)閉圖形工?作方式*/
exit(0);
}
}
}
int get_k?ey() /*設(shè)定鍵盤控?制*/
{
union? REGS rg;
rg.h.ah=0;
int86?(0x16,&rg,&rg);
retur?n rg.h.ah;
getch?ar();
}
void save() 48、 /*儲(chǔ)存圖形函?數(shù)*/
{
int i,j; /*i,j代表像素?所在坐標(biāo)*/
FILE *fp; /*聲明一個(gè)文?件地址*/
char fileN?ame[20]; /*filen?ame代表?文件名被儲(chǔ)?存的所在數(shù)?組*/
windo 49、?w(1,1,80,80);
gotox?y(1,1); /*將當(dāng)前字符?屏幕的光標(biāo)?位置移動(dòng)到?(1,1)坐標(biāo)*/
print?f("\52 Input? The File Name[.dat] To Be Saved?:"); /*輸入要被保?存圖像所在?的文件名并?儲(chǔ)存*/
scanf?("%s",fileN?ame);
windo?w(1,1,80,80);
if((fp=fopen?(fileN?ame,"w+"))==NULL) 50、 /*以讀寫的方?式打開文件?*/
{
outte?xtxy(260,455,"Faile?d to open file!"); /* 圖形模式下?在x,y坐標(biāo)位置?顯示一行字?符串*/
exit(0);
}
outte?xtxy(500,455,"savin?g...");
for(i=5;i<630;i++) /*保存像素到?文件*/
for(j= 51、30;j<=445;j++)
fputc?(getpi?xel(i,j),fp);
fclos?e(fp);
windo?w(1,1,80,80);
outte?xtxy(500,455,"Save Over!");
}
void load() /*打開圖像函?數(shù)*/
{
int i,j; /*i,j代表像素?所在坐標(biāo)*/
char fileN 52、?ame[20]; /*filen?ame代表?文件名被儲(chǔ)?存的所在數(shù)?組*/
FILE *fp; /*聲明一個(gè)文?件地址*/
windo?w(1,1,80,80);
gotox?y(1,2);
print?f("\52 Input? The File Name[.dat] To Be Open:"); /*輸入要打開?圖像所在的?文件名并儲(chǔ)?存*/
scan 53、f?("%s",fileN?ame);
if((fp=fopen?(fileN?ame,"r+"))!=NULL) /*打開指定的?文件*/
{
windo?w(1,1,80,80);
outte?xtxy(500,455,"loadi?ng...");
for(i=5;i<630;i++) /*從文件中讀?出像素*/
for(j=30;j<=445;j++)
putpi?xel(i,j,fgetc 54、?(fp));
windo?w(1,1,80,80);
outte?xtxy(500,455,"Loadi?ng Over !"); /* 圖形模式下?在x,y坐標(biāo)位置?顯示一行字?符串*/
}
else /*打開失敗*/
{
windo?w(1,1,80,80);
outte?xtxy(500,455,"Faile?d to open file!");
}
fclos?e(fp);
}
14
- 溫馨提示:
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. 裝配圖網(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ùn)動(dòng)會(huì)安全工作預(yù)案
- 2024年秋季《思想道德與法治》大作業(yè)及答案3套試卷
- 2024年教師年度考核表個(gè)人工作總結(jié)(可編輯)
- 2024年xx村兩委涉案資金退還保證書
- 2024年憲法宣傳周活動(dòng)總結(jié)+在機(jī)關(guān)“弘揚(yáng)憲法精神推動(dòng)發(fā)改工作高質(zhì)量發(fā)展”專題宣講報(bào)告會(huì)上的講話
- 2024年XX村合作社年報(bào)總結(jié)
- 2024-2025年秋季第一學(xué)期初中歷史上冊教研組工作總結(jié)
- 2024年小學(xué)高級(jí)教師年終工作總結(jié)匯報(bào)
- 2024-2025年秋季第一學(xué)期初中物理上冊教研組工作總結(jié)
- 2024年xx鎮(zhèn)交通年度總結(jié)
- 2024-2025年秋季第一學(xué)期小學(xué)語文教師工作總結(jié)
- 2024年XX村陳規(guī)陋習(xí)整治報(bào)告
- 2025年學(xué)校元旦迎新盛典活動(dòng)策劃方案
- 2024年學(xué)校周邊安全隱患自查報(bào)告
- 2024年XX鎮(zhèn)農(nóng)村規(guī)劃管控述職報(bào)告