zoukankan      html  css  js  c++  java
  • C语言学生管理系统(原版本)(自编)

    /*系统特色:(大牛勿笑)
      *颜色提示
      *文字提示
      *功能
    */
    
      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,请重新输入.
    ");
     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("学号重复,请重新输入.
    ");//这里不知道为什么不能检查第一个是否与输入的重复
    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,请重新输入.
    ");
    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,请重新输入,严肃对待!
    ");
    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只能是男或女,请重新输入.
    ");
    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,请重新输入.
    ");
    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
    ");//显示当前时间,也可以用预定义宏printf("Time : %s
    ", __TIME__);
    180     printf("            **************欢迎使用学生信息管理系统(当前有%d人)********
    ", count);
    181     printf("            *		(1)添加学生信息				*
    ");
    182     printf("            *		(2)删除学生信息				*
    ");
    183     printf("            *		(3)更改学生信息				*
    ");
    184     printf("            *		(4)查询学生信息				*
    ");
    185     printf("            *		(5)显示所有学生信息			*
    ");
    186     printf("            *		(6)附加功能选项				*
    ");
    187     printf("            *		(0)退出学生系统				*
    ");
    188     printf("            *					  作者:liu	*
    ");
    189     printf("            *********************************************************
    ");
    190 }
    191 
    192 void findfunction()
    193 {
    194     system("cls");
    195     system("date /t");
    196     system("TIME /t
    ");
    197     printf("            ***************查询学生信息(当前有%d人)*****************
    ", count);
    198     printf("            *		(1)通过学生学号查询  			*
    ");
    199     printf("
    ");
    200     printf("            *		(2)通过学生姓名查询  			*
    ");
    201     printf("
    ");
    202     printf("            *		(3)通过学生年龄查询  			*
    ");
    203     printf("
    ");
    204     printf("            *		(4)通过学生分数查询  			*
    ");
    205     printf("            *********************************************************
    ");
    206 }
    207 
    208 void Morefunction()
    209 {
    210     system("cls");
    211     printf("            *******************附加功能*****************
    ");
    212     printf("			*					   *
    ");
    213     printf("            *		(1)按学号进行整理  	   *
    ");
    214     printf("			*					   *
    ");
    215     printf("            *		(2)按总分进行整理  	   *
    ");
    216     printf("			*					   *
    ");
    217     color(3);
    218     printf("			*待开发... ...                       *
    ");
    219     color(15);
    220     printf("			********************************************
    ");
    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(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    ");
    231     color(15);
    232     printf("请输入学生的名字:");
    233     scanf("%s", &add1[i].Name);
    234     checkName(i, add1[i].Name);
    235     color(8);
    236     printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    ");
    237     color(15);
    238     printf("请输入学生的年龄:");
    239     scanf("%d", &add1[i].Age);
    240     checkAge(i);
    241     color(8);
    242     printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    ");
    243     color(15);
    244     printf("请输入学生的性别:");
    245     scanf("%s", &add1[i].Gender);
    246     checkGender(i, add1[i].Gender);
    247     color(8);
    248     printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    ");
    249     color(15);
    250     printf("请输入学生的总成绩:");
    251     scanf("%lf", &add1[i].EntranxeScore);
    252     checkEntranxeScore(i);
    253     color(8);
    254     printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    ");
    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的信息.
    ", 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(".
    ");
    294     color(2);
    295     printf("添加成功!
    ");
    296     printf("学生信息目录已更新.
    ");
    297     fread(add1, sizeof(struct add), count, fp);//读取学生信息 
    298     color(15);
    299     printf("___________________________________________________
    ");
    300     printf("| 学号 |  姓名  |  年龄  |  性别  |    总分成绩   |
    ");
    301     for (i = 0; i<count; i++)//打印更新的学生信息 
    302     {
    303         if (add1[i].SID>0)
    304             printf("   %.2d       %-6s    %-3d      %-3s  	  %5.2lf     
    ", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
    305     }
    306     printf("|-------------------------------------------------|
    ");
    307     fclose(fp);
    308     printf("按任意键返回主菜单... ....
    ");
    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!
    ");
    318         system("pause");
    319         exit(1);
    320     }
    321     if (count == 0)
    322     {
    323         color(4);
    324         printf("The file is NULL!!!
    ");
    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("_____________________________________________________
    ");
    336             printf("|  学号  |  姓名  |  年龄  |  性别  |    总分成绩   |
    ");
    337             printf("   %.2d      %-6s      %-3d      %-3s  	%5.2lf     
    ", add1[k].SID, add1[k].Name, add1[k].Age, add1[k].Gender, add1[k].EntranxeScore);
    338             printf("|---------------------------------------------------|
    ");
    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(".
    ");
    365             Sleep(300);
    366             color(2);
    367             printf("删除成功!按任意键继续... ...
    ");
    368             color(15);
    369             j++;
    370         }
    371     }
    372     if (j == 0)
    373     {
    374         color(4);
    375         printf("查无此人!
    ");
    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!
    ");
    387         getch();
    388         exit(1);
    389     }
    390     if (count == 0)
    391     {
    392         color(4);
    393         printf("The file is NULL!!!
    ");
    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("_____________________________________________________
    ");
    405             printf("|  学号  |  姓名  |  年龄  |  性别  |    总分成绩   |
    ");
    406             printf("   %.2d       %-6s    %-3d      %-3s  	  %5.2lf     
    ", add1[k].SID, add1[k].Name, add1[k].Age, add1[k].Gender, add1[k].EntranxeScore);
    407             printf("|---------------------------------------------------|
    ");
    408             printf("请输入你要修改的内容:
    ");
    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("更改成功!按任意键继续... ...
    ");
    416             color(15);
    417             j++;
    418         }
    419     }
    420     if (j == 0)
    421     {
    422         color(4);
    423         printf("查无此人!
    ");
    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!
    ");
    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!
    ");
    458         color(15);
    459         system("pause");
    460         return;
    461     }
    462     else {
    463         printf("_____________________________________________________
    ");
    464         printf("|  学号  |  姓名  |  年龄  |  性别  |    总分成绩   |
    ");
    465         for (i = 0; i<count; i++)
    466         {
    467             if (add1[i].SID != 0)
    468                 printf("   %.2d       %-6s    %-3d      %-3s  	  %5.2lf     
    ", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
    469         }
    470         printf("|---------------------------------------------------|
    ");
    471     }
    472     fclose(fp);
    473     printf("按任意键返回主菜单... ...
    ");
    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("输入有误,请重新输入!
    ");
    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("请输入你要搜索的学生学号范围:
    ");
    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("_____________________________________________________
    ");
    509     printf("|  学号  |  姓名  |  年龄  |  性别  |    总分成绩   |
    ");
    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  	  %5.2lf     
    ", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
    515             printf("|---------------------------------------------------|
    ");
    516             j++;
    517         }
    518     }
    519     if (j == 0)
    520     {
    521         printf("无相关学生信息.
    ");
    522     }
    523     printf("按任意键返回主菜单... ...
    ");
    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("_____________________________________________________
    ");
    539             printf("|  学号  |  姓名  |  年龄  |  性别  |    总分成绩   |
    ");
    540             printf("   %.2d       %-6s    %-3d      %-3s  	  %5.2lf     
    ", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
    541             printf("|---------------------------------------------------|
    ");
    542             ++n;
    543             break;
    544         }
    545     }
    546     if (n == 0)
    547     {
    548         color(4);
    549         printf("无相关学生信息!
    ");
    550         color(15);
    551     }
    552     printf("按任意键返回主菜单... ...
    ");
    553     system("pause");
    554 }
    555 
    556 void findfunction_3()//学生年龄查询 
    557 {
    558     int m, n, i, j = 0;
    559     printf("请输入你要查询的学生年龄范围:
    ");
    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("_____________________________________________________
    ");
    567     printf("|  学号  |  姓名  |  年龄  |  性别  |    总分成绩   |
    ");
    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  	  %5.2lf     
    ", add1[i - 1].SID, add1[i - 1].Name, add1[i - 1].Age, add1[i - 1].Gender, add1[i - 1].EntranxeScore);
    573             printf("|---------------------------------------------------|
    ");
    574             j++;
    575         }
    576     }
    577     if (j == 0)
    578     {
    579         printf("无相关学生信息!
    ");
    580     }
    581     printf("按任意键返回主菜单... ...
    ");
    582     system("pause");
    583 }
    584 
    585 
    586 void findfunction_4()//学生分数查询 
    587 {
    588     int m, n, i, j = 0;
    589     printf("请输入你要查询的学生总成绩范围:
    ");
    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("_____________________________________________________
    ");
    597     printf("|  学号  |  姓名  |  年龄  |  性别  |    总分成绩   |
    ");
    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  	  %5.2lf     
    ", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore);
    603             printf("|---------------------------------------------------|
    ");
    604             j++;
    605         }
    606     }
    607     if (j == 0)
    608     {
    609         printf("无相关学生信息!
    ");
    610     }
    611     printf("按任意键返回主菜单... ...
    ");
    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!
    ");
    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("");
    669     Sleep(300);
    670     color(6);
    671     printf("排序成功!按任意键继续... ...
    ");
    672     color(15);
    673     printf("_____________________________________________________
    ");
    674     printf("|  学号  |  姓名  |  年龄  |  性别  |    总分成绩   |
    ");
    675     for (j = 0; j<count; j++)
    676     {
    677         printf("   %.2d       %-6s    %-3d      %-3s  	  %5.2lf     
    ", add1[j].SID, add1[j].Name, add1[j].Age, add1[j].Gender, add1[j].EntranxeScore);
    678         printf("|---------------------------------------------------|
    ");
    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!
    ");
    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("");
    720     Sleep(300);
    721     color(6);
    722     printf("排序成功!按任意键继续... ...
    ");
    723     color(15);
    724     printf("_____________________________________________________
    ");
    725     printf("|  学号  |  姓名  |  年龄  |  性别  |    总分成绩   |
    ");
    726     for (j = 0; j<count; j++)
    727     {
    728         printf("   %.2d       %-6s    %-3d      %-3s  	  %5.2lf     
    ", add1[j].SID, add1[j].Name, add1[j].Age, add1[j].Gender, add1[j].EntranxeScore);
    729         printf("|---------------------------------------------------|
    ");
    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 }
     
  • 相关阅读:
    URLProtocol服务协议
    ODBC、OLEDB和ADO之间的关系 ,以及性能比较
    如何在VS2015查看C#界面窗体里的控件层次
    SpeechVoiceSpeakFlags枚举类型的详细解释
    SQL中遇到多条相同内容只取一条的最简单实现方法
    flink elasticsearch sink table 忽略部分字段开发
    flink elasticsearch source table 集成elasticsearch-hadoop connector开发
    记一次python 协程给合多线程死锁问题
    kubernetes gitlab runner java maven ci/cd 整体方案示例
    某云elasticsearch节点失效,手动重置primary,迁移分区
  • 原文地址:https://www.cnblogs.com/Mayfly-nymph/p/8195858.html
Copyright © 2011-2022 走看看