您的位置:首页 > 其它

单向动态链表练习(学生系统的增删改查)

2017-09-26 17:47 351 查看
#include <stdio.h>
#include <stdlib.h>
#include<malloc.h>
#include<string.h>
//定义一个学生结构体
typedef struct student{
int num;
int age;
char *name[20];
char *sex[20];
struct student *Next;
} student;
//-------------函数的声明------------
void menu();
void inforPrintf(student *head);//声明一个打印函数
student *createS();//声明创建学生信息
student *deleteS(student *head);//根据学号删除学生的信息
void findS(student *head);//根据学号查询学生的信息
student *insertS(student *head);//插入学生信息
student *updateS(student *head);//修改学生信息

int main(){
// 必须把返回给主函数

menu();

return 0;
}

//---------不同函数的定义----------
//  0 meun 提示信息

void menu(){
student *head=(student *)malloc(sizeof( student));
int flag=100;
while(flag){
printf("\t--------简单大学生管理系统------------\n");
printf("\t1 \t创建学生信息\n");
printf("\t2  \t删除学生信息\n");
printf("\t3  \t插入学生信息\n");
printf("\t4  \t修改学生信息\n");
printf("\t5  \t查询学生信息\n");
printf("\t6  \t查看所有学生信息\n");
printf("\t0  \t退出系统!\n");
printf("\t--------简单大学生管理系统------------\n");
printf("请您输入您想操作的内容!\n");
scanf("%d",&flag);

switch(flag){
case 1:head=createS();break;
case 2:head=deleteS(head);break;
case 3:head=insertS(head);break;
case 4:head=updateS(head);break;
case 5:findS(head);break;
case 6:inforPrintf(head);break;
case 0: printf("您已经成功退出 \n");exit(0);
default:printf("您输入的数据不合法,请重新输入\n");break;
}
}

}

//      1.链表信息的打印
void inforPrintf(student *head){
student *p;
p=head->Next;
printf("\t\t\t--------学生相关信息-----\n");
while(p){
printf("姓名:%s  年龄:%d  性别:%s  学号:%d\n",p->name,p->age,p->sex,p->num);
p=p->Next;
}
printf("\t\t\t--------学生相关信息-----\n");
printf("\n\n");
}
//   2.创建学生信息

student * createS(){
student *pTemp,*qNew,*head;
student *p;
int numStu,i;
pTemp=(student *)malloc(sizeof( student));
pTemp->Next=NULL;
head=pTemp;

printf("请输入你要录入学生信息的个数! ");
scanf("%d",&numStu);
for(i=1;i<=numStu;i++){
qNew=(student *)malloc(sizeof( student));
printf("请输入学生的姓名:\n");
scanf("%s",&qNew->name);
printf("请输入学生的年龄:\n");
scanf("%d",&qNew->age);
printf("请输入学生的性别:\n");
scanf("%s",&qNew->sex);
printf("请输入学生的学号:\n");
scanf("%d",&qNew->num);
printf("ok ,第 %d 个信息录入成功\n",i);
pTemp->Next=qNew;
pTemp=qNew;
}

qNew->Next=NULL;
return head;
}
//   2.删除学生信息

student * deleteS(student *head){
student *pTemp ,*q;
int numStu;
pTemp=head->Next;
q=head->Next;
printf("-------------您已经成功进入删除学生模块!-----------------\n");
printf("请输入你要输入要删除学生的学号 \n");
scanf("%d",&numStu);

while(pTemp->num!=numStu){
q=pTemp;
pTemp=pTemp->Next;
if(!pTemp){
printf("没有找到此学生\n");
break;
}
}

if(pTemp){
printf("找到了此学号 %d \n",pTemp->num);
q->Next=q->Next->Next;
printf("删除学生成功!\n");
}

return head;
}

//根据学号查询学生的信息
void findS(student *head){
student *pTemp;
int numStu;
pTemp=head->Next;

printf("-------------您已经成功进入查询学生模块!-----------------\n");
printf("请输入你要查询学生的学号 \n");
scanf("%d",&numStu);

while(pTemp->num!=numStu){
pTemp=pTemp->Next;
if(!pTemp){
printf("没有找到该学生 请重新输入\n");
break;
}
}
if(pTemp){
printf("成功找到了此学生,信息如下 \n");
printf("姓名 :%s , 性别:%s ,年龄:%d ,学号 :%d \n",pTemp->name,pTemp->sex,pTemp->age
,pTemp->num);
printf("\n");
}

}

student *insertS(student *head){
student *pTemp,*qNew,*p;

pTemp=head->Next;
p=head->Next;

printf("建立学生节点....ing\n");
qNew=(student *)malloc(sizeof( student));
printf("请输入学生的姓名:\n");
scanf("%s",&qNew->name);
printf("请输入学生的年龄:\n");
scanf("%d",&qNew->age);
printf("请输入学生的性别:\n");
scanf("%s",&qNew->sex);
printf("请输入学生的学号:\n");
scanf("%d",&qNew->num);
printf("节点建立成功 正在插入信息中ing------\n");
while(p->num<qNew->num){
pTemp=p;
p=p->Next;
}
qNew->Next=p;
pTemp->Next=qNew;
printf("-----------学生信息插入成功---------\n");
printf("\n");
return head;
}
student *updateS(student *head){
student *pTemp;
int numStu;
pTemp=head->Next;

printf("-------------您已经成功进入修改学生模块!-----------------\n");
printf("请输入你要修改学生的学号 \n");
scanf("%d",&numStu);

while(pTemp->num!=numStu){
pTemp=pTemp->Next;
}
printf("找到此学生\n");
printf("请修改学生的姓名:\n");
scanf("%s",&pTemp->name);
printf("请修改学生的年龄:\n");
scanf("%d",&pTemp->age);
printf("请修改学生的性别:\n");
scanf("%s",&pTemp->sex);
printf("请修改学生的学号:\n");
scanf("%d",&pTemp->num);

printf("成功修改此学生,信息如下\n");
printf("\n");
return head;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  结构 struct 链表