C/C++ 学生选课管理系统(源码 + 详解)

这篇具有很好参考价值的文章主要介绍了C/C++ 学生选课管理系统(源码 + 详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 关注专栏:C/C++课程设计100例 优质好文持续更新中……🚀🚀🚀

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


目录

一、主要功能需求

二、主要设计思路

三、功能实现

3.1 课程信息浏览

3.2 课程信息录入

3.3 课程信息删除

3.4 课程信息修改

3.5 选修课程

四、总结


C/C++ 学生选课管理系统(源码 + 详解)

 本篇文章主要对学生选课管理系统进行详细的讲解,包括对功能需求、设计思路、主要功能实现等的讲解。

一、主要功能需求

(1)支持课程信息浏览;

(2)支持课程信息查询;

(3)支持课程信息录入;

(4)支持课程信息删除;

(5)支持课程信息修改;

(6)支持课程信息写入文件;

(7)支持选修课程;

(8)支持查看选修课程;

(9)支持删除选修课程;

(10)支持对选修课程的存储,支持文件的写入和读取。

二、主要设计思路

学生选课管理系统主要设计流程图如下所示。

C/C++ 学生选课管理系统(源码 + 详解)

如上图所示,列出了主要功能的程序流程图。

三、功能实现

这里对主要功能实现进行详细讲解。

3.1 课程信息浏览

课程信息浏览功能实现对所有选修课程的展示,代码实现如下所示。

// 浏览课程信息
void viewCourse(LinkList *head)
{
    while (true) {
        system("cls");
        int x = sx, y = sy;
        if (head->next == NULL) {
            getCoord(x, ++y); printf("没有课程信息!");
        } else {
            LinkList *p = head;
            while (p->next != NULL) {
                p = p->next;
                printDivideLine(x - 1, ++y, 40);
                getCoord(x, ++y); printf("课程编号:%s", p->ID);
                getCoord(x, ++y); printf("课程名称:%s", p->name);
                getCoord(x, ++y); printf("课程性质:%s", p->property);
                getCoord(x, ++y); printf("实验或上机学时:%d", p->experiment_hours);
                getCoord(x, ++y); printf("总学时:%d", p->hours);
                getCoord(x, ++y); printf("授课学时:%d", p->teach_hours);
                getCoord(x, ++y); printf("学分:%d", p->credit);
                getCoord(x, ++y); printf("开课:%s", p->course);
                printDivideLine(x - 1, ++y, 40);
            }
        }
        returnMenu(x, ++y);
        break;
    }
}

选修课程通过链表存储,存储的课程信息包括:课程编号、课程名称、课程性质、实验或上机学时、总学时、授课学时、学分以及开课。 

3.2 课程信息录入

课程信息录入功能实现对选修课程信息的添加,代码实现如下所示。

void addCourse(LinkList *end)
{
    while (true) {
        system("cls");
        int x = sx, y = sy;
        LinkList *in = (LinkList*)malloc(sizeof(LinkList));
        getCoord(x, ++y); printf("请输入课程编号: ");
        scanf("%s", in->ID);
        getCoord(x, ++y); printf("请输入课程名称: ");
        scanf("%s", in->name);
        getCoord(x, ++y); printf("请输入课程性质: ");
        scanf("%s", in->property);
        getCoord(x, ++y); printf("请输入实验或上机学时: ");
        scanf("%d",&in->experiment_hours);
        getCoord(x, ++y); printf("请输入授课学时: ");
        scanf("%d",&in->teach_hours);
        getCoord(x, ++y); printf("请输入学分: ");
        scanf("%d",&in->credit);
        getCoord(x, ++y); printf("请输入总学时: ");
        scanf("%d",&in->hours);
        getCoord(x, ++y); printf("请输入开课: ");
        scanf("%s", in->course);

        end->next = in;
        in->next = NULL;
        end = in;
        char ch = continueMenu(x, y += 2);
        if (ch == 'Q') break;
    }
}

如上述代码所示,录入的选修课程信息包括:课程编号、课程名称、课程性质、实验或上机学时、授课学时、学分以及总学时。

3.3 课程信息删除

课程信息删除功能实现对选修课程信息的删除,代码实现如下所示。

void deleteCourse(LinkList *head)
{
    system("cls");
    int x = sx, y = sy;
    LinkList *pre = head;
    LinkList *p = head->next;

    getCoord(x, ++y); printf("请输入将要删除的课程编号: ");
    char id[30];
    scanf("%s", id);

    bool flag = false;
    while (p != NULL) {
        if (!strcmp(p->ID, id)) {
            flag = true;
            break;
        }
        pre = p;
        p = p->next;
    }
    if (flag) {
        pre->next = pre->next->next;
        getCoord(x, ++y);  printf("删除课程信息成功!");
    } else {
        getCoord(x, ++y);  printf("未查找到课程信息!");
    }

    returnMenu(x, ++y);
}

如上代码所示,根据课程编号删除课程信息,因为选课信息是通过链表存储,所以记录待删除节点的前一个节点,直接执行:

pre->next = pre->next->next;

即可。如果课程编号不存在,则输出“未查找到课程信息!”。 

3.4 课程信息修改

课程信息修改功能实现选修课程信息的修改,代码实现如下所示。

void modifyCourse(LinkList *head)
{
    system("cls");
    int x = sx, y = sy;
    LinkList *p = head->next;

    getCoord(x, ++y); printf("请输入将要修改的课程编号: ");
    char id[30];
    scanf("%s", id);

    bool flag = false;
    while (p != NULL) {
        if (!strcmp(p->ID, id)) {
            flag = true;
            break;
        }
        p = p->next;
    }
    if (flag) {
        getCoord(x, ++y); ++y; printf("请输入要修改的项:");
        getCoord(x, ++y); ++y; printf("1) 课程编号");
        getCoord(x, ++y); ++y; printf("2) 课程名称");
        getCoord(x, ++y); ++y; printf("3) 课程性质");
        getCoord(x, ++y); ++y; printf("4) 实验或上机学时");
        getCoord(x, ++y); ++y; printf("5) 授课学时");
        getCoord(x, ++y); ++y; printf("6) 学分");
        getCoord(x, ++y); ++y; printf("7) 总学时");
        getCoord(x, ++y); ++y; printf("8) 开课");
        getCoord(x, ++y); ++y; printf("请输入:");
        int id;
        scanf("%d", &id);
        switch (id) {
        case 1:
            getCoord(x, ++y); ++y; printf("请输入课程编号:");
            scanf("%s", p->ID);
            break;
        case 2:
            getCoord(x, ++y); ++y; printf("请输入课程名称:");
            scanf("%s", p->name);
            break;
        case 3:
            getCoord(x, ++y); ++y; printf("请输入课程性质:");
            scanf("%s", p->property);
            break;
        case 4:
            getCoord(x, ++y); ++y; printf("请输入实验或上机学时:");
            scanf("%d", &p->experiment_hours);
            break;
        case 5:
            getCoord(x, ++y); ++y; printf("请输入授课学时:");
            scanf("%d", &p->teach_hours);
            break;
        case 6:
            getCoord(x, ++y); ++y; printf("请输入学分:");
            scanf("%d", &p->credit);
            break;
        case 7:
            getCoord(x, ++y); ++y; printf("请输入总学时:");
            scanf("%d", &p->hours);
            break;
        case 8:
            getCoord(x, ++y); ++y; printf("请输入开课:");
            scanf("%s", p->course);
            break;
        }
        getCoord(x, ++y);  printf("修改课程信息成功!");
    } else {
        getCoord(x, ++y);  printf("未查找到课程信息!");
    }
    returnMenu(x, ++y);
}

 如上代码所示,实现了对已有选课信息的修改。首先,需要输入课程编号,根据课程编号在选修课程列表中进行查找,如果找到对应选修课程信息,展示可以修改的内容,选择后修改对应的内容。否则,如果查找不到对应课程,则输出“未查找到课程信息!”。

3.5 选修课程

选修课程功能实现对选修课程的选择,代码实现如下所示。

void chooseCourse(LinkList *head)
{
    while (true) {
        system("cls");
        int x = sx, y = sy;
        getCoord(x, ++y); printf("请输入课程编号: ");
        char id[30];
        scanf("%s", id);
        bool flag = false;
        LinkList *p = head->next;
        while (p != NULL) {
            if (!strcmp(p->ID, id)) {
                flag = true;
                break;
            }
        }
        if (flag) {
            getCoord(x, ++y); printf("选修课程成功!");
            printCourse(p, x, ++y);
            addCourseToFile(p);
        } else {
            getCoord(x, ++y); printf("未查询到课程信息!");
        }
        y += 8;
        char ch = continueMenu(x, ++y);
        if (ch == 'Q') break;
    }
}

如上代码所示,选修课程是对在选修课程列表里的课程进行选择,选修课程是依据课程编号进行选择,在选修课程列表中根据课程编号查找,将其添加到已选课列表里。如果未查询到选修课程信息,则输出“未查询到课程信息”。

四、总结

本篇文章实现了学生选课管理系统,主要是对学生选课进行管理,实现了对选课信息的录入、查询、浏览以及删除等操作,学生可以根据录入的选课信息选修课程。


🍓🍓🍓 订阅专栏「C/C++/Java课程设计100例」后可联系作者获取源码 🎉🎉🎉


🎈 感觉有帮助记得「一键三连支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞文章来源地址https://www.toymoban.com/news/detail-501827.html


到了这里,关于C/C++ 学生选课管理系统(源码 + 详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 34基于Java的学生选课系统或学生课程管理系统

    本系统是基于Java的学生选课信息管理系统,可以有效的对学生选课信息、学生个人信息、教师个人信息等等进行管理。 摘要:基于java的学生课程管理系统,基于java的学生选课系统,javaWeb的学生选课系统,学生成绩管理系统,课表管理系统,学院管理系统,大学生选课系统

    2024年02月03日
    浏览(49)
  • Java+Swing+MySQL实现学生选课管理系统

    目录 一、系统介绍 1.运行环境 2.技术说明 3.系统功能 4.数据库实体E-R图设计 5.数据库表的设计 二、系统实现  1.用户登录 2.主界面   3.数据库连接 4.数据查询 5.查询课程信息 6.添加学生信息 7.修改学生信息 三、部分代码  1.ChangePwd.java 2.Login.java 3.Main.java 5.备注 开发工具:

    2024年02月08日
    浏览(67)
  • Python Django的学生选课管理系统,实现多用户登录注册,可选课可评课

    学生选课管理系统是一个基于Python Django开发的教务管理系统,旨在提供方便快捷的选课服务和学籍管理功能。该系统分为教师端和学生端两个角色,为教师和学生提供了不同的功能和权限。 教师端功能: 教师可以登录系统后,进行课程管理、成绩录入和学生管理等操作。具

    2024年01月24日
    浏览(48)
  • 【Jsp课设】3款基于JavaWeb的学生选课管理系统

     项目介绍:后端采用Jsp+Servlet。前端使用的是Layui的一个网站模板。开发一个在线的学生选课管理系统,用于课程设计的使用。 项目类型:JavaWeb源码  用户类型:2个角色(管理员+学生) 主要技术:Jsp+Servlet+MySQL+Jquery(前端Bootstrap或者Layui) 开发工具:Eclipse/Idea均可使用,有两

    2024年02月04日
    浏览(40)
  • 【Golang项目实战】用Go写一个学生信息管理系统,真的太酷啦| 保姆级详解,附源码——建议收藏

    博主简介: 努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。 博主主页: @是瑶瑶子啦 所属专栏: Go语言核心编程 近期目标: 写好专栏的每一篇文章 学习了Go的基础语法知识,如何巩固和提升呢?跟着瑶瑶子写一个

    2024年02月02日
    浏览(53)
  • 【Qt学生信息管理系统】2.完整版源码

    😈 「CSDN主页」 :传送门 😈 「Bilibil首页」 :传送门 😈 「网易云课堂」 :传送门 😈 「CSDN学院」 :传送门 😈 「51CTO学院」 :传送门 😈 「本文的内容」 :Qt学生管理系统代码 😈 「动动你的小手」 : 点赞 👍 收藏 ⭐️ 评论 📝 1.【Qt学生信息管理系统】1.专栏介绍(

    2023年04月13日
    浏览(35)
  • 用Java实现一个学生管理系统(附源码)

    目录 一、题目要求  二、设计思路 (2)代表课程的类——Course类 (3)具体功能实现类——Function类 (4)测试类——Test类 三、代码实现 (1)Student.java文件 (2)Course.java文件 (3)Function.java文件 (4)Test.java文件         编写一个学生成绩管理系统。学生的属性包括学

    2024年02月08日
    浏览(39)
  • 学生成绩管理系统——C语言版(含源码)

    一、开发环境 操作系统:Ununtu 16 开发环境工具:vscode 开发语言:C语言 二、功能需求 制作学生管理系统 在系统中能够实现 录入学生信息、帮助菜单、列出学生信息、计算总成绩平均值、根据总成绩平均值完成排序、根据学号查询学生信息、清屏、退出等功能。 三、功能说

    2024年02月08日
    浏览(49)
  • 大学生选修选课系统|基于Springboot的大学生选修选课系统设计与实现(源码+数据库+文档)

    大学生选修选课系统目录 目录 基于Springboot的大学生选修选课系统设计与实现 一、前言 二、系统功能设计  三、系统实现  1、用户信息管理 2、 课程信息管理 3、排课信息管理 4、公告信息管理  四、数据库设计 1、实体ER图   五、核心代码   六、论文参考 七、最新计算机

    2024年03月11日
    浏览(74)
  • java毕业设计——基于JSP+sqlserver的学生信息管理系统设计与实现(毕业论文+程序源码)——学生信息管理系统

    大家好,今天给大家介绍基于JSP+sqlserver的学生信息管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦 文章目录: 随着学校规模的

    2024年02月04日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包