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语言使用链表实现学生信息管理系统 的全部内容, 来源链接: utcz.com/p/244726.html

回到顶部