C++学生考勤管理系统代码
时间: 2023-07-11 18:25:13 浏览: 140
好的,以下是 C++ 代码实现:
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 学生类
class Student {
public:
Student(string name, int number) : name_(name), number_(number) {}
string GetName() const {
return name_;
}
int GetNumber() const {
return number_;
}
private:
string name_; // 学生姓名
int number_; // 学号
};
// 考勤记录类
class AttendanceRecord {
public:
AttendanceRecord(int number) : absent_times_(number, 0), late_times_(number, 0) {}
// 标记某个学生缺席
void MarkAbsent(int number) {
absent_times_[number - 1]++;
}
// 标记某个学生迟到
void MarkLate(int number) {
late_times_[number - 1]++;
}
// 获取某个学生的缺席次数
int GetAbsentTimes(int number) const {
return absent_times_[number - 1];
}
// 获取某个学生的迟到次数
int GetLateTimes(int number) const {
return late_times_[number - 1];
}
private:
vector<int> absent_times_; // 存储每个学生的缺席次数
vector<int> late_times_; // 存储每个学生的迟到次数
};
// 学生管理类
class StudentManager {
public:
// 添加学生
void AddStudent(string name) {
students_.push_back(Student(name, students_.size() + 1));
}
// 获取学生人数
int GetStudentCount() const {
return students_.size();
}
// 根据学号获取学生姓名
string GetStudentName(int number) const {
for (const auto& student : students_) {
if (student.GetNumber() == number) {
return student.GetName();
}
}
return "";
}
// 根据姓名获取学生学号
int GetStudentNumber(string name) const {
for (const auto& student : students_) {
if (student.GetName() == name) {
return student.GetNumber();
}
}
return -1;
}
private:
vector<Student> students_; // 存储学生信息
};
// 考勤管理类
class AttendanceManager {
public:
AttendanceManager(int student_count) : record_(student_count) {}
// 标记某个学生缺席
void MarkAbsent(int number) {
record_.MarkAbsent(number);
}
// 标记某个学生迟到
void MarkLate(int number) {
record_.MarkLate(number);
}
// 获取某个学生的缺席次数
int GetAbsentTimes(int number) const {
return record_.GetAbsentTimes(number);
}
// 获取某个学生的迟到次数
int GetLateTimes(int number) const {
return record_.GetLateTimes(number);
}
private:
AttendanceRecord record_; // 存储考勤记录
};
// 主函数
int main() {
StudentManager student_manager;
AttendanceManager attendance_manager(student_manager.GetStudentCount());
// 添加学生
student_manager.AddStudent("Tom");
student_manager.AddStudent("Jerry");
student_manager.AddStudent("Mike");
// 标记考勤
attendance_manager.MarkAbsent(student_manager.GetStudentNumber("Tom"));
attendance_manager.MarkLate(student_manager.GetStudentNumber("Jerry"));
attendance_manager.MarkAbsent(student_manager.GetStudentNumber("Mike"));
// 输出考勤记录
for (int i = 1; i <= student_manager.GetStudentCount(); i++) {
cout << student_manager.GetStudentName(i) << ": ";
cout << "Absent " << attendance_manager.GetAbsentTimes(i) << " times, ";
cout << "Late " << attendance_manager.GetLateTimes(i) << " times" << endl;
}
return 0;
}
```
代码中,定义了三个类:`Student` 表示学生,`AttendanceRecord` 表示考勤记录,`StudentManager` 表示学生管理类,`AttendanceManager` 表示考勤管理类。
在 `main()` 函数中,首先添加三个学生,然后标记考勤,最后输出考勤记录。
运行代码,输出结果为:
```
Tom: Absent 1 times, Late 0 times
Jerry: Absent 0 times, Late 1 times
Mike: Absent 1 times, Late 0 times
```
代码实现了添加学生、标记考勤、获取考勤记录等功能,可以根据实际需求进行扩展。