栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

练习10 学生成绩管理与统计

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

练习10 学生成绩管理与统计

#include 
#include
#include
#define LEN sizeof(struct Student)
typedef struct Student
{
	int num;
	char name[10];
	float math;
	float en;
	float c;
	float sum;
	float aver;
	struct Student *next;
}STU;
 
STU *input(STU* head)
{
	int n=0; 
	STU *p1,*p2,*pt;
	if(head==NULL)
	{	
		p1=p2=(STU*)malloc(LEN);
		printf("第1个同学n");
		printf("输入学号:");
		scanf("%d",&p1->num );
		printf("输入姓名:");
		scanf("%s",&p1->name );
		printf("输入数学成绩:");
		scanf("%f",&p1->math  );
	    printf("输入英语成绩:");
	    scanf("%f",&p1->en );
		printf("输入C语言成绩:");
		scanf("%f",&p1->c  );
		p1->sum =p1->math +p1->en +p1->c ;
		p1->aver =p1->sum /3;
		printf("*************************n");
		while(1)
		{
			n++;
			if(n==1) head=p1;
			else p2->next =p1;
			p2=p1;
			p1=(STU*)malloc(LEN);
			printf("第%d个同学n",n+1); 
			printf("输入学号:");
			scanf("%d",&p1->num );
			if(p1->num ==0) break;
			printf("输入姓名:");
			scanf("%s",&p1->name );
			printf("输入数学成绩:");
			scanf("%f",&p1->math  );
		    printf("输入英语成绩:");
		    scanf("%f",&p1->en );
			printf("输入C语言成绩:");
			scanf("%f",&p1->c  );
			p1->sum =p1->math +p1->en +p1->c ;
			p1->aver =p1->sum /3;
			printf("*************************n");
		}
		p2->next =NULL;
	}
	else
	{
		pt=head;
		p1=(STU*)malloc(LEN);
		printf("插入一个学生的成绩n");
		printf("输入学号:");
		scanf("%d",&p1->num );
		if(p1->num ==0) 
		{
			free(p1);
			return(head);
		}
		printf("输入姓名:");
		scanf("%s",&p1->name );
		printf("输入数学成绩:");
		scanf("%f",&p1->math  );
	    printf("输入英语成绩:");
	    scanf("%f",&p1->en );
		printf("输入C语言成绩:");
		scanf("%f",&p1->c  );
		p1->sum =p1->math +p1->en +p1->c ;
		p1->aver =p1->sum /3;
		printf("*************************n");
		do
		{
			if(p1->num num )
			{
				p1->next =pt;
				head=p1;
				break;
			}
			else if(pt->next ==NULL)
			{
				pt->next =p1;
				p1->next =NULL;
				break;
			}
			else if(p1->num >pt->num &&p1->num next->num  )
			{
				p1->next =pt->next ;
				pt->next =p1;
				break;
			}
			pt=pt->next ; 
		}while (pt!=NULL);
		printf("输入完成n");
	}
	return(head);
}
 
void output(STU *pt)
{
	while(pt!=NULL)
	{
		printf("学号: ");
		printf("     %dn",pt->num );
		printf("姓名: ");
		printf("     %sn",pt->name );
		printf("数学成绩: ");
		printf(" %4.2fn",pt->math );
		printf("英语成绩: ");
		printf(" %4.2fn",pt->en );
		printf("C语言成绩: ");
		printf("%4.2fn",pt->c );
		printf("总分: ");
		printf("     %4.2fn",pt->sum );
		printf("平均分: ");
		printf("   %4.2fn",pt->aver );
		printf("*************************n");
		pt=pt->next ;
	}
}
 
STU *cancel(STU *head)
{
	STU *p1,*p2;
	char name2[8];
	p1=p2=head;
	if(p1==NULL) printf("n链表为空!!!!!!!!nn");
	else
	{
		printf("输入要删除的名字n");
		scanf("%s",&name2);
		while(1)
		{
			if(strcmp(p1->name ,name2)==0)
			{
				if(p2==head)
				{
					head=head->next ;
					free(p1);
					p1=p2=NULL; 
					printf("删除成功nn");
				}
				else
				{
					p2->next =p1->next  ;
					free(p1);
					p1=p2=NULL;
				}
				break;
			}
			else if(p1->next ==NULL)
			{
				printf("n无该数据!!!!!!!!nn");
				break;
			}
			p2=p1;
			p1=p1->next;
		}
		return(head);
	}	
}
 
void search(STU *head)
{
	STU *pt;
	int num1;
	char name1[8];
	pt=head;
	if(pt==NULL) printf("n链表为空!!!!!!!!nn");
	else
	{
		printf("输入要查询的学号或姓名n");
		if(!scanf("%d",&num1))
		{
			scanf("%s",&name1);
		}
		while(1)
		{
			if(strcmp(pt->name ,name1)==0)
			{
				printf("学号: ");
				printf("     %dn",pt->num );
				printf("姓名: ");
				printf("     %sn",pt->name );
				printf("数学成绩: ");
				printf(" %4.2fn",pt->math );
				printf("英语成绩: ");
				printf(" %4.2fn",pt->en );
				printf("C语言成绩: ");
				printf("%4.2fn",pt->c );
				printf("总分: ");
				printf("     %4.2fn",pt->sum );
				printf("平均分: ");
				printf("   %4.2fn",pt->aver );
				printf("*************************n");
				break;
			}
			else if(pt->num ==num1)
			{
				printf("学号: ");
				printf("     %dn",pt->num );
				printf("姓名: ");
				printf("     %sn",pt->name );
				printf("数学成绩: ");
				printf(" %4.2fn",pt->math );
				printf("英语成绩: ");
				printf(" %4.2fn",pt->en );
				printf("C语言成绩: ");
				printf("%4.2fn",pt->c );
				printf("总分: ");
				printf("     %4.2fn",pt->sum );
				printf("平均分: ");
				printf("   %4.2fn",pt->aver );
				printf("*************************n");
				break;
			}
			else if(pt->next ==NULL)
			{
				printf("n无该数据!!!!!!!!nn");
				break;
			}
			pt=pt->next;
		}
	}	
}
 
void sta(STU *pt)
{
	int number;
	float cout=0,sums=0;
	while(pt!=NULL)
	{
		if(pt->aver >=60)
		{
			
			number++;
		}
		sums=pt->aver +sums;
		cout++;
		pt=pt->next ;
	}
	printf("n及格人数为:%dn班级平均分为:%4.2fn",number,sums/cout);
}
 
int main()
{
	STU *head;
	head=NULL;
	int i=0;
	while(1)
	{
		printf("***学生成绩管理系统***n"
				    "1-----输入n"
				    "2-----显示n"
			        "3-----删除n"
			        "4-----查询n"
					"5-----统计n"    
					"6-----退出n"      );
		printf("输入选项:");
		scanf("%d",&i);
		getchar();
		switch(i)
		{
			case 1:head=input(head);break;
			case 2:output(head);break;
			case 3:cancel(head);break;
			case 4:search(head);break;
			case 5:sta(head);break;
			case 6:return 0; 
			default:printf("错误nn");
		}
	}
}
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/665375.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号