C语言使用链表实现学生信息管理系统

 更新时间:2019年12月27日 10:18:38   作者:Newtol  
这篇文章主要为大家详细介绍了C语言使用链表实现学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下

代码实现的功能:

1.插入学生信息 2.显示学生信息 3.删除学生信息 4.在指定位置插入学生信息 5.查找学生信息

代码内容:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define Max_Student_Num 10
#define Max_Str_len 20

typedef struct T_student{
 int number;
 char name [Max_Student_Num];
 char phone[Max_Student_Num];
};

typedef struct T_Node{
 struct T_student s;
 struct T_Node * next;
};

char command_str[]={"\n1 display all member;\n2 insert member;\n3 del member;\n4 exit\nCommand selection:"};

struct T_student students[Max_Student_Num];
struct T_Node * head = NULL;

int main(int argc, char* argv[])
{
 int command, i;
 struct T_student student;
 struct T_Node * pStu =head;
 memset(&student,0,sizeof(student));

 while(1){
  printf("%s",command_str);
  scanf("%d", &command);
  switch(command)
  {
  case 1:
   if(head==NULL){
    printf("empty!!!!!!!!!!!!\n");
    break;
   }
   if(head->next==head){
    display_student(head);
   }else{
    pStu=head->next;
    do
    {
     display_student(pStu);
     pStu=pStu->next;
    }while(pStu!= head->next);
//
   }

   break;
  case 2:
   printf("enter new student number:");
   scanf("%d", &student.number);
   printf("enter new student name:");
   scanf("%s", &student.name);
   if(strlen(student.name) > Max_Str_len)
   {
    printf("name is too long!!\n");
    continue;
   }

   printf("enter new student phone:");
   scanf("%s", &student.phone);

   if(strlen(student.phone) > Max_Str_len)
   {
    printf("phone is too long!!\n");
    continue;
   }

   printf("\n");

   if(student.number != 0)
     insert_student(student);

   break;
  case 3:
   printf("Inter deleted student number:");
   scanf("%d", &student.number);
   del_student(student);
   break;
  case 4:
   return 0;
  default:
   printf("error command, try again\n");
   break;
  }
 }
}


void display_student( struct T_Node * pStu){
 printf("number:%d name:%s phone:%s \n",pStu->s.number,pStu->s.name,pStu->s.phone);
}

void insert_student(struct T_student student){

 struct T_Node* pNode ;
 struct T_Node* pStu =NULL;
 int size = sizeof(struct T_Node);
 pStu=(struct T_Node *)malloc (size);
 if(pStu == NULL){
  return ;
 }
 memcpy(&pStu->s,&student,sizeof(student));

 if(head==NULL){

   pStu->next=head;
   head=pStu;
   head->next=head;
   return ;
 }
 pStu->next = head->next;
 head->next=pStu;


}

void del_student(struct T_student student){
 struct T_Node *pNode =NULL,*p=NULL;
 if(head->next==head && head->s.number==student.number){
  pNode=head;
  head=NULL;
  free(pNode);
  printf("success");
  return;
 }
 for(pNode=head->next;pNode != head;pNode=pNode->next){
  if( pNode->next->s.number == student.number){
   p=pNode->next->next;

   free(pNode->next);
   pNode->next=p;

   printf("Delete success!\n");
   return;
  }

 }
 printf("Not Found\n");
}

测试截图:

1.插入功能:

2.显示功能:

3.查询功能:

4.删除功能:

5.指定位置插入:

更多学习资料请关注专题《管理系统开发》。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • C++基于EasyX图形库实现2048小游戏

    C++基于EasyX图形库实现2048小游戏

    这篇文章主要为大家详细介绍了C++基于EasyX图形库实现2048小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • 节序问题:解析大小的端判定

    节序问题:解析大小的端判定

    本篇文章是对大小的端判定进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • windows上配置vscode C/C++代码跳转的实现

    windows上配置vscode C/C++代码跳转的实现

    C/C++官方的C/C++插件,必备的插件,是代码跳转、自动补全、代码大纲显示等功能的基础,本文主要介绍了windows上配置vscode C/C++代码跳转,感兴趣的可以了解一下
    2023-09-09
  • C++超详细讲解析构函数

    C++超详细讲解析构函数

    既然在创建对象时有构造函数(给成员初始化),那么在销毁对象时应该还有一个清除成员变量数据的操作咯,析构函数与构造函数功能相反,析构函数不是完成对象的销毁,局部对象销毁工作是由编译器完成的。而对象在销毁时会自动调用析构函数,完成类的一些资源清理工作
    2022-06-06
  • C# CLR学习 C++使用namespace实例详解

    C# CLR学习 C++使用namespace实例详解

    这篇文章主要为大家介绍了C# CLR学习 C++使用namespace实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • C++ Qt开发之使用QHostInfo查询主机地址

    C++ Qt开发之使用QHostInfo查询主机地址

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,本文将重点介绍如何运用QHostInfo组件实现对主机地址查询功能,希望对大家有所帮助
    2024-03-03
  • C++实现通讯录功能

    C++实现通讯录功能

    这篇文章主要为大家详细介绍了C++实现通讯录功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • C++ OpenCV实现二维码检测功能

    C++ OpenCV实现二维码检测功能

    这篇文章主要介绍了如何利用C++ OpenCV实现二维码检测功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-01-01
  • 使用c++实现OpenCV图像横向&纵向拼接

    使用c++实现OpenCV图像横向&纵向拼接

    这篇文章主要介绍了使用c++实现OpenCV图像横向&纵向拼接,文中有图像拼接函数,可以实现如“长图拼接王”这类小程序的类似功能,大家可以将该函数封装在软件中自由使用
    2021-08-08
  • VC运用OPENGL加载BMP纹理图的实现方法汇总

    VC运用OPENGL加载BMP纹理图的实现方法汇总

    这篇文章主要介绍了VC运用OPENGL加载BMP纹理图的实现方法,对于更好的了解OpenGL很有帮助,需要的朋友可以参考下
    2014-07-07

最新评论