作业三 学生成绩管理系统

作业三 学生成绩管理系统,第1张

作业三 学生成绩管理系统
#include
#include
#include
#include
#define LEN sizeof(struct Chain)
struct Chain
{
	int num;
	char name[8];
	float course1;
	float course2;
	float course3; 
	struct Chain *next;
};
int n;

struct Chain *insert(struct Chain *head)
{
	struct Chain *p1,*p2,*pt;
	n=0;
	if(head==NULL)
	{
		p1=p2=(struct Chain *)malloc(LEN);
		printf("输入学号 姓名 课程1 课程2 课程3 (输入0 0 0 0 0结束):n");
		scanf("%d %s %f %f %f",&p1->num,&p1->name ,&p1->course1  ,&p1->course2 ,&p1->course3  );
		while(p1->course1 !=0 )
		{
			n=n+1;
			if(n==1) head=p1;
			else p2->next =p1;
			p2=p1;
			p1=(struct Chain *)malloc(LEN);
			printf("输入学号 姓名 课程1 课程2 课程3 (输入0 0 0 0 0结束):n");
			scanf("%d %s %f %f %f",&p1->num,&p1->name ,&p1->course1  ,&p1->course2 ,&p1->course3  );
		}
		p2->next =NULL;
	}
	else
	{
		pt=head;
		printf("插入一个数据n");
		p1=(struct Chain *)malloc(LEN);
		printf("输入学号 姓名 课程1 课程2 课程3 (输入0 0 0 0 0结束):n");
		scanf("%d %s %f %f %f",&p1->num,&p1->name ,&p1->course1  ,&p1->course2 ,&p1->course3  );
		while(pt!=NULL)
		{
			if(strcmp(pt->name ,p1->name)==0)
			{
				printf("重名!!!!!!!!n");
				return(head);
			}
			pt=pt->next ;
		}
		pt=p2=head;
		if(p1->num  !=0)
		{ 
			do
			{
			
				p2=p2->next ;
				if(p1->num < head->num)
				{
					p1->next =pt;
					head=p1;
					break;
				}
				else if(p2!=NULL&&p1->num num )
				{
					pt->next =p1;
					break;
				}
				else if(pt->next ==NULL)
				{
					printf("%dn",pt->num );
					pt->next =p1;
					p1->next =NULL;
					break;
				}
				pt=pt->next ;
			}while(pt!=NULL);
			printf("插入完成n");
		}
		else free(p1);
	}
		return(head);
}

struct Chain *cancel(struct Chain *head)
{
	struct Chain *p1,*p2;
	char name2[8];
	p1=p2=head;
	n=0;
	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(struct Chain *head)
{
	struct Chain *pt;
	char name1[8];
	pt=head;
	n=0;
	if(pt==NULL) printf("n链表为空!!!!!!!!nn");
	else
	{
		printf("输入要查询的名字n");
		scanf("%s",&name1);
		while(1)
		{
			if(strcmp(pt->name ,name1)==0)
			{
				printf("编号	姓名	   课程1    课程2	课程3n");
				printf("%d%10s%11.2f%11.2f%11.2fnn",pt->num ,pt->name ,pt->course1 ,pt->course2 ,pt->course3 );
				break;
			}
			else if(pt->next ==NULL)
			{
				printf("n无该数据!!!!!!!!nn");
				break;
			}
			pt=pt->next;
		}
	}	
}

void print(struct Chain *head)
{
	struct Chain *pt;
	system("CLS");
	if(head==NULL) printf("n无数据nn");
	else
	{
		pt=head;
		printf("   编号    姓名     课程1      课程2      课程3n");
		do
		{
			printf("%5d%10s%11.2f%11.2f%11.2fn",pt->num ,pt->name ,pt->course1 ,pt->course2 ,pt->course3 );
			pt=pt->next ;
		}while(pt!=NULL);
	}
	printf("n");
}

int main()
{
	struct Chain *head;
	int i;
	head=NULL;
	system("color F0");
	while(1)
	{
		printf("***学生成绩管理系统***n"
				    "1-----输入n"
				    "2-----删除n"
			        "3-----查询n"
			        "4-----显示n"
					"5-----退出n"          );
		printf("输入选项:");
		scanf("%d",&i);
		getchar();
		switch(i)
		{
			case 1:head=insert(head);break;
			case 2:head=cancel(head);break;
			case 3:search(head);break;
			case 4:print(head);break;
			case 5:return 0;
			default:printf("错误nn");
		}
	}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5659154.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存