c++-C++学生管理系统交不了差我就死定了,大叔大婶行行好

问题描述

C++学生管理系统交不了差我就死定了,大叔大婶行行好

送人玫瑰手有余香,救人一命胜造七级浮屠,C++学生管理系统交不了差我就死定了,大叔大婶行行好

解决方案

http://wenku.baidu.com/link?url=SXkEsiMcpfqhM3IdT5ZZ97aNTmwfO_74dvJoNSWoCp2FIyudzpd1uBSgh2ccFJS6fvJROIDaVTEAkHkOJBY1a7LNDw6amoiRs_CUd_YjNi3

解决方案二:

我也在做这个>__<

解决方案三:

不用叫我叔叔,叫我哥哥就好 . 如果觉得合适,就给个采纳 另外要祝我早日追到女神

解决方案四:

特别感谢这样的好人,技术强,又乐于帮忙,赞赞赞

解决方案五:

我也在做这个>__<

解决方案六:

只是用C的话,去看看关于MFC的书,简洁的编程,对于DB的链接也很简单,可视化的界面,有点基础的话,一周就差不多

解决方案七:


 #include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
struct student{    //结构体定义
  char name[20];  //姓名
  int num;        //学号
  int no;         //排名
  float score[6];    //各科成绩
  float ave;        //平均成绩
  float tot;        //总成绩
  struct student *next;
};

struct student *head;   //定义全局变量 链表头
int i;                  //定义全局变量 科目总数

void key1();        //用户界面1
void key2();        //用户界面2
void fileinput(void);    //文件录入函数
void maninput(void);     //手动录入函数
void avetotal();        //求学生平均分总分函数
void number();         //求学生排名函数
void deorder();         //总分由高到低排序
void asorder();         //总分由低到高排序
void numorder();         //学号由小到大排序
void dictionary();       //按字典顺序排序
void output();           //输出函数
void save();         //保存函数
void senum();         //学号查找函数
void senam();         //名字查找函数
void modify();        //学生信息修改函数
void del();           //删除学生信息函数
void add();            //增加学生信息函数
void analy();                //统计各科各类别人数
void ansave(int a[6][5],float b[6][5]);                //统计结果保存函数
void caculate();             //统计各科平均分及总分

void key1(){      //用户界面1
  int j;
  printf("nnt\****************欢迎来到学生管理系统*******************\n");
  printf("tRead a filen");
  printf("t1.文件录入n");
  printf("t1.Record from filen");
  printf("t2.手动录入n");
  printf("t2.Append record manuallyn");
  printf("t0.exitn");
  printf("t请输入你选择的录入方式:");
  scanf("%d",&j);
  switch(j)
  {
      case 1:fileinput();break;         //调用文件录入函数
      case 2:maninput();break;           //调用手动输入函数
      case 0:exit(0);break;            //退出
      default:{
          printf("nt请重新选择");
          key1();}
  }
}

void fileinput(void)       //文件录入函数
{
  FILE *fp;
  struct student *p1=NULL,*p2=NULL;
  int j,k,l;
  char filename[20];
  printf("nnt请输入文件路径:");     //键盘输入文件名
  scanf("%s",filename);
  if((fp=fopen(filename,"r"))==NULL)
  {
      printf("nt对不起,文件错误,打开文件失败");
      exit(0);
  }
  printf("nt文件打开成功.....");
  printf("nt请输入科目总数:");
    scanf("%d",&i);
  printf("nt请输入录入人数:");
  scanf("%d",&j);
  head=p1=(struct student*)malloc(sizeof(struct student));
  for(l=1;l<=j;l++)
  {
          fscanf(fp,"%s",p1->name);
          fscanf(fp,"%d",&p1->num);
          for(k=0;k<i;k++)
                  fscanf(fp,"%f",&p1->score[k]);
          p1->next=(struct student*)malloc(sizeof(struct student));
          p2=p1;
          p1=p1->next;
      }
    p1->next=NULL;
  p2->next=NULL;
  fclose(fp);
  printf("nt文件录入成功.....");

}

void maninput(void){       //手动录入函数
  struct student *p1=NULL,*p2=NULL;
  int j;
  char ch;
    printf("nt请输入录入科目总数:");
    scanf("%d",&i);
  head=p1=(struct student*)malloc(sizeof(struct student));
  printf("nt姓名      学号");
  for(j=1;j<=i;j++)
      printf(" 成绩%d",j);
  printf("nt");
  scanf("%s%d",p1->name,&p1->num);
  for(j=0;j<i;j++)
      scanf("%f",&p1->score[j]);
  printf("nt是否继续输入(y/n):");
  getchar();
  ch=getchar();
  printf("nt");
  while(ch=='y')
  {
      p2=(struct student*)malloc(sizeof(struct student));
      scanf("%s%d",p2->name,&p2->num);
        for(j=0;j<i;j++)
           scanf("%f",&p2->score[j]);
         printf("nt是否继续输入(y/n):");
       getchar();
       ch=getchar();
       printf("nt");
       p1->next=p2;
       p1=p2;
  };
  p1->next=NULL;
  printf("nt手动录入成功......");
  printf("nt进入功能菜单");

}

void avetotal(){         //求学生平均分总分
  struct student *p1=NULL,*p2=NULL;
  int k;
  p1=head;
  while(p1!=NULL)
  {
      p1->tot=0;
      for(k=0;k<i;k++)
          p1->tot=p1->tot+p1->score[k];
      p1->ave=p1->tot/i;
      p2=p1;
      p1=p1->next;
  }

}

void number(){                    //求学生排名函数
  struct student *p1=NULL,*p2=NULL,*p3=NULL;
  bool flag;
    int j=1;
  p3=p1=head;
  p2=p1->next;
do{
  if(p2==NULL)
  {
      p1->no=1;
      break;
  }
      flag=false;
      if((p1->tot)<(p2->tot))
      {
          p1->next=p2->next;
          p2->next=p1;
          head=p2;
          p2=p1->next;
          p3=head;
          flag=true;
      }
      else{
          p2=p2->next;
          p1=p1->next;
      };

      while(p2!=NULL)
      {
          if((p1->tot)<(p2->tot))
          {
                 p1->next=p2->next;
                 p3->next=p2;
                 p2->next=p1;
                   p3=p2;
                 p2=p1->next;                 //调用交换函数
              flag=true;
          }
          else
          {

              p2=p2->next;
              p1=p1->next;
              p3=p3->next;
          };

      };
      p3=p1=head;
      p2=p1->next;
  }while(flag);
while(p1!=NULL)
{
  p1->no=j;
  j++;
  p1=p1->next;
}
}

void key2(){           //用户界面2
  int j;
  char ch;
    printf("nnnnnt");
  printf("nt***********************主菜单*****************************");
  printf("nnt");
  printf("nt*********************排序区域(Sort)***********************");
  printf("nt1. Sort in descending order by total score of every student");
  printf("nt2. Sort in ascending order by total score of every student");
  printf("nt3. Sort in ascending order by number");
  printf("nt4. Sort in dictionary order by name");
  printf("n");
  printf("nt*********************查询区域(Search)********************");
  printf("nt5. Search by number");
    printf("nt6. Search by name");
  printf("nt");
  printf("nt*********************修改区域(Modify)**********************");
    printf("nt7. Modify information of student");
  printf("nt8. Delete  student");
  printf("nt9. Add student");
  printf("nt");
  printf("nt*********************课程操作区域(Course)******************");
  printf("nt10. Statistic analysis for every course");
  printf("nt11.Calculate total and average score of every course");
  printf("nt*********************保存文件区域(Save)********************");
  printf("nt12.Write to a file");
  printf("nt0.exit");
  printf("nt请输入你的选择:");
    scanf("%d",&j);
  switch(j)
  {
  case(1):deorder();break;        //调用升序函数
  case(2):asorder();break;        //调用降序函数
  case(3):numorder();break;       //调用学号排序函数
  case(4):dictionary();break;      //调用字典排序函数
  case(5):senum();break;            //调用学号查询函数
  case(6):senam();break;              //调用名字查找函数
  case(7):modify();break;            //调用修改学生信息函数
  case(8):del();break;               //调用删除学生信息函数
  case(9):add();break;                //调用增加学生信息函数
  case(10):analy();break;              //调用各科各类别统计函数
  case(11):caculate();break;           //调用统计各科总分及平均分函数
  case(12):save();        //调用保存函数
      printf("nt是否返回主菜单(y/n):");
      getchar();
      ch=getchar();
      if(ch=='y')
      key2();                //调用用户界面2
  case(0):exit(0);               //停止运行
    default:{
          printf("nt请重新选择");
          key2();}
  }
}

void deorder(){       //总分由高到低排序
  struct student *p1=NULL,*p2=NULL,*p3=NULL;
  bool flag;
  char ch;
  p3=p1=head;
  p2=p1->next;
do{
  if(p2==NULL)
      break;
      flag=false;
      if((p1->tot)<(p2->tot))
      {
          p1->next=p2->next;
          p2->next=p1;
          head=p2;
          p2=p1->next;
          p3=head;
          flag=true;
      }
      else{
          p2=p2->next;
          p1=p1->next;
      };

      while(p2!=NULL)
      {
          if((p1->tot)<(p2->tot))
          {
                 p1->next=p2->next;
                 p3->next=p2;
                 p2->next=p1;
                   p3=p2;
                 p2=p1->next;                 //调用交换函数
              flag=true;
          }
          else
          {

              p2=p2->next;
              p1=p1->next;
              p3=p3->next;
          };

      };
      p3=p1=head;
      p2=p1->next;
  }while(flag);
  output();                                             //调用输出函数
  printf("nt是否返回主菜单(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      key2();                //调用用户界面2
  else
      printf("nt是否保存修改到文件(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      save();               //调用保存函数
  exit(0);
}

void asorder(){          //总分由低到高排序
  struct student *p1=NULL,*p2=NULL,*p3=NULL;
  bool flag;
  char ch;
  p3=p1=head;
  p2=p1->next;
do{
  if(p2==NULL)
      break;
      flag=false;
      if((p1->tot)>(p2->tot))
      {
          p1->next=p2->next;
          p2->next=p1;
          head=p2;
          p2=p1->next;
          p3=head;
          flag=true;
      }
      else{
          p2=p2->next;
          p1=p1->next;
      };

      while(p2!=NULL)
      {
          if((p1->tot)>(p2->tot))
          {
                 p1->next=p2->next;
                 p3->next=p2;
                 p2->next=p1;
                   p3=p2;
                 p2=p1->next;
              flag=true;
          }
          else
          {

              p2=p2->next;
              p1=p1->next;
              p3=p3->next;
          };

      };
      p3=p1=head;
      p2=p1->next;
  }while(flag);
  output();                                             //调用输出函数
  printf("nt是否返回主菜单(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      key2();            //调用用户界面2
  else
      printf("nt是否保存修改到文件(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      save();               //调用保存函数
  exit(0);
}

void output(){           //输出函数
  struct student *p1=NULL;
  int j;
  printf("nt姓名         学号");
  for(j=1;j<=i;j++)
      printf("  成绩%d",j);
  printf("  平均分   总分  排名");
  printf("nt");
  p1=head;
  while(p1!=NULL)
  {
      printf("%-13s%-6d",p1->name,p1->num);
      for(j=0;j<i;j++)
      printf("%-7.1f",p1->score[j]);
      printf("%-7.1f%7.1f%4d",p1->ave,p1->tot,p1->no);
      printf("nt");
      p1=p1->next;
  }
}

void numorder(){                                                //学号排序
  struct student *p1=NULL,*p2=NULL,*p3=NULL;
  bool flag;
  char ch;
  p3=p1=head;
  p2=p1->next;
do{
  if(p2==NULL)
      break;
      flag=false;
      if((p1->num)>(p2->num))
      {
          p1->next=p2->next;
          p2->next=p1;
          head=p2;
          p2=p1->next;
          p3=head;
          flag=true;
      }
      else{
          p2=p2->next;
          p1=p1->next;
      };

      while(p2!=NULL)
      {
          if((p1->num)>(p2->num))
          {
                 p1->next=p2->next;
                 p3->next=p2;
                 p2->next=p1;
                   p3=p2;
                 p2=p1->next;
              flag=true;
          }
          else
          {

              p2=p2->next;
              p1=p1->next;
              p3=p3->next;
          };

      };
      p3=p1=head;
      p2=p1->next;
  }while(flag);
  output();                                             //调用输出函数
  printf("nt是否返回主菜单(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      key2();               //调用用户界面2
else
      printf("nt是否保存修改到文件(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      save();               //调用保存函数
  exit(0);
}

void dictionary(){           //字典排序
struct student *p1=NULL,*p2=NULL,*p3=NULL;
  bool flag;
  char ch;
  p3=p1=head;
  p2=p1->next;
do{
  if(p2==NULL)
      break;
      flag=false;
      if(strcmp(p1->name,p2->name)>0)
      {
          p1->next=p2->next;
          p2->next=p1;
          head=p2;
          p2=p1->next;
          p3=head;
          flag=true;
      }
      else{
          p2=p2->next;
          p1=p1->next;
      };

      while(p2!=NULL)
      {
          if(strcmp(p1->name,p2->name)>0)
          {
                 p1->next=p2->next;
                 p3->next=p2;
                 p2->next=p1;
                   p3=p2;
                 p2=p1->next;
              flag=true;
          }
          else
          {

              p2=p2->next;
              p1=p1->next;
              p3=p3->next;
          };

      };
      p3=p1=head;
      p2=p1->next;
  }while(flag);
  output();                                             //调用输出函数
  printf("nt是否返回主菜单(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      key2();             //调用用户界面2
  else
      printf("nt是否保存修改到文件(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      save();               //调用保存函数
      exit(0);
}

void save(){         //保存函数
  char filename[20];
  FILE *fp;
  struct student *p1=NULL;
  int k;
  p1=head;
  printf("nt请输入你要保存到的目标文件:");
  scanf("%s",filename);
  if((fp=fopen(filename,"w"))==NULL)
  {
      printf("nt对不起,文件打开失败!!!");
      save();
      exit(0);
  }
  while(p1!=NULL)
  {
      fprintf(fp,"%20s%6d",p1->name,p1->num);
      for(k=0;k<i;k++)
          fprintf(fp,"%6.1f",p1->score[k]);
      fprintf(fp,"%6.1f%7.1f%4dn",p1->ave,p1->tot,p1->no);
      p1=p1->next;
  }
  fclose(fp);
  printf("nt保存成功.....");

}

void senum(){              //学号查询函数
  int n,j;
  char ch;
  bool flag;
  struct student *p1;
  do
  {
      flag=true;
      printf("nt请输入该学生学号:");
      scanf("%d",&n);
      p1=head;
      while(p1!=NULL)
      {
          if(p1->num==n)
          {
              flag=false;
              printf("nt姓名      学号");
              for(j=1;j<=i;j++)
              printf("  成绩%d",j);
              printf("  平均分   总分  排名");
              printf("nt");
              printf("%-10s%-6d",p1->name,p1->num);
              for(j=0;j<i;j++)
              printf("%-7.1f",p1->score[j]);
              printf("%-7.1f%7.1f%4d",p1->ave,p1->tot,p1->no);
              break;
          }
          p1=p1->next;
      }
       if(flag)
          printf("nt对不起,该学号不存在!!!!");
      printf("nt是否继续查找(y/n):");
      getchar();
      ch=getchar();
  }while(ch=='y');
      printf("nt是否返回主菜单(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      key2();                //调用用户界面2
  printf("nt是否保存修改到文件(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      save();      //调用保存函数
 exit(0);
}

void senam(){              //名字查询函数
  int j;
  bool flag;
  char ch,na[20];
  struct student *p1;
  do
  {
      printf("nt请输入该学生姓名:");
      scanf("%s",na);
      p1=head;
      flag=true;
      while(p1!=NULL)
      {
          if(strcmp(p1->name,na)==0)
          {
              flag=false;
           printf("nt姓名      学号");
           for(j=1;j<=i;j++)
           printf("  成绩%d",j);
           printf("  平均分   总分  排名");
           printf("nt");
             printf("%-10s%-6d",p1->name,p1->num);
           for(j=0;j<i;j++)
           printf("%-7.1f",p1->score[j]);
           printf("%-7.1f%7.1f%4d",p1->ave,p1->tot,p1->no);
          }
          p1=p1->next;
      }
      if(flag)
          printf("nt对不起,该学生不存在!!!");
      printf("nt是否继续查找(y/n):");
      getchar();
      ch=getchar();
  }while(ch=='y');
      printf("nt是否返回主菜单(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      key2();                //调用用户界面2
  printf("nt是否保存修改到文件(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      save();             //调用保存函数
exit(0);
}

void modify(){              //修改学生信息函数
  int n,j;
  char ch;
  bool flag;
  struct student *p1=NULL;
  do{
      flag=true;
      p1=head;
      printf("nt请输入修改学生的学号:");
      scanf("%d",&n);
      while(p1!=NULL)
      {
          if(p1->num==n)
          {
                flag=false;
              printf("nt姓名         学号");
              for(j=1;j<=i;j++)
              printf("  成绩%d",j);
              printf("  平均分   总分  排名");
              printf("nt");
              printf("%-13s%-6d",p1->name,p1->num);
              for(j=0;j<i;j++)
              printf("%-7.1f",p1->score[j]);
              printf("%-7.1f%7.1f%4d",p1->ave,p1->tot,p1->no);
              printf("nt是否修改(y/n):");
              getchar();
              ch=getchar();
              if(ch=='n')break;
              printf("nt请重新输入该学生信息..");
              printf("nt姓名      学号");
              for(j=1;j<=i;j++)
              printf(" 成绩%d",j);
              printf("nt");
              scanf("%s%d",p1->name,&p1->num);
              for(j=0;j<i;j++)
              scanf("%f",&p1->score[j]);
              printf("nt修改成功....");
              break;
          }
          p1=p1->next;
      }
      if(flag)
          printf("nt对不起,该学号不存在!!!!");
          printf("nt是否继续修改(y/n):");
          getchar();
         ch=getchar();
  }while(ch=='y');
  avetotal();           //调用求总分平均分函数
  number();             //调用求排名函数
      printf("nt是否返回主菜单(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      key2();                //调用用户界面2
  printf("nt是否保存修改到文件(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      save();             //调用保存函数
  exit(0);
}

void del(){                       //删除学生信息函数
  struct student *p1=NULL,*p2=NULL;
  int n,j;
  bool flag;
  char ch;
  do{
      flag=true;
      printf("nt请输入删除学生的学号:");
      scanf("%d",&n);
      p1=head;
      p2=p1->next;
      if(p1->num==n)
      {   flag=false;
          printf("nt姓名         学号");
          for(j=1;j<=i;j++)
          printf("  成绩%d",j);
          printf("  平均分   总分  排名");
          printf("nt");
          printf("%-13s%-6d",p1->name,p1->num);
          for(j=0;j<i;j++)
          printf("%-7.1f",p1->score[j]);
          printf("%-7.1f%7.1f%4d",p1->ave,p1->tot,p1->no);
          printf("nt是否修改(y/n):");
          getchar();
          ch=getchar();
          if(ch=='n')break;
          free(p1);
          head=p1=p2;
          p2=p1->next;
          printf("nt删除成功....");
      }
      while(p2!=NULL)
      {
          if(p2->num==n)
          {
              printf("nt姓名         学号");
              for(j=1;j<=i;j++)
              printf("  成绩%d",j);
              printf("  平均分   总分  排名");
              printf("nt");
              printf("%-13s%-6d",p1->name,p1->num);
              for(j=0;j<i;j++)
              printf("%-7.1f",p1->score[j]);
              printf("%-7.1f%7.1f%4d",p1->ave,p1->tot,p1->no);
              printf("nt是否修改(y/n):");
              getchar();
              ch=getchar();
              if(ch=='n')break;
              flag=false;
              p1->next=p2->next;
              free(p2);
              printf("nt删除成功....");
              break;
          }
          p1=p2;
          p2=p1->next;

      }
       if(flag)
          printf("nt对不起,该学号不存在!!!!");
      printf("nt是否继续删除(y/n):");
          getchar();
         ch=getchar();
  }while(ch=='y');
  number();             //调用求排名函数
      printf("nt是否返回主菜单(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      key2();                //调用用户界面2
  printf("nt是否保存修改到文件(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      save();             //调用保存函数
  exit(0);
}

void add(){            //增加学生信息函数
  struct student *p1;
  int j;
  char ch;
  do{
        p1=(struct student*)malloc(sizeof(struct student));
      printf("nt姓名      学号");
      for(j=1;j<=i;j++)
      printf(" 成绩%d",j);
      printf("nt");
      scanf("%s%d",p1->name,&p1->num);
      for(j=0;j<i;j++)
          scanf("%f",&p1->score[j]);
      p1->next=head;
      head=p1;
      printf("nt添加成功....");
      printf("nt是否继续添加(y/n):");
          getchar();
         ch=getchar();
  }while(ch=='y');
  avetotal();           //调用求总分平均分函数
  number();             //调用求排名函数
      printf("nt是否返回主菜单(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      key2();                //调用用户界面2
  printf("nt是否保存修改到文件(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      save();             //调用保存函数
  exit(0);
}

void analy(){        //统计各科各类别人数函数
  struct student *p1;
  int cou[6][5];
  float per[6][5];
  int j,k,l=0;
  char ch;
  for(j=0;j<i;j++)
      for(k=0;k<5;k++)
          cou[j][k]=0;         //计数器清零
  p1=head;
  while(p1!=NULL)
  {   l++;
      for(j=0;j<i;j++)
      {
          if(p1->score[j]>=90)
              cou[j][0]++;
          else if(p1->score[j]>=80)
              cou[j][1]++;
          else if(p1->score[j]>=70)
              cou[j][2]++;
          else if(p1->score[j]>=60)
              cou[j][3]++;
          else
              cou[j][4]++;
      }
      p1=p1->next;
  }
  printf("nt");
  for(j=1;j<=i;j++)           //输出统计结果
      printf("科目%d   ",j);
      printf("n100-90");
      for(j=0;j<i;j++)
      {
          per[j][0]=cou[j][0]*1.0/l;
          printf("%2d(%3.2f)",cou[j][0],per[j][0]);
      }
      printf("n89-80 ");
      for(j=0;j<i;j++)
      {
          per[j][1]=cou[j][1]*1.0/l;
          printf("%2d(%3.2f)",cou[j][1],per[j][1]);
      }
      printf("n79-70 ");
      for(j=0;j<i;j++)
      {
          per[j][2]=cou[j][2]*1.0/l;
          printf("%2d(%3.2f)",cou[j][2],per[j][2]);
      }
      printf("n69-60 ");
      for(j=0;j<i;j++)
      {
          per[j][3]=cou[j][3]*1.0/l;
          printf("%2d(%3.2f)",cou[j][3],per[j][3]);
      }
      printf("n59-0  ");
      for(j=0;j<i;j++)
      {
          per[j][4]=cou[j][4]*1.0/l;
          printf("%2d(%3.2f)",cou[j][4],per[j][4]);
      }
      printf("nt是否保存统计结果到文件(y/n):");
      getchar();
      ch=getchar();
      if(ch=='y')
      ansave(cou,per);             //调用统计结果保存函数
      printf("nt是否返回主菜单(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      key2();                //调用用户界面2
  printf("nt是否保存学生信息到文件(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      save();             //调用保存函数
  exit(0);
}

void ansave(int a[6][5],float b[6][5]){                      //统计结果保存函数
  FILE *fp;
  int j;
  char filename[20];
  printf("nt请输入保存的文件名:");
  scanf("%s",filename);
  if((fp=fopen(filename,"w"))==NULL)
  {
      printf("nt对不起,文件打开失败!!!!");
      key2();
  }
  for(j=1;j<=i;j++)
      fprintf(fp,"科目%d   ",j);
      fprintf(fp,"n100-90");
      for(j=0;j<i;j++)
         fprintf(fp,"%2d(%3.2f)",a[j][0],b[j][0]);
      fprintf(fp,"n89-80 ");
      for(j=0;j<i;j++)
          fprintf(fp,"%2d(%3.2f)",a[j][1],b[j][1]);
      fprintf(fp,"n79-70 ");
      for(j=0;j<i;j++)
          fprintf(fp,"%2d(%3.2f)",a[j][2],b[j][2]);
      fprintf(fp,"n69-60 ");
      for(j=0;j<i;j++)
          fprintf(fp,"%2d(%3.2f)",a[j][3],b[j][3]);
      fprintf(fp,"n59-0  ");
      for(j=0;j<i;j++)
          fprintf(fp,"%2d(%3.2f)",a[j][4],b[j][4]);
      fclose(fp);
      printf("nt保存成功......");
}

void caculate(){                        //统计各科总分平均分函数
  struct student *p1=NULL;
  float to[6],av[6];
  int j,l=0;
  char ch;
  for(j=0;j<6;j++)
      to[j]=0;
  p1=head;
  while(p1!=NULL)
  {
      l++;
      for(j=0;j<i;j++)
          to[j]=to[j]+p1->score[j];
      p1=p1->next;
  }
  for(j=0;j<i;j++)
      av[j]=to[j]*1.0/l;
  printf("nt");
  for(j=1;j<=i;j++)           //输出统计结果
      printf("科目%d   ",j);
    printf("n总分  ");
  for(j=0;j<i;j++)
      printf("%8.1f",to[j]);
  printf("n平均分");
  for(j=0;j<i;j++)
      printf("%8.1f",av[j]);
  printf("nt是否返回主菜单(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      key2();                //调用用户界面2
  printf("nt是否保存学生信息到文件(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      save();             //调用保存函数
  exit(0);
}

void main(){
  char ch;
      key1();
      avetotal();
      number();
      key2();
      printf("nt是否保存修改到文件(y/n):");
  getchar();
  ch=getchar();
  if(ch=='y')
      save();               //调用保存函数
}
时间: 2024-10-26 20:35:28

c++-C++学生管理系统交不了差我就死定了,大叔大婶行行好的相关文章

ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法_php实例

本文实例讲述了ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法.分享给大家供大家参考,具体如下: 在作业管理系统中,学生登陆到个人中心后可以通过左侧的菜单查看自己已经提交的作业和未提交作业.那么在系统中如何实现这些数据的查询的呢?首先我们需要弄清楚学生(Student).班级(class).作业提交表(Submit)这三个表之间的关系. 1. 每个学生都属于一个班级 2. 班级里的每个学生都会被布置同样的作业 3. 学生提交作业后会在作业提交表中添加响应的记录,如学生的I

基于XML-DOM技术的MIS系统(学生管理系统-精简版)

dom|xml (亿众国际-004)[原创]基于XML-DOM技术的MIS系统(学生管理系统-精简版) ///////////////////////////////////////////////////////////Author: stardicky                                    ////E-mail: stardicky@hotmail.com                        ////QQNumber: 9531511        

delphi做学生管理系统总结

在用刚刚学的delphi来做学生管理系统会遇到很多问题,这写问题或许是共性的,希望对大家有帮助 工程文件 界面 一.登录界面 二.主功能界面 用户管 理

java web-JAVA web +mySQL 学生管理系统

问题描述 JAVA web +mySQL 学生管理系统 界面做好后,数据库链接出现问题了怎样链接上数据库呢?..............初学者求教! 解决方案 用jdbc就可以了完整的程序下载:http://download.csdn.net/detail/zhouhuijun_vip/7523155 解决方案二: 简单点直接用jdbc...要么用mybatis... 解决方案三: http://www.cnblogs.com/taoweiji/archive/2012/12/11/281285

【黑马Android】(03)学生管理系统/动态刷新界面

学生管理系统 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.itheima27.sutdentmanager" android:versionCode="1" android:versionNam

Android For JNI(四)——C的数组,指针长度,堆内存和栈内存,malloc,学生管理系统

Android For JNI(四)--C的数组,指针长度,堆内存和栈内存,malloc,学生管理系统 好几天每写JNI了,现在任务也越来越重了,工作的强度有点高,还有好几个系列的博客要等着更新,几本书还嗷嗷待哺的等着我去看,github上的两个散漫的开源,基础入门的视频也在录制,还要学习新的知识, 都是一种挑战,不知道为何,最近懒散了,看来还得再加把劲,今天我们继续延伸一下C的一些小知识 一.数组 C的数组和JAVA也是类似的,我们写一段小程序 #include <stdio.h> #inc

新手 c++学生管理系统 不知道怎么改错

问题描述 新手 c++学生管理系统 不知道怎么改错 #include "iostream" #include "string" #include "fstream" #include "conio.h" using namespace std; // *******建立学生信息的类 class Student { public: Student *Head,*p; Student *Next,*end; char name[2

c语言 数据结构-关于“学生管理系统”这个程序编程的一些问题

问题描述 关于"学生管理系统"这个程序编程的一些问题 #include #include typedef struct student { int num; int score; struct student *next; }student; void add(student *s)//全局的增加函数 { printf("请输入学生学号与分数:n"); scanf("%d %d",&s->num,&s->score);

Java+Mysql学生管理系统源码_java

最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多.  开发语言:java: 开发环境:Mysql, java: 开发工具:eclipse 开发此案例,首先得在电脑上有java开发环境和Mysql, java开发环境与Mysql的搭建,就不再叙述了,如果需要,请联系我最下面的联系方式:dingyelf@aliyun.com  此次系统比较简易:数据库中只有一个表:stu;功能:能够对学生增加.删除.修改.开发步骤: