如何用C语言链表构建高效学生信息管理系统?

2026-04-29 16:405阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1200个文字,预计阅读时间需要5分钟。

如何用C语言链表构建高效学生信息管理系统?

本文将简要介绍一个C语言实现的简单学生信息管理系统。系统主要包括以下功能:

1. 添加学生信息:输入学生姓名、学号、年龄等信息。

2.显示学生信息:列出所有学生信息。

3.删除学生信息:根据学号删除指定学生信息。

4.指定位置插入学生信息:在列表中的指定位置插入新学生信息。

如何用C语言链表构建高效学生信息管理系统?

以下是实现这些功能的代码示例:

c

#include #include #include

typedef struct { char name[50]; char id[20]; int age;} Student;

Student students[100]; // 假设最多存储100名学生信息int student_count=0; // 当前存储的学生数量

void addStudent() { if (student_count >=100) { printf(数据库已满,无法添加更多学生信息。\n); return; } printf(请输入学生姓名: ); scanf(%49s, students[student_count].name); printf(请输入学生学号: ); scanf(%19s, students[student_count].id); printf(请输入学生年龄: ); scanf(%d, &students[student_count].age); student_count++;}

void displayStudents() { printf(所有学生信息:\n); for (int i=0; i

void deleteStudent() { char id[20]; printf(请输入要删除的学生学号: ); scanf(%19s, id); for (int i=0; i

void insertStudentAtPosition() { int position; printf(请输入要插入的位置(1-%d): , student_count + 1); scanf(%d, &position); if (position student_count + 1) { printf(位置无效。\n); return; } if (student_count >=100) { printf(数据库已满,无法插入更多学生信息。\n); return; } for (int i=student_count; i >=position; i--) { students[i]=students[i - 1]; } printf(请输入学生姓名: ); scanf(%49s, students[position - 1].name); printf(请输入学生学号: ); scanf(%19s, students[position - 1].id); printf(请输入学生年龄: ); scanf(%d, &students[position - 1].age); student_count++;}

int main() { int choice; do { printf(1. 添加学生信息\n); printf(2. 显示学生信息\n); printf(3. 删除学生信息\n); printf(4. 指定位置插入学生信息\n); printf(0. 退出\n); printf(请输入操作选择(0-4): ); scanf(%d, &choice); switch (choice) { case 1: addStudent(); break; case 2: displayStudents(); break; case 3: deleteStudent(); break; case 4: insertStudentAtPosition(); break; case 0: printf(退出系统。\n); break; default: printf(无效选择,请重新输入。\n); } } while (choice !=0); return 0;}

本文实例为大家分享了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.指定位置插入:

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

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

本文共计1200个文字,预计阅读时间需要5分钟。

如何用C语言链表构建高效学生信息管理系统?

本文将简要介绍一个C语言实现的简单学生信息管理系统。系统主要包括以下功能:

1. 添加学生信息:输入学生姓名、学号、年龄等信息。

2.显示学生信息:列出所有学生信息。

3.删除学生信息:根据学号删除指定学生信息。

4.指定位置插入学生信息:在列表中的指定位置插入新学生信息。

如何用C语言链表构建高效学生信息管理系统?

以下是实现这些功能的代码示例:

c

#include #include #include

typedef struct { char name[50]; char id[20]; int age;} Student;

Student students[100]; // 假设最多存储100名学生信息int student_count=0; // 当前存储的学生数量

void addStudent() { if (student_count >=100) { printf(数据库已满,无法添加更多学生信息。\n); return; } printf(请输入学生姓名: ); scanf(%49s, students[student_count].name); printf(请输入学生学号: ); scanf(%19s, students[student_count].id); printf(请输入学生年龄: ); scanf(%d, &students[student_count].age); student_count++;}

void displayStudents() { printf(所有学生信息:\n); for (int i=0; i

void deleteStudent() { char id[20]; printf(请输入要删除的学生学号: ); scanf(%19s, id); for (int i=0; i

void insertStudentAtPosition() { int position; printf(请输入要插入的位置(1-%d): , student_count + 1); scanf(%d, &position); if (position student_count + 1) { printf(位置无效。\n); return; } if (student_count >=100) { printf(数据库已满,无法插入更多学生信息。\n); return; } for (int i=student_count; i >=position; i--) { students[i]=students[i - 1]; } printf(请输入学生姓名: ); scanf(%49s, students[position - 1].name); printf(请输入学生学号: ); scanf(%19s, students[position - 1].id); printf(请输入学生年龄: ); scanf(%d, &students[position - 1].age); student_count++;}

int main() { int choice; do { printf(1. 添加学生信息\n); printf(2. 显示学生信息\n); printf(3. 删除学生信息\n); printf(4. 指定位置插入学生信息\n); printf(0. 退出\n); printf(请输入操作选择(0-4): ); scanf(%d, &choice); switch (choice) { case 1: addStudent(); break; case 2: displayStudents(); break; case 3: deleteStudent(); break; case 4: insertStudentAtPosition(); break; case 0: printf(退出系统。\n); break; default: printf(无效选择,请重新输入。\n); } } while (choice !=0); return 0;}

本文实例为大家分享了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.指定位置插入:

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

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