四则运算练习&竞赛系统(结对编程)

发布时间 2023-04-12 23:23:12作者: NaCly__Fish

四则运算练习&竞赛系统(结对编程)

伙伴:2152334

项目要求

小学老师要每周给同学出300道四则运算练习题
一或两个运算符(a+b或a+b+c), 100以内的数字,不需要写答案。需要检查答案是否正确,并且保证答案在0..100之间
尽可能地多设置一些条件。
请两位同学以结对编码(一个同学coding,另一个同学在旁边审核代码,之后再交换角色)的方式完成本次实验,并把程序、运算结果、博客体会等截屏发到其中一位同学的博客上,并在博客中体现另一位同学的学号(仅学号不体现姓名)


增添功能:

  • 系统分为练习系统和竞赛系统
  • 练习系统更方便同学自己控制练习题数目,也方便老师控制练习题数目
  • 竞赛系统还有计时系统,用来限制完成的时间
  • 两个系统都有计分功能,用户可以实时了解到自己的目前得分
  • 在练习系统内,用户答错题目时可以知道题目的正确答案,而竞赛系统则不行

实现代码(点击下面按钮查看完整项目代码)

点击查看代码

#include<bitsdc++.h>
#include<windows.h>
using namespace std;

int a,b,c;
int ans;
int p;
int cnt;
int score=0;

void practise(){
        system("cls");
	cout<<"欢迎使用波涛四则运算练习系统!"<<endl<<endl;
	cout<<"请输入需要练习的题目数:"<<endl;
	cin>>cnt;
	system("cls");
	cout<<"欢迎使用波涛四则运算练习系统!"<<endl;
	cout<<"习题还有3秒到达屏幕,请做好准备!"<<endl;
	cout<<"loading..";
	for(int i=1;i<=10;i++){
		Sleep(300);
		cout<<".";
	}
	while(cnt--){
		system("cls");
		cout<<"欢迎使用波涛四则运算练习系统!"<<endl;
		cout<<endl<<"你当前的分数为"<<score<<endl;
		cout<<endl<<"剩余习题数:"<<cnt<<endl<<endl; 
		srand(time(NULL));
		while(1){
			a=rand()%99+1;
			b=rand()%100;
			p=rand()%4+1;
			switch(p){
				case 1:
					ans=a+b;
					break;
				case 2:
					ans=a-b;
					break;
				case 3:
					ans=a*b;
					break;
				case 4:
					ans=rand()%14+1;
					b=rand()%7+1;
					a=ans*b;
			}
			if(ans<0||ans>=100) continue;
			
			else{
				cout<<a<<(p==1?'+':(p==2?'-':(p==3)?'*':'/'))<<b<<"=";
				double in;
				cin>>in;
				if(in==ans) {
					score++;
					cout<<"回答正确!"<<endl;
					system("pause");
				}
				else{
					cout<<"答案错误QAQ"<<endl; 
					cout<<"正确答案为:"<<ans<<endl;
					system("pause");
				}
				break;
			}
		}
		if(cnt==0) {
			system("cls");
			cout<<endl<<"你最终得分为"<<score<<"分"<<endl;
			system("pause");
		}
	}
}

void contest(){
	clock_t begin ,end;
	system("cls");
	cout<<"欢迎使用波涛四则运算竞赛系统!"<<endl<<endl;
	cout<<"请在15分钟内完成100道,祝你好运!"<<endl;
	cnt=100;
	cout<<endl<<"题目还有5秒到达屏幕,请做好准备!"<<endl;
	cout<<"loading..";
	for(int i=1;i<=10;i++){
		Sleep(500);
		cout<<".";
	}
	begin=clock();
	while(cnt--){
		system("cls");
		cout<<"欢迎使用波涛四则运算竞赛系统!"<<endl;
		cout<<endl<<"你当前的分数为"<<score<<endl;
		cout<<endl<<"剩余习题数:"<<cnt<<endl<<endl; 
		srand(time(NULL));
		while(1){
			a=rand()%99+1;
			b=rand()%100;
			p=rand()%4+1;
			switch(p){
				case 1:
					ans=a+b;
					break;
				case 2:
					ans=a-b;
					break;
				case 3:
					ans=a*b;
					break;
				case 4:
					ans=rand()%14+1;
					b=rand()%7+1;
					a=ans*b;
			}
			if(ans<0||ans>=100) continue;
			
			else{
				cout<<a<<(p==1?'+':(p==2?'-':(p==3)?'*':'/'))<<b<<"=";
				
				double in;
				cin>>in;
				if(in==ans) {
					score++;
					cout<<"回答正确!"<<endl;
					system("pause");
				}
				else{
					cout<<"答案错误QAQ"<<endl; 
//					cout<<"正确答案为:"<<ans<<endl;
					system("pause");
				}
				break;
			}
		}
		if(cnt==0) {
			system("cls");
			end=clock();
			cout<<endl<<"你最终得分为"<<score<<"分"<<endl;
			cout<<"你最终耗时"<<(end-begin)/1000<<"秒"<<endl;
			if(end-begin>=900000) cout<<"超时!请继续努力"<<endl;
			else cout<<"成功在规定时间内完成,请继续加油!"<<endl; 
			system("pause");
		}
	}
}

int main()
{
	cout<<"欢迎使用波涛四则运算系统!"<<endl;
	cout<<"1.练习系统"<<endl<<"2.竞赛系统"<< endl<<"请选择使用的功能(输入1或2):"<<endl;
	int op1;
	cin>>op1;
	if(op1==1) practise();
	else contest();
	return 0;
 } 

功能截图

  1. 目录界面:

  1. 练习系统





  1. 竞赛系统






实现方法

  • 随机出题

    使用随机数函数分别产生两个运算数和一个运算符数(1代表‘+’、2代表‘-’等),并且用%运算保证在100以内产生计算数。

  • 判断对错

    系统在出题后会自动计算出所出题目的答案,如果算出来答案不符合要求(0~100)则不输出并且重新生成新的题目。算出来的答案将与用户输入的输入相比较,相等则分数加一,不等则分数不变。

  • 计算时间

    利用clock()函数来获取用户开始答题和结束答题的时间,并判断是否超过规定时间,超过了则成绩无效,未超过则有效。


总结

这次结对编程让我们了解到这种编程模式的优越之处,它能够降低我们的代码出错率,并能够增加代码的编辑效率。未来我们也许会将这种编程方法应用于更多的项目开发过程中。