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

来源:互联网 发布:html 获取js定义的值 编辑:程序博客网 时间:2024/06/04 19:39
#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;}
原创粉丝点击