C语言实现的学生选课系统代码分享

C语言实现的学生选课系统代码分享

简介

本文将分享一份用C语言实现的学生选课系统代码,该系统实现了学生的选课、退课、成绩查看等功能。通过学习本系统的代码,可以加深对C语法及数据结构的理解。

功能模块

学生选课系统包含了以下几个功能模块:

  1. 学生信息管理
  2. 课程信息管理
  3. 学生选课
  4. 学生退课
  5. 成绩查询

数据结构

该系统使用了以下数据结构:

  1. 结构体:用于存储学生信息、课程信息、选课信息等
  2. 链表:用于存储学生信息、课程信息等的链表结构
  3. 文件:用于存储学生信息、课程信息及选课信息

代码实现

学生信息管理模块

学生信息管理模块实现了以下功能:

  1. 添加学生信息
  2. 删除学生信息
  3. 修改学生信息
  4. 查看学生信息

以下是添加学生信息的代码示例:

typedef struct student
{
    char name[20];   // 学生姓名
    char id[20];     // 学生学号
    char sex[5];     // 学生性别
    char major[20];  // 学生专业
    int age;         // 学生年龄
    char tel[15];    // 学生电话
    float score;     // 学生成绩
    struct student *next;
} stu;

stu *head = NULL;   // 学生链表头指针

void add_student()
{
    stu *p, *q;
    p = (stu *)malloc(sizeof(stu));
    printf("请输入学生姓名:");
    scanf("%s", p->name);
    printf("请输入学生学号:");
    scanf("%s", p->id);
    printf("请输入学生性别:");
    scanf("%s", p->sex);
    printf("请输入学生专业:");
    scanf("%s", p->major);
    printf("请输入学生年龄:");
    scanf("%d", &p->age);
    printf("请输入学生电话:");
    scanf("%s", p->tel);
    p->score = 0;
    q = head;
    if (q == NULL)
    {
        q = p;
        head = q;
        q->next = NULL;
    }
    else
    {
        while (q->next != NULL)
        {
            q = q->next;
        }
        q->next = p;
        p->next = NULL;
    }
    printf("添加成功!\n");
}

课程信息管理模块

课程信息管理模块实现了以下功能:

  1. 添加课程信息
  2. 删除课程信息
  3. 修改课程信息
  4. 查看课程信息

以下是查看课程信息的代码示例:

typedef struct course
{
    char name[20];    // 课程名称
    char id[20];      // 课程编号
    char teacher[20]; // 授课教师
    int time;         // 上课时间
    int week;         // 上课周数
    int score;        // 课程学分
    struct course *next;
} crs;

crs *pCourseHead = NULL;  // 课程链表头指针

void view_course()
{
    crs *p;
    p = pCourseHead;
    if (p == NULL)
    {
        printf("没有课程信息!\n");
    }
    else
    {
        printf("课程名称\t课程编号\t授课教师\t上课时间\t上课周数\t课程学分\n");
        while (p != NULL)
        {
            printf("%s\t%s\t%s\t%d\t%d\t%d\n", p->name, p->id, p->teacher, p->time, p->week, p->score);
            p = p->next;
        }
    }
}

学生选课模块

学生选课模块实现了以下功能:

  1. 学生选课
  2. 查看已选课程

以下是学生选课的代码示例:

void select_course(char id[20])
{
    crs *pC;
    stu *pS;
    pC = pCourseHead;
    pS = find_student(id);
    if (pC == NULL)
    {
        printf("没有课程信息!\n");
    }
    else
    {
        printf("序号\t课程名称\t课程编号\t授课教师\t上课时间\t上课周数\t课程学分\n");
        int i = 1;
        while (pC != NULL)
        {
            printf("%d\t%s\t%s\t%s\t%d\t%d\t%d\n", i, pC->name, pC->id, pC->teacher, pC->time, pC->week, pC->score);
            pC = pC->next;
            i++;
        }
        printf("请输入你要选的课程的编号:");
        char select_course_id[20];
        scanf("%s", select_course_id);
        pC = find_course(select_course_id);
        if (pC != NULL)
        {
            add_select_course(pS, pC);
        }
    }
}

学生退课模块

学生退课模块实现了以下功能:

  1. 学生退课

以下是学生退课的代码示例:

void quit_course(char id[20])
{
    crs *pC;
    stu *pS;
    pS = find_student(id);
    if (pS == NULL)
    {
        printf("你没有选课信息!\n");
    }
    else
    {
        printf("你已经选了以下课程:\n");
        view_select_course(id);
        printf("请输入你要退的课程的编号:");
        char quit_course_id[20];
        scanf("%s", quit_course_id);
        remove_select_course(pS, quit_course_id);
        printf("退课成功!\n");
    }
}

成绩查询模块

成绩查询模块实现了以下功能:

  1. 查看已选课程成绩

以下是查看已选课程成绩的代码示例:

void view_score(char id[20])
{
    stu *pS;
    pS = find_student(id);
    if (pS == NULL)
    {
        printf("你没有选课信息!\n");
    }
    else
    {
        printf("课程名称\t课程编号\t成绩\n");
        sel *pSC = pS->select_course;
        while (pSC != NULL)
        {
            printf("%s\t%s\t%.2f\n", pSC->course->name, pSC->course->id, pSC->score);
            pSC = pSC->next;
        }
    }
}

总结

以上就是C语言实现的学生选课系统代码分享的完整攻略。通过学习该系统的代码实现,可以加深对C语言、数据结构等的理解。

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

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

相关文章

  • Qt实战案例之如何利用QProcess类实现启动进程

    来讲一下“Qt实战案例之如何利用QProcess类实现启动进程”的攻略,这个过程包含以下几个步骤: 1. 理解QProcess类 QProcess是Qt中用于启动外部进程的类,它提供了很多与进程相关的功能,例如启动进程、向进程发送信号、获取进程输出等等。 2. 使用QProcess启动进程 要使用QProcess启动进程,我们需要先创建一个QProcess对…

    C 2023年5月23日
    00
  • boost.asio框架系列之buffer函数

    Boost.Asio框架系列之buffer函数 在Boost.Asio框架中,boost::asio::buffer()函数的主要作用是创建一个缓冲区,以便在套接字(Socket)和其他数据源之间传输数据。在进行异步操作时,使用缓冲区管理和传输数据是很常见的。boost::asio::buffer()函数支持很多不同的数据类型,它支持以下数据类型: 基础数据…

    C 2023年5月23日
    00
  • 简单掌握C++中的函数模板

    简单掌握C++中的函数模板 函数模板为不同的数据类型提供了一种通用的代码实现方式,可以减少代码量,提高代码复用性。本文将介绍在C++中如何通过函数模板简单实现对不同数据类型的计算,并提供两个实例供参考。 定义模板函数 我们可以通过关键字template来定义模板函数,具体方式如下: template <typename T> T add(T a,…

    C 2023年5月23日
    00
  • C#使用DES和AES实现加密解密功能示例

    下面我将详细讲解如何使用C#实现DES和AES加密解密功能的攻略,包含以下内容: 什么是DES和AES DES和AES的区别 C#中实现DES加密解密的步骤 C#中实现AES加密解密的步骤 示例说明 1.什么是DES和AES DES(Data Encryption Standard)和AES(Advanced Encryption Standard)都是对数…

    C 2023年5月23日
    00
  • C++用mysql自带的头文件连接数据库

    接下来我会为你详细讲解 “C++用mysql自带的头文件连接数据库”的完整攻略,包括安装MySQL和配置环境,以及如何使用MySQL头文件进行编程。 安装MySQL和配置环境 首先,你需要在你的计算机上安装MySQL。你可以在MySQL的官方网站 https://dev.mysql.com/downloads/ 下载MySQL的安装程序并按照提示进行安装。 …

    C 2023年5月22日
    00
  • 最终幻想14极风神打法攻略 奶视角

    最终幻想14极风神打法攻略 奶视角 背景介绍 极风神是最终幻想14游戏中的一项高级难度挑战,需要有很强的装备和配合默契的团队才能成功打倒。本攻略以奶视角为主,重点讲解了在战斗过程中如何发挥奶妈的治疗作用,保证了团队充沛的血量和强力的输出,从而战胜了这么难的BOSS。 视频介绍 在下面的视频中,你可以看到我们的团队是如何通过配合打败极风神的。视频有详细的解说,…

    C 2023年5月22日
    00
  • 详解关于JSON.parse()和JSON.stringify()的性能小测试

    关于“详解关于JSON.parse()和JSON.stringify()的性能小测试”攻略,以下是完整的说明: 标题 1. 概述 在JavaScript中,JSON.parse()和JSON.stringify()是两个常用的方法,前者将JSON格式的字符串转换为JavaScript对象,后者则是将JavaScript对象转换为JSON格式的字符串。同时,在…

    C 2023年5月23日
    00
  • C++实现STL容器的示例

    实现STL容器需要了解C++的模板和泛型编程。具体实现步骤如下: 1.先定义STL容器的基本结构,以vector为例,定义一个模板类Vector,将模板参数T作为类型参数: template <typename T> class Vector { private: T* data; size_t size; size_t capacity; pu…

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