1/*系统特色:(大牛勿笑) 2 *颜色提示 3 *文字提示 4 *功能 5*/ 6 7 1 #include <stdio.h> 8 2 #include <stdlib.h> 9 3 #include <math.h> 10 4 #include <string.h> 11 5 #include <windows.h> 12 6 #include <conio.h> 13 7 14 8 FILE *fp;//定义文件指针 15 9 16 10 int count;//这个count在这个系统中起到了莫大的作用,比较参参数,规定参数范围等 17 11 18 12 struct add 19 13 { 20 14 int SID; 21 15 char Name[10]; 22 16 int Age; 23 17 char Gender[10]; 24 18 double EntranxeScore; 25 19 }add1[750], student, *pointer;//定义结构体,最大不得超过750.但我对下面的动态分配还是不清楚 26 20 //add1 = (char*)malloc(sizeof(struct add)*100); 27 21 void color(const unsigned short color1) 28 22 { 29 23 if (color1 >= 0 && color1 <= 15) 30 24 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color1); 31 25 else 32 26 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15); 33 27 }//定义一个表示颜色(0~15),当然我们也可以直接用system那种形式 34 28 35 29 void printinfor();//菜单函数 36 30 37 31 void wuyu_1();//按学号排序函数 38 32 void wuyu_2();//按总成绩排序函数 39 33 40 34 void function_1();//添加学生信息函数 41 35 void function_2();//删除学生信息函数 42 36 void function_3();//更改学生信息函数 43 37 void function_4();//查询学生信息函数 44 38 void function_5();//显示所有学生信息函数 45 39 void function_6();//附加功能选项函数 46 40 47 41 void findfunction_1();//通过学号查询函数 48 42 void findfunction_2();//通过学生姓名查询函数 49 43 void findfunction_3();//通过学生年龄查询函数 50 44 void findfunction_4();//通过学生分数查询函数 51 45 52 46 int main(void) 53 47 { 54 48 int num_1, k; 55 49 fp = fopen("D:\\studyinfor.txt", "rb+");//打开文本/创建,进行操作 56 50 fread(add1, sizeof(struct add), 750, fp);//读取文本储存信息 57 51 for (k = 0; k<750; k++)//判断文本中储存人数(Age==0表示此处无数据) 58 52 { 59 53 if (add1[k].Age == 0) 60 54 { 61 55 break; 62 56 } 63 57 count++; 64 58 } 65 59 fclose(fp);//关闭指针 66 60 printinfor();//显示菜单 67 61 while (1)//使用者操作 68 62 { 69 63 do 70 64 { 71 65 printf("请输入要进行操作的序列号:"); 72 66 scanf("%d", &num_1); 73 67 } while (num_1<0 || num_1>6); 74 68 if (num_1 == 0)break; 75 69 76 70 switch (num_1) 77 71 { 78 72 case 1:function_1(); break; 79 73 case 2:function_2(); break; 80 74 case 3:function_3(); break; 81 75 case 4:function_4(); break; 82 76 case 5:function_5(); break; 83 77 case 6:function_6(); break; 84 78 } 85 79 system("cls"); 86 80 printinfor(); 87 81 } 88 82 return 0; 89 83 } 90 84 91 85 void checkSID(int j)//检查学号大小函数 92 86 { 93 87 while (add1[j].SID <= 0 || add1[j].SID>750) 94 88 { 95 89 color(4); 96 90 printf("warning:SID的取值范围在0~750,请重新输入.\n"); 97 91 color(15); 98 92 printf("请输入学生的学号:"); 99 93 scanf("%d", &add1[j].SID); 100 94 if (add1[j].SID > 0 && add1[j].SID <= 750) 101 95 { 102 96 break;//符合要求就结束循环 103 97 } 104 98 } 105 99 } 106100 107101 void checkSID_1(int m)//检查学号是否重复函数 108102 { 109103 int k; 110104 for (k = 1; k < count; k++) 111105 { 112106 while (add1[k].SID == m) 113107 { 114108 color(4); 115109 printf("学号重复,请重新输入.\n");//这里不知道为什么不能检查第一个是否与输入的重复 116110 color(15); 117111 printf("请输入学号:"); 118112 scanf("%d", &m); 119113 } 120114 } 121115 } 122116 //因为选择输入的方式是ab+,从新从i=0开始输入进去,所以想要通过 123117 void checkName(int m, char Name[])//检查姓名函数 124118 { 125119 while (strlen(Name)>10) 126120 { 127121 color(4); 128122 printf("warning:Name的字数最多为5,请重新输入.\n"); 129123 color(15); 130124 printf("请输入学生的姓名:"); 131125 scanf("%s", &add1[m].Name); 132126 } 133127 } 134128 135129 void checkAge(int m)//检查年龄函数 136130 { 137131 while (add1[m].Age<0 || add1[m].Age>122) 138132 { 139133 color(4); 140134 printf("warning:Age的取值范围在0~122,请重新输入,严肃对待!\n"); 141135 color(15); 142136 printf("请输入学生的年龄:"); 143137 scanf("%d", &add1[m].Age); 144138 } 145139 } 146140 147141 void checkGender(int i, char a[])//检查性别函数 148142 { 149143 while (strcmp(a, "男") && strcmp(a, "女")) 150144 { 151145 color(4); 152146 printf("warning:Gender只能是男或女,请重新输入.\n"); 153147 color(15); 154148 printf("请输入学生的性别:"); 155149 scanf("%s", &add1[i].Gender); 156150 } 157151 } 158152 159153 checkEntranxeScore(int k) 160154 { 161155 while (add1[k].EntranxeScore<0 || add1[k].EntranxeScore>750) 162156 { 163157 color(4); 164158 printf("warning:EntranxeScore的取值范围在0~750,请重新输入.\n"); 165159 color(15); 166160 printf("请输入学生的分数:"); 167161 scanf("%lf", &add1[k].EntranxeScore); 168162 } 169163 } 170164 171165 void getName(char name[]) { 172166 while (1) { 173167 printf("请输入学生的姓名:"); 174168 fflush(stdin);//刷新内存,现在对为什么要刷新内存还是迷迷糊糊的 175169 scanf("%s", name); 176170 if (strlen(name)<10) { 177171 break; 178172 } 179173 } 180174 }//刷新内存的方式还有很多种,大家可以在网上搜一下 181175 182176 void printinfor()//主菜单 183177 { 184178 system("date /t"); 185179 system("TIME /t\n");//显示当前时间,也可以用预定义宏printf("Time : %s\n", __TIME__); 186180 printf(" **************欢迎使用学生信息管理系统(当前有%d人)********\n", count); 187181 printf(" *\t\t(1)添加学生信息\t\t\t\t*\n"); 188182 printf(" *\t\t(2)删除学生信息\t\t\t\t*\n"); 189183 printf(" *\t\t(3)更改学生信息\t\t\t\t*\n"); 190184 printf(" *\t\t(4)查询学生信息\t\t\t\t*\n"); 191185 printf(" *\t\t(5)显示所有学生信息\t\t\t*\n"); 192186 printf(" *\t\t(6)附加功能选项\t\t\t\t*\n"); 193187 printf(" *\t\t(0)退出学生系统\t\t\t\t*\n"); 194188 printf(" *\t\t\t\t\t 作者:liu\t*\n"); 195189 printf(" *********************************************************\n"); 196190 } 197191 198192 void findfunction() 199193 { 200194 system("cls"); 201195 system("date /t"); 202196 system("TIME /t\n"); 203197 printf(" ***************查询学生信息(当前有%d人)*****************\n", count); 204198 printf(" *\t\t(1)通过学生学号查询 \t\t\t*\n"); 205199 printf("\n"); 206200 printf(" *\t\t(2)通过学生姓名查询 \t\t\t*\n"); 207201 printf("\n"); 208202 printf(" *\t\t(3)通过学生年龄查询 \t\t\t*\n"); 209203 printf("\n"); 210204 printf(" *\t\t(4)通过学生分数查询 \t\t\t*\n"); 211205 printf(" *********************************************************\n"); 212206 } 213207 214208 void Morefunction() 215209 { 216210 system("cls"); 217211 printf(" *******************附加功能*****************\n"); 218212 printf("\t\t\t*\t\t\t\t\t *\n"); 219213 printf(" *\t\t(1)按学号进行整理 \t *\n"); 220214 printf("\t\t\t*\t\t\t\t\t *\n"); 221215 printf(" *\t\t(2)按总分进行整理 \t *\n"); 222216 printf("\t\t\t*\t\t\t\t\t *\n"); 223217 color(3); 224218 printf("\t\t\t*待开发... ... *\n"); 225219 color(15); 226220 printf("\t\t\t********************************************\n"); 227221 } 228222 229223 void inputmomo(int i) 230224 { 231225 printf("请输入学生的学号:"); 232226 scanf("%d", &add1[i].SID); 233227 checkSID(i); 234228 checkSID_1(add1[i].SID); 235229 color(8); 236230 printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"); 237231 color(15); 238232 printf("请输入学生的名字:"); 239233 scanf("%s", &add1[i].Name); 240234 checkName(i, add1[i].Name); 241235 color(8); 242236 printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"); 243237 color(15); 244238 printf("请输入学生的年龄:"); 245239 scanf("%d", &add1[i].Age); 246240 checkAge(i); 247241 color(8); 248242 printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"); 249243 color(15); 250244 printf("请输入学生的性别:"); 251245 scanf("%s", &add1[i].Gender); 252246 checkGender(i, add1[i].Gender); 253247 color(8); 254248 printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"); 255249 color(15); 256250 printf("请输入学生的总成绩:"); 257251 scanf("%lf", &add1[i].EntranxeScore); 258252 checkEntranxeScore(i); 259253 color(8); 260254 printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"); 261255 color(15); 262256 } 263257 264258 void function_1()//添加学生信息函数 265259 { 266260 int n, i, m = count; 267261 if ((fp = fopen("D:\\studyinfor.txt", "ab+")) == NULL)//检测文本是否正常打开 268262 { 269263 color(8); 270264 printf("Can't open the file!"); 271265 color(15); 272266 system("pause"); 273267 exit(1); 274268 } 275269 printf("请输入您要添加的学生信息人数:"); 276270 scanf("%d", &n); 277271 278272 for (i = count; i<n + m; i++) 279273 { 280274 printf("请输入No.%d的信息.\n", i + 1); 281275 inputmomo(i - m);//录入学生信息 282276 count++; 283277 } 284278 fwrite(add1, sizeof(struct add), n, fp); 285279 rewind(fp); 286280 color(3); 287281 printf("添加中"); 288282 Sleep(200); 289283 printf("."); 290284 Sleep(300); 291285 printf("."); 292286 Sleep(300); 293287 printf(". "); 294288 Sleep(300); 295289 printf("."); 296290 Sleep(300); 297291 printf("."); 298292 Sleep(300); 299293 printf(".\n"); 300294 color(2); 301295 printf("添加成功!\n"); 302296 printf("学生信息目录已更新.\n"); 303297 fread(add1, sizeof(struct add), count, fp);//读取学生信息 304298 color(15); 305299 printf("___________________________________________________\n"); 306300 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n"); 307301 for (i = 0; i<count; i++)//打印更新的学生信息 308302 { 309303 if (add1[i].SID>0) 310304 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore); 311305 } 312306 printf("|-------------------------------------------------|\n"); 313307 fclose(fp); 314308 printf("按任意键返回主菜单... ....\n"); 315309 system("pause"); 316310 } 317311 318312 void function_2()//删除学生信息 319313 { 320314 int m, k, i, j = 0; 321315 if ((fp = fopen("D:\\studyinfor.txt", "wb+")) == NULL) 322316 { 323317 printf("Can't open the file!\n"); 324318 system("pause"); 325319 exit(1); 326320 } 327321 if (count == 0) 328322 { 329323 color(4); 330324 printf("The file is NULL!!!\n"); 331325 color(15); 332326 return; 333327 } 334328 printf("请输入你要删除的学生的学号:"); 335329 scanf("%d", &m); 336330 fread(add1, sizeof(struct add), count, fp); 337331 for (k = 0; k<count; k++) 338332 { 339333 if (add1[k].SID == m) 340334 { 341335 printf("_____________________________________________________\n"); 342336 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n"); 343337 printf(" %.2d %-6s %-3d %-3s \t%5.2lf \n", add1[k].SID, add1[k].Name, add1[k].Age, add1[k].Gender, add1[k].EntranxeScore); 344338 printf("|---------------------------------------------------|\n"); 345339 for (i = k; i<count - 1; i++)//将要删除的数后面的函数往前进一格,占去要删除的部分 346340 { 347341 add1[i].SID = add1[i + 1].SID; 348342 strcpy(add1[i].Name, add1[i + 1].Name); 349343 add1[i].Age = add1[i + 1].Age; 350344 strcpy(add1[i].Gender, add1[i + 1].Gender); 351345 add1[i].EntranxeScore = add1[i + 1].EntranxeScore; 352346 } 353347 count--; 354348 fwrite(add1, sizeof(struct add), count, fp); 355349 rewind(fp);//使指针回到开头 356350 fclose(fp); 357351 color(3); 358352 printf("删除中"); 359353 Sleep(200); 360354 printf("."); 361355 Sleep(300); 362356 printf("."); 363357 Sleep(300); 364358 printf(". "); 365359 Sleep(300); 366360 printf("."); 367361 Sleep(300); 368362 printf("."); 369363 Sleep(300); 370364 printf(".\n"); 371365 Sleep(300); 372366 color(2); 373367 printf("删除成功!按任意键继续... ...\n"); 374368 color(15); 375369 j++; 376370 } 377371 } 378372 if (j == 0) 379373 { 380374 color(4); 381375 printf("查无此人!\n"); 382376 color(15); 383377 } 384378 system("pause"); 385379 } 386380 387381 void function_3()//更改学生信息 388382 { 389383 int m, k, j = 0; 390384 if ((fp = fopen("D:\\studyinfor.txt", "rb+")) == NULL) 391385 { 392386 printf("Can't open the file!\n"); 393387 getch(); 394388 exit(1); 395389 } 396390 if (count == 0) 397391 { 398392 color(4); 399393 printf("The file is NULL!!!\n"); 400394 color(15); 401395 return; 402396 } 403397 printf("请输入你要更改的学生的学号:"); 404398 scanf("%d", &m); 405399 fread(add1, sizeof(struct add), count, fp); 406400 for (k = 0; k<count; k++) 407401 { 408402 if (add1[k].SID == m) 409403 { 410404 printf("_____________________________________________________\n"); 411405 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n"); 412406 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[k].SID, add1[k].Name, add1[k].Age, add1[k].Gender, add1[k].EntranxeScore); 413407 printf("|---------------------------------------------------|\n"); 414408 printf("请输入你要修改的内容:\n"); 415409 inputmomo(k); 416410 rewind(fp); 417411 fwrite(add1, sizeof(struct add), count, fp); 418412 //rewind(fp); 419413 fclose(fp); 420414 color(2); 421415 printf("更改成功!按任意键继续... ...\n"); 422416 color(15); 423417 j++; 424418 } 425419 } 426420 if (j == 0) 427421 { 428422 color(4); 429423 printf("查无此人!\n"); 430424 color(15); 431425 } 432426 system("pause"); 433427 } 434428 435429 void function_4()//查询学生信息 436430 { 437431 int m; 438432 findfunction();//进入查询菜单 439433 printf("请输入你查询的方式序列号:"); 440434 scanf("%d", &m); 441435 switch (m) 442436 { 443437 case 1:findfunction_1(); break; 444438 case 2:findfunction_2(); break; 445439 case 3:findfunction_3(); break; 446440 case 4:findfunction_4(); break; 447441 } 448442 } 449443 450444 void function_5()//显示所有学生信息 451445 { 452446 int i; 453447 if ((fp = fopen("D:\\studyinfor.txt", "rb")) == NULL) 454448 { 455449 printf("Can't open the file!\n"); 456450 getch(); 457451 exit(1); 458452 } 459453 fread(add1, sizeof(struct add), count, fp); 460454 if (count == 0) 461455 { 462456 color(4); 463457 printf("The file is NULL!\n"); 464458 color(15); 465459 system("pause"); 466460 return; 467461 } 468462 else { 469463 printf("_____________________________________________________\n"); 470464 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n"); 471465 for (i = 0; i<count; i++) 472466 { 473467 if (add1[i].SID != 0) 474468 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore); 475469 } 476470 printf("|---------------------------------------------------|\n"); 477471 } 478472 fclose(fp); 479473 printf("按任意键返回主菜单... ...\n"); 480474 system("pause"); 481475 } 482476 483477 void function_6()//附加功能选项 484478 { 485479 Morefunction();//附加功能 486480 int k; 487481 do { 488482 printf("请输入你要操作的序号:"); 489483 scanf("%d", &k); 490484 switch (k) 491485 { 492486 case 1:wuyu_1(); break; 493487 case 2:wuyu_2(); break; 494488 default: 495489 { 496490 color(4); 497491 printf("输入有误,请重新输入!\n"); 498492 color(15); 499493 } 500494 } 501495 } while (k < 1 || k>2); 502496 } 503497 504498 void findfunction_1()//学生学号查询 505499 { 506500 int m, n, i, j = 0; 507501 printf("请输入你要搜索的学生学号范围:\n"); 508502 printf("最小值:"); 509503 scanf("%d", &m); 510504 printf("最大值:"); 511505 scanf("%d", &n); 512506 fp = fopen("D:\\studyinfor.txt", "rb+"); 513507 fread(add1, sizeof(struct add), count, fp); 514508 printf("_____________________________________________________\n"); 515509 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n"); 516510 for (i = 0; i<count; i++) 517511 { 518512 if (add1[i].SID >= m && add1[i].SID <= n) 519513 { 520514 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore); 521515 printf("|---------------------------------------------------|\n"); 522516 j++; 523517 } 524518 } 525519 if (j == 0) 526520 { 527521 printf("无相关学生信息.\n"); 528522 } 529523 printf("按任意键返回主菜单... ...\n"); 530524 system("pause"); 531525 } 532526 533527 void findfunction_2()//学生姓名查询 534528 { 535529 int i, n = 0; 536530 char name[10]; 537531 getName(name);//输入学生姓名 538532 rewind(fp); 539533 fp = fopen("D:\\studyinfor.txt", "rb+"); 540534 fread(add1, sizeof(struct add), count, fp); 541535 for (i = 0; i<count; i++) 542536 { 543537 if (strcmp(add1[i].Name, name) == 0) { 544538 printf("_____________________________________________________\n"); 545539 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n"); 546540 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore); 547541 printf("|---------------------------------------------------|\n"); 548542 ++n; 549543 break; 550544 } 551545 } 552546 if (n == 0) 553547 { 554548 color(4); 555549 printf("无相关学生信息!\n"); 556550 color(15); 557551 } 558552 printf("按任意键返回主菜单... ...\n"); 559553 system("pause"); 560554 } 561555 562556 void findfunction_3()//学生年龄查询 563557 { 564558 int m, n, i, j = 0; 565559 printf("请输入你要查询的学生年龄范围:\n"); 566560 printf("最小值:"); 567561 scanf("%d", &m); 568562 printf("最大值:"); 569563 scanf("%d", &n); 570564 fp = fopen("D:\\studyinfor.txt", "rb+"); 571565 fread(add1, sizeof(struct add), count, fp); 572566 printf("_____________________________________________________\n"); 573567 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n"); 574568 for (i = 0; i<count; i++) 575569 { 576570 if (add1[i].Age >= m && add1[i].Age <= n) 577571 { 578572 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); 579573 printf("|---------------------------------------------------|\n"); 580574 j++; 581575 } 582576 } 583577 if (j == 0) 584578 { 585579 printf("无相关学生信息!\n"); 586580 } 587581 printf("按任意键返回主菜单... ...\n"); 588582 system("pause"); 589583 } 590584 591585 592586 void findfunction_4()//学生分数查询 593587 { 594588 int m, n, i, j = 0; 595589 printf("请输入你要查询的学生总成绩范围:\n"); 596590 printf("最小值:"); 597591 scanf("%d", &m); 598592 printf("最大值:"); 599593 scanf("%d", &n); 600594 fp = fopen("D:\\studyinfor.txt", "rb+"); 601595 fread(add1, sizeof(struct add), count, fp); 602596 printf("_____________________________________________________\n"); 603597 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n"); 604598 for (i = 0; i<count; i++) 605599 { 606600 if (add1[i].EntranxeScore >= m && add1[i].EntranxeScore <= n) 607601 { 608602 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[i].SID, add1[i].Name, add1[i].Age, add1[i].Gender, add1[i].EntranxeScore); 609603 printf("|---------------------------------------------------|\n"); 610604 j++; 611605 } 612606 } 613607 if (j == 0) 614608 { 615609 printf("无相关学生信息!\n"); 616610 } 617611 printf("按任意键返回主菜单... ...\n"); 618612 system("pause"); 619613 } 620614 621615 void ExchangeFunction(int m, int n)//交换数据结构中两个统一结构的不同下标的结构值 622616 { 623617 double max = 0; 624618 int max_1 = 0; 625619 max = add1[m].EntranxeScore; 626620 add1[m].EntranxeScore = add1[n].EntranxeScore; 627621 add1[n].EntranxeScore = max; 628622 max_1 = add1[m].Age; 629623 add1[m].Age = add1[n].Age; 630624 add1[n].Age = max_1; 631625 max_1 = add1[m].SID; 632626 add1[m].SID = add1[n].SID; 633627 add1[n].SID = max_1; 634628 strcpy(student.Gender, add1[m].Gender); 635629 strcpy(add1[m].Gender, add1[n].Gender); 636630 strcpy(add1[n].Gender, student.Gender); 637631 strcpy(student.Name, add1[m].Name); 638632 strcpy(add1[m].Name, add1[n].Name); 639633 strcpy(add1[n].Name, student.Name); 640634 } 641635 642636 void wuyu_1()//按学号查询 643637 { 644638 if ((fp = fopen("D:\\studyinfor.txt", "rb+")) == NULL) 645639 { 646640 printf("Can't open the file!\n"); 647641 system("PAUSE"); 648642 exit(1); 649643 } 650644 int m, n, j; 651645 for (m = 0; m < count - 1; m++)//比较学号大小 652646 { 653647 for (n = m + 1; n < count; n++) 654648 { 655649 if (add1[n].SID < add1[m].SID) 656650 { 657651 ExchangeFunction(m, n);//交换一个结构体整体值 658652 } 659653 } 660654 } 661655 color(3); 662656 printf("排序中"); 663657 Sleep(200); 664658 printf("("); 665659 Sleep(300); 666660 printf(";"); 667661 Sleep(300); 668662 printf("—"); 669663 Sleep(300); 670664 printf("_"); 671665 Sleep(300); 672666 printf("—"); 673667 Sleep(300); 674668 printf(")\n"); 675669 Sleep(300); 676670 color(6); 677671 printf("排序成功!按任意键继续... ...\n"); 678672 color(15); 679673 printf("_____________________________________________________\n"); 680674 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n"); 681675 for (j = 0; j<count; j++) 682676 { 683677 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[j].SID, add1[j].Name, add1[j].Age, add1[j].Gender, add1[j].EntranxeScore); 684678 printf("|---------------------------------------------------|\n"); 685679 } 686680 rewind(fp); 687681 //fread(add1,sizeof(struct add),count,fp); 688682 fwrite(add1, sizeof(struct add), count, fp); 689683 fclose(fp); 690684 system("pause"); 691685 } 692686 693687 void wuyu_2()//按总分排序 694688 { 695689 if ((fp = fopen("D:\\studyinfor.txt", "rb+")) == NULL) 696690 { 697691 printf("Can't open the file!\n"); 698692 getch(); 699693 exit(1); 700694 } 701695 int m, n, j; 702696 for (m = 0; m < count - 1; m++)//比较总分大小 703697 { 704698 for (n = m + 1; n < count; n++) 705699 { 706700 if (add1[n].EntranxeScore > add1[m].EntranxeScore) 707701 { 708702 ExchangeFunction(m, n);//交换两个结构体整体值 709703 } 710704 } 711705 } 712706 color(3); 713707 printf("排序中"); 714708 Sleep(200); 715709 printf("("); 716710 Sleep(300); 717711 printf("*"); 718712 Sleep(300); 719713 printf("— "); 720714 Sleep(300); 721715 printf("з"); 722716 Sleep(300); 723717 printf("—"); 724718 Sleep(300); 725719 printf(")\n"); 726720 Sleep(300); 727721 color(6); 728722 printf("排序成功!按任意键继续... ...\n"); 729723 color(15); 730724 printf("_____________________________________________________\n"); 731725 printf("| 学号 | 姓名 | 年龄 | 性别 | 总分成绩 |\n"); 732726 for (j = 0; j<count; j++) 733727 { 734728 printf(" %.2d %-6s %-3d %-3s \t %5.2lf \n", add1[j].SID, add1[j].Name, add1[j].Age, add1[j].Gender, add1[j].EntranxeScore); 735729 printf("|---------------------------------------------------|\n"); 736730 } 737731 rewind(fp); 738732 //fread(add1,sizeof(struct add),count,fp);加了这句,无法储存,难道会改变内部指针位置? 739733 fwrite(add1, sizeof(struct add), count, fp); 740734 fclose(fp); 741735 system("pause"); 742736 }
C语言学生管理系统(原版本)(自编)
Wesley13
2021-10-11
1100 0 0
点赞
收藏
评论区
加载中...