程序笔记   发布时间:2022-06-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C语言版学生成绩管理系统大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例为大家分享了C语言版学生成绩管理系统的具体代码,供大家参,具体内容如下

#include<stdio.h> 
#include<stdlib.h> 
#include<time.h> 
#include<conio.h> 
#include<@R_696_10495@ng.h> 
#include<algorithm> 
char buf[255]; 
char c=14; 
char path[]="D:\\data"; 
char tmp[]="D:\\tmp"; 
struct student 
{ 
  char name[20]; 
  char No[20]; 
  char Dept[20]; 
  char Classno[20]; 
  double Math,Chinese,English; 
  double Ave; 
  bool Pass; 
}students[500]; 
bool cmp1(student s1,student s2) 
{ 
  return s1.Chinese>s2.Chinese; 
} 
bool cmp2(student s1,student s2) 
{ 
  return s1.Math>s2.Math; 
} 
bool cmp3(student s1,student s2) 
{ 
  return s1.English>s2.English; 
} 
bool cmp4(student s1,student s2) 
{ 
  return s1.Ave>s2.Ave; 
} 
//---------------------------------------------------------voID Sort(int cmd) 
/* 
1 ChineseSort 
2 MathSort 
3 EnglishSort 
4 AveSort 
*/ 
int Sort(int cmd) 
{ 
  student stu; 
  file *fp=fopen(path,"ab+"); 
  int n,cnt=0; 
  while((n=fread(&stu,sizeof(stu),1,fp)>0)) 
  { 
    students[cnt++]=stu; 
  } 
  fclose(fp); 
  switch(cmd) 
  { 
  case 1: 
  std::sort(students,students+cnt,cmp1); 
    break; 
  case 2: 
  std::sort(students,cmp2); 
    break; 
  case 3: 
  std::sort(students,cmp3); 
    break; 
  case 4: 
  std::sort(students,cmp4); 
    break; 
  default: 
    exit(0); 
  } 
  return cnt; 
} 
//---------------------------------------------------------Printtitle() 
voID Printtitle() 
{ 
  printf("%-8s%-12s%-12s%-8s%-7s%-7s%-7s%-7s%-s\n","姓名","班级","学号","系院","语文","数学","英语","平均分","及格"); 
} 
//---------------------------------------------------------Print(student stu) 
voID Print(student stu) 
{ 
  printf("%-8s%-12s%-12s%-8s%-7.2lf%-7.2lf%-7.2lf%-7.2lf%-s\n",stu.name,stu.Classno,stu.No,stu.Dept,stu.Chinese,stu.Math,stu.English,stu.Ave,stu.Pass?"是":"否"); 
} 
//---------------------------------------------------------PrintNo(char No[]) 
voID PrintNo(char No[]) 
{ 
  student stu; 
  int n; 
  bool find=0; 
  file *fp=fopen(path,"ab+");//以ab+方式打开防止data文件不存在时发生错误 
  while((n=fread(&stu,fp))>0) 
  { 
    if(!strcmp(stu.No,No)) 
    { 
      find=1; 
      break; 
    } 
  } 
  fclose(fp); 
  if(find) 
  { 
    Printtitle(); 
    Print(stu); 
  } 
  else 
    puts("未找到!"); 
} 
//---------------------------------------------------------PrintClass(char Classno[]) 
voID PrintClass(char Classno[]) 
{ 
  student stu; 
  file *fp=fopen(path,fp)>0)) 
  { 
    if(!strcmp(stu.Classno,Classno)) 
    { 
      if(cnt==0) 
        Printtitle(); 
      Print(stu); 
      cnt++; 
    } 
  } 
  fclose(fp); 
  if(cnt==0) 
    puts("无数据"); 
  else 
    printf("共%d条\n",cnt); 
} 
//---------------------------------------------------------PrintDept(char Dept[]) 
voID PrintDept(char Dept[]) 
{ 
    student stu; 
  file *fp=fopen(path,fp)>0)) 
  { 
    if(!strcmp(stu.Dept,Dept)) 
    { 
      if(cnt==0) 
        Printtitle(); 
      Print(stu); 
      cnt++; 
    } 
  } 
  fclose(fp); 
  if(cnt==0) 
    puts("无数据"); 
  else 
    printf("共%d条\n",cnt); 
} 
//---------------------------------------------------------PrintAll() 
voID PrintAll() 
{ 
  student stu; 
  file *fp=fopen(path,fp)>0)) 
  { 
    if(cnt==0) 
      Printtitle(); 
    Print(stu); 
    cnt++; 
  } 
  fclose(fp); 
  if(cnt==0) 
    puts("无数据"); 
  else 
    printf("共%d条\n",cnt); 
} 
//---------------------------------------------------------input() 
student input() 
{ 
  student stu; 
  puts("请输入姓名、班级、学号、系院:"); 
  scanf("%s%s%s%s",&stu.name,&stu.Classno,&stu.No,&stu.Dept); 
  puts("请输入各科成绩:语文、数学、英语"); 
  scanf("%lf%lf%lf",&stu.Chinese,&stu.Math,&stu.English); 
  stu.Ave=(stu.Chinese+stu.Math+stu.English)/3; 
  if(stu.Chinese>=60&&stu.Math>=60&&stu.English>=60) 
    stu.Pass=1; 
  else 
    stu.Pass=0; 
  return stu; 
} 
//---------------------------------------------------------insert() 
voID insert() 
{ 
  int cmd; 
  do{ 
    student stu=input(); 
    file *fp=fopen(path,"ab+"); 
    fwrite(&stu,fp); 
    fclose(fp); 
    puts("录入成功"); 
    puts("继续录入吗?[1]是[0]否"); 
    scanf("%d",&cmd); 
  }while(cmd==1); 
} 
//---------------------------------------------------------Del() 
voID Del() 
{ 
  int cmd,cmd2; 
  char No[20]; 
  do{ 
  puts("请输入要删除的学号:"); 
  scanf("%s",&No); 
  student stu; 
  file *fp=fopen(path,"ab+"); 
  file *fp2=fopen(tmp,"wb"); 
  int n,find=0; 
  while((n=fread(&stu,No)) 
    { 
      find=1; 
      Print(stu); 
      puts("确定要删除吗?[1]确定[0]取消"); 
      scanf("%d",&cmd2); 
      if(cmd2==1) 
        puts("已删除"); 
      else 
        fwrite(&stu,fp2); 
    } 
    else 
    fwrite(&stu,fp2); 
  } 
  fclose(fp); 
  fclose(fp2); 
  if(find==0) 
  { 
    printf("未找到学号%s\n",No); 
    remove(tmp); 
  } 
  else 
  { 
    remove(path); 
    rename(tmp,path); 
  } 
  puts("继续删除吗?[1]是[0]否"); 
  scanf("%d",&cmd); 
  }while(cmd==1); 
} 
//---------------------------------------------------------Change() 
voID Change() 
{   
  int cmd; 
  char No[20]; 
  do{ 
  puts("请输入要更改的学号:"); 
  scanf("%s",&No); 
  student stu; 
  int find=0; 
  file *fp=fopen(path,"wb"); 
  int n; 
  while((n=fread(&stu,No)) 
    { 
      find=1; 
      stu=input(); 
      fwrite(&stu,fp2); 
    } 
    else 
      fwrite(&stu,fp2); 
  } 
  fclose(fp); 
  fclose(fp2); 
  if(find) 
  { 
    remove(path); 
    rename(tmp,path); 
    puts("更改成功!"); 
  } 
  else 
  { 
    printf("未找到学号%s\n",No); 
    remove(tmp); 
  } 
  puts("继续更改吗?[1]是[0]否"); 
  scanf("%d",&cmd); 
  }while(cmd==1); 
} 
//---------------------------------------------------------AboutCourse 
voID Chinese() 
{ 
  double sum=0,ave; 
  int pass=0,fail=0,better=0; 
  student stu; 
  file *fp=fopen(path,cnt=Sort(1); 
  while((n=fread(&stu,fp))>0) 
  { 
    sum+=stu.Chinese; 
    if(stu.Chinese>=60) 
      { 
        pass++; 
        if(stu.Chinese>=80) 
          better++; 
      } 
    else 
      faiL++; 
  } 
  ave=sum/cnt; 
  puts("语文成绩分析……"); 
  printf("共有%d学生\n优秀:%d人\n及格:%d人\n不及格:%d人\n及格率:%.2lf%%\n",cnt,better,pass,fail,100.0*pass/cnt); 
  printf("%-8s%-10s%-12s%-s\n","名次","语文"); 
  for(int i=0;i<cnt;i++) 
  { 
    printf("第%2d名 %-10s%-12s%-8.2lf\n",i+1,students[i].name,students[i].No,students[i].ChinesE); 
  } 
  printf("平均分:%.2lf\n",avE); 
} 
voID Math() 
{ 
  double sum=0,cnt=Sort(2); 
  while((n=fread(&stu,fp))>0) 
  { 
    sum+=stu.Math; 
    if(stu.Math>=60) 
      { 
        pass++; 
        if(stu.Math>=80) 
          better++; 
      } 
    else 
      faiL++; 
  } 
  ave=sum/cnt; 
  puts("数学成绩分析……"); 
  printf("共有%d学生\n优秀:%d人\n及格:%d人\n不及格:%d人\n及格率:%.2lf%%\n","数学"); 
  for(int i=0;i<cnt;i++) 
  { 
    printf("第%2d名 %-10s%-12s%-8.2lf\n",students[i].Math); 
  } 
  printf("平均分:%.2lf\n",avE); 
} 
voID English() 
{ 
  double sum=0,cnt=Sort(3); 
  while((n=fread(&stu,fp))>0) 
  {   
    sum+=stu.English; 
    if(stu.English>=60) 
      { 
        pass++; 
        if(stu.English>=80) 
          better++; 
      } 
    else 
      faiL++; 
  } 
  ave=sum/cnt; 
  puts("英语成绩分析……"); 
  printf("共有%d学生\n优秀:%d人\n及格:%d人\n不及格:%d人\n及格率:%.2lf%%\n","英语"); 
  for(int i=0;i<cnt;i++) 
  { 
    printf("第%2d名 %-10s%-12s%-8.2lf\n",students[i].English); 
  } 
  printf("平均分:%.2lf\n",avE); 
} 
voID Average() 
{ 
  student stu; 
  int n,cnt=Sort(4); 
  double sum=0; 
  file *fp=fopen(path,"ab+"); 
  while((n=fread(&stu,fp))>0) 
  {   
    sum+=stu.Chinese; 
    sum+=stu.Math; 
    sum+=stu.English; 
  } 
  puts("平均成绩分析……"); 
  printf("%-8s%-10s%-12s%-s\n","平均成绩"); 
  for(int i=0;i<cnt;i++) 
  { 
    printf("第%2d名 %-10s%-12s%-8.2lf\n",students[i].AvE); 
  } 
  printf("平均分:%.2lf\n",sum/cnt/3); 
} 
//---------------------------------------------------------Search() 
voID Search() 
{ 
  int cmd,cmd2; 
  while(1) 
  { 
    system("cls"); 
    puts("[1] 按学号查询"); 
    puts("[2] 按班级查询"); 
    puts("[3] 输出全部"); 
    puts("[4] 按系别查询"); 
    puts("[5] 课程分析"); 
    puts("[0] 返回主界面"); 
    scanf("%d",&cmd); 
    if(cmd==0) 
      break; 
    switch(cmd) 
    { 
    case 1: 
      { 
      char No[20]; 
      puts("请输入要查询的学号:"); 
      scanf("%s",&No); 
      PrintNo(No); 
      } 
      break; 
    case 2: 
      { 
        char Classno[20]; 
        puts("请输入要查询班级号:"); 
        scanf("%s",&Classno); 
        PrintClass(Classno); 
      } 
      break; 
    case 3: 
      PrintAll(); 
      break; 
    case 4: 
      { 
        char Dept[20]; 
        puts("请输入要查询的系别:"); 
        scanf("%s",&Dept); 
        PrintDept(Dept); 
      } 
      break; 
    case 5: 
      while(1) 
      { 
        puts("[1] 语文成绩分析"); 
        puts("[2] 数学成绩分析"); 
        puts("[3] 英语成绩分析"); 
        puts("[4] 平均成绩分析"); 
        puts("[0] 返回上一级"); 
        scanf("%d",&cmd2); 
        if(cmd2==0) 
          break; 
        switch(cmd2) 
        { 
        case 1: 
          Chinese(); 
          break; 
        case 2: 
          Math(); 
          break; 
        case 3: 
          English(); 
          break; 
        case 4: 
          Average(); 
          break; 
        default: 
          puts("不合法指令!"); 
        } 
      } 
      break; 
    default: 
      puts("不合法指令!"); 
    } 
    while(1) 
    { 
      puts("[0] 返回"); 
      puts("[1] 录入"); 
      puts("[2] 删除"); 
      puts("[3] 修改"); 
      scanf("%d",&cmd2); 
      if(cmd2==0) 
        break; 
      switch(cmd2) 
      { 
      case 1: 
        insert(); 
          break; 
      case 2: 
        Del(); 
        break; 
      case 3: 
        Change(); 
        break; 
      default: 
        puts("不合法指令!"); 
      } 
    } 
  } 
} 
//---------------------------------------------------------Menu() 
voID ShowMenu1() 
{   
  int i; 
  puts(""); 
  printf("         "); 
  for(i=0;i<14;i++) 
    putchar(c); 
  printf("成绩管理分析系统"); 
  for(i=0;i<14;i++) 
    putchar(c); 
  puts(""); 
  printf("        %c                       %c\n",c,c); 
  printf("         %c        请输入指令        %c\n",c); 
  printf("        %c                       %c\n",c); 
  printf("         %c        [0] 退出         %c\n",c); 
  printf("         %c        [1] 录入         %c\n",c); 
  printf("         %c        [2] 删除         %c\n",c); 
  printf("         %c        [3] 查询         %c\n",c); 
  printf("         %c        [4] 更改         %c\n",c); 
  printf("         "); 
  for(i=0;i<44;i++) 
    putchar(c); 
  puts(""); 
} 
voID ShowMenu2() 
{   
  int i; 
  puts(""); 
  printf("         "); 
  for(i=0;i<14;i++) 
    putchar(c); 
  printf("成绩管理分析系统"); 
  for(i=0;i<14;i++) 
    putchar(c); 
  puts(""); 
  printf("         %c                     %c\n",c); 
  printf("        %c         请输入指令         %c\n",c); 
  printf("         %c                     %c\n",c); 
  printf("        %c         [0] 退出          %c\n",c); 
  printf("        %c         [1] 录入          %c\n",c); 
  printf("        %c         [2] 删除          %c\n",c); 
  printf("        %c         [3] 查询          %c\n",c); 
  printf("        %c         [4] 更改          %c\n",c); 
  printf("         "); 
  for(i=0;i<44;i++) 
    putchar(c); 
  puts(""); 
} 
//---------------------------------------------------------voID Randcolor() 
voID Randcolor() 
{ 
  int a,b; 
  char param[20]="color ",param2[10]; 
  do{ 
    a=rand()%16; 
    b=rand()%16; 
  }while(a==b); 
  sprintf(param2,"%x%x",a,b); 
  strcat(param,param2); 
  system(param); 
} 
//---------------------------------------------------------main() 
int main() 
{ 
  int cmd; 
  srand(time(NulL)); 
  for(int i=0;i<8;i++) 
  { 
  Randcolor(); 
  system("cls"); 
  ShowMenu1(); 
  system("cls"); 
  ShowMenu2(); 
  } 
  system("color 0a"); 
  while(1) 
  { 
    system("cls"); 
    ShowMenu1(); 
    printf("[ ]\b\b"); 
    scanf("%d",&cmd); 
    if(cmd==0) 
      break; 
    switch(cmd) 
    { 
    case 1: 
      insert(); 
      break; 
    case 2: 
      Del(); 
      break; 
    case 3: 
      Search(); 
      break; 
    case 4: 
      Change(); 
      break; 
    default: 
      puts("命令不合法!"); 
    } 
  } 
  return 0; 
} 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

您可能感兴趣的文章:

  • C语言数组实现学生信息管理系统设计
  • C语言学生信息管理系统小项目
  • C语言实现学生信息管理系统(单链表)
  • C语言单链表版学生信息管理系统
  • 学生信息管理系统C语言版
  • C语言实现简单学生学籍管理系统
  • C语言学生学籍管理系统课程设计
  • C语言实现学生学籍管理系统
  • C语言实现图书管理系统
  • C语言实现歌曲信息管理系统

大佬总结

以上是大佬教程为你收集整理的C语言版学生成绩管理系统全部内容,希望文章能够帮你解决C语言版学生成绩管理系统所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。