我是靠谱客的博主 无私嚓茶,这篇文章主要介绍嵌入式培训经验分享——数据结构小项目(动态学生信息存储),现在分享给大家,希望可以做个参考。

学习数据结构之后,我们可以将这些综合起来,利用C语言和数据结构,可以完成一个简单的学生信息的管理系统,动态申请存储,可以对学生信息进行排序,查找,删除等操作,下面是我简单完成的学生信息管理系统,大体功能实现了,细化的没时间弄,大家可以相互借鉴一下,勿喷!!!

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
#include <stdio.h> #include <string.h> #include <stdlib.h> float average=0; int count=0; struct student { char name[10]; int id; char sex; int class; float score; struct student * next; }; typedef struct student student_info; student_info stuHead; //打印所有学生的信息 void pr_All(student_info *pt) { student_info *pt1=pt->next; while(pt1) { printf("姓名:%s 学号:%d 性别:%c 成绩:%f 班级:%dn",pt1->name,pt1->id, pt1->sex,pt1->score,pt1->class); pt1=pt1->next; } } //录入学生信息 void add_stu(student_info *pSTU) { student_info *pt; student_info *pHead=pSTU; while(1){ pt=malloc(sizeof(student_info)); memset(pt,0,sizeof(student_info)); printf("请输入学生信息:(姓名 学号 性别 成绩 班级n"); scanf("%s %d %c %f %d",pt->name,&pt->id,&pt->sex,&pt->score,&pt->class); //printf("姓名:%s 学号:%d 性别:%c 成绩:%f 班级:%dn",pt->name,pt->id, // pt->sex,pt->score,pt->class); if(strcmp(pt->name,"#")==0) { free(pt); break; } count++; pHead->next=pt; pHead=pHead->next; } return ; } //删除学生信息 int del_stu(student_info *pSTU) { char num[10]; student_info* pre=pSTU; student_info* p=pSTU->next; printf("请输入学生的姓名:"); scanf("%s",num); while(p) { pre=pre->next; p=p->next; if(strcmp(p->name,num)) { //printf("找打了"); pre->next=p->next; free(p); return 1; } } return 0; } //查询学生信息 int look_info(student_info *pSTU) { char num[10]; int i; printf("请输入学生的姓名:"); scanf("%s",num); while(pSTU) { if(strcmp(pSTU->name,num)==0) { printf("姓名:%s 学号:%d 性别:%c 成绩:%f 班级:%dn",pSTU[i].name,pSTU[i ].id,pSTU[i].sex,pSTU[i].score,pSTU[i].class); return 1; } pSTU=pSTU->next; } return 0; } //查询学生平均成绩 void aver_sc(student_info *pSTU) { int i; while(pSTU){ average+=pSTU->score; pSTU=pSTU->next; } average=average/(float)(count); printf("平均成绩:%fn",average); return ; } //更改学生信息 int chang_stuinfo(student_info *pSTU) { char num[10]; int a; printf("请输入学生的姓名:"); scanf("%s",num); while(pSTU) { if(strcmp(pSTU->name,num)==0) { printf("请选择要更改的内容:n1、姓名n2、学号n3、性别n4、成绩n5、班级n"); scanf("%d",&a); switch(a) { case 1: //更改姓名 printf("请输入更改后的内容:n"); scanf("%s",pSTU->name); break; case 2: //更改学号 printf("请输入更改后的内容:n"); scanf("%d",&pSTU->id); break; case 3: //更改性别 printf("请输入更改后的内容:n"); scanf("%c",&pSTU->sex); break; case 4: //更改成绩 printf("请输入更改后的内容:n"); scanf("%f",&pSTU->score); break; case 5: //更改班级 printf("请输入更改后的内容:n"); scanf("%d",&pSTU->class); break; } //printf("姓名:%s 学号:%d 性别:%c 成绩:%f 班级:%dn",pSTU->name,pSTU-> id,pSTU->sex,pSTU->score,pSTU->class); return 1; } pSTU=pSTU->next; } return 0; } //插入学生信息 int inset_Stu(student_info *phead,char *name,student_info *insertname) { student_info *p = phead->next; while(p){ if( strcmp(p->name, name) == 0){ break; } p=p->next; } // p is somebody if(p==NULL){ printf("sorry,no found name=%sn",name); return 0; } //insert insertname->next=p->next; p->next=insertname; return 1; } int main(int val, char *argv[]) { int a; student_info *pt1; student_info *p=NULL; while(1) { printf("1、录入学生信息n2、删除学生信息n3、学生信息查询n4、查看平均成绩n5、修改学生信息n6、查看全部学生信息n7、插入学生信息n8、退出n请输入要操作指令:"); scanf("%d",&a); switch(a) { case 1: //添加学生数据 add_stu(&stuHead); //pr_All(&stuHead); break; case 2: //删除学生数据 if(del_stu(&stuHead)){ printf("删除成功n"); }else{ printf("没有查询到相关的信息!!!n"); } break; case 3: //查询学生信息 if(!look_info(&stuHead)){ printf("没有查询到相关的信息!!!n"); } break; case 4: //查看平均成绩 aver_sc(&stuHead); break; case 5: //更改学生信息 if(chang_stuinfo(&stuHead)) printf("修改成功n"); else printf("未查询到此人n"); break; case 6: //打印所有学生的信息 pr_All(&stuHead); break; case 7://插入学生信息 pt1=malloc(sizeof(student_info)); memset(pt1,0,sizeof(student_info)); printf("请输入学生信息:(姓名 学号 性别 成绩 班级n"); scanf("%s %d %c %f %d",pt1->name,&pt1->id,&pt1->sex,&pt1->score,&pt1->class); if(inset_Stu(&stuHead,"li",pt1)) printf("插入成功n"); else printf("未查询到此人n"); break; case 8://退出 return 0; } } return 0; }

最后

以上就是无私嚓茶最近收集整理的关于嵌入式培训经验分享——数据结构小项目(动态学生信息存储)的全部内容,更多相关嵌入式培训经验分享——数据结构小项目(动态学生信息存储)内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部