小学生测验

关于这段代码:

  • 数据存放在一个叫data的文件中
  • 增加了结构体排序,对小学生们的成绩排名
  • 其他要求如同题干

 大一时写的版本,没文件读写,大三时写的在下面。

项目一 小学生测验         16学时

问题描述:面向小学1~2年级学生,随机选择两个整数的加减法形成算式要求学生解答。

1.基本要求

(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;

(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或差超出0~50的范围,负数更是不允许的;

(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;

(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;

 (5)总成绩90以上显示“SMART”,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN”

 

#include    
#include    
#include   
#include
#include 
using namespace std;

typedef struct node
{
	int jiajian;
	int num1;
	int num2;
	int trytimes;
}specific;
specific informat[10];
 
 void changesi(int p)
 {
 	if(p==0)cout<<"+";
 	if(p==1)cout<<"-";
 }

int getgrade(int m)//把做错的次数转换成应得的分数return 
{
	if(m==0)return 10;
	if(m==1)return 7;
	if(m==2)return 5;
	if(m==3)return 0;
}

int suijishu(int &a,int &b,int &c,int t)  
{    
    int a1,b1;    
    do    
    {    
        a1=rand()%50;    
        b1=rand()%50;    
            
    }while(!(a1+b1>=0&&a1+b1<=50&&a1-b1>=0&&a1-b1<=50));    
        
    informat[t].num1=a=a1;    
    informat[t].num2=b=b1;    
    informat[t].jiajian=c=rand()%2; 
    
    return 0;    
}    
    
void show_rank(int sum)
{
	cout<=90)cout<<"Rank:SMART"<=80)cout<<"Rank:GOOD"<=70)cout<<"Rank:OK"<=60)cout<<"Rank:PASS"<

大三时重写的版本,有文件读写,有排序

小学生测验系统
面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。
功能要求:
(1)电脑随机出10道题,每题10分,程序结束时显示学生得分并记录该学生的名称;
(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;
(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;
(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;
(5)总成绩90以上显示“SMART”,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN”
(6) 根据得分高低排序显示所有用户的成绩;
(7)用户输入名称,获得其得分信息。
         (二)其它要求:
(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读
(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)
(3)学生可自动增加新功能模块(视情况可另外加分)
(4)写出课程设计报告,具体要求见相关说明文档

部分运行截图,因为没有积分了,所以设置的积分下载,没有的话可以私信我。

小学生测验_第1张图片

小学生测验_第2张图片

小学生测验_第3张图片

小学生测验_第4张图片

#include    
#include    
#include   
#include
#include 
#include
using namespace std;


int UserNumber=0;//所有用户数  

typedef struct node
{
	int jiajian;//1代表加法,0代表减法 
	int num1;
	int num2;
	int ans;
	int trytimes;//错误次数,0是直接做对,十分。1为错误一次,七分。2为错误两次,五分。错了三次,不得分。 
	int sum;
}question;
question que[11];//问题结构体,用来保存生成的测试的问题 

typedef struct node1
{
	string name;
	int grade;
}StudentItem;
StudentItem temp;//当前学生的情况 
StudentItem StudentList[300];//打开文件之后用这个来维护考过试的学生的信息 

string changeaddsub(int op)// 把代表加法减法的1或0转成字符串 
{
	string str1="+";
	string str0="-";
	if(op==1)return str1;
	else return str0;
	
}

void ShowRank(int mark)//显示成绩的等级 
{
	
	if(mark>90)cout<<"SMART"<80)cout<<"GOOD"<60)cout<<"Pass"<=0&&a1+b1<=50&&a1-b1>=0&&a1-b1<=50));    
        
    quee.num1=a1;    
    quee.num2=b1;    
    quee.jiajian=rand()%2;
    if(quee.jiajian==1) quee.ans=a1+b1;
    else quee.ans=a1-b1;
    quee.trytimes=0; 
    quee.sum=0;
    
    return 0;    
}    

void InitQuestion()//初始化问题 
{
	srand(time(NULL));
	for(int i=0;i<=10;i++)
	{
		suiji(que[i]);
	}
}

//对每一题测试过程 
void EachQsestionText(question &quee,int t)
{
	int tempinput;
	int cnt=0;
	system("cls");
	cout<<"当前是第"<>tempinput;
	if(tempinput==quee.ans){
		quee.sum+=10;
		return;
	}
	else quee.trytimes++;
	system("cls");
	cout<<"你输错了一次,请重新尝试"<>tempinput;
	if(tempinput==quee.ans){
		quee.sum+=7;
		return;
	}
	else quee.trytimes++;
	system("cls");
	cout<<"你输错了两次,请重新尝试"<>tempinput;
	if(tempinput==quee.ans){
		quee.sum+=5;
		return;
	}
	else quee.trytimes++;
	system("cls");
	cout<<"你输错了三次,答案是"<>temp.name;
	
		
	
	StudentList[UserNumber].name=temp.name;
	StudentList[UserNumber].grade=temp.grade;
	

	UserNumber++;
	
	SortUser();
	SaveFile();
	
	ShowRank(temp.grade);
	
 } 




//显示所有的成绩 ,先读出文件里的信息, 
int ShowAllGrades()
{
	system("cls");
	cout<<"共"<>mode;
	}while(mode>4|mode<1);
	return mode;
	 
 } 
 


 
//输入人名,从文件里查询成绩信息,从上至下,找到匹配的利用id输出成绩 
void QueryGrade()
{
	system("cls");
	string name;
	cout<<"请输入要查询的姓名"<>name;
	
	for(int i=1;i>UserNumber;

    for(int i=0;i>StudentList[i].name>>StudentList[i].grade;
	}
        
    fin.close();
 }

void Welcome()//欢迎界面 
{
	cout<<"-------------------------欢迎使用小学生测验系统----------------------------"<

用devc++来编译

要在.exe文件夹下有一个名为data的文件

小学生测验_第5张图片

格式为

第一个是数字(总人数),之后姓名和分数用空格隔开

你可能感兴趣的:(小学生测验)