最近在学链表,做了一个简单的学生管理系统,希望多多指教.
#include <iostream>
using namespace std;
#include<string>
class Student
{
public:
int Number;//学生编号
string Name;//学生姓名
float Math;//学生成绩
Student *next;
};
Student *Head;
/**********************************
* 建立链表
**********************************/
Student *create()
{
Student *p1,*p2;
p1=new Student;
Head=p1;
p2=p1;
cout<<"请输入学生编号(输入0退出)"<<endl;
cin>>p1->Number;
if(p1->Number!=0)
{
cout<<"请输入学生姓名"<<endl;
cin>>p1->Name;
cout<<"请输入学生成绩"<<endl;
cin>>p1->Math;
}
else
{
p2->next=NULL;
p2=NULL;
p1=NULL;
Head=NULL;
return Head;
}
while (p1->Name!="")
{
p2=p1;
p1=new Student;
cout<<"请输入学生编号(输入0退出)"<<endl;
cin>>p1->Number;
if(p1->Number!=0)
{
cout<<"请输入学生姓名"<<endl;
cin>>p1->Name;
cout<<"请输入学生成绩"<<endl;
cin>>p1->Math;
}
p2->next=p1;
}
delete p1;
p2->next=NULL;
return Head;
}
/**********************************
* 显示链表
**********************************/
void show(Student *head)
{
cout<<endl;
cout<<"学生信息如下:"<<endl;
while(head)
{
cout<<head->Name<<"的编号是:\t"<<head->Number;
cout<<"\t成绩是:\t"<<head->Math<<endl;
head=head->next;
}
}
/*********************************
* 删除链表
*********************************/
void del(Student *head,int num)
{
Student *l;//保存前一个节点
if (head->Number==num)
{
l=head;
Head=l->next;
delete l;
cout<<"删除头结点操作成功"<<endl;
return;
}
while(head)
{
if (head->next->Number==num)
{
l=head->next;
head->next=l->next;
delete l;
cout<<"删除操作成功"<<endl;
return;
}
if(head->next==NULL)
{
cout<<"您要删除的编号不存在"<<endl;
return;
}
head=head->next;
}
cout<<"无效编号"<<endl;
}
/********************************.
* 插入链表
*********************************/
void insert(Student *head,int num,string name,float math)
{
Student *list=new Student;
Student *temp=NULL;
list->Number=num;
list->Name=name;
list->Math=math;
if(num<head->Number)
{
list->next=head;
Head=list;
}
while((num>head->Number)&&(head->next!=NULL))
{
temp=head;
head=head->next;
}
if (num>head->Number)
{
head->next=list;
}
else
{
temp->next=list;
list->next=head;
}
}
string na;
int main()
{
cout<<"\t\t\t\t学生管理系统"<<endl;
int state;//状态
const int Create=0;
const int Show =1;
const int Del=2;
const int Insert=3;
while(true)
{
cout<<"请选择操作(0是创建信息,1是显示信息,2是删除信息,3是插入信息)"<<endl;
cin>>state;//选择状态
cout<<endl;
switch(state)
{
case Create:
Head=create();
break;
case Show:
show(Head);
break;
case Del:
int delnum;
cout<<"请输入要删除的编号"<<endl;
cin>>delnum;
del(Head,delnum);
break;
case Insert:
int n;
float m;
cout<<"请输入学生编号"<<endl;
cin>>n;
cout<<"请输入学生姓名"<<endl;
cin>>na;
cout<<"请输入学生成绩"<<endl;
cin>>m;
insert(Head,n,na,m);
break;
default:
cout<<"无效输入 请重新输入"<<endl;
break;
}
}
return 0;
}