parent
							
								
									a45d364c6d
								
							
						
					
					
						commit
						707145a984
					
				@ -0,0 +1,8 @@ | 
				
			||||
# Default ignored files | 
				
			||||
/shelf/ | 
				
			||||
/workspace.xml | 
				
			||||
# Editor-based HTTP Client requests | 
				
			||||
/httpRequests/ | 
				
			||||
# Datasource local storage ignored files | 
				
			||||
/dataSources/ | 
				
			||||
/dataSources.local.xml | 
				
			||||
@ -0,0 +1,14 @@ | 
				
			||||
<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||
<project version="4"> | 
				
			||||
  <component name="PublishConfigData" remoteFilesAllowedToDisappearOnAutoupload="false"> | 
				
			||||
    <serverData> | 
				
			||||
      <paths name="remote_linux (563cc454-127a-4c53-a847-5bf281087bb1)"> | 
				
			||||
        <serverdata> | 
				
			||||
          <mappings> | 
				
			||||
            <mapping local="$PROJECT_DIR$" web="/" /> | 
				
			||||
          </mappings> | 
				
			||||
        </serverdata> | 
				
			||||
      </paths> | 
				
			||||
    </serverData> | 
				
			||||
  </component> | 
				
			||||
</project> | 
				
			||||
@ -0,0 +1,4 @@ | 
				
			||||
<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||
<project version="4"> | 
				
			||||
  <component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" /> | 
				
			||||
</project> | 
				
			||||
@ -0,0 +1,8 @@ | 
				
			||||
<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||
<project version="4"> | 
				
			||||
  <component name="ProjectModuleManager"> | 
				
			||||
    <modules> | 
				
			||||
      <module fileurl="file://$PROJECT_DIR$/.idea/work20220325.iml" filepath="$PROJECT_DIR$/.idea/work20220325.iml" /> | 
				
			||||
    </modules> | 
				
			||||
  </component> | 
				
			||||
</project> | 
				
			||||
@ -0,0 +1,6 @@ | 
				
			||||
<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||
<project version="4"> | 
				
			||||
  <component name="VcsDirectoryMappings"> | 
				
			||||
    <mapping directory="$PROJECT_DIR$/.." vcs="Git" /> | 
				
			||||
  </component> | 
				
			||||
</project> | 
				
			||||
@ -0,0 +1,2 @@ | 
				
			||||
<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||
<module classpath="CMake" type="CPP_MODULE" version="4" /> | 
				
			||||
@ -0,0 +1,6 @@ | 
				
			||||
cmake_minimum_required(VERSION 3.21) | 
				
			||||
project(work20220325) | 
				
			||||
 | 
				
			||||
set(CMAKE_CXX_STANDARD 14) | 
				
			||||
 | 
				
			||||
add_executable(work20220325 main.cpp person/Person.cpp person/Person.h date/Date.cpp date/Date.h person/students/Student.cpp person/students/Student.h person/teachers/Teacher.cpp person/teachers/Teacher.h person/students/Graduate.cpp person/students/Graduate.h date/Date.cpp date/Date.h person/students/Student.cpp person/students/Student.h person/teachers/Teacher.cpp person/teachers/Teacher.h person/students/Graduate.cpp person/students/Graduate.h person/students/TeachAssistant.cpp person/students/TeachAssistant.h) | 
				
			||||
@ -0,0 +1,30 @@ | 
				
			||||
#include <sstream> | 
				
			||||
#include "Date.h" | 
				
			||||
 | 
				
			||||
Date::Date(int year, int month, int day) : year(year), month(month), day(day) {} | 
				
			||||
 | 
				
			||||
Date::Date(const Date &date) : year(date.year),month(date.month), day(date.day) {} | 
				
			||||
 | 
				
			||||
int Date::getYear() const { | 
				
			||||
    return year; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
int Date::getMonth() const { | 
				
			||||
    return month; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
int Date::getDay() const { | 
				
			||||
    return day; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
void Date::setDate(int year, int month, int day) { | 
				
			||||
    Date::year = year; | 
				
			||||
    Date::month = month; | 
				
			||||
    Date::day = day; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
std::string Date::toString() const { | 
				
			||||
    std::stringstream output; | 
				
			||||
    output << year << '-' << month << '-' << day; | 
				
			||||
    return output.str(); | 
				
			||||
} | 
				
			||||
@ -0,0 +1,30 @@ | 
				
			||||
#ifndef WORK20220325_DATE_H | 
				
			||||
#define WORK20220325_DATE_H | 
				
			||||
 | 
				
			||||
#include <string> | 
				
			||||
 | 
				
			||||
class Date { | 
				
			||||
private: | 
				
			||||
    int year; | 
				
			||||
    int month; | 
				
			||||
    int day; | 
				
			||||
public: | 
				
			||||
    Date(int year, int month, int day); | 
				
			||||
 | 
				
			||||
    Date() = delete; | 
				
			||||
 | 
				
			||||
    Date(const Date &date); | 
				
			||||
 | 
				
			||||
    int getYear() const; | 
				
			||||
 | 
				
			||||
    int getMonth() const; | 
				
			||||
 | 
				
			||||
    int getDay() const; | 
				
			||||
 | 
				
			||||
    void setDate(int year, int month, int day); | 
				
			||||
 | 
				
			||||
    std::string toString() const; | 
				
			||||
}; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
#endif //WORK20220325_DATE_H
 | 
				
			||||
@ -0,0 +1,22 @@ | 
				
			||||
#include <iostream> | 
				
			||||
#include <sstream> | 
				
			||||
#include "Person.h" | 
				
			||||
 | 
				
			||||
Person::Person(const std::string& id, const std::string &name, char sex, const std::string &identNumber, | 
				
			||||
               const Date &birthday) : id(id), name(name), sex(sex), identNumber(identNumber), birthday(birthday) {} | 
				
			||||
 | 
				
			||||
Person::Person(const Person &person) : id(person.id), name(person.name), sex(person.sex), | 
				
			||||
                                       identNumber(person.identNumber), | 
				
			||||
                                       birthday(person.birthday) {} | 
				
			||||
 | 
				
			||||
std::string Person::toString() { | 
				
			||||
    std::stringstream output; | 
				
			||||
    output | 
				
			||||
            << "编号:" << id << '\n' | 
				
			||||
            << "姓名:" << name << '\n' | 
				
			||||
            << "性别:" << sex << '\n' | 
				
			||||
            << "身份证号:" << identNumber << '\n' | 
				
			||||
            << "出生日期:" << birthday.toString() << '\n'; | 
				
			||||
 | 
				
			||||
    return output.str(); | 
				
			||||
} | 
				
			||||
@ -0,0 +1,29 @@ | 
				
			||||
#ifndef WORK20220325_PERSON_H | 
				
			||||
#define WORK20220325_PERSON_H | 
				
			||||
 | 
				
			||||
#include <string> | 
				
			||||
#include "../date/Date.h" | 
				
			||||
 | 
				
			||||
class Person { | 
				
			||||
protected: | 
				
			||||
    std::string id; | 
				
			||||
    std::string name; | 
				
			||||
    char sex; | 
				
			||||
    std::string identNumber; | 
				
			||||
    Date birthday; | 
				
			||||
public: | 
				
			||||
    const static char SEX_MALE = 'M'; | 
				
			||||
    const static char SEX_FEMALE = 'F'; | 
				
			||||
 | 
				
			||||
    Person(const std::string &id, const std::string &name, char sex, const std::string &identNumber, | 
				
			||||
           const Date &birthday); | 
				
			||||
 | 
				
			||||
    Person() = delete; | 
				
			||||
 | 
				
			||||
    Person(const Person &person); | 
				
			||||
 | 
				
			||||
    virtual std::string toString(); | 
				
			||||
}; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
#endif //WORK20220325_PERSON_H
 | 
				
			||||
@ -0,0 +1,22 @@ | 
				
			||||
#include <sstream> | 
				
			||||
#include "Graduate.h" | 
				
			||||
 | 
				
			||||
Graduate::Graduate(const std::string &id, const std::string &name, char sex, const std::string &identNumber, | 
				
			||||
                   const Date &birthday, int classId, const std::string &subject, const Teacher &adviser, | 
				
			||||
                   const Person &person) : | 
				
			||||
        Student(id, name, sex, identNumber, birthday, classId), subject(subject), adviser(adviser), Person(person) {} | 
				
			||||
 | 
				
			||||
Graduate::Graduate(int classId, const Person &person, const std::string &subject, const Teacher &adviser) : Student( | 
				
			||||
        classId, person), subject(subject), adviser(adviser), Person(person) {} | 
				
			||||
 | 
				
			||||
Graduate::Graduate(const Graduate &graduate) : subject(graduate.subject), adviser(graduate.adviser), | 
				
			||||
                                               Student(graduate), Person(graduate) {} | 
				
			||||
 | 
				
			||||
std::string Graduate::toString() { | 
				
			||||
    std::stringstream output; | 
				
			||||
    output << Student::toString() << '\n' | 
				
			||||
            << "专业:" << subject << '\n' | 
				
			||||
            << "导师:{ \n" << adviser.toString() << " \n}" << '\n'; | 
				
			||||
 | 
				
			||||
    return output.str(); | 
				
			||||
} | 
				
			||||
@ -0,0 +1,25 @@ | 
				
			||||
#ifndef WORK20220325_GRADUATE_H | 
				
			||||
#define WORK20220325_GRADUATE_H | 
				
			||||
 | 
				
			||||
#include "Student.h" | 
				
			||||
#include "../teachers/Teacher.h" | 
				
			||||
 | 
				
			||||
class Graduate : public Student { | 
				
			||||
protected: | 
				
			||||
    std::string subject; | 
				
			||||
    Teacher adviser; | 
				
			||||
public: | 
				
			||||
    Graduate() = delete; | 
				
			||||
 | 
				
			||||
    Graduate(const std::string &id, const std::string &name, char sex, const std::string &identNumber, | 
				
			||||
             const Date &birthday, int classId, const std::string &subject, const Teacher &adviser, const Person &person); | 
				
			||||
 | 
				
			||||
    Graduate(const Graduate &graduate); | 
				
			||||
 | 
				
			||||
    Graduate(int classId, const Person &person, const std::string &subject, const Teacher &adviser); | 
				
			||||
 | 
				
			||||
    std::string toString(); | 
				
			||||
}; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
#endif //WORK20220325_GRADUATE_H
 | 
				
			||||
@ -0,0 +1,29 @@ | 
				
			||||
#include <iostream> | 
				
			||||
#include <sstream> | 
				
			||||
#include "Student.h" | 
				
			||||
 | 
				
			||||
Student::Student(int classId, const Person &person) : classId(classId), Person(person) {} | 
				
			||||
 | 
				
			||||
Student::Student(const Student &student) : classId(student.classId), Person(student) {} | 
				
			||||
 | 
				
			||||
int Student::getClassId() const { | 
				
			||||
    return classId; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
void Student::setClassId(int classId) { | 
				
			||||
    Student::classId = classId; | 
				
			||||
} | 
				
			||||
 | 
				
			||||
std::string Student::toString() { | 
				
			||||
    std::stringstream output; | 
				
			||||
    output | 
				
			||||
            << Person::toString() << '\n' | 
				
			||||
            << "班级:" << classId; | 
				
			||||
 | 
				
			||||
    return output.str(); | 
				
			||||
} | 
				
			||||
 | 
				
			||||
Student::Student(const std::string &id, const std::string &name, char sex, const std::string &identNumber, | 
				
			||||
                 const Date &birthday, int classId) | 
				
			||||
        : Person(id, name, sex, identNumber, birthday), classId(classId) {} | 
				
			||||
 | 
				
			||||
@ -0,0 +1,29 @@ | 
				
			||||
#ifndef WORK20220325_STUDENT_H | 
				
			||||
#define WORK20220325_STUDENT_H | 
				
			||||
 | 
				
			||||
 | 
				
			||||
#include "../Person.h" | 
				
			||||
 | 
				
			||||
class Student : virtual public Person { | 
				
			||||
protected: | 
				
			||||
    int classId; | 
				
			||||
 | 
				
			||||
public: | 
				
			||||
    Student() = delete; | 
				
			||||
 | 
				
			||||
    Student(int classId, const Person &person); | 
				
			||||
 | 
				
			||||
    Student(const Student &student); | 
				
			||||
 | 
				
			||||
    Student(const std::string &id, const std::string &name, char sex, const std::string &identNumber, | 
				
			||||
            const Date &birthday, int classId); | 
				
			||||
 | 
				
			||||
    int getClassId() const; | 
				
			||||
 | 
				
			||||
    void setClassId(int classId); | 
				
			||||
 | 
				
			||||
    std::string toString(); | 
				
			||||
}; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
#endif //WORK20220325_STUDENT_H
 | 
				
			||||
@ -0,0 +1,15 @@ | 
				
			||||
#include <sstream> | 
				
			||||
#include "TeachAssistant.h" | 
				
			||||
 | 
				
			||||
TeachAssistant::TeachAssistant(int classId, const Person &person, const std::string &subject, const Teacher &adviser, | 
				
			||||
                               const std::string &job, const std::string &department) | 
				
			||||
        : Graduate(classId, person, subject, adviser), Teacher(person, job, department), Person(person) {} | 
				
			||||
 | 
				
			||||
std::string TeachAssistant::toString() { | 
				
			||||
    std::stringstream output; | 
				
			||||
    output << "[研究生身份信息]" << '\n' | 
				
			||||
           << Graduate::toString() << '\n' | 
				
			||||
           << "[教师身份信息]" << '\n' | 
				
			||||
           << Teacher::toString(); | 
				
			||||
    return output.str(); | 
				
			||||
} | 
				
			||||
@ -0,0 +1,20 @@ | 
				
			||||
#ifndef WORK20220325_TEACHASSISTANT_H | 
				
			||||
#define WORK20220325_TEACHASSISTANT_H | 
				
			||||
 | 
				
			||||
#include "Student.h" | 
				
			||||
#include "../teachers/Teacher.h" | 
				
			||||
#include "Graduate.h" | 
				
			||||
 | 
				
			||||
class TeachAssistant : public Graduate  , Teacher { | 
				
			||||
public: | 
				
			||||
    TeachAssistant(int classId, const Person &person, const std::string &subject, const Teacher &adviser, | 
				
			||||
                   const std::string &job, const std::string &department); | 
				
			||||
 | 
				
			||||
    TeachAssistant() = delete; | 
				
			||||
 | 
				
			||||
    std::string toString(); | 
				
			||||
 | 
				
			||||
}; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
#endif //WORK20220325_TEACHASSISTANT_H
 | 
				
			||||
@ -0,0 +1,16 @@ | 
				
			||||
#include <sstream> | 
				
			||||
#include "Teacher.h" | 
				
			||||
 | 
				
			||||
Teacher::Teacher(const Person &person, const std::string &job, const std::string &department) : | 
				
			||||
        Person(person), job(job), department(department) {} | 
				
			||||
 | 
				
			||||
Teacher::Teacher(const Teacher &teacher) : department(teacher.department), job(teacher.job), Person(teacher) {} | 
				
			||||
 | 
				
			||||
std::string Teacher::toString() { | 
				
			||||
    std::stringstream output; | 
				
			||||
    output << Person::toString() + '\n' | 
				
			||||
           << "部门:" << department << '\n' | 
				
			||||
           << "职务" << job << '\n'; | 
				
			||||
 | 
				
			||||
    return output.str(); | 
				
			||||
} | 
				
			||||
@ -0,0 +1,22 @@ | 
				
			||||
#ifndef WORK20220325_TEACHER_H | 
				
			||||
#define WORK20220325_TEACHER_H | 
				
			||||
 | 
				
			||||
 | 
				
			||||
#include "../Person.h" | 
				
			||||
 | 
				
			||||
class Teacher : virtual Person { | 
				
			||||
protected: | 
				
			||||
    std::string job; | 
				
			||||
    std::string department; | 
				
			||||
public: | 
				
			||||
    Teacher(const Person &person, const std::string &job, const std::string &department); | 
				
			||||
 | 
				
			||||
    Teacher(const Teacher &teacher); | 
				
			||||
 | 
				
			||||
    Teacher() = delete; | 
				
			||||
 | 
				
			||||
    virtual std::string toString(); | 
				
			||||
}; | 
				
			||||
 | 
				
			||||
 | 
				
			||||
#endif //WORK20220325_TEACHER_H
 | 
				
			||||
					Loading…
					
					
				
		Reference in new issue