⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 学籍管理系统 C语言制作的
💻
字号:
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define M 50 /*全班总共学生数目*/
#define N 5 /*科目数/ 

/*结构体定义开始*/
typedef struct
 {char name[9]; /*学生姓名*/
  char no[10]; /*学生号码*/
  float score[N]; /*各科成绩*/
  float aves; /*平均成绩*/
 }MBTP;
/*结构体定义结束*/ 

/*系统菜单模块开始*/
void menu()
 {int ch;
  char menu_s[]={"        学籍管理系统 V1.0 程序设计:熊孝鹏      \n\r"
     "_____________________________________________________________\n\r"
         "                               \n\r"
  "           1.  输入学生数据            \n\r"
  "           2.  计算平均成绩            \n\r"
  "           3.  统计及格情况            \n\r"
  "           4.  排出学生名次            \n\r"
  "           5.  打印学生成绩            \n\r"
  "           6.  学生成绩存盘            \n\r"
  "           7.  读入学生成绩            \n\r"
  "           8.  退出系统              \n\r"
  "          请选择菜单号(1-8):_____"};
  clrscr();
  puts(menu_s);
 }
/*系统菜单模块结束*/ 

/*课目名调用模块开始*/
char *sj(int n)
{char *ps,t_sj[10];
 ps=t_sj;
 switch(n)
 {case 0: ps="大学英语";break;
 case 1: ps="高等数学";break;
 case 2: ps="数字电路";break;
 case 3: ps="C语言";break;
 case 4: ps="Visual Foxpro";break;
 default :ps="未知科目";
 }
 return ps;
}
/*课目名调用结束*/ 

/*输入数据开始*/
void getdata(MBTP *p,int *n)
{int i=0,j;
 char t_str[20];
 if(*n) i=*n;
 for(;i<M;i++)
 { if (i>0)
  {printf("是否还要继续增加(Y/N)?");
   if (getch()!=121) break;}
  clrscr();
  printf("学生[%d]的姓名:",i+1);
  gets(p[i].name);
  printf("%s的学号:",p[i].name);
  gets(p[i].no);
  for(j=0;j<N;j++)
   {
   printf("%s:",sj(j));
   gets(t_str);
   p[i].score[j]=atoi(t_str);
   }
  }
  *n=i;
 clrscr();
 printf("\n成绩录入完毕,按任意键返回!\n");
}
/*输入数据结束*/ 

/*求平均成绩开始*/
void averdata(MBTP *p,float *p1,int n)
{int i,j;
 float s_num;
 float t[N]={0};
 if (!n)
  printf("非法操作!没有任何数据,按任意键返回...\n");
 else
 {for(i=0;i<n;i++)
 { s_num=0.0;
  for(j=0;j<N;j++)
   {s_num+=p[i].score[j];
   t[j]+=p[i].score[j];}
  p[i].aves=s_num/N;
 }
 for(i=0;i<N;i++)
  p1[i]=t[i]/n;
 printf("执行完毕!,按任意键返回...\n");
 }
}
/*求平均成绩结束*/ 

/*统计及格情况开始*/
void statdata(MBTP *p,int n)
{int i,a=0,b=0,c=0,d=0;
 if(!n)
  printf("非法操作!没有任数据,按任意键返回...\n");
 else
 { for(i=0;i<n;i++)
  {switch((int)(p[i].aves/10))
  {case 10:
   case 9:a++;break;
   case 8:
   case 7:b++;break;
   case 6:c++;break;
   default:d++;}
  }
  printf("共有%d条学生成绩:\n优秀:%d人\n良好:%d人\n及格:%d人\n不及格:%d人\n",n,a,b,c,d);
 }
}
/*统计及格情况结束*/ 

/*排出学生名次开始*/
void posidata(MBTP *p,int n)
{int i,j,k;
 MBTP temp;
 if(!n)
  printf("非法操作!没有任何数据,按任意键返回...\n");
 else
 {for(i=0;i<n;i++)
 {k=i;
  for(j=i+1;j<n;j++)
   if(p[j].aves>p[i].aves) k=j;
  temp=p[k];p[k]=p[i];p[i]=temp;
 }
 for(i=0;i<n;i++)
 printf("%-8s %4.1f\n",p[i].name,p[i].aves);
 }
}
/*排名结束*/ 

/*打印成绩单开始*/
void prndata(MBTP *p,float *p1,int n)
{
int i;
char temp[2]={0};
if(!n)
 printf("非法操作!没有任何数据,按任意键返回...\n");
else
{
clrscr();
printf("       02计用一班学生成绩单          \n");
printf("_____________________________________________________\n");
printf("\n");
printf("姓名  学号   英语 高数 数电 C语言 数据库 平均成绩\n");
for(i=0;i<n;i++)
 printf("%-7s%-10s%-5.1f%-5.1f%-5.1f%-6.1f%-7.1f%-5.1f\n",p[i].name,p[i].no,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3],p[i].score[4],p[i].aves);
printf("_____________________________________________________\n");
 printf("平均分:%-10s%-5.1f%-5.1f%-5.1f%-6.1f%-7.1f%-5s\n",temp,p1[0],p1[1],p1[2],p1[3],p1[4],temp);
}
}
/*打印成绩单结束*/ 

/* 学生成绩存盘 */
void savedata(MBTP *p,int n)
{
 int i;
 FILE *fp;
 if (!n)
  printf("非法操作!没有任何数据,按任意键返回...\n");
 else
 {if((fp=fopen("stu.dat","w"))==NULL)
 {printf("错误!不能打开文件!\n");
  exit(0);}
 for(i=0;i<n;i++)
  fprintf(fp,"%-7s %-10s %5.1f %5.1f %5.1f %5.1f %5.1f %5.1f\n",p[i].name,p[i].no,p[i].score[0],p[i].score[1],p[i].score[2],p[i].score[3],p[i].score[4],p[i].aves);
 fclose(fp);
 printf("存盘完毕!按任意键返回...");
 }
} 

/*读入学生数据*/
void readdata(MBTP *p,int *n)
{int i=0;
 FILE *fp;
 if((fp=fopen("stu.dat","r"))==NULL)
  {printf("错误!不能打开数据文件!\n");
  exit(0);
  }
 while(!feof(fp))
 {
 fscanf(fp,"%s %s %f %f %f %f %f %f",p[i].name,p[i].no,&p[i].score[0],&p[i].score[1],&p[i].score[2],&p[i].score[3],&p[i].score[4],&p[i].aves);
 i++;
 }
 fclose(fp);
 *n=i-1;
printf("己经成功读入数据!按任意键返回!");
} 

main()
{ MBTP s_user[M]={0};
 float s_aves[N]={0};
 int ch,num=0;
  do
  { menu();
   do
   {ch=getch()-48;}
  while(!(ch>0&&ch<9)); 

   switch(ch)
   {case 1:getdata(s_user,&num);break;
   case 2:averdata(s_user,s_aves,num);break;
   case 3:statdata(s_user,num);break;
   case 4:posidata(s_user,num);break;
   case 5:prndata(s_user,s_aves,num);break;
   case 6:savedata(s_user,num);break;
   case 7:readdata(s_user,&num);break;
   case 8:exit(0);break;
   }
  }
  while(getch()!=EOF);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -