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