⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 link.cpp

📁 1设计题目及要求 一、程序设计题目:学生成绩管理程序设计 二、 程序设计功能及要求: 1.显示学生各门成绩,总分,和平均分. 2.按总分由高到的进行排列. 3.要求输入一个学号.要求能找出一
💻 CPP
字号:
#include "stdafx.h"
#include "manager.h"
#include <stdlib.h>
#include <string.h>

int k;//用来标记有多少个链表在添加链表排序中有用。
char str[]=" sum  average  ID  name ";
//显示学生的链表 
//参数:头指针,科目数目,科目内容。
void DispStudent(stu *head,int coursenumber,char subject[][15])
{
	stu *p;
	int i=0;
	if(head==NULL)
	{
		printf("Wrong! you need to add at least one student!Empty!\n");
	}
	else
	{
		p=head;
		for(i=0;i<coursenumber;i++)
		{
			printf(" %s ",subject[i]);
		}
		printf("%s",str);
		printf("\n");
		do{
			for(i=0;i<coursenumber;i++)
			printf("%6d",p->score[i]);
			printf("%6d%8.2f%15d%20s",p->sum,p->average,p->num,p->name);
			printf("\n");
			p=p->next;
		}while(p!=NULL);
	}
}

//建立第一个链表。即:建立第一个同学的信息。
//参数:学生ID,姓名,分数,总和,科目的分数;
stu *CreateStudent(int num,char name[],int score[],int sum,int coursenumber)
{
	int i;
	stu *p;
	p=(stu *)malloc(sizeof(stu));
	if(p==NULL)
	{
		printf("Wrong!No enough memory!");
		exit(0);
	}
	p->next=NULL;
	p->num=num;
	for(i=0;i<coursenumber;i++)
	p->score[i]=score[i];
	strcpy(p->name,name);
	p->sum=sum;
	p->average=(float)sum/coursenumber;
	printf("The Studnet have been create!\n");
	printf("\n");
	k=1;
	return p;
}
//添加一个学生信息,然后排好顺序,返回头指针。
//参数:头指针,学生的姓名,ID,总分,科目的数目.
stu *AddStudent(stu *head,int num,char name[],int score[],int sum,int coursenumber)
{
	int i;
	stu *pr,*p,*pr2;
	p=(stu *)malloc(sizeof(stu));
	if(p==NULL)
	{
		printf("Have no enough memory!");
		exit(0);
	}
	p->next=NULL;
	p->num=num;
	for(i=0;i<coursenumber;i++)
		p->score[i]=score[i];
	strcpy(p->name,name);
	p->sum=sum;
	p->average=(float)sum/coursenumber;
	pr=head;
	if(k==1)//判断是不是只存在一个同学k=1时说明只有一个同学
	{
		if(pr->sum<sum)
		{
			p->next=head;
			head=p;
			return head;
		}
		if(pr->sum>=sum)
			pr->next=p;
	}
	else//下面的是不是一个学生的时候
	{
		while(pr->sum>sum && pr->next!=NULL)
		{
			pr2=pr;
			pr=pr->next;
		}
		if(pr==head)
		{
			p->next=head;
			head=p;
			return head;
		}
		if(pr->next==NULL)
		{
			if(pr->sum>sum)
				pr->next=p;
			else
			{
				p->next=pr2->next;
				pr2->next=p;
			}
		}
		else
		{
			p->next=pr2->next;
			pr2->next=p;
		}
		
	}
	k++;
	return head;
}
//删除学生
//参数是学生的学号.返回头指针
stu *DelStudent(stu *head,int num)
{
	stu *p,*pr;
	if(head==NULL)
	{
		printf("No Link exist");
		return head;
	}
	p=head;
	while(p->num!=num && p->next!=NULL)
	{
		pr=p;
		p=p->next;
	}
	if(p->num==num)
	{
		if(p==head)
		{
			head=p->next;
		}
		else
		{
			pr->next=p->next;
			free(p);
			printf("Delete the Student\n");
		}
	}
	else
		printf("Can't not find it ,it is not exist!\n");
	return head;
}
//查找一个学生的信息。
//返回查找到了的指针
stu *SearchStudent(stu *head,int num)
{
	stu *pr;
	pr=head;
	while(pr->num!=num)
	{
		pr=pr->next;
		if(pr==NULL)
		{
			printf("Wrong!The students is not exist\n");
			return NULL;
			break;
		}
	}
	return pr;
}
//删除所有人的信息
stu *DelAllStudent(stu *head)
{
	stu *pr,*pr2;
	pr=head;
	do
	{
		pr2=pr;
		pr=pr->next;
		free(pr2);
	}while(pr!=NULL);
	return NULL;
}
//修改一个学生的信息。
void ChangeStudent(stu *head,int num,char subject[][15],int coursenumber)
{
	int i;
	stu *pr;
	pr=SearchStudent(head,num);
	printf("Please enter the new information:\n");
	printf("Please enter the ID and name\n");
	scanf("%d%s",&pr->num,pr->name);
	printf("Please input the score!\n");
	for(i=0;i<coursenumber;i++)
	{
		printf(" %s ",subject[i]);
	}
	printf("\n");
	for(i=0;i<coursenumber;i++)
		scanf("%d",&pr->score[i]);
	printf("The student has been change press '1' to check\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -