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

本文详细描述了一个学校教学管理系统的功能需求,包括学生、教师和系统管理员的角色,以及各自可以完成的操作,如个人信息管理、课程信息管理、用户权限设置等。同时提供了程序设计的关键步骤和源码片段。
摘要由CSDN通过智能技术生成

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

需求描述

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

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

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)宏定义

详细设计(流程图)

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

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

// 定义学生结构体

typedef struct

{

    int id;

    char name[50];

    char major[50];

} Student;

// 定义课程结构体

typedef struct

 {

    int id;

    char name[50];

} Course;//typedefe 重新定义 Course等于struct ,则调用时 Course num(随机定义名)

// 假设最多有100个学生和10门课程

#define MAX_STUDENTS 100

#define MAX_COURSES 10

// 全局变量

Student students[MAX_STUDENTS];

int numStudents = 0;

Course courses[MAX_COURSES];

int numCourses = 0;

// 函数声明

void login();

void studentMenu(int studentIndex);

void teacherMenu();

void adminMenu();

void printStudentInfo(int studentIndex);

void modifyStudentInfo(int studentIndex);

void searchCourse(int studentIndex);

void addCourse();

void modifyCourse();

void printCourseStudents();

void printCourseSchedule();

void printUserInfo(char* username);

void addUser();

void deleteUser();

void modifyUserPermissions();

// 程序入口

int main()

{

    // 初始化课程

    Course course1 = { 1, "计算机科学" };

    Course course2 = { 2, "数学" };

    courses[numCourses++] = course1;

    courses[numCourses++] = course2;

    // 初始化学生                          

    Student student1 = { 1, "张三", "计算机科学" };

    Student student2 = { 2, "李四", "数学" };

    students[numStudents++] = student1;

    students[numStudents++] = student2;

    // 登录

    login();

    return 0;

}

// 登录菜单

void login()

 {

    int role;

    printf("请选择角色:\n");

    printf("1. 学生\n");

    printf("2. 教师\n");

    printf("3. 管理员\n");

    printf("请输入数字选择角色:");

    scanf("%d", &role);

    if (role == 1)

      {

        int studentIndex;

        int id,gum;

        printf("请输入学生ID:");

        scanf("%d", &id);

        for (int i = 0; i < numStudents; i++)

            {

            if (students[i].id == id)

                  {

                studentIndex = i;

                studentMenu(studentIndex);

                return;

            }

        }

        printf("学生ID不存在,请重新登录。\n");

            scanf("%d",&gum);

        login();

    }

    else if (role == 2) {

        teacherMenu();

    }

    else if (role == 3) {

        adminMenu();

    }

    else

      {

        printf("无效的角色,请重新登录。\n");

        login();

    }

}

// 学生菜单

void studentMenu(int studentIndex)

 {

    int choice;

    printf("\n欢迎,%s!\n", students[studentIndex].name);

    printf("请选择功能:\n");

    printf("1. 资料浏览\n");

    printf("2. 资料修改\n");

    printf("3. 选课查询\n");

    printf("4. 退出\n");

    printf("请输入数字选择功能:");

    scanf("%d", &choice);

    switch (choice)

      {

    case 1:

        printStudentInfo(studentIndex);

        studentMenu(studentIndex);

        break;

    case 2:

        modifyStudentInfo(studentIndex);

        studentMenu(studentIndex);

        break;

    case 3:

        searchCourse(studentIndex);

        studentMenu(studentIndex);

        break;

    case 4:

        login();

        break;

    default:

        printf("无效的选择,请重新输入。\n");

        studentMenu(studentIndex);

        break;

    }

}

// 教师菜单

void teacherMenu() {

    int num;

    printf("\n欢迎,教师!\n");

    printf("请选择功能:\n");

    printf("1. 课程录入\n");

    printf("2. 课程修改\n");

    printf("3. 课程打印\n");

    printf("4. 课表查询\n");

    printf("5. 退出\n");

    printf("请输入数字选择功能:");

    scanf("%d", &num);

    switch (num)

      {

    case 1:

        addCourse();

        teacherMenu();

        break;

    case 2:

        modifyCourse();

        teacherMenu();

        break;

    case 3:

        printCourseStudents();

        teacherMenu();

        break;

    case 4:

        printCourseSchedule();

        teacherMenu();

        break;

    case 5:

        login();

        break;

    default:

        printf("无效的选择,请重新输入。\n");

        teacherMenu();

        break;

    }

}



// 管理员菜单

void adminMenu()

{

    int choice;

    printf("\n欢迎,管理员!\n");

    printf("请选择功能:\n");

    printf("1. 用户资料打印\n");

    printf("2. 添加用户\n");

    printf("3. 删除用户\n");

    printf("4. 修改用户权限\n");

    printf("5. 退出\n");

    printf("请输入数字选择功能:");

    scanf("%d", &choice);

    switch (choice)

      {

    case 1: {

        char username[50];

        printf("请输入要打印信息的用户名:");

        scanf("%s", username);

        printUserInfo(username);

        adminMenu();

        break;

    }

    case 2:

        addUser();

        adminMenu();

        break;

    case 3:

        deleteUser();

        adminMenu();

        break;

    case 4:

        modifyUserPermissions();

        adminMenu();

        break;

    case 5:

        login();

        break;

    default:

        printf("无效的选择,请重新输入。\n");

        adminMenu();

        break;

    }

}

// 打印学生信息

void printStudentInfo(int studentIndex) {

    printf("\n学号:%d\n", students[studentIndex].id);

    printf("姓名:%s\n", students[studentIndex].name);

    printf("专业:%s\n", students[studentIndex].major);

}

// 修改学生信息

void modifyStudentInfo(int studentIndex)

{

    int choice;

    printf("\n请选择要修改的字段:\n");

    printf("1. 学号\n");

    printf("2. 姓名\n");

    printf("3. 专业\n");

    printf("请输入数字选择字段:");

    scanf("%d", &choice);

    switch (choice)

      {

    case 1:

        printf("请输入新的学号:");

        scanf("%d", &students[studentIndex].id);

        break;

    case 2:

        printf("请输入新的姓名:");

        scanf("%s", students[studentIndex].name);

        break;

    case 3:

        printf("请输入新的专业:");

        scanf("%s", students[studentIndex].major);

        break;

    default:

        printf("无效的选择,请重新输入。\n");

        modifyStudentInfo(studentIndex);

        break;

    }



    printf("学生信息修改成功!\n");

}

// 查询选课信息

void searchCourse(int studentIndex) {

    char courseName[50];

    printf("请输入要查询的课程名:");

    scanf("%s", courseName);

    for (int i = 0; i < numCourses; i++) {

        if (strcmp(courses[i].name, courseName) == 0) {

            printf("学生%s是否选修%s课程:是\n", students[studentIndex].name, courseName);

            return;

        }

    }



    printf("学生%s是否选修%s课程:否\n", students[studentIndex].name, courseName);

}



// 添加课程

void addCourse()

{

    if (numCourses >= MAX_COURSES) {

        printf("课程数量已达上限,无法添加新课程。\n");

        return;

    }

    Course course;

    int id;

    printf("请输入课程ID:");

    scanf("%d", &id);



    for (int i = 0; i < numCourses; i++) {

        if (courses[i].id == id) {

            printf("课程ID已存在,请重新输入。\n");

            addCourse();

            return;

        }

    }

    course.id = id;

    printf("请输入课程名称:");

    scanf("%s", course.name);

    courses[numCourses++] = course;

    printf("课程添加成功!\n");

}

// 修改课程

void modifyCourse() {

    int choice;

    printf("请输入要修改的课程ID:");

    scanf("%d", &choice);



    for (int i = 0; i < numCourses; i++) {

        if (courses[i].id == choice) {

            printf("\n当前课程信息:\n");

            printf("课程ID:%d\n", courses[i].id);

            printf("课程名称:%s\n", courses[i].name);



            printf("请输入新的课程名称:");

            scanf("%s", courses[i].name);



            printf("课程信息修改成功!\n");

            return;

        }

    }



    printf("课程ID不存在,请重新输入。\n");

    modifyCourse();

}

// 打印课程学生

void printCourseStudents()

{

    int courseId;

    printf("请输入课程ID:");

    scanf("%d", &courseId);

    for (int i = 0; i < numCourses; i++)

      {

        if (courses[i].id == courseId) {

            printf("\n选修%s课程的学生如下:\n", courses[i].name);

            for (int j = 0; j < numStudents; j++) {

                printf("学号:%d,姓名:%s\n", students[j].id, students[j].name);

            }

            return;

        }

    }

    printf("课程ID不存在,请重新输入。\n");

    printCourseStudents();

}

// 打印教师课表

void printCourseSchedule()

 {

    printf("教师课表如下:\n");

    for (int i = 0; i < numCourses; i++) {

        printf("课程ID:%d,课程名称:%s\n", courses[i].id, courses[i].name);

    }

}

// 打印用户信息

void printUserInfo(char* username) {

    // 假设有两个用户admin和guest

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

      {

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

    }

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

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

    }

    else {

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

    }

}



// 添加用户

void addUser()

 {

    char username[50];

    char password[50];

    printf("请输入用户名:");

    scanf("%s", username);



    printf("请输入初始密码:");

    scanf("%s", password);



    printf("用户添加成功!\n");

}



// 删除用户

void deleteUser() {

    char username[50];



    printf("请输入要删除的用户名:");

    scanf("%s", username);

    // 假设不能删除admin用户

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

      {

        printf("不能删除管理员账号。\n");

        return;

    }



    printf("用户删除成功!\n");

}

// 修改用户权限

void modifyUserPermissions()

{

    char username[50];

    int permissions;

    printf("请输入要修改权限的用户名:");

    scanf("%s", username);

    printf("请输入新的权限(1表示管理员,2表示访客):");

    scanf("%d", &permissions);

    printf("用户权限修改成功!\n");

}

  • 21
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何时还春风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值