C语言网

 找回密码
 加入社区!

QQ登录

只需一步,快速开始

查看: 432|回复: 4

求高手看看急啊 [复制链接]

Rank: 1

主题
0
帖子
23
C币
13 枚
在线时间
5 小时
发表于 2010-5-27 23:21:25 |显示全部楼层
0C币
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. struct student_type
  4. {  char num[11];
  5.   char name[8];
  6.   char cla[20];
  7.   int score[3];
  8.   float ave; } stu[4],work,s;
  9. void main()
  10. {  void save();
  11. void display();
  12. void sort();
  13. void ini();
  14. int i,sum=0;
  15. for(i=0;i<4;i++)
  16. {  scanf("%s %s %s %d %d %d",stu.num,stu.name,stu.cla,&stu.score[0],&stu.score[1],&stu.score[2]);
  17. sum=stu.score[0]+stu.score[1]+stu.score[2];
  18. stu.ave=float(sum/3.0); }
  19. save();
  20. display();
  21. sort();
  22. ini();  }
  23. void save()
  24. { FILE *fp;
  25. int i;
  26. if((fp=fopen("score","wb"))==NULL)
  27. { printf("This file can't open!\n");
  28. return;}
  29. for(i=0;i<4;i++)
  30. if(fwrite(&stu,sizeof(student_type),1,fp)!=1)
  31. { printf("File open error!\n");
  32. return;}
  33. fclose(fp); }
  34. void display()
  35. {  FILE *fp;
  36. int i,m,j,sum=0;
  37. float average;
  38. fp=fopen("score","rb");
  39. printf("num      name       cla           score1  score2  score3  ave\n");
  40. printf("---------------------------------------------------------------\n");
  41. for(i=0;i<4;i++)
  42. { fread(&stu,sizeof(student_type),1,fp);
  43. printf("%-10s%-10s%-10s%8d%8d%8d %8.2f\n",stu.num,stu.name,stu.cla,stu.score[0],stu.score[1],
  44.            stu.score[2],stu.ave);
  45. }
  46. fread(&stu,sizeof(struct student_type),1,fp);
  47. for(j=0;j<3;j++)
  48. {  m=j;
  49. for(i=0;i<4;)
  50. {sum+=stu.score[m];
  51. average=float(sum/4.0);
  52. i++;}
  53. sum=0;
  54. printf("subject %d  average is %.2f\n",m,average); }
  55. fclose(fp); }
  56. void sort()
  57. { FILE *fp1,*fp2;
  58. int i,j;
  59. if((fp1=fopen("score","rb"))==NULL)
  60. { printf("The file cannot open\n\n");
  61. exit(0); }
  62. if((fp2=fopen("sort","rb"))==NULL)
  63. {  printf("The file write error\n");
  64. exit(0);  }
  65. for(i=0;i<4;i++)
  66. if(fread(&stu,sizeof(struct student_type),1,fp1)!=1)
  67. { printf("file write error\n");
  68. exit(0); }
  69. for(i=0;i<4;i++)
  70. for(j=i+1;j<4;j++)
  71. if(stu.ave<stu[j].ave)
  72. { work.ave=stu.ave; stu.ave=stu[j].ave; stu[j].ave=work.ave; }
  73. fwrite(&stu,sizeof(struct student_type),1,fp2);
  74. fclose(fp1);
  75. fp2=fopen("sort","r+");
  76. printf("sorted students' scores lists is as follows\n");
  77. printf("-----------------------------------------------\n");
  78. for(i=0;i<4;i++)
  79. {  fread(&stu,sizeof(struct student_type),1,fp2);
  80. printf("%-10s%-10s%-10s%8d%8d%8d%8.2f\n",stu.num,stu.name,stu.cla,stu.score[0],stu.score[1],stu.score[2],stu.ave);
  81. fclose(fp2); }}
  82. void ini()
  83. { FILE *fp;
  84. int i,j,t;
  85. printf("\nnum: ");
  86. scanf("%s",s.num);
  87. printf("\nname: ");
  88. scanf("%s",s.name);
  89. printf("\ncla: ");
  90. scanf("%s",s.cla);
  91. printf("score1,score2,score3: ");
  92. scanf("%d%d%d",&s.score[0],&s.score[1],&s.score[2]);
  93. s.ave=(float)((s.score[0]+s.score[1]+s.score[2])/3.0);
  94. for(t=0;stu[t].ave>s.ave&&t<4;t++)
  95. printf("\nnow\n");
  96. if((fp=fopen("sort","wb"))==NULL)
  97. { printf("can't open file\n");
  98. exit(0); }
  99. for(i=0;i<t;i++)
  100. { fwrite(&stu,sizeof(struct student_type),1,fp);
  101. printf("\n%-10s%-10s%-10s",stu.num,stu.name,stu.cla);
  102. for(j=0;j<3;j++)
  103. printf("%8d",stu.score[j]);
  104. printf("%8.2f",stu.ave);  }
  105. fwrite(&s,sizeof(struct student_type),1,fp);
  106. printf("\n%-10s%-10s%-10s%8d%8d%8d%8.2f",s.num,s.name,s.cla,s.score[0],s.score[1],s.score[2],s.ave);
  107. for(i=t;i<4;i++)
  108. { fwrite(&stu,sizeof(struct student_type),1,fp);
  109. printf("\n%-10s%-10s%-10s",stu.num,stu.name,stu.cla);
  110. for(j=0;j<3;j++)
  111. printf("\n%8d",stu.score[j]);
  112. printf("\n%8.2f",stu.ave); }
  113. printf("\n");
  114. fclose(fp);
  115. }
复制代码



执行结果是:01 li 0906 89 98 78
02 wang 0906 89 79 88
03 zhang 0906 80 90 89
04 qing 0907 78 89 90
num      name       cla           score1  score2  score3  ave
---------------------------------------------------------------
01        li        0906            89      98      78    88.33
02        wang      0906            89      79      88    85.33
03        zhang     0906            80      90      89    86.33
04        qing      0907            78      89      90    85.67
subject 0  average is 84.00
subject 1  average is 89.00
subject 2  average is 86.25
The file write error
Press any key to continue

Rank: 1

主题
0
帖子
23
C币
13 枚
在线时间
5 小时
发表于 2010-5-27 23:24:07 |显示全部楼层
补充一下啊:这个是学生成绩管理系统有求每门课每个学生的平均成绩和插入一个学生的数据的作用,但是这个插入一个学生的数据没法实现,特来求助

Rank: 1

主题
0
帖子
42
C币
56 枚
在线时间
7 小时
发表于 2010-5-28 09:11:48 |显示全部楼层
太长。。。。字体也不好看。。看不下去。。。
          没必要把所有的程序都搞出来。。。你捡重点的搞出来。。我给你看看。。。

Rank: 4

主题
7
帖子
116
C币
244 枚
在线时间
101 小时
发表于 2010-5-28 11:32:48 |显示全部楼层
本帖最后由 klttl 于 2010-5-28 12:08 编辑

不知道你会不会链表!如果会你就用链表就可以插入了!我在论坛很多地方都说了像这样的就用链表插入就ok了!你如果需要我可以用把用链表写插入的部分给你!

Rank: 4

主题
9
帖子
160
C币
250 枚
在线时间
23 小时
发表于 2010-5-29 09:50:40 |显示全部楼层
这个东西用链表做,,
您需要登录后才可以回帖 登录 | 加入社区!

C语言 ( 粤ICP备11042647号-2 )

GMT+8, 2012-2-7 22:24

©2009-2011 cyuyan.com.cn

回顶部