系统运维
8989
/*系统特色:(大牛勿笑) *颜色提示 *文字提示 *功能 */ 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 }