C语言学生成绩管理系统编码.doc
《C语言学生成绩管理系统编码.doc》由会员分享,可在线阅读,更多相关《C语言学生成绩管理系统编码.doc(14页珍藏版)》请在冰点文库上搜索。
#include
#include
#include
#include
#definekemu10//最多考试科目
//函数声明部分
voidmenu();//界面
voidquanbu();//显示全部数据
voidinsert();//增加数据
voidchange();//修改学生数据
voiddele();//删除数据
voidfind();//查看某位同学记录
voidpingjun();//按平均分排序
//voidquanbu();//
//结构
structstudent
{
charxue[20];//学号
charming[10];//姓名
floatchengji[kemu];//M门成绩
floatzong;//总分
floatpingjun;//平均分
}xuesheng[100],xuesheng2[100],x2;//我假设一次最多有100名学生要输入数据
//////////////////////////////
voidinsert()//增加数据函数
{
inti;
charyn;
chardaiti[20];
FILE*fp=NULL;/*定义文件指针*/
fp=fopen("学生记录.txt","a+");
if((fp)==NULL)/*如果打开文件失败,则结束程序*/
{
printf("文件不存在!
\n");
getch();/*待按任意键继续*/
exit(0);/*终止程序*/
}
for(i=0;i<100;i++)
{
if(i%2==0)
{
printf("要加入学生数据吗?
y/n:
\n");
}
scanf("%c",&yn);
if(yn=='n')
{
break;
}
elseif(yn=='y')
{
printf("请输入5位数以内的学号:
");
scanf("%s",xuesheng[i].xue);
if(strlen(xuesheng[i].xue)>5)
{
printf("输入错误!
请输入5位数以内的学号!
\n\n\n");
zeng();
}
printf("输入4个汉字以内的名字:
");
scanf("%s",xuesheng[i].ming);
if(strlen(xuesheng[i].ming)>8)
{
printf("输入错误!
请输入4个汉字以内的名字!
\n\n\n");
zeng();
}
printf("请输入程序成绩:
");
scanf("%f",&xuesheng[i].chengji[0]);
printf("请输入英语成绩:
");
scanf("%f",&xuesheng[i].chengji[1]);
printf("请输入网页成绩:
");
scanf("%f",&xuesheng[i].chengji[2]);
xuesheng[i].pingjun=(xuesheng[i].chengji[0]+xuesheng[i].chengji[1]+xuesheng[i].chengji[2])/3;
fprintf(fp,"%s\t\t%s\t\t%f\t\t%f\t\t%f\t\t%f\t\t\n",xuesheng[i].xue,xuesheng[i].ming,xuesheng[i].chengji[0],xuesheng[i].chengji[1],xuesheng[i].chengji[2],xuesheng[i].pingjun);
}
}
fclose(fp);
system("cls");
jie();
}
////////////////////////////
voidchange()//修改数据
{
inti,j;
chara[20];//要修改学生的学号
charyn;
FILE*fp;
system("cls");
fp=fopen("学生记录.txt","r");
if((fp)==NULL)/*如果打开文件失败,则结束程序*/
{
printf("文件不存在!
\n");
getch();/*待按任意键继续*/
exit(0);/*终止程序*/
}
printf("请输入要修改学生的学号:
");
scanf("%s",a);
for(i=0;i<100;i++)
{
fscanf(fp,"%s\t%s%f\t%f\t%f\t%f\t\n",xuesheng2[i].xue,xuesheng2[i].ming,&xuesheng2[i].chengji[0],&xuesheng2[i].chengji[1],&xuesheng2[i].chengji[2],&xuesheng2[i].pingjun);
if(xuesheng2[i].xue==NULL)
{
break;
}
}
for(i=0;i<100;i++)
{
if(strcmp(xuesheng2[i].xue,a)==0)
{
printf("请输入5位数以内的学号:
");
scanf("%s",xuesheng2[i].xue);
if(strlen(xuesheng2[i].xue)>5)
{
printf("输入错误!
请输入5位数以内的学号!
\n\n\n");
getch();
xiu();
}
printf("输入4个汉字以内的名字:
");
scanf("%s",xuesheng2[i].ming);
if(strlen(xuesheng2[i].ming)>8)
{
printf("输入错误!
请输入4个汉字以内的名字!
\n\n\n");
getch();
xiu();
}
printf("请输入程序成绩:
");
scanf("%f",&xuesheng2[i].chengji[0]);
printf("请输入英语成绩:
");
scanf("%f",&xuesheng2[i].chengji[1]);
printf("请输入网页成绩:
");
scanf("%f",&xuesheng2[i].chengji[2]);
xuesheng2[i].pingjun=(xuesheng2[i].chengji[0]+xuesheng2[i].chengji[1]+xuesheng2[i].chengji[2])/3;
xuesheng[i].pingjun=(xuesheng2[i].chengji[0]+xuesheng2[i].chengji[1]+xuesheng2[i].chengji[2])/3;
fprintf(fp,"%s\t\t%s\t\t%f\t\t%f\t\t%f\t\t%f\t\t\n",xuesheng2[i].xue,xuesheng2[i].ming,xuesheng2[i].chengji[0],xuesheng2[i].chengji[1],xuesheng2[i].chengji[2],xuesheng2[i].pingjun);
}
}
fclose(fp);
fp=fopen("学生记录.txt","w");
for(i=0;i<100;i++)
{
// printf("|%s\f\t|%s\f\t|%.2f\f\t|%.2f\f\t|%.2f\f\t|%.2f\f\t\n",xuesheng[i].xue,xuesheng[i].ming,xuesheng[i].chengji[0],xuesheng[i].chengji[1],xuesheng[i].chengji[2],xuesheng[i].pingjun);
if(xuesheng2[i].xue[0]>='0'&&xuesheng2[i].xue[0]<='9')
{
fprintf(fp,"%s\t\t%s\t\t%f\t\t%f\t\t%f\t\t%f\t\t\n",xuesheng2[i].xue,xuesheng2[i].ming,xuesheng2[i].chengji[0],xuesheng2[i].chengji[1],xuesheng2[i].chengji[2],xuesheng2[i].pingjun);
}
else
{
break;
}
}
fclose(fp);
printf("\n\t\t\t请按任意键继续。
。
。
\n");
getch();
jie();
}
////////////////////////////
voiddele()//删除数据
{
inti,j;
chara[20];//要删除学生的学号
charyn;
FILE*fp;
system("cls");
fp=fopen("学生记录.txt","r");
if((fp)==NULL)/*如果打开文件失败,则结束程序*/
{
printf("文件不存在!
\n");
getch();/*待按任意键继续*/
exit(0);/*终止程序*/
}
printf("请输入要删除学生的学号:
");
scanf("%s",a);
for(i=0;i<100;i++)
{
if(xuesheng2[i].xue[0]>='0'&&xuesheng2[i].xue[0]<='9')
{
fscanf(fp,"%s\t%s%f\t%f\t%f\t%f\t\n",xuesheng2[i].xue,xuesheng2[i].ming,&xuesheng2[i].chengji[0],&xuesheng2[i].chengji[1],&xuesheng2[i].chengji[2],&xuesheng2[i].pingjun);
}
else
{
break;
}
}
for(i=0;i<100;i++)
{
if(strcmp(xuesheng2[i].xue,a)==0)
{
printf("学号姓名程序成绩英语成绩网页成绩平均成绩\n");
printf("________________________________________________________________________________");
printf("%s\f\t%s\f\t%.2f\f\t%.2f\f\t%.2f\f\t%.2f\f\t\n",xuesheng2[i].xue,xuesheng2[i].ming,xuesheng2[i].chengji[0],xuesheng2[i].chengji[1],xuesheng2[i].chengji[2],xuesheng2[i].pingjun);
break;
}
}
if(i==100)
{
printf("不存在此学生!
");
}
for(j=i;j<100;j++)
{
xuesheng2[j]=xuesheng2[j+1];
}
fclose(fp);
getch();
fp=fopen("学生记录.txt","w");
for(i=0;i<100;i++)
{
if(xuesheng2[i].xue[0]>='0'&&xuesheng2[i].xue[0]<='9')
{
fprintf(fp,"%s\t\t%s\t\t%f\t\t%f\t\t%f\t\t%f\t\t\n",xuesheng2[i].xue,xuesheng2[i].ming,xuesheng2[i].chengji[0],xuesheng2[i].chengji[1],xuesheng2[i].chengji[2],xuesheng2[i].pingjun);
}
else
{
break;
}
}
fclose(fp);
printf("\n\t\t\t请按任意键继续。
。
。
\n");
getch();
jie();
}
////////////////////////////
voidfind()//查询学生记录
{
inti;
charyn;
chara[20];//要查询的姓名
FILE*fp;
system("cls");
fp=fopen("学生记录.txt","r");
if((fp)==NULL)/*如果打开文件失败,则结束程序*/
{
printf("文件不存在!
\n");
getch();/*待按任意键继续*/
exit(0);/*终止程序*/
}
printf("请输入要查询学生的姓名:
");
scanf("%s",&a);
for(i=0;i<=100;i++)
{
fscanf(fp,"%s\t%s%f\t%f\t%f\t%f\t\n",xuesheng[i].xue,xuesheng[i].ming,&xuesheng[i].chengji[0],&xuesheng[i].chengji[1],&xuesheng[i].chengji[2],&xuesheng[i].pingjun);
if(strcmp(xuesheng[i].ming,a)==0)
{
break;
}
}
if(i==101)
{
printf("不存在此学生。
\n");
}
else
{
printf("学号姓名程序成绩英语成绩网页成绩平均成绩\n");
printf("________________________________________________________________________________");
printf("%s\f\t%s\f\t%.2f\f\t%.2f\f\t%.2f\f\t%.2f\f\t\n",xuesheng[i].xue,xuesheng[i].ming,xuesheng[i].chengji[0],xuesheng[i].chengji[1],xuesheng[i].chengji[2],xuesheng[i].pingjun);
}
scanf("%c",&yn);
printf("请问要继续查看吗?
y/n:
\n");
scanf("%c",&yn);
if(yn=='y')
{
fclose(fp);
cha();
}
else
{
fclose(fp);
jie();
}
}
////////////////////////////
voidpingjun()//按平均分排序
{
inti,j;
chara[20];
charyn;
FILE*fp;
system("cls");
fp=fopen("学生记录.txt","r");
if((fp)==NULL)/*如果打开文件失败,则结束程序*/
{
printf("文件不存在!
\n");
getch();/*待按任意键继续*/
exit(0);/*终止程序*/
}
for(i=0;i<100;i++)
{
fscanf(fp,"%s\t%s%f\t%f\t%f\t%f\t\n",xuesheng2[i].xue,xuesheng2[i].ming,&xuesheng2[i].chengji[0],&xuesheng2[i].chengji[1],&xuesheng2[i].chengji[2],&xuesheng2[i].pingjun);
}
for(i=0;i<100;i++)
for(j=i+1;j<100;j++)
{
if(xuesheng2[i].pingjun {
x2=xuesheng2[i];
xuesheng2[i]=xuesheng2[j];
xuesheng2[j]=x2;
}
}
for(i=0,j=1;i<100;i++,j++)
{
if(xuesheng2[i].xue[0]>='0'&&xuesheng2[i].xue[0]<='9')
{
printf("第%d名_______________________________________________________________________\n",j);
printf("学号姓名程序成绩英语成绩网页成绩平均成绩\n");
printf("%s\f\t%s\f\t%.2f\f\t%.2f\f\t%.2f\f\t%.2f\f\t\n",xuesheng2[i].xue,xuesheng2[i].ming,xuesheng2[i].chengji[0],xuesheng2[i].chengji[1],xuesheng2[i].chengji[2],xuesheng2[i].pingjun);
}
else
{
break;
}
}
fclose(fp);
printf("\n\t\t\t请按任意键继续。
。
。
\n");
getch();
jie();
}
/////////////////////////////
voidquanbu()//显示学生全部记录
{
inti;
FILE*fp;
system("cls");
fp=fopen("学生记录.txt","r");
if((fp)==NULL)/*如果打开文件失败,则结束程序*/
{
printf("文件不存在!
\n");
getch();/*待按任意键继续*/
exit(0);/*终止程序*/
}
printf("学号姓名程序成绩英语成绩网页成绩平均成绩\n");
printf("________________________________________________________________________________");
for(i=0;i<100;i++)
{
//编码中发现用结构体xuesheng打印会出现数据混乱,为此创建了xuesheng2.
fscanf(fp,"%s\t%s%f\t%f\t%f\t%f\t\n",xuesheng2[i].xue,xuesheng2[i].ming,&xuesheng2[i].chengji[0],&xuesheng2[i].chengji[1],&xuesheng2[i].chengji[2],&xuesheng2[i].pingjun);
//if(xuesheng[i].xue[0]=='1'||xuesheng[i].xue[0]=='2'||xuesheng[i].xue[0]=='3'||xuesheng[i].xue[0]=='4'||xuesheng[i].xue[0]=='5'||xuesheng[i].xue[0]=='6'||xuesheng[i].xue[0]=='7'||xuesheng[i].xue[