全部代码: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 }