fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <sstream> // 添加这一行
  5. #include <algorithm>
  6.  
  7. // 类表示
  8. class ClassEntry {
  9. public:
  10. std::string name;
  11. std::vector<std::string> baseClasses;
  12. std::vector<std::string> memberFunctions;
  13. std::vector<std::string> dataMembers;
  14.  
  15. ClassEntry(const std::string& name) : name(name) {}
  16. };
  17.  
  18. // 类库表示
  19. class ClassLibrary {
  20. public:
  21. std::vector<ClassEntry> classes;
  22.  
  23. // 添加类
  24. void addClass(const ClassEntry& cls) {
  25. classes.push_back(cls);
  26. }
  27.  
  28. // 查找类
  29. ClassEntry* findClass(const std::string& name) {
  30. for (auto& cls : classes) {
  31. if (cls.name == name) {
  32. return &cls;
  33. }
  34. }
  35. return nullptr;
  36. }
  37.  
  38. // 显示所有类
  39. void displayAllClasses() {
  40. for (const auto& cls : classes) {
  41. std::cout << "Class: " << cls.name << std::endl;
  42. std::cout << "Base Classes: ";
  43. for (const auto& base : cls.baseClasses) {
  44. std::cout << base << " ";
  45. }
  46. std::cout << std::endl;
  47. std::cout << "Member Functions: ";
  48. for (const auto& func : cls.memberFunctions) {
  49. std::cout << func << " ";
  50. }
  51. std::cout << std::endl;
  52. std::cout << "Data Members: ";
  53. for (const auto& data : cls.dataMembers) {
  54. std::cout << data << " ";
  55. }
  56. std::cout << std::endl << std::endl;
  57. }
  58. }
  59. };
  60.  
  61. // 显示菜单
  62. void displayMenu() {
  63. std::cout << "===== C++ Class Library Management System =====" << std::endl;
  64. std::cout << "1. Add a new class" << std::endl;
  65. std::cout << "2. Display all classes" << std::endl;
  66. std::cout << "3. Exit" << std::endl;
  67. std::cout << "Enter your choice: ";
  68. }
  69.  
  70. // 主函数
  71. int main() {
  72. ClassLibrary library;
  73. int choice;
  74. bool running = true;
  75.  
  76. while (running) {
  77. displayMenu();
  78. std::cin >> choice;
  79. std::cin.ignore(); // 忽略换行符
  80.  
  81. switch (choice) {
  82. case 1: {
  83. std::string className;
  84. std::cout << "Enter class name: ";
  85. std::getline(std::cin, className);
  86.  
  87. ClassEntry newClass(className);
  88.  
  89. std::string baseClass;
  90. std::cout << "Enter base classes (comma separated, leave empty if none): ";
  91. std::getline(std::cin, baseClass);
  92. if (!baseClass.empty()) {
  93. std::replace(baseClass.begin(), baseClass.end(), ',', ' ');
  94. std::istringstream iss(baseClass); // 使用 std::istringstream
  95. std::string base;
  96. while (iss >> base) {
  97. newClass.baseClasses.push_back(base);
  98. }
  99. }
  100.  
  101. std::string memberFunc;
  102. std::cout << "Enter member functions (comma separated, leave empty if none): ";
  103. std::getline(std::cin, memberFunc);
  104. if (!memberFunc.empty()) {
  105. std::replace(memberFunc.begin(), memberFunc.end(), ',', ' ');
  106. std::istringstream iss(memberFunc); // 使用 std::istringstream
  107. std::string func;
  108. while (iss >> func) {
  109. newClass.memberFunctions.push_back(func);
  110. }
  111. }
  112.  
  113. std::string dataMember;
  114. std::cout << "Enter data members (comma separated, leave empty if none): ";
  115. std::getline(std::cin, dataMember);
  116. if (!dataMember.empty()) {
  117. std::replace(dataMember.begin(), dataMember.end(), ',', ' ');
  118. std::istringstream iss(dataMember); // 使用 std::istringstream
  119. std::string data;
  120. while (iss >> data) {
  121. newClass.dataMembers.push_back(data);
  122. }
  123. }
  124.  
  125. library.addClass(newClass);
  126. std::cout << "Class added successfully!" << std::endl;
  127. break;
  128. }
  129. case 2:
  130. if (library.classes.empty()) {
  131. std::cout << "No classes in the library." << std::endl;
  132. } else {
  133. library.displayAllClasses();
  134. }
  135. break;
  136. case 3:
  137. running = false;
  138. std::cout << "Exiting..." << std::endl;
  139. break;
  140. default:
  141. std::cout << "Invalid choice. Please try again." << std::endl;
  142. }
  143.  
  144. std::cout << std::endl;
  145. }
  146.  
  147. return 0;
  148. }
Success #stdin #stdout 0.01s 5276KB
stdin
1
Enter class name: Vehicle
Enter base classes (comma separated, leave empty if none): 
Enter member functions (comma separated, leave empty if none): move, stop
Enter data members (comma separated, leave empty if none): speed, direction
2
1
Enter class name: Car
Enter base classes (comma separated, leave empty if none): Vehicle
Enter member functions (comma separated, leave empty if none): honk, park
Enter data members (comma separated, leave empty if none): make, model
2
3
stdout
===== C++ Class Library Management System =====
1. Add a new class
2. Display all classes
3. Exit
Enter your choice: Enter class name: Enter base classes (comma separated, leave empty if none): Enter member functions (comma separated, leave empty if none): Enter data members (comma separated, leave empty if none): Class added successfully!

===== C++ Class Library Management System =====
1. Add a new class
2. Display all classes
3. Exit
Enter your choice: Class: Enter class name: Vehicle
Base Classes: Enter base classes (comma separated leave empty if none): 
Member Functions: Enter member functions (comma separated leave empty if none): move stop 
Data Members: Enter data members (comma separated leave empty if none): speed direction 


===== C++ Class Library Management System =====
1. Add a new class
2. Display all classes
3. Exit
Enter your choice: Enter class name: Enter base classes (comma separated, leave empty if none): Enter member functions (comma separated, leave empty if none): Enter data members (comma separated, leave empty if none): Class added successfully!

===== C++ Class Library Management System =====
1. Add a new class
2. Display all classes
3. Exit
Enter your choice: Class: Enter class name: Vehicle
Base Classes: Enter base classes (comma separated leave empty if none): 
Member Functions: Enter member functions (comma separated leave empty if none): move stop 
Data Members: Enter data members (comma separated leave empty if none): speed direction 

Class: Enter class name: Car
Base Classes: Enter base classes (comma separated leave empty if none): Vehicle 
Member Functions: Enter member functions (comma separated leave empty if none): honk park 
Data Members: Enter data members (comma separated leave empty if none): make model 


===== C++ Class Library Management System =====
1. Add a new class
2. Display all classes
3. Exit
Enter your choice: Exiting...