用C语言实现学生信息管理系统
#include<iostream>
#include<string.h>
using namespace std;
typedef struct{
char no[8];
char name[20];
float score;
}Student;
typedef struct LNode{
Student data;
struct LNode *next;
}LNode,*LinkList;
void CreatList(LinkList &L)
{
int n,i;
LinkList r,p;
r=new LNode;
r->next=NULL;
cout<<"请输入学生个数:"<<endl;
cin>>n;
L=new LNode;
L->next=NULL;
r=L;
cout<<"请输入学生信息"<<endl;
for(i=0;i<n;i++)
{
p=new LNode;
cout<<"第"<<i+1<<"个学生:"<<endl;
cout<<"学号:";
cin>>p->data.no;
cout<<"姓名:";
cin>>p->data.name;
cout<<"成绩:";
cin>>p->data.score;
p->next=NULL;
r->next=p;
r=p;
}
}
void LengthList(LinkList &L)
{
int i,j;
LinkList p;
p=L->next;
i=1;
while(p)
{
p=p->next;
j++;
}
cout<<"学生数量为:"<<j<<endl;
}
void OutList(LinkList &L)
{
int i;
LinkList p;
p=L->next;
if(L->next!=NULL)
do{
cout<<"学号:"<<p->data.no;
cout<<"\t姓名:"<<p->data.name;
cout<<"\t成绩:"<<p->data.score<<endl;
p=p->next;
}while(p!=NULL);
else cout<<"没有学生!"<<endl;
}
void GetList(LinkList L)
{
int i,j;
Student e;
LinkList p;
cout<<"请输入序号:";
cin>>i;
if(L->next==NULL) cout<<"没有这个学生! "<<endl;
else{
p=L->next;j=1;
while(p&&j<i)
{
p=p->next;
j++;
}
if(!p||j>i) cout<<"错误!"<<endl;
e=p->data;
cout<<"学号:"<<e.no<<"\t姓名:"<<e.name<<"\t成绩:"<<e.score<<endl;
}
}
void LocateList(LinkList &L)
{
char n[8];
LinkList p;
Student e;
cout<<"请输入要查找学生的姓名:";
cin>>n;
if(L->next==NULL) cout<<"没有这个学生!"<<endl;
else{
p=L->next;
while(p&&strcmp(p->data.name,n)!=0)
p=p->next;
if(!p) cout<<"没有这个学生"<<endl;
else{
strcpy(e.no,p->data.no);
e.score=p->data.score;
cout<<"学号:"<<e.no<<"\t成绩:"<<e.score<<endl;
}
}
}
void InsertList(LinkList &L)
{
int i,j;
Student e;
LinkList p,s;
cout<<"请输入要插入学生的信息: "<<endl;
cout<<"学号:";
cin>>e.no;
cout<<"姓名:";
cin>>e.name;
cout<<"成绩:";
cin>>e.score;
cout<<"请输入要插入的位置: ";
cin>>i;
p=L;j=0;
while(p && (j<i-1))
{
p=p->next;
++j;
}
if(!p||j>i-1||(L->next==NULL&&i!=1))
cout<<"错误!"<<endl;
else{
{
s=new LNode;
s->data=e;
s->next=p->next;
p->next=s;
cout<<"插入成功!"<<endl;
}
}
}
void DeleteList(LinkList &L)
{
int i,j;
LinkList p,q;
cout<<"请输入要删除的位置: ";
cin>>i;
if(L->next==NULL) cout<<"没有这个学生!"<<endl;
else{
p=L;j=0;
while(p->next&&j<i-1)
{
p=p->next;++j;
}
if(!p->next||j>i-1)
cout<<"错误!"<<endl;
q=p->next;
p->next=q->next;
delete q;
cout<<"删除成功!"<<endl;
}
}
int main()
{
LinkList L;
int flag=0,a;
L=new LNode;
L->next=NULL;
cout<<" "<<endl;
cout<<" "<<endl;
cout<<"\t\t\t学生信息管理系统"<<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\t8、退出"<<endl;
while(1)
{
cout<<" ********************************************************************* "<<endl;
cout<<" ********************************************************************* "<<endl;
cout<<"请输入要执行的操作:";
cin>>a;
switch(a)
{
case 1: CreatList(L);break;
case 2: OutList(L);break;
case 3: LocateList(L);break;
case 4: GetList(L);break;
case 5: InsertList(L);break;
case 6: DeleteList(L);break;
case 7: LengthList(L);break;
case 8: flag=1;break;
default: cout<<"输入无效!"<<endl;
}
if(flag) break;
}
return 0;
}