当前位置:   article > 正文

C语言“学生信息管理系统”功能详解及代码展示2023级慕课版_c语言学生信息管理系统代码

c语言学生信息管理系统代码

功能要求

(1)能够从外部数据文件读入学生信息,并以数据文件的形式存储学生信息;

(2)能够增加学生信息,按学号修改、删除学生的信息;

(3)能够按学号、姓名等方式查询学生信息;

(4)能够根据条件对学生信息进行排序浏览;

(5)能够根据条件统计学生人数;

(6)查看所有学生信息。

函数结构体宏定义和声明

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<conio.h>
  4. #include<dos.h>
  5. #include<string.h> //头文件的引用//
  6. #define LEN sizeof(struct student)
  7. #define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf\n"
  8. #define DATA stu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sum
  9. void in();
  10. void show();
  11. void order();
  12. void del();
  13. void modify();
  14. void menu();
  15. void insert();
  16. void total();
  17. void search(); //函数的声明//
  18. struct student //声明定义结构体//
  19. {
  20. int num;
  21. char name[15];
  22. double elec;
  23. double expe;
  24. double requ;
  25. double sum;
  26. };
  27. struct student stu[50];

主函数的设计

  1. //实现主函数的设计//
  2. int main(int argc,const char *argv[],const char *env[])
  3. {
  4. system("color f0\n"); /*白底黑字*/
  5. int n;
  6. menu();
  7. scanf("%d",&n);
  8. while(n)
  9. {
  10. switch(n)
  11. {
  12. case 1:
  13. in();
  14. break;
  15. case 2:
  16. search();
  17. break;
  18. case 3:
  19. del();
  20. break;
  21. case 4:
  22. modify();
  23. break;
  24. case 5:
  25. insert();
  26. break;
  27. case 6:
  28. order();
  29. break;
  30. case 7:
  31. total();
  32. break;
  33. case 8:
  34. show();
  35. break;
  36. default:
  37. break;
  38. }
  39. getch(); /*执行完功能再次显示菜单界面*/
  40. menu();
  41. scanf("%d",&n);
  42. }
  43. }

菜单界面的实现
 

  1. 自定义函数实现菜单功能
  2. */
  3. void menu()
  4. {
  5. system("cls");
  6. printf("\n\n\n\n");
  7. printf("\t\t|---------------学生信息管理系统---------------|\n");
  8. printf("\t\t|\t\t\t\t\t |\n");
  9. printf("\t\t|\t\t 1.录入学生信息 |\n");
  10. printf("\t\t|\t\t 2.查找学生信息\t |\n");
  11. printf("\t\t|\t\t 3.删除学生信息\t |\n");
  12. printf("\t\t|\t\t 4.修改学生信息\t |\n");
  13. printf("\t\t|\t\t 5.插入学生信息\t |\n");
  14. printf("\t\t|\t\t 6.排序\t |\n");
  15. printf("\t\t|\t\t 7.统计学生总数\t |\n");
  16. printf("\t\t|\t\t 8.显示所有学生信息\t |\n");
  17. printf("\t\t|\t\t 0.退出系统\t |\n");
  18. printf("\t\t|\t\t\t |\n");
  19. printf("\t\t|----------------------------------------------|\n\n");
  20. printf("\t\t\t请选择(0-8):");
  21. }

实现录入学生信息

  1. void in()
  2. {
  3. int i,m=0;
  4. char ch[2];
  5. FILE*fp;
  6. if((fp=fopen("data.txt","a+"))==NULL)
  7. {
  8. printf("文件不存在!\n");
  9. return;
  10. }
  11. while(!feof(fp))
  12. {
  13. if(fread(&stu[m],LEN,1,fp)==1)
  14. {
  15. m++;
  16. }
  17. }
  18. fclose(fp);
  19. if(m==0)
  20. {
  21. printf("文件中没有内容!\n");
  22. }
  23. else
  24. {
  25. show();
  26. }
  27. if((fp=fopen("data.txt","wb"))==NULL)
  28. {
  29. printf("文件不存在!\n");
  30. return;
  31. }
  32. printf("输入学生信息(y/n):");
  33. scanf("%s",ch);
  34. while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
  35. {
  36. printf("number:");
  37. scanf("%d",&stu[m].num);
  38. for(i=0;i<m;i++)
  39. if(stu[i].num==stu[m].num)
  40. {
  41. printf("number已经存在了,按任意键继续!");
  42. getch();
  43. fclose(fp);
  44. return;
  45. }
  46. printf("name:");
  47. scanf("%s",stu[m].name);
  48. printf("elective:");
  49. scanf("%lf",&stu[m].elec);
  50. printf("experiment:");
  51. scanf("%lf",&stu[m].expe);
  52. printf("required course:");
  53. scanf("%lf",&stu[m].requ);
  54. stu[m].sum=stu[m].elec+stu[m].expe+stu[m].requ;
  55. if(fwrite(&stu[m],LEN,1,fp)!=1)
  56. {
  57. printf("不能保存!");
  58. getch();
  59. }
  60. else
  61. {
  62. printf("%s被保存!\n",stu[m].name);
  63. m++;
  64. }
  65. printf("继续?(y/n):");
  66. scanf("%s",ch);
  67. }
  68. fclose(fp);
  69. printf("OK!\n");
  70. }

实现查询学生信息

  1. //查询没有记录的文件//
  2. void search()
  3. {
  4. FILE*fp;
  5. int snum,i,m=0;
  6. if((fp=fopen("data.txt","rb"))==NULL)
  7. {
  8. printf("文件不存在!\n");
  9. return;
  10. }
  11. while(!feof(fp))
  12. if(fread(&stu[m],LEN,1,fp)==1)
  13. m++;
  14. fclose(fp);
  15. if(m==0)
  16. {
  17. printf("文件没有记录!\n");
  18. return;
  19. }
  20. printf("请输入number:");
  21. scanf("%d",&snum);
  22. for(i=0;i<m;i++)
  23. if(snum==stu[i].num)
  24. {
  25. printf("number name elective experiment required sum\t\n");
  26. printf(FORMAT,DATA);
  27. break;
  28. }
  29. if(i==m)printf("没有找到这名学生!\n");
  30. }

实现删除学生信息

  1. void del()
  2. {
  3. FILE*fp;
  4. int snum,i,j,m=0;
  5. char ch[2];
  6. if((fp=fopen("data.txt","r+"))==NULL) /*data.txt文件不存在*/
  7. {
  8. printf("文件不存在!\n");
  9. return;
  10. }
  11. while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1)m++;
  12. fclose(fp);
  13. if(m==0)
  14. {
  15. printf("文件夹中没有记录!\n"); /*data.txt文件存在,但里面没有内容*/
  16. return;
  17. }
  18. printf("请输入学生学号:");
  19. scanf("%d",&snum);
  20. for(i=0;i<m;i++)
  21. if(snum==stu[i].num)
  22. {
  23. printf("找到了这条记录,是否删除?(y/n)");
  24. scanf("%s",ch);
  25. if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)//判断是否要进行删除
  26. {
  27. for(j=i;j<m;j++)
  28. stu[j]=stu[j+1]; /*将后一个记录移到前一个记录的位置*/
  29. m--;
  30. if((fp=fopen("data.txt","wb"))==NULL)
  31. {
  32. printf("文件不存在\n");
  33. return;
  34. }
  35. for(j=0;j<m;j++) /*将更改后的记录重新写入指定的磁盘文件中*/
  36. if(fwrite(&stu[j],LEN,1,fp)!=1)
  37. {
  38. printf("can not save!\n");
  39. getch();
  40. }
  41. fclose(fp);
  42. printf("删除成功!\n");
  43. }else{
  44. printf("找到了记录,选择不删除!");
  45. }
  46. break;
  47. }
  48. else
  49. {
  50. printf("没有找到这名学生!\n"); /*未找到要查找的信息*/
  51. }
  52. }

实现修改学生信息

  1. void modify()/*自定义修改函数*/ //修正:要修改文件中没有记录的学号时,还是说“找到了。。。”
  2. { struct student t;
  3. FILE *fp;
  4. int i=0,j=0,m=0,snum;
  5. if((fp=fopen("data.txt","r+"))==NULL)
  6. {
  7. printf("文件不存在!\n");
  8. return;
  9. }
  10. while(!feof(fp))
  11. if(fread(&stu[m] ,LEN,1,fp)==1)
  12. m++;
  13. if(m==0)
  14. {
  15. printf("文件中没有记录!\n");
  16. fclose(fp);
  17. return;
  18. }
  19. show();
  20. printf("请输入要修改的学生number: ");
  21. scanf("%d",&snum);
  22. for(i=0;i<m;i++)
  23. if(snum==stu[i].num)/*检索记录中是否有要修改的信息*/
  24. {
  25. printf("找到了这名学生,可以修改他的信息!\n");
  26. printf("name:");
  27. scanf("%s",stu[i].name);/*输入名字*/
  28. printf("elective:");
  29. scanf("%lf",&stu[i].elec);/*输入选修课成绩*/
  30. printf("experiment:");
  31. scanf("%lf",&stu[i].expe);/*输入实验课成绩*/
  32. printf("required course:");
  33. scanf("%lf",&stu[i].requ);/*输入必修课成绩*/
  34. printf("修改成功!");
  35. stu[i].sum=stu[i].elec+stu[i].expe+stu[i].requ;
  36. if((fp=fopen("data.txt","wb"))==NULL)
  37. {
  38. printf("can not open\n");
  39. return;
  40. }
  41. for(j=0;j<m;j++)/*将新修改的信息写入指定的磁盘文件中*/
  42. if(fwrite(&stu[j] ,LEN,1,fp)!=1)
  43. {
  44. printf("can not save!");
  45. getch();
  46. }
  47. fclose(fp);
  48. break;
  49. }
  50. if(i==m)
  51. printf("没有找到这名学生!\n");/*未找到要查找的信息*/
  52. }

实现插入学生信息

  1. //实现插入学生信息//
  2. void insert()/*自定义插入函数*/
  3. {
  4. FILE *fp;
  5. int i,j,k,m=0,snum;
  6. if((fp=fopen("data.txt","r+"))==NULL)
  7. {
  8. printf("文件不存在!\n");
  9. return;
  10. }
  11. while(!feof(fp))
  12. if(fread(&stu[m],LEN,1,fp)==1)
  13. m++;
  14. if(m==0)
  15. {
  16. printf("文件中没有记录!\n");
  17. fclose(fp);
  18. return;
  19. }
  20. printf("请输入要插入的位置(number):\n");
  21. scanf("%d",&snum);/*输入要插入的位置*/
  22. for(i=0;i<m;i++)
  23. if(snum==stu[i].num)
  24. break;
  25. for(j=m-1;j>i;j--)
  26. stu[j+1]=stu[j];/*从最后一条记录开始均向后移一位*/
  27. printf("现在请输入要插入的学生信息.\n");
  28. printf("number:");
  29. scanf("%d",&stu[i+1].num);
  30. for(k=0;k<m;k++)
  31. if(stu[k].num==stu[m].num)
  32. {
  33. printf("number已经存在,按任意键继续!");
  34. getch();
  35. fclose(fp);
  36. return;
  37. }
  38. printf("name:");
  39. scanf("%s",stu[i+1].name);
  40. printf("elective:");
  41. scanf("%lf",&stu[i+1].elec);
  42. printf("experiment:");
  43. scanf("%lf",&stu[i+1].expe);
  44. printf("required course:");
  45. scanf("%lf",&stu[i+1].requ);
  46. stu[i+1].sum=stu[i+1].elec+stu[i+1].expe+stu[i+1].requ;
  47. printf("插入成功!按任意键返回主界面!");
  48. if((fp=fopen("data.txt","wb"))==NULL)
  49. {
  50. printf("不能打开!\n");
  51. return;
  52. }
  53. for(k=0;k<=m;k++)
  54. if(fwrite(&stu[k] ,LEN,1,fp)!=1)/*将修改后的记录写入磁盘文件中*/
  55. {
  56. printf("不能保存!");
  57. getch();
  58. }
  59. fclose(fp);
  60. }

实现学生排名

  1. //实现学生排名//
  2. void order()
  3. {
  4. FILE *fp;
  5. struct student t;
  6. int i = 0,j = 0,m = 0;
  7. if((fp=fopen("data.txt","r+"))==NULL)
  8. {
  9. printf("文件不存在!\n");
  10. return;
  11. }
  12. while(!feof(fp))
  13. if(fread(&stu[m],LEN,1,fp)==1)
  14. m++;
  15. fclose(fp);
  16. if(m==0)
  17. {
  18. printf("文件中没有记录!\n");
  19. return;
  20. }
  21. if((fp=fopen("data.txt","wb"))==NULL)
  22. {
  23. printf("文件不存在!\n");
  24. return;
  25. }
  26. for(i=0;i<m-1;i++)
  27. for(j=i+1;j<m;j++)
  28. if(stu[i].sum<stu[j].sum)
  29. {
  30. t=stu[i];stu[i]=stu[j];stu[j]=t;
  31. }
  32. if((fp = fopen("data.txt","wb"))==NULL)
  33. {
  34. printf("文件不存在!\n");
  35. return;
  36. }
  37. for(i=0;i<m;i++)
  38. if(fwrite(&stu[i],LEN,1,fp)!=1)
  39. {
  40. printf("%s 不能保存文件!\n");
  41. getch();
  42. }
  43. fclose(fp);
  44. printf("保存成功!\n");
  45. }

实现统计学生个数

  1. //实现统计学生个数//
  2. void total()
  3. {
  4. FILE *fp;
  5. int m=0;
  6. if((fp=fopen("data.txt","r+"))==NULL)
  7. {
  8. printf("文件不存在!\n");
  9. return;
  10. }
  11. while(!feof(fp))
  12. if(fread(&stu[m],LEN,1,fp)==1)
  13. m++; /*统计记录个数即学生个数*/
  14. if(m==0) {printf("no record!\n");fclose(fp);return;}
  15. printf("这个班级一共有 %d 名学生!\n",m);/*将统计的个数输出*/
  16. fclose(fp);
  17. }

实现显示学生信息表

  1. //实现统计学生个数//
  2. void total()
  3. {
  4. FILE *fp;
  5. int m=0;
  6. if((fp=fopen("data.txt","r+"))==NULL)
  7. {
  8. printf("文件不存在!\n");
  9. return;
  10. }
  11. while(!feof(fp))
  12. if(fread(&stu[m],LEN,1,fp)==1)
  13. m++; /*统计记录个数即学生个数*/
  14. if(m==0) {printf("no record!\n");fclose(fp);return;}
  15. printf("这个班级一共有 %d 名学生!\n",m);/*将统计的个数输出*/
  16. fclose(fp);
  17. }

源代码展示

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<conio.h>
  4. #include<dos.h>
  5. #include<string.h> //头文件的引用//
  6. #define LEN sizeof(struct student)
  7. #define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lf\n"
  8. #define DATA stu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sum
  9. void in();
  10. void show();
  11. void order();
  12. void del();
  13. void modify();
  14. void menu();
  15. void insert();
  16. void total();
  17. void search(); //函数的声明//
  18. struct student //声明定义结构体//
  19. {
  20. int num;
  21. char name[15];
  22. double elec;
  23. double expe;
  24. double requ;
  25. double sum;
  26. };
  27. struct student stu[50];
  28. //实现主函数的设计//
  29. int main(int argc,const char *argv[],const char *env[])
  30. {
  31. system("color f0\n"); /*白底黑字*/
  32. int n;
  33. menu();
  34. scanf("%d",&n);
  35. while(n)
  36. {
  37. switch(n)
  38. {
  39. case 1:
  40. in();
  41. break;
  42. case 2:
  43. search();
  44. break;
  45. case 3:
  46. del();
  47. break;
  48. case 4:
  49. modify();
  50. break;
  51. case 5:
  52. insert();
  53. break;
  54. case 6:
  55. order();
  56. break;
  57. case 7:
  58. total();
  59. break;
  60. case 8:
  61. show();
  62. break;
  63. default:
  64. break;
  65. }
  66. getch(); /*执行完功能再次显示菜单界面*/
  67. menu();
  68. scanf("%d",&n);
  69. }
  70. }
  71. /**
  72. * 自定义函数实现菜单功能
  73. */
  74. void menu()
  75. {
  76. system("cls");
  77. printf("\n\n\n\n");
  78. printf("\t\t|---------------学生信息管理系统---------------|\n");
  79. printf("\t\t|\t\t\t\t\t |\n");
  80. printf("\t\t|\t\t 1.录入学生信息 |\n");
  81. printf("\t\t|\t\t 2.查找学生信息\t |\n");
  82. printf("\t\t|\t\t 3.删除学生信息\t |\n");
  83. printf("\t\t|\t\t 4.修改学生信息\t |\n");
  84. printf("\t\t|\t\t 5.插入学生信息\t |\n");
  85. printf("\t\t|\t\t 6.排序\t |\n");
  86. printf("\t\t|\t\t 7.统计学生总数\t |\n");
  87. printf("\t\t|\t\t 8.显示所有学生信息\t |\n");
  88. printf("\t\t|\t\t 0.退出系统\t |\n");
  89. printf("\t\t|\t\t\t |\n");
  90. printf("\t\t|----------------------------------------------|\n\n");
  91. printf("\t\t\t请选择(0-8):");
  92. }
  93. //录入学生信息//
  94. void in()
  95. {
  96. int i,m=0;
  97. char ch[2];
  98. FILE*fp;
  99. if((fp=fopen("data.txt","a+"))==NULL)
  100. {
  101. printf("文件不存在!\n");
  102. return;
  103. }
  104. while(!feof(fp))
  105. {
  106. if(fread(&stu[m],LEN,1,fp)==1)
  107. {
  108. m++;
  109. }
  110. }
  111. fclose(fp);
  112. if(m==0)
  113. {
  114. printf("文件中没有内容!\n");
  115. }
  116. else
  117. {
  118. show();
  119. }
  120. if((fp=fopen("data.txt","wb"))==NULL)
  121. {
  122. printf("文件不存在!\n");
  123. return;
  124. }
  125. printf("输入学生信息(y/n):");
  126. scanf("%s",ch);
  127. while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
  128. {
  129. printf("number:");
  130. scanf("%d",&stu[m].num);
  131. for(i=0;i<m;i++)
  132. if(stu[i].num==stu[m].num)
  133. {
  134. printf("number已经存在了,按任意键继续!");
  135. getch();
  136. fclose(fp);
  137. return;
  138. }
  139. printf("name:");
  140. scanf("%s",stu[m].name);
  141. printf("elective:");
  142. scanf("%lf",&stu[m].elec);
  143. printf("experiment:");
  144. scanf("%lf",&stu[m].expe);
  145. printf("required course:");
  146. scanf("%lf",&stu[m].requ);
  147. stu[m].sum=stu[m].elec+stu[m].expe+stu[m].requ;
  148. if(fwrite(&stu[m],LEN,1,fp)!=1)
  149. {
  150. printf("不能保存!");
  151. getch();
  152. }
  153. else
  154. {
  155. printf("%s被保存!\n",stu[m].name);
  156. m++;
  157. }
  158. printf("继续?(y/n):");
  159. scanf("%s",ch);
  160. }
  161. fclose(fp);
  162. printf("OK!\n");
  163. }
  164. //查询没有记录的文件//
  165. void search()
  166. {
  167. FILE*fp;
  168. int snum,i,m=0;
  169. if((fp=fopen("data.txt","rb"))==NULL)
  170. {
  171. printf("文件不存在!\n");
  172. return;
  173. }
  174. while(!feof(fp))
  175. if(fread(&stu[m],LEN,1,fp)==1)
  176. m++;
  177. fclose(fp);
  178. if(m==0)
  179. {
  180. printf("文件没有记录!\n");
  181. return;
  182. }
  183. printf("请输入number:");
  184. scanf("%d",&snum);
  185. for(i=0;i<m;i++)
  186. if(snum==stu[i].num)
  187. {
  188. printf("number name elective experiment required sum\t\n");
  189. printf(FORMAT,DATA);
  190. break;
  191. }
  192. if(i==m)printf("没有找到这名学生!\n");
  193. }
  194. //实现删除学生信息//
  195. void del()
  196. {
  197. FILE*fp;
  198. int snum,i,j,m=0;
  199. char ch[2];
  200. if((fp=fopen("data.txt","r+"))==NULL) /*data.txt文件不存在*/
  201. {
  202. printf("文件不存在!\n");
  203. return;
  204. }
  205. while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1)m++;
  206. fclose(fp);
  207. if(m==0)
  208. {
  209. printf("文件夹中没有记录!\n"); /*data.txt文件存在,但里面没有内容*/
  210. return;
  211. }
  212. printf("请输入学生学号:");
  213. scanf("%d",&snum);
  214. for(i=0;i<m;i++)
  215. if(snum==stu[i].num)
  216. {
  217. printf("找到了这条记录,是否删除?(y/n)");
  218. scanf("%s",ch);
  219. if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)//判断是否要进行删除
  220. {
  221. for(j=i;j<m;j++)
  222. stu[j]=stu[j+1]; /*将后一个记录移到前一个记录的位置*/
  223. m--;
  224. if((fp=fopen("data.txt","wb"))==NULL)
  225. {
  226. printf("文件不存在\n");
  227. return;
  228. }
  229. for(j=0;j<m;j++) /*将更改后的记录重新写入指定的磁盘文件中*/
  230. if(fwrite(&stu[j],LEN,1,fp)!=1)
  231. {
  232. printf("can not save!\n");
  233. getch();
  234. }
  235. fclose(fp);
  236. printf("删除成功!\n");
  237. }else{
  238. printf("找到了记录,选择不删除!");
  239. }
  240. break;
  241. }
  242. else
  243. {
  244. printf("没有找到这名学生!\n"); /*未找到要查找的信息*/
  245. }
  246. }
  247. //实现修改学生信息 //
  248. void modify()/*自定义修改函数*/ //修正:要修改文件中没有记录的学号时,还是说“找到了。。。”
  249. {
  250. FILE *fp;
  251. struct student t;
  252. int i=0,j=0,m=0,snum;
  253. if((fp=fopen("data.txt","r+"))==NULL)
  254. {
  255. printf("文件不存在!\n");
  256. return;
  257. }
  258. while(!feof(fp))
  259. if(fread(&stu[m] ,LEN,1,fp)==1)
  260. m++;
  261. if(m==0)
  262. {
  263. printf("文件中没有记录!\n");
  264. fclose(fp);
  265. return;
  266. }
  267. show();
  268. printf("请输入要修改的学生number: ");
  269. scanf("%d",&snum);
  270. for(i=0;i<m;i++)
  271. if(snum==stu[i].num)/*检索记录中是否有要修改的信息*/
  272. {
  273. printf("找到了这名学生,可以修改他的信息!\n");
  274. printf("name:");
  275. scanf("%s",stu[i].name);/*输入名字*/
  276. printf("elective:");
  277. scanf("%lf",&stu[i].elec);/*输入选修课成绩*/
  278. printf("experiment:");
  279. scanf("%lf",&stu[i].expe);/*输入实验课成绩*/
  280. printf("required course:");
  281. scanf("%lf",&stu[i].requ);/*输入必修课成绩*/
  282. printf("修改成功!");
  283. stu[i].sum=stu[i].elec+stu[i].expe+stu[i].requ;
  284. if((fp=fopen("data.txt","wb"))==NULL)
  285. {
  286. printf("can not open\n");
  287. return;
  288. }
  289. for(j=0;j<m;j++)/*将新修改的信息写入指定的磁盘文件中*/
  290. if(fwrite(&stu[j] ,LEN,1,fp)!=1)
  291. {
  292. printf("can not save!");
  293. getch();
  294. }
  295. fclose(fp);
  296. break;
  297. }
  298. if(i==m)
  299. printf("没有找到这名学生!\n");/*未找到要查找的信息*/
  300. }
  301. //实现插入学生信息//
  302. void insert()/*自定义插入函数*/
  303. {
  304. FILE *fp;
  305. int i,j,k,m=0,snum;
  306. if((fp=fopen("data.txt","r+"))==NULL)
  307. {
  308. printf("文件不存在!\n");
  309. return;
  310. }
  311. while(!feof(fp))
  312. if(fread(&stu[m],LEN,1,fp)==1)
  313. m++;
  314. if(m==0)
  315. {
  316. printf("文件中没有记录!\n");
  317. fclose(fp);
  318. return;
  319. }
  320. printf("请输入要插入的位置(number):\n");
  321. scanf("%d",&snum);/*输入要插入的位置*/
  322. for(i=0;i<m;i++)
  323. if(snum==stu[i].num)
  324. break;
  325. for(j=m-1;j>i;j--)
  326. stu[j+1]=stu[j];/*从最后一条记录开始均向后移一位*/
  327. printf("现在请输入要插入的学生信息.\n");
  328. printf("number:");
  329. scanf("%d",&stu[i+1].num);
  330. for(k=0;k<m;k++)
  331. if(stu[k].num==stu[m].num)
  332. {
  333. printf("number已经存在,按任意键继续!");
  334. getch();
  335. fclose(fp);
  336. return;
  337. }
  338. printf("name:");
  339. scanf("%s",stu[i+1].name);
  340. printf("elective:");
  341. scanf("%lf",&stu[i+1].elec);
  342. printf("experiment:");
  343. scanf("%lf",&stu[i+1].expe);
  344. printf("required course:");
  345. scanf("%lf",&stu[i+1].requ);
  346. stu[i+1].sum=stu[i+1].elec+stu[i+1].expe+stu[i+1].requ;
  347. printf("插入成功!按任意键返回主界面!");
  348. if((fp=fopen("data.txt","wb"))==NULL)
  349. {
  350. printf("不能打开!\n");
  351. return;
  352. }
  353. for(k=0;k<=m;k++)
  354. if(fwrite(&stu[k] ,LEN,1,fp)!=1)/*将修改后的记录写入磁盘文件中*/
  355. {
  356. printf("不能保存!");
  357. getch();
  358. }
  359. fclose(fp);
  360. }
  361. //实现学生排名//
  362. void order()
  363. {
  364. FILE *fp;
  365. struct student t;
  366. int i = 0,j = 0,m = 0;
  367. if((fp=fopen("data.txt","r+"))==NULL)
  368. {
  369. printf("文件不存在!\n");
  370. return;
  371. }
  372. while(!feof(fp))
  373. if(fread(&stu[m],LEN,1,fp)==1)
  374. m++;
  375. fclose(fp);
  376. if(m==0)
  377. {
  378. printf("文件中没有记录!\n");
  379. return;
  380. }
  381. if((fp=fopen("data.txt","wb"))==NULL)
  382. {
  383. printf("文件不存在!\n");
  384. return;
  385. }
  386. for(i=0;i<m-1;i++)
  387. for(j=i+1;j<m;j++)
  388. if(stu[i].sum<stu[j].sum)
  389. {
  390. t=stu[i];stu[i]=stu[j];stu[j]=t;
  391. }
  392. if((fp = fopen("data.txt","wb"))==NULL)
  393. {
  394. printf("文件不存在!\n");
  395. return;
  396. }
  397. for(i=0;i<m;i++)
  398. if(fwrite(&stu[i],LEN,1,fp)!=1)
  399. {
  400. printf("%s 不能保存文件!\n");
  401. getch();
  402. }
  403. fclose(fp);
  404. printf("保存成功!\n");
  405. }
  406. //实现统计学生个数//
  407. void total()
  408. {
  409. FILE *fp;
  410. int m=0;
  411. if((fp=fopen("data.txt","r+"))==NULL)
  412. {
  413. printf("文件不存在!\n");
  414. return;
  415. }
  416. while(!feof(fp))
  417. if(fread(&stu[m],LEN,1,fp)==1)
  418. m++; /*统计记录个数即学生个数*/
  419. if(m==0) {printf("no record!\n");fclose(fp);return;}
  420. printf("这个班级一共有 %d 名学生!\n",m);/*将统计的个数输出*/
  421. fclose(fp);
  422. }
  423. //读取显示所以学生信息//
  424. void show()
  425. {
  426. FILE*fp;
  427. int i,m=0;
  428. fp=fopen("data.txt","rb");
  429. while(!feof(fp))
  430. {
  431. if(fread(&stu[m],LEN,1,fp)==1)
  432. m++;
  433. }
  434. fclose(fp);
  435. printf("number name elective experiment required sum\t\n");
  436. for(i=0;i<m;i++)
  437. {
  438. printf(FORMAT,DATA);
  439. }
  440. }

结语及经验总结

问题:1.运行程序时变量名称输入错误;

           2.运行程序时部分功能实现的异常;

           3.功能实现时思路的问题;

总结:

 开发程序真正需要的是团队协作,协作提升效率。问题往往发现于他人,切莫眼高手低,相信自己,更要相信他人相信团队,庞大的问题细分每个成员,会变得游刃有余。合理分工,共克难题,这便是开发设计之道。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/607894
推荐阅读
相关标签
  

闽ICP备14008679号