简单的学生成绩管理C程序

本文介绍了一个使用C语言编写的简单学生成绩管理程序。通过该程序,可以进行成绩录入、查询、修改和删除等操作,适用于基础C语言学习者实践。
摘要由CSDN通过智能技术生成
//由于一下有一部分为C++语法,所以建议测试时,将文件重命名.cpp结尾的文件,不要以.c结尾
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
#include<string.h>
int chinese_max      ;      //语文最高分
float chinese_average  ;      //语文平均分
int chinese_min      ;      //语文最低分
int math_max         ;      //数学最高分
float math_average     ;      //数学平均分
int math_min         ;      //数学最低分
int english_max      ;      //英语最高分
float english_average  ;      //英语平均分
int english_min      ;      //英语最低分
int total_max        ;      //总分最高分
float total_average    ;      //总分平均分
int total_min        ;      //总分最低分
int num_peo=0        ;      //总人数



#define maxsize 5
typedef struct S
{
   
      char name[8];        //姓名
      int id;              //学号
      int length;          //只有最后一个节点有用,其他节点不用,用来统计每次插入或者删除之后的总人数
      int chinese;         //语文成绩
      int math;            //数学成绩
      int english;         //英语成绩
      float total;           //总分
      int average;         //
      struct S  *next;     //
}L,*node;
void creatlist1(node *head)                   //头插法
{
   
      node p;
      int i,num=maxsize;
      system("cls");
      
      printf("请输入姓名,按enter键继续:\n");
      
      
      *head=(node)malloc(sizeof(L));
      (*head)->next =NULL;
      (*head)->length=maxsize ;
      
      for(i=0;i<maxsize;i++)
      {
   
            p=(node)malloc(sizeof(L));
            scanf("%s",&p->name );
            p->id =num;
            num--;
            p->next=(*head);
            (*head)=p ;   
      }
      
      fflush(stdin);                            //清空键盘缓冲区多余输入的数值(windows),setbuf(stdin,NULL)(Linux);
      printf("\n创建完成,按任意键结束\n\n");
      system("pause");
      system("cls");
      
}

void creatlist2(node *head)                      //尾插法
{
   
      node p,r;
      int i,num=1;
      
      printf("请输入姓名,按enter键继续:\n");
      *head=(node)malloc(sizeof(L));          
      r=*head;
      for(i=0;i<maxsize;i++)
      {
   
            p=(node)malloc(sizeof(L));
            
            r->length =i+1;
            scanf("%s",&r->name); 
            r->chinese=0;
            r->math=0;
            r->english=0;
            r->total=0;
            r->id =num;
            num++;
            
            r->next =p;                         //( head  p  p  p  p )
            r=p;                                // (   1  4  3  2    )
      }
      r->next =NULL;
      r->length =maxsize;
      r->average =0;
      r->chinese =0;
      r->english =0;
      r->id =maxsize;
      r->math =0;
      num_peo=maxsize;
      
      
      strcpy(r->name ,"end");
      
      r->total =0;
      
      fflush(stdin);
      printf("\n创建完成,按任意键结束\n\n");
      system("pause");
      system("cls");
      
}
void input_data(node *head)
{
   
      node p;
      int choose;
a:    p=*head;
      printf("\n请选择要录入的成绩\n\n\n\n按1    ->输入语文成绩\n\n");
      printf("按2    ->输入数学成绩\n\n按3    ->输入英语成绩\n\n按0    ->返回上一级\n\n");
      scanf("%d",&choose);
      if(choose>3||choose<0)
      {
   
            printf("没有这个选项,请重新选择\n");
            goto a;
      }
      if(choose==1)
      {
   
            printf("请输入语文成绩:");
            while(p->next!=NULL)
            {
   
                  
                  scanf("%d",&p->chinese );
                  p=p->next ;
            }
            p=*head;
            system("cls");
            printf("\n学号  姓名    语文成绩\n");
            while(p->next!=NULL)
            {
   
                  
                  printf("%-6d%      -7s%        -2d\n",p->id ,p->name ,p->chinese );
                  p=p->next ;
            }
            printf("\n语文成绩录入完成\n\n按任意键继续");
            system("pause");
            goto a;
            
      }
      if(choose==2)
      {
   
            printf("请输入数学成绩:");
            while(p->next!=NULL)
            {
   
                  
                  scanf("%d",&p->math );
                  p=p->next ;
            }
            p=*head;
            system("cls");
            printf("\n学号  姓名    数学成绩\n");
            while(p->next!=NULL)
            {
   
                  
                  printf("%-6d%      -7s%        -2d\n",p->id ,p->name ,p->chinese );
                  p=p->next ;
            }
            printf("\n数学成绩录入完成\n\n按任意键继续");
            system("pause");
            goto a;
            
      }
      if(choose==3)
      {
   
            printf("请输入英语成绩:");
            while(p->next!=NULL)
            {
   
                  
                  scanf("%d",&p->english );
                  p=p->next ;
            }
            p=*head;
            system("cls");
            printf("\n学号  姓名    英语成绩\n");
            while(p->next!=NULL)
            {
   
                  
                  printf("%-6d%      -7s%        -2d\n",p->id ,p->name ,p->chinese );
                  p=p->next ;
            }
            printf("\n英语成绩录入完成\n\n按任意键继续");
            system("pause");
            goto a;
            
      }
      
      if(choose==0)
      {
   
            
      }
      system("cls");
      
}


void revisedata (node *hea
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

接着奏乐吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值