鱼C论坛

 找回密码
 立即注册
查看: 1798|回复: 1

[已解决]学生成绩管理系统读取功能有问题大佬们帮忙看看

[复制链接]
发表于 2019-12-13 09:33:30 | 显示全部楼层 |阅读模式
25鱼币
保存功能可以运行使用,但读取时候只能读取出学号和姓名,没法读取出成绩
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4. #define MAX_COUNT 100

  5. typedef struct
  6. {
  7.         char num[20];//学号
  8.         char name[20];//姓名
  9.         float score_yuwen;//语文成绩
  10.         float score_shuxue;//数学成绩
  11.         float score_yingyu;//英语成绩
  12.         float score_wuli;//物理成绩
  13.         float score_huaxue;//化学成绩
  14. } Student;

  15. Student stu[MAX_COUNT];
  16. int total=0;

  17. void clear_enter()
  18. { //清理回车
  19.         char mistake[20];
  20.         gets(mistake);
  21. }

  22. void return_menu()
  23. {
  24.         printf("按回车键返回主菜单...\n");
  25.         clear_enter();
  26. }

  27. void add_Student()
  28. { //录入学生信息
  29.     int i;
  30.         printf("请输入学生成绩信息:\n");
  31.         printf("学号  姓名  语文  数学  英语  物理  化学\n");
  32.         scanf("%s%s%f%f%f%f%f",stu[total].num,stu[total].name,&stu[total].score_yuwen,&stu[total].score_shuxue,&stu[total].score_yingyu,&stu[total].score_wuli,&stu[total].score_huaxue);
  33.         clear_enter();
  34.         printf("学生成绩信息录入中...\n");
  35.         sleep(1);
  36.         printf("学生成绩信息已录入\n");
  37.     total++;
  38. }

  39. void show_student()
  40. { //展示查看学生信息
  41.         int i;
  42.         printf("学号  姓名  语文  数学  英语  物理  化学\n");
  43.         for(i=0; i<total; i++)
  44.         {
  45.                 printf("%s  %s  %.f  %.f  %.f  %.f  %.f\n",stu[i].num,stu[i].name,stu[i].score_yuwen,stu[i].score_shuxue,stu[i].score_yingyu,stu[i].score_wuli,stu[i].score_huaxue);
  46.         }
  47. }

  48. void search_name() { //根据姓名查找学生成绩信息
  49.         int i;
  50.         char name[20];
  51.         system("cls");
  52.         printf("请输入要查询的学生的姓名:");
  53.         scanf("%s",&name);
  54.         for(i=0; i<total; i++)
  55.         {
  56.                 if(strcmp(name,stu[i].name)==0)
  57.                 {
  58.                         printf("学号;%s\n",stu[i].num);
  59.                         printf("姓名;%s\n",stu[i].name);
  60.                         printf("语文;%.f\n",stu[i].score_yuwen);
  61.                         printf("数学;%.f\n",stu[i].score_shuxue);
  62.                         printf("物理;%.f\n",stu[i].score_wuli);
  63.                         printf("化学;%.f\n",stu[i].score_huaxue);
  64.                 } else
  65.                         printf("学生姓名不存在...\n");
  66.                 clear_enter();
  67.         }
  68. }

  69. void search_num()
  70. { //根据学号查找学生成绩信息
  71.         char num[20];
  72.         int j;
  73.         system("cls");
  74.         printf("请输入要查询的学生的学号:");
  75.         scanf("%s",&num);
  76.         for(j=0; j<total; j++)
  77.         {
  78.                 if(strcmp(num,stu[j].num)==0)
  79.                 {
  80.                         printf("学号;%s\n",stu[j].num);
  81.                         printf("姓名;%s\n",stu[j].name);
  82.                         printf("语文;%.f\n",stu[j].score_yuwen);
  83.                         printf("数学;%.f\n",stu[j].score_shuxue);
  84.                         printf("英语:%.f\n",stu[j].score_yingyu);
  85.                         printf("物理;%.f\n",stu[j].score_wuli);
  86.                         printf("化学;%.f\n",stu[j].score_huaxue);
  87.                 }
  88.                 else
  89.                 {
  90.                         printf("学生学号不存在:\n");
  91.                 }
  92.         }
  93.         clear_enter();
  94. }

  95. void search_student()
  96. {
  97.         int i;
  98.         system("cls");
  99.         printf("1按姓名查找:\n");
  100.         printf("2按学号查找: \n");
  101.         scanf("%d",&i);
  102.         switch(i)
  103.         {
  104.                 case 1: {
  105.                         search_name();
  106.                         break;
  107.                 }
  108.                 case 2: {
  109.                         search_num();
  110.                         break;
  111.                 }
  112.         }
  113. }

  114. void change_student()
  115. {
  116.         int i;
  117.         printf("输入要修改信息的学生学号:\n");
  118.         char num[20];
  119.         scanf("%s",&num);
  120.         for(i=0; i<total; i++)
  121.                 if(strcmp(num,stu[i].num)==0) {
  122.                         while(i<total) {
  123.                                 stu[i]=stu[i+1];
  124.                                 i++;
  125.                         }
  126.                         total-=1;
  127.                 }
  128.         printf("请输入新的学生成绩信息:\n");
  129.         printf("学号  姓名  语文  数学  英语  物理  化学\n");
  130.         scanf("%s%s%f%f%f%f%f",stu[total].num,stu[total].name,&stu[total].score_yuwen,&stu[total].score_shuxue,&stu[total].score_yingyu,&stu[total].score_wuli,&stu[total].score_huaxue);
  131.         clear_enter();
  132.         printf("学生成绩信息修改中...\n");
  133.         sleep(1);
  134.         printf("修改成功\n");
  135.         total++;

  136. }

  137. void del_student()
  138. { //根据学号删除学生成绩信息
  139.         int i;
  140.         printf("输入要删除信息的学生学号:\n");
  141.         char num[20];
  142.         scanf("%s",&num);
  143.         for(i=0; i<total; i++)
  144.                 if(strcmp(num,stu[i].num)==0) {
  145.                         while(i<total) {
  146.                                 stu[i]=stu[i+1];
  147.                                 i++;
  148.                         }
  149.                         total-=1;
  150.                 }
  151.         clear_enter();
  152.         printf("学生成绩正在删除\n");
  153.         sleep(1);
  154.         printf("学生成绩已删除\n");
  155. }

  156. void num_sort()
  157. { //按学生学号进行排序
  158.         int i,j;
  159.         Student stu_temp;
  160.         for(i=0; i<total; i++)
  161.         {
  162.                 for(j=0; j<total-1-i; j++)
  163.                 {
  164.                         if(stu[j].num>stu[j+1].num)
  165.                         {
  166.                                 stu_temp=stu[j];
  167.                                 stu[j]=stu[j+1];
  168.                                 stu[j+1]=stu_temp;
  169.                         }
  170.                 }
  171.         }
  172.         printf("排序后的结果:\n");
  173.         printf("学号  姓名  语文  数学  英语  物理  化学\n");
  174.         for(i=0; i<total; i++)
  175.         {
  176.         printf("%s  %s  %.f  %.f  %.f  %.f  %.f\n",stu[i].num,stu[i].name,stu[i].score_yuwen,stu[i].score_shuxue,stu[i].score_yingyu,stu[i].score_wuli,stu[i].score_huaxue);
  177.         }
  178. }

  179. void save_student()
  180. {
  181.     system("cls");
  182.     int i,n;
  183.     FILE *fp;
  184.     if ((fp = fopen("chengji.txt", "wb")) == NULL)
  185.     {
  186.         printf("无法打开学生信息文件!\n");
  187.         exit(1);
  188.     }
  189.     printf("\n正在保存...\n");
  190.     fprintf(fp, "%d",total);
  191.     fprintf(fp, "\r\n");
  192.     for (i = 0; i <total; i++)
  193.     {
  194.         fprintf(fp, "%s %s %.f %.f %.f %.f %.f",stu[i].num,stu[i].name,stu[i].score_yuwen,stu[i].score_shuxue,stu[i].score_yingyu,stu[i].score_wuli,stu[i].score_huaxue);
  195.         fprintf(fp, "\r\n");
  196.     }
  197.     fclose(fp);
  198.     Sleep(1);
  199.     system("cls");
  200.     printf("*****保存成功*****\n");
  201. }

  202. void load_student()
  203. {
  204.     int i;
  205.     FILE *fp;
  206.     system("cls");
  207.     if ((fp = fopen("chengji.txt", "rb")) ==NULL)
  208.     {
  209.         printf("无法打开学生信息文件!\n");
  210.         exit(1);
  211.     }
  212.     fscanf(fp, "%d", &total);
  213.     for (i = 0; i <total; i++)
  214.     {
  215.         fscanf(fp, "%s %s %.1f %.1f %.1f %.1f %.1f", stu[i].num,stu[i].name,stu[i].score_yuwen,stu[i].score_shuxue,stu[i].score_yingyu,stu[i].score_wuli,stu[i].score_huaxue);
  216.     }
  217.         fclose(fp);
  218.     system("cls");
  219.     printf("成功加载学生信息到内存中!\n");
  220.     return;
  221. }

  222. void menu()
  223. {
  224.         system("color b9");
  225.         printf("-------------学生成绩管理系统-------------\n");
  226.         printf("            1.增加学生成绩信息            \n");
  227.         printf("            2.查看学生成绩信息            \n");
  228.         printf("            3.修改学生成绩信息            \n");
  229.         printf("            4.删除学生成绩信息       \n");
  230.         printf("            5.查找学生成绩信息            \n");
  231.         printf("            6.对学生信息进行排序            \n");
  232.         printf("            7.保存学生信息为文件            \n");
  233.         printf("            8.从文件中读取学生信息            \n");
  234.         printf("            9.退出系统            \n");
  235.         printf("                                  \n");
  236.         printf("请输入您的选择[1-9]并按回车");
  237.         return;
  238. }

  239. int main()
  240. {
  241.         char tmp[20];
  242.         while(1) {
  243.                 system("cls");
  244.                 menu();
  245.                 int sel;
  246.                 scanf("%d",&sel);
  247.                 gets(tmp);
  248.                 switch(sel) {
  249.                         case 1:
  250.                         {
  251.                                 add_Student();
  252.                                 break;
  253.                         }
  254.                         case 2:
  255.                         {
  256.                                 show_student();
  257.                                 break;
  258.                         }
  259.                         case 3:
  260.                         {
  261.                                 change_student();
  262.                                 break;
  263.                         }
  264.                         case 4:
  265.                         {
  266.                                 del_student();
  267.                                 break;
  268.                         }
  269.                         case 5:
  270.                         {
  271.                                 search_student();
  272.                                 break;
  273.                         }
  274.                         case 6:
  275.                         {
  276.                                 num_sort();
  277.                                 break;
  278.                         }
  279.                         case 7:
  280.                         {
  281.                                 save_student();
  282.                                 break;
  283.                         }
  284.                         case 8:
  285.                         {
  286.                                 load_student();
  287.                                 break;
  288.                         }
  289.                         case 9:
  290.                         {
  291.                                 printf("退出系统");
  292.                                 exit(0);
  293.                         }
  294.                 }
  295.                 printf("按任意键回车继续...\n");
  296.                 gets(tmp);
  297.         }
  298.         return 0;
  299. }
复制代码
最佳答案
2019-12-13 09:33:31
load_student()函数中fscanf不对,改成:
  1. fscanf(fp, "%s %s %f %f %f %f %f", stu[i].num, stu[i].name, &stu[i].score_yuwen, &stu[i].score_shuxue, &stu[i].score_yingyu, &stu[i].score_wuli, &stu[i].score_huaxue);
复制代码


%f输入时不能指定精度,另外忘加地址符了。

最佳答案

查看完整内容

load_student()函数中fscanf不对,改成: %f输入时不能指定精度,另外忘加地址符了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-12-13 09:33:31 | 显示全部楼层    本楼为最佳答案   
load_student()函数中fscanf不对,改成:
  1. fscanf(fp, "%s %s %f %f %f %f %f", stu[i].num, stu[i].name, &stu[i].score_yuwen, &stu[i].score_shuxue, &stu[i].score_yingyu, &stu[i].score_wuli, &stu[i].score_huaxue);
复制代码


%f输入时不能指定精度,另外忘加地址符了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-6 23:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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