C語言小學(xué)數(shù)學(xué)考題課程設(shè)計(jì)報(bào)告_第1頁
C語言小學(xué)數(shù)學(xué)考題課程設(shè)計(jì)報(bào)告_第2頁
C語言小學(xué)數(shù)學(xué)考題課程設(shè)計(jì)報(bào)告_第3頁
C語言小學(xué)數(shù)學(xué)考題課程設(shè)計(jì)報(bào)告_第4頁
C語言小學(xué)數(shù)學(xué)考題課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)與信息工程系 高級語言程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告1 設(shè)計(jì)內(nèi)容及要求1.1 概述1.2 主要功能1.3 目的和要求2 概要設(shè)計(jì)2.1數(shù)據(jù)結(jié)構(gòu)2.2 軟件結(jié)構(gòu)3 程序代碼4 設(shè)計(jì)結(jié)果與分析1設(shè)計(jì)內(nèi)容及要求1.1 概述 小學(xué)數(shù)學(xué)考題測試系統(tǒng)是基于小學(xué)開發(fā),這是一個(gè)進(jìn)行數(shù)學(xué)計(jì)算的程序,該系統(tǒng)是讓計(jì)算機(jī)充當(dāng)一位給小學(xué)生布置作業(yè)的數(shù)學(xué)老師,為學(xué)生出題、閱卷。能實(shí)現(xiàn)加減乘除四則運(yùn)算,具有隨機(jī)出題、顯示答卷、自動(dòng)評分、錯(cuò)題正解、錯(cuò)題重做等功能的學(xué)習(xí)應(yīng)用軟件。1.2 主要功能首界面菜單功能:考題測試、顯示答卷、測試評分、錯(cuò)題正解、錯(cuò)題重做、退出系統(tǒng)。考題菜單界面功能:加法測試、減法測試、乘法測試、除法測試、隨機(jī)

2、測試、退出測試。1.3 目的和要求 1.3.1設(shè)計(jì)目的1、 復(fù)習(xí)鞏固C語言的基礎(chǔ)知識,進(jìn)一步加深對C語言編程的理解和掌握2、 掌握結(jié)構(gòu)化程序設(shè)計(jì)的基本方法3、 根據(jù)課內(nèi)外所學(xué)的知識,開發(fā)具有實(shí)用型的系統(tǒng),提高學(xué)生實(shí)踐能力,動(dòng)手能力和初步的設(shè)計(jì)編程能力和理解掌握模塊化編程的方法4、 通過完成課程設(shè)計(jì)的編程題,逐漸培養(yǎng)學(xué)生的編程能力,提高培養(yǎng)學(xué)生解決實(shí)際問題的能力1.3.2設(shè)計(jì)要求本程序是面向小學(xué)生而設(shè)計(jì)的,所以不能以面向成人的開發(fā)思路來開發(fā)軟件。面向的是小學(xué)生要設(shè)計(jì)簡單的界面,使小學(xué)生能夠很快的熟悉該軟件的操作。小學(xué)生的計(jì)算能力有限,所以在這里本程序只進(jìn)行兩位數(shù)的隨機(jī)加減乘除四則運(yùn)算,要使用隨機(jī)

3、函數(shù)rand()來控制抽取的隨機(jī)數(shù)為兩位。除法運(yùn)算時(shí),除數(shù)不能為0要用if來增加判斷每一種運(yùn)算出10道題目,用for循環(huán)控制出題數(shù)程序有簡單的菜單界面,用戶可以通過輸入簡單的選項(xiàng)來完成相應(yīng)的選擇。程序首界面具有考題測試、顯示答卷、測試評分、錯(cuò)題正解、錯(cuò)題重做和退出系統(tǒng)的功能,而考題測試也有簡單的菜單界面,有加法測試、減法測試、乘法測試、除法測試、隨機(jī)測試和退出測試功能。軟件首界面提供了考題測試界面,進(jìn)入考題測試界面可以選擇四則運(yùn)算中的一項(xiàng)進(jìn)行測試,也可以選擇隨機(jī)抽取四則運(yùn)算中的一種進(jìn)行測試。測試完成后退出測試可以查看答卷,也可以查看測試成績,查看錯(cuò)題正解,對錯(cuò)題重做。2 概要設(shè)計(jì)2.1數(shù)據(jù)結(jié)構(gòu)

4、本程序中,運(yùn)用了多種數(shù)據(jù)結(jié)構(gòu)。首先對于考題測試中考題信息記錄用了數(shù)組和全局變量,然后又運(yùn)用switch語句來實(shí)現(xiàn)對各分函數(shù)調(diào)用的開關(guān)功能。記錄考題信息的數(shù)組和全局變量如下:int a10,b10,c10,t10; a,b,c,t數(shù)組分別保存第一運(yùn)算數(shù), 第二運(yùn)算數(shù),輸入結(jié)果,正確結(jié)果 int fs=0;保存成績char fh10='0','0','0','0','0','0','0','0','0','0'保存運(yùn)算符號賦初值為0用以判斷

5、是否進(jìn)行了考題測試 int key=1;用于主菜單和考題菜單的while循環(huán)控制變量2.2軟件結(jié)構(gòu)本程序執(zhí)行的入口是main函數(shù),然后是菜單函數(shù),在菜單函數(shù)中對選項(xiàng)進(jìn)行選擇以后,接下來在while語句中再套用switch語句實(shí)現(xiàn)對各個(gè)函數(shù)的調(diào)用。被調(diào)用的函數(shù)都是沒有形參的,但是通過對數(shù)組的使用,可以使得每一次的函數(shù)調(diào)用都能夠記錄到數(shù)組中而不需要返回值。最后,再從main函數(shù)中結(jié)束整個(gè)程序的運(yùn)行。其中涉及到被調(diào)用的函數(shù)有:菜單函數(shù)有:char caidan() 主菜單函數(shù)顯示程序功能把scanf()接收的字符選項(xiàng)返回到主函數(shù)main()調(diào)用處判斷選擇的功能char kaotidan() 考題菜單

6、函數(shù)顯示考題測試的種類scanf()接收的字符選項(xiàng)返回到考題測試函數(shù)kaoti()調(diào)用處判斷選擇的測試種類功能模塊函數(shù)有:void kaoti() 考題測試函數(shù)void dajuan() 顯示答卷函數(shù)void pingfen() 測試評分函數(shù)void zhengjie() 錯(cuò)題正解函數(shù)void chongzuo() 錯(cuò)題重做函數(shù)void chufa(int *s1,int *s2,int *s3) 隨機(jī)抽取中的除法函數(shù)考題測試種類函數(shù)有:void add() 加法測試函數(shù) void sub() 減法測試函數(shù) void mul() 乘法測試函數(shù) void div1() 除法測試函數(shù) void s

7、uiji() 隨機(jī)測試函數(shù)程序流程圖 退出開始測試退出測試隨機(jī)測試除法測試乘法測試測試減法測試加法測試退出系統(tǒng)錯(cuò)題重做錯(cuò)題正解測試評分顯示答卷考題測試主菜單3程序代碼#include "stdio.h"#include <stdlib.h>#include <time.h>#include <ctype.h> /*定義函數(shù)*/char caidan();/*主菜單函數(shù)*/char kaotidan();/*考題菜單函數(shù)*/void kaoti();/*考題測試函數(shù)*/void add();/*加法運(yùn)算函數(shù)*/void sub();/*減法

8、運(yùn)算函數(shù)*/void mul();/*乘法運(yùn)算函數(shù)*/void div1();/*除法運(yùn)算函數(shù)*/void suiji();/*隨機(jī)抽取函數(shù)*/void dajuan();/*顯示答卷函數(shù)*/void pingfen();/*測試評分函數(shù)*/void zhengjie();/*錯(cuò)題正解函數(shù)*/void chongzuo();/*錯(cuò)題重做函數(shù)*/void chufa(int *s1,int *s2,int *s3);/* 定義全局變量*/int a10,b10,c10,t10; /* a,b,c,t分別保存第一運(yùn)算數(shù), 第二運(yùn)算數(shù),輸入結(jié)果,正確結(jié)果*/ int fs=0; /* 保存成績*/c

9、har fh10='0','0','0','0','0','0','0','0','0','0'/* 保存運(yùn)算符號賦初值為0用以判斷是否進(jìn)行了考題測試*/ int key=1;/*主函數(shù)*/void main() while(key)switch(caidan() case '1': printf("nnn"); kaoti(); break;case '2': printf(&quo

10、t;nnn"); system("cls");dajuan();system("cls"); break;case '3': printf("nnn"); system("cls");pingfen();system("cls"); break;case '4': printf("nnn"); system("cls");zhengjie();system("cls"); break;case

11、'5': printf("nnn"); system("cls");chongzuo();system("cls"); break;case '0': exit(0);/*主菜單*/char caidan() char c; /*定義變量*/ printf("n* 小學(xué)數(shù)學(xué)考題測試 *nnn"); printf(" 1.考題測試 2.顯示答卷nn"); printf(" 3.測試評分 4.錯(cuò)題正解nn"); printf(" 5.錯(cuò)題

12、重做 0.退出系統(tǒng)nn"); printf("n*"); printf("n請輸入選項(xiàng)(0-5):"); /*提示輸入選項(xiàng)*/ do scanf("%c",&c); /*輸入選項(xiàng)的功能號*/ while(!(c>='0'&&c<'6'); /*驗(yàn)證選項(xiàng)是否合法*/ return c; /*返回選擇的功能號*/*考題測試*/void kaoti()while(key)system("cls");switch(kaotidan() case

13、'1': printf("nnn"); system("cls");add(); break;case '2': printf("nnn"); system("cls");sub(); break;case '3': printf("nnn"); system("cls");mul(); break;case '4': printf("nnn"); system("cls"

14、);div1(); break;case '5': printf("nnn"); system("cls");suiji(); break;case '0': printf("nnn"); system("cls");main(); break;/*考題菜單*/char kaotidan() char l; /*定義變量*/ printf("n* 考題種類測試選擇 *nnn"); printf(" 1.加法測試 2.減法測試nn"); prin

15、tf(" 3.乘法測試 4.除法測試nn"); printf(" 5.隨機(jī)抽取 0.退出測試nn"); printf("n*"); printf("n請輸入選項(xiàng)(0-5):"); /*提示輸入選項(xiàng)*/ do scanf("%c",&l); /*輸入選項(xiàng)的功能號*/ while(!(l>='0'&&l<'6'); /*驗(yàn)證選項(xiàng)是否合法*/ return l; /*返回選擇的功能號*/*加法運(yùn)算*/void add()int i;p

16、rintf(" 你已進(jìn)入加法測試!nn");srand( (unsigned)time( NULL ) ); /* 隨機(jī)數(shù)種子由系統(tǒng)時(shí)間函數(shù)產(chǎn)生*/for(i=0;i<10;i+)ai=rand()%100;bi=rand()%100;printf("第%2d題:%2d+%2d=?你的答案:",i+1,ai,bi); ti=ai+bi;fhi='+'scanf("%d",&ci);printf("n");printf(" 加法測試結(jié)束n");system("

17、;pause");system("cls");main();/*減法運(yùn)算*/void sub()int i,h; printf(" 你已進(jìn)入減法測試!nn");srand( (unsigned)time( NULL ) ); /* 隨即數(shù)種子由系統(tǒng)時(shí)間函數(shù)產(chǎn)生*/for(i=0;i<10;i+)ai=rand()%100;bi=rand()%100;if(ai>bi)printf("第%2d題:%2d-%2d=?你的答案:",i+1,ai,bi); elseh=bi; bi=ai;ai=h;printf(&quo

18、t;第%2d題:%2d-%2d=?你的答案:",i+1,ai,bi); ti=ai-bi;fhi='-'scanf("%d",&ci);printf("n");printf(" 減法測試結(jié)束n");system("pause");system("cls");main();/*乘法運(yùn)算*/void mul()int i; printf(" 你已進(jìn)入乘法測試!nn");srand( (unsigned)time( NULL ) ); /* 隨即數(shù)

19、種子由系統(tǒng)時(shí)間函數(shù)產(chǎn)生*/for(i=0;i<10;i+)ai=rand()%100;bi=rand()%100;printf("第%2d題:%2d*%2d=?你的答案:",i+1,ai,bi); ti=ai*bi;fhi='*'scanf("%d",&ci);printf("n");printf(" 乘法測試結(jié)束n");system("pause");system("cls");main();/*除法運(yùn)算*/void div1()int i,h

20、; printf(" 你已進(jìn)入除法測試!nn");srand( (unsigned)time( NULL ) ); /* 隨即數(shù)種子由系統(tǒng)時(shí)間函數(shù)產(chǎn)生*/for(i=0;i<10;i+) fs: ai=rand()%100;bi=rand()%100;if(ai>bi && ai!=0 && bi!=0)if(ai%bi=0)printf("第%2d題:%2d/%2d=?你的答案:",i+1,ai,bi); elsegoto fs;elseh=bi;bi=ai;ai=h;if(ai!=0 &&

21、bi!=0)if(ai%bi=0)printf("第%2d題:%2d/%2d=?你的答案:",i+1,ai,bi); elsegoto fs;elsegoto fs;ti=ai/bi;fhi='/'scanf("%d",&ci);printf("n");printf(" 除法測試結(jié)束n");system("pause");system("cls");main();/*隨機(jī)抽取*/void suiji()int p,i,gh; printf("

22、 你已進(jìn)入隨機(jī)測試!nn");srand( (unsigned)time( NULL ) ); for(i=0;i<10;i+)ai=rand()%100; /* 隨機(jī)產(chǎn)生第一個(gè)操作數(shù)(199)*/bi=rand()%100; /* 隨機(jī)產(chǎn)生第二個(gè)操作數(shù)(199)*/p=rand()%4; /* 隨機(jī)產(chǎn)生運(yùn)算符(03)*/if(p=0) /* 轉(zhuǎn)換成運(yùn)算符號,p為0表示做加法*/fhi='+' ti=ai+bi; else if(p=1) /* p為1,表示做減法*/fhi='-' if(ai<bi) /* 如果a<b則交換a,b,以

23、保證結(jié)果為正數(shù)*/ gh=ai; ai=bi;bi=gh; ti=ai-bi; else if(p=2) /* p為2表示做乘法*/ fhi='*' ti=ai*bi; elseif(p=3) /* p為3表示做除法*/ fhi='/' chufa(&ai,&bi,&ti); printf("第%2d題:%2d%c%2d=?你的答案:",i+1,ai,fhi,bi); scanf("%d",&ci); /* 循環(huán)結(jié)束*/ printf("nn");printf("

24、; 隨機(jī)測試結(jié)束n");system("pause");system("cls");main();/*顯示答卷*/void dajuan()int i,j;for(i=0;i<1;i+) if(fhi='0') printf("你還未測試請測試后選擇該操作!n"); goto fb; else printf("你的答卷為:n"); for(j=0;j<10;j+) printf("%2d%c%2d = %2dn",aj,fhj,bj,cj); fb:prin

25、tf("n"); system("pause");/*測試評分*/void pingfen()int k,q;for(k=0;k<1;k+) if(fhk='0') printf("你還未測試請測試后選擇該操作!n"); goto fb; else for(q=0;q<10;q+) if(cq!=tq) continue; else fs=fs+10; printf("你的成績是%d分.n",fs);/*顯示測試結(jié)果*/switch(fs) /*顯示評價(jià)*/ case 100: prin

26、tf("真棒!不要驕傲喲!n"); break; case 90: printf("優(yōu)秀!恭喜你取得了好成績!n"); break; case 80: case 70: printf("良好!請繼續(xù)努力,下次取得更好的成績!n"); break; case 60: printf("及格!成績不太理想喲!再接再勵(lì)吧!n"); break; case 50: case 40: case 30: case 20: case 10: printf("多花點(diǎn)功夫吧,不然你會后悔的!n"); break;

27、case 0: printf("太差勁了!再不努力的話,你就完了!再做一次吧!n"); break;fs=0; fb:printf("nn");system("pause"); /*錯(cuò)題正解*/void zhengjie()int i,k;for(i=0;i<1;i+)if(fhi='0') printf("你還未測試請測試后選擇該操作!n"); goto fb; else printf("以下是你做錯(cuò)的題的正確答案:n"); for(k=0;k<10;k+) if(

28、ck=tk) continue; else printf("%2d%c%2d = %2dn",ak,fhk,bk,tk); fb:printf("nn");system("pause");/*錯(cuò)題重做*/void chongzuo()int i,m,n;for(i=0;i<1;i+)if(fhi='0') printf("你還未測試請測試后選擇該操作!n"); goto fb;elsefor(m=0;m<10;m+) ff:if(cm=tm) /*做對的題則跳過*/continue; e

29、lse printf("以下是你做錯(cuò)的題,請重做:n%2d%c%2d =?你的答案:",am,fhm,bm);scanf("%d",&cm);if(cm=tm) printf("恭喜!你做對了!n"); /*再次對輸入的答案進(jìn)行檢驗(yàn)*/system("pause");system("cls");else /*若仍未做對,則用此函數(shù)*/ for(n=0;n<2;n+) system("cls");printf("你仍未做對!你還有%d次機(jī)會:n",2-n); /*再次計(jì)算*/printf("%2d%c%2d =?你的答案:",am,fhm,bm);scanf("%d",&am

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論