C语言课程设计小学生算术四则运算测试系统.docx
- 文档编号:28713107
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:26
- 大小:19.50KB
C语言课程设计小学生算术四则运算测试系统.docx
《C语言课程设计小学生算术四则运算测试系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计小学生算术四则运算测试系统.docx(26页珍藏版)》请在冰豆网上搜索。
C语言课程设计小学生算术四则运算测试系统
#ifndefH_STUDENT_HH
#defineH_STUDENT_HH
#include"stdio.h"
#include"string.h"
#include"malloc.h"
#defineLENsizeof(structmessage_student)/*一个结构体数组元素的长度*/
#definenumsubs5/*学科数目*/
typedefstructmessage_student/*结构体定义*/
{
charnumber[6];
charname[20];
charsex[4];
floatsubject[numsubs];
floatscore;
floataverage;
intindex;
}student;
externintnumstus;/*学生数目*/
externstudent*pointer;/*指向结构体数组*/
externintlens;
intmenu_select();/*函数声明*/
intopenfile(studentstu[]);
intfindrecord(studentstud[]);
intwritetotext(studentstud[]);
voidwelcome();
voiddisplay1();
voidshowtable();
voidsort(studentstu[]);
voiddeleterecord(studentstu[],inti);
voidaddrecord(studentstud[]);
voiddisplay(studentstud[],intn1,intn2);
voidamendrecord(studentstud[]);
voidcount(studentstud[]);
voidsortnum(studentstud[]);
voidsortnum2(studentstud[]);
voidsortname(studentstud[]);
voidsortname2(studentstud[]);
voidsortcount(studentstud[]);
voidsortcount2(studentstud[]);
voidstatistic(studentstud[]);
voiddisplay1();
#endif
//#include"head.h"
intmenu_select()
{
charc;
printf("\n\n");
printf("|1.增加学生记录5.统计信息|\n");
printf("|2.查询学生记录6.打开文件|\n");
printf("|3.修改学生记录7.保存文件|\n");
printf("|4.学生纪录排序8.显示记录|\n");
printf("|0.退出系统|\n");
printf("\n\n");
printf("请选择(0-8):
");
c=getchar();
getchar();
return(c-'0');
}
//#include"head.h"
intfindrecord(studentstud[])/*查找信息*/
{
charstr[2];
inti,num;
if(numstus==0)
{
printf("没有可被查找的记录\n");
return-1;
}
else
{
printf("以何种方式查找?
\n1.学号\t2.姓名\t3.名次\n");
gets(str);
if(str[0]=='1')/*按学号查找*/
{
printf("请输入学号:
");
gets(str);
for(i=0;i<=numstus;i++)
if(strcmp(str,stud[i].number)==0)
{
display(stud,i,i);
break;
}
elsecontinue;
}
elseif(str[0]=='2')/*按姓名查找*/
{
printf("请输入姓名:
");
gets(str);
for(i=0;i<=numstus;i++)
if(strcmp(str,stud[i].name)==0)
{
display(stud,i,i);
break;
}
elsecontinue;
}
elseif(str[0]=='3')/*按名次查找*/
{
printf("请输入名次:
");
scanf("%d",&num);
getchar();
for(i=0;i<=numstus;i++)
if(num==stud[i].index)
{
display(stud,i,i);
break;
}
elsecontinue;
}
if(i>numstus)
{
printf("没有查找所要的信息。
\n");
return-1;
}
returni;
}
}
//#include"head.h"
intopenfile(studentstu[])
{
inti=0,j;
FILE*fp;
charfilename[20],str[2];
if(numstus!
=0)
{
printf("已经有记录存在,是否保存?
(y/n)");
gets(str);
if(str[0]=='y'||str[0]=='Y')
writetotext(stu);
}
printf("请输入文件名:
");
gets(filename);
numstus=0;
if((fp=fopen(filename,"rb+"))==NULL)
{
printf("无法打开该文件\n");
return(-1);
}
fscanf(fp,"%d",&numstus);
fgetc(fp);
while(i { fscanf(fp,"%s",stu[i].number); fscanf(fp,"%s",stu[i].name); fscanf(fp,"%s",stu[i].sex); for(j=0;j fscanf(fp,"%f",&stu[i].subject[j]); fscanf(fp,"%f",&stu[i].score); fscanf(fp,"%f",&stu[i].average); fscanf(fp,"%d",&stu[i].index); i++; } fclose(fp); printf("文件读取成功\n"); printf("是否显示纪录? (y/n)"); gets(str); if(str[0]=='y'||str[0]=='Y') display(stu,0,numstus-1); return(0); } //#include"head.h" voidsort(studentstud[]) { inti,j=0; charstr[5]; student*p; p=stud; if(numstus==0) { printf("没有可供查询的记录! "); } while (1) { for(i=0;;i++) { printf("请输入查询方式: "); printf("(直接输入回车则结束查询操作)\n"); printf("1.按照学号\t"); printf("2.按照姓名\t"); printf("3.按照名次\n"); gets(str); if(strlen(str)==0)break; if(str[0]=='1') { printf("请输入排序次序: \n"); printf("1.升序排列\t"); printf("2.降序排列\n"); gets(str); if(str[0]=='1') sortnum2(p); else sortnum(p); display(stud,0,numstus-1); } elseif(str[0]=='2') { printf("请输入排序次序: \n"); printf("1.升序排列\t"); printf("2.降序排列\n"); gets(str); if(str[0]=='1') sortname2(p); else sortname(p); display(stud,0,numstus-1); } elseif(str[0]=='3') { printf("请输入排序次序: \n"); printf("1.升序排列\t"); printf("2.降序排列\n"); gets(str); if(str[0]=='1') sortcount2(p); else sortcount(p); display(stud,0,numstus-1); } elseprintf("请输入1~3"); printf("是否退出排序? (y/n)"); gets(str); if(str[0]=='y'||str[0]=='Y')break; } return; } } voidsortnum(studentstud[]) { inti,j; studenttemp; student*p; p=stud; for(i=0;i for(j=0;j { if(strcmp(stud[j+1].number,stud[j].number)>0) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } } voidsortnum2(studentstud[]) { inti,j; studenttemp; student*p; p=stud; for(i=0;i for(j=0;j { if(strcmp(stud[j].number,stud[j+1].number)>0) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } } voidsortname(studentstud[]) { inti,j; studenttemp; student*p; p=stud; for(i=0;i for(j=0;j { if(strcmp(stud[j+1].name,stud[j].name)>0) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } } voidsortname2(studentstud[]) { inti,j; studenttemp; student*p; p=stud; for(i=0;i for(j=0;j { if(strcmp(stud[j].name,stud[j+1].name)>0) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } } voidsortcount(studentstud[]) { inti,j; studenttemp; student*p; p=stud; for(i=0;i for(j=0;j { if(stud[j+1].index>stud[j].index) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } } voidsortcount2(studentstud[]) { inti,j; studenttemp; student*p; p=stud; for(i=0;i for(j=0;j { if(stud[j].index>stud[j+1].index) { temp=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=temp; } } } //#include"head.h" voidstatistic(studentstud[])/*新增功能,输出统计信息*/ { inti,j=0,k=0; charc1,str[2]; floataverage[numsubs],sum=0; if(numstus==0) printf("没有可被查找的记录\n"); else { while (1) { printf("下面将统计考试成绩\n"); printf("请选择你要统计哪科的成绩1.A\t2.B\t3.C\t4.D\t5.E\n"); c1=getchar(); printf("\t一共有个%d记录\n",numstus);/*总共记录数*/ switch(c1) { case'1': for(i=0;i { sum+=stud[i].subject[0]; if(stud[k].subject[0]>stud[i].subject[0])k=i; if(stud[j].subject[0] } average[0]=sum/numstus; printf("\t科目A的最高分: \n");/*最高分*/ printf("\t\t学号: %s姓名: %s分数: %.2f\n",stud[j].number,stud[j].name,stud[j].subject[0]); printf("\t科目A的最低分是: \n");/*最低分*/ printf("\t\t学号: %s姓名: %s分数: %.2f\n",stud[k].number,stud[k].name,stud[k].subject[0]); printf("\t科目A的平均分是%5.2f\n",average[0]);/*平均分*/ break; case'2': for(i=0;i { sum+=stud[i].subject[1]; if(stud[k].subject[1]>stud[i].subject[1])k=i; if(stud[j].subject[1] } average[1]=sum/numstus; printf("\t科目B的最高分: \n");/*最高分*/ printf("\t\t学号: %s姓名: %s分数: %.2f\n",stud[j].number,stud[j].name,stud[j].subject[1]); printf("\t科目B的最低分是: \n");/*最低分*/ printf("\t\t学号: %s姓名: %s分数: %.2f\n",stud[k].number,stud[k].name,stud[k].subject[1]); printf("\t科目B的平均分是%5.2f\n",average[1]);/*平均分*/ break; case'3': for(i=0;i { sum+=stud[i].subject[2]; if(stud[k].subject[2]>stud[i].subject[2])k=i; if(stud[j].subject[2] } average[2]=sum/numstus; printf("\t科目C的最高分: \n");/*最高分*/ printf("\t\t学号: %s姓名: %s分数: %.2f\n",stud[j].number,stud[j].name,stud[j].subject[2]); printf("\t科目C的最低分是: \n");/*最低分*/ printf("\t\t学号: %s姓名: %s分数: %.2f\n",stud[k].number,stud[k].name,stud[k].subject[2]); printf("\t科目C的平均分是%5.2f\n",average[2]);/*平均分*/ break; case'4': for(i=0;i { sum+=stud[i].subject[3]; if(stud[k].subject[3]>stud[i].subject[3])k=i; if(stud[j].subject[3] } average[3]=sum/numstus; printf("\t科目D的最高分: \n");/*最高分*/ printf("\t\t学号: %s姓名: %s分数: %.2f\n",stud[j].number,stud[j].name,stud[j].subject[3]); printf("\t科目D的最低分是: \n");/*最低分*/ printf("\t\t学号: %s姓名: %s分数: %.2f\n",stud[k].number,stud[k].name,stud[k].subject[3]); printf("\t科目D的平均分是%5.2f\n",average[3]);/*平均分*/ break; case'5': for(i=0;i { sum+=stud[i].subject[4]; if(stud[k].subject[4]>stud[i].subject[4])k=i; if(stud[j].subject[4] } average[4]=sum/numstus; printf("\t科目E的最高分: \n");/*最高分*/ printf("\t\t学号: %s姓名: %s分数: %.2f\n",stud[j].number,stud[j].name,stud[j].subject[4]); printf("\t科目E的最低分是: \n");/*最低分*/ printf("\t\t学号: %s姓名: %s分数: %.2f\n",stud[k].number,stud[k].name,stud[k].subject[4]); printf("\t科目E的平均分是%5.2f\n",average[4]);/*平均分*/ break; default: printf("输入错误! 请输入1~5之间的数\n"); } sum=0; getchar(); printf("是否继续进行统计? (y/n)"); gets(str); if(str[0]=='y'||str[0]=='Y'); elsebreak; } } } intwritetotext(studentstud[])/*将所有记录写入文件*/ { inti=0,j; FILE*fp; charfilename[20]; printf("输入文件名称: "); gets(filename); fp=fopen(filename,"w"); fprintf(fp,"%d\n",numstus); while(i { fprintf(fp,"%s%s%s",stud[i].number,stud[i].name,stud[i].sex); for(j=0;j fprintf(fp,"%f",stud[i].subject[j]); fprintf(fp,"%f%f%d",stud[i].score,stud[i].average,stud[i].index); i++; } fclose(fp); printf("已成功存储! \n"); display(stud,0,numstus-1); numstus=0; return0; } voidwelcome() { printf("\t*************************************************************\n"); printf("\t\t\t\t**学生成绩管理系统**\n\t\t\t\t倾情奉献欢迎使用! \n"); printf("\t********************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 小学生 算术 四则运算 测试 系统