鱼C论坛

 找回密码
 立即注册
查看: 1135|回复: 3

[已解决]为什么main()里面的判断进不去

[复制链接]
发表于 2019-3-5 14:39:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我自己试着编写一个简单的学生成绩查询系统。
现在main()函数里面的判断进不去。
进去了,5、6、7、8进去也会闪退。
哪位有空能帮我找一下原因吗?
最佳答案
2019-3-5 18:48:30
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. /*定义学生结构*/
  5. struct Student
  6. {
  7.         char ID[20];                //学号
  8.         char NAME[20];                //姓名

  9.         //语文、数学、英语 成绩
  10.         float C_Score;
  11.         float M_Score;
  12.         float E_Score;

  13.         float CME_Score;        //总分数
  14. };

  15. /*声明学生数组和数量*/
  16. struct Student Students[1000];
  17. int num = 0;

  18. /*通过学号返回数组下标*/
  19. int Student_SearchByIndex(char id[])
  20. {
  21.         int i  , r            ;
  22.         r = -1                ;
  23.         for (i = 0 ; i < num ; i ++) {
  24.                 if (! strcmp(Students[i].ID, id)) {
  25.                         r = i ;
  26.                         break ;
  27.                 }
  28.         }
  29.         return r              ;
  30. }

  31. /*通过姓名返回数组下标*/
  32. int Student_SearchByName(char name[])
  33. {
  34.         int j , r             ;
  35.         r = -1                ;
  36.         for (j = 0 ; j < num ; j ++) {
  37.                 if (! strcmp(Students[j].NAME , name)) {
  38.                         r = j ;
  39.                         break ;
  40.                 }
  41.         }
  42.         return r              ;
  43. }

  44. /*显示单条学生信息*/
  45. void Student_DisplaySingle_Score(int index)
  46. {
  47.         if(num > 0) {
  48.                 if(index >= 0 && index <= num - 1) {
  49.                         printf("学号:%10s\n", Students[index].ID)            ;
  50.                         printf("姓名:%10s\n", Students[index].NAME)          ;
  51.                         printf("语文成绩:%4f\n", Students[index].C_Score)    ;
  52.                         printf("数学成绩:%4f\n", Students[index].M_Score)    ;
  53.                         printf("英语成绩:%4f\n", Students[index].E_Score)    ;
  54.                         printf("成绩总和:%4f\n", Students[index].CME_Score)  ;
  55.                         printf("-----------------------------------------\n") ;
  56.                 } else {
  57.                         printf("序号越界!\n")                                ;
  58.                 }
  59.         } else {
  60.                 printf("空数据表!\n")                                        ;
  61.         }
  62. }

  63. /***新增学生记录***/
  64. void Student_Insert()
  65. {
  66.         char c                                                          ;
  67.         while (1) {
  68.                 printf("请输入该学生学号:")                            ;
  69.                 scanf("%s", &Students[num].ID)                          ;
  70.                 printf("请输入该学生姓名:")                            ;
  71.                 scanf("%s", &Students[num].NAME)                        ;
  72.                 printf("请输入该学生语文成绩:")                        ;
  73.                 scanf("%f", &Students[num].C_Score)                     ;
  74.                 printf("请输入该学生数学成绩:")                        ;
  75.                 scanf("%f", &Students[num].M_Score)                     ;
  76.                 printf("请输入该学生英语成绩:")                        ;
  77.                 scanf("%f", &Students[num].E_Score)                     ;
  78.                 printf("该学生总成绩为:")                              ;
  79.                 scanf("%f", &Students[num].CME_Score)                   ;
  80.                 fflush(stdin)                                           ;
  81.                 num ++                                                  ;

  82.                 printf("是否继续?(Y/N),继续请按任意键,否则输入N:") ;
  83.                 c = getchar()                                           ;
  84.                 if (c == 'N' || c == 'n') break                         ;
  85.         }

  86. }

  87. /***修改学生信息***/
  88. void Student_Modify()
  89. {
  90.         char id[20] , c                                                                 ;
  91.         int index                                                                       ;

  92.         if(num > 0) {      
  93.                 while (1) {
  94.                         printf("请输入学生学号:")                                      ;
  95.                         scanf("%s" , & id)                                              ;
  96.                         fflush(stdin)                                                   ;
  97.                         index = Student_SearchByIndex(id)                               ;
  98.                         if (index == -1) printf("该学生不存在!")                       ;
  99.                         else {
  100.                                 printf("您要修改的学生信息为:")                        ;
  101.                                 Student_DisplaySingle_Score(index)                      ;
  102.                                 printf("---请输入新值---")                              ;
  103.                                 printf("请输入该学生学号:")                            ;
  104.                                 scanf("%s", Students[index].ID)                         ;
  105.                                 printf("请输入该学生姓名:")                            ;
  106.                                 scanf("%s", Students[index].NAME)                       ;
  107.                                 printf("请输入该学生语文成绩:")                        ;
  108.                                 scanf("%f", Students[index].C_Score)                    ;
  109.                                 printf("请输入该学生数学成绩:")                        ;
  110.                                 scanf("%f", Students[index].M_Score)                    ;
  111.                                 printf("请输入该学生英语成绩:")                        ;
  112.                                 scanf("%f", Students[index].E_Score)                    ;
  113.                                 fflush(stdin)                                           ;
  114.                                 printf("是否继续?(Y/N),继续请按任意键,否则输入N:") ;
  115.                                 c = getchar()                                           ;
  116.                                 if (c == 'N' || c == 'n') break                         ;
  117.                         }
  118.                 }
  119.         } else {
  120.                 printf("空数据表!\n")                                                  ;
  121.         }
  122. }

  123. /***del学生信息***/
  124. void Student_Delete()
  125. {
  126.         int i , j , index                                                                                      ;
  127.         char id[20] , name[20] , c                                                                             ;
  128.         if(num > 0) {
  129.                 while (1) {
  130.                         printf("请输入学生学号:")                                                             ;
  131.                         scanf("%s" , & id)                                                                     ;
  132.                         fflush(stdin)                                                                          ;
  133.                         index = Student_SearchByIndex(id)                                                      ;
  134.                         if (index == -1) printf("该学生不存在!")                                              ;
  135.                         else {
  136.                                 printf("您要删除的学生信息为:")                                               ;
  137.                                 Student_DisplaySingle_Score(index)                                             ;
  138.                                 printf("是否真的要删除?(Y/N)")                                              ;
  139.                                 c = getchar()                                                                  ;
  140.                                 if (c == 'Y' || c == 'y') {
  141.                                         if (index < num - 1) {
  142.                                                 for (i = index ; i < num ; i ++) Students[i] = Students[i + 1] ;
  143.                                         }
  144.                                         num --                                                                 ;
  145.                                 }
  146.                                 printf("删除成功。")                                                           ;
  147.                         }
  148.                         printf("是否继续?(Y/N),继续请按任意键,否则输入 N:")                               ;
  149.                         c = getchar()                                                                          ;
  150.                         if (c == 'N' || c == 'n') break                                                        ;
  151.                 }
  152.         } else {
  153.                 printf("空数据表!\n")                                                                         ;
  154.         }
  155. }

  156. /***查询学生信息***/
  157. void Student_Select()
  158. {
  159.         int index                                                  ;
  160.         char id[20] , c                                            ;        
  161.         if(num > 0) {
  162.                 while (1) {
  163.                         printf("请输入查询学生的学号:")           ;
  164.                         scanf("%s", id)                            ;
  165.                         fflush(stdin)                              ;
  166.                         index = Student_SearchByIndex(id)          ;
  167.                         if (index == -1) printf("该学生不存在!")  ;
  168.                         else {
  169.                                 printf("你需要查询的信息为:")     ;
  170.                                 Student_DisplaySingle_Score(index) ;
  171.                         }
  172.                         printf("是否继续?(Y/N),继续请按任意键,否则输入N:");
  173.                         c = getchar()                              ;
  174.                         if (c == 'N' || c== 'n') break             ;
  175.                 }
  176.         } else {
  177.                 printf("空数据表!\n")                             ;
  178.         }
  179. }

  180. /***单个成绩排序***/

  181. /**---C---**/
  182. void Student_Sort_C()
  183. {
  184.         int i , j ;
  185.         struct Student tmp                                    ;

  186.         for (i = 1 ; i < num ; i ++) {
  187.                 j = i                                         ;
  188.                 while (j > 0) {
  189.                         if (Students[j - 1] . C_Score < Students[j] . C_Score) {
  190.                                 tmp = Students[j - 1]         ;
  191.                                 Students[j - 1] = Students[j] ;
  192.                                 Students[j] = tmp             ;
  193.                                 j --                          ;
  194.                         } else break                          ;
  195.                 }
  196.         }
  197. }

  198. /**---M---**/
  199. void Student_Sort_M()
  200. {
  201.         int i , j          ;
  202.         struct Student tmp ;

  203.         for (i = 1 ; i < num ; i ++) {
  204.                 j = i                                         ;
  205.                 while(j > 0) {
  206.                         if (Students[j - 1] . M_Score < Students[j] . M_Score) {
  207.                                 tmp = Students[j - 1]         ;
  208.                                 Students[j - 1] = Students[j] ;
  209.                                 Students[j] = tmp             ;
  210.                                 j --                          ;
  211.                         } else break                          ;
  212.                 }
  213.         }
  214. }

  215. /**---E---**/
  216. void Student_Sort_E()
  217. {
  218.         int i , j                                             ;
  219.         struct Student tmp                                    ;

  220.         for (i = 1 ; i < num ; i ++) {
  221.                 j = i                                         ;
  222.                 while(j > 0) {
  223.                         if (Students[j - 1] . E_Score < Students[j] . E_Score) {
  224.                                 tmp = Students[j - 1]         ;
  225.                                 Students[j - 1] = Students[j] ;
  226.                                 Students[j] = tmp             ;
  227.                                 j --                          ;
  228.                         } else break                          ;
  229.                 }
  230.         }
  231. }

  232. /**总成绩排序**/
  233. void Student_Sort_CME()
  234. {
  235.         int  i , j                                            ;
  236.         struct Student tmp                                    ;
  237.         for (i = 1 ; i < num ; i ++) {
  238.                 j = i                                         ;
  239.                 while (j > 0) {
  240.                         if (Students[j - 1] . CME_Score < Students[j] . CME_Score) {
  241.                                 tmp = Students[j - 1]         ;
  242.                                 Students[j - 1] = Students[j] ;
  243.                                 Students[j] = tmp             ;
  244.                                 j --                          ;
  245.                         } else break                          ;
  246.                 }
  247.         }
  248. }

  249. /***显示所有学生信息***/
  250. void Student_display()
  251. {
  252.         int i                                                         ;
  253.         for (i = 0 ; i < num ; i ++) {
  254.                 Student_DisplaySingle_Score(i)                        ;
  255.                 printf("-----------------------------------------\n") ;
  256.         }
  257. }

  258. /***从文件Student_info.txt中读取学生信息***/
  259. Read_Student_info()
  260. {
  261.         FILE * fp                                                                                            ;
  262.         int i , r                                                                                            ;
  263.         r = -1                                                                                               ;
  264.         if ((fp = fopen("Student_info.txt", "rb")) != NULL) {
  265.                 if (fread(& num , sizeof(int) , 1 , fp) == 1) {
  266.                         for (i = 0 ; i < num ; i ++) fread(& Students[i] , sizeof(struct Student) , 1 , fp)  ;
  267.                         r = 0                                                                                ;
  268.                 } else fprintf(stderr , "文件读取错误!\n")                                                  ;
  269.                 fclose(fp)                                                                                   ;
  270.         } else fprintf(stderr , "不能打开文件!\n")                                                          ;
  271.         return r                                                                                             ;
  272. }

  273. /****将学生信息写入Student_info.txt文件中****/

  274. Write_Student_info()
  275. {
  276.         FILE * fp                                                                                         ;
  277.         int i , r                                                                                         ;
  278.         r = -1                                                                                            ;
  279.         if ((fp = fopen("Student_info.txt", "wb")) != NULL) {
  280.                 if (fwrite(& num , sizeof(int) , 1 , fp) == 1) {
  281.                         for (i = 0; i < num; i ++) fwrite(&Students[i] , sizeof(struct Student) , 1 , fp) ;
  282.                         r = 0                                                                             ;
  283.                 } else fprintf(stderr , "文件写入错误!\n")                                               ;
  284.                 fclose(fp)                                                                                ;
  285.         } else fprintf(stderr , "不能打开文件!\n")                                                       ;
  286.         return r                                                                                          ;
  287. }

  288. main(void)
  289. {
  290.         int chile                                                    ;
  291.         float fute                                                   ;
  292.         Read_Student_info()                                          ;
  293.         char c                                                       ;
  294.         bool f                                                       ;

  295.         f = true                                                     ;
  296.         printf("请选择当前的职业(A:老师  B:学生):")             ;
  297.         c = getchar()                                                ;
  298.         if (c == 'A' || c == 'a') {
  299.                 while(f) {
  300.                         printf("*************学生成绩管理系统************\n");
  301.                         printf(" 1.新增学生记录.\n")                         ;
  302.                         printf(" 2.修改学生记录.\n")                         ;
  303.                         printf(" 3.删除学生记录.\n")                         ;
  304.                         printf(" 4.查询学生记录.\n")                         ;
  305.                         printf(" 5.按语文成绩排序.\n")                       ;
  306.                         printf(" 6.按数学成绩排序.\n")                       ;
  307.                         printf(" 7.按英语成绩排序.\n")                       ;
  308.                         printf(" 8.按三科总分成绩排序.\n")                   ;
  309.                         printf(" 9.显示所有学生信息.\n")                     ;
  310.                         printf("10.退出.\n")                                 ;

  311.                         printf("请选择(1~10):")                           ;
  312.                         scanf("%d", & chile)                                 ;
  313.                         fflush(stdin)                                        ;

  314.                         switch (chile) {
  315.                         case 1:
  316.                                 Student_Insert()                             ;
  317.                                 break                                        ;
  318.                         case 2:
  319.                                 Student_Modify()                              ;
  320.                                 break                                         ;
  321.                         case 3:
  322.                                 Student_Delete()                              ;
  323.                                 break                                         ;
  324.                         case 4:
  325.                                 Student_Select()                              ;
  326.                                 break                                         ;
  327.                         case 5:
  328.                                 Student_Sort_C()                              ;
  329.                                 break                                         ;
  330.                         case 6:
  331.                                 Student_Sort_M()                              ;
  332.                                 break                                         ;
  333.                         case 7:
  334.                                 Student_Sort_E()                              ;
  335.                                 break                                         ;
  336.                         case 8:
  337.                                 Student_Sort_CME()                            ;
  338.                                 break                                         ;
  339.                         case 9:
  340.                                 Student_display()                             ;
  341.                                 break                                         ;
  342.                         case 10:
  343.                                 f = false                                     ;
  344.                                 break                                         ;

  345.                         }
  346.                         Write_Student_info()                                  ;
  347.                 }
  348.         } else Student_Select()                                       ;
  349. }
复制代码

学生成绩查询.rar

1.93 KB, 下载次数: 6

代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-3-5 15:45:12 | 显示全部楼层
你判断的地方getchar()=="A"用了双引号,应该用单引号,建议改成这样
char c = getchar();
        if (c == 'A'||c == 'a')
然后下面的else if(c=='B'||C=='b')
这样比较合理点,判断到其他字符可以让使用者从新输入,这样比较合理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-5 18:48:30 | 显示全部楼层    本楼为最佳答案   
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. /*定义学生结构*/
  5. struct Student
  6. {
  7.         char ID[20];                //学号
  8.         char NAME[20];                //姓名

  9.         //语文、数学、英语 成绩
  10.         float C_Score;
  11.         float M_Score;
  12.         float E_Score;

  13.         float CME_Score;        //总分数
  14. };

  15. /*声明学生数组和数量*/
  16. struct Student Students[1000];
  17. int num = 0;

  18. /*通过学号返回数组下标*/
  19. int Student_SearchByIndex(char id[])
  20. {
  21.         int i  , r            ;
  22.         r = -1                ;
  23.         for (i = 0 ; i < num ; i ++) {
  24.                 if (! strcmp(Students[i].ID, id)) {
  25.                         r = i ;
  26.                         break ;
  27.                 }
  28.         }
  29.         return r              ;
  30. }

  31. /*通过姓名返回数组下标*/
  32. int Student_SearchByName(char name[])
  33. {
  34.         int j , r             ;
  35.         r = -1                ;
  36.         for (j = 0 ; j < num ; j ++) {
  37.                 if (! strcmp(Students[j].NAME , name)) {
  38.                         r = j ;
  39.                         break ;
  40.                 }
  41.         }
  42.         return r              ;
  43. }

  44. /*显示单条学生信息*/
  45. void Student_DisplaySingle_Score(int index)
  46. {
  47.         if(num > 0) {
  48.                 if(index >= 0 && index <= num - 1) {
  49.                         printf("学号:%10s\n", Students[index].ID)            ;
  50.                         printf("姓名:%10s\n", Students[index].NAME)          ;
  51.                         printf("语文成绩:%4f\n", Students[index].C_Score)    ;
  52.                         printf("数学成绩:%4f\n", Students[index].M_Score)    ;
  53.                         printf("英语成绩:%4f\n", Students[index].E_Score)    ;
  54.                         printf("成绩总和:%4f\n", Students[index].CME_Score)  ;
  55.                         printf("-----------------------------------------\n") ;
  56.                 } else {
  57.                         printf("序号越界!\n")                                ;
  58.                 }
  59.         } else {
  60.                 printf("空数据表!\n")                                        ;
  61.         }
  62. }

  63. /***新增学生记录***/
  64. void Student_Insert()
  65. {
  66.         char c                                                          ;
  67.         while (1) {
  68.                 printf("请输入该学生学号:")                            ;
  69.                 scanf("%s", &Students[num].ID)                          ;
  70.                 printf("请输入该学生姓名:")                            ;
  71.                 scanf("%s", &Students[num].NAME)                        ;
  72.                 printf("请输入该学生语文成绩:")                        ;
  73.                 scanf("%f", &Students[num].C_Score)                     ;
  74.                 printf("请输入该学生数学成绩:")                        ;
  75.                 scanf("%f", &Students[num].M_Score)                     ;
  76.                 printf("请输入该学生英语成绩:")                        ;
  77.                 scanf("%f", &Students[num].E_Score)                     ;
  78.                 printf("该学生总成绩为:")                              ;
  79.                 scanf("%f", &Students[num].CME_Score)                   ;
  80.                 fflush(stdin)                                           ;
  81.                 num ++                                                  ;

  82.                 printf("是否继续?(Y/N),继续请按任意键,否则输入N:") ;
  83.                 c = getchar()                                           ;
  84.                 if (c == 'N' || c == 'n') break                         ;
  85.         }

  86. }

  87. /***修改学生信息***/
  88. void Student_Modify()
  89. {
  90.         char id[20] , c                                                                 ;
  91.         int index                                                                       ;

  92.         if(num > 0) {      
  93.                 while (1) {
  94.                         printf("请输入学生学号:")                                      ;
  95.                         scanf("%s" , & id)                                              ;
  96.                         fflush(stdin)                                                   ;
  97.                         index = Student_SearchByIndex(id)                               ;
  98.                         if (index == -1) printf("该学生不存在!")                       ;
  99.                         else {
  100.                                 printf("您要修改的学生信息为:")                        ;
  101.                                 Student_DisplaySingle_Score(index)                      ;
  102.                                 printf("---请输入新值---")                              ;
  103.                                 printf("请输入该学生学号:")                            ;
  104.                                 scanf("%s", Students[index].ID)                         ;
  105.                                 printf("请输入该学生姓名:")                            ;
  106.                                 scanf("%s", Students[index].NAME)                       ;
  107.                                 printf("请输入该学生语文成绩:")                        ;
  108.                                 scanf("%f", Students[index].C_Score)                    ;
  109.                                 printf("请输入该学生数学成绩:")                        ;
  110.                                 scanf("%f", Students[index].M_Score)                    ;
  111.                                 printf("请输入该学生英语成绩:")                        ;
  112.                                 scanf("%f", Students[index].E_Score)                    ;
  113.                                 fflush(stdin)                                           ;
  114.                                 printf("是否继续?(Y/N),继续请按任意键,否则输入N:") ;
  115.                                 c = getchar()                                           ;
  116.                                 if (c == 'N' || c == 'n') break                         ;
  117.                         }
  118.                 }
  119.         } else {
  120.                 printf("空数据表!\n")                                                  ;
  121.         }
  122. }

  123. /***del学生信息***/
  124. void Student_Delete()
  125. {
  126.         int i , j , index                                                                                      ;
  127.         char id[20] , name[20] , c                                                                             ;
  128.         if(num > 0) {
  129.                 while (1) {
  130.                         printf("请输入学生学号:")                                                             ;
  131.                         scanf("%s" , & id)                                                                     ;
  132.                         fflush(stdin)                                                                          ;
  133.                         index = Student_SearchByIndex(id)                                                      ;
  134.                         if (index == -1) printf("该学生不存在!")                                              ;
  135.                         else {
  136.                                 printf("您要删除的学生信息为:")                                               ;
  137.                                 Student_DisplaySingle_Score(index)                                             ;
  138.                                 printf("是否真的要删除?(Y/N)")                                              ;
  139.                                 c = getchar()                                                                  ;
  140.                                 if (c == 'Y' || c == 'y') {
  141.                                         if (index < num - 1) {
  142.                                                 for (i = index ; i < num ; i ++) Students[i] = Students[i + 1] ;
  143.                                         }
  144.                                         num --                                                                 ;
  145.                                 }
  146.                                 printf("删除成功。")                                                           ;
  147.                         }
  148.                         printf("是否继续?(Y/N),继续请按任意键,否则输入 N:")                               ;
  149.                         c = getchar()                                                                          ;
  150.                         if (c == 'N' || c == 'n') break                                                        ;
  151.                 }
  152.         } else {
  153.                 printf("空数据表!\n")                                                                         ;
  154.         }
  155. }

  156. /***查询学生信息***/
  157. void Student_Select()
  158. {
  159.         int index                                                  ;
  160.         char id[20] , c                                            ;        
  161.         if(num > 0) {
  162.                 while (1) {
  163.                         printf("请输入查询学生的学号:")           ;
  164.                         scanf("%s", id)                            ;
  165.                         fflush(stdin)                              ;
  166.                         index = Student_SearchByIndex(id)          ;
  167.                         if (index == -1) printf("该学生不存在!")  ;
  168.                         else {
  169.                                 printf("你需要查询的信息为:")     ;
  170.                                 Student_DisplaySingle_Score(index) ;
  171.                         }
  172.                         printf("是否继续?(Y/N),继续请按任意键,否则输入N:");
  173.                         c = getchar()                              ;
  174.                         if (c == 'N' || c== 'n') break             ;
  175.                 }
  176.         } else {
  177.                 printf("空数据表!\n")                             ;
  178.         }
  179. }

  180. /***单个成绩排序***/

  181. /**---C---**/
  182. void Student_Sort_C()
  183. {
  184.         int i , j ;
  185.         struct Student tmp                                    ;

  186.         for (i = 1 ; i < num ; i ++) {
  187.                 j = i                                         ;
  188.                 while (j > 0) {
  189.                         if (Students[j - 1] . C_Score < Students[j] . C_Score) {
  190.                                 tmp = Students[j - 1]         ;
  191.                                 Students[j - 1] = Students[j] ;
  192.                                 Students[j] = tmp             ;
  193.                                 j --                          ;
  194.                         } else break                          ;
  195.                 }
  196.         }
  197. }

  198. /**---M---**/
  199. void Student_Sort_M()
  200. {
  201.         int i , j          ;
  202.         struct Student tmp ;

  203.         for (i = 1 ; i < num ; i ++) {
  204.                 j = i                                         ;
  205.                 while(j > 0) {
  206.                         if (Students[j - 1] . M_Score < Students[j] . M_Score) {
  207.                                 tmp = Students[j - 1]         ;
  208.                                 Students[j - 1] = Students[j] ;
  209.                                 Students[j] = tmp             ;
  210.                                 j --                          ;
  211.                         } else break                          ;
  212.                 }
  213.         }
  214. }

  215. /**---E---**/
  216. void Student_Sort_E()
  217. {
  218.         int i , j                                             ;
  219.         struct Student tmp                                    ;

  220.         for (i = 1 ; i < num ; i ++) {
  221.                 j = i                                         ;
  222.                 while(j > 0) {
  223.                         if (Students[j - 1] . E_Score < Students[j] . E_Score) {
  224.                                 tmp = Students[j - 1]         ;
  225.                                 Students[j - 1] = Students[j] ;
  226.                                 Students[j] = tmp             ;
  227.                                 j --                          ;
  228.                         } else break                          ;
  229.                 }
  230.         }
  231. }

  232. /**总成绩排序**/
  233. void Student_Sort_CME()
  234. {
  235.         int  i , j                                            ;
  236.         struct Student tmp                                    ;
  237.         for (i = 1 ; i < num ; i ++) {
  238.                 j = i                                         ;
  239.                 while (j > 0) {
  240.                         if (Students[j - 1] . CME_Score < Students[j] . CME_Score) {
  241.                                 tmp = Students[j - 1]         ;
  242.                                 Students[j - 1] = Students[j] ;
  243.                                 Students[j] = tmp             ;
  244.                                 j --                          ;
  245.                         } else break                          ;
  246.                 }
  247.         }
  248. }

  249. /***显示所有学生信息***/
  250. void Student_display()
  251. {
  252.         int i                                                         ;
  253.         for (i = 0 ; i < num ; i ++) {
  254.                 Student_DisplaySingle_Score(i)                        ;
  255.                 printf("-----------------------------------------\n") ;
  256.         }
  257. }

  258. /***从文件Student_info.txt中读取学生信息***/
  259. Read_Student_info()
  260. {
  261.         FILE * fp                                                                                            ;
  262.         int i , r                                                                                            ;
  263.         r = -1                                                                                               ;
  264.         if ((fp = fopen("Student_info.txt", "rb")) != NULL) {
  265.                 if (fread(& num , sizeof(int) , 1 , fp) == 1) {
  266.                         for (i = 0 ; i < num ; i ++) fread(& Students[i] , sizeof(struct Student) , 1 , fp)  ;
  267.                         r = 0                                                                                ;
  268.                 } else fprintf(stderr , "文件读取错误!\n")                                                  ;
  269.                 fclose(fp)                                                                                   ;
  270.         } else fprintf(stderr , "不能打开文件!\n")                                                          ;
  271.         return r                                                                                             ;
  272. }

  273. /****将学生信息写入Student_info.txt文件中****/

  274. Write_Student_info()
  275. {
  276.         FILE * fp                                                                                         ;
  277.         int i , r                                                                                         ;
  278.         r = -1                                                                                            ;
  279.         if ((fp = fopen("Student_info.txt", "wb")) != NULL) {
  280.                 if (fwrite(& num , sizeof(int) , 1 , fp) == 1) {
  281.                         for (i = 0; i < num; i ++) fwrite(&Students[i] , sizeof(struct Student) , 1 , fp) ;
  282.                         r = 0                                                                             ;
  283.                 } else fprintf(stderr , "文件写入错误!\n")                                               ;
  284.                 fclose(fp)                                                                                ;
  285.         } else fprintf(stderr , "不能打开文件!\n")                                                       ;
  286.         return r                                                                                          ;
  287. }

  288. main(void)
  289. {
  290.         int chile                                                    ;
  291.         float fute                                                   ;
  292.         Read_Student_info()                                          ;
  293.         char c                                                       ;
  294.         bool f                                                       ;

  295.         f = true                                                     ;
  296.         printf("请选择当前的职业(A:老师  B:学生):")             ;
  297.         c = getchar()                                                ;
  298.         if (c == 'A' || c == 'a') {
  299.                 while(f) {
  300.                         printf("*************学生成绩管理系统************\n");
  301.                         printf(" 1.新增学生记录.\n")                         ;
  302.                         printf(" 2.修改学生记录.\n")                         ;
  303.                         printf(" 3.删除学生记录.\n")                         ;
  304.                         printf(" 4.查询学生记录.\n")                         ;
  305.                         printf(" 5.按语文成绩排序.\n")                       ;
  306.                         printf(" 6.按数学成绩排序.\n")                       ;
  307.                         printf(" 7.按英语成绩排序.\n")                       ;
  308.                         printf(" 8.按三科总分成绩排序.\n")                   ;
  309.                         printf(" 9.显示所有学生信息.\n")                     ;
  310.                         printf("10.退出.\n")                                 ;

  311.                         printf("请选择(1~10):")                           ;
  312.                         scanf("%d", & chile)                                 ;
  313.                         fflush(stdin)                                        ;

  314.                         switch (chile) {
  315.                         case 1:
  316.                                 Student_Insert()                             ;
  317.                                 break                                        ;
  318.                         case 2:
  319.                                 Student_Modify()                              ;
  320.                                 break                                         ;
  321.                         case 3:
  322.                                 Student_Delete()                              ;
  323.                                 break                                         ;
  324.                         case 4:
  325.                                 Student_Select()                              ;
  326.                                 break                                         ;
  327.                         case 5:
  328.                                 Student_Sort_C()                              ;
  329.                                 break                                         ;
  330.                         case 6:
  331.                                 Student_Sort_M()                              ;
  332.                                 break                                         ;
  333.                         case 7:
  334.                                 Student_Sort_E()                              ;
  335.                                 break                                         ;
  336.                         case 8:
  337.                                 Student_Sort_CME()                            ;
  338.                                 break                                         ;
  339.                         case 9:
  340.                                 Student_display()                             ;
  341.                                 break                                         ;
  342.                         case 10:
  343.                                 f = false                                     ;
  344.                                 break                                         ;

  345.                         }
  346.                         Write_Student_info()                                  ;
  347.                 }
  348.         } else Student_Select()                                       ;
  349. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-3-6 09:55:59 | 显示全部楼层

?哪里修改了,能指出来吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-3 03:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表