使用单向链表实现学生信息管理系统

全部代码:https://git.coding.net/ShawnL/student_system.git

实现的功能:
菜单界面

Please enter your choice:
1) exit.
2) add all students.
3) show all students.
4) add a studeng.
5) remove a studeng.

用来存放学生信息的结构体

  9 //学生分数的结构体
 10 typedef struct s
 11 {
 12     int math;
 13     int chinese;
 14     int english;
 15 }score_t;
 16
 17 //学生信息结构体
 18 typedef struct node {
 19     char name[20];
 20     int number;
 21     score_t score;
 22     struct node *next;
 23 }Node;

1、创建系统链表

创建整个链表时,需要先创建一个头,链表头不存储数据,只是方便后面访问链表方便而设置。

 20 void creat_list()
 21 {
 22     char flag[5] = "y";
 23     Node *new;
 24     if(header == NULL)
 25     {
 26         header=creat_node(0);
 27     }
 28
 29     /***********************************
 30      *等待用户输入数据,创建链表
 31      * ******************************* */
 32     do
 33     {
 34         new = creat_node();
 35         new->next = header->next;
 36         header->next = new;
 37         entering_stu_info(new);
 38         printf("Do you want to continue(y/n):");
 39         scanf("%s", flag);
 40     }while (strcmp(flag, "y")==0);
 41
 42     printf_main_menu(); //回到主界面
 43 }

2、添加一个学生

添加学生每次在链表的头添加

124 int add_a_stu()
125 {
126     Node *new;
127     new = creat_node();
128     new->next = header->next;
129     header->next = new;
130     entering_stu_info(new);
131     printf_main_menu(); //回到主界面
132     return 0;
133 }

删除一个学生

删除学生通过学生的学号(number)来删除,部分函数代码没有
贴出来,有需要可以去上面的git取完整的代码

     138 int rm_a_stu()
139 {
140     Node *del, *cur;
141     int del_stu_num;
142     char del_stu_name[20];
143     printf("input student number you want to delete: ");
144     scanf("%d", &del_stu_num);
145
146     /*寻找要被删除的学生节点*/
147     cur = header;
148     while(cur->next)
149     {
150         if (cur->next->number == del_stu_num)
151         {
152             del = cur->next;
153             strcpy(del_stu_name, del->name);
154             cur->next = del->next;
155             break;
156         }
157         cur = cur->next;
158     }
159     free(del);
160     del = NULL;
161     cur = NULL;
162     printf("rm %s(%d) student succesful!\n", del_stu_name, del_stu_num);
163     printf_main_menu(); //回到主界面
164     return 0;
165 }
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值