用c++设计一个程序,基本要求: 考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课、课程名称、学生姓名、缺课类型 (迟到、早退、请假及旷课)。 功能要求: 1)录入学生的缺课记录; 2)修改某个学生的缺课记录; 3)查询某个学生的缺课情况;且系统以菜单方式工作。

时间: 2024-03-24 21:40:38 浏览: 11
好的,下面是一个简单的示例程序,实现了你提出的基本要求: ```c++ #include <iostream> #include <string> #include <vector> using namespace std; // 学生缺课信息结构体 struct Record { string date; // 缺课日期 int section; // 第几节课 string courseName; // 课程名称 string studentName; // 学生姓名 string type; // 缺课类型 }; // 打印菜单 void printMenu() { cout << "1. 录入学生缺课记录" << endl; cout << "2. 修改某个学生的缺课记录" << endl; cout << "3. 查询某个学生的缺课情况" << endl; cout << "4. 退出系统" << endl; cout << "请选择操作(输入数字1-4):"; } // 录入学生缺课记录 void addRecord(vector<Record>& records) { Record record; cout << "请输入缺课日期(yyyy-mm-dd):"; cin >> record.date; cout << "请输入第几节课(1-8):"; cin >> record.section; cout << "请输入课程名称:"; cin >> record.courseName; cout << "请输入学生姓名:"; cin >> record.studentName; cout << "请输入缺课类型(迟到、早退、请假或旷课):"; cin >> record.type; records.push_back(record); cout << "已添加缺课记录!" << endl; } // 修改学生缺课记录 void modifyRecord(vector<Record>& records) { string studentName; cout << "请输入要修改的学生姓名:"; cin >> studentName; for (auto& record : records) { if (record.studentName == studentName) { cout << "请输入新的缺课日期(原值:" << record.date << "):"; cin >> record.date; cout << "请输入新的第几节课(原值:" << record.section << "):"; cin >> record.section; cout << "请输入新的课程名称(原值:" << record.courseName << "):"; cin >> record.courseName; cout << "请输入新的缺课类型(迟到、早退、请假或旷课,原值:" << record.type << "):"; cin >> record.type; cout << "已修改缺课记录!" << endl; return; } } cout << "找不到该学生的缺课记录!" << endl; } // 查询学生缺课情况 void queryRecord(const vector<Record>& records) { string studentName; cout << "请输入要查询的学生姓名:"; cin >> studentName; for (const auto& record : records) { if (record.studentName == studentName) { cout << "缺课日期:" << record.date << endl; cout << "第几节课:" << record.section << endl; cout << "课程名称:" << record.courseName << endl; cout << "学生姓名:" << record.studentName << endl; cout << "缺课类型:" << record.type << endl; return; } } cout << "找不到该学生的缺课记录!" << endl; } int main() { vector<Record> records; int op; while (true) { printMenu(); cin >> op; switch (op) { case 1: addRecord(records); break; case 2: modifyRecord(records); break; case 3: queryRecord(records); break; case 4: cout << "谢谢使用!" << endl; return 0; default: cout << "无效的操作,请重新选择!" << endl; break; } } } ``` 这个程序使用了一个结构体 `Record` 来存储学生缺课信息,使用了一个 `vector` 来存储多个学生的缺课记录。程序提供了三个操作:录入学生缺课记录、修改某个学生的缺课记录和查询某个学生的缺课情况,并以菜单方式工作。你可以根据自己的需要对程序进行改进和扩展。

相关推荐

考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课(连续多节课用 begin-end 的形式表示)、课程名称(课程名称中不会出现空格)、学生姓名、缺课类型(迟到、早退、请假及旷课)。试设计考勤管理系统,使之能提供以下功能: 1).录入学生的缺课记录:从键盘输入数据(提示:为避免重复从键盘输入数据,测试时可将数据存储在文件中,利用输入重定向功能读入),输入格式为: 缺课日期第几节课 课程名称学生姓名 缺课类型 每行一条纪录。 例如: 2008-04-29 3-4 C++程序设计实验 张三 迟到 2008-04-28 3-4 C++程序设计 李四 旷课 2).修改某个学生的缺课记录:可以对缺课纪录的任意部分进行修改,然后显示一下修改后的纪录。 3).查询某个学生的缺课情况:查询结果按照日期升序排序,同一天内按照所缺课程的时间升序排序。 4).统计某段时间内(以天为单位),旷课学生姓名及旷课节数,查询结果先按旷课节数降序排序,旷课节数相同的学生按姓名升序排序; 5).统计某段时间内,有学生旷课的课程及旷课人次,按旷课人次由多到少排序,旷课人次相同的课程按课程名称升序排序; 6).系统以菜单方式工作。(所谓菜单指用户可以自由选择所要执行的功能) 7)系统开始前加载存储在文件中的数据,结束后将所有数据进行存储。

最新推荐

recommend-type

C++ 中boost::share_ptr智能指针的使用方法

主要介绍了C++ 中boost::share_ptr智能指针的使用方法的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
recommend-type

C++ 学生成绩管理系统设计报告书

个人课程设计报告书(内含源码) 内含4个类,各自具有其属性和行为。 基本实现了: (1)学生基本信息、考试科目及成绩的信息录入。 (2)已有学生信息的显示。 (3)学生基本信息的读取和保存输入数据等功能 (4)学生基本...
recommend-type

C++标准库:std_set作为一个有序集合

std::set作为标准库的一个关联容器,实现内部元素进行了排序,使用这特性可以对一组元素进行插入排序。std::set最初的设计是完成数学中“集合”的概念,它提供的接口也是如此。
recommend-type

网考《C++语言程序设计》模拟题.docx

网考《C++语言程序设计》模拟题,需要的自取,基本上都能找到原题,已考过,网考《C++语言程序设计》
recommend-type

C++通过自定义函数找出一个整数数组中第二大数的方法

主要介绍了C++通过自定义函数找出一个整数数组中第二大数的方法,涉及C++针对数组的遍历操作相关技巧,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【实战演练】MATLAB用遗传算法改进粒子群GA-PSO算法

![MATLAB智能算法合集](https://static.fuxi.netease.com/fuxi-official/web/20221101/83f465753fd49c41536a5640367d4340.jpg) # 2.1 遗传算法的原理和实现 遗传算法(GA)是一种受生物进化过程启发的优化算法。它通过模拟自然选择和遗传机制来搜索最优解。 **2.1.1 遗传算法的编码和解码** 编码是将问题空间中的解表示为二进制字符串或其他数据结构的过程。解码是将编码的解转换为问题空间中的实际解的过程。常见的编码方法包括二进制编码、实数编码和树形编码。 **2.1.2 遗传算法的交叉和
recommend-type

openstack的20种接口有哪些

以下是OpenStack的20种API接口: 1. Identity (Keystone) API 2. Compute (Nova) API 3. Networking (Neutron) API 4. Block Storage (Cinder) API 5. Object Storage (Swift) API 6. Image (Glance) API 7. Telemetry (Ceilometer) API 8. Orchestration (Heat) API 9. Database (Trove) API 10. Bare Metal (Ironic) API 11. DNS
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。