C语言学生管理系统(增进版)

在原版上进行改进,主要改进的功能有。

1.利用atof:将字符串转换为浮点型;

  利用atoi:将字符串转换为整型;

原文地址:http://www.cnblogs.com/sddai/p/5774121.html

3.将结构体改变了,可能因为编码原因,只能char型输入,还好有ASCII码

4.将输出格式改变

 

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