首先是创建结构体,内部存一些学生的基本信息。
struct Sqlist
{
char number[20];
char name[20];
char sex[10];
int age;
char examtype[20];
struct Sqlist *next;
};
结构体有了下边就是各类功能的实现:这里主要实现增删改查的基本功能
增加:
void AddList(struct Sqlist *L)
{
int n,i;
struct Sqlist *p=L->next;
struct Sqlist*s=NULL;
printf("输入增加学生人数:\n");
scanf("%d",&n);
printf("输入学生信息:\n");
for( i=0; i<n; i++)
{
s=(struct Sqlist *)malloc(sizeof(struct Sqlist));
scanf("%s%s%s%d%s",s->number,s->name,s->sex,&s->age,s->examtype);
L->next=s;
s->next=p;
}
printf("增加成功!!!!\n");
}
删除:
void DeleteList(struct Sqlist *L)
{
struct Sqlist *p=L->next;
struct Sqlist *pre=L,*r=p,*rpre=pre;
char num3[20];
printf("请输入要删除的学生学号:\n");
scanf("%s",num3);
while(p!=NULL)
{
if(strcmp(p->number,num3)==0)
{
r=p;
rpre=pre;
}
pre=p;
p=p->next;
}
rpre->next=r->next;
free(r);
printf("删除成功!!!!!\n");
}
修改:
void ReviseList(struct Sqlist *L)
{
struct Sqlist *p=L->next;
char num2[20];
printf("输入修改的学生学号:\n");
scanf("%s",num2);
while(p!=NULL)
{
if(strcmp(p->number,num2)==0)
{
printf("请重新输入考生信息:\n");
scanf("%s%s%s%d%s",p->number,p->name,p->sex,&p->age,p->examtype);
printf("修改成功!!!!!\n");
break;
}
p=p->next;
}
if(p==NULL)
printf("查无此人!!!!\n");
}
查找:
void SearchList(struct Sqlist *L)
{
struct Sqlist *p=L->next;
char num1[20];
printf("输入要查找的学生学号:\n");
scanf("%s",num1);
while(p!=NULL)
{
if(strcmp(p->number,num1)==0)
{
printf("%s %s %s %d %s\n",p->number,p->name,p->sex,p->age,p->examtype);
break;
}
p=p->next;
}
if(p==NULL)
printf("暂无该学生信息!!!!\n");
}
下边是完整代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct Sqlist
{
char number[20];
char name[20];
char sex[10];
int age;
char examtype[20];
struct Sqlist *next;
};
struct Sqlist* CreateList(struct Sqlist *L)
{
struct Sqlist *s,*r;
int i,n;
printf("输入学生人数:\n");
scanf("%d",&n);
printf("输入学生信息:\n");
L=(struct Sqlist *)malloc(sizeof(struct Sqlist));
r=L;
for(i=0; i<n; i++)
{
s=(struct Sqlist *)malloc(sizeof(struct Sqlist));
scanf("%s%s%s%d%s",s->number,s->name,s->sex,&s->age,s->examtype);
r->next=s;
r=s;
}
r->next=NULL;
printf("成功创建!!!!\n");
return L;
}
void DispList(struct Sqlist *L)
{
struct Sqlist *p=L->next;
while(p!=NULL)
{
printf("%s %s %s %d %s\n",p->number,p->name,p->sex,p->age,p->examtype);
p=p->next;
}
}
void SearchList(struct Sqlist *L)
{
struct Sqlist *p=L->next;
char num1[20];
printf("输入要查找的学生学号:\n");
scanf("%s",num1);
while(p!=NULL)
{
if(strcmp(p->number,num1)==0)
{
printf("%s %s %s %d %s\n",p->number,p->name,p->sex,p->age,p->examtype);
break;
}
p=p->next;
}
if(p==NULL)
printf("暂无该学生信息!!!!\n");
}
void AddList(struct Sqlist *L)
{
int n,i;
struct Sqlist *p=L->next;
struct Sqlist*s=NULL;
printf("输入增加学生人数:\n");
scanf("%d",&n);
printf("输入学生信息:\n");
for( i=0; i<n; i++)
{
s=(struct Sqlist *)malloc(sizeof(struct Sqlist));
scanf("%s%s%s%d%s",s->number,s->name,s->sex,&s->age,s->examtype);
L->next=s;
s->next=p;
}
printf("增加成功!!!!\n");
}
void ReviseList(struct Sqlist *L)
{
struct Sqlist *p=L->next;
char num2[20];
printf("输入修改的学生学号:\n");
scanf("%s",num2);
while(p!=NULL)
{
if(strcmp(p->number,num2)==0)
{
printf("请重新输入考生信息:\n");
scanf("%s%s%s%d%s",p->number,p->name,p->sex,&p->age,p->examtype);
printf("修改成功!!!!!\n");
break;
}
p=p->next;
}
if(p==NULL)
printf("查无此人!!!!\n");
}
void DeleteList(struct Sqlist *L)
{
struct Sqlist *p=L->next;
struct Sqlist *pre=L,*r=p,*rpre=pre;
char num3[20];
printf("请输入要删除的学生学号:\n");
scanf("%s",num3);
while(p!=NULL)
{
if(strcmp(p->number,num3)==0)
{
r=p;
rpre=pre;
}
pre=p;
p=p->next;
}
rpre->next=r->next;
free(r);
printf("删除成功!!!!!\n");
}
int main()
{
int n;
struct Sqlist *L=NULL;
printf("***********学 生 信 息 管 理 系 统*************\n");
printf("* 1.创建学生信息 *\n");
printf("* 2.查找学生信息 *\n");
printf("* 3.修改学生信息 *\n");
printf("* 4.删除学生信息 *\n");
printf("* 5.增加学生信息 *\n");
printf("* 6.输出学生信息 *\n");
printf("* 7.离开此页面 *\n");
printf("********************************************\n");
while(scanf("%d",&n)!=EOF)
{
switch(n)
{
case 1:
L=CreateList(L);
break;
case 2:
SearchList(L);
break;
case 3:
ReviseList(L);
break;
case 4:
DeleteList(L);
break;
case 5:
AddList(L);
break;
case 6:
DispList(L);
break;
case 7:
exit(0);
default:
printf("输入有误!\n");
}
}
return 0;
}