欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言版學(xué)生成績(jī)管理系統(tǒng)

 更新時(shí)間:2021年09月23日 10:03:56   作者:isry  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言版學(xué)生成績(jī)管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語(yǔ)言版學(xué)生成績(jī)管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

#include<stdio.h> 
#include<stdlib.h> 
#include<time.h> 
#include<conio.h> 
#include<string.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,students+cnt,cmp2); 
    break; 
  case 3: 
  std::sort(students,students+cnt,cmp3); 
    break; 
  case 4: 
  std::sort(students,students+cnt,cmp4); 
    break; 
  default: 
    exit(0); 
  } 
  return cnt; 
} 
//---------------------------------------------------------PrintTitle() 
void PrintTitle() 
{ 
  printf("%-8s%-12s%-12s%-8s%-7s%-7s%-7s%-7s%-s\n","姓名","班級(jí)","學(xué)號(hào)","系院","語(yǔ)文","數(shù)學(xué)","英語(yǔ)","平均分","及格"); 
} 
//---------------------------------------------------------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+方式打開(kāi)防止data文件不存在時(shí)發(fā)生錯(cuò)誤 
  while((n=fread(&stu,sizeof(stu),1,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,"ab+"); 
  int n,cnt=0; 
  while((n=fread(&stu,sizeof(stu),1,fp)>0)) 
  { 
    if(!strcmp(stu.ClassNo,ClassNo)) 
    { 
      if(cnt==0) 
        PrintTitle(); 
      Print(stu); 
      cnt++; 
    } 
  } 
  fclose(fp); 
  if(cnt==0) 
    puts("無(wú)數(shù)據(jù)"); 
  else 
    printf("共%d條\n",cnt); 
} 
//---------------------------------------------------------PrintDept(char Dept[]) 
void PrintDept(char Dept[]) 
{ 
    Student stu; 
  FILE *fp=fopen(path,"ab+"); 
  int n,cnt=0; 
  while((n=fread(&stu,sizeof(stu),1,fp)>0)) 
  { 
    if(!strcmp(stu.Dept,Dept)) 
    { 
      if(cnt==0) 
        PrintTitle(); 
      Print(stu); 
      cnt++; 
    } 
  } 
  fclose(fp); 
  if(cnt==0) 
    puts("無(wú)數(shù)據(jù)"); 
  else 
    printf("共%d條\n",cnt); 
} 
//---------------------------------------------------------PrintAll() 
void PrintAll() 
{ 
  Student stu; 
  FILE *fp=fopen(path,"ab+"); 
  int n,cnt=0; 
  while((n=fread(&stu,sizeof(stu),1,fp)>0)) 
  { 
    if(cnt==0) 
      PrintTitle(); 
    Print(stu); 
    cnt++; 
  } 
  fclose(fp); 
  if(cnt==0) 
    puts("無(wú)數(shù)據(jù)"); 
  else 
    printf("共%d條\n",cnt); 
} 
//---------------------------------------------------------Input() 
Student Input() 
{ 
  Student stu; 
  puts("請(qǐng)輸入姓名、班級(jí)、學(xué)號(hào)、系院:"); 
  scanf("%s%s%s%s",&stu.Name,&stu.ClassNo,&stu.No,&stu.Dept); 
  puts("請(qǐng)輸入各科成績(jī):語(yǔ)文、數(shù)學(xué)、英語(yǔ)"); 
  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,sizeof(stu),1,fp); 
    fclose(fp); 
    puts("錄入成功"); 
    puts("繼續(xù)錄入嗎?[1]是[0]否"); 
    scanf("%d",&cmd); 
  }while(cmd==1); 
} 
//---------------------------------------------------------Del() 
void Del() 
{ 
  int cmd,cmd2; 
  char No[20]; 
  do{ 
  puts("請(qǐng)輸入要?jiǎng)h除的學(xué)號(hào):"); 
  scanf("%s",&No); 
  Student stu; 
  FILE *fp=fopen(path,"ab+"); 
  FILE *fp2=fopen(tmp,"wb"); 
  int n,find=0; 
  while((n=fread(&stu,sizeof(stu),1,fp))>0) 
  { 
    if(!strcmp(stu.No,No)) 
    { 
      find=1; 
      Print(stu); 
      puts("確定要?jiǎng)h除嗎?[1]確定[0]取消"); 
      scanf("%d",&cmd2); 
      if(cmd2==1) 
        puts("已刪除"); 
      else 
        fwrite(&stu,sizeof(stu),1,fp2); 
    } 
    else 
    fwrite(&stu,sizeof(stu),1,fp2); 
  } 
  fclose(fp); 
  fclose(fp2); 
  if(find==0) 
  { 
    printf("未找到學(xué)號(hào)%s\n",No); 
    remove(tmp); 
  } 
  else 
  { 
    remove(path); 
    rename(tmp,path); 
  } 
  puts("繼續(xù)刪除嗎?[1]是[0]否"); 
  scanf("%d",&cmd); 
  }while(cmd==1); 
} 
//---------------------------------------------------------Change() 
void Change() 
{   
  int cmd; 
  char No[20]; 
  do{ 
  puts("請(qǐng)輸入要更改的學(xué)號(hào):"); 
  scanf("%s",&No); 
  Student stu; 
  int find=0; 
  FILE *fp=fopen(path,"ab+"); 
  FILE *fp2=fopen(tmp,"wb"); 
  int n; 
  while((n=fread(&stu,sizeof(stu),1,fp))>0) 
  { 
    if(!strcmp(stu.No,No)) 
    { 
      find=1; 
      stu=Input(); 
      fwrite(&stu,sizeof(stu),1,fp2); 
    } 
    else 
      fwrite(&stu,sizeof(stu),1,fp2); 
  } 
  fclose(fp); 
  fclose(fp2); 
  if(find) 
  { 
    remove(path); 
    rename(tmp,path); 
    puts("更改成功!"); 
  } 
  else 
  { 
    printf("未找到學(xué)號(hào)%s\n",No); 
    remove(tmp); 
  } 
  puts("繼續(xù)更改嗎?[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,"ab+"); 
  int n,cnt=Sort(1); 
  while((n=fread(&stu,sizeof(stu),1,fp))>0) 
  { 
    sum+=stu.Chinese; 
    if(stu.Chinese>=60) 
      { 
        pass++; 
        if(stu.Chinese>=80) 
          better++; 
      } 
    else 
      fail++; 
  } 
  ave=sum/cnt; 
  puts("語(yǔ)文成績(jī)分析……"); 
  printf("共有%d學(xué)生\n優(yōu)秀:%d人\n及格:%d人\n不及格:%d人\n及格率:%.2lf%%\n",cnt,better,pass,fail,100.0*pass/cnt); 
  printf("%-8s%-10s%-12s%-s\n","名次","姓名","學(xué)號(hào)","語(yǔ)文"); 
  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,ave; 
  int pass=0,fail=0,better=0; 
  Student stu; 
  FILE *fp=fopen(path,"ab+"); 
  int n,cnt=Sort(2); 
  while((n=fread(&stu,sizeof(stu),1,fp))>0) 
  { 
    sum+=stu.Math; 
    if(stu.Math>=60) 
      { 
        pass++; 
        if(stu.Math>=80) 
          better++; 
      } 
    else 
      fail++; 
  } 
  ave=sum/cnt; 
  puts("數(shù)學(xué)成績(jī)分析……"); 
  printf("共有%d學(xué)生\n優(yōu)秀:%d人\n及格:%d人\n不及格:%d人\n及格率:%.2lf%%\n",cnt,better,pass,fail,100.0*pass/cnt); 
  printf("%-8s%-10s%-12s%-s\n","名次","姓名","學(xué)號(hào)","數(shù)學(xué)"); 
  for(int i=0;i<cnt;i++) 
  { 
    printf("第%2d名 %-10s%-12s%-8.2lf\n",i+1,students[i].Name,students[i].No,students[i].Math); 
  } 
  printf("平均分:%.2lf\n",ave); 
} 
void English() 
{ 
  double sum=0,ave; 
  int pass=0,fail=0,better=0; 
  Student stu; 
  FILE *fp=fopen(path,"ab+"); 
  int n,cnt=Sort(3); 
  while((n=fread(&stu,sizeof(stu),1,fp))>0) 
  {   
    sum+=stu.English; 
    if(stu.English>=60) 
      { 
        pass++; 
        if(stu.English>=80) 
          better++; 
      } 
    else 
      fail++; 
  } 
  ave=sum/cnt; 
  puts("英語(yǔ)成績(jī)分析……"); 
  printf("共有%d學(xué)生\n優(yōu)秀:%d人\n及格:%d人\n不及格:%d人\n及格率:%.2lf%%\n",cnt,better,pass,fail,100.0*pass/cnt); 
  printf("%-8s%-10s%-12s%-s\n","名次","姓名","學(xué)號(hào)","英語(yǔ)"); 
  for(int i=0;i<cnt;i++) 
  { 
    printf("第%2d名 %-10s%-12s%-8.2lf\n",i+1,students[i].Name,students[i].No,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,sizeof(stu),1,fp))>0) 
  {   
    sum+=stu.Chinese; 
    sum+=stu.Math; 
    sum+=stu.English; 
  } 
  puts("平均成績(jī)分析……"); 
  printf("%-8s%-10s%-12s%-s\n","名次","姓名","學(xué)號(hào)","平均成績(jī)"); 
  for(int i=0;i<cnt;i++) 
  { 
    printf("第%2d名 %-10s%-12s%-8.2lf\n",i+1,students[i].Name,students[i].No,students[i].Ave); 
  } 
  printf("平均分:%.2lf\n",sum/cnt/3); 
} 
//---------------------------------------------------------Search() 
void Search() 
{ 
  int cmd,cmd2; 
  while(1) 
  { 
    system("cls"); 
    puts("[1] 按學(xué)號(hào)查詢(xún)"); 
    puts("[2] 按班級(jí)查詢(xún)"); 
    puts("[3] 輸出全部"); 
    puts("[4] 按系別查詢(xún)"); 
    puts("[5] 課程分析"); 
    puts("[0] 返回主界面"); 
    scanf("%d",&cmd); 
    if(cmd==0) 
      break; 
    switch(cmd) 
    { 
    case 1: 
      { 
      char No[20]; 
      puts("請(qǐng)輸入要查詢(xún)的學(xué)號(hào):"); 
      scanf("%s",&No); 
      PrintNo(No); 
      } 
      break; 
    case 2: 
      { 
        char ClassNo[20]; 
        puts("請(qǐng)輸入要查詢(xún)班級(jí)號(hào):"); 
        scanf("%s",&ClassNo); 
        PrintClass(ClassNo); 
      } 
      break; 
    case 3: 
      PrintAll(); 
      break; 
    case 4: 
      { 
        char Dept[20]; 
        puts("請(qǐng)輸入要查詢(xún)的系別:"); 
        scanf("%s",&Dept); 
        PrintDept(Dept); 
      } 
      break; 
    case 5: 
      while(1) 
      { 
        puts("[1] 語(yǔ)文成績(jī)分析"); 
        puts("[2] 數(shù)學(xué)成績(jī)分析"); 
        puts("[3] 英語(yǔ)成績(jī)分析"); 
        puts("[4] 平均成績(jī)分析"); 
        puts("[0] 返回上一級(jí)"); 
        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("成績(jī)管理分析系統(tǒng)"); 
  for(i=0;i<14;i++) 
    putchar(c); 
  puts(""); 
  printf("        %c                       %c\n",c,c); 
  printf("         %c        請(qǐng)輸入指令        %c\n",c,c); 
  printf("        %c                       %c\n",c,c); 
  printf("         %c        [0] 退出         %c\n",c,c); 
  printf("        %c                       %c\n",c,c); 
  printf("         %c        [1] 錄入         %c\n",c,c); 
  printf("        %c                       %c\n",c,c); 
  printf("         %c        [2] 刪除         %c\n",c,c); 
  printf("        %c                       %c\n",c,c); 
  printf("         %c        [3] 查詢(xún)         %c\n",c,c); 
  printf("        %c                       %c\n",c,c); 
  printf("         %c        [4] 更改         %c\n",c,c); 
  printf("        %c                       %c\n",c,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("成績(jī)管理分析系統(tǒng)"); 
  for(i=0;i<14;i++) 
    putchar(c); 
  puts(""); 
  printf("         %c                     %c\n",c,c); 
  printf("        %c         請(qǐng)輸入指令         %c\n",c,c); 
  printf("         %c                     %c\n",c,c); 
  printf("        %c         [0] 退出          %c\n",c,c); 
  printf("         %c                     %c\n",c,c); 
  printf("        %c         [1] 錄入          %c\n",c,c); 
  printf("         %c                     %c\n",c,c); 
  printf("        %c         [2] 刪除          %c\n",c,c); 
  printf("         %c                     %c\n",c,c); 
  printf("        %c         [3] 查詢(xún)          %c\n",c,c); 
  printf("         %c                     %c\n",c,c); 
  printf("        %c         [4] 更改          %c\n",c,c); 
  printf("         %c                     %c\n",c,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; 
} 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++ 先對(duì)數(shù)組排序,在進(jìn)行折半查找

    C++ 先對(duì)數(shù)組排序,在進(jìn)行折半查找

    以下小編就為大家介紹兩種實(shí)現(xiàn)方法。第一種方法是,選擇排序法+循環(huán)折半查找法。第二種方法是,冒泡排序法+遞歸折半查找法。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-10-10
  • C語(yǔ)言動(dòng)態(tài)內(nèi)存分配圖文講解

    C語(yǔ)言動(dòng)態(tài)內(nèi)存分配圖文講解

    給數(shù)組分配多大的空間?你是否和初學(xué)C時(shí)的我一樣,有過(guò)這樣的疑問(wèn)。這一期就來(lái)聊一聊動(dòng)態(tài)內(nèi)存的分配,讀完這篇文章,你可能對(duì)內(nèi)存的分配有一個(gè)更好的理解
    2023-01-01
  • 詳解基于Matlab的空心散點(diǎn)檢測(cè)

    詳解基于Matlab的空心散點(diǎn)檢測(cè)

    這篇文章主要介紹了如何利用Matlab實(shí)現(xiàn)空心散點(diǎn)檢測(cè),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Matlab有一定的幫助,感興趣的可以跟隨小編了解一下
    2022-02-02
  • Qt自定義表頭實(shí)現(xiàn)過(guò)濾功能的方法

    Qt自定義表頭實(shí)現(xiàn)過(guò)濾功能的方法

    這篇文章主要個(gè)給大家介紹了關(guān)于Qt自定義表頭實(shí)現(xiàn)過(guò)濾功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Qt具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • VC++中HTControl控制類(lèi)使用之CHTDlgBase對(duì)話(huà)框基類(lèi)實(shí)例

    VC++中HTControl控制類(lèi)使用之CHTDlgBase對(duì)話(huà)框基類(lèi)實(shí)例

    這篇文章主要介紹了VC++中HTControl控制類(lèi)使用之CHTDlgBase對(duì)話(huà)框基類(lèi),是比較豐富而實(shí)用的功能,需要的朋友可以參考下
    2014-08-08
  • LintCode 堆化詳解及實(shí)例代碼

    LintCode 堆化詳解及實(shí)例代碼

    這篇文章主要介紹了LintCode 堆化詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • C++實(shí)現(xiàn)旋轉(zhuǎn)掃描儀的示例代碼

    C++實(shí)現(xiàn)旋轉(zhuǎn)掃描儀的示例代碼

    旋轉(zhuǎn)掃描儀(Rotating?Scanner),也稱(chēng)為旋轉(zhuǎn)掃描儀或圓形掃描儀,是一種用于獲取圖像和文檔的設(shè)備,下面就跟隨小編一起來(lái)學(xué)習(xí)一下如何使用C++實(shí)現(xiàn)旋轉(zhuǎn)掃描儀功能吧
    2024-02-02
  • c++統(tǒng)計(jì)文件中字符個(gè)數(shù)代碼匯總

    c++統(tǒng)計(jì)文件中字符個(gè)數(shù)代碼匯總

    本文給大家匯總介紹了3種使用C++實(shí)現(xiàn)統(tǒng)計(jì)文件中的字符個(gè)數(shù)的方法,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。
    2015-09-09
  • 詳解C++11中的lambda匿名函數(shù)

    詳解C++11中的lambda匿名函數(shù)

    匿名函數(shù),簡(jiǎn)單地理解就是沒(méi)有名稱(chēng)的函數(shù),又常被稱(chēng)為 lambda 函數(shù)或者 lambda 表達(dá)式,這篇文章主要介紹了C++11中的lambda匿名函數(shù),需要的朋友可以參考下
    2022-11-11
  • VC運(yùn)用OPENGL加載BMP紋理圖的實(shí)現(xiàn)方法匯總

    VC運(yùn)用OPENGL加載BMP紋理圖的實(shí)現(xiàn)方法匯總

    這篇文章主要介紹了VC運(yùn)用OPENGL加載BMP紋理圖的實(shí)現(xiàn)方法,對(duì)于更好的了解OpenGL很有幫助,需要的朋友可以參考下
    2014-07-07

最新評(píng)論