//由于一下有一部分为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
简单的学生成绩管理C程序
最新推荐文章于 2024-09-28 15:38:29 发布
本文介绍了一个使用C语言编写的简单学生成绩管理程序。通过该程序,可以进行成绩录入、查询、修改和删除等操作,适用于基础C语言学习者实践。
摘要由CSDN通过智能技术生成