使用链表实现 学生信息管理系统
实现 学生信息的 1录入, 2插入,3查找(学号),4修改(学号)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct stulist{
int id;
char name[16];
char sex[16];
int score;
struct stulist *next;
};
struct stulist head;
void student_append(struct stulist *ptHead); // 声明录入函数
void find_student_byId(struct stulist *ptHead,int id); //声明查找函数(学号)
void change_student_byId(struct stulist *ptHead,int id);// 声明修改函数(学号)
void insert_student(struct stulist *ptHead); // 声明插入函数
int main(int argc,const char* argv[])
{
head.next = NULL;
while(1){
printf("************学生管理系统***********\n");
printf("1.录入信息 2.插入,3.查找(学号),4.修改(学号),5。退出\n请输入你的选择:");
int n,id;
scanf("%d",&n);
if(5 ==n)
{
printf("欢迎下次使用\n");
break;
}
switch(n){
case 1:
student_append(&head);
break;
case 2:
insert_student(&head);
break;
case 3:
printf("请输入学号:");
scanf("%d",&id);
find_student_byId(&head,id);
break;
case 4:
printf("请输入学号:");
scanf("%d",&id);
change_student_byId(&head,id);
break;
}
}
return 0;
}
void student_append(struct stulist *ptHead)
{
struct stulist *ptail = ptHead;
while(1)
{
int flag ;
printf("请输入你的选择,1.录入2.取消录入:");
scanf("%d",&flag);
if(1 == flag)
{
int id,score;
char name[16],sex[16];
struct stulist *p = malloc(sizeof(*p));
printf("请依次输入 学号、姓名、性别、成绩、:");
scanf("%d %s %s %d",&(p->id),&(p->name),&(p->sex),&(p->score));
p->next = NULL;
ptail->next = p;
ptail = ptail->next;
printf("录入成功!\n");
}
else if(2 == flag)
break;
}
}
void find_student_byId(struct stulist *ptHead,int id)
{
struct stulist *p = ptHead->next;
while(p)
{
if(p->id == id)
{
printf("查找成功!\n");
printf("该学生的信息为:");
printf("学号:%d,姓名%s,性别:%s,成绩:%d\n",p->id,p->name,p->sex,p->score);
return;
}
p = p->next;
}
if(p == NULL)
printf("没有此学生的信息!\n");
}
void change_student_byId(struct stulist *ptHead,int id)
{
struct stulist *p = ptHead->next;
while(p)
{
if(p->id == id)
{
printf("请重新输入该学生的信息:");
scanf("%d %s %s %d",&(p->id),&(p->name),&(p->sex),&(p->score));
printf("修改成功!\n");
return;
}
p = p->next;
}
if(p == NULL)
printf("没有此学生的信息,无法修改!\n");
}
void insert_student(struct stulist *ptHead)
{
struct stulist *ptu = ptHead->next;
printf("请输入你的选择:1:插入到最后,2.插入指定同学之后:");
int select;
scanf("%d",&select);
struct stulist *p = malloc(sizeof(*p));
printf("请依次输入 学号、姓名、性别、成绩、:");
scanf("%d %s %s %d",&(p->id),&(p->name),&(p->sex),&(p->score));
p->next = NULL;
if(1 == select)
{
while(ptu->next != NULL);
ptu->next = p;
ptu = ptu->next;;
printf("插入成功!\n");
}
else if(2 == select)
{
printf("请输入要插入的同学之后学号:");
int id;
scanf("%d",&id);
while(ptu)
{
if(ptu->id == id)
{
p->next = ptu->next;
ptu->next = p;
printf("插入成功\n");
break;
}
ptu = ptu->next;
}
if(ptu == NULL)
printf("没有找到该同学的信息,无法插入!\n");
}
}