C语言学籍管理系统源代码

 更新时间:2018年03月22日 08:35:31   作者:唯一  
这篇文章主要为大家详细介绍了C语言学籍管理系统源代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

C语言学籍管理系统,整理一份,供大家参考,具体内容如下

#include <stdio.h> 
#include <conio.h> 
#include <stdlib.h> 
#define N 100 
void mycreat(); 
void mynewcreat(); 
void mydisplay(); 
void myretake(); 
void myselect(); 
void mynumsort(); 
void mysort(); 
void myprint1(); 
void myprint2(); 
void myprint3(); 
void myfenduan(); 
struct student 
{ 
 char name[10]; 
 int grade[5]; 
 double ave; 
 char num[10]; 
 
}; 
void myprint1() 
{ 
 char choose='\0',yes_no='\0'; 
 do 
 { 
 system("cls"); 
 printf (" |---------------------------|\n"); 
 printf (" | 请输入选项编号(0-4) |\n"); 
 printf (" |---------------------------|\n"); 
 printf (" | 1----------录入成绩 |\n"); 
 printf (" | 2----------统计成绩 |\n"); 
 printf (" | 3----------处理学籍 |\n"); 
 printf (" | 4----------显示数据 |\n"); 
 printf (" | 0----------退出系统 |\n"); 
 printf (" |---------------------------|\n"); 
 printf("   "); 
 choose=getche(); 
 switch(choose) 
 { case '1':mycreat(); break; 
  case '2':myprint2(); break; 
  case '3':myprint3(); break; 
  case '4':mydisplay(); break; 
  case '0':break; 
  default :printf("\n   %c为非法选项!\n",choose); 
 } 
 if(choose=='0') 
  { 
  printf("\n"); 
  printf("感谢您的使用!\n"); 
  break; 
  } 
 printf("\n   要继续选择吗(Y/N)?\n"); 
 do 
 { yes_no=getch( ); 
 } while(yes_no!='Y' && yes_no!='y'&& yes_no!='N' && yes_no!='n'); 
 } while(yes_no=='Y' || yes_no=='y'); 
} 
 
 
void myprint2() 
{ 
 char choose='\0',yes_no='\0'; 
 do 
 { 
 system("cls"); 
 printf (" |-----------------------------------|\n"); 
 printf (" | 请输入选项编号(0-4)  |\n"); 
 printf (" |-----------------------------------|\n"); 
 printf (" | 1----------按学号排序  |\n"); 
 printf (" | 2----------计算平均分并排序 |\n"); 
 printf (" | 3----------统计分数段  |\n"); 
 printf (" | 4----------返回   |\n"); 
 printf (" | 0----------退出系统  |\n"); 
 printf (" |-----------------------------------|\n"); 
 printf("   "); 
 choose=getche(); 
 switch(choose) 
 { case '1':mynumsort(); break;  
  case '2':mysort(); break; 
  case '3':myfenduan(); break;  
  case '4':myprint1(); break; 
  case '0':break; 
  default :printf("\n   %c为非法选项!\n",choose); 
 } 
 if(choose=='0') 
  { 
  printf("\n"); 
  printf("感谢您的使用!\n"); 
  break; 
  } 
 printf("\n   要继续选择吗(Y/N)?\n"); 
 do 
 { yes_no=getch( ); 
 } while(yes_no!='Y' && yes_no!='y'&& yes_no!='N' && yes_no!='n'); 
 } while(yes_no=='Y' || yes_no=='y'); 
} 
 
void myprint3() 
{ 
 char choose='\0',yes_no='\0'; 
 do 
 { 
 system("cls"); 
 printf (" |---------------------------------------|\n"); 
 printf (" | 请输入选项编号(0-4)   |\n"); 
 printf (" |---------------------------------------|\n"); 
 printf (" | 1----------生成并打印补考通知单 |\n"); 
 printf (" | 2----------生成并打印退学通知单 |\n"); 
 printf (" | 3----------生成并打印新名册  |\n"); 
 printf (" | 4----------返回   |\n"); 
 printf (" | 0----------退出系统   |\n"); 
 printf (" |---------------------------------------|\n"); 
 printf("   "); 
 choose=getche(); 
 switch(choose) 
 { case '1':myretake(); break; 
  case '2':myselect(); break; 
  case '3':mynewcreat(); break; 
  case '4':myprint1(); break; 
  case '0':break; 
  default :printf("\n   %c为非法选项!\n",choose); 
 } 
 if(choose=='0') 
  { 
  printf("\n"); 
  printf("感谢您的使用!\n"); 
  break; 
  } 
 printf("\n   要继续选择吗(Y/N)?\n"); 
 do 
 { yes_no=getch( ); 
 } while(yes_no!='Y' && yes_no!='y'&& yes_no!='N' && yes_no!='n'); 
 } while(yes_no=='Y' || yes_no=='y'); 
} 
 
void mycreat() 
{ 
 int i=1,j=0; 
 struct student temp={0}; 
 FILE*fp=NULL; 
 fp=fopen("d:\\yuan.dat","w"); 
 if(fp==NULL) 
 { 
 printf("打开文件失败!\n"); 
 return; 
 } 
 system("cls"); 
 printf("注意:输入学号时请将所有位数保持一致不足位用0补齐。例如最大学号为1000则均保持4位有效数字。"); 
 printf("\n 请输入第1个记录:\n"); 
 printf(" 学号(用#结束输入):"); 
 do 
 { 
 gets(temp.num); 
 }while(strcmp(temp.num,"")==0); 
 printf(" 姓名(用#结束输入):"); 
 gets(temp.name); 
 printf(" 请输入 高数 英语 物理 编程 马哲 5组成绩(用#结束输入): "); 
 for(j=0;j<=4;j++) 
 { 
 scanf("%d",&temp.grade[j]); 
 } 
 
 while(temp.num[0]!='#'&&temp.name[0]!='#'&&temp.grade[0]!='#') 
 { 
 fprintf(fp,"%23s%15s",temp.num,temp.name); 
 for(j=0;j<=4;j++) 
 { 
  fprintf(fp,"%5d",temp.grade[j]); 
 } 
 fprintf(fp,"\n"); 
 i++; 
 printf("\n  请输入第%d个记录:\n",i); 
 printf("  学号(用#结束输入):"); 
 do 
 { 
  gets(temp.num); 
 }while(strcmp(temp.num,"")==0); 
  printf(" 姓名(用#结束输入):"); 
 gets(temp.name); 
 printf(" 请输入 高数 英语 物理 编程 马哲 5组成绩 (用#结束输入): "); 
 for(j=0;j<=4;j++) 
 { 
  scanf("%8d",&temp.grade[j]); 
 } 
 
 } 
 fclose(fp); 
} 
void mynumsort() 
{ 
 int i=0,j=0,k=0,n=0,grade=0,num=0,m=0,ww; 
 struct student temp[N]={0}; 
 struct student a; 
 FILE *fp=NULL; 
 FILE *fq=NULL; 
 fp=fopen("d:\\yuan.dat","r"); 
 if(fp==NULL) 
 { 
 printf("\n 打开文件失败!\n"); 
 return; 
 
 } 
 system("cls"); 
 while(feof(fp)==0) 
 { 
 ww=fscanf(fp,"%23s%15s",temp[n].num,temp[n].name); 
 if(ww==-1) break; 
 for(j=0;j<5;j++) 
 { 
  fscanf(fp,"%d",&temp[n].grade[j]); 
  
 } 
 n++; 
 } 
 printf("n=%d",n); 
 fclose(fp); 
 printf("\n"); 
 for(i=0; i<n; i++)   
 { k=i; 
 for(j=k+1; j<n; j++) 
  if(strcmp(temp[k].num,temp[j].num)>0) 
  k=j; 
 a=temp[i]; 
 temp[i]=temp[k]; 
 temp[k]=a; 
 } 
 for(k=0;k<n;k++) 
 { 
 printf("%10s号 %10s同学",temp[k].num,temp[k].name); 
 for(m=0;m<5;m++) 
 { 
  printf("%5d分",temp[k].grade[m]); 
 } 
 printf("\n"); 
 } 
 if(n==0)printf("\n 文件中无记录!\n"); 
 else printf("\n  文件中有%d个记录",n); 
 
 fq=fopen("d:\\std.dat","w"); 
 if(fq==NULL) 
 { 
 printf("打开文件失败!\n"); 
 exit(0); 
 } 
 for(i=0;i<n;i++) 
 { 
 fprintf(fq,"%23s%15s",temp[i].num,temp[i].name); 
 for(j=0;j<5;j++) 
 { 
  fprintf(fq,"%2d",temp[i].grade[j]); 
 } 
 fprintf(fq,"\n"); 
 } 
 fclose(fq); 
 printf("计算已完成 保存在d:\std.dat文件当中,请查验"); 
} 
void mysort() 
{ 
 struct student temp[N]={0},a[N]={0}; 
 int i=0,j=0,n=0,ww=0; 
 FILE*fp=NULL; 
 FILE*fq=NULL; 
 fp=fopen("d:\\yuan.dat","r"); 
 if(fp==NULL) 
 { 
 printf("打开文件失败!\n"); 
 exit(0); 
 } 
 system("cls"); 
 while(feof(fp)==0) 
 { 
 ww=fscanf(fp,"%23s%15s",temp[n].num,temp[n].name); 
 if(ww==-1) break; 
 for(j=0;j<5;j++) 
 { 
  fscanf(fp,"%d",&temp[n].grade[j]); 
  
 } 
 n++; 
 } 
 
 for(i=0;i<n;i++) 
 { 
 for(j=0;j<5;j++) 
 { 
  temp[i].ave=temp[i].ave+temp[i].grade[j]; 
 } 
 temp[i].ave=temp[i].ave/5; 
  
 } 
 for(i=0;i<n;i++) 
 { 
 if(temp[i].ave<temp[i+1].ave) 
 { 
  a[i]=temp[i]; 
  temp[i]=temp[i+1]; 
  temp[i+1]=a[i]; 
 } 
 } 
 fq=fopen("d:\\sort.dat","w"); 
 if(fq==NULL) 
 { 
 printf("打开文件失败!\n"); 
 exit(0); 
 } 
 for(i=0;i<n;i++) 
 { 
 fprintf(fq,"%23s%15s%10.2f",temp[i].num,temp[i].name,temp[i].ave ); 
 
 for(j=0;j<5;j++) 
 { 
  fprintf(fq,"%2d",temp[i].grade[j]); 
 } 
 fprintf(fq,"\n"); 
 } 
 
 fclose(fq); 
 printf("计算已完成 保存在d:\sort.dat文件当中,请查验"); 
} 
 
void myfenduan() 
{ 
 int i=0,j=0,n=0,ww; 
 int b[N]={0},c[N]={0},d[N]={0},e[N]={0},f[N]={0}; 
 struct student temp[N]={0}; 
 FILE*fp=NULL; 
 fp=fopen("d:\\yuan.dat","r"); 
 if(fp==NULL) 
 { 
 printf("打开文件失败!\n"); 
 return; 
 } 
 system("cls"); 
 while(feof(fp)==0) 
 { 
 ww=fscanf(fp,"%23s%15s",temp[n].num,temp[n].name); 
 if(ww==-1) break; 
 for(j=0;j<5;j++) 
 { 
  fscanf(fp,"%d",&temp[n].grade[j]); 
  
 } 
 n++; 
 } 
 for(i=0;i<n;i++) 
 { 
 for(j=0;j<5;j++) 
  { 
  if(temp[i].grade[j]>=90) 
   b[j]=b[j]+1; 
  else if(temp[i].grade[j]>=80) 
   c[j]=c[j]+1; 
  else if(temp[i].grade[j]>=70) 
   d[j]=d[j]+1; 
  else if(temp[i].grade[j]>=60) 
   e[j]=e[j]+1; 
  else f[j]=f[j]+1; 
  } 
 } 
 printf("各门课、各分数段学生的人数\n"); 
 printf("________________________________________________________\n"); 
 printf(" |90分以上 | 80~89分 | 70~79分 | 60~69分 | 60分以下 \n"); 
 printf("--------------------------------------------------------\n"); 
 printf("高数_____%d________%d_________%d________%d_________%d___\n",b[0],c[0],d[0],e[0],f[0]); 
 printf("__________________________________________________\n"); 
 printf("英语_____%d________%d_________%d________%d_________%d___\n",b[1],c[1],d[1],e[1],f[1]); 
 printf("__________________________________________________\n"); 
 printf("物理_____%d________%d_________%d________%d_________%d___\n",b[2],c[2],d[2],e[2],f[2]); 
 printf("__________________________________________________\n"); 
 printf("编程_____%d________%d_________%d________%d_________%d___\n",b[3],c[3],d[3],e[3],f[3]); 
 printf("__________________________________________________\n"); 
 printf("马哲_____%d________%d_________%d________%d_________%d___\n",b[4],c[4],d[4],e[4],f[4]); 
 printf("__________________________________________________\n"); 
 fclose(fp); 
} 
void mydisplay() 
{ int n=0,j=0,k=0,m=0,ww; 
 struct student temp[N]={0}; 
 FILE*fp=NULL; 
 fp=fopen("d:\\yuan.dat","r"); 
 if(fp==NULL) 
 { 
 printf("打开文件失败!\n"); 
 return; 
 } 
 system("cls"); 
 while(feof(fp)==0) 
 { 
 ww=fscanf(fp,"%23s%15s",temp[n].num,temp[n].name); 
 if(ww==-1) break; 
 for(j=0;j<5;j++) 
 { 
  fscanf(fp,"%d",&temp[n].grade[j]); 
  
 } 
 n++; 
 } 
 for(k=0;k<n;k++) 
 { 
 printf("%23s %15s ",temp[k].num,temp[k].name); 
 
 for(m=0;m<5;m++) 
 { 
  printf("%d ",temp[k].grade[m]); 
 } 
 printf("\n"); 
 } 
 if(n==0)printf("\n 文件中无记录!\n"); 
 else printf("\n 文件中共有%d个记录!",n); 
 fclose(fp); 
} 
 
void myretake() 
{ 
 int i=0,e=0,j=0,n=0,s[5]={0},ww; 
 struct student temp[N]={0}; 
 FILE*fp=NULL; 
 fp=fopen("d:\\yuan.dat","r"); 
 if(fp==NULL) 
 { 
 printf("打开文件失败!\n"); 
 return; 
 } 
 while(feof(fp)==0) 
 { 
 ww=fscanf(fp,"%23s%15s",temp[n].num,temp[n].name); 
 if(ww==-1) break; 
 for(j=0;j<5;j++) 
 { 
  fscanf(fp,"%d",&temp[n].grade[j]); 
  
 } 
 n++; 
 } 
 for (i=0;i<n;i++) 
 { 
 for(j=0;j<5;j++) 
 { 
  if(temp[i].grade[j]<60) 
  s[i]++; 
 } 
  
 if(s[i]>=1 && s[i]<=3) 
 { printf("\n"); 
  printf("学号%10s 姓名%10s \n",temp[i].num,temp[i].name); 
 if(temp[i].grade[0]<60) 
  printf("%10s您的高数成绩为%6d,需要补考,请于2011年2月26日上午9点在教学楼5023教室进行补考考试\n",temp[i].name,temp[i].grade[0]); 
  
 if(temp[i].grade[1]<60) 
  printf("%10s您的英语成绩为%6d,需要补考,请于2011年2月27日上午9点在教学楼5023教室进行补考考试\n",temp[i].name,temp[i].grade[1]); 
  
 if(temp[i].grade[2]<60) 
  printf("%10s您的物理成绩为%6d,需要补考,请于2011年2月28日上午9点在教学楼5023教室进行补考考试\n",temp[i].name,temp[i].grade[2]); 
  
 if(temp[i].grade[3]<60) 
  printf("%10s您的编程成绩为%6d,需要补考,请于2011年2月26日下午3点在教学楼5023教室进行补考考试\n",temp[i].name,temp[i].grade[3]); 
  
 if(temp[i].grade[4]<60) 
  printf("%10s您的马哲成绩为%6d,需要补考,请于2011年2月28日下午3点在教学楼5023教室进行补考考试\n",temp[i].name,temp[i].grade[4]); 
 } 
 } 
 for(e=0;e<n;e++) 
 { 
 if(s[e]!=0) 
 { 
  printf("\n"); 
  printf("以上学生需要补考!"); 
 } 
 else 
 { 
  printf("\n"); 
  printf("没有学生需要补考!"); 
 } 
 break; 
 } 
} 
void myselect() 
{ 
 int i=0,k=0,s[5]={0},n=0,j=0,ww; 
 struct student temp[N]={0}; 
 FILE*fp=NULL; 
 fp=fopen("d:\\yuan.dat","r"); 
 if(fp==NULL) 
 { 
 printf("打开文件失败!\n"); 
 return; 
 } 
 while(feof(fp)==0) 
 { 
 ww=fscanf(fp,"%23s%15s",temp[n].num,temp[n].name); 
  
 for(j=0;j<5;j++) 
  { 
  ww=fscanf(fp,"%d",&temp[n].grade[j]); 
  if(ww==-1) break; 
 } 
 n++; 
 } 
 for(i=0;i<n-1;i++) 
 { 
  
  for(k=0;k<5;k++) 
  { 
  if (temp[i].grade[k]<60) 
   s[i]=s[i]+1; 
  }  
  if(s[i]>3) 
  { 
  printf("\n"); 
  printf("学号%10s 姓名%10s 由于您不及格的科目为%d门(多于3门),因此退学。\n",temp[i].num,temp[i].name,s[i]); 
  if (temp[i].grade[0]<60) 
   printf("%15s您的高数成绩为%6d,为不及格。\n",temp[i].name,temp[i].grade[0]); 
   
  if (temp[i].grade[1]<60) 
   printf("%15s您的英语成绩为%6d,为不及格。\n",temp[i].name,temp[i].grade[1]); 
   
  if (temp[i].grade[2]<60) 
   printf("%15s您的物理成绩为%6d,为不及格。\n",temp[i].name,temp[i].grade[2]); 
   
  if (temp[i].grade[3]<60) 
   printf("%15s您的编程成绩为%6d,为不及格。\n",temp[i].name,temp[i].grade[3]); 
   
  if (temp[i].grade[4]<60) 
   printf("%15s您的马哲成绩为%6d,为不及格。\n",temp[i].name,temp[i].grade[4]); 
   
  } 
 } 
} 
 
void mynewcreat() 
{ 
 int i=0,k=0,s[5]={0},z[5]={0},v=0,n=0,m=0,j=0,p=0,c=0,ww; 
 struct student temp[N]={0}; 
 FILE*fp=NULL; 
 FILE*fq=NULL; 
 fp=fopen("d:\\yuan.dat","r"); 
 if(fp==NULL) 
 { 
 printf("打开文件失败!\n"); 
 return; 
 } 
 while(feof(fp)==0) 
 { 
 ww=fscanf(fp,"%23s%15s",temp[n].num,temp[n].name); 
 if(ww==-1) break; 
 for(j=0;j<5;j++) 
 { 
  fscanf(fp,"%d",&temp[n].grade[j]); 
  
 } 
 n++; 
 } 
 while(i<=n) 
 { 
  for(k=0;k<5;k++) 
  { 
  if (temp[i].grade[k]<60) 
  s[i]=s[i]+1; 
  } 
  
  for(v=0;v<5;v++) 
  { 
  if(temp[i].grade[v]==0) 
   z[i]++; 
  } 
  if(z[i]==5) 
  { 
  break; 
  } 
  if(s[i]<=3) 
  { 
  i++; 
  } 
  if(s[i]>3) 
  { 
  for(c=i;c<=n;c++) 
  { 
   temp[c]=temp[c+1]; 
  } 
  s[i]=0; 
  } 
 }  
 printf("\n"); 
 printf("删除已退学的学生后,学生名册为:"); 
 printf("\n"); 
 for(p=0;p<n-1;p++) 
 { 
  printf("\n"); 
  printf("%10s号 %10s分 ",temp[p].num,temp[p].name); 
  for(m=0;m<5;m++) 
  { 
   printf("%d ",temp[p].grade[m]); 
  } 
  printf("\n"); 
 } 
 fq=fopen("d:\\next.dat","w"); 
 if(fq==NULL) 
 { 
 printf("打开文件失败!\n"); 
 exit(0); 
 } 
 for(i=0;i<n;i++) 
 { 
 fprintf(fq,"%23s%15s",temp[i].num,temp[i].name); 
 for(j=0;j<5;j++) 
 { 
  fprintf(fq,"%2d",temp[i].grade[j]); 
 } 
 fprintf(fq,"\n"); 
 } 
fclose(fq); 
 printf("计算已完成 保存在d:\next.dat文件当中,请查验"); 
} 
main() 
{ 
 myprint1(); 
 } 

有时间整理整理学过的,温故知新。

更多学习资料请关注专题《管理系统开发》。

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

相关文章

  • 简单分析C语言中指针数组与数组指针的区别

    简单分析C语言中指针数组与数组指针的区别

    这篇文章主要介绍了C语言中指针数组与数组指针的区别,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • C++实现旋转数组的二分查找

    C++实现旋转数组的二分查找

    这篇文章主要介绍了C++实现旋转数组的二分查找方法,涉及数组的操作,有值得借鉴的技巧,需要的朋友可以参考下
    2014-09-09
  • C语言构建连连看游戏(矩阵方式)

    C语言构建连连看游戏(矩阵方式)

    这篇文章主要为大家详细介绍了C语言构建连连看游戏,采用矩阵方式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • C++面向行输入之get()与getline()实例详解

    C++面向行输入之get()与getline()实例详解

    在c++里当我们输入一个字符串时习惯用cin,但是cin只能读取一段不含空格的字符串,如果我们需要读取一段包含空格的字符串时,就需要用到getline()或get(),下面这篇文章主要给大家介绍了关于C++面向行输入之get()与getline()的相关资料,需要的朋友可以参考下
    2021-10-10
  • STl中的排序算法详细解析

    STl中的排序算法详细解析

    全排序即把所给定范围所有的元素按照大小关系顺序排列。sort采用的是成熟的"快速排序算法"(目前大部分STL版本已经不是采用简单的快速排序,而是结合内插排序算法)
    2013-09-09
  • C++实例分析讲解临时对象与右值引用的用法

    C++实例分析讲解临时对象与右值引用的用法

    对性能来说,许多的问题都需要和出现频率及本身执行一次的开销挂钩,有些问题虽然看似比较开销较大,但是很少会执行到,那也不会对程序有大的影响;同样一个很小开销的函数执行很频繁,同样会对程序的执行效率有很大影响。本章中作者主要根据临时对象来阐述这样一个观点
    2022-08-08
  • C++ 中引用与指针的区别实例详解

    C++ 中引用与指针的区别实例详解

    这篇文章主要介绍了C++ 中引用与指针的区别实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • C++ LeetCode1832题解判断句子是否为全字母句

    C++ LeetCode1832题解判断句子是否为全字母句

    这篇文章主要为大家介绍了C++ LeetCode1832题解判断句子是否为全字母句示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • C语言 数据结构中求解迷宫问题实现方法

    C语言 数据结构中求解迷宫问题实现方法

    这篇文章主要介绍了C语言 数据结构中求解迷宫问题实现方法的相关资料,需要的朋友可以参考下
    2017-03-03
  • VS2019如何创建C++项目的实现示例

    VS2019如何创建C++项目的实现示例

    这篇文章主要介绍了VS2019如何创建C++项目的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08

最新评论

?


http://www.vxiaotou.com