码迷,mamicode.com
首页 > 编程语言 > 详细

c++封装链表实现-->学生信息管理分析系统

时间:2016-03-31 15:08:26      阅读:310      评论:0      收藏:0      [点我收藏+]

标签:private   include   public   链表   学生成绩管理系统   

//class.h 头文件
#include <string>
#include <iostream>
#include <iomanip>            //实现setw()宽字节输出
using namespace std;


class stuDate
{
public:
		struct student
		{
			string name;		//姓名	
			string sex;			//性别
			int id;
			float eng,math,chinese,c,sum;
			struct student *next;
		};
};


class stuList :public stuDate
{
private:
	int num;		//人数
	struct student *head;
public:
	stuList();
	void _creat();
	void _print();
	void _sort();
};

stuList::stuList()
{
	this->head=NULL;
	this->num=0;
}

void stuList::_creat()
{
	char res = ‘Y‘;
	struct student *p1,*p2;
	p1=p2=new struct student;
	while(res==‘Y‘ || res == ‘y‘)
	{
		if(this->head == NULL)
		{
			this->head=p1;
			p1->id=0;
		}
		else
		{
			p2->next=p1;
		}
		cout<<"Name:";
		cin>>p1->name;
		cout<<"Sex:";
		cin>>p1->sex;
		cout<<"Chinese:";
		cin>>p1->chinese;
		cout<<"Math:";
		cin>>p1->math;
		cout<<"English:";
		cin>>p1->eng;
		cout<<"C语言:";
		cin>>p1->c;
		p1->id=this->num+1;
		p1->sum=p1->chinese+p1->math+p1->eng+p1->c;
		this->num++;
		p2=p1;
		p1=new struct student;
		cout<<"\n是否继续输入(Y/N):";
		cin>>res;
		if(res ==‘N‘|| res == ‘n‘)
			break;
	}
	p2->next=NULL;
}

void stuList::_print()
{
	struct student *temp;
	temp=this->head;
	cout<<"id"<<setw(5)<<"name"<<setw(5)<<"sex"<<setw(10)<<"Chinese"<<setw(5)
		<<"Math"<<setw(8)<<"English"<<setw(5)<<"C"<<setw(5)<<"Sum"<<endl;
	for(int i=0;i<this->num;i++)
	{
		cout<<temp->id<<setw(5)<<temp->name<<setw(5)<<temp->sex<<setw(5)<<temp->chinese<<setw(5)
			<<temp->math<<setw(5)<<temp->eng<<setw(5)<<temp->c<<setw(5)<<temp->sum<<endl;
		temp=temp->next;
	}
	cout<<endl;
	cout<<"------------------------------------------------------------总人数:"<<this->num;
	cout<<endl;
}

void stuList::_sort()
{
	struct student *first;			/*排列后有序链的表头指针*/
	struct student *tail;				/*排列后有序链的表尾指针*/
	struct student *p_max;				
	struct student *max;
	struct student *p;
	p=this->head;
	if(this->head!=NULL)
	{
		first=NULL;
			while (head != NULL)
			{
				for (p=this->head,max=this->head; p->next!=NULL; p=p->next)
				{
					if (p->next->sum > max->sum)			//以总分排序
					{
						p_max=p;
						max=p->next;
					}
				}
				if(first==NULL)
				{
					first=max;
					tail=max;
				}
				else
				{
					tail->next=max;
					tail=max;
				}
				if(max==this->head)
				{
					this->head=this->head->next;
				}
				else
				{
					p_max->next=max->next;
				}
			}
			if(first!=NULL)
			{
				tail->next=NULL;
			}
			cout<<"id"<<setw(5)<<"name"<<setw(5)<<"sex"<<setw(10)<<"Chinese"<<setw(5)
				<<"Math"<<setw(8)<<"English"<<setw(5)<<"C"<<setw(5)<<"Sum"<<endl;
			for(int i=0;i<this->num;i++)
			{
				cout<<first->id<<setw(5)<<first->name<<setw(5)<<first->sex<<setw(5)<<first->chinese<<setw(5)
					<<first->math<<setw(5)<<first->eng<<setw(5)<<first->c<<setw(5)<<first->sum<<endl;
				first=first->next;
			}
	}
}



//stu.cpp    调用class。h
#include "class.h"
int main()
{
	stuList A;
	A._creat();
	A._print();
	A._sort();
	return 0;
}


本文出自 “启思·朝圣者” 博客,请务必保留此出处http://dearch.blog.51cto.com/10423918/1758724

c++封装链表实现-->学生信息管理分析系统

标签:private   include   public   链表   学生成绩管理系统   

原文地址:http://dearch.blog.51cto.com/10423918/1758724

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!