学生信息管理系统(链表)

#include<iostream>
#include<string.h> 
using namespace std;
typedef struct{
	char name[100];
	char number[20];
	float score;
}Student;
typedef struct LNode{
	Student data;
	struct LNode *next;
}LNode,*LinkList;
void Input(LinkList &Head)
{
	Head=new LNode;
	Head->next=NULL;
	LinkList p,q;
	q=Head;
	int n,i;
	cout<<"请输入需要录入信息的学生人数"<<endl;
	cin>>n;
	for(i=0;i<n;i++)
	{
		cout<<"学生("<<i+1<<")"<<endl;
		p=new LNode;
		cout<<"姓名:";
		cin>>p->data.name;
		cout<<"学号:";
		cin>>p->data.number;
		cout<<"分数";
		cin>>p->data.score;
		p->next=NULL;
		q->next=p;
		q=p;
	}
	cout<<"\t\t\t输入完成"<<endl;
	cout<<"________________________________________________________________"<<endl;
}
void Output(Student m)
{
     cout<<"姓名:";
	 cout<<m.name;
	 cout<<"\t\t学号:";
	 cout<<m.number; 
	 cout<<"\t\t分数:";
	 cout<<m.score<<endl; 
}
int LengthList(LinkList Head)//学生个数 (i的值) 
{
	LinkList p;
	p=Head->next;
	int i=0;
	while(p)
	{
		p=p->next;
		i++;
	}
	return i;
}
void GetElem(LinkList Head)//根据给定的位置取值 
{
	int i,j,n;
	n=LengthList(Head);
	cout<<"请输入查找学生的位置"<<endl;
	cin>>i; 
	LinkList p;
	p=Head->next;
	j=1;
	while(p&&j<i)
	{
		p=p->next;
		j++;
	}
	if(!p||j>i||j>n)
	{
		cout<<endl;
		cout<<"\t\t\t查找失败"<<endl;
		cout<<"________________________________________________________________"<<endl; 
	}
	else
	{
		Output(p->data);
	    cout<<endl;
	    cout<<"\t\t\t完成查找"<<endl; 
	    cout<<"________________________________________________________________"<<endl; 
	}
	
}

void OutList(LinkList Head)//显示全部学生信息    
{
	int n,i;
	LinkList p;
	p=Head->next;
	n=LengthList(Head);
	if(n==0)
	{
		cout<<endl;
		cout<<"\t\t\t学生信息为空"<<endl;
	    cout<<"________________________________________________________________"<<endl; 
	}
	else
	{
		for(p=Head->next,i=0;i<n;i++)
	    {
		   Output(p->data);
		   p=p->next;
	    }
	    cout<<endl;
	    cout<<"\t\t\t学生信息显示完成"<<endl;
	    cout<<"________________________________________________________________"<<endl; 
	}
	
}
void LocateNameList(LinkList Head)//根据姓名查找 
{
	char a[100];
	cout<<"请输入要查找学生的姓名:"<<endl;
	cin>>a;
    LinkList p;
    p=Head->next;
    while(p&&(strcmp(p->data.name,a)!=0))
    p=p->next;
    if(!p)
    {
    	cout<<"\t\t\t没有找到该学生"<<endl;
		cout<<"________________________________________________________________"<<endl; 
	}
	else
	{
		cout<<"\t\t学号:";
		cout<<p->data.number;
		cout<<"\t\t分数:";
		cout<<p->data.score<<endl;
		cout<<"________________________________________________________________"<<endl;
	}
}
void ListInsert(LinkList &Head)//插入(i的值) 
{
	int i,j=0;
	LinkList p;
	p=Head;
	Student e;
	cout<<"请输入插入位置"<<endl;
	cin>>i;
	while(p&&j<i-1)
	{
		p=p->next;
		j++;
	} 
	if(!p||j>i-1)
	{
		cout<<"\t\t\t插入失败"<<endl;
		cout<<"________________________________________________________________"<<endl;
	}
	else
	{
		cout<<"请输入插入学生信息"<<endl;
	    cout<<"姓名:";
	    cin>>e.name;
      	cout<<"学号:";
	    cin>>e.number;
	    cout<<"分数:";
	    cin>>e.score; 
		LinkList s;
	    s=new LNode;
	    s->data=e;
	    s->next=p->next;
	    p->next=s;
	    cout<<"\t\t\t插入完成"<<endl;
	    cout<<"________________________________________________________________"<<endl;
	}
	
}
void ListDelete(LinkList &Head)//删除(i的值) 
{
	int i,j=0;
	LinkList p,q;
	p=Head;
	cout<<"请输入删除位置"<<endl;
	cin>>i;
	while(p->next&&j<i-1)
	{
		p=p->next;
		j++;
	}
	if(!p->next||j>i-1)
	{
		cout<<"\t\t\t删除失败"<<endl;
		cout<<"________________________________________________________________"<<endl;
	}
	else
	{
		q=p->next;
	    p->next=q->next;
	    delete q;
	    cout<<"\t\t\t成功删除"<<endl;
	    cout<<"________________________________________________________________"<<endl;
	}
	
}

int main()
{
	LinkList Head;
	Head=new LNode;
	Head->next=NULL; 
	cout<<"\t\t\t学生信息管理"<<endl;
	cout<<"\t\t请选择相应数字进行相应操作"<<endl;
	cout<<"================================================================"<<endl;
	cout<<"****************************************************************"<<endl;
	cout<<"================================================================"<<endl;
	cout<<endl;
	cout<<"\t\t1. 输入学生人数并录入学生信息"<<endl;
	cout<<"\t\t2. 显示所有学生已录入的全部信息"<<endl;
	cout<<"\t\t3. 输入姓名,查找学生学号及分数"<<endl;
	cout<<"\t\t4. 输入序号,显示该学生信息"<<endl;
	cout<<"\t\t5. 在指定位置插入学生信息"<<endl;
	cout<<"\t\t6. 删除指定学生信息"<<endl;
	cout<<"\t\t7. 统计学生人数"<<endl;
	cout<<"\t\t0. 退出"<<endl;
	cout<<endl;
	cout<<"================================================================"<<endl;
	cout<<"****************************************************************"<<endl;
	cout<<"================================================================"<<endl;
	int F=0,T=0,choose,a;
	while(1)
	{
		cout<<endl;
		cout<<"请选择:"<<endl;
		cin>>choose;
		cout<<"----------------------------------------------------------------"<<endl;
		switch(choose)
		{
			case 1:Input(Head);T=1;break;
			case 2:
				if(T)
				{
					OutList(Head);
					break;
				}
				else
				{
					cout<<"\t\t\t请先录入学生信息"<<endl;
					cout<<"________________________________________________________________"<<endl;
					break; 
				}
			case 3:
				if(T)
				{
					LocateNameList(Head);break;
				}
				else
				{
					cout<<"\t\t\t请先录入学生信息"<<endl;
					cout<<"________________________________________________________________"<<endl;
					break; 
				}
		    
		    case 4:
		    	if(T)
		    	{
		    		GetElem(Head);break;
				}
				else
				{
					cout<<"\t\t\t请先录入学生信息"<<endl;
					cout<<"________________________________________________________________"<<endl;
					break; 
				 } 
		    case 5:
		    	if(T)
		    	{
		    		ListInsert(Head);
		    		break;
				}
				else
				{
					cout<<"\t\t\t请先录入学生信息"<<endl;
					cout<<"________________________________________________________________"<<endl;
					break;
				}
		    case 6:
			    if(T)
				{
					ListDelete(Head);
					break;
				}
				else
				{
					cout<<"\t\t\t请先录入学生信息"<<endl;
					cout<<"________________________________________________________________"<<endl;
					break;
				} 
		    case 7:
		    	if(T)
		    	{
			       a=LengthList(Head);
			       cout<<"\t\t\t共有"<<a<<"名学生"<<endl;
				   cout<<"________________________________________________________________"<<endl;
				   break;
			    }
			    else
			    {
			    	cout<<"\t\t\t请先录入学生信息"<<endl;
					cout<<"________________________________________________________________"<<endl;
					break;
				}
		    case 0 :F=1;break;
		    default:cout<<"\t\t\t没有此项操作(请选择指定操作)"<<endl;
		}
		if(F)
		break;
	}
	cout<<endl;
	cout<<"\t\t\t谢谢使用,请按任意键退出"<<endl;
	cout<<"________________________________________________________________"<<endl;
	system("pause");  
    return 0; 
}


























猜你喜欢

转载自blog.csdn.net/AK47red/article/details/89323438
今日推荐