【C语言】C语言-学生选修课程系统(源码)【独一无二】

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


【C语言】C语言-学生选修课程系统(源码)【独一无二】


目录

  • 【C语言】C语言-学生选修课程系统(源码)【独一无二】
  • IP协议
  • 一、设计要求
  • 二、结果展示
    • 2.1 录入课程信息
    • 2.2 浏览课程信息
    • 2.3 按学分查询课程
    • 2.4 按课程性质查询
    • 2.5 学生选修课程
  • 三、代码展示


IP协议

一、设计要求

  1. 功能描述

    • 学生选修课程系统用于管理学校的课程信息,并提供给学生选择适合的课程。
    • 功能包括录入课程信息、浏览课程信息、按学分查询课程、按课程性质查询课程和学生选修课程等。
  2. 数据结构

    • 采用结构体 Course 来表示课程信息,包括课程编号、课程名称、课程性质、总学时、授课学时、实验或上机学时、学分和开课学期等字段。
    • 课程信息存储在结构体数组 courses 中,其中 course_count 记录当前课程数量。
  3. 文件操作

    • 提供加载课程信息和保存课程信息的函数,以便将课程信息存储在文件中,保证数据持久化。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “选修课” 获取。👈👈👈

  1. 菜单设计

    • 系统应该提供一个菜单界面,包括录入课程信息、浏览课程信息、按学分查询课程、按课程性质查询课程和学生选修课程等选项。
    • 菜单选项应该清晰明了,方便用户选择不同的功能。
  2. 课程管理功能

    • 提供录入课程信息的功能,包括课程编号、名称、性质、学时、学分等信息的录入。
    • 提供浏览课程信息的功能,以便学生了解学校提供的课程。
    • 提供按学分查询课程和按课程性质查询课程的功能,方便学生根据自己的需求筛选课程。
    • 提供学生选修课程的功能,学生可以根据课程编号选择自己感兴趣的课程。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “选修课” 获取。👈👈👈


二、结果展示

2.1 录入课程信息

在这里插入图片描述

2.2 浏览课程信息

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “选修课” 获取。👈👈👈

2.3 按学分查询课程

在这里插入图片描述

2.4 按课程性质查询

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “选修课” 获取。👈👈👈

2.5 学生选修课程

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “选修课” 获取。👈👈👈


三、代码展示

  1. 数据结构

    • 代码中使用了结构体 Course 来表示课程信息,包括课程编号、课程名称、课程性质、总学时、授课学时、实验或上机学时、学分和开课学期等字段。

    • 课程信息以结构体数组 courses 的形式存储,同时用整型变量 course_count 记录当前课程数量。

      typedef struct {int course_id;char course_name[COURSE_NAME_LEN];char course_type[COURSE_NAME_LEN];int total_hours;int lecture_hours;int lab_hours;int credits;int semester;
      } Course;
      

      👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “选修课” 获取。👈👈👈

  2. 文件操作

    • load_courses 函数用于从文件中加载课程信息,采用二进制读取方式将课程数量和课程信息从文件中读取到内存中。

    • save_courses 函数用于将当前的课程信息保存到文件中,采用二进制写入方式将课程数量和课程信息写入文件。

      void load_courses() {FILE* file = fopen("courses.dat", "rb");if (file == NULL) {return;}fread(&course_count, sizeof(int), 1, file);fread(courses, sizeof(Course), course_count, file);fclose(file);
      }
      
  3. 菜单功能

    • menu 函数提供了一个菜单界面,包括录入课程信息、浏览课程信息、按学分查询课程、按课程性质查询课程和学生选修课程等选项。

    • 根据用户输入的选项,调用相应的功能函数进行处理。

      
      void menu() {int choice;do {printf("学生选修课程系统\n");printf("1. 录入课程信息\n");printf("2. 浏览课程信息\n");printf("3. 按学分查询课程\n");printf("4. 按课程性质查询课程\n");printf("5. 学生选修课程\n");printf("0. 退出\n");printf("请输入你的选择: ");scanf("%d", &choice);switch (choice) {case 1:add_course();break;case 2:browse_courses();>👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “选修课” 获取。👈👈👈break;case 3:query_by_credits();break;case 4:query_by_type();break;case 5:student_select_courses();>👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “选修课” 获取。👈👈👈break;case 0:printf("退出系统\n");break;default:printf("无效的选择,请重新输入\n");}} while (choice != 0);
      }

      👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “选修课” 获取。👈👈👈

  4. 功能实现

    • add_course 函数用于录入新的课程信息,先接收用户输入的课程信息,然后将新课程添加到课程数组中。
    • browse_courses 函数用于浏览所有课程信息,遍历课程数组并将每门课程的信息输出到控制台。
    • query_by_credits 函数用于按学分查询课程,根据用户输入的学分查找符合条件的课程信息并输出。
    • query_by_type 函数用于按课程性质查询课程,根据用户输入的课程性质查找符合条件的课程信息并输出。
    • student_select_courses 函数用于学生选修课程,学生可以根据课程编号选择感兴趣的课程,并检查选修课程的总学分是否符合要求。
  5. 错误处理

    • 对文件操作进行了简单的错误处理,如果打开文件失败则直接返回。
    • 对用户输入的课程编号进行了检查,如果未找到对应的课程则给出相应的提示信息。
      void load_courses();
      void save_courses();
      void add_course();
      void browse_courses();
      void query_by_credits();
      void query_by_type();
      void student_select_courses();
      void menu();
      

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “选修课” 获取。👈👈👈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/15684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

尝试解决Linux提示:/lib64/libc.so.6: version GLIBC_2.XX‘ not found

一、查看系统中可使用的glibc版本 strings /lib64/libc.so.6 |grep GLIBC_ 二、下载高版本的glibc库 库网站:https://ftp.gnu.org/gnu/glibc/ 下载所需库,如: glibc-2.17.tar.gz 将其转到linux系统中,进行解压缩 tar -xvf gli…

【Muduo】网络库框架模型和各模块简介

Muduo是由陈硕大佬个人开发的C网络库,最近在剖析其源码,在此做一些归纳整理。 框架模型 Muduo网络库的框架模型主要基于Reactor模式,这是一种用于处理多个I/O事件的高效并发模型。 Reactor模式 Reactor模式是一种事件驱动的处理模式&#…

Java 面向数据编程-DOP

近年来,Java 获得了许多新的语言特性,这些特性可以独立使用,并且每个特性都很有用:类型模式(type patterns)、开关改进(switch improvements)、记录和记录模式( records …

纯正英语新闻 5.26

brutal:残暴的 apartheid:隔离 discrimination:歧视 segregation:隔离 humiliation:屈辱 unfolding:展开 shuffle forward:向前推进 justice:正义 endure:经久不…

分享几张漂亮的linux kde主题

分享几张漂亮的linux kde主题:在系统设置的全局主题内下载。

开源大模型与闭源大模型

概述 开源大模型和闭源大模型是两种常见的大模型类型,它们在以下方面存在差异: 开放性: 开源大模型:代码和模型结构是公开可用的,任何人都可以访问、修改和使用。闭源大模型:模型的代码和结构是私有的&…

求斐波那契数列第n项的值

本期介绍🍖 主要介绍:什么是斐波那契数列,递归实现求斐波那契数列第n项值,递归法为什么不适合求斐波那契数,用迭代法实现求斐波那契数列的值👀。 文章目录 1. 斐波那契数列是什么?2. 题目2. 递归…

iOS17闪退问题 *** Assertion failure in void _UIGraphicsBeginImageContextWithOptions(CGSize, BOOL, CGFloa

ios升级17以后运行闪退。报错日志为*** Assertion failure in void _UIGraphicsBeginImageContextWithOptions(CGSize, BOOL, CGFloat, BOOL)(), UIGraphics.m:410 根据相关断点跟踪,具体报错位置 查看相关api发现iOS17api已经被替代。 替代方式为将UIGraphicsBegin…

9.Docker网络

文章目录 1、Docker网络简介2、常用基本命令3、网络模式对比举例3.1、bridge模式3.2、host模式3.3、none模式3.4、container模式3.5、自定义网络 1、Docker网络简介 作用: 容器间的互联和通信以及端口映射容器IP变动时候可以通过服务名直接进行网络通信而不受到影…

# 文件或目录损坏且无法读取 的解决方案

文件或目录损坏且无法读取 的解决方案 一、问题描述: windows 系统下,当对某一个文件或文件夹操作时,出现【文件或目录损坏且无法读取】,这时不管对其进行修改、删除、更改属性等操作,都不能正常进行,在 …

从0开始学统计-t检验

1.什么是t检验? t检验是一种用于比较两个样本均值之间差异是否显著的统计方法。它通常用于以下几种情况: (1)单样本 t 检验:用于检验一个样本的平均值是否与一个已知的总体平均值(或者一个假设的总体平均…

手把手教你如何使用BurpSuite

Burp Suite是什么? 概述 Burp Suite是由PortSwigger公司开发的一款综合性Web应用安全测试工具。它是安全研究人员和渗透测试人员的标准工具,用于识别和利用Web应用程序中的漏洞。Burp Suite提供了一系列强大的功能,帮助用户对Web应用进行全…

手写Zookeeper分布式锁

zookeeper版本&#xff1a;zookeeper-3.4.13&#xff0c;该版本原生api不支持递归创建节点 依赖 <dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.13</version> </depende…

深入理解Nginx try_files:用途、使用场景、注意事项和示例

Nginx 是高性能的 HTTP 和反向代理服务器&#xff0c;而 try_files 是其功能强大的模块之一。try_files 指令用于定义一组文件或 URI&#xff0c;Nginx 将依次检查这些文件或 URI&#xff0c;直到找到一个存在并可访问的文件或 URI。本文将深度解析 try_files 的用途、使用场景…

11.jenkins调整上线的脚本实现tag方式上线

jenkins调整上线的脚本实现tag方式上线 多次打标签重新提交到gitlab远程仓库-基于multi-line string parameter 修改脚本html_deploy_tar.sh #!/usr/bin/bashDate$(date %F-%H-%M) web_server"192.168.111.22 192.168.111.23" Name${Date}-${git_version} code_t…

网络模型-路由策略

一、路由策略 路由策略(Routing Policy)作用于路由&#xff0c;主要实现了路由过滤和路由属性设置等功能&#xff0c;它通过改变路由属性(包括可达性)来改变网络流量所经过的路径。目的:设备在发布、接收和引入路由信息时&#xff0c;根据实际组网需要实施一些策略&#xff0c…

Spring Boot 3.3新特性发布

Spring Boot 3.3 现已正式发布&#xff01;此版本包含大量更新&#xff0c;包括多项新功能。我们决定进行一些挑选&#xff0c;并查看最重要的变化&#xff0c;其中包括对类数据共享 (CDS) 的支持&#xff0c;以加快应用程序启动速度。 1.新的服务连接 Spring Boot 中改进或添…

MathType安装以及要点和难点

MathType是一款专业的数学公式编辑器,主要用于在文档中输入复杂的数学、物理公式和符号。以下是关于MathType的一些主要特点和功能: 1.定义设置:在MathType的“样式-定义”中,可以对数学、文本、函数、变量等不同类型进行定义。定义好之后,后续在公式编辑的时候,可以根据…

笔记89:LeetCode_135_分发糖果

前言&#xff1a; 注&#xff1a;代码随想录中没有很清楚的提起想出方法的思路&#xff0c;只是给出了解决这个问题的大致思路和代码&#xff1b;下面我将介绍一下我的思考过程&#xff0c;并贴出实现代码&#xff1b; a a a a 思考过程&#xff1a; 思路1&#xff1a;为了…

【实际项目精选源码】ehr人力资源管理系统实现案例(java,vue)

一、项目介绍 一款全源码可二开&#xff0c;可基于云部署、私有部署的企业级数字化人力资源管理系统&#xff0c;涵盖了招聘、人事、考勤、绩效、社保、酬薪六大模块&#xff0c;解决了从人事招聘到酬薪计算的全周期人力资源管理&#xff0c;符合当下大中小型企业组织架构管理运…