一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

簡易學(xué)生管理系統(tǒng)(C語言)

 吳敬銳 2022-11-29 發(fā)布于廣東

         首先我們在做一個管理系統(tǒng)之前要了解這個學(xué)生管理系統(tǒng)需要哪些功能,如:簡單的增,刪,改,查,即:錄入成績,查詢成績,刪除成績,修改成績,插入成績,這幾個是基本要包括的,當(dāng)然我們也可以加上排序,統(tǒng)計學(xué)生人數(shù),這些功能。

當(dāng)清楚需要哪些功能之后我們就可以寫系統(tǒng)的界面了。

效果圖如下:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASHViZXJ04piF,size_17,color_FFFFFF,t_70,g_se,x_16

  1. printf('\t\t\t---------------STUDENT---------------\t\t\t\n');
  2. printf('\t\t\t0.退出\t\t\t\n');
  3. printf('\t\t\t1.錄入成績\t\t\t\n');
  4. printf('\t\t\t2.查詢成績\t\t\t\n');
  5. printf('\t\t\t3.刪除成績\t\t\t\n');
  6. printf('\t\t\t4.修改成績\t\t\t\n');
  7. printf('\t\t\t5.插入成績\t\t\t\n');
  8. printf('\t\t\t6.排序\t\t\t\n');
  9. printf('\t\t\t7.統(tǒng)計學(xué)生人數(shù)\t\t\t\n');
  10. printf('\t\t\t-------------------------------------\t\t\t\n');
  11. printf('\t\t\t選擇(0---7)\t\t\t');

接著我們就可以加入switch函數(shù)進行功能選擇

  定義整型變量choice 

  1. int choice ;
  2. scanf('%d',&choice );
  3. switch(choice )
  4. {
  5. case 0:exit(0); break;
  6. case 1: in();save();system('pause');system('cls');break;//錄入
  7. case 2: show();system('pause');system('cls');break;//查詢
  8. case 3: del();save();system('pause');system('cls');break;//刪除
  9. case 4: modify();system('pause');system('cls');break;//修改
  10. case 5: insert();save();system('pause');system('cls');break;//插入
  11. case 6: order();system('pause');system('cls');break;//排序
  12. case 7: total();system('pause');system('cls');break;//統(tǒng)計
  13. default:printf('\n輸入錯誤,請輸入0---7\n\n');system('pause');system('cls');break;
  14. }

定義一個Menu函數(shù)把上面兩個結(jié)合起來,我們加一個while循環(huán)讓這個這個菜單一直循環(huán)出現(xiàn),而不是用一次就沒了。

  1. void Menu()//菜單
  2. { while(1)
  3. {
  4. printf('\t\t\t---------------STUDENT---------------\t\t\t\n');
  5. printf('\t\t\t0.退出\t\t\t\n');
  6. printf('\t\t\t1.錄入成績\t\t\t\n');
  7. printf('\t\t\t2.查詢成績\t\t\t\n');
  8. printf('\t\t\t3.刪除成績\t\t\t\n');
  9. printf('\t\t\t4.修改成績\t\t\t\n');
  10. printf('\t\t\t5.插入成績\t\t\t\n');
  11. printf('\t\t\t6.排序\t\t\t\n');
  12. printf('\t\t\t7.統(tǒng)計學(xué)生人數(shù)\t\t\t\n');
  13. printf('\t\t\t-------------------------------------\t\t\t\n');
  14. printf('\t\t\t選擇(0---7)\t\t\t');
  15. int chioce;
  16. scanf('%d',&chioce);
  17. switch(chioce)
  18. {
  19. case 0:exit(0); break;
  20. case 1: in();save();system('pause');system('cls');break;//錄入
  21. case 2: show();system('pause');system('cls');break;//查詢
  22. case 3: del();save();system('pause');system('cls');break;//刪除
  23. case 4: modify();system('pause');system('cls');break;//修改
  24. case 5: insert();save();system('pause');system('cls');break;//插入
  25. case 6: order();system('pause');system('cls');break;//排序
  26. case 7: total();system('pause');system('cls');break;//統(tǒng)計
  27. default:printf('\n輸入錯誤,請輸入0---7\n\n');system('pause');system('cls');break;
  28. }
  29. }
  30. }

寫完菜單之后我們就要對“學(xué)生”這個數(shù)據(jù)進行分析

在這個系統(tǒng)中學(xué)生的信息要包含那些東西,舉個例子:學(xué)號,姓名,選修課成績,實驗課成績,必修課成績,總成績,平均成績。然后根據(jù)這些寫一個結(jié)構(gòu)體(我寫的是數(shù)組類型的結(jié)構(gòu)體)

  1. struct student
  2. {
  3. char num[20];//學(xué)號
  4. char name[20];//姓名
  5. float elec;//選修課
  6. float expe;//實驗課
  7. float requ;//必修課
  8. float sum;//總成績 '
  9. float ave;//平均成績
  10. }student[N];

接著我們開始寫實現(xiàn)這個系統(tǒng)功能的函數(shù)

第一個就是成績的錄入

  1. void in()//錄入信息
  2. {
  3. void save() ;
  4. int i,n;
  5. printf('輸入錄取學(xué)生的數(shù)量\n');
  6. scanf('%d', &n);
  7. for (i=1 ; i<=n; i++)
  8. { printf('請輸入第%d位學(xué)生學(xué)號:\n',i);
  9. scanf('%s',student[i].num);
  10. printf('請輸入第%d位學(xué)生姓名:\n', i );
  11. scanf('%s',student[i].name);
  12. printf('請輸入第%d位學(xué)生選修課成績:\n', i );
  13. scanf('%f',&student[i].elec);
  14. printf('請輸入第%d位學(xué)生實驗成績:\n', i );
  15. scanf('%f', &student[i].expe);
  16. printf('請輸入第%d位學(xué)生必修課成績:\n', i );
  17. scanf('%f', &student[i].requ);
  18. student[i].sum=student[i].elec+student[i].expe+student[i].requ;
  19. student[i].ave=student[i].sum /3;
  20. count++;
  21. }
  22. printf('錄入成功\n');
  23. }

第二個就是成績的查詢

  1. void show() //查詢
  2. {
  3. int i;
  4. char xh[20];
  5. printf('請輸入要查詢的學(xué)生學(xué)號:\n');
  6. getchar();
  7. gets(xh);
  8. for (i=0;i<N;i++)
  9. {
  10. if(strcmp(student[i].num,xh)==0)//對比兩個字符串如果兩者一樣則進行if下面的的語句否則繼續(xù)循環(huán)
  11. printf('\n學(xué)號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1f\n',
  12. student[i].num,student[i].name,student[i].elec,student[i].expe,student[i].requ,student[i].sum,student[i].ave);
  13. }
  14. }

第三個就是成績的刪除

  1. void del()//刪除
  2. {
  3. void save() ;
  4. int j,a=0,k=count;
  5. char xh[25];
  6. printf('所要刪除的學(xué)生學(xué)號為:\n');
  7. scanf('%s',xh);
  8. flush(stdin);//緩沖區(qū)
  9. for (j=0;j<count;j++)
  10. {
  11. if (strcmp(student[j].num,xh)==0)
  12. {
  13. for (j=a;j<count;j++)
  14. student[j]=student[j+1];
  15. count--;
  16. if (count<k)
  17. printf('刪除成功\n');
  18. }
  19. a++;
  20. }
  21. if (j==count-1)
  22. printf('沒有你所要刪除的學(xué)生的信息\n');
  23. }

第四項,成績的修改

步驟 1.先找到要修改的學(xué)生

        2.選擇修改的項目

        3.更改總成績和平均分

        4.顯示修改后的學(xué)生數(shù)據(jù)

  1. void modify()//修改
  2. { void save() ;
  3. int i,j,h;
  4. float score;
  5. char xh[20];
  6. printf ('01.輸入修改的學(xué)生的學(xué)號:\n') ;
  7. scanf('%s',xh);
  8. for(i=1;i<N;i++)
  9. if (strcmp(student[i].num,xh)==0)
  10. j=i;
  11. printf('請選擇修改內(nèi)容\n');
  12. printf('1.修改該學(xué)生的選修課成績\n');
  13. printf('2.修改該學(xué)生的實驗課成績\n');
  14. printf('3.修改該學(xué)生的必修課成績\n');
  15. scanf('%d',&h);
  16. switch (h)
  17. {
  18. case 1:printf('請輸入該學(xué)生的選修課成績\n');scanf('%f',&score);student[j].elec=score; break;
  19. case 2:printf('請輸入該學(xué)生的實驗課成績\n');scanf('%f',&score);student[j].expe=score;break;
  20. case 3:printf('請輸入該學(xué)生的必修課成績\n');scanf('%f',&score);student[j].requ=score;break;
  21. default :printf('\n輸入錯誤,請輸入1---3\n\n'); break;
  22. }
  23. student[j].sum = student[j].elec+student[j].expe + student[j].requ;
  24. printf('修改后為:\n');
  25. printf('\n學(xué)號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1f\n',
  26. student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave);
  27. printf('\n');
  28. printf('修改成功\n') ;
  29. }

第五項,成績的插入

  1. void insert ()//插入
  2. {void save();
  3. int m, flag, i = count, j,k;
  4. printf('請輸入待添加的學(xué)生人數(shù):\n');
  5. scanf('%d', &m);
  6. if (m > 0)
  7. {
  8. k=count+1;
  9. for(i=k;i<=count+m;i++)
  10. {
  11. flag = 1;
  12. while (flag!= 0)
  13. {
  14. flag = 0;
  15. printf('請輸入第%d位學(xué)生的學(xué)號:\n', i);
  16. getchar();
  17. gets(student[i].num);
  18. for (j = 0; j < i; j++)
  19. {
  20. if (strcmp(student[i].num, student[j].num) == 0)
  21. {
  22. printf('該學(xué)號已存在,請重新輸入!\n');
  23. flag = 1;
  24. break;
  25. }
  26. }
  27. }
  28. printf('請輸入第%d位學(xué)生姓名:\n', i );
  29. gets(student[i].name);
  30. printf('請輸入第%d位學(xué)生選修課成績:\n', i );
  31. scanf('%f',&student[i].elec);
  32. printf('請輸入第%d位學(xué)生實驗成績:\n', i );
  33. scanf('%f', &student[i].expe);
  34. printf('請輸入第%d位學(xué)生必修課成績:\n', i );
  35. scanf('%f', &student[i].requ);
  36. student[i].sum=student[i].elec+student[i].expe+student[i].requ;
  37. student[i].ave=student[i].sum /3;
  38. }
  39. count+= m;
  40. printf('添加完成!\n');
  41. system('pause');
  42. }
  43. }

第六項,排序

  1. void order()//排序
  2. {
  3. int i,j,m;
  4. for(j=1;j<=count-1;j++)
  5. { m=j;
  6. for(i=j+1;i<=count;i++)
  7. {
  8. if(student[i].sum < student[m].sum)
  9. {
  10. student[0]=student[i];
  11. student[i]=student[m];
  12. student[m]=student[0];
  13. }
  14. }
  15. }
  16. for(j=1;j<=count;j++)
  17. {
  18. printf('\n學(xué)號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1f\n',
  19. student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave);
  20. }
  21. }

第七項,統(tǒng)計學(xué)生人數(shù)

  1. void total ()//統(tǒng)計
  2. {
  3. printf('學(xué)生人數(shù)%d\n',count);
  4. }

完整的代碼

  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. #define N 100
  5. struct student
  6. {
  7. char num[20];//學(xué)號
  8. char name[20];//姓名
  9. float elec;//選修課
  10. float expe;//實驗課
  11. float requ;//必修課
  12. float sum;//總成績 '
  13. float ave;//平均成績
  14. }student[N];
  15. void Menu(); // 菜單
  16. void in();//錄入
  17. void show() ;//查找
  18. void order();//排序
  19. void del(); //刪除
  20. void modify();//修改
  21. void total ();//統(tǒng)計
  22. void insert ();//插入
  23. int count=0;//人數(shù)
  24. void save();//保存
  25. int main()
  26. {
  27. Menu();
  28. return 0;
  29. }
  30. void Menu()//菜單
  31. { while(1)
  32. {
  33. printf('\t\t\t---------------STUDENT---------------\t\t\t\n');
  34. printf('\t\t\t0.退出\t\t\t\n');
  35. printf('\t\t\t1.錄入成績\t\t\t\n');
  36. printf('\t\t\t2.查詢成績\t\t\t\n');
  37. printf('\t\t\t3.刪除成績\t\t\t\n');
  38. printf('\t\t\t4.修改成績\t\t\t\n');
  39. printf('\t\t\t5.插入成績\t\t\t\n');
  40. printf('\t\t\t6.排序\t\t\t\n');
  41. printf('\t\t\t7.統(tǒng)計學(xué)生人數(shù)\t\t\t\n');
  42. printf('\t\t\t-------------------------------------\t\t\t\n');
  43. printf('\t\t\t選擇(0---7)\t\t\t');
  44. int chioce;
  45. scanf('%d',&chioce);
  46. switch(chioce)
  47. {
  48. case 0:exit(0); break;
  49. case 1: in();save();system('pause');system('cls');break;//錄入
  50. case 2: show();system('pause');system('cls');break;//查詢
  51. case 3: del();save();system('pause');system('cls');break;//刪除
  52. case 4: modify();system('pause');system('cls');break;//修改
  53. case 5: insert();save();system('pause');system('cls');break;//插入
  54. case 6: order();system('pause');system('cls');break;//排序
  55. case 7: total();system('pause');system('cls');break;//統(tǒng)計
  56. default:printf('\n輸入錯誤,請輸入0---7\n\n');system('pause');system('cls');break;
  57. }
  58. }
  59. }
  60. void save() //保存
  61. {
  62. FILE* fp;
  63. char filename[100];
  64. int i;
  65. printf('請輸入要保存的文件名:\n');
  66. scanf('%s', filename);
  67. if ((fp = fopen(filename, 'w')) == NULL)
  68. {
  69. printf('打開文件失??!\n');
  70. exit(0);
  71. }
  72. for (i = 1; i<=count; i++)
  73. {
  74. if (fwrite(&student[i], sizeof(struct student), 1, fp) != 1)
  75. printf('保存失??!\n');
  76. }
  77. printf('保存成功!\n');
  78. fclose(fp);
  79. }
  80. void in()//錄入信息
  81. {
  82. void save() ;
  83. int i,n;
  84. printf('輸入錄取學(xué)生的數(shù)量\n');
  85. scanf('%d', &n);
  86. for (i=1 ; i<=n; i++)
  87. { printf('請輸入第%d位學(xué)生學(xué)號:\n',i);
  88. scanf('%s',student[i].num);
  89. printf('請輸入第%d位學(xué)生姓名:\n', i );
  90. scanf('%s',student[i].name);
  91. printf('請輸入第%d位學(xué)生選修課成績:\n', i );
  92. scanf('%f',&student[i].elec);
  93. printf('請輸入第%d位學(xué)生實驗成績:\n', i );
  94. scanf('%f', &student[i].expe);
  95. printf('請輸入第%d位學(xué)生必修課成績:\n', i );
  96. scanf('%f', &student[i].requ);
  97. student[i].sum=student[i].elec+student[i].expe+student[i].requ;
  98. student[i].ave=student[i].sum /3;
  99. count++;
  100. }
  101. printf('錄入成功\n');
  102. }
  103. void modify()//修改
  104. { void save() ;
  105. int i,j,h;
  106. float score;
  107. char xh[20];
  108. printf ('01.輸入修改的學(xué)生的學(xué)號:\n') ;
  109. scanf('%s',xh);
  110. for(i=1;i<N;i++)
  111. if (strcmp(student[i].num,xh)==0)
  112. j=i;
  113. printf('請選擇修改內(nèi)容\n');
  114. printf('1.修改該學(xué)生的選修課成績\n');
  115. printf('2.修改該學(xué)生的實驗課成績\n');
  116. printf('3.修改該學(xué)生的必修課成績\n');
  117. scanf('%d',&h);
  118. switch (h)
  119. {
  120. case 1:printf('請輸入該學(xué)生的選修課成績\n');scanf('%f',&score);student[j].elec=score; break;
  121. case 2:printf('請輸入該學(xué)生的實驗課成績\n');scanf('%f',&score);student[j].expe=score;break;
  122. case 3:printf('請輸入該學(xué)生的必修課成績\n');scanf('%f',&score);student[j].requ=score;break;
  123. default :printf('\n輸入錯誤,請輸入1---3\n\n'); break;
  124. }
  125. student[j].sum = student[j].elec+student[j].expe + student[j].requ;
  126. printf('修改后為:\n');
  127. printf('\n學(xué)號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1f\n',
  128. student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave);
  129. printf('\n');
  130. printf('修改成功\n') ;
  131. }
  132. void show() //查詢
  133. {
  134. int i;
  135. char xh[20];
  136. printf('請輸入要查詢的學(xué)生學(xué)號:\n');
  137. getchar();
  138. gets(xh);
  139. for (i=0;i<N;i++)
  140. {
  141. if(strcmp(student[i].num,xh)==0)
  142. printf('\n學(xué)號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1f\n',
  143. student[i].num,student[i].name,student[i].elec,student[i].expe,student[i].requ,student[i].sum,student[i].ave);
  144. }
  145. }
  146. void order()//排序
  147. {
  148. int i,j,m;
  149. for(j=1;j<=count-1;j++)
  150. { m=j;
  151. for(i=j+1;i<=count;i++)
  152. {
  153. if(student[i].sum < student[m].sum)
  154. {
  155. student[0]=student[i];
  156. student[i]=student[m];
  157. student[m]=student[0];
  158. }
  159. }
  160. }
  161. for(j=1;j<=count;j++)
  162. {
  163. printf('\n學(xué)號:%-5s 姓名:%-5s 選修課成績:%-5.1f 實驗課成績:%-5.1f 必修課成績:%-5.1f 總分:%-5.1f 平均分:%-5.1f\n',
  164. student[j].num,student[j].name,student[j].elec,student[j].expe,student[j].requ,student[j].sum,student[j].ave);
  165. }
  166. }
  167. void del()//刪除
  168. {
  169. void save() ;
  170. int j,a=0,k=count;
  171. char xh[25];
  172. printf('所要刪除的學(xué)生學(xué)號為:\n');
  173. scanf('%s',xh);
  174. flush(stdin);
  175. for (j=0;j<count;j++)
  176. {
  177. if (strcmp(student[j].num,xh)==0)
  178. {
  179. for (j=a;j<count;j++)
  180. student[j]=student[j+1];
  181. count--;
  182. if (count<k)
  183. printf('刪除成功\n');
  184. }
  185. a++;
  186. }
  187. if (j==count-1)
  188. printf('沒有你所要刪除的學(xué)生的信息\n');
  189. }
  190. void insert ()//插入
  191. {void save();
  192. int m, flag, i = count, j,k;
  193. printf('請輸入待添加的學(xué)生人數(shù):\n');
  194. scanf('%d', &m);
  195. if (m > 0)
  196. {
  197. k=count+1;
  198. for(i=k;i<=count+m;i++)
  199. {
  200. flag = 1;
  201. while (flag!= 0)
  202. {
  203. flag = 0;
  204. printf('請輸入第%d位學(xué)生的學(xué)號:\n', i);
  205. getchar();
  206. gets(student[i].num);
  207. for (j = 0; j < i; j++)
  208. {
  209. if (strcmp(student[i].num, student[j].num) == 0)
  210. {
  211. printf('該學(xué)號已存在,請重新輸入!\n');
  212. flag = 1;
  213. break;
  214. }
  215. }
  216. }
  217. printf('請輸入第%d位學(xué)生姓名:\n', i );
  218. gets(student[i].name);
  219. printf('請輸入第%d位學(xué)生選修課成績:\n', i );
  220. scanf('%f',&student[i].elec);
  221. printf('請輸入第%d位學(xué)生實驗成績:\n', i );
  222. scanf('%f', &student[i].expe);
  223. printf('請輸入第%d位學(xué)生必修課成績:\n', i );
  224. scanf('%f', &student[i].requ);
  225. student[i].sum=student[i].elec+student[i].expe+student[i].requ;
  226. student[i].ave=student[i].sum /3;
  227. }
  228. count+= m;
  229. printf('添加完成!\n');
  230. system('pause');
  231. }
  232. }
  233. void total ()//統(tǒng)計
  234. {
  235. printf('學(xué)生人數(shù)%d\n',count);
  236. }

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    久久大香蕉一区二区三区| 日韩一区二区三区18| 日本免费一区二区三女| 国产一区二区久久综合| 午夜福利视频偷拍91| 好骚国产99在线中文| 日本一区二区三区黄色| 日韩精品区欧美在线一区| 色无极东京热男人的天堂| 国产精品免费福利在线| 国产欧美精品对白性色| 国产一区二区久久综合| 国产日韩熟女中文字幕| 亚洲免费黄色高清在线观看| 高潮日韩福利在线观看| 99精品国产自在现线观看| 亚洲性生活一区二区三区| 亚洲一区二区三区精选| 日韩精品一区二区一牛| 午夜日韩在线观看视频| 国产目拍亚洲精品区一区| 久久午夜福利精品日韩| 日本丰满大奶熟女一区二区| 少妇人妻无一区二区三区| 国产又色又爽又黄的精品视频| 国产农村妇女成人精品| 国产精品一区日韩欧美| 久久中文字人妻熟女小妇| 国产精品午夜福利在线观看| 欧美日韩综合免费视频| 午夜精品国产精品久久久| 女同伦理国产精品久久久| 国产高清一区二区不卡| 亚洲最新的黄色录像在线| 国产黄色高清内射熟女视频| 久久永久免费一区二区| 国产水滴盗摄一区二区| 在线观看免费无遮挡大尺度视频| 高清一区二区三区大伊香蕉| 国产在线一区二区三区不卡| 成人免费视频免费观看|