parent
							
								
									2ce480443b
								
							
						
					
					
						commit
						73498b9b57
					
				| @ -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,6 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <project version="4"> | ||||||
|  |   <component name="Encoding"> | ||||||
|  |     <file url="file://$PROJECT_DIR$/date" charset="GBK" /> | ||||||
|  |   </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/work20220330.iml" filepath="$PROJECT_DIR$/.idea/work20220330.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(work20220330) | ||||||
|  | 
 | ||||||
|  | set(CMAKE_CXX_STANDARD 14) | ||||||
|  | 
 | ||||||
|  | add_executable(work20220330 main.cpp Leader.cpp Leader.h Staff.cpp Staff.h date/Date.h date/Date.cpp Teacher.cpp Teacher.h DbTeacher.cpp DbTeacher.h) | ||||||
| @ -0,0 +1,24 @@ | |||||||
|  | //
 | ||||||
|  | // Created by lensferno on 2022/3/30.
 | ||||||
|  | //
 | ||||||
|  | 
 | ||||||
|  | #include <sstream> | ||||||
|  | #include "DbTeacher.h" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | DbTeacher::DbTeacher(const Staff &staff, const std::string &title, const std::string &job, | ||||||
|  |                      int salary) : Teacher(staff, title), Leader(staff, job), Staff(staff), salary(salary) {} | ||||||
|  | 
 | ||||||
|  | DbTeacher::DbTeacher(const DbTeacher &dbTeacher) : Teacher(dbTeacher), Leader(dbTeacher), Staff(dbTeacher), | ||||||
|  |                                                    salary(dbTeacher.salary) {} | ||||||
|  | 
 | ||||||
|  | std::string DbTeacher::toString() { | ||||||
|  |     std::stringstream output; | ||||||
|  |     output | ||||||
|  |             << "--> as leader:" << '\n' | ||||||
|  |             << Leader::toString() << '\n' | ||||||
|  |             << "--> as teacher:" << '\n' | ||||||
|  |             << Teacher::toString() << '\n' | ||||||
|  |             << "in DbTeacher:\nsalary:" << salary; | ||||||
|  |     return output.str(); | ||||||
|  | }; | ||||||
| @ -0,0 +1,24 @@ | |||||||
|  | //
 | ||||||
|  | // Created by lensferno on 2022/3/30.
 | ||||||
|  | //
 | ||||||
|  | 
 | ||||||
|  | #ifndef WORK20220330_DBTEACHER_H | ||||||
|  | #define WORK20220330_DBTEACHER_H | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #include "Leader.h" | ||||||
|  | #include "Teacher.h" | ||||||
|  | 
 | ||||||
|  | class DbTeacher : public Teacher, public Leader{ | ||||||
|  | private: | ||||||
|  |     int salary; | ||||||
|  | 
 | ||||||
|  | public: | ||||||
|  |     DbTeacher(const Staff &staff, const std::string &title, const std::string &job, int salary); | ||||||
|  |     DbTeacher(const DbTeacher &dbTeacher); | ||||||
|  |     DbTeacher() = delete; | ||||||
|  |     std::string toString(); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #endif //WORK20220330_DBTEACHER_H
 | ||||||
| @ -0,0 +1,21 @@ | |||||||
|  | //
 | ||||||
|  | // Created by lensferno on 2022/3/30.
 | ||||||
|  | //
 | ||||||
|  | 
 | ||||||
|  | #include <sstream> | ||||||
|  | #include "Leader.h" | ||||||
|  | 
 | ||||||
|  | Leader::Leader(const std::string &name, char sex, const std::string &phone, const Date &birthday, | ||||||
|  |                const std::string &job) : Staff(name, sex, phone, birthday), job(job) {} | ||||||
|  | 
 | ||||||
|  | Leader::Leader(const Staff &staff, const std::string &job) : Staff(staff), job(job) {} | ||||||
|  | 
 | ||||||
|  | std::string Leader::toString() { | ||||||
|  |     std::stringstream out; | ||||||
|  |     out | ||||||
|  |             << Staff::toString() << '\n' | ||||||
|  |             << "job: " << job << '\n'; | ||||||
|  |     return out.str(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Leader::Leader(const Leader &leader) : Staff(leader), job(leader.job) {} | ||||||
| @ -0,0 +1,27 @@ | |||||||
|  | //
 | ||||||
|  | // Created by lensferno on 2022/3/30.
 | ||||||
|  | //
 | ||||||
|  | 
 | ||||||
|  | #ifndef WORK20220330_LEADER_H | ||||||
|  | #define WORK20220330_LEADER_H | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #include "Staff.h" | ||||||
|  | 
 | ||||||
|  | class Leader : virtual public Staff { | ||||||
|  | protected: | ||||||
|  |     std::string job; | ||||||
|  | 
 | ||||||
|  | public: | ||||||
|  | 
 | ||||||
|  |     Leader(const std::string &name, char sex, const std::string &phone, const Date &birthday, const std::string &job); | ||||||
|  | 
 | ||||||
|  |     Leader(const Staff &staff, const std::string &job); | ||||||
|  | 
 | ||||||
|  |     Leader(const Leader &leader); | ||||||
|  | 
 | ||||||
|  |     std::string toString(); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #endif //WORK20220330_LEADER_H
 | ||||||
| @ -0,0 +1,23 @@ | |||||||
|  | //
 | ||||||
|  | // Created by lensferno on 2022/3/30.
 | ||||||
|  | //
 | ||||||
|  | 
 | ||||||
|  | #include <sstream> | ||||||
|  | #include "Staff.h" | ||||||
|  | 
 | ||||||
|  | Staff::Staff(const std::string &name, char sex, const std::string &phone, const Date &birthday) : | ||||||
|  |         name(name), sex(sex), phone(phone), | ||||||
|  |         birthday(birthday) {} | ||||||
|  | 
 | ||||||
|  | Staff::Staff(const Staff &staff) : name(staff.name), sex(staff.sex), phone(staff.phone), birthday(staff.birthday) {} | ||||||
|  | 
 | ||||||
|  | std::string Staff::toString() { | ||||||
|  |     std::stringstream output; | ||||||
|  |     output | ||||||
|  |             << "name: " << name << '\n' | ||||||
|  |             << "sex: " << sex << '\n' | ||||||
|  |             << "phone: " << phone << '\n' | ||||||
|  |             << "birthday: " << birthday.toString(); | ||||||
|  |     return output.str(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| @ -0,0 +1,28 @@ | |||||||
|  | //
 | ||||||
|  | // Created by lensferno on 2022/3/30.
 | ||||||
|  | //
 | ||||||
|  | 
 | ||||||
|  | #ifndef WORK20220330_STAFF_H | ||||||
|  | #define WORK20220330_STAFF_H | ||||||
|  | 
 | ||||||
|  | #include <string> | ||||||
|  | #include "date/Date.h" | ||||||
|  | 
 | ||||||
|  | class Staff { | ||||||
|  | protected: | ||||||
|  |     std::string name; | ||||||
|  |     char sex; | ||||||
|  |     std::string phone; | ||||||
|  |     Date birthday; | ||||||
|  | public: | ||||||
|  |     Staff(const std::string &name, char sex, const std::string &phone, const Date &birthday); | ||||||
|  | 
 | ||||||
|  |     Staff(const Staff &staff); | ||||||
|  | 
 | ||||||
|  |     Staff() = delete; | ||||||
|  | 
 | ||||||
|  |     std::string toString(); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #endif //WORK20220330_STAFF_H
 | ||||||
| @ -0,0 +1,19 @@ | |||||||
|  | //
 | ||||||
|  | // Created by lensferno on 2022/3/30.
 | ||||||
|  | //
 | ||||||
|  | 
 | ||||||
|  | #include <sstream> | ||||||
|  | #include "Teacher.h" | ||||||
|  | 
 | ||||||
|  | Teacher::Teacher(const Staff &staff, const std::string &title) : Staff(staff), title(title) {} | ||||||
|  | 
 | ||||||
|  | std::string Teacher::toString() { | ||||||
|  |     std::stringstream out; | ||||||
|  |     out | ||||||
|  |             << Staff::toString() << '\n' | ||||||
|  |             << "title: " << title << '\n'; | ||||||
|  | 
 | ||||||
|  |     return out.str(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | Teacher::Teacher(const Teacher &teacher) : Staff(teacher), title(teacher.title) {} | ||||||
| @ -0,0 +1,23 @@ | |||||||
|  | //
 | ||||||
|  | // Created by lensferno on 2022/3/30.
 | ||||||
|  | //
 | ||||||
|  | 
 | ||||||
|  | #ifndef WORK20220330_TEACHER_H | ||||||
|  | #define WORK20220330_TEACHER_H | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #include "Staff.h" | ||||||
|  | 
 | ||||||
|  | class Teacher : public virtual Staff { | ||||||
|  | protected: | ||||||
|  |     std::string title; | ||||||
|  | public: | ||||||
|  |     Teacher(const Staff &staff, const std::string &title); | ||||||
|  | 
 | ||||||
|  |     Teacher(const Teacher &teacher); | ||||||
|  | 
 | ||||||
|  |     std::string toString(); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #endif //WORK20220330_TEACHER_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,9 @@ | |||||||
|  | #include <iostream> | ||||||
|  | #include "DbTeacher.h" | ||||||
|  | 
 | ||||||
|  | int main() { | ||||||
|  |     Staff basicInformation("dbt", 'M', "17388293849", Date(2002, 6, 9)); | ||||||
|  |     DbTeacher dbTeacher(basicInformation, "unknown title", "unknown job", 11234); | ||||||
|  |     std::cout << dbTeacher.toString(); | ||||||
|  |     return 0; | ||||||
|  | } | ||||||
					Loading…
					
					
				
		Reference in new issue