学生成绩管理C语言程序设计源代码

学生成绩管理学生信息包括:学号,姓名,班级、学期、成绩等编写一个学生成绩管理系统,使之能提供以下功能:系统以菜单方式工作(1)能按学期、按班级完成对学生成绩的录入、修改(... 学生成绩管理学生信息包括:学号,姓名,班级、学期、成绩等编写一个学生成绩管理系统,使之能提供以下功能:系统以菜单方式工作(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生各个学期的成绩单 展开
 我来答
dw0513hh
推荐于2016-11-21 · 超过22用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:46.1万
展开全部

这个是我大一的时候写的,你参考一下自己修改修改就能用了:

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#define  PF  printf
#define  SF  scanf
#define  NUM_sub  4
#define  SIZE  80
#define  LEN  sizeof(struct cj_statistic)
static  int  n=0;
int  i=0;

  struct cj_statistic
  {
    int num;
    char name[15];
     int score[NUM_sub];
     int sum;
     int aver_stu;
     int  aver_cour;
     int  index;
    struct cj_statistic *next;
    } stud[SIZE],temp;
 void add();
 void del();
 void change();
 void display();
 void arrange();
 void find();

 void add()
 { FILE *fp;
   float s1=0.0; int i; clrscr();
   if((fp=fopen("xx.out","a"))==NULL)
   {PF("磁盘已满!\n");
     getchar();
     return;}
   PF("\n请输入要添加的学生学号:");
   SF("%d",&stud[n].num);
   PF("\n请输入要添加的学生姓名:");
   SF("%s",stud[n].name);
   PF("\n请输入该学生的各科成绩:");
     s1=0;
   for(i=0;i<NUM_sub;i++)
   {
    do
    {
     PF("score%d:",i+1);
      SF("%d",&stud[n].score[i]);
      if(stud[n].score[i]>100||stud[n].score[i]<0)
      PF("wrong data,repeat input\n");
      }
       while(stud[n].score[i]>100||stud[n].score[i]<0);
     s1=s1+stud[n].score[i]; /*算总分*/
   }
     stud[n].sum=s1;
     stud[n].aver_stu=(float)s1/NUM_sub;
     stud[n].index=n+1;
      getchar();
     if(fwrite(&stud[n],LEN,1,fp)) n++;
      fclose(fp);

    }
 void del()
 {
  int k, m;
  FILE *fp;
  clrscr();
  fp=fopen("xx.out","r");
  for(i=0;i<n;i++)
  fread(&stud[i],LEN,1,fp);
  fclose(fp);
  PF("\n请输入要删除的学号:");
  SF("%d",&m);
  getchar();
  for(i=0;i<n;i++)
   if(m==stud[i].num){k=1;break;}/*查找记录*/
   if(k==1)/*删除记录*/
   { for(k=i;k<n-1;k++)
     { strcpy(stud[k].name,stud[k+1].name);
       stud[k].num=stud[k+1].num;
     for(i=0;i<NUM_sub;i++)
      stud[k].score[i]=stud[k+1].score[i];
      stud[k].sum=stud[k+1].sum;
      stud[k].aver_stu=stud[k+1].aver_stu;
      stud[k].index=stud[k+1].index;
  } n--;PF("删除成功!");
  }
      else
       {
        PF("找不到要删除的记录:\n");
        PF("按回车键返回:");
        getchar();
        }
      fp=fopen("xx.out","a");/*打开新文件*/
 for(i=0;i<n;i++)
 fwrite(&stud[i],LEN,1,fp);/*写入信息*/
 fclose(fp);
   }
 void change()
 { int k,m;
   FILE *fp;
   clrscr();/*清屏*/
   fp=fopen("xx.out","r");
   for(i=0;i<n;i++)
   fread(&stud[i],LEN,1,fp);
   fclose(fp);
   PF("\n请输入要修改的学生学号:");
   SF("%d",&m);
    getchar();
    for(i=0;i<n;i++)
    if(m==stud[i].num)
    {k=1;break;}/*查找*/
      if(k==1)/*开始修改*/
      { PF("\n");
       PF("\n请输入修改后的学生姓名:");
       SF("%s",stud[i].name);
       PF("\n请输入修改后的学生学号:");
       SF("&d",&stud[i].num);
       for(i=0;i<NUM_sub;i++)
      {  PF("score%d:",i+1);
         SF("%d",&stud[n].score[i]);}
      }
      else
       { PF("对不起,找不到要修改的记录!\n");
        PF("按回车键返回:");
         getchar();}
       fp=fopen("xx.out","w");
      for(i=0;i<n;i++)
      fwrite(&stud[i],LEN,1,fp);/*写入数据*/
      fclose(fp);
    }
 void display() /*浏览全部学生信息*/
 { FILE *fp;
   clrscr();/*清屏*/
   fp=fopen("xx.out","r");
    printf("\n\n\n************************************STUDENT*************************************\n");
          printf("|  学号  |   姓名    | 英语 | 高数 | C语言 |  物理  |  总分 | 平均分 |名次|\n");
          printf("|--------|-----------|------|------|-------|--------|-------| -------|----|\n");
    for(i=0;i<n;i++)
    {
      fread(&stud[i],LEN,1,fp);/*读一个输出一个*/
               PF("|   %d    |    %s     |  %d  |  %d  |  %d   |   %d   |  %d  |   %d   |\n",stud[i].num,
           stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].score[3],stud[i].sum,stud[i].aver_stu,
           stud[i].index);

                           }
    PF("按任意键返回!");
    fclose(fp);
     getchar();

     }

 void arrange()
 {
  int k=0,j,sum1,sum2,sum3,sum4;
   FILE *fp;
   clrscr();
  if((fp=fopen("xx.out","r"))==NULL)
   {PF("磁盘已满!\n");
     getchar();
     return;}
   for(i=0;i<n;i++)
   { for(j=0;j<n-i;j++)
     if(stud[j].sum<stud[j+1].sum)
       {temp=stud[j];
        stud[j]=stud[j+1];
        stud[j+1]=temp;} }
    fwrite(&stud[i],LEN,1,fp);/*写入数据*/
   printf("\n\n\n*********************************STUDENT******************************************\n");
          printf("|  学号  |    姓名   | 英语 | 高数 | C语言 |  物理  |  总分 | 平均分 |名次|\n");
          printf("|--------|-----------|------|------|-------|--------|-------|--------|----|\n");
    for(i=0;i<n;i++)
    {
      fread(&stud[i],LEN,1,fp);/*读一个输出一个*/
               PF("|   %d    |   %s      |  %d  |  %d  |  %d   |   %d   |  %d  |   %d   | %d |\n",stud[i].num,
           stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].score[3],stud[i].sum,stud[i].aver_stu,
           ++k);}
        for(sum1=0,sum2=0,sum3=0,sum4=0,i=0;i<n;i++)
         {fread(&stud[i],LEN,1,fp);
             sum1=sum1+stud[i].score[0]; sum2+=stud[i].score[1];
             sum3+=stud[i].score[2];sum4+=stud[i].score[3];}
               PF("各 科 成 绩 平均分:|  %d  |  %d   |  %d   | %d  |",sum1/(n+1),sum2/(n+1),sum3/(n+1),sum4/(n+1));


    PF("按任意键返回!");
    fclose(fp);
     getchar();
     
     }
 void find()
 { int k,m;
   FILE *fp;
   clrscr();/*清屏*/
   if((fp=fopen("xx.out","r"))==NULL)
   {PF("不能打开文件!\n");
    PF("按回车键返回:");
     getchar(); return;
      }
      for(i=0;i<n;i++)
     fread(&stud[i],LEN,1,fp);
     fclose(fp);
   PF("\n请输入要查询的学生学号:");
   SF("%d",&k);
    getchar();
       for(i=0;i<n;i++)
       if(k==stud[i].num)/*查找记录*/
         {m=1;break;}
       if(m==1) 
    {PF("|  学号  |   姓名    | 英语 | 高数 | C语言 |  物理  |  总分 | 平均分 |名次|\n");
     PF("|--------|-----------|------|------|-------|--------|-------|--------|----|\n");
     PF("|   %d    |   % s     |  %d  |  %d  |  %d   |   %d   |  %d  |   %d   | %d |\n",stud[i].num,
           stud[i].name,stud[i].score[0],stud[i].score[1],stud[i].score[2],stud[i].score[3],stud[i].sum,stud[i].aver_stu,
           stud[i].index);}


       else PF("无记录显示,或记录已被删除!");
      PF("按回车键返回!");
      fclose(fp);
      getchar();
    }

 void main()
 { FILE *fp;
   char c;
   int i; clrscr(); /**/
  PF("\n\n\n\n\n\n\t\t\t *欢迎使用学生成绩统计系统*");
  PF("\n\n\n\t\t\t\t\t 制作人 董伟");
  PF("\n\n\n\t\t\t\t\t 2008年6月");
  PF("\n\n\n\n\n\t 按回车键进入主菜单:");/**/
    getchar();
  do
   { clrscr();
     PF("\n");
     PF("\t\t\t  **************\n");
     PF("\t\t\t  *   主菜单   *\n");
     PF("\t\t\t  **************\n\n\n");
     PF("\t     1添加一个学生信息   2删除一个学生信息\n\n");
     PF("\t     3修改一个学生信息   4浏览全部学生信息\n\n");
     PF("\t     5学生成绩排序       6查找一个学生信息\n\n");
     PF("\t                 7 退出系统\n\n\n\n");
     PF("\t  请选择[1/2/3/4/5/6/7]:");
      do
 { c=getchar();}
 while(c!='1'&&c!='2'&&c!='3'&&c!='4'&&c!='5'&&c!='6'&&c!='7');
  getchar();
 switch(c)
 { case'1':add();break;
   case'2':del();break;
   case'3':change();break;
   case'4':display();break;
   case'5':arrange();break;
   case'6':find();break;
   case'7':exit(0);
   }
      PF("  按任意键返回主菜单:\n");
       getchar();
       clrscr();
       } while(1);
  }

 



 
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
food91
2013-07-06 · 超过12用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:51万
展开全部
150分可以帮你写 15分什么心态
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式