C语言实现学生选修课程系统设计

C语言实现学生选修课程系统设计攻略

1. 系统需求

开发一个简单的学生选修课程系统,支持学生的登录和注销操作,包括选课、查看选课信息、取消选课等功能。系统需要提供以下功能:

  • 学生登陆/注销
  • 查看当前可选课程
  • 查看已选课程
  • 选课
  • 取消选课
  • 退出系统

2. 数据结构设计

学生信息

  • 学生编号:int
  • 姓名:char[20]
  • 选课列表:数组,包括已选课程的编号

课程信息

  • 课程编号:int
  • 课程名称:char[50]
  • 学分:int
  • 选课人数:int
  • 已选名单:学生编号数组

3. 算法实现

学生登陆/注销

学生可以通过输入学号和密码进行登陆操作。如果学号和密码正确,则进入系统。注销时退出系统。

int login() {
    int sid, pw;
    printf("请输入学号和密码:\n");
    scanf("%d %d", &sid, &pw);
    if (verify(sid, pw)) {
        return sid;
    } else {
        printf("学号或密码错误。\n");
        return -1;
    }
}

void logout() {
    printf("注销成功。\n");
    exit(0);
}

查看可选课程

列出所有尚未选择人数达到上限的课程。

void list_courses() {
    printf("编号\t课程名称\t学分\t可选人数\n");
    for (int i = 0; i < NUM_COURSES; i++) {
        if (courses[i].num_selected < MAX_SELECTED) {
            printf("%d\t%s\t%d\t%d\n", courses[i].id, courses[i].name, courses[i].credit, 
            MAX_SELECTED - courses[i].num_selected);
        }
    }
}

查看已选课程

列出当前学生已选课程的信息。

void list_selected_courses(int sid) {
    printf("您已选的课程:\n");
    for (int i = 0; i < students[sid].num_courses; i++) {
        int cid = students[sid].courses[i];
        printf("%d\t%s\t%d\n", courses[cid].id, courses[cid].name, courses[cid].credit);
    }
}

选课/取消选课

首先检查该课程是否还有人名额。若没有名额,不能选课;否则加入学生选课列表。取消选课则从学生选课列表中删除课程。

int select_course(int sid, int cid) {
    if (courses[cid].num_selected == MAX_SELECTED) {
        printf("此课程已选满。\n");
        return 0;
    }
    courses[cid].num_selected++;
    students[sid].courses[students[sid].num_courses] = cid;
    students[sid].num_courses++;
    return 1;
}

void cancel_course(int sid, int cid) {
    for (int i = 0; i < students[sid].num_courses; i++) {
        if (students[sid].courses[i] == cid) {
            students[sid].num_courses--;
            for (; i < students[sid].num_courses; i++) {
                students[sid].courses[i] = students[sid].courses[i+1]; 
            }
            courses[cid].num_selected--;
            printf("已取消选课。\n");
            return;
        }
    }
    printf("未选过此课程。\n");
}

退出系统

退出系统并保存选课信息到文件。

void exit_system() {
    save_data();
    printf("再见。\n");
    exit(0);
}

4. 示例说明

示例1

运行程序后,学生输入学号和密码进行登陆操作。然后系统列出可选课程的信息。学生选择一门课程进行选课。最后输出已选课程列表。

请输入学号和密码:
1001 123456
编号  课程名称    学分  可选人数
101 高等数学    4   13
102 大学物理    3   12
103 线性代数    4   11
请输入你想选择的课程编号:103
您已选的课程:
103 线性代数    4

示例2

学生先登陆后,查询已选课程信息。然后取消一门已选课,成功后再次输出已选课程列表。

请输入学号和密码:
1001 123456
您已选的课程:
103 线性代数    4
请输入你想取消选课的编号:103
已取消选课。
您已选的课程:

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现学生选修课程系统设计 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C/C++编程语言中的指针(pointer)你了解吗

    当谈论 C/C++ 编程语言时,最常被提到的概念之一就是“指针(pointer)”。指针既是最强大的工具之一,也是最容易出错的工具之一。本文将提供一个完整攻略,帮助初学者理解指针的概念以及如何正确使用指针。 指针是什么? 指针是一个存储了内存地址的变量,它指向内存中存储的某个值。利用指针,我们可以访问和操作内存中的数据。 在 C/C++ 中,通过使用“*”符…

    C 2023年5月24日
    00
  • 解析c++中的默认operator=操作的详解

    当我们在C++中定义一个类时,如果没有显式地定义“赋值运算符”(operator=),C++编译器会默认为该类生成一个“赋值运算符”(operator=)。然而,这个默认生成的“赋值运算符”(operator=)并不总是正确的,它会导致我们在使用类时出现问题。因此,本文将详细讲解“解析C++中的默认operator=操作的详解”的完整攻略,帮助大家更好的理解…

    C 2023年5月23日
    00
  • Lua和Nginx结合使用的超级指南

    非常感谢您对“Lua和Nginx结合使用的超级指南”的关注。下面,我将为您详细讲解该攻略的完整流程。 导语 Nginx是一款轻量级、高性能的Web服务器和反向代理服务器,由于其高性能和可靠性,成为了许多大型互联网企业的首选。而Lua作为一种高效、轻量级的脚本语言,具有易于扩展和快速开发等优点,被广泛应用于Nginx中,弥补了Nginx对于脚本语言支持的不足。…

    C 2023年5月23日
    00
  • c++ base64编解码使用示例

    C++ Base64编解码使用示例 简介 Base64是一种编码方式,能够将二进制数据转化为可打印的ASCII字符,常用于邮件、XML等文本转移过程中对二进制数据进行编码。C++也提供了Base64编解码的支持,这里就进行一下说明。 Base64编码 Base64编码将三个8位的字节转换为四个6位的字节,即每3个字节将会变成4个字节,更准确的说是每满4个字节…

    C 2023年5月30日
    00
  • C 程序 指针变量

    关于C程序中的指针变量,以下是一个完整的使用攻略。 1. 什么是指针变量? 指针变量,顾名思义,是指向内存中某个地址的变量,它可以存储变量或者常量的地址,也可以指向另一个指针变量的地址。 1.1 声明指针变量 在声明指针变量时,需要指定指针变量指向的数据类型,以及指针变量本身的类型。如下是指针变量的声明方式: int *p; // p是一个指向int类型数据…

    C 2023年5月10日
    00
  • C语言 strstr()函数

    当你需要在一个字符串中查找另一个字符串的时候,strstr()函数是一个非常有用的工具。它可以帮助你查找一个字符串中是否包含另一个指定的字符串,并返回匹配的位置。 语法 strstr()函数的语法如下: char* strstr(const char* str1, const char* str2); 该函数接受两个参数:str1和str2。str1是主字符…

    C 2023年5月9日
    00
  • QT获取显示当前时间和日期的方法(用QTime,QDate和QDateTime)

    获取当前时间和日期是Qt中常用的操作之一,通过使用QTime、QDate和QDateTime类,可以方便地实现这个功能。下面是获取当前时间和日期的详细攻略。 使用QTime获取当前时间 要使用QTime获取当前时间,可以使用QTime::currentTime()方法获取当前系统时间的QTime对象。示例代码如下: #include <QTime&gt…

    C 2023年5月22日
    00
  • Python实现字典按key或者value进行排序操作示例【sorted】

    下面是Python实现字典按key或value进行排序的攻略: 1. 字典按key排序 如果你想按dict的key进行排序,可以使用Python的内置方法sorted()实现。下面是一个示例代码: d = {‘banana’: 3, ‘apple’: 4, ‘pear’: 1, ‘orange’: 2} sorted_dict = sorted(d.item…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部