C語言設(shè)計(jì)方案小學(xué)生數(shù)學(xué)輔助學(xué)習(xí)系統(tǒng)_第1頁
C語言設(shè)計(jì)方案小學(xué)生數(shù)學(xué)輔助學(xué)習(xí)系統(tǒng)_第2頁
C語言設(shè)計(jì)方案小學(xué)生數(shù)學(xué)輔助學(xué)習(xí)系統(tǒng)_第3頁
C語言設(shè)計(jì)方案小學(xué)生數(shù)學(xué)輔助學(xué)習(xí)系統(tǒng)_第4頁
C語言設(shè)計(jì)方案小學(xué)生數(shù)學(xué)輔助學(xué)習(xí)系統(tǒng)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、目錄任務(wù)書 *1總體設(shè)計(jì)*2三、模塊劃分*2四、算法說明*2五、函數(shù)模塊功能 *2六、流程圖 *3七、源程序清單 *4八、程序測試 *17九、結(jié)論 *17附:參考文獻(xiàn)資料.任務(wù)書題目:小學(xué)生數(shù)學(xué)輔助學(xué)習(xí)系統(tǒng)功能:實(shí)現(xiàn)小學(xué)生100以內(nèi)四則運(yùn)算的學(xué)習(xí)和測試基本要求:1.出現(xiàn)歡迎界面,選擇加、減、乘、除或混合運(yùn)算。2.系統(tǒng)隨機(jī)出題,運(yùn)算數(shù)及結(jié)果均在100以內(nèi),以算式顯示。3.正確打個對勾,播放一段音樂,如果錯誤,打個紅 X,播放另一個音樂。4.能統(tǒng)計(jì)正確率及得分。相關(guān)知識:圖形繪制、按鍵操作等.總體設(shè)計(jì)本次設(shè)計(jì)需要使用音樂函數(shù)、圖形函數(shù)以及四則運(yùn)算函數(shù)。首先使用圖形函數(shù),創(chuàng)建出一個歡迎界面。其次,在

2、100 以內(nèi),乘、除法應(yīng)能整除,顯示算式,再編寫菜單練習(xí),測試和計(jì)分及四則運(yùn)算函數(shù)。最后是打印及退出。3 .模塊劃分1. 歡迎界面模塊。2. 算式模塊。3. 菜單模塊。4. 四則運(yùn)算模塊。5. 計(jì)分模塊。6. 音樂模塊。4 . 算法說明step1: 先定義音樂函數(shù),包括音符的音長、頻率及初始化揚(yáng)聲器,再編 寫出兩段音樂。Step2: 定義菜單函數(shù),并用 printf 輸出。Step3:先定義compute。函數(shù),在其中嵌套switch語句,做隨機(jī)數(shù)的四 則運(yùn)算。Step4: 定義一個 Print() 函數(shù),當(dāng)使用者答對或答錯時,調(diào)用 linerel() 函 數(shù),做出相應(yīng)的圖像并顯示。同時放出相

3、應(yīng)的樂曲,并做正確 或錯誤題數(shù)的累積。Step5: 在主函數(shù)中,調(diào)用圖形函數(shù),設(shè)置一個歡迎界面。Step6: 調(diào)用菜單函數(shù)。Step7:調(diào)用compute。函數(shù),并用switch語句選擇同號運(yùn)算和混合運(yùn) 算。Step8:用printf打印結(jié)果。5 .函數(shù)模塊功能1 迎界面模塊在此模塊中,我首先定義了顯示器及模式,然后通過setbkcolor()初始化圖形顯示模式函數(shù)定義了背景顏色,用 outtextxy ()和settextstyle ()函數(shù)定義了字符 用輸出的位置以及大小和字體。2. 聲音模塊在此模塊中,首先定義了音符的長短和頻率。然后通過初始化揚(yáng)聲器,來得到每個音符。最后,根據(jù)自己的喜好

4、,編寫兩段音樂。3. 菜單模塊在此模塊中,首先用 Menu ()函數(shù)定義菜單。然后輸入所需要的菜單目錄,最后在主函數(shù)中調(diào)用Menu ()4. 四則運(yùn)算模塊在此函數(shù)中,通過調(diào)用switch語句,分成四種情況,每種運(yùn)算符分別代表一種情況,而在這四種情況中,又分別調(diào)用switch語句,又分成四種情況,從而形成了三個數(shù)的四則運(yùn)算。最后在主函數(shù)中調(diào)用這些情況。5. 顯示對錯信息模塊在此函數(shù)中,通過調(diào)用相應(yīng)的圖像和音樂,給使用者提供對錯信息,并累加錯誤題數(shù)和正確題數(shù)。六、流程圖m=1m=2m=3m=4m=5m6直 到隨機(jī)產(chǎn) 生 a。bo c直 到隨機(jī)產(chǎn) 生a。bo c直 到隨機(jī)產(chǎn)生 a。bo c直 到隨機(jī)

5、產(chǎn) 生a。bo c隨機(jī)op op2結(jié)束)二4a+b+c< 二2a+b+c< =2a+b+c< =2a+b+c< =2Op1Op2Op3Op4讀入ANSWER值OP2OP2OP2=P2OP2OP2OP2OP2OP2OP2OP2OP2OP:OP:?OP:OP:result<=a+b+ cresult二a-bcresult二a*b* cresult二a/b/c產(chǎn)生隨機(jī)a,b,c計(jì)算機(jī)應(yīng)result讀入answer RESULTANSWER.-N1Y回錯號,奏哀樂畫對號,奏歡歌*w+*r+Score<=(float)100/all)*rprintf輸出對題數(shù),錯題數(shù)

6、,總題數(shù)和分?jǐn)?shù)設(shè)棕色背景輸出“welcome輸入菜單選項(xiàng)讀入選項(xiàng)mels七.源程序清單#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <graphics.h>#include <dos.h>#include <bios.h>#include <time.h>#define N1 64/先義音長 全音符音長*/#define N2 32/音符白音長*/#define N4 16/*4分音符的音長*/#define N8 8/*8分音符

7、的音長*/#define N16 4/*16分音符的音長*/#define END 0/*結(jié)束標(biāo)志*/enum NDTESC10=131,D10=147,E10=165,F10=175,G10=196,A10=220,B10=247,C0=262,D0=296,E0=330,F0=349,G0=392,A0=440,B0=494,C1=523,D1=587,E1=659,F1=698,G1=784,A1=880,B1=988,C2=1047,D2=1175,E2=1319,F2=1397,G2=1568,A2=1760,B2=1976。/*定義音符與頻率的對應(yīng)關(guān)系*/song1=C0,N8,C

8、0,N8,G0,N8,G0,N8,A0,N8,A0,N8,G0,N4,F0,N8,F0,N8,E0,N8,E0,N8,D0,N8,D0,N8,C0,N4,G0,N8,G0,N8,F0,N4,E0,N8,E0,N8,D0,N4,G0,N8,G0,N8,F0,N8,F0,N8,E0,N8,E0,N8,D0,N4,C0,N8,E0,N8,G0,N4,A0,N8,C1,N8,G0,N4,/* 形成樂譜 */F0,N8,F0,N8,E0,N8,E0,N8,D0,N8,D0,N8,C0,N4,END,END 。song2=C0,N8,D0,N8,E0,N8,F0,N8,G0,N8,A0,N8,B0,N8,

9、C1,N8,D1,N8,E1,N8,F1,N8,G1,N8,A1,N8,B1,N8,END,END 。void Menu(void)printf("1.+n") 。printf("2.-n") 。printf("3.*n") 。printf("4./n") 。printf("5.Mixedn") 。printf("6.Exitn") 。printf("Please enter your choice:"。)SONG1()int note=0,fre,dur

10、,controlclock_t goa lwhile(song1note!=0)fre=song1note。dur=song1note+1。if(kbhit()break 。if(fre)outportb(0x43,0xb6)。/*取出樂譜數(shù)組中的頻率*/* 取出樂譜數(shù)組中的音長*/*如果有按鍵,則推出音樂播放 */*初始化揚(yáng)聲器端口 */fre=(unsigned)(1193180L/fre。)outportb(0x42,(char)(fre>>8)。outportb(0x42,(char)(fre>>8)。control=inportb(0x61)。outportb

11、(0x61,(control)|0x3)。goal=(clock_t)dur+clock(。)while(goal>clock()。if(fre)outportb(0x61,control)。goal=(clock_t)0。note=note+2。/*往揚(yáng)聲器端口送出聲音頻率值*/*開始發(fā)音 */*設(shè)定延遲時間 */*如果時間未到,等待;時間超出則退出 */*停止發(fā)音 */*移到下一個音符*/SONG2()int note=0,fre,dur,controlclock_t goa lwhile(song2note!=0)fre=song2note。dur=song2note+1。 if(

12、kbhit()break 。if(fre)outportb(0x43,0xb6)。fre=(unsigned)(1193180L/fre。) outportb(0x42,(char)(fre>>8)。outportb(0x42,(char)(fre>>8)。control=inportb(0x61)。outportb(0x61,(control)|0x3)。goal=(clock_t)dur+clock(。) while(goal>clock()。if(fre)outportb(0x61,control)。goal=(clock_t)0。note=note+2。i

13、nt Compute2(int a,int b,int c,int op ,int op2)/*定義一個新的運(yùn)算符*/int answer,resultswitch(op)case 1:switch (op2)/*當(dāng) OP 為加號時, OP2 為四種運(yùn)算符*/case 1:printf("%d+%d+%d=",a,b,c) 。result=a+b+c。break。case 2:printf("%d+%d-%d=",a,b,c) 。result=a+b-c。break。case 3:printf("%d+%d*%d=",a,b,c) 。

14、result=a+b*c。break。case 4:printf ("%d+%d/%d=",a,b,c) 。result=a+b/c。break。 break。case 2:switch (op2)/*當(dāng) OP 為減號時, OP2 為四種運(yùn)算符*/case 1:printf("%d-%d+%d=",a,b,c) 。result=a-b+c。break。case 2:printf("%d-%d-%d=",a,b,c) 。result=a-b-c。break。case 3:printf("%d-%d*%d=",a,b,

15、c) 。result=a-b*c。break。case 4:printf ("%d-%d/%d=",a,b,c) 。result=a-b/c。break。break。case 3: /當(dāng)* OP 為乘號時, OP2 為四種運(yùn)算符*/switch (op2)case 1:printf("%d*%d+%d=",a,b,c) 。result=a*b+c。break。case 2: printf("%d*%d-%d=",a,b,c) 。result=a*b-c。break。case 3:printf("%d*%d*%d="

16、,a,b,c) 。result=a*b*c 。break。case 4:printf ("%d+%d/%d=",a,b,c) 。result=a*b/c。break。break。case 4: /*當(dāng) OP 為除號時, OP2 為四種運(yùn)算符 */switch (op2)case 1:printf("%d+%d+%d=",a,b,c) 。result=a+b+c。break。case 2:printf("%d+%d-%d=",a,b,c) 。result=a+b-c。break。case 3:printf("%d+%d*%d=

17、",a,b,c) 。result=a+b*c。break。case 4: printf ("%d+%d/%d=",a,b,c)result=a+b/c。break。break。scanf("%d",&answer)if(result=answer)elsereturn 1 。/*如果正確,返回值為1*/return 0。/*如果錯誤,返回值為0*/void Print(int flag,int *r,int *w,int *all)if(flag)setcolor(RED)。/*定義顏色 */linerel(10,20)。/*從當(dāng)前點(diǎn)到

18、相對增量點(diǎn)畫一條線段*/linerel(20,-20)。+(*r) 。/*正確題數(shù)加1*/SONG1()/*放第一首歌*/elsesetcolor(RED)。linerel(30,20)。moverel(-30,0)。 /* 光標(biāo)從當(dāng)前位置移動到指定位置處,移動過程中不畫點(diǎn) */linerel(30,-20)。+(*w) 。/*錯誤題數(shù)加1*/SONG2()。moverel(-30,16)。+(*all) 。/*總數(shù)加 1*/main()float score。char m。int a,b,c,op,d,r=0,w=0,all=0,i。int result,answer。int gdriver

19、=VGA 。/*選擇 VGA 顯示器 */int gmode=VGAHI 。/*選擇VGAHI 顯示模式 */int height,width。int exit_flag=0。unsigned char *temp1=" WELCOME n" 。initgraph(&gdriver,&gmode,"") 。/*初始化顯示適配器*/cleardevice(。)/*清屏 */setcolor(10。)setbkcolor(BROWN) 。/*設(shè)置背景顏色*/settextstyle(3,0,4。)width=textwidth(temp1)。

20、width=textwidth(temp2)。height=textheight(temp1。)height=textheight(temp2。)outtextxy(639-width)/2,150-height/2,temp1。)/*設(shè)置字符串輸出的位置*/settextstyle(3,0,2。)/*設(shè)置輸出字符的字型,輸出方向和字符大小*/outtextxy(800-width)/2,400-height/2,temp2。)getch()。/*獲得一個字符*/cleardevice(。)Menu() 。/*調(diào)用菜單函數(shù)*/m=getchar()。 /* 獲得一個字符并賦值給C*/srand

21、(time(NULL) 。/*設(shè)置一個隨機(jī)數(shù)*/moveto(108,112。)/*設(shè)置光標(biāo)起始位置*/switch(m)case '1':for(i=0。 i<10。 i+)/*設(shè)置問題數(shù)小于等于 10*/doa=rand()%100+1 。/*隨機(jī)產(chǎn)生一個小于 100 的數(shù) */b=rand()%100+1 。c=rand()%100+1 。while(a+b+c>100)。/*當(dāng)結(jié)果在100之外,再次進(jìn)入循環(huán)*/printf("%d+%d+%d=",a,b,c) 。scanf("%d",&answer) 。res

22、ult=a+b+c。if(result=answer)d=1/*如果正確,返回值為1*/elsed=0。/*如果錯誤,返回值為0*/Print(d,&r,&w,&all) 。break。case '2':for(i=0。 i<10。 i+) doa=rand()%100+1 。/*系統(tǒng)隨機(jī)產(chǎn)生一個小于100 的數(shù) */b=rand()%100+1 。c=rand()%100+1 。while(a-b-c>100|a-b-c<0)。/*當(dāng)結(jié)果在 100之外, 0 以下,再次進(jìn)入循環(huán)*/printf("%d-%d-%d="

23、;,a,b,c) 。scanf("%d",&answer) 。result=a-b-c。if(result=answer)d=1。/*如果正確,返回值為1*/elsed=0。/*如果錯誤,返回值為0*/Print(d,&r,&w,&all) 。break。case '3':for(i=0。 i<10。 i+)do30 的數(shù) */a=rand()%30+1 。/*系統(tǒng)隨機(jī)產(chǎn)生一個小于b=rand()%30+1 。c=rand()%30+1 。while(a*b*c>100) 。printf("%d*%d*%

24、d=",a,b,c) 。scanf("%d",&answer) 。result=a*b*c 。if(result=answer)d=1。/*如果正確,返回值為1*/elsed=0。/*如果錯誤,返回值為0*/Print(d,&r,&w,&all) 。break。case '4':for(i=0。 i<10。 i+)a=rand()%100+1 。b=rand()%100+1 。c=rand()%100+1 。printf("%d/%d/%d=",a,b,c) 。scanf("%d",&answ

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論