错误多到改不了~~求解~~
#include<stdio.h>#include<string.h>
#include<process.h>
#include<conio.h>
#define N 30
#define M 3
#include"stdafx.h"
typedef struct student
{ char number[10];
char number[20];
char number[M];
float aver;
float totai;
}STU;
STU stu[N];
int n;
void inputscore(void);
void savescore(void);
void avergescore(void);
void total(void);
void modifyscore(void);
void lookscore(void);
void searchscore(void);
void statistic(void);
void add(void);
void modify(void);
void delscore(void);
void menu(void);
void main()
{ short int flag=0;
menu();
do
{ flag=1;
switch(getch())
{ case'1':inputscore(void);break; /*输入成绩*/
case'2':lookscore(void);break; /*查看成绩*/
case'3':searchscore(void);break; /*查找成绩*/
case'4':statistic(void);break; /*成绩统计*/
case'5':modify(void);break; /*修改成绩*/
case'6':add(void);break; /*添加成绩*/
case'7':delscore(void);break; /*删除成绩*/
case'8':savescore(void);break; /*保存成绩*/
case'9':exit(0); /*退出程序*/
default:printf("输入有误\n");
}
printf("按任意键继续\n");
getch();
menu();
}while (flag==1);
}
void menu(void)
{
system("cls");
printf("\n");
printf("**********欢迎进入学生成绩管理系统**********\n");
printf(" 菜单 \n");
printf("输入成绩-------------\1n");
printf("查看成绩及成绩排序--------\2n");
printf("查询学生成绩------------\3n");
printf("成绩统计-----------------\4n");
printf("修改成绩-------------\5n");
printf("添加成绩-------------\6n");
printf("删除成绩-------------\7n");
printf("保存成绩-------------\8n");
printf("推出系统-------------\9n");
printf("********************************\n");
printf("请输入您的选择\n");
}
/********输入各个同学的学生信息(王超)**********/
void inputscore(void)
{ int i,j;
system("cls");
printf("请输入学生总数: \n");
scanf("%d",&n);
printf("提示:*输入学号时请输入由1位大写字母和8位数字组成的学号,如P01214000*\n"); /*因二维表上下需要对正故有此要求*/
for(i=0;i<n;i++)
{ printf("请输入学生%d的学号 姓名:\n",i+1);
scanf("%s%s",stu[i].number,stu[i].name);
printf("高数\t物理\tC语言\n");
for(j=0;j<M;j++)
scanf("%f",&stu[i].score[j]);
}
printf("成功输入\n");
}
/***********计算各个同学的总分(孙友)**************/
void totai(void)
{ int i,j;
for(i=0;i<n;i++)
{ stu[i].totai=0;
for(j=0;j<M;j++)
{
stu[i].total+=stu[i].stu[j];
}
}
}
/***********计算各个同学的平均分**********/
void avergescore(void)
{ int i,j;
for(i=0;i<n;i++)
{ stu[i].aver=0;
for(j=0;j<M;j++)
{
stu[i].aver+=stu[i].stu[j];
}
stu[i].aver+=stu[i].aver/M;
}
}
/*******查看学生成绩及平均分对学生进行排序*********/
void lookscore(void)
{
int i,j,k;
STU t;
total();
avergescore();
system("cls");
for(i=0;i<n-1;i++)
{
for(k=i,j=i+1;j<n;j++)
if(stu[i].aver>stu[k].aver)
k=j;
if(k!=j)
{
t=stu[k];
stu[k]=stu[i];
stu[i]=t;
}
}
printf("名次\t学号\t\t姓名\t高数\t物理\tC语言\t总分\t平均分\n");
for(i=0;i<n;i++)
{
printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);
for(j=0;j<M;j++)
printf("%4.2f\t",stu[i].score[j]);
printf("%4.2f\t",stu[i].total);
printf("%4.2f\t",stu[i].aver);
print("\n");
}
}
/********通过输入学号查找学生成绩**********/
void searchscore(void)
{
char a[10];
int i,j;
system("cls");
printf("请输入需要查询的学生学号\n");
scanf("%s",a);
for(i=0;i<n;i++)
{
if(strcmp(a,stu[i].number)==0)
{
printf("名次\t学号\t\t姓名\t高数\t物理\tC语言\t总分\t平均分\n");
printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);
for(j=0;j<M;j++)
printf("%4.2f\t",stu[i].score[j]);
printf("%4.2f\t",stu[i].total);
printf("%4.2f\t",stu[i].aver);
print("\n");
break; /*找到该学生的成绩信息后跳出for循环*/
}
else
printf("未找到该学生信息\n");
}
}
/******统计学生成绩信息,平均分及格率,优秀率*********/
void statistic(void)
{
STU *p=stu;
int i,j;
float count=0.0,sum=0.0;
system("cls");
for(i=0;i<n;i++)
{
sum+=(p=i)->aver;
}
printf("该班级平均分为%4.2f\n",sum/n); /*平均分计算*/
for(i=0;i<n;i++)
{
if((p+1)->aver>=60)
count++;
}
printf("该班级及格率为%4.2f%%\n",count/n*100); /*及格率计算*/
count=0.0;
for(i=0;i<n;i++)
{
if((p+1)->aver>=90)
count++;
}
printf("该班级优秀率为%4.2f%%\n",count/n*100); /*优秀率计算*/
printf("平均分低于60的学生名单\n");
for(i=0;i<n;i++)
{
if(stu[i].aver<60)
printf("%s\n",stu[i].name);
} /*统计不及格学生的名单*/
}
/************修改学生成绩********/
void modify(void)
{
char a[10];
int i,j;
system("cls");
printf("请输入需要修改成绩的学生学号\n");
scanf("%s",a);
for(i=0;i<n;i++)
{
if(strcmp(a,stu[i].number)==0)
{
printf("名次\t学号\t\t姓名\t高数\t物理\tC语言\t总分\t平均分\n");
printf("%d\t%s\t%s\t",i+1,stu[i].number,stu[i].name);
for(j=0;j<M;j++)
printf("%4.2f\t",stu[i].score[j]);
printf("%4.2f\t",stu[i].total);
printf("%4.2f\t",stu[i].aver);
print("\n");
printf("请重新输入该学生的学号 姓名:\n");
scanf("%s%s",stu[i].number,stu[i].name);
printf("请重新输入学生成绩:\n");
printf("高数\t物理\tC语言\n");
for(j=0;j<M;j++)
scanf("%f",&stu[i].score[j]); /*找到该学生成绩后进行修改,跳出for循环*/
printf("修改成功\n");
break;
}
else
printf("请确认该学生是否喂本班级学生!\n");
}
}
/**********添加学生成绩**********/
void add(void)
{
int a,i,j;
system("cls");
printf("请输入新增加的学生人数:\n");
scanf("%d",&a);
n=n+a;
for(i=n-a;i<n;i++)
{
printf("请输入学生%d的学号 姓名:\n",i+1);
scanf("%s%s",stu[i].number,stu[i].name);
printf("请输入学生成绩:\n");
printf("高数\t物理\tC语言\n");
for(j=0;j<M;j++)
scanf("%f",&stu[i].score[j]);
printf("添加成功\n");
}
}
/******************删除学生成绩***********************/
void delscore(void)
{
int i,j,c;
char m,a[10];
system(“cls”);
printf(“请输入学生学号\n”);
scanf(“%s”,a);
for(i=0;i<n;i++)
{
if(strcmp(a,stu[i].number)==0
{
printf(“名次\t学号\t\t姓名\t高数\t物理\tC语言\t总分\t平均分\n”);
Printf(“%d\t%s\t%s\t”,i+1,stu[i].number,stu[i].name);
for(j=0;j<M;j++)
printf(“%4.2f\t”,stu[i].score[j]);
printf(“%4.2f\t”,stu[i].total);
printf(“%4.2f”,stu[i].aver);
printf(“\n”);
c=i;
break;
}
else
printf(“未找到该学生信息\n”);
}
printf(“是否删除该学生成绩(y\n)\n”);
scanf(“%s”,&m);
if(m==’y’)
{
for(i=c;i<n-1;i++)
stu[i]=stu[i+1]; /*结构体整体赋值将后一位学生成绩信息拷贝进入前一位学生信息的存储位置*/
n=n-1; /*删除该学生信息后学生总数减一*/
printf(“删除成绩成功\n”);
}
else
printf(“删除成绩失败\n”);
}
/*****************保存学生成绩************************/
void savescore(void)
{
FILE*fp;
int i,flag=1
char m;
system(“cls”);
puts(“是否保存学生成绩(y/n)”);
scanf(“%s”,&m);
if(m==‘y’)
{
if((fp=fopen(“score.dat”,“wb”))==NULL)
{
printf(“文件打开失败\n”);
return;
}
for(i=0;i<n;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
{
printf(“保存失败\n”);
flag=0;
}
if(flag==1)
printf(“保存成功!\n”);
fclose(fp);
}
else
return;
}