手机网站建设中心,微信小程序模板免费下载,网站怎么申请支付宝接口,专业的网站首页建设公司关于这段代码#xff1a; 数据存放在一个叫data的文件中增加了结构体排序#xff0c;对小学生们的成绩排名其他要求如同题干大一时写的版本#xff0c;没文件读写#xff0c;大三时写的在下面。
项目一 小学生测验 16学时
问题描述#xff1a;面向小学1~2年级学… 关于这段代码 数据存放在一个叫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” #includeiostream
#includestdlib.h
#includemath.h
#includestdio.h
#includetime.h
using namespace std;typedef struct node
{int jiajian;int num1;int num2;int trytimes;
}specific;
specific informat[10];void changesi(int p){if(p0)cout;if(p1)cout-;}int getgrade(int m)//把做错的次数转换成应得的分数return
{if(m0)return 10;if(m1)return 7;if(m2)return 5;if(m3)return 0;
}int suijishu(int a,int b,int c,int t)
{ int a1,b1; do { a1rand()%50; b1rand()%50; }while(!(a1b10a1b150a1-b10a1-b150)); informat[t].num1aa1; informat[t].num2bb1; informat[t].jiajiancrand()%2; return 0;
} void show_rank(int sum)
{coutendlendl;cout总分sumendl;if(sum90)coutRank:SMARTendl; else if(sum90sum80)coutRank:GOODendl; else if(sum80sum70)coutRank:OKendl; else if(sum70sum60)coutRank:PASSendl; else coutplease TRE AGAINendl;
}int main()
{ srand(time(NULL));cout----------------------------pupil exercise system---------------------------- endl; int t1,cnt0,sum0,a,b,c,ans; while(t10) { coutthis is the t questionendl; suijishu(a,b,c,t); while(cnt3) { if(c0)//add { printf(%d%d,a,b); scanf(%d,ans); if(abans) { coutRightendl; break; } else { cnt; coutWrong!!endl; if(cnt3) { //cnt; coutanwser:abendl; break; } } } else if(c1) { printf(%d-%d,a,b); scanf(%d,ans); if(a-bans) { coutRightendl; break; } else { cnt; coutWrong!!endl; if(cnt3) { coutanwser is:a-bendl; break; } } } } informat[t].trytimescnt;if(cnt0)sum10; if(cnt1)sum7; if(cnt2)sum5; t; cnt0; coutendlendl; cout--------------------------------------------------------------------- endl; } show_rank(sum);coutendlendl;for(int i1;i10;i){cout第i题:informat[i].num1;changesi(informat[i].jiajian);coutinformat[i].num2;if(informat[i].jiajian0)coutinformat[i].num1informat[i].num2endl;else if(informat[i].jiajian1)coutinformat[i].num1-informat[i].num2endl;cout你错了informat[i].trytimes次得了getgrade(informat[i].trytimes); cout分endl; } //getchar();getchar();
} 大三时重写的版本有文件读写有排序
小学生测验系统 面向小学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写出课程设计报告具体要求见相关说明文档
部分运行截图因为没有积分了所以设置的积分下载没有的话可以私信我。 #includeiostream
#includestdlib.h
#includemath.h
#includestdio.h
#includetime.h
#includefstream
using namespace std;int UserNumber0;//所有用户数 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(op1)return str1;else return str0;}void ShowRank(int mark)//显示成绩的等级
{if(mark90)coutSMARTendl;else if(mark80)coutGOODendl;else if(mark60)coutPassendl;else coutTRY AGAINendl; getchar();getchar();
}int suiji(question quee) //随机生成数字初始化一个题目的结构体
{ int a1,b1; do { a1rand()%50; b1rand()%50; }while(!(a1b10a1b150a1-b10a1-b150)); quee.num1a1; quee.num2b1; quee.jiajianrand()%2;if(quee.jiajian1) quee.ansa1b1;else quee.ansa1-b1;quee.trytimes0; quee.sum0;return 0;
} void InitQuestion()//初始化问题
{srand(time(NULL));for(int i0;i10;i){suiji(que[i]);}
}//对每一题测试过程
void EachQsestionText(question quee,int t)
{int tempinput;int cnt0;system(cls);cout当前是第t个题目:endl;coutquee.num1changeaddsub(quee.jiajian)quee.num2___endl请输入你的答案:;cintempinput;if(tempinputquee.ans){quee.sum10;return;}else quee.trytimes;system(cls);cout你输错了一次,请重新尝试endl;coutquee.num1changeaddsub(quee.jiajian)quee.num2___endl请输入你的答案:;cintempinput;if(tempinputquee.ans){quee.sum7;return;}else quee.trytimes;system(cls);cout你输错了两次,请重新尝试endl;coutquee.num1changeaddsub(quee.jiajian)quee.num2___endl请输入你的答案:;cintempinput;if(tempinputquee.ans){quee.sum5;return;}else quee.trytimes;system(cls);cout你输错了三次,答案是quee.ansendl输入任意键进入下一题;getchar();getchar();return; }void SortUser()//在这个里面对所有用户进行排序
{StudentItem t;for(int i0;iUserNumber-1;i){for(int j0;jUserNumber-1-i;j){if(StudentList[j].grade StudentList[j1].grade){t.nameStudentList[j].name;t.gradeStudentList[j].grade;StudentList[j].nameStudentList[j1].name;StudentList[j].gradeStudentList[j1].grade;StudentList[j1].namet.name;StudentList[j1].gradet.grade;}}}} void SaveFile()//保存用户信息到文件
{
ofstream fout(data,ios::out);if(!fout){ printf(errror!\n); exit(-1); } SortUser();foutUserNumberendl;for(int i0;iUserNumber;i){foutStudentList[i].name StudentList[i].grade ;}fout.close(); } //一个人的测验过程 ,做十题
int EachPersonTest()
{InitQuestion();//初始化问题//测试过程控制for(int i1;i10;i){EachQsestionText(que[i],i);temp.gradeque[i].sum;}//对 StudentItem temp维护 string studentname;system(cls);cout请输入你的姓名endl; cintemp.name;StudentList[UserNumber].nametemp.name;StudentList[UserNumber].gradetemp.grade;UserNumber;SortUser();SaveFile();ShowRank(temp.grade);} //显示所有的成绩 先读出文件里的信息
int ShowAllGrades()
{system(cls);cout共UserNumber个用户endl; for(int i0;iUserNumber;i){coutStudentList[i].name的成绩 StudentList[i].gradeendl;}getchar();getchar();} //主要的交互界面
int Menu()
{system(cls);cout请选择功能:endl;cout1.进入测试endl;cout2.显示其所有人的的成绩endl;cout3.成绩查询endl;cout4.退出endl;int mode;do{cinmode;}while(mode4|mode1);return mode;} //输入人名从文件里查询成绩信息从上至下找到匹配的利用id输出成绩
void QueryGrade()
{system(cls);string name;cout请输入要查询的姓名endl;cinname;for(int i1;iUserNumber;i){if(nameStudentList[i].name){system(cls);coutname的成绩StudentList[i].gradeendl;getchar();getchar();return; }}system(cls);coutname 查无此人endl; getchar();getchar();
}void ReadFile()//读文件到结构体 {ifstream fin(data,ios::in);if(!fin){couterrorendl;exit(-1);}finUserNumber;for(int i0;iUserNumber;i){finStudentList[i].nameStudentList[i].grade;}fin.close();}void Welcome()//欢迎界面
{cout-------------------------欢迎使用小学生测验系统----------------------------endl; coutendlendlendlendlendlendlendlendlendl;cout Created By endl; coutendlendlendlendlendlendlendlendlendl;cout##########################回车键进入使用###################################endl;getchar();
}int main(){ReadFile();Welcome();while(1)//选择功能 {int modeMenu();switch(mode){case 1:EachPersonTest();break;case 2:ShowAllGrades();break;case 3:QueryGrade();break;case 4:exit(1);}}}
用devc来编译
要在.exe文件夹下有一个名为data的文件 格式为
第一个是数字总人数之后姓名和分数用空格隔开