当前位置:   article > 正文

学生选修课程管理系统用C语言实现(大学生课设作业版)_c语言学生选修课程管理系统

c语言学生选修课程管理系统

如果想看完整版的实验报告,我上传了资源,下面内容只是实验报告的精华

需求描述

系统角色:学生、教师、系统管理员。其功能分别描述如下:

一、学生:普通用户,能够完成以下功能:

1)录入个人信息,包括:

(1)姓名;

(2)年龄;

(3)性别;

请大家根据学校教学管理系统内容添加

2)信息查询

根据自己的学号查询自己的相关信息,包括:

(1)姓名;

(2)年龄;

(3)性别;

(4)所选课程名;

请大家根据学校教学管理系统内容添加。

3)信息修改

能够修改部分个人信息,包括:姓名、年龄、性别。

4)学生选课

学生根据时间,添加选修课程相关信息,包括:

(1)所选课程名;

(2)学分;

(3)上课时间;

(4)上课地点;

(5)授课教师

请大家根据学校教学管理系统内容添加。

二、教师:普通用户,能够完成以下操作:

1)课程信息录入

2)课程信息修改

3)学生选修课程信息查询

4)学生信息打印…

三、系统管理员

能够添加、删除和修改系统用户,设置用户权限。包括

1)添加新用户

2)删除用户                                              

3)修改用户权限

概要设计

一.通过自定义void函数完成:

学生使用功能流程

主界面:

1)资料浏览

2)资料修改

3)选课查询

4)退出

教师使用流程描述:

主界面:

1)课程录入

2)课程修改

3)课程打印

4)课表查询

5)退出”

系统管理员使用流程

主界面:

1)用户资料打印

2)添加用户

3)删除用户

4)修改用户权限

5)退出

二.通过使用指针进行传参 printUserInfo(char* username) ,打印用户信息。

       void printUserInfo(char* username)

{

          if (strcmp(username, "admin") == 0)

          {

            printf("用户名:%s,权限:管理员\n", username);

           }

else if (strcmp(username, "guest") == 0)

{

            printf("用户名:%s,权限:访客\n", username);

           }

else

{

            printf("用户名不存在。\n");

           }

}

三.主程序主要通过

1)“if else”语句

2)for循环

3)循环嵌套

4)结构体

5)指针数组

6)strcpy语句

7)switch语句

8)调用函数

9)宏定义

详细设计(流程图)

四.程序源码(这个代码直接就能用,上面有我写的注释,就不一一赘述了)

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. // 定义学生结构体
  6. typedef struct
  7. {
  8.     int id;
  9.     char name[50];
  10.     char major[50];
  11. } Student;
  12. // 定义课程结构体
  13. typedef struct
  14.  {
  15.     int id;
  16.     char name[50];
  17. } Course;//typedefe 重新定义 Course等于struct ,则调用时 Course num(随机定义名)
  18. // 假设最多有100个学生和10门课程
  19. #define MAX_STUDENTS 100
  20. #define MAX_COURSES 10
  21. // 全局变量
  22. Student students[MAX_STUDENTS];
  23. int numStudents = 0;
  24. Course courses[MAX_COURSES];
  25. int numCourses = 0;
  26. // 函数声明
  27. void login();
  28. void studentMenu(int studentIndex);
  29. void teacherMenu();
  30. void adminMenu();
  31. void printStudentInfo(int studentIndex);
  32. void modifyStudentInfo(int studentIndex);
  33. void searchCourse(int studentIndex);
  34. void addCourse();
  35. void modifyCourse();
  36. void printCourseStudents();
  37. void printCourseSchedule();
  38. void printUserInfo(char* username);
  39. void addUser();
  40. void deleteUser();
  41. void modifyUserPermissions();
  42. // 程序入口
  43. int main()
  44. {
  45.     // 初始化课程
  46.     Course course1 = { 1, "计算机科学" };
  47.     Course course2 = { 2, "数学" };
  48.     courses[numCourses++] = course1;
  49.     courses[numCourses++] = course2;
  50.     // 初始化学生                          
  51.     Student student1 = { 1, "张三", "计算机科学" };
  52.     Student student2 = { 2, "李四", "数学" };
  53.     students[numStudents++] = student1;
  54.     students[numStudents++] = student2;
  55.     // 登录
  56.     login();
  57.     return 0;
  58. }
  59. // 登录菜单
  60. void login()
  61.  {
  62.     int role;
  63.     printf("请选择角色:\n");
  64.     printf("1. 学生\n");
  65.     printf("2. 教师\n");
  66.     printf("3. 管理员\n");
  67.     printf("请输入数字选择角色:");
  68.     scanf("%d", &role);
  69.     if (role == 1)
  70.       {
  71.         int studentIndex;
  72.         int id,gum;
  73.         printf("请输入学生ID:");
  74.         scanf("%d", &id);
  75.         for (int i = 0; i < numStudents; i++)
  76.             {
  77.             if (students[i].id == id)
  78.                   {
  79.                 studentIndex = i;
  80.                 studentMenu(studentIndex);
  81.                 return;
  82.             }
  83.         }
  84.         printf("学生ID不存在,请重新登录。\n");
  85.             scanf("%d",&gum);
  86.         login();
  87.     }
  88.     else if (role == 2) {
  89.         teacherMenu();
  90.     }
  91.     else if (role == 3) {
  92.         adminMenu();
  93.     }
  94.     else
  95.       {
  96.         printf("无效的角色,请重新登录。\n");
  97.         login();
  98.     }
  99. }
  100. // 学生菜单
  101. void studentMenu(int studentIndex)
  102.  {
  103.     int choice;
  104.     printf("\n欢迎,%s!\n", students[studentIndex].name);
  105.     printf("请选择功能:\n");
  106.     printf("1. 资料浏览\n");
  107.     printf("2. 资料修改\n");
  108.     printf("3. 选课查询\n");
  109.     printf("4. 退出\n");
  110.     printf("请输入数字选择功能:");
  111.     scanf("%d", &choice);
  112.     switch (choice)
  113.       {
  114.     case 1:
  115.         printStudentInfo(studentIndex);
  116.         studentMenu(studentIndex);
  117.         break;
  118.     case 2:
  119.         modifyStudentInfo(studentIndex);
  120.         studentMenu(studentIndex);
  121.         break;
  122.     case 3:
  123.         searchCourse(studentIndex);
  124.         studentMenu(studentIndex);
  125.         break;
  126.     case 4:
  127.         login();
  128.         break;
  129.     default:
  130.         printf("无效的选择,请重新输入。\n");
  131.         studentMenu(studentIndex);
  132.         break;
  133.     }
  134. }
  135. // 教师菜单
  136. void teacherMenu() {
  137.     int num;
  138.     printf("\n欢迎,教师!\n");
  139.     printf("请选择功能:\n");
  140.     printf("1. 课程录入\n");
  141.     printf("2. 课程修改\n");
  142.     printf("3. 课程打印\n");
  143.     printf("4. 课表查询\n");
  144.     printf("5. 退出\n");
  145.     printf("请输入数字选择功能:");
  146.     scanf("%d", &num);
  147.     switch (num)
  148.       {
  149.     case 1:
  150.         addCourse();
  151.         teacherMenu();
  152.         break;
  153.     case 2:
  154.         modifyCourse();
  155.         teacherMenu();
  156.         break;
  157.     case 3:
  158.         printCourseStudents();
  159.         teacherMenu();
  160.         break;
  161.     case 4:
  162.         printCourseSchedule();
  163.         teacherMenu();
  164.         break;
  165.     case 5:
  166.         login();
  167.         break;
  168.     default:
  169.         printf("无效的选择,请重新输入。\n");
  170.         teacherMenu();
  171.         break;
  172.     }
  173. }
  174. // 管理员菜单
  175. void adminMenu()
  176. {
  177.     int choice;
  178.     printf("\n欢迎,管理员!\n");
  179.     printf("请选择功能:\n");
  180.     printf("1. 用户资料打印\n");
  181.     printf("2. 添加用户\n");
  182.     printf("3. 删除用户\n");
  183.     printf("4. 修改用户权限\n");
  184.     printf("5. 退出\n");
  185.     printf("请输入数字选择功能:");
  186.     scanf("%d", &choice);
  187.     switch (choice)
  188.       {
  189.     case 1: {
  190.         char username[50];
  191.         printf("请输入要打印信息的用户名:");
  192.         scanf("%s", username);
  193.         printUserInfo(username);
  194.         adminMenu();
  195.         break;
  196.     }
  197.     case 2:
  198.         addUser();
  199.         adminMenu();
  200.         break;
  201.     case 3:
  202.         deleteUser();
  203.         adminMenu();
  204.         break;
  205.     case 4:
  206.         modifyUserPermissions();
  207.         adminMenu();
  208.         break;
  209.     case 5:
  210.         login();
  211.         break;
  212.     default:
  213.         printf("无效的选择,请重新输入。\n");
  214.         adminMenu();
  215.         break;
  216.     }
  217. }
  218. // 打印学生信息
  219. void printStudentInfo(int studentIndex) {
  220.     printf("\n学号:%d\n", students[studentIndex].id);
  221.     printf("姓名:%s\n", students[studentIndex].name);
  222.     printf("专业:%s\n", students[studentIndex].major);
  223. }
  224. // 修改学生信息
  225. void modifyStudentInfo(int studentIndex)
  226. {
  227.     int choice;
  228.     printf("\n请选择要修改的字段:\n");
  229.     printf("1. 学号\n");
  230.     printf("2. 姓名\n");
  231.     printf("3. 专业\n");
  232.     printf("请输入数字选择字段:");
  233.     scanf("%d", &choice);
  234.     switch (choice)
  235.       {
  236.     case 1:
  237.         printf("请输入新的学号:");
  238.         scanf("%d", &students[studentIndex].id);
  239.         break;
  240.     case 2:
  241.         printf("请输入新的姓名:");
  242.         scanf("%s", students[studentIndex].name);
  243.         break;
  244.     case 3:
  245.         printf("请输入新的专业:");
  246.         scanf("%s", students[studentIndex].major);
  247.         break;
  248.     default:
  249.         printf("无效的选择,请重新输入。\n");
  250.         modifyStudentInfo(studentIndex);
  251.         break;
  252.     }
  253.     printf("学生信息修改成功!\n");
  254. }
  255. // 查询选课信息
  256. void searchCourse(int studentIndex) {
  257.     char courseName[50];
  258.     printf("请输入要查询的课程名:");
  259.     scanf("%s", courseName);
  260.     for (int i = 0; i < numCourses; i++) {
  261.         if (strcmp(courses[i].name, courseName) == 0) {
  262.             printf("学生%s是否选修%s课程:是\n", students[studentIndex].name, courseName);
  263.             return;
  264.         }
  265.     }
  266.     printf("学生%s是否选修%s课程:否\n", students[studentIndex].name, courseName);
  267. }
  268. // 添加课程
  269. void addCourse()
  270. {
  271.     if (numCourses >= MAX_COURSES) {
  272.         printf("课程数量已达上限,无法添加新课程。\n");
  273.         return;
  274.     }
  275.     Course course;
  276.     int id;
  277.     printf("请输入课程ID:");
  278.     scanf("%d", &id);
  279.     for (int i = 0; i < numCourses; i++) {
  280.         if (courses[i].id == id) {
  281.             printf("课程ID已存在,请重新输入。\n");
  282.             addCourse();
  283.             return;
  284.         }
  285.     }
  286.     course.id = id;
  287.     printf("请输入课程名称:");
  288.     scanf("%s", course.name);
  289.     courses[numCourses++] = course;
  290.     printf("课程添加成功!\n");
  291. }
  292. // 修改课程
  293. void modifyCourse() {
  294.     int choice;
  295.     printf("请输入要修改的课程ID:");
  296.     scanf("%d", &choice);
  297.     for (int i = 0; i < numCourses; i++) {
  298.         if (courses[i].id == choice) {
  299.             printf("\n当前课程信息:\n");
  300.             printf("课程ID:%d\n", courses[i].id);
  301.             printf("课程名称:%s\n", courses[i].name);
  302.             printf("请输入新的课程名称:");
  303.             scanf("%s", courses[i].name);
  304.             printf("课程信息修改成功!\n");
  305.             return;
  306.         }
  307.     }
  308.     printf("课程ID不存在,请重新输入。\n");
  309.     modifyCourse();
  310. }
  311. // 打印课程学生
  312. void printCourseStudents()
  313. {
  314.     int courseId;
  315.     printf("请输入课程ID:");
  316.     scanf("%d", &courseId);
  317.     for (int i = 0; i < numCourses; i++)
  318.       {
  319.         if (courses[i].id == courseId) {
  320.             printf("\n选修%s课程的学生如下:\n", courses[i].name);
  321.             for (int j = 0; j < numStudents; j++) {
  322.                 printf("学号:%d,姓名:%s\n", students[j].id, students[j].name);
  323.             }
  324.             return;
  325.         }
  326.     }
  327.     printf("课程ID不存在,请重新输入。\n");
  328.     printCourseStudents();
  329. }
  330. // 打印教师课表
  331. void printCourseSchedule()
  332.  {
  333.     printf("教师课表如下:\n");
  334.     for (int i = 0; i < numCourses; i++) {
  335.         printf("课程ID:%d,课程名称:%s\n", courses[i].id, courses[i].name);
  336.     }
  337. }
  338. // 打印用户信息
  339. void printUserInfo(char* username) {
  340.     // 假设有两个用户admin和guest
  341.     if (strcmp(username, "admin") == 0)
  342.       {
  343.         printf("用户名:%s,权限:管理员\n", username);
  344.     }
  345.     else if (strcmp(username, "guest") == 0) {
  346.         printf("用户名:%s,权限:访客\n", username);
  347.     }
  348.     else {
  349.         printf("用户名不存在。\n");
  350.     }
  351. }
  352. // 添加用户
  353. void addUser()
  354.  {
  355.     char username[50];
  356.     char password[50];
  357.     printf("请输入用户名:");
  358.     scanf("%s", username);
  359.     printf("请输入初始密码:");
  360.     scanf("%s", password);
  361.     printf("用户添加成功!\n");
  362. }
  363. // 删除用户
  364. void deleteUser() {
  365.     char username[50];
  366.     printf("请输入要删除的用户名:");
  367.     scanf("%s", username);
  368.     // 假设不能删除admin用户
  369.     if (strcmp(username, "admin") == 0)
  370.       {
  371.         printf("不能删除管理员账号。\n");
  372.         return;
  373.     }
  374.     printf("用户删除成功!\n");
  375. }
  376. // 修改用户权限
  377. void modifyUserPermissions()
  378. {
  379.     char username[50];
  380.     int permissions;
  381.     printf("请输入要修改权限的用户名:");
  382.     scanf("%s", username);
  383.     printf("请输入新的权限(1表示管理员,2表示访客):");
  384.     scanf("%d", &permissions);
  385.     printf("用户权限修改成功!\n");
  386. }

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

闽ICP备14008679号