当前位置:   article > 正文

C语言课程设计-选修课程系统_学生选课系统c语言

学生选课系统c语言

  1. #include <stdio.h>
  2. #include <string.h>
  3. int allChoose(); // 总菜单
  4. int teacher(); // 教师端
  5. int student(); // 学生端
  6. int output(int m, int n); // 课程信息输出函数
  7. int input(); // 1.课程信息录入
  8. int allOutput(); // 2.全部课程显示
  9. int search(); // 3.课程信息查询
  10. int change(); // 4.课程信息修改
  11. int choose(); // 5.选修课程选择
  12. int information(); // 6.学生课程信息查看
  13. int back(); // 返回总菜单功能
  14. struct course
  15. { // 建立结构体
  16. int number;
  17. char name[20], nature[16];
  18. int totalTime, time1, time2;
  19. float credit;
  20. char term[10];
  21. int t; // 用于标记是否被学生选择
  22. } classList[10]; // 最多录入10个课程
  23. int i = 0; // 使结构体添加从classList[0]开始
  24. int main()
  25. {
  26. printf("+++++++++++++++++学生选修课程系统++++++++++++++++++++++++\n");
  27. allChoose();
  28. }
  29. /*身份选择*/
  30. int allChoose()
  31. {
  32. int n = 0;
  33. printf("请选择端口:\n");
  34. printf("1.教师端\n");
  35. printf("2.学生端\n");
  36. printf("3.退出系统\n");
  37. printf("请输入数字(1/2/3):");
  38. L1:
  39. scanf("%d", &n);
  40. if (n == 1)
  41. teacher();
  42. else if (n == 2)
  43. {
  44. if (i == 0)
  45. {
  46. printf("\n请先通过教师端录入课程!\n\n");
  47. allChoose();
  48. }
  49. else
  50. student();
  51. }
  52. else if (n == 3) // 退出系统
  53. {
  54. printf("退出成功!");
  55. return 0;
  56. }
  57. else
  58. {
  59. printf("输入错误,请重新输入:");
  60. rewind(stdin); // 清空缓冲区的内容,防止将其他型变量输入给int型n出现错误
  61. goto L1;
  62. }
  63. return 0;
  64. }
  65. /*教师端*/
  66. int teacher()
  67. {
  68. int flag;
  69. printf("\n---->教师端<-----\n");
  70. printf("请选择要执行的操作:\n");
  71. printf("1.课程信息录入\n");
  72. printf("2.课程信息修改\n");
  73. printf("3.返回端口选择\n");
  74. printf("请选择(数字1/2/3):");
  75. L2:
  76. scanf("%d", &flag);
  77. switch (flag)
  78. { // 输入的数字决定应该执行的函数
  79. case 1:
  80. input();
  81. break; // 1.课程信息录入
  82. case 2:
  83. change();
  84. break; // 2.课程信息修改
  85. case 3:
  86. printf("\n");
  87. allChoose();
  88. break; // 3.返回端口选择
  89. default:
  90. {
  91. printf("错误输入,请重新输入:");
  92. rewind(stdin);
  93. goto L2;
  94. }
  95. }
  96. return 0;
  97. }
  98. /*学生端*/
  99. int student()
  100. {
  101. int n;
  102. printf("\n---->学生端<-----\n");
  103. printf("1.全部课程显示\n");
  104. printf("2.课程信息查询\n");
  105. printf("3.选修课程选择\n");
  106. printf("4.学生课程信息\n");
  107. printf("5.返回端口选择\n");
  108. printf("请选择(数字1/2/3/4/5):");
  109. L3:
  110. scanf("%d", &n);
  111. switch (n)
  112. {
  113. case 1:
  114. allOutput();
  115. break; // 1.全部课程显示
  116. case 2:
  117. search();
  118. break; // 2.课程信息查询
  119. case 3:
  120. choose();
  121. break; // 3.选修课程选择
  122. case 4:
  123. information();
  124. break; // 4.学生课程信息查看
  125. case 5:
  126. printf("\n");
  127. allChoose();
  128. break; // 3.返回端口选择
  129. default:
  130. {
  131. printf("错误输入,请重新输入:");
  132. rewind(stdin);
  133. goto L3;
  134. }
  135. }
  136. return 0;
  137. }
  138. /*1.课程信息录入*/
  139. int input()
  140. {
  141. int n = 0;
  142. printf("\n1.课程信息录入\n");
  143. printf("添加新的课程:\n");
  144. printf("输入课程编号:");
  145. scanf("%d", &classList[i].number); // 课程编号
  146. printf("输入课程名称:");
  147. scanf("%s", classList[i].name); // 课程名称
  148. printf("输入课程性质:");
  149. scanf("%s", classList[i].nature); // 课程性质
  150. printf("输入总学时:");
  151. scanf("%d", &classList[i].totalTime); // 总学时
  152. printf("输入授课学时:");
  153. scanf("%d", &classList[i].time1); // 授课学时
  154. printf("输入实验/上机学时:");
  155. scanf("%d", &classList[i].time2); // 实验/上机学时
  156. printf("输入学分:");
  157. scanf("%f", &classList[i].credit); // 学分
  158. printf("输入开课学期:");
  159. scanf("%s", classList[i].term); // 开课学期
  160. classList[i].t = 0; // 默认t为0,即未被学生选择
  161. printf("录入成功!\n");
  162. i++;
  163. back(); // 返回总菜单
  164. return 0;
  165. }
  166. /*课程信息输出函数*/
  167. int output(int m, int n)
  168. {
  169. for (m = m; m < n; m++) // 循环输出目标课程
  170. {
  171. printf("课程编号:%d|名称:%s |性质:%s |总学时:%d|授课学时:%d|实验/上机学时:%d|学分:%.1f|开课学期:%s\n", classList[m].number, classList[m].name, classList[m].nature, classList[m].totalTime, classList[m].time1, classList[m].time2, classList[m].credit, classList[m].term);
  172. }
  173. return 0;
  174. }
  175. /*2.全部课程显示*/
  176. int allOutput()
  177. {
  178. printf("\n2.全部课程显示\n");
  179. output(0, i); // 控制output中for循环次数使全部课程显示
  180. printf("显示成功!\n");
  181. back(); // 返回总菜单
  182. return 0;
  183. }
  184. /*3.课程信息查询*/
  185. int search()
  186. {
  187. int m, num, j;
  188. char name[20], nature[16];
  189. printf("\n3.课程信息查询\n");
  190. L4:
  191. printf("请输入要查询的方式(1.课程编号/2.课程名称/3.课程性质):");
  192. scanf("%d", &m);
  193. if (m == 1) // 1.课程编号查询
  194. {
  195. printf("1.根据课程编号查询\n");
  196. printf("请输入课程编号:");
  197. scanf("%d", &num);
  198. for (j = 0; j < i; j++)
  199. {
  200. if (num == classList[j].number) // 将a与已有课程的编号number比较
  201. output(j, j + 1); // 控制输出函数只输出classList[j]的信息
  202. }
  203. }
  204. else if (m == 2) // 2.课程名称查询
  205. {
  206. printf("2.根据课程名称查询\n");
  207. printf("请输入课程名称:");
  208. scanf("%s", name);
  209. for (j = 0; j < i; j++)
  210. {
  211. if (!strcmp(name, classList[j].name)) // 将a与已有课程的名字name比较
  212. output(j, j + 1); // 控制输出函数只输出classLists[j]的信息
  213. }
  214. }
  215. else if (m == 3) // 3.课程性质查询
  216. {
  217. printf("3.根据课程性质查询\n");
  218. printf("请输入课程性质:");
  219. scanf("%s", nature);
  220. for (j = 0; j < i; j++)
  221. {
  222. if (!strcmp(nature, classList[j].nature)) // 将a与已有课程的性质nature比较
  223. output(j, j + 1); // 控制输出函数只输出classList[j]的信息
  224. }
  225. }
  226. else // 当输入的数字不是1/2/3时重新输入
  227. {
  228. printf("错误输入,请重新输入!\n");
  229. rewind(stdin);
  230. goto L4;
  231. }
  232. back(); // 返回总菜单
  233. return 0;
  234. }
  235. /*4.课程信息修改*/
  236. int change()
  237. {
  238. int j, n;
  239. printf("\n4.课程信息修改\n");
  240. output(0, i); // 控制output中for循环次数使全部课程显示,便于选择修改的课程
  241. printf("\n请输入要修改的课程编号:");
  242. scanf("%d", &n);
  243. for (j = 0; j < i; j++)
  244. {
  245. if (n == classList[j].number) // 将n与已有课程的编号number比较
  246. {
  247. output(j, j + 1); // 控制输出函数只输出class[j]的信息
  248. break;
  249. }
  250. }
  251. printf("输入新的课程编号:");
  252. scanf("%d", &classList[j].number); // 新的课程编号
  253. printf("输入新的课程名称:");
  254. scanf("%s", classList[j].name); // 新的课程名称
  255. printf("输入新的课程性质:");
  256. scanf("%s", classList[j].nature); // 新的课程性质
  257. printf("输入新的总学时:");
  258. scanf("%d", &classList[j].totalTime); // 新的总学时
  259. printf("输入新的授课学时:");
  260. scanf("%d", &classList[j].time1); // 新的授课学时
  261. printf("输入新的实验/上机学时:");
  262. scanf("%d", &classList[j].time2); // 新的实验/上机学时
  263. printf("输入新的学分:");
  264. scanf("%f", &classList[j].credit); // 新的学分
  265. printf("输入新的开课学期:");
  266. scanf("%s", classList[j].term); // 新的开课学期
  267. classList[j].t = 0; // t依然为0,即未被学生选择
  268. printf("修改成功!\n");
  269. back(); // 返回总菜单
  270. return 0;
  271. }
  272. /*5.选修课程选择*/
  273. int choose()
  274. {
  275. int j, n = 0, k;
  276. printf("\n2.选修课程显示\n");
  277. output(0, i); // 控制output中for循环次数使全部课程显示
  278. printf("请输入要选择的课程编号:");
  279. scanf("%d", &n);
  280. for (j = 0; j < i; j++)
  281. {
  282. if (n == classList[j].number)
  283. {
  284. if (classList[j].t == 1) // 如果t=1说明该课程已经选择
  285. printf("课程已选");
  286. else
  287. {
  288. classList[j].t = 1; // 用t=1等于表示学生已选
  289. printf("课程%d选择成功\n", n);
  290. break;
  291. }
  292. }
  293. }
  294. back(); // 返回总菜单
  295. return 0;
  296. }
  297. /*6.学生课程信息查看*/
  298. int information()
  299. {
  300. int j;
  301. printf("\n4.学生课程信息\n");
  302. printf("-->已选课程<--\n");
  303. for (j = 0; j < i; j++)
  304. {
  305. if (classList[j].t == 1) // 判断结构体中t是否为1
  306. output(j, j + 1); // 控制输出函数只输出class[j]的信息
  307. }
  308. printf("显示成功!\n");
  309. back(); // 返回总菜单
  310. return 0;
  311. }
  312. /*返回总菜单*/
  313. int back()
  314. {
  315. int t = 0;
  316. printf("\n");
  317. printf("返回总菜单(请输入1):");
  318. L5:
  319. scanf("%d", &t);
  320. if (t == 1)
  321. allChoose(); // 返回总菜单
  322. else
  323. {
  324. rewind(stdin);
  325. printf("错误输入,请重新输入:");
  326. goto L5;
  327. }
  328. return 0;
  329. }

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

闽ICP备14008679号