illegal use of this type as an expression

微粒的‘’爱情不一样 发布于 2016/12/24 16:24
阅读 46
收藏 0
#include <stdio.h>  // 标准输入输出函数
#include <stdlib.h>  // 标准库函数
#include <string.h>  // 字符串处理函数
#include <process.h>
#include <conio.h>
#define N 30
#define M 3
typedef struct student{
char number[10];
char name[20];
float score[M];
float aver;
float total;
}
    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;
typedef struct student{
char number[10];
char name[20];
float score[M];
float aver;
float total;
}
menu();
do
{
flag=1;
switch(getch())
{   case'1':inputscore();break; //输入成绩
   case'2':lookscore();break; //查看成绩
case'3':searchscore();break; //查找成绩
case'4':statistic();break; //成绩统计
case'5':modify();break; //修改成绩
case'6':add();break; //添加成绩
   case'7':delscore();break; //删除成绩
case'8':savescore();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("输入成绩--------------------------1\n");
  printf("查看成绩--------------------------2\n");
  printf("查询成绩--------------------------3\n");
  printf("成绩统计--------------------------4\n");
  printf("修改成绩--------------------------5\n");
  printf("添加成绩--------------------------6\n");
  printf("删除成绩--------------------------7\n");
  printf("保存成绩--------------------------8\n");
  printf("退出系统--------------------------9\n");
  printf("***********************************\n");
  printf("请输入你的选择\n");
   }
   /***********输入各个同学的学生信息***********************/
  void inputscore(void)
  {  int i,j;
     system("cls");
printf("请输入学生总数\n");
scanf("%d",&n);
printf("提示:/输入学号时请输入由以为大写字母和8位数字组成的学号,如:p16170246/\n");
for(i=0;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 total(void)
  {  int i,j;
     for(i=0;i<n;i++){
stu[i].total=0;
for(j=0;j<M;j++){
stu[i].total+=stu[i].score[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].score[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++){
   if(stu[j].aver>stu[k].aver)
k=j;
if(k!=j){
 t=stu[k];
 stu[k]=stu[i];
 stu[i]=t;
}
 }
         printf("名次\t学号\t姓名\t高数\tC语言\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.2",stu[i].aver);
 printf("\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高数\tC语言\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.2",stu[i].aver);
printf("\n");
break;
}
else
printf("未找到该学生信息\n");
}
   }
   /**************统计学生的成绩信息,平均分及格率,优秀率**********************/
   void statistic(void)
   {
   STU*p=stu;
   int i;
   float count=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+i)->aver>=60)
  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物理\tc语言\t总分\t平均分\n");
printf("%d\t%s\t%d\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);
printf("\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]);
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,e,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物理\tc语言\t总分\t平均分\n");
printf("%d\t%s\t%d\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);
printf("\n");
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;
  }
加载中
返回顶部
顶部