歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言:結構體測試程序 -- 學生信息管理系統

C語言:結構體測試程序 -- 學生信息管理系統

日期:2017/3/1 10:17:10   编辑:Linux編程

1. 菜單功能

2. 添加學生信息功能

3. 學生姓名列表

4. 所有學生詳細列表功能

5. 按姓名查找功能

6. 按年齡查找功能

7. 按姓別查找功能

8. 按身高查找功能

9. 刪除學生信息功能

10. 退出功能

  1. /*
  2. *1. 菜單功能
  3. *2. 添加學生信息功能
  4. *3. 學生姓名列表
  5. *4. 所有學生詳細列表功能
  6. *5. 按姓名查找功能
  7. *6. 按年齡查找功能
  8. *7. 按姓別查找功能
  9. *8. 按身高查找功能
  10. *9. 刪除學生信息功能
  11. *10. 退出功能
  12. *
  13. * */
  14. #include <stdio.h>
  15. #include <stdlib.h>
  16. #include <string.h>
  17. /*定義一個學生信息結構體*/
  18. struct student
  19. {
  20. char name[20];
  21. int age;
  22. int sex;
  23. int height;
  24. };
  25. /*定義全局變量*/
  26. int i;
  27. struct student stu[100];
  28. /*添加用戶*/
  29. struct student addstu(void)
  30. {
  31. struct student stu;
  32. char name[20];
  33. printf("\n");
  34. printf("Add a student:\n");
  35. printf("------------------------------\n");
  36. printf("input name:\n");
  37. scanf("%s", name);
  38. strcpy(stu.name, name);
  39. printf("input age:\n");
  40. scanf("%d", &stu.age);
  41. printf("input sex(0:male;1:female)\n");
  42. scanf("%d", &stu.sex);
  43. printf("input height:\n");
  44. scanf("%d", &stu.height);
  45. printf("------------------------------\n\n");
  46. return stu;
  47. }
  48. /*顯示用戶信息*/
  49. void showstu(struct student stu)
  50. {
  51. printf("------------------------------\n");
  52. printf("Name: %s\n", stu.name);
  53. printf("Age: %d\n", stu.age);
  54. printf("Sex(0:male;1:female): %d\n:", stu.sex);
  55. printf("Height: %d\n", stu.height);
  56. printf("------------------------------\n\n");
  57. }
  58. /*刪除用戶
  59. *
  60. *說明:
  61. *依用戶名來查找需要刪除的用戶,
  62. *找到相對應的用戶信息後,
  63. *將它後面一位學生的信息賦值給它,
  64. *依次將後面的的學生信息都向前移一位,
  65. *這樣就算是刪掉了一位用戶
  66. * */
  67. void delstu()
  68. {
  69. char name[20];
  70. int j,k,t;
  71. t=0;
  72. printf("please input a name:\n");
  73. scanf("%s", name);
  74. for(j=0;j<i;j++)
  75. {
  76. if(!strcmp(stu[j].name, name))
  77. {
  78. if(j==i) //如果刪除的是最後一次,直接將i減一就行
  79. {
  80. i--;
  81. t++;
  82. }
  83. else
  84. {
  85. for(k=j;k<i-1;k++)
  86. {
  87. stu[k] = stu[k+1]; /*如果刪除的不是最後一次,依次將後面用戶賦值給前一次用戶*/
  88. }
  89. t++;
  90. i--;
  91. }
  92. }
  93. }
  94. if(t==0)
  95. {
  96. printf("------------------------------\n");
  97. printf("There is not such student!\n\n");
  98. printf("------------------------------\n]n");
  99. }
  100. else
  101. {
  102. printf("------------------------------\n");
  103. printf("刪除成功!\n");
  104. printf("------------------------------\n\n");
  105. }
  106. }
  107. /*依姓名查找學生信息*/
  108. void selbyname()
  109. {
  110. char name[20];
  111. int j,t;
  112. t=0;
  113. printf("please input a name:\n");
  114. scanf("%s", name);
  115. for(j=0;j<i;j++)
  116. {
  117. if(!strcmp(stu[j].name, name))/*strcmp()比較後,如果相同返回0,而我們需要的是1,所以取反*/
  118. {
  119. showstu(stu[j]);
  120. t++;
  121. }
  122. }
  123. if(t==0)
  124. {
  125. printf("------------------------------\n");
  126. printf("There is no such student!\n");
  127. printf("------------------------------\n\n");
  128. }
  129. }
  130. /*依年齡查找學生信息*/
  131. void selbyage()
  132. {
  133. int j,k,t,n;
  134. n=0;
  135. printf("input a top age:\n");
  136. scanf("%d", &j);
  137. printf("input a bottom age:\n");
  138. scanf("%d", &k);
  139. for(t=0;t<i;t++)
  140. {
  141. if(stu[t].age > k && stu[t].age < j)
  142. {
  143. showstu(stu[t]);
  144. n++;
  145. }
  146. }
  147. if(n==0)
  148. {
  149. printf("------------------------------\n");
  150. printf("There is no such student!\n\n");
  151. printf("------------------------------\n\n");
  152. }
  153. }
  154. /*依姓別查找學生信息*/
  155. void selbysex()
  156. {
  157. int j,k,n;
  158. n=0;
  159. printf("input sex:\n");
  160. scanf("%d", &j);
  161. for(k=0;k<i;k++)
  162. {
  163. if(stu[k].sex == j)
  164. {
  165. showstu(stu[k]);
  166. n++;
  167. }
  168. }
  169. if(n==0)
  170. {
  171. printf("------------------------------\n");
  172. printf("There is no such student!\n\n");
  173. printf("------------------------------\n\n");
  174. }
  175. }
  176. /*依身高查找學生信息*/
  177. void selbyheight()
  178. {
  179. int j,k,m,n;
  180. n=0;
  181. printf("input a top height:\n");
  182. scanf("%d", &j);
  183. printf("input a bottom height:\n");
  184. scanf("%d", &k);
  185. for(m=0;m<i;m++)
  186. {
  187. if(stu[m].height < j && stu[m].height > k)
  188. {
  189. showstu(stu[m]);
  190. n++;
  191. }
  192. }
  193. if(n==0)
  194. {
  195. printf("------------------------------\n");
  196. printf("There is no such a student!\n\n");
  197. printf("------------------------------\n\n");
  198. }
  199. }
  200. /*菜單功能,供用戶選擇*/
  201. int menu()
  202. {
  203. int m;
  204. printf("Please select a menu:\n");
  205. printf(" 1. Add a student.\n");
  206. printf(" 2. List all studnet name.\n");
  207. printf(" 3. List all informations of students.\n");
  208. printf(" 4. Select a student by name.\n");
  209. printf(" 5. Select students by age.\n");
  210. printf(" 6. Select students by sex.\n");
  211. printf(" 7. Select sutdnets by height.\n");
  212. printf(" 8. Delete a student.\n");
  213. printf(" 9. Exit.\n");
  214. scanf("%d", &m);
  215. if(m==9)
  216. {
  217. printf("------------------------------\n");
  218. printf("Beybey!\n");
  219. printf("------------------------------\n\n");
  220. exit(1);
  221. }
  222. if(m<1 || m>9)
  223. {
  224. printf("------------------------------\n");
  225. printf("error, input again!\n");
  226. printf("------------------------------\n\n");
  227. return;
  228. }
  229. else
  230. {
  231. return m;
  232. }
  233. }
  234. /*主程序*/
  235. main()
  236. {
  237. int j,k;
  238. i=0;
  239. while(1)
  240. {
  241. j = menu();
  242. if(j==1)
  243. {
  244. stu[i] = addstu();
  245. i++;
  246. }
  247. if(j==2)
  248. {
  249. printf("\n");
  250. for(k=0;k<i;k++)
  251. {
  252. printf("%d. %s\n", k, stu[k].name);
  253. }
  254. }
  255. if(j==3)
  256. {
  257. printf("\n");
  258. for(k=0;k<i;k++)
  259. {
  260. showstu(stu[k]);
  261. }
  262. }
  263. if(j==4)
  264. {
  265. selbyname();
  266. }
  267. if(j==5)
  268. {
  269. selbyage();
  270. }
  271. if(j==6)
  272. {
  273. selbysex();
  274. }
  275. if(j==7)
  276. {
  277. selbyheight();
  278. }
  279. if(j==8)
  280. {
  281. delstu();
  282. }
  283. }
  284. }
Copyright © Linux教程網 All Rights Reserved