#include <stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct {
char number[10];
char name[10];
char sex;
int score;
}student;
typedef struct LNode {
student data;
struct LNode *next;
}LNode,*Linklist;
void in(LNode *head)
{
Linklist p,r; //p指向新结点; r指向当前链表的尾结点
int i,n; //n表示学生的人数
r=head;
printf("请输入学生的人数:");
scanf("%d",&n);
printf("请输入学生的信息:\n");
for(i=1;i<=n;i++)
{
p=(LNode *)malloc(sizeof(LNode));
p->next=NULL;
printf("学号:");
scanf("%s",p->data.number);
printf("姓名:");
scanf("%s",p->data.name);
printf("性别:");
fflush(stdin);
scanf("%c",&p->data.sex);
fflush(stdin);
printf("成绩:");
scanf("%d",&p->data.score);
r->next=p;
r=p;
printf("保存成功!\n");
}
printf("********************************************************\n");
}
void out(LNode * head){
Linklist p;
p=head;
while(p->next!=NULL){
p=p->next;
printf("学号:%s\n姓名:%s\n性别:%c\n成绩:%d\n",p->data.number,p->data.name,p->data.sex,p->data.score);
printf("-------------------------------------------\n");
}
printf("********************************************************\n");
}
void search(LNode * head)
{
Linklist p,r;char a[10];int count=0;int i=0;
p=head;r=head;
printf("请输入查询的学号:\n");
scanf("%s",a);
while(r->next!=NULL)
{ r=r->next;
i++;
}
if(p->next!=NULL)
{
while(count<i)
{ p=p->next;count++;
if(!strcmp(a,p->data.number))
{
printf("学号:%s\n姓名:%s\n性别:%c\n成绩:%d\n",p->data.number,p->data.name,p->data.sex,p->data.score);
printf("-------------------------------------------\n");break;
}
if (count==i){printf("表中无记录!\n");break;}
}
}
else{
printf("表中无数据!\n");
}
}
void delete(LNode * head)
{
Linklist r,p,q;//p指向删除的结点,q指向删除前驱结点。
int count=0;//当前位置。
int b;//表示q位置。
int i=0;//表示除头结点的结点个数。
int c=0;//表示删除结点位置。
char a[10];
p=head;r=head;
q=head;
printf("输入删除学生的学号:\n");
scanf("%s",a);
while (r->next!=NULL)
{
r=r->next;
i++;
}
if(p->next!=NULL){
while(count<i){
p=p->next;
count++;
if(!strcmp(a,p->data.number)) {b=count-1;break;}
if(count==i){printf("删除失败,表中无记录!\n");break;}
}
while(c<b){
q=q->next;
c++;
}
q->next=p->next;
free(p);
printf("删除成功!\n");
}else{
printf("表中无数据!\n");
}
}
void exit_()
{
printf("退出系统成功!");exit(0);
}
int main()
{
LNode *head;int a=-1;
head=(Linklist)malloc(sizeof(LNode));
head->next=NULL;
printf("* 1. 根据指定学生个数,逐个输入学生信息; *\n");
printf("* 2.浏览每个学生的信息; *\n");
printf("* 3.根据学号查询某个学生的基本信息; *\n");
printf("* 4、删除一个学生的信息。 *\n");
printf("* 5. 退出系统 *\n");
while (a!=0)
{
printf(" 请输入要操作的选项:\n");
scanf("%d",&a);
switch (a)
{
case 1:in(head);break;
case 2:out(head);break;
case 3:search(head);break;
case 4:delete(head);break;
case 5:exit_ ();break;
}
}
return 0;
}
11-22
1275
07-11
3044
06-16
4335
01-03
3807