Python 代码编写一个课时记录系统

Course.py

class Course:
    def __init__(self, name, duration):
        self.name = name
        self.duration = duration

Student.py

class Student:
    def __init__(self, name):
        self.name = name
        self.attendance = 0

AttendanceSystem.py

class AttendanceSystem:
    def __init__(self):
        self.courses = []
        self.students = []

    def add_course(self, name, duration):
        if duration <= 0:
            raise ValueError("Duration should be a positive integer")
        course = Course(name, duration)
        self.courses.append(course)

    def add_student(self, name):
        student = Student(name)
        self.students.append(student)

    def mark_attendance(self, student_name, course_name):
        student = next((s for s in self.students if s.name == student_name), None)
        course = next((c for c in self.courses if c.name == course_name), None)
        if student is None or course is None:
            raise ValueError("Student or course not found")
        student.attendance += course.duration

main.py

from Course import Course
from Student import Student
from AttendanceSystem import AttendanceSystem

# 使用示例
attendance_system = AttendanceSystem()

try:
    attendance_system.add_course("Math", 3)
    attendance_system.add_course("Physics", -2)  # 引发异常
except ValueError as e:
    print("Error:", e)

attendance_system.add_student("Alice")
attendance_system.add_student("Bob")

try:
    attendance_system.mark_attendance("Alice", "Math")
    attendance_system.mark_attendance("Alice", "Chemistry")  # 引发异常
except ValueError as e:
    print("Error:", e)

C++ 代码编写一个课时记录系统

Course.h

#ifndef COURSE_H
#define COURSE_H

#include <string>

class Course {
public:
    Course(const std::string& name, int duration);
    std::string get_name() const;
    int get_duration() const;

private:
    std::string name;
    int duration;
};

#endif // COURSE_H

Course.cpp

#include "Course.h"

Course::Course(const std::string& name, int duration) : name(name), duration(duration) {}

std::string Course::get_name() const {
    return name;
}

int Course::get_duration() const {
    return duration;
}

Student.cpp

#include "Student.h"

Student::Student(const std::string& name) : name(name), attendance(0) {}

std::string Student::get_name() const {
    return name;
}

int Student::get_attendance() const {
    return attendance;
}

void Student::add_attendance(int duration) {
    attendance += duration;
}

AttendanceSystem.h

#ifndef ATTENDANCESYSTEM_H
#define ATTENDANCESYSTEM_H

#include <vector>
#include <stdexcept>
#include "Course.h"
#include "Student.h"

class AttendanceSystem {
public:
    void add_course(const std::string& name, int duration);
    void add_student(const std::string& name);
    void mark_attendance(const std::string& student_name, const std::string& course_name);

private:
    std::vector<Course> courses;
    std::vector<Student> students;
};

#endif // ATTENDANCESYSTEM_H

AttendanceSystem.cpp

#include "AttendanceSystem.h"

void AttendanceSystem::add_course(const std::string& name, int duration) {
    if (duration <= 0) {
        throw std::invalid_argument("Duration should be a positive integer");
    }
    courses.emplace_back(name, duration);
}

void AttendanceSystem::add_student(const std::string& name) {
    students.emplace_back(name);
}

void AttendanceSystem::mark_attendance(const std::string& student_name, const std::string& course_name) {
    auto student_it = std::find_if(students.begin(), students.end(), [&](const Student& s) {
        return s.get_name() == student_name;
    });
    auto course_it = std::find_if(courses.begin(), courses.end(), [&](const Course& c) {
        return c.get_name() == course_name;
    });
    if (student_it == students.end() || course_it == courses.end()) {
        throw std::invalid_argument("Student or course not found");
    }
    student_it->add_attendance(course_it->get_duration());
}

main.cpp

#include <iostream>
#include "AttendanceSystem.h"

int main() {
    AttendanceSystem attendance_system;

    try {
        attendance_system.add_course("Math", 3);
        attendance_system.add_course("Physics", -2); // 引发异常
    } catch (const std::invalid_argument& e) {
        std::cerr << "Error: " << e.what() << std::endl;
    }

    attendance_system.add_student("Alice");
    attendance_system.add_student("Bob");

    try {
        attendance_system.mark_attendance("Alice", "Math");
        attendance_system.mark_attendance("Alice", "Chemistry"); // 引发异常
    } catch (const std::invalid_argument& e) {
        std::cerr << "Error: " << e.what() << std::endl;
    }

    return 0;
}

Go 代码编写一个课时记录系统

package main

import (
	"errors"
	"fmt"
)

// Course 表示课程
type Course struct {
	name     string
	duration int
}

// Student 表示学生
type Student struct {
	name       string
	attendance int
}

// AttendanceSystem 表示课时记录系统
type AttendanceSystem struct {
	courses  []*Course
	students []*Student
}

// NewCourse 创建新的课程
func NewCourse(name string, duration int) (*Course, error) {
	if duration <= 0 {
		return nil, errors.New("Duration should be a positive integer")
	}
	return &Course{name: name, duration: duration}, nil
}

// NewStudent 创建新的学生
func NewStudent(name string) *Student {
	return &Student{name: name}
}

// AddCourse 添加课程
func (as *AttendanceSystem) AddCourse(course *Course) {
	as.courses = append(as.courses, course)
}

// AddStudent 添加学生
func (as *AttendanceSystem) AddStudent(student *Student) {
	as.students = append(as.students, student)
}

// MarkAttendance 标记出勤
func (as *AttendanceSystem) MarkAttendance(studentName, courseName string) error {
	var student *Student
	for _, s := range as.students {
		if s.name == studentName {
			student = s
			break
		}
	}
	if student == nil {
		return errors.New("Student not found")
	}
	var course *Course
	for _, c := range as.courses {
		if c.name == courseName {
			course = c
			break
		}
	}
	if course == nil {
		return errors.New("Course not found")
	}
	student.attendance += course.duration
	return nil
}

func main() {
	attendanceSystem := AttendanceSystem{}

	mathCourse, err := NewCourse("Math", 3)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	physicsCourse, err := NewCourse("Physics", -2)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	attendanceSystem.AddCourse(mathCourse)
	attendanceSystem.AddCourse(physicsCourse)

	alice := NewStudent("Alice")
	bob := NewStudent("Bob")
	attendanceSystem.AddStudent(alice)
	attendanceSystem.AddStudent(bob)

	err = attendanceSystem.MarkAttendance("Alice", "Math")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	err = attendanceSystem.MarkAttendance("Alice", "Chemistry")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
}

这段代码实现了一个简单的课时记录系统,包括了课程、学生以及课时记录系统的功能。