#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;
}
学生信息管理系统(链表)
最新推荐文章于 2024-08-14 20:35:27 发布