python 学生考勤管理系统
时间: 2023-09-15 22:23:11 浏览: 246
开题报告Python学生考勤管理系统.docx
以下是一个简单的 Python 学生考勤管理系统的示例代码:
```python
class Student:
def __init__(self, name, id):
self.name = name
self.id = id
self.attendance = []
def add_attendance(self, status):
self.attendance.append(status)
class Attendance:
def __init__(self, date, status):
self.date = date
self.status = status
class AttendanceSheet:
def __init__(self):
self.attendance_list = []
def add_attendance(self, date, status):
attendance = Attendance(date, status)
self.attendance_list.append(attendance)
def get_attendance(self, student):
return [attendance.status for attendance in self.attendance_list if student.id == attendance.student_id]
class AttendanceManager:
def __init__(self):
self.student_list = []
self.attendance_sheet = AttendanceSheet()
def add_student(self, name, id):
student = Student(name, id)
self.student_list.append(student)
def get_student(self, id):
for student in self.student_list:
if student.id == id:
return student
return None
def mark_attendance(self, date, id, status):
student = self.get_student(id)
if student:
student.add_attendance(status)
self.attendance_sheet.add_attendance(date, status)
def get_attendance_report(self, id):
student = self.get_student(id)
attendance = self.attendance_sheet.get_attendance(student)
return attendance
attendance_manager = AttendanceManager()
attendance_manager.add_student("Alice", 1)
attendance_manager.add_student("Bob", 2)
attendance_manager.mark_attendance("2021-01-01", 1, "present")
attendance_manager.mark_attendance("2021-01-01", 2, "absent")
attendance_manager.mark_attendance("2021-01-02", 1, "absent")
attendance_manager.mark_attendance("2021-01-02", 2, "present")
print(attendance_manager.get_attendance_report(1))
print(attendance_manager.get_attendance_report(2))
```
在这个示例中,我们定义了三个类:`Student`、`Attendance` 和 `AttendanceSheet`。`Student` 类表示学生,包含学生的姓名、学号和考勤记录。`Attendance` 类表示一次考勤记录,包含日期和出勤状态。`AttendanceSheet` 类表示整个考勤表,包含所有学生的所有考勤记录。
我们还定义了一个 `AttendanceManager` 类,用于管理学生和考勤记录。在 `AttendanceManager` 类中,我们可以添加学生、标记考勤、获取学生的考勤记录等。
在最后的测试代码中,我们添加了两个学生并标记了四次考勤。然后我们获取了学生的考勤记录并打印出来。输出结果如下:
```
['present', 'absent']
['absent', 'present']
```
这表明学生 1 在第一次考勤中出勤,第二次考勤缺勤;学生 2 在第一次考勤缺勤,第二次考勤出勤。
阅读全文