编写学生成绩管理系统(C语言)

C语言学生成绩管理系统
本文介绍了一个使用C语言编写的学生成绩管理系统,包括主函数、界面展示、管理员和学生菜单,以及初始化、添加、删除、查询、修改学生信息等功能。系统还支持成绩排序、等级划分和格式化操作。

编写学生成绩管理系统(C语言)

主函数

#include
#include
#include
void jiemian();
void menu();
void menu1();
void color();
using namespace std;
int main()
{
 clock_t start = clock();
 extern int b;
 extern int d;
 color();
 jiemian();
 if(b!=1){
  menu1();
  getchar();
 }else if(d!=2){
  menu();
  getchar();
 }
 clock_t end = (clock() - start)/CLOCKS_PER_SEC;
 cout<<"本次操作用时 "<<end<<endl;  printf("秒\n");
 return 0;
}

界面

#include
#include
#include "head.h"
int b,d;
void jiemian()
{
 int x,cnn=0,n,y,i,c;
 printf("--------------------------------\n");
 printf("|                                             |\n");
 printf("|                Windows              |\n");
 printf("|   欢迎使用学生成绩管理系统   |\n");
 printf("|                                            |\n");
 printf("|                                            |\n");
 printf("|                                            |\n");
 printf("|                                            |\n");
 printf("--------------------------------\n");
 printf("请输入你的账号:");
 scanf("%d",&x);
 printf("请输入你的密码(学生密码为账号后四位/管理员密码为后四位之前):");
 c=x/10000;
 n=x000;
 for(i=0;i<1;i++){
  scanf("%d",&y);
  if(n!=y){
   b=1;
   printf("\a");
   break;
  }else if(n==y){
   printf("登入成功\n");
   while(x!=0){
    cnn++;
    printf("%d你好!你是第%d名访问者。\n",x,cnn);
    if(x%2==0){
     printf("女士\n");
    }else{
     printf("男士\n");
    }
    x=(x/100);
    printf("信息%d班\n",x);
    printf("输入0进入下一界面。");
    scanf("%d",&x);
   }
    break;
   }
  }
 for(i=0;i<1;i++){
  if(x!=0){
  if(c!=y){
   d=2;
   printf("\a");
   printf("密码错误\n");
   break;
  }else if(c==y){
   printf("登入成功\n");
   while(x!=0){
   cnn++;
   printf("管理员你好!你是第%d名访问者。\n",cnn);
   x=(x/100);
   printf("输入0进入下一界面。");
   scanf("%d",&x);
  }
   break;
  }else{
   break;
  }
  }
 }
}

管理员菜单

#include
#include"head.h"
void menu(){
 Readfile();
 int x;
 for(;x<=10;){
  printf("-------------------------------\n");
  printf("|=============================|\n");
  printf("【    1.初始化               】\n");
  printf("【    2.添加学生信息         】\n");
  printf("【    3.删除学生信息         】\n");
  printf("【    4.按姓名查询学生信息   】\n");
  printf("【    5.按学号查询学生信息   】\n");
  printf("【    6.修改学生信息         】\n");
  printf("【    7.按总分排名           】\n");
  printf("【    8.分数等级划分         】\n");
  printf("【    9.格式化               】\n");
  printf("【    10.查看信息            】\n");
  printf("【    0.结束                 】\n");
  printf("|=============================|\n");
  printf("-------------------------------\n");
  printf("请输入您的选择(1,2,3,4,5,6,7,8,9,10,0)?\n");
  scanf("%d",&x);
  switch(x){
   case 1:
    printf("您的选择是初始化\n");
    init();
    print();
    break;
   case 2:
    printf("您的选择是添加学生信息\n");
    addstudent();
    print();
    break;
   case 3:
    printf("您的选择是删除学生信息\n");
    modifystu();
    print();
    break;
   case 4:
    printf("您的选择是按姓名查询学生信息\n");
    namecx();
    break;
   case 5:
    printf("您的选择是按学号查询学生信息\n");
    idcx();
    break;
   case 6:
    printf("您的选择是修改学生信息\n");
    xiugai();
    print();
    break;
   case 7:
    printf("您的选择是按总分排名\n");
    sortstu();
    print();
    break;
   case 8:
    printf("你选择的是分数等级划分\n");
    fsdjhf();
    break;
   case 9:
    printf("您选择的是格式化\n");
    format();
    break;
   case 10:
    printf("您选择的是查看信息\n");
    print();
    break;
   case 0:
    break;
  }
  Writerfile();
  if(x==0){
   break;
  }
 }
}

学生菜单

#include
#include
#include"head.h"
void menu1(){
 Readfile();
 int x;
 for(;x<=5;){
  printf("-------------------------------\n");
  printf("|=============================|\n");
  printf("【    1.初始化               】\n");
  printf("【    2.添加学生信息         】\n");
  printf("【    3.按姓名查询学生信息   】\n");
  printf("【    4.按学号查询学生信息   】\n");
  printf("【    5.查看信息             】\n");
  printf("【    0.结束                 】\n");
  printf("|=============================|\n");
  printf("-------------------------------\n");
  printf("请输入您的选择(1,2,3,4,5,0)?\n");
  scanf("%d",&x);
  switch(x){
   case 1:
    printf("您的选择是初始化\n");
    init();
    print();
    break;
   case 2:
    printf("您的选择是添加学生信息\n");
    addstudent();
    print();
    break;
   case 3:
    printf("您的选择是按姓名查询学生信息\n");
    namecx();
    break;
   case 4:
    printf("您的选择是按学号查询学生信息\n");
    idcx();
    break;
   case 5:
    printf("您选择的是查看信息\n");
    print();
    break;
   case 0:
    break;
  }
  Writerfile();
  if(x==0){
   break;
  }
 }
}

初始化

#include
#include
#include "head.h"
#include
int size;
struct student stu[100];
void init(){
 int i;
 float p;
 printf("请输入班级人数:");
 scanf("%d",&size);
 for(i=0;i
  printf("请输入第%d个人的信息。\n",i+1);
  printf("学号:");
  scanf("%d",&stu[i].id);
  printf("姓名:");
  scanf("%s",&stu[i].name);
  printf("语文:");
  scanf("%f",&stu[i].china);
  printf("数学:");
  scanf("%f",&stu[i].math);
  printf("英语:");
  scanf("%f",&stu[i].english);
  stu[i].sum=stu[i].china+stu[i].english+stu[i].math;
  printf("总成绩为:%.2f\n",stu[i].sum);
  p=stu[i].sum/3;
  printf("平均成绩:%.2f\n",p);
  printf("***************over***********\n");
 }
}

添加学生信息

#include
#include
#include "head.h"
#include
void addstudent(){
 while(1){
  extern int size;
  extern struct student stu[100];
  float p;
  printf("请输入信息\n");
  printf("学号:");
  scanf("%d",&stu[size].id);
  printf("姓名:");
  scanf("%s",&stu[size].name);
  getchar();
  printf("数学:");
  scanf("%f",&stu[size].math);
  getchar();
  printf("语文:");
  scanf("%f",&stu[size].china);
  getchar();
  printf("英语:");
  scanf("%f",&stu[size].english);
  getchar();
  stu[size].sum=stu[size].china+stu[size].english+stu[size].math;
  printf("总成绩为:%.2f\n",stu[size].sum);
  p=(stu[size].china+stu[size].english+stu[size].math)/3;
  printf("平均成绩:%.2f\n",p);
  printf("***********over*************\n");
  printf("****************以下为添加学生信息**************\n");
  printf("学号\t姓名\t数学\t语文\t英语\t总分\n");
  printf("%-d\t%-s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\n",stu[size].id,stu[size].name,stu[size].math,stu[size].china,stu[size].english,stu[size].sum);
  printf("**********************查询完毕******************\n");
  printf("查看信息输入是否有误(y/n)?\n");
  size++;
  if(getchar()=='y'){
  int people,i;
  printf("输入信息有误的学号:\n");
  scanf("%d",&people);
  for(i=0;i
   if(people==stu[i].id){
    printf("****************以下为修改的学生信息**************\n");
    printf("学号\t姓名\t数学\t语文\t英语\t总分\n");
    printf("%-d\t%-s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\n",stu[i].id,stu[i].name,stu[i].math,stu[i].china,stu[i].english,stu[i].sum);
    printf("**********************查询完毕********************\n");
    for(;i
     stu[i]=stu[i+1];
    }
    size--;
    printf("请从新输入信息:\n");
    printf("学号:");
    scanf("%d",&stu[size].id);
    printf("姓名:");
    scanf("%s",&stu[size].name);
    printf("数学:");
    scanf("%f",&stu[size].math);
    printf("语文:");
    scanf("%f",&stu[size].china);
    printf("英语:");
    scanf("%f",&stu[size].english);
    stu[size].sum=stu[size].china+stu[size].english+stu[size].math;
    printf("总成绩为:%.2f\n",stu[size].sum);
    p=(stu[size].china+stu[size].english+stu[size].math)/3;
    printf("平均成绩:%.2f\n",p);
    printf("***********over************\n");
    size++;
   }
   }
  }
  if(getchar()=='n'){
   break;
  }
  printf("成功!\n");
  printf("是否继续?(y/n)");
  if(getchar()=='n'){
   break;
  }
 }
}

按学号查询信息

#include
#include
#include "head.h"
#include
void idcx(){
 while(1){
  extern int size;
  extern struct student stu[100];
  int i;
  int x;
  printf("输入查询的学号:");
  scanf("%d",&x);
  for(i=0;i
   if(stu[i].id==x){
    printf("****************以下为学生信息**************\n");
    printf("学号\t姓名\t数学\t语文\t英语\t总分\n");
    printf("%-d\t%-s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\n",stu[i].id,stu[i].name,stu[i].math,stu[i].china,stu[i].english,stu[i].sum);
    printf("*******************查询完毕*****************\n");
    break;
   }
  }
  if(stu[i].id!=x){
   printf("查无此人\n");
  }
  getchar();
  printf("是否继续(y/n)?");
  if(getchar()=='n'){
   break;
  }
 }
}

按姓名查询信息

#include
#include
#include "head.h"
#include
void namecx(){
 while(1){
  extern int size;
  extern struct student stu[100];
  int i;
  char na[10];
  printf("输入查询的姓名:");
  scanf("%s",&na);
  for(i=0;i
   if(strcmp(stu[i].name,na)==0){
    printf("****************以下为学生信息**************\n");
    printf("学号\t姓名\t数学\t语文\t英语\t总分\n");
    printf("%-d\t%-s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\n",stu[i].id,stu[i].name,stu[i].math,stu[i].china,stu[i].english,stu[i].sum);
    printf("*******************查询完毕*****************\n");
    break;
   }
  }
  if(strcmp(stu[i].name,na)!=0){
    printf("查无此人\n");
   }
  getchar();
  printf("是否继续(y/n)?");
  if(getchar()=='n'){
   break;
  }
 }
}

按总成绩排序

#include
#include
#include "head.h"
#include
void sortstu(){
 extern int size;
 extern struct student stu[100];
 int i,j;
    struct student tmp;
    for(i=0;i
        for(j=1;j
            if(stu[j-1].sum
               tmp=stu[j-1];
               stu[j-1]=stu[j];
               stu[j]=tmp;
            }
        }
    }
}

删除学生信息

#include
#include
#include "head.h"
#include
void modifystu(){
 extern int size;
 extern struct student stu[27];
 while(1){
  int delid,i;
  printf("请输入要删除学生的学号:");
  scanf("%d",&delid);
  for(i=0;i
   {
   if(delid==stu[i].id){
    for(;i
     stu[i]=stu[i+1];
     }
   size--;
   printf("《成功!》\n");
   }
  }
  printf("是否继续进行删除操作?[y/n]:");
  char x[3];
  scanf("%s",x);
  if(strcmp(x,"n")==0){
    break;
  }
 }
}

修改学生信息

#include
#include
#include "head.h"
#include
void xiugai(){
 while(1){
  extern int size;
  extern struct student stu[100];
  int people,i;
  float p;
  printf("输入修改的人的学号:");
  scanf("%d",&people);
  for(i=0;i
   if(people==stu[i].id){
    printf("****************以下为修改的学生信息**************\n");
    printf("学号\t姓名\t数学\t语文\t英语\t总分\n");
    printf("%-d\t%-s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\n",stu[i].id,stu[i].name,stu[i].math,stu[i].china,stu[i].english,stu[i].sum);
    printf("**********************查询完毕********************\n");
    for(;i
     stu[i]=stu[i+1];
    }
    size--;
    printf("输入修改后的信息:\n");
    printf("学号:");
    scanf("%d",&stu[size].id);
    printf("姓名:");
    scanf("%s",&stu[size].name);
    printf("数学:");
    scanf("%f",&stu[size].math);
    printf("语文:");
    scanf("%f",&stu[size].china);
    printf("英语:");
    scanf("%f",&stu[size].english);
    stu[size].sum=stu[size].china+stu[size].english+stu[size].math;
    printf("总成绩为:%.2f\n",stu[size].sum);
    p=(stu[size].china+stu[size].english+stu[size].math)/3;
    printf("平均成绩:%.2f\n",p);
    printf("***********over************\n");
    size++;
   }else if(people!=stu[i].id){
    printf("查无此人\n");
   }
  }
  getchar();
  printf("是否继续(y/n)?");
  if(getchar()=='n'){
   break;
  }
 }
}

按等级划分

#include
#include
#include "head.h"
#include
void fsdjhf(){
 extern int size;
 extern struct student stu[100];
 int a=0,s=0,d=0,l=0;
 int z=0,x=0,c=0,h=0,i;
 int q=0,w=0,e=0,k=0;
 for(i=0;i
  if(stu[i].china<=100&&stu[i].china>=80){
   a++;
  }
  if(stu[i].china<80&&stu[i].china>=70){
   s++;
  }
  if(stu[i].china<70&&stu[i].china>=60){
   d++;
  }
  if(stu[i].china<60){
   l++;
  }
 }
 for(i=0;i
  if(stu[i].math<=100&&stu[i].math>=80){
   z++;
  }
  if(stu[i].math<80&&stu[i].math>=70){
   x++;
  }
  if(stu[i].math<70&&stu[i].math>=60){
   c++;
  }
  if(stu[i].math<60){
   h++;
  }
 }
 for(i=0;i
  if(stu[i].english<=100&&stu[i].english>=80){
   q++;
  }
  if(stu[i].english<80&&stu[i].english>=70){
   w++;
  }
  if(stu[i].english<70&&stu[i].english>=60){
   e++;
  }
  if(stu[i].english<60){
   k++;
  }
 }
 printf("******************分数划分*******************\n");
 printf("语文:优秀\t良好\t及格\t不及格\n");
 printf("\t%-d\t%-d\t%-d\t%-d\n",a,s,d,l);
 printf("********************over*********************\n");
 printf("******************分数划分*******************\n");
 printf("数学:优秀\t良好\t及格\t不及格\n");
 printf("\t%-d\t%-d\t%-d\t%-d\n",z,x,c,h);
 printf("********************over*********************\n");
 printf("******************分数划分*******************\n");
 printf("英语:优秀\t良好\t及格\t不及格\n");
 printf("\t%-d\t%-d\t%-d\t%-d\n",q,w,e,k);
 printf("********************over*********************\n");
}

输出函数

#include
#include
#include
#include "head.h"
void print(){
 extern int size;
 extern struct student stu[100];
 printf("******************以下为学生信息****************\n");
 printf("学号\t姓名\t数学\t语文\t英语\t总分\n");
 for(int i=0;i
  printf("%-d\t%-s\t%-.2f\t%-.2f\t%-.2f\t%-.2f\n",stu[i].id,stu[i].name,stu[i].math,stu[i].china,stu[i].english,stu[i].sum);
 }
 printf("*******************显示结束*********************\n");
}

格式化

#include
#include
#include "head.h"
#include
void format(){
 extern int size;
 extern struct student stu[100];
 int i,s;
 s=size;
 for(i=0;i<=s;i++){
  size--;
 }
 printf("****************以下为学生信息****************\n");
 printf("学号\t姓名\t数学\t语文\t英语\t总分\n");
 printf("\t\t已被格式化\n");
 printf("******************显示结束********************\n");
}

读入文件

#include
#include
#include
#include "head.h"
void Readfile(){
 extern int size;
 extern struct student stu[100];
 FILE *fp; 
 int i; 
 if ((fp=fopen("Database.txt","rb"))==NULL){ 
  printf("不能打开文件!\n"); 
  return; 
 } 
 if (fread(&size,sizeof(int),1,fp)!=1){ 
  size=-1; 
 }else{ 
  for(i=0;i
   fread(&stu[i],sizeof(struct student),1,fp); 
  } 
 } 
 fclose(fp); 
}

写入文件

#include
#include
#include
#include "head.h"
void Writerfile(){
 extern int size;
 extern struct student stu[100];
 FILE *fp; 
    int i; 
    if((fp=fopen("Database.txt","wb"))==NULL){
  printf("不能打开文件!\n"); 
  return; 
    } 
    if(fwrite(&size,sizeof(int),1,fp)!=1){ 
  printf("写入文件错误!\n");
    } 
    for (i=0;i
  if (fwrite(&stu[i],sizeof(struct student),1,fp)!=1){ 
   printf("写入文件错误!\n"); 
  } 
    }     
 fclose(fp);
}

头文件

#ifndef _HEAD_H_
void menu1();
void dengru();
void init();
void print();
void addstudent();
void modifystu();
void sortstu();
void idcx();
void namecx();
void xiugai();
void fsdjhf();
void format();
void Writerfile();
void Readfile();
struct student{
 int id;
 char name[10];
 float math;
 float china;
 float english;
 float sum;
};
#endif

颜色函数

#include
#include
#include
#include
void color(){
 char con[5]; 
 char color[20]="color "; 
 printf("            |*选着系统的颜色*|\n");
 printf("\n");
printf("***************控制台颜色和图形颜色*****************\n"); 
printf("0 = 黑色          8 = 灰色\n"); 
printf("1 = 蓝色          9 = 浅蓝色\n"); 
printf("2 = 绿色          A = 淡绿色\n"); 
printf("3 = 浅绿色        B = 淡浅绿色\n"); 
printf("4 = 红色          C = 淡红色\n"); 
printf("5 = 紫色          D = 淡紫色\n"); 
printf("6 = 黄色          E = 淡黄色\n"); 
printf("7 = 白色          F = 亮白色\n"); 
printf("请输入两位数,第一位为控制台颜色,第二位为图形颜色\n");
 gets(con);//获取控制台和文字颜色显示选项 
 strcat(color,con);//合并color和选项
 system(color);//调用system()函数实现显示颜色变化   
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值