好的,以下是一个简单的学位服租赁管理系统的C++代码,可供参考:
```
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 学位类别
class DegreeType {
public:
DegreeType(int id, string name) : id(id), name(name) {}
int getId() const { return id; }
string getName() const { return name; }
private:
int id;
string name;
};
// 学院
class Academy {
public:
Academy(int id, string name) : id(id), name(name) {}
int getId() const { return id; }
string getName() const { return name; }
private:
int id;
string name;
};
// 专业
class Major {
public:
Major(int id, string name, const Academy& academy) : id(id), name(name), academy(academy) {}
int getId() const { return id; }
string getName() const { return name; }
const Academy& getAcademy() const { return academy; }
private:
int id;
string name;
const Academy& academy;
};
// 学生
class Student {
public:
Student(int id, string name, const Major& major) : id(id), name(name), major(major) {}
int getId() const { return id; }
string getName() const { return name; }
const Major& getMajor() const { return major; }
private:
int id;
string name;
const Major& major;
};
// 学位服
class Gown {
public:
Gown(int id, const DegreeType& degreeType) : id(id), degreeType(degreeType), isRented(false) {}
int getId() const { return id; }
const DegreeType& getDegreeType() const { return degreeType; }
bool getIsRented() const { return isRented; }
void setIsRented(bool isRented) { this->isRented = isRented; }
private:
int id;
const DegreeType& degreeType;
bool isRented;
};
// 租借记录
class RentRecord {
public:
RentRecord(int id, const Student& student, const Gown& gown, string rentDate) :
id(id), student(student), gown(gown), rentDate(rentDate) {}
int getId() const { return id; }
const Student& getStudent() const { return student; }
const Gown& getGown() const { return gown; }
string getRentDate() const { return rentDate; }
private:
int id;
const Student& student;
const Gown& gown;
string rentDate;
};
// 管理系统
class ManagementSystem {
public:
ManagementSystem() {
// 初始化数据
degreeTypes.push_back(DegreeType(1, "学士"));
degreeTypes.push_back(DegreeType(2, "硕士"));
degreeTypes.push_back(DegreeType(3, "博士"));
academies.push_back(Academy(1, "计算机学院"));
academies.push_back(Academy(2, "外语学院"));
academies.push_back(Academy(3, "电子工程学院"));
majors.push_back(Major(1, "计算机科学与技术", academies[0]));
majors.push_back(Major(2, "软件工程", academies[0]));
majors.push_back(Major(3, "英语", academies[1]));
majors.push_back(Major(4, "电子信息工程", academies[2]));
}
void addDegreeType(string name) {
int id = degreeTypes.size() + 1;
degreeTypes.push_back(DegreeType(id, name));
}
void addAcademy(string name) {
int id = academies.size() + 1;
academies.push_back(Academy(id, name));
}
void addMajor(string name, int academyId) {
int id = majors.size() + 1;
auto academy = find_if(academies.begin(), academies.end(), [&](Academy a) { return a.getId() == academyId; });
if (academy != academies.end()) {
majors.push_back(Major(id, name, *academy));
}
}
void addStudent(string name, int majorId) {
int id = students.size() + 1;
auto major = find_if(majors.begin(), majors.end(), [&](Major m) { return m.getId() == majorId; });
if (major != majors.end()) {
students.push_back(Student(id, name, *major));
}
}
void addGown(int degreeTypeId) {
int id = gowns.size() + 1;
auto degreeType = find_if(degreeTypes.begin(), degreeTypes.end(), [&](DegreeType d) { return d.getId() == degreeTypeId; });
if (degreeType != degreeTypes.end()) {
gowns.push_back(Gown(id, *degreeType));
}
}
void rentGown(int studentId, int gownId, string rentDate) {
auto student = find_if(students.begin(), students.end(), [&](Student s) { return s.getId() == studentId; });
auto gown = find_if(gowns.begin(), gowns.end(), [&](Gown g) { return g.getId() == gownId; });
if (student != students.end() && gown != gowns.end() && !gown->getIsRented()) {
gown->setIsRented(true);
int id = rentRecords.size() + 1;
rentRecords.push_back(RentRecord(id, *student, *gown, rentDate));
}
}
void returnGown(int gownId) {
auto gown = find_if(gowns.begin(), gowns.end(), [&](Gown g) { return g.getId() == gownId; });
if (gown != gowns.end() && gown->getIsRented()) {
gown->setIsRented(false);
}
}
void printGownList() {
cout << "学位服列表:" << endl;
for (auto gown : gowns) {
cout << "学位服 " << gown.getId() << ",学位类别:" << gown.getDegreeType().getName() << ",状态:" << (gown.getIsRented() ? "已借出" : "未借出") << endl;
}
cout << endl;
}
void printRentRecordList() {
cout << "租借记录列表:" << endl;
for (auto rentRecord : rentRecords) {
cout << "租借记录 " << rentRecord.getId() << ",学生:" << rentRecord.getStudent().getName() << ",学位服:" << rentRecord.getGown().getId() << ",租借日期:" << rentRecord.getRentDate() << endl;
}
cout << endl;
}
private:
vector<DegreeType> degreeTypes;
vector<Academy> academies;
vector<Major> majors;
vector<Student> students;
vector<Gown> gowns;
vector<RentRecord> rentRecords;
};
int main() {
ManagementSystem system;
system.addDegreeType("博士");
system.addDegreeType("硕士");
system.addDegreeType("学士");
system.addAcademy("建筑学院");
system.addAcademy("计算机学院");
system.addMajor("建筑设计", 1);
system.addMajor("软件工程", 2);
system.addStudent("张三", 2);
system.addStudent("李四", 2);
system.addGown(1);
system.addGown(2);
system.addGown(3);
system.rentGown(1, 1, "2021-06-01");
system.rentGown(2, 2, "2021-06-02");
system.printGownList();
system.printRentRecordList();
system.returnGown(1);
system.printGownList();
system.printRentRecordList();
return 0;
}
```
此代码仅供参考,实际开发中需要根据具体需求进行修改和完善。