/*系统特色:(大牛勿笑)
*颜色提示
*文字提示
*功能
*/
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <math.h>
4 #include <string.h>
5 #include <windows.h>
6 #include <conio.h>
7
8 FILE *fp;//定义文件指针
9
10 int count;//这个count在这个系统中起到了莫大的作用,比较参参数,规定参数范围等
11
12 struct add
13 {
14 int SID;
15 char Name[10];
16 int Age;
17 char Gender[10];
18 double EntranxeScore;
19 }add1[750], student, *pointer;//定义结构体,最大不得超过750.但我对下面的动态分配还是不清楚
20 //add1 = (char*)malloc(sizeof(struct add)*100);
21 void color(const unsigned short color1)
22 {
23 if (color1 >= 0 && color1 <= 15)
24 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color1);
25 else
26 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15);
27 }//定义一个表示颜色(0~15),当然我们也可以直接用system那种形式
28
29 void printinfor();//菜单函数
30
31 void wuyu_1();//按学号排序函数
32 void wuyu_2();//按总成绩排序函数
33
34 void function_1();//添加学生信息函数
35 void function_2();//删除学生信息函数
36 void function_3();//更改学生信息函数
37 void function_4();//查询学生信息函数
38 void function_5();//显示所有学生信息函数
39 void function_6();//附加功能选项函数
40
41 void findfunction_1();//通过学号查询函数
42 void findfunction_2();//通过学生姓名查询函数
43 void findfunction_3();//通过学生年龄查询函数
44 void findfunction_4();//通过学生分数查询函数
45
46 int main(void)
47 {
48 int num_1, k;
49 fp = fopen("D:\\studyinfor.txt", "rb+");//打开文本/创建,进行操作
50 fread(add1, sizeof(struct add), 750, fp);//读取文本储存信息
51 for (k = 0; k<750; k++)//判断文本中储存人数(Age==0表示此处无数据)
52 {
53 if (add1[k].Age == 0)
54 {
55 break;
56 }
57 count++;
58 }
59 fclose(fp);//关闭指针
60 printinfor();//显示菜单
61 while (1)//使用者操作
62 {
63 do
64 {
65 printf("请输入要进行操作的序列号:");
66 scanf("%d", &num_1);
67 } while (num_1<0 || num_1>6);
68 if (num_1 == 0)break;
69
70 switch (num_1)
71 {
72 case 1:function_1(); break;
73 case 2:function_2(); break;
74 case 3:function_3(); break;
75 case 4:function_4(); break;
76 case 5:function_5(); break;
77 case 6:function_6(); break;
78 }
79 system("cls");
80 printinfor();
81 }
82 return 0;
83 }
84
85 void checkSID(int j)//检查学号大小函数
86 {
87 while (add1[j].SID <= 0 || add1[j].SID>750)
88 {
89 color(4);
90 printf("warning:SID的取值范围在0~750,请重新输入.\n");
91 color(15);
92 printf("请输入学生的学号:");
93 scanf("%d", &add1[j].SID);
94 if (add1[j].SID > 0 && add1[j].SID <= 750)
95 {
96 break;//符合要求就结束循环
97 }
98 }
99 }
100
101 void checkSID_1(int m)//检查学号是否重复函数
102 {
103 int k;
104 for (k = 1; k < count; k++)
105 {
106 while (add1[k].SID == m)
107 {
108 color(4);
109 printf("学号重复,请重新输入.\n");//这里不知道为什么不能检查第一个是否与输入的重复
110 color(15);
111 printf("请输入学号:");
112 scanf("%d", &m);
113 }
114 }
115 }
116 //因为选择输入的方式是ab+,从新从i=0开始输入进去,所以想要通过
117 void checkName(int m, char Name[])//检查姓名函数
118 {
119 while (strlen(Name)>10)
120 {
121 color(4);
122 printf("warning:Name的字数最多为5,请重新输入.\n");
123 color(15);
124 printf("请输入学生的姓名:");
125 scanf("%s", &add1[m].Name);
126 }
127 }
128
129 void checkAge(int m)//检查年龄函数
130 {
131 while (add1[m].Age<0 || add1[m].Age>122)
132 {
133 color(4);
134 printf("warning:Age的取值范围在0~122,请重新输入,严肃对待!\n");
135 color(15);
136 printf("请输入学生的年龄:");
137 scanf("%d", &add1[m].Age);
138 }
139 }
140
141 void checkGender(int i, char a[])//检查性别函数
142 {
143 while (strcmp(a, "男") && strcmp(a, "女"))
144 {
145 color(4);
146 printf("warning:Gender只能是男或女,请重新输入.\n");
147 color(15);
148 printf("请输入学生的性别:");
149 scanf("%s", &add1[i].Gender);
150 }
151 }
152
153 checkEntranxeScore(int k)
154 {
155 while (add1[k].EntranxeScore<0 || add1[k].EntranxeScore>750)
156 {
157 color(4);
158 printf("warning:EntranxeScore的取值范围在0~750,请重新输入.\n");
159 color(15);
160 printf("请输入学生的分数:");
161 scanf("%lf", &add1[k].EntranxeScore);
162 }
163 }
164
165 void getName(char name[]) {
166 while (1) {
167 printf("请输入学生的姓名:");
168 fflush(stdin);//刷新内存,现在对为什么要刷新内存还是迷迷糊糊的
169 scanf("%s", name);
170 if (strlen(name)<10) {
171 break;
172 }
173 }
174 }//刷新内存的方式还有很多种,大家可以在网上搜一下
175
176 void printinfor()//主菜单
177 {
178 system("date /t");
179 system("TIME /t\n");//显示当前时间,也可以用预定义宏printf("Time : %s\n", __TIME__);
180 printf(" **************欢迎使用学生信息管理系统(当前有%d人)********\n", count);
181 printf(" *\t\t(1)添加学生信息\t\t\t\t*\n");
182 printf(" *\t\t(2)删除学生信息\t\t\t\t*\n");
183 printf(" *\t\t(3)更改学生信息\t\t\t\t*\n");
184 printf(" *\t\t(4)查询学生信息\t\t\t\t*\n");
185 printf(" *\t\t(5)显示所有学生信息\t\t\t*\n");
186 printf(" *\t\t(6)附加功能选项\t\t\t\t*\n");
187 printf(" *\t\t(0)退出学生系统\t\t\t\t*\n");
188 printf(" *\t\t\t\t\t 作者:liu\t*\n");
189 printf(" *********************************************************\n");
190 }
191
192 void findfunction()
193 {
194 system("cls");
195 system("date /t");
196 system("TIME /t\n");
197 printf(" ***************查询学生信息(当前有%d人)*****************\n", count);
198 printf(" *\t\t(1)通过学生学号查询 \t\t\t*\n");
199 printf("\n");
200 printf(" *\t\t(2)通过学生姓名查询 \t\t\t*\n");
201 printf("\n");
202 printf(" *\t\t(3)通过学生年龄查询 \t\t\t*\n");
203 printf("\n");
204 printf(" *\t\t(4)通过学生分数查询 \t\t\t*\n");
205 printf(" *********************************************************\n");
206 }
207
208 void Morefunction()
209 {
210 system("cls");
211 printf(" *******************附加功能*****************\n");
212 printf("\t\t\t*\t\t\t\t\t *\n");
213 printf(" *\t\t(1)按学号进行整理 \t *\n");
214 printf("\t\t\t*\t\t\t\t\t *\n");
215 printf(" *\t\t(2)按总分进行整理 \t *\n");
216 printf("\t\t\t*\t\t\t\t\t *\n");
217 color(3);
218 printf("\t\t\t*待开发... ... *\n");
219 color(15);
220 printf("\t\t\t********************************************\n");
221 }
222
223 void inputmomo(int i)
224 {
225 printf("请输入学生的学号:");
226 scanf("%d", &add1[i].SID);
227 checkSID(i);
228 checkSID_1(add1[i].SID);
229 color(8);
230 printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
231 color(15);
232 printf("请输入学生的名字:");
233 scanf("%s", &add1[i].Name);
234 checkName(i, add1[i].Name);
235 color(8);
236 printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
237 color(15);
238 printf("请输入学生的年龄:");
239 scanf("%d", &add1[i].Age);
240 checkAge(i);
241 color(8);
242 printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
243 color(15);
244 printf("请输入学生的性别:");
245 scanf("%s", &add1[i].Gender);
246 checkGender(i, add1[i].Gender);
247 color(8);
248 printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
249 color(15);
250 printf("请输入学生的总成绩:");
251 scanf("%lf", &add1[i].EntranxeScore);
252 checkEntranxeScore(i);
253 color(8);
254 printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
255 color(15);
256 }
257
258 void function_1()//添加学生信息函数
259 {
260 int n, i, m = count;
261 if ((fp = fopen("D:\\studyinfor.txt", "ab+")) == NULL)//检测文本是否正常打开
262 {
263 color(8);
264 printf("Can't open the file!");
265 color(15);
266 system("pause");
267 exit(1);
268 }
269 printf("请输入您要添加的学生信息人数:");
270 scanf("%d", &n);
271
272 for (i = count; i<n + m; i++)
273 {
274 printf("请输入No.%d的信息.\n", i + 1);
275 inputmomo(i - m);//录入学生信息
276 count++;
277 }
278 fwrite(add1, sizeof(struct add), n, fp);
279 rewind(fp);
280 color(3);
281 printf("添加中");
282 Sleep(200);
283 printf(".");
284 Sleep(300);
285 printf(".");
286 Sleep(300);
287 printf(". ");
288 Sleep(300);
289 printf(".");
290 Sleep(300);
291 printf(".");
292 Sleep(300);
293 printf(".\n");
294 color(2);
295 printf("添加成功!\n");
296 printf("学生信息目录已更新.\n");
297 fread(add1, sizeof(struct add), count, fp);//读取学生信息
298 color(15);
299 printf("___________________________________________________\n");
300 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
301 for (i = 0; i<count; i++)//打印更新的学生信息
302 {
303 if (add1[i].SID>0)
304 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
305 }
306 printf("|-------------------------------------------------|\n");
307 fclose(fp);
308 printf("按任意键返回主菜单... ....\n");
309 system("pause");
310 }
311
312 void function_2()//删除学生信息
313 {
314 int m, k, i, j = 0;
315 if ((fp = fopen("D:\\studyinfor.txt", "wb+")) == NULL)
316 {
317 printf("Can't open the file!\n");
318 system("pause");
319 exit(1);
320 }
321 if (count == 0)
322 {
323 color(4);
324 printf("The file is NULL!!!\n");
325 color(15);
326 return;
327 }
328 printf("请输入你要删除的学生的学号:");
329 scanf("%d", &m);
330 fread(add1, sizeof(struct add), count, fp);
331 for (k = 0; k<count; k++)
332 {
333 if (add1[k].SID == m)
334 {
335 printf("_____________________________________________________\n");
336 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
337 printf(" %.2d %-6s %-3d %-3s \t%5.2lf \n", add1[k].SID, add1[k].Name, add1[k].Age, add1[k].Gender, add1[k].EntranxeScore);
338 printf("|---------------------------------------------------|\n");
339 for (i = k; i<count - 1; i++)//将要删除的数后面的函数往前进一格,占去要删除的部分
340 {
341 add1[i].SID = add1[i + 1].SID;
342 strcpy(add1[i].Name, add1[i + 1].Name);
343 add1[i].Age = add1[i + 1].Age;
344 strcpy(add1[i].Gender, add1[i + 1].Gender);
345 add1[i].EntranxeScore = add1[i + 1].EntranxeScore;
346 }
347 count--;
348 fwrite(add1, sizeof(struct add), count, fp);
349 rewind(fp);//使指针回到开头
350 fclose(fp);
351 color(3);
352 printf("删除中");
353 Sleep(200);
354 printf(".");
355 Sleep(300);
356 printf(".");
357 Sleep(300);
358 printf(". ");
359 Sleep(300);
360 printf(".");
361 Sleep(300);
362 printf(".");
363 Sleep(300);
364 printf(".\n");
365 Sleep(300);
366 color(2);
367 printf("删除成功!按任意键继续... ...\n");
368 color(15);
369 j++;
370 }
371 }
372 if (j == 0)
373 {
374 color(4);
375 printf("查无此人!\n");
376 color(15);
377 }
378 system("pause");
379 }
380
381 void function_3()//更改学生信息
382 {
383 int m, k, j = 0;
384 if ((fp = fopen("D:\\studyinfor.txt", "rb+")) == NULL)
385 {
386 printf("Can't open the file!\n");
387 getch();
388 exit(1);
389 }
390 if (count == 0)
391 {
392 color(4);
393 printf("The file is NULL!!!\n");
394 color(15);
395 return;
396 }
397 printf("请输入你要更改的学生的学号:");
398 scanf("%d", &m);
399 fread(add1, sizeof(struct add), count, fp);
400 for (k = 0; k<count; k++)
401 {
402 if (add1[k].SID == m)
403 {
404 printf("_____________________________________________________\n");
405 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
406 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[k].SID, add1[k].Name, add1[k].Age, add1[k].Gender, add1[k].EntranxeScore);
407 printf("|---------------------------------------------------|\n");
408 printf("请输入你要修改的内容:\n");
409 inputmomo(k);
410 rewind(fp);
411 fwrite(add1, sizeof(struct add), count, fp);
412 //rewind(fp);
413 fclose(fp);
414 color(2);
415 printf("更改成功!按任意键继续... ...\n");
416 color(15);
417 j++;
418 }
419 }
420 if (j == 0)
421 {
422 color(4);
423 printf("查无此人!\n");
424 color(15);
425 }
426 system("pause");
427 }
428
429 void function_4()//查询学生信息
430 {
431 int m;
432 findfunction();//进入查询菜单
433 printf("请输入你查询的方式序列号:");
434 scanf("%d", &m);
435 switch (m)
436 {
437 case 1:findfunction_1(); break;
438 case 2:findfunction_2(); break;
439 case 3:findfunction_3(); break;
440 case 4:findfunction_4(); break;
441 }
442 }
443
444 void function_5()//显示所有学生信息
445 {
446 int i;
447 if ((fp = fopen("D:\\studyinfor.txt", "rb")) == NULL)
448 {
449 printf("Can't open the file!\n");
450 getch();
451 exit(1);
452 }
453 fread(add1, sizeof(struct add), count, fp);
454 if (count == 0)
455 {
456 color(4);
457 printf("The file is NULL!\n");
458 color(15);
459 system("pause");
460 return;
461 }
462 else {
463 printf("_____________________________________________________\n");
464 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
465 for (i = 0; i<count; i++)
466 {
467 if (add1[i].SID != 0)
468 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
469 }
470 printf("|---------------------------------------------------|\n");
471 }
472 fclose(fp);
473 printf("按任意键返回主菜单... ...\n");
474 system("pause");
475 }
476
477 void function_6()//附加功能选项
478 {
479 Morefunction();//附加功能
480 int k;
481 do {
482 printf("请输入你要操作的序号:");
483 scanf("%d", &k);
484 switch (k)
485 {
486 case 1:wuyu_1(); break;
487 case 2:wuyu_2(); break;
488 default:
489 {
490 color(4);
491 printf("输入有误,请重新输入!\n");
492 color(15);
493 }
494 }
495 } while (k < 1 || k>2);
496 }
497
498 void findfunction_1()//学生学号查询
499 {
500 int m, n, i, j = 0;
501 printf("请输入你要搜索的学生学号范围:\n");
502 printf("最小值:");
503 scanf("%d", &m);
504 printf("最大值:");
505 scanf("%d", &n);
506 fp = fopen("D:\\studyinfor.txt", "rb+");
507 fread(add1, sizeof(struct add), count, fp);
508 printf("_____________________________________________________\n");
509 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
510 for (i = 0; i<count; i++)
511 {
512 if (add1[i].SID >= m && add1[i].SID <= n)
513 {
514 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
515 printf("|---------------------------------------------------|\n");
516 j++;
517 }
518 }
519 if (j == 0)
520 {
521 printf("无相关学生信息.\n");
522 }
523 printf("按任意键返回主菜单... ...\n");
524 system("pause");
525 }
526
527 void findfunction_2()//学生姓名查询
528 {
529 int i, n = 0;
530 char name[10];
531 getName(name);//输入学生姓名
532 rewind(fp);
533 fp = fopen("D:\\studyinfor.txt", "rb+");
534 fread(add1, sizeof(struct add), count, fp);
535 for (i = 0; i<count; i++)
536 {
537 if (strcmp(add1[i].Name, name) == 0) {
538 printf("_____________________________________________________\n");
539 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
540 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
541 printf("|---------------------------------------------------|\n");
542 ++n;
543 break;
544 }
545 }
546 if (n == 0)
547 {
548 color(4);
549 printf("无相关学生信息!\n");
550 color(15);
551 }
552 printf("按任意键返回主菜单... ...\n");
553 system("pause");
554 }
555
556 void findfunction_3()//学生年龄查询
557 {
558 int m, n, i, j = 0;
559 printf("请输入你要查询的学生年龄范围:\n");
560 printf("最小值:");
561 scanf("%d", &m);
562 printf("最大值:");
563 scanf("%d", &n);
564 fp = fopen("D:\\studyinfor.txt", "rb+");
565 fread(add1, sizeof(struct add), count, fp);
566 printf("_____________________________________________________\n");
567 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
568 for (i = 0; i<count; i++)
569 {
570 if (add1[i].Age >= m && add1[i].Age <= n)
571 {
572 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i - 1].SID, add1[i - 1].Name, add1[i - 1].Age, add1[i - 1].Gender, add1[i - 1].EntranxeScore);
573 printf("|---------------------------------------------------|\n");
574 j++;
575 }
576 }
577 if (j == 0)
578 {
579 printf("无相关学生信息!\n");
580 }
581 printf("按任意键返回主菜单... ...\n");
582 system("pause");
583 }
584
585
586 void findfunction_4()//学生分数查询
587 {
588 int m, n, i, j = 0;
589 printf("请输入你要查询的学生总成绩范围:\n");
590 printf("最小值:");
591 scanf("%d", &m);
592 printf("最大值:");
593 scanf("%d", &n);
594 fp = fopen("D:\\studyinfor.txt", "rb+");
595 fread(add1, sizeof(struct add), count, fp);
596 printf("_____________________________________________________\n");
597 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
598 for (i = 0; i<count; i++)
599 {
600 if (add1[i].EntranxeScore >= m && add1[i].EntranxeScore <= n)
601 {
602 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
603 printf("|---------------------------------------------------|\n");
604 j++;
605 }
606 }
607 if (j == 0)
608 {
609 printf("无相关学生信息!\n");
610 }
611 printf("按任意键返回主菜单... ...\n");
612 system("pause");
613 }
614
615 void ExchangeFunction(int m, int n)//交换数据结构中两个统一结构的不同下标的结构值
616 {
617 double max = 0;
618 int max_1 = 0;
619 max = add1[m].EntranxeScore;
620 add1[m].EntranxeScore = add1[n].EntranxeScore;
621 add1[n].EntranxeScore = max;
622 max_1 = add1[m].Age;
623 add1[m].Age = add1[n].Age;
624 add1[n].Age = max_1;
625 max_1 = add1[m].SID;
626 add1[m].SID = add1[n].SID;
627 add1[n].SID = max_1;
628 strcpy(student.Gender, add1[m].Gender);
629 strcpy(add1[m].Gender, add1[n].Gender);
630 strcpy(add1[n].Gender, student.Gender);
631 strcpy(student.Name, add1[m].Name);
632 strcpy(add1[m].Name, add1[n].Name);
633 strcpy(add1[n].Name, student.Name);
634 }
635
636 void wuyu_1()//按学号查询
637 {
638 if ((fp = fopen("D:\\studyinfor.txt", "rb+")) == NULL)
639 {
640 printf("Can't open the file!\n");
641 system("PAUSE");
642 exit(1);
643 }
644 int m, n, j;
645 for (m = 0; m < count - 1; m++)//比较学号大小
646 {
647 for (n = m + 1; n < count; n++)
648 {
649 if (add1[n].SID < add1[m].SID)
650 {
651 ExchangeFunction(m, n);//交换一个结构体整体值
652 }
653 }
654 }
655 color(3);
656 printf("排序中");
657 Sleep(200);
658 printf("(");
659 Sleep(300);
660 printf(";");
661 Sleep(300);
662 printf("—");
663 Sleep(300);
664 printf("_");
665 Sleep(300);
666 printf("—");
667 Sleep(300);
668 printf(")\n");
669 Sleep(300);
670 color(6);
671 printf("排序成功!按任意键继续... ...\n");
672 color(15);
673 printf("_____________________________________________________\n");
674 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
675 for (j = 0; j<count; j++)
676 {
677 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[j].SID, add1[j].Name, add1[j].Age, add1[j].Gender, add1[j].EntranxeScore);
678 printf("|---------------------------------------------------|\n");
679 }
680 rewind(fp);
681 //fread(add1,sizeof(struct add),count,fp);
682 fwrite(add1, sizeof(struct add), count, fp);
683 fclose(fp);
684 system("pause");
685 }
686
687 void wuyu_2()//按总分排序
688 {
689 if ((fp = fopen("D:\\studyinfor.txt", "rb+")) == NULL)
690 {
691 printf("Can't open the file!\n");
692 getch();
693 exit(1);
694 }
695 int m, n, j;
696 for (m = 0; m < count - 1; m++)//比较总分大小
697 {
698 for (n = m + 1; n < count; n++)
699 {
700 if (add1[n].EntranxeScore > add1[m].EntranxeScore)
701 {
702 ExchangeFunction(m, n);//交换两个结构体整体值
703 }
704 }
705 }
706 color(3);
707 printf("排序中");
708 Sleep(200);
709 printf("(");
710 Sleep(300);
711 printf("*");
712 Sleep(300);
713 printf("— ");
714 Sleep(300);
715 printf("з");
716 Sleep(300);
717 printf("—");
718 Sleep(300);
719 printf(")\n");
720 Sleep(300);
721 color(6);
722 printf("排序成功!按任意键继续... ...\n");
723 color(15);
724 printf("_____________________________________________________\n");
725 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n");
726 for (j = 0; j<count; j++)
727 {
728 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[j].SID, add1[j].Name, add1[j].Age, add1[j].Gender, add1[j].EntranxeScore);
729 printf("|---------------------------------------------------|\n");
730 }
731 rewind(fp);
732 //fread(add1,sizeof(struct add),count,fp);加了这句,无法储存,难道会改变内部指针位置?
733 fwrite(add1, sizeof(struct add), count, fp);
734 fclose(fp);
735 system("pause");
736 }
C语言学生管理系统(原版本)(自编)
点赞
收藏