小学生计算机辅助教学系统--练习加,减,乘,除法
一.前言
最近幾天,老師布置一個小學(xué)生計算機輔助教學(xué)系統(tǒng)–練習(xí)加,減,乘,除法的作業(yè)要我們實現(xiàn),我花費了幾個小時把它干完了,本想拿這個小項目練練手,因為要考研了,復(fù)習(xí)復(fù)習(xí)C語言。沒有想到這個項目涉及到的C語言知識不深,只涉及到了循環(huán)結(jié)構(gòu),函數(shù),指針只有一個函數(shù)指針知識點。指針部分沒有深挖。行了,行了,廢話不多說,我直接上內(nèi)容。
二.項目要求(需求分析)
項目是編寫一個程序來幫助小學(xué)生練習(xí)加、減、乘、除四則運算。功能要求如下:
(1)編寫一個菜單,顯示本系統(tǒng)供選擇的基本功能:加、減、乘、除四則運算,退出,并提示用戶輸入選項,然后根據(jù)用戶的選項進行不同的練習(xí)。
(2)進入每一個功能時,程序首先隨機產(chǎn)生兩個1-100之間的正整數(shù),在屏幕上打印出問題。例如:“16+9=?”,然后讓學(xué)生輸入答案。程序檢查學(xué)生輸入的答案是否正確。若正確,則打印出“Right!”,否則“Wrong!Please try again”并提示學(xué)生重做,直到答案正確為止。然后繼續(xù)下一個問題;
(3)在任務(wù)2的基礎(chǔ)上,當(dāng)學(xué)生回答錯誤時,最多給三次做的機會,三次仍未做好,則顯示“Wrong! You have tried three times! Test Over!”程序結(jié)束。
(4)在任務(wù)2的基礎(chǔ)上,連續(xù)做10道題,不給機會重做,若學(xué)生回答正確,則顯示“Right!”,否則顯示“Wrong!”。10道題全部做完后,按每題10分統(tǒng)計并輸出總分,同時為了記錄學(xué)生能力提高的過程,再輸出學(xué)生的總分和回答正確率。
(5)在任務(wù)4的基礎(chǔ)上,為使學(xué)生通過反復(fù)練習(xí)掌握所學(xué)的內(nèi)容,在學(xué)生完成10道運算題后,若回答正確率低于75%,則重做10道題,直到回答正確率高于75%時才退出程序。
(6)在任務(wù)5的基礎(chǔ)上,使用隨機函數(shù)產(chǎn)生一個1-4之間的隨機數(shù),配合使用選擇語句,來為學(xué)生輸入的每個正確或錯誤的答案輸出不同的評價。
對于正確答案,可在以下4中提示信息中選擇一個進行顯示:
Verygood!
Excellent!
Nicework!
Keepup the good work!
對于錯誤答案,可在以下4中提示信息中選擇一個進行顯示:
No.Please try again!
Wrong. Try once more.
Don’t Give up
Notcorrect.Keep Tring.
三.代碼實現(xiàn)(上述功能本代碼已經(jīng)全部實現(xiàn))
#include<stdio.h> #include<stdlib.h> #include <time.h> int main(){int menu();//************************************ // void exit();int submenu();void test(int (*p)(int,int),char ch);void practice(int (*p)(int,int),char ch);int add(int a,int b);int sub(int a,int b);int mul(int a,int b);int division(int a,int b);char ch;//運算符號 int opt;//選項int (*p)(int,int);//函數(shù)指針,根據(jù)用戶所選項調(diào)用函數(shù) opt=menu();switch(opt){case 1: p=add;ch='+';break;case 2: p=sub;ch='-';break;case 3: p=mul;ch='x';break;case 4: p=division;ch='/';break;case 5: exit(0);break; }system("pause"); system("cls");opt=submenu();//子菜單 if(opt==1){printf("******************練習(xí)模式***********************\n");practice(p,ch);//進入練習(xí)模式 }else{printf("******************測試模式***********************\n");system("pause"); test(p,ch);//進入測試模式 } return 0; } int menu(){//顯示菜單,帶回用戶所選擇的選項 int opt;//選擇項 printf("***********************************************\n");printf("本系統(tǒng)供選擇的基本功能有加、減、乘、除\n");printf("***********************************************\n");printf("有如下選項供選擇:\n");printf("1.練習(xí)加法\n"); printf("2.練習(xí)減法\n");printf("3.練習(xí)乘法\n");printf("4.練習(xí)除法\n");printf("5.退出\n");printf("***********************************************\n");printf("請輸入你的選項:\n");scanf("%d",&opt);while(opt!=1&&opt!=2&&opt!=3&&opt!=4&&opt!=5){//防止小學(xué)生瞎輸入 printf("輸入的選項錯誤,請重新輸入!!\n");printf("請輸入你的選項:\n");scanf("%d",&opt);}return opt; }int add(int a,int b){//加法 return a+b; }int sub(int a,int b){//減法 return a-b; }int mul(int a,int b){//乘法 return a*b; }int division(int a,int b){//除法 (本系統(tǒng)開發(fā)的是面向小學(xué)生,應(yīng)該沒有學(xué)習(xí)小數(shù),所以不考慮小數(shù)情況) return a/b; } int submenu(){//選擇練習(xí)模式或者測試模式 int op;//選擇的模式 printf("******************模式選擇*****************\n");printf("1.練習(xí)模式\n"); printf("2.測試模式\n");printf("請輸入你要選擇的模式:\n");scanf("%d",&op);return op; }void practice(int (*p)(int,int),char ch){//練習(xí)模式 void wrong_evaluate();//學(xué)生做錯題目時,出現(xiàn)的評語void right_evaluate();//學(xué)生做對題目時,出現(xiàn)的評語 int a,b;//兩個1-100之間的正整數(shù)int answer;//正確答案 int stu_answer;//學(xué)生的答案 int flag;//標(biāo)志位,正確為1 int count=0;//統(tǒng)計一題中做錯數(shù) srand((unsigned)time(NULL)+1);//播種,產(chǎn)生真隨機數(shù) //隨機產(chǎn)生兩個1-100之間的正整數(shù) a= rand()%100 + 1; srand((unsigned)time(NULL));//播種,產(chǎn)生真隨機數(shù) b=rand()%100 + 1;answer=(*p)(a,b);//在屏幕上打印出問題 printf("%d%c%d=?\n",a,ch,b);printf("請輸入你的答案:\n");scanf("%d",&stu_answer);if(stu_answer==answer){right_evaluate();//學(xué)生做對題目時,出現(xiàn)的評語 flag=1;} else{wrong_evaluate();//學(xué)生做錯題目時,出現(xiàn)的評語count++; flag=0;}//學(xué)生重做,直到答案正確為止while(!flag){printf("***********************************************\n");printf("請輸入你的答案:\n");scanf("%d",&stu_answer);if(stu_answer==answer){printf("Right!\n");flag=1;} else{printf("Wrong!Please try again!\n");count++;flag=0;}if(count>=3){//給三次做的機會,還沒有做對題目,就結(jié)束程序 printf("wrong!You have tried three times.Test over!");system("pause"); exit(0);//程序正常退出 }} } void test(int (*p)(int,int),char ch){//測試模式 void wrong_evaluate();//學(xué)生做錯題目時,出現(xiàn)的評語void right_evaluate();//學(xué)生做對題目時,出現(xiàn)的評語int i;//循環(huán)變量int score;//總分int right_num=0;//答對題目數(shù)int a,b;//兩個1-100之間的正整數(shù)int answer;//正確答案 int stu_answer;//學(xué)生的答案 float right_rate=0;//學(xué)生做10題的正確率 while(right_rate<0.75){system("cls"); right_num=0;right_rate=0;for(i=0;i<10;i++){srand((unsigned)time(NULL)%100+1+i+(unsigned)time(NULL)%100);//播種,產(chǎn)生真隨機數(shù) //隨機產(chǎn)生兩個1-100之間的正整數(shù) a= rand()%100 + 1; srand((unsigned)time(NULL)%100+i);//播種,產(chǎn)生真隨機數(shù) b=rand()%100 + 1;answer=(*p)(a,b);//在屏幕上打印出問題 printf("***********************************************\n");printf("%d%c%d=?\n",a,ch,b);printf("請輸入你的答案:\n");scanf("%d",&stu_answer);if(stu_answer==answer){right_evaluate();//學(xué)生做錯題目時,出現(xiàn)的評語right_num++;} else{wrong_evaluate();//學(xué)生做對題目時,出現(xiàn)的評語}}score=right_num*10;right_rate=right_num/10.0;system("pause");system("cls");printf("本次測試\n學(xué)生的總分:%d分\n回答正確率:%.2f\n",score,right_rate);system("pause");fflush(stdin);//清除標(biāo)準(zhǔn)輸入輸出緩存區(qū)中的內(nèi)容 }}void wrong_evaluate(){//學(xué)生做錯題目時,出現(xiàn)的評語 int choice;//選項srand((unsigned)time(NULL));//播種,產(chǎn)生真隨機數(shù) //隨機產(chǎn)生一個1-4之間的正整數(shù) choice= rand()%4 + 1;switch(choice){case 1:printf("No.Please try again!\n");break;case 2:printf("Wrong. Try once more.\n");break;case 3:printf("Don’t Give up!!!\n");break;case 4:printf("Not correct.Keep Tring.\n");break;default:printf("error!");} }void right_evaluate(){//學(xué)生做對題目時,出現(xiàn)的評語int choice;//選項srand((unsigned)time(NULL));//播種,產(chǎn)生真隨機數(shù) //隨機產(chǎn)生一個1-4之間的正整數(shù) choice= rand()%4 + 1;switch(choice){case 1:printf("Very good!\n");break;case 2:printf("Excellent!\n");break;case 3:printf("Nice work!\n");break;case 4:printf("Keep up the good work!\n");break;default:printf("error!");} } //void exit(){//退出 // exit(0);//正常退出 //}四.功能效果圖
主菜單選項:選擇要練習(xí)的類別(測試加法):
模式菜單:選擇要練習(xí)的模式(進入練習(xí)模式):
測試減法:
進入測試模式:
顯示第一次測試模式學(xué)習(xí)情況:得分率低于0.75,進入下一輪測試模式:
第二次測試模式:
回答正確率高于0.75結(jié)束程序:
五.函數(shù)模塊圖
六.功能流程圖
總結(jié)
以上是生活随笔為你收集整理的小学生计算机辅助教学系统--练习加,减,乘,除法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle查看被锁的表以及解锁表
- 下一篇: JAVA中JPasswordField实