成绩管理系统,c语言,可用文件保存。

#include<stdio.h>
#define N 5
#define M 50
void cover()
{
 printf("--------------------------------\n");
 printf("  班级成绩管理系统  \n");
 printf("|     版本号V1.0  |\n");
 printf("|     开发日前:2014年  |\n");
 printf("--------------------------------\n");
}
void input(float a[][N+4],int m,int n)
{
 int i,j;
 printf("成绩输入开开始....\n");
 printf("请依次输入对应学生%d门课程的成绩\n",n);
 printf("学号\t各科成绩\n");
 for(i=0;i<m;i++)
 {
  printf("%d",i+1);
  a[i][0]=i+1;
  for(j=1;j<=n;j++)
  {
   printf("\t课程%d:",j);
   scanf("%f",&a[i][j]);
  }
  a[i][n+1]=0;a[i][n+2]=0;a[i][n+3]=0;
 }
 printf("成绩录入结束,单击任意键结束.....\n");
 getch();
}
int select()
{
 int x;
 printf("你好,本系统主要有如下功能\n");
 printf("\t\t0:计算每个学生的总分和平均分\n");
 printf("\t\t1:按学号显示班级学生的各科成绩\n");
 printf("\t\t2:计算每门课程的平均分,最高分和最低分\n");
 printf("\t\t3:按照总分从高分到低分显示学生成绩——排出名次\n");
 printf("\t\t4:统计课程的及格率和优秀率\n");
 printf("\t\t5:统计课程不及格人数,并打印不及格学生名单\n");
 printf("\t\t6:退出\n");
 do
 {
  printf("请选择:");
  scanf("%d",&x);
  if(x<0||x>6)
   printf("对不起,你的输入有误,请从新输入:");
  else return x;
 }while(1);
}
void show(float a[][N+4],int m,int n)
{
 int i,j;
 printf("\t\t班级学生所有课程成绩表\n");
 printf("\t学号\t");
 for(i=1;i<=n;i++)
  printf("课程%d\t",i);
 printf("总分\t平均分\n");
 for(i=0;i<m;i++)
 {
  printf("\t%.0f\t",a[i][0]);
  for(j=1;j<=n;j++)
   printf("%.1f\t",a[i][j]);
  printf("%.1f\t%.1f\t",a[i][n+1],a[i][n+2]);
  printf("\n");
 }
}
void compute(float a[][N+4],int m,int n)
{
 int i,j;
 printf("正在计算每个学生的总分和平均分,请稍等....\n");
 for(i=0;i<m;i++)
 {
  for(j=1;j<=n;j++)
   a[i][n+1]+=a[i][j];
  a[i][n+2]=a[i][n+1]/n;
 }
}
void ave(float a[][N+4],int m,int n)
{
 int i,j;
 printf("正在计算每门课程的平均分、最高分和最低分,请稍等....\n");
 for(i=1;i<=n+2;i++)
 {
  a[m][i]=0;
  a[m+1][i]=a[m+2][i]=a[0][i];
  for(j=0;j<m;j++)
  {
   a[m][i]+=a[j][i];
   if(a[j][i]>a[m+1][i])
    a[m+1][i]=a[j][i];
   if(a[j][i]<a[m+2][i])
    a[m+2][i]=a[j][i];
  }
  a[m][i]/=m;
 }
 printf("下面显示各科的及格率和优秀率...\n");
 printf("\t\t");
 for(i=1;i<=n;i++)
 {
  printf("课程%d\t",i);
 }
 printf("\n\t平均分\t");
 for(j=1;j<=n;j++)
  printf("%.1f\t",a[m+1][j]);
 printf("\n");
 printf("\t最高分\t");
 for(j=1;j<=n;j++)
  printf("%.1f\t",a[m+1][j]);
 printf("\n");
 printf("\t最低分\t");
 for(j=1;j<=n;j++)
  printf("%.1f\t",a[m+2][j]);
 printf("\n");
}
void sort(float a[][N+4],int m,int n)
{
 int i,j,k;
 float t,b[M+3][N+4];
 for(i=0;i<m;i++)
  for(j=0;j<n+4;j++)
   b[i][j]=a[i][j];
 for(i=0;i<m-1;i++)
 {
  k=i;
  if(b[i][n+1]==0)
  {
   printf("对不起,总分还没有计算,请先计算总分在排序.....\n");
   return;
  }
  for(j=i+1;j<m;j++)
   if(b[j][n+1]>b[k][n+1])
    k=j;
  if(k!=i)
   {
    for(j=0;j<=n+2;j++)
    {
     t=b[k][j];b[k][j]=b[i][j];b[i][j]=t;
    }
   }
   b[i][n+3]=i+1;
 }
 b[i][n+3]=i+1;
 printf("排序后-----------------------\n");
 printf("\t学号\t");
 for(i=1;i<=n;i++)
  printf("课程%d\t",i);
 printf("总分\t平均分\t名次\n");
 for(i=0;i<m;i++)
 {
  printf("\t%.0f\t",b[i][0]);
  for(j=1;j<=n;j++)
         printf("%.1f\t",b[i][j]);
  printf("%.1f\t%.1f\t",b[i][n+1],b[i][n+2]);
  printf("%.0f\n",b[i][n+3]);
 }
 
}
void pass(float a[][N+4],int m,int n)
{
 int i,j,jg=0,yx=0;
 printf("正在计算每门课程的及格率和优秀率,请稍等....\n");
 printf("下面显示各科的及格率和优秀率.....\n");
 printf("\t\t");
 for(i=1;i<=n;i++)
 {
  printf("课程%d\t",i);
 }
 for(i=1;i<=n+2;i++)
 {
  a[m+3][i]=a[m+4][i]=0;jg=yx=0;
  for(j=0;j<m;j++)
  {
   if(a[j][i]>=60)
    jg++;
   if(a[j][i]>=85)
    yx++;
  }
  a[m+3][i]=jg*1.0/m;
  a[m+4][i]=yx*1.0/m;
 }
 printf("\n\t及格率\t");
 for(i=1;i<=n;i++)
  printf("%.1f%%\t",a[m+3][i]*100);
 printf("\n\t优秀率\t");
 for(i=1;i<=n;i++)
  printf("%.1f%%\t",a[m+4][i]*100);
 printf("\n");
}
void fail(float a[][N+4],int m,int n)
{
 int i,j,bjg[N];
 for(j=1;j<=n;j++)
 {
  bjg[j]=0;
  printf("课程%d不及格学生的学号为:",j);
  for(i=0;i<m;i++)
   if(a[i][j]<60)
   {
    printf("%.0f\t",a[i][0]);
    bjg[j]++;
   }
  printf("\n\t\t\t该课程共有%d个学生不及格\n",bjg[j]);
 }
}
void main()
{
 float stu[M+3][N+4];
 int i,kc,rs;
 cover();
 printf("老师,你好!欢迎使用本系统\n");
 printf("请问本学期一共进行了几门考试:");
 scanf("%d",&kc);
 printf("请输入该班级的学生人数:");
 scanf("%d",&rs);
 input(stu,rs,kc);
 while(1)
 {
  i=select();
  switch(i)
  {
  case 0:compute(stu,rs,kc);break;
  case 1:show(stu,rs,kc);break;
  case 2:ave(stu,rs,kc);break;
  case 3:sort(stu,rs,kc);break;
  case 4:pass(stu,rs,kc);break;
  case 5:fail(stu,rs,kc);break;
  case 6:printf("谢谢使用,再见.....\n");exit(0);
  }
  printf("本操作完成,单击任意键继续....\n");
  getch();
 }
}

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include <stdio.h> #include <stdlib.h> #include <string.h> #include<ctype.h> #define M 3 struct student {long num; char name[20]; char sex; int score[5]; int ave; }stu[M]; void init() { printf("\t\t********************************\n\n"); printf("\t\tStudent score management systerm \n"); printf("\n"); printf("\t\t Make by Maggiehe \n"); printf("\n"); printf("\t\t Student number is 3206***** \n\n"); printf("\t\t********************************\n\n"); } void input() { int i,j; printf("\nInput the student number name sex math English PE maolun majing:\n"); for(i=0;i<M;i++) {scanf("%ld,%s,%c",&stu[i].num,stu[i].name,&stu[i].sex); for(j=0;j<5;j++) scanf("%d",&stu[i].score[j]); scanf("%d",&stu[i].ave); save(); } } void list() { int i,j; clrscr(); printf("\t**********************student****************************\n"); printf("num name sex math English PE maolun majing:\n"); for(i=0;i<M;i++) { printf("%ld %s %c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%d",stu[i].score[j]); printf("%d",stu[i].ave); } if((i+1)%10==0) { printf("\npress any key continue.......\n"); getch(); } printf("\t*************************end*********************************\n"); } void average() { int i,j; float sum[M]; for(i=0;i<M;i++) for(j=0;j<5;j++) sum[i]+=stu[i].score[j]; stu[i].ave=sum[i]/5.0; } void search_num() { long num; int i,j; printf("\nplease enter number which you want to search:"); scanf("%ld",&num); printf("\n"); for(i=0;i<M;i++) if(stu[i].num!=num) printf("The number is not exist\n"); else { printf("number name sex math English PE maolun majing average\n"); printf("%ld %s %c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%d",stu[i].score[j]); printf("%d",stu[i].ave); } } void search_nam() { int i,j; char name[20]; printf("\nplease enter name which you want to search:"); scanf("%s",&name); printf("\n"); for(i=0;i<M;i++) if(strcmp(stu[i].name,name)==0) { printf("number name sex math English PE maolun majing average:\n"); printf("%ld%s%c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%d",stu[i].score[j]); printf("%d",stu[i].ave); } else printf("\nThe name is not exist!!!\n"); } void search_ave() { int i,j,a=0; float k; printf("please enter average score which you want to search:"); scanf("%f",&k); printf("\n"); for(i=0;i<M;i++) if(stu[i].ave!=k) printf("The average score is not exist!!!\n"); else for(i=0;i<M;i++) { if(stu[i].ave<=k) printf("number name sex math English PE maolun majing average\n"); printf("%ld %s %c",stu[i].num,stu[i].name,stu[i].sex); for(j=0;j<5;j++) printf("%d",stu[i].score[j]); printf("%d",stu[i].ave); a++; } } void sort() { int i,j; struct student temp; for(i=0;i<M;i++) for(j=i+i;j<M;j++) if(stu[i].ave<stu[j].ave) {temp=stu[i]; stu[i]=stu[j]; stu[j]=temp; } } void save() { int i; FILE *fp; if((fp=fopen("student.dat","wb"))==NULL) {printf("cannot open file\n"); return; } for(i=0;i<M;i++) if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1) printf("file write error\n"); fclose(fp); } void delect() { int i,t; long num; printf("please enter number which you want to delect:"); scanf("%ld",&num); printf("\n"); for(i=0;i<M;i++) { if(stu[i].num!=num) printf("The number is not exist!!!\n"); if(stu[i].num==num) t=i; } for(i=t;i<M;i++) stu[i]=stu[i+1]; save(); } void insert() {FILE *fp; int i,n,t; struct student s; printf("please input record\n"); printf("number name sex math English PE maolun majing average\n"); scanf("%ld,%s,%c,%d%d%d%d%d%d",&s.num,s.name,&s.sex,&s.score[0],&s.score[1],&s.score[2],&s.score[3],&s.score[4],&s.ave); s.ave=(s.score[0]+s.score[1]+s.score[2]+s.score[3]+s.score[4])/3.0; if((fp=fopen("student.dat","wb"))==NULL) {printf("cannot open file\n"); return; } i=M; for(t=0;stu[i].ave>s.ave&&t<M;t++) if(fwrite(&s,sizeof(struct student),1,fp)!=1) printf("file write error\n"); fclose(fp); } void MainMenu() {clrscr(); printf("\t********************************************************************\n \n); Printf(“\n”); printf("\t choose one of following:\n"); printf("\t 1. search record\n"); printf("\t 2. sort record\n"); printf("\t 3. insert record\n"); printf("\t 4. delect record\n"); printf("\t please enter your choice:"); printf(“\n”); printf("\t********************************************************************\n"); } void menu_select() {clrscr(); printf("\t******************************************************************\n\n"); printf(“\n”); printf("\t choose one of following:\n"); printf("\t 1.1 search by number\n"); printf("\t 1.2 search by name\n"); printf("\t 1.3 search by average score\n"); printf("\t please enter your choice:"); printf(“\n”); printf("\t******************************************************************\n"); } void search() { char ch; clrscr(); menu_select(); ch=getch(); switch(ch) { case '1':search_num();break; case '2':search_nam();break; case '3':search_ave();break; } } main() { char ch; clrscr(); init(); input(); list(); average(); save(); MainMenu(); ch=getch(); switch(ch) { case '1':search();break; case '2':sort();break; case '3':insert();break; case '4':delect();break; } search_num(); search_nam(); search_ave(); sort(); delect(); insert; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值