2020-10-11

信息科学与电气工程学院
小学生算术练习系统
本次作业小组成员商讨完成
(V9.0版)在V8.0的基础上,增加保存练习成绩(准确率)功能。在用户退出系统之前,询问用户是否要保存本次练习的成绩,若需要,则提示用户输入自己的昵称,系统则将用户名和成绩保存到文件中。
(V10.0版)在V9.0的基础上,增加“成绩排行榜”功能。即每次保存的成绩按由高到低的顺序排序,用户有兴趣查看自己的成绩在排行榜中位置,增加练习成就感和练习的动力。
版本继续升级:更多更好用的功能请自行添加。

9.0版程序源码
//p代表正确题目的数目,q代表总的题目的数目,q1,q2,q3,q4分别代表加法、减法、乘法、除法正确的数目
float v,v1,v2,v3,v4; //代表总体正确率,v1,v2,v3,v4分别代表加法、减法、乘法、除法总的题目的数目
int m;//代表产生随机数的范围
int main()
{
void menu();//函数声明,显示菜单的函数
void add();//函数声明,加法练习函数
void subtract();//函数声明,减法练习函数
void multiply();//函数声明,乘法练习函数
void divide();//函数声明,除法练习函数
void save();//函数声明,保存成绩的文件的函数
int n;
char h;//h表示用户输入的是否保存成绩
printf("%60s\n",“小学生算术练习系统”);
printf(“说明\n若想进行加法练习请输入阿拉伯数字1\n若想进行减法练习请输入阿拉伯数字2\n若想进行乘法练习请输入阿拉伯数字3\n若想进行除法练习请输入阿拉伯数字4\n若想进行混合运算请输入阿拉伯数字5\n若想退出系统请输入阿拉伯数字6\n”);
printf(“练习时请您在算式后认真的填写您计算的答案,我们会根据您输入的答案来判断对错哦!\n---------------------------------------开始挑战自己吧!--------------------------------------------\n”);
menu();
scanf("%d,%d",&n);//提示用户输入选择,方便判断是否进行循环还是退出系统
/当用户进行加减乘除的选择时/
while(n!=6)
{
printf("\n请输入难度选择:");
scanf("%d",&m);
srand((unsigned int)time(NULL));//设置当前时间为种子,保证每次运行随机数不同
switch(n)
{
/加法练习/
case 1:{add();
break;}
/减法练习/
case 2:{su btract();
break;}
/乘法练习/
case 3:{multiply();
break;}
/除法练习/
case 4:{divide();
break;
}
default:printf(“错误!\n”);
}
menu();
scanf("%d",&n);//提示用户输入选择,方便是否进行循环
}
/当用户输入5时,退出系统/
if(n6)
{v=(float)1.0*p/q;
printf(“总体正确率=%4.2f\n”,v);
printf(“是否需要保存您的成绩?是(Y/y),否(N/n)\n”);
if((h=getchar())
‘Y’||(h=getchar())‘y’)
{
getchar();
save();
}
printf(“退出系统,谢谢使用!\n”);}
return 0;
}
/显示菜单函数/
void menu()
{
printf(“菜单\n1.加法练习 2.减法练习 3.乘法练习 4.除法练习 5.混合运算 6.退出系统\n”);
printf(“难度选择:10以内 20以内 50以内 100以内,请输入;10/20/50/100\n”);
printf("\n请输入您要进行的练习类型:");
}
/加法练习函数/
void add()
{int a,b,sum1,s1;//a,b表示两个随机数,n1表示用户输入的结果,sum1表示正确的结果,p1表示答对的数量,q1表示总体答题数量,v1 k;
printf("--------------开始加法练习-----------------\n");
a=rand()%m;//生成0~m的随机整数
b=rand()%m;//生成0~m的随机整数
sum1=a+b;
/输出加法的算式/
printf("%d+%d=",a,b);
q++;
q1++;
scanf("%d",&s1);//取用户输入的结果
getchar
/判断用户输入的结果是否正确/
if(s1
sum1)
{
printf(“答对啦!你真棒~\n”);
p++;
p1++;
}
else
printf(“答错啦,真可惜。\n”);
v1=(float)p1/q1;
printf(“是否继续做加法练习,是(Y/y),否(N/n):\n”);
k=getchar();
if(k==‘Y’||k==‘y’)
add();
else
printf(“加法正确率:%4.2f\n”,v1);
}
/减法练习函数/
void subtract()
{
int c,d,sum2,s2;//c,d表示两个随机数,n2表示用户输入的结果,sum2表示正确的结果,p2表示答对的数量,q2表示减法总体数量
char k;
printf("-------------------开始减法练习--------------------\n");
c=rand()%m;//生成0~m的随机整数
d=rand()%m;//生成0~m的随机整数
sum2=c-d;
/输出减法的算式/
printf("%d-%d=",c,d);
q++;
q2++;
scanf("%d",&s2);//取用户输入的结果
getchar();
/判断用户输入的结果是否正确/
if(s2sum2)
{
printf(“答对啦!你真棒~\n”);
p2++;
p++;
}
else
printf(“答错啦,真可惜。\n”);
v2=(float)p2/q2;
printf(“是否继续做减法练习,是(Y/y),否(N/n):\n”);
k=getchar();
if(k
’Y’||k==‘y’)
subtract();
else
printf(“减法正确率:%4.2f\n”,v2);
}
/乘法练习函数/
void multiply()
{int e,f,sum3,s3;//e,f表示两个随机数,n3表示用户输入的结果,sum3表示正确的结果,p3表示答对的数量,q3表示总答乘法的数量
char k;
printf("-----------------开始乘法练习--------------------\n");
e=rand()%m;//生成0~m的随机整数
f=rand()%m;//生成0~m的随机整数
sum3=ef;
/输出乘法的算式/
printf("%d
%d=",e,f);
q3++;
q++;
scanf("%d",&s3);//取用户输入的结果
/判断用户输入的结果是否正确/
if(s3sum3)
{
printf(“答对啦!你真棒~\n”);
p3++;
p++;
}
else
printf(“答错啦,真可惜。\n”);
v3=(float)p3/q3;
printf(“是否继续做乘法练习,是(Y/y),否(N/n):\n”);
k=getchar();
if(k
’Y’||k==‘y’)
multiply();
else
printf(“乘法正确率:%4.2f\n”,v3);
}
/除法练习函数/
void divide()
{int g,h,sum4,s4;//g,h表示两个随机数,n4表示用户输入的结果,sum4表示正确的结果,p4表示答对的数量,q4表示总除法的数量
char k;
printf("-------------------开始除法练习(注:结果保留整数哦,不需要保留小数哦!)---------------------\n");
g=rand()%m;//生成0~m的随机整数
h=rand()%m+1;//生成1~m的随机整数(除数不能为0)
sum4=g/h;
/输出除法的算式/
printf("%d/%d=",g,h);
q++;
q4++;
scanf("%d",&s4);//取用户输入的结果
/判断用户输入的结果是否正确/
if(s4sum4)
{
printf(“答对啦!你真棒~\n”);
p4++;
p++;
}
else
printf(“答错啦,真可惜。\n”);
v4=(float)p4/q4;
printf(“是否继续做除法练习,是(Y/y),否(N/n):\n”);
k=getchar();
if(k
’Y’||k==‘y’)
divide();
else
printf(“除法正确率:%4.2f\n”,v4);
}
void save()
{
FILE *fp;
/打开文件/
if((fp=fopen(“reserve.txt”,“w+”))==NULL) //为了读和写打开一个文件并判断是否成功打开
{
printf(“文件不能正确打开\n”);
return;
}
printf(“请输入您的名字:”);
gets(student1.name);
student1.score[0]=v;
student1.score[1]=v1;
student1.score[2]=v2;
student1.score[3]=v3;
student1.score[4]=v4;
if(fwrite(&student1,sizeof(struct grade),1,fp)!=1)
printf(“文件写入数据失败\n”);
fclose(fp);
}

运行结果
若想退出系统请输入阿拉伯数字6
练习时请您在算式后认真的填写您计算的答案,我们会根据您输入的答案来判断对错哦!
---------------------------------------开始挑战自己吧!--------------------------------------------
菜单
1.加法练习 2.减法练习 3.乘法练习 4.除法练习 5.混合运算 6.退出系统
难度选择:10以内 20以内 50以内 100以内,请输入;10/20/50/100

请输入您要进行的练习类型:1

请输入难度选择:10
--------------开始加法练习-----------------
7+9=2
答错啦,真可惜。
是否继续做加法练习,是(Y/y),否(N/n):
n
加法正确率:0.00
菜单
1.加法练习 2.减法练习 3.乘法练习 4.除法练习 5.混合运算 6.退出系统
难度选择:10以内 20以内 50以内 100以内,请输入;10/20/50/100

请输入您要进行的练习类型:6
总体正确率=0.00
是否需要保存您的成绩?是(Y/y),否(N/n)
y
请输入您的名字:小明
收获:
1,通过从1.0到9.0的系统步步升级,发现每次升级都是在原有基础上改动,很少动大手术,
2,系统在设计的时候架构很重要,特别是随着子系统越来越多的时候,只有先做好框架才有条理性,
3,C语言规范使用才能让团队里的每个成员都以最快的速度去理解程序的设计思路,后面的解释也很重要,
4,最后完善要有人性化的用户界面,尽量生动易懂,方便系统的使用

这是一个 SQL 语句,用于向借阅表中插入数据。该表包含以下字段:借阅编号、读者编号、书籍编号、借阅日期、归还日期、借阅状态。每条数据表示一次借阅记录。其中借阅编号、读者编号、书籍编号、借阅日期和借阅状态是必填项,归还日期为可选项,如果借阅状态为“已还”则必须填写归还日期。 具体插入的数据如下: - 借阅编号:100001,读者编号:123413,书籍编号:0001,借阅日期:2020-11-05,归还日期:NULL,借阅状态:借阅 - 借阅编号:100002,读者编号:223411,书籍编号:0002,借阅日期:2020-9-28,归还日期:2020-10-13,借阅状态:已还 - 借阅编号:100003,读者编号:321123,书籍编号:1001,借阅日期:2020-7-01,归还日期:NULL,借阅状态:过期 - 借阅编号:100004,读者编号:321124,书籍编号:2001,借阅日期:2020-10-09,归还日期:2020-10-14,借阅状态:已还 - 借阅编号:100005,读者编号:321124,书籍编号:0001,借阅日期:2020-10-15,归还日期:NULL,借阅状态:借阅 - 借阅编号:100006,读者编号:223411,书籍编号:2001,借阅日期:2020-10-16,归还日期:NULL,借阅状态:借阅 - 借阅编号:100007,读者编号:411111,书籍编号:1002,借阅日期:2020-9-01,归还日期:2020-9-24,借阅状态:已还 - 借阅编号:100008,读者编号:411111,书籍编号:0001,借阅日期:2020-9-25,归还日期:NULL,借阅状态:借阅 - 借阅编号:100009,读者编号:411111,书籍编号:1001,借阅日期:2020-10-08,归还日期:NULL,借阅状态:借阅
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值