酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

用c++写代码,要求:基于顺序存储结构的科技竞赛志愿者名册管理程序设计 利用数组设计一个志愿者名册管理程序,记录每个志愿者的编号、姓名、电话号码和志愿服务时长,并通过数字化菜单为用户提供插入、删除、查找和打印等功能。通过菜单的选择,用户可以对志愿者的信息进行管理。需要实现的功能包括: 添加志愿者信息。可一次添加n人,n为键盘录入的整数。录入的时候,志愿时长的初始值为0。 在数组的指定位置插入某个学生的数据。 修改志愿者信息。根据编号或姓名查找志愿者的信息。如果找到对应的志愿者,用户就可以对其所有信息进行修改。 删除特定编号的志愿者。 在屏幕上输出所有志愿者的信息。同一个人的信息应显示在同一行。最后显示总人数。 根据志愿服务时长进行排序,并输出排序后的结果。 以上功能对应的菜单,在执行时应当没有顺序和次数的限制。设计程序时需要对各种特殊情况(如数组为空)加以充分的考虑。编号、姓名和电话号码要求定义成字符串。为了节省数据录入的时间,可以通过初始化程序将部分数据写入顺序表。键盘录入数据的功能,演示实现的过程就可以。演示各项功能的时候,顺序表中至少要包含10组数据。

```cpp #include <iostream> #include <string> #include <vector> #include <algorithm> struct Volunteer { std::string id; std::string name; std::string phone; int hours; }; std::vector<Volunteer> roster; void addVolunteer(int n) { std::string id, name, phone; std::cout << "Please enter the information for " << n << " volunteers:" << std::endl; for (int i = 0; i < n; i++) { Volunteer vol; std::cout << "Volunteer #" << i+1 << " - ID: "; std::cin >> vol.id; std::cout << "Volunteer #" << i+1 << " - Name: "; std::cin >> vol.name; std::cout << "Volunteer #" << i+1 << " - Phone: "; std::cin >> vol.phone; vol.hours = 0; roster.push_back(vol); } } void insertVolunteer(int pos) { Volunteer vol; std::cout << "Enter the information for the volunteer to be inserted:" << std::endl; std::cout << "Volunteer ID: "; std::cin >> vol.id; std::cout << "Volunteer Name: "; std::cin >> vol.name; std::cout << "Volunteer Phone: "; std::cin >> vol.phone; vol.hours = 0; roster.insert(roster.begin() + pos - 1, vol); } void editVolunteer(std::string identifier) { for (int i = 0; i < roster.size(); i++) { if (roster[i].id == identifier || roster[i].name == identifier) { std::cout << "Enter new information for the volunteer:" << std::endl; std::cout << "New ID: "; std::cin >> roster[i].id; std::cout << "New Name: "; std::cin >> roster[i].name; std::cout << "New Phone: "; std::cin >> roster[i].phone; return; } } std::cout << "Volunteer not found." << std::endl; } void deleteVolunteer(std::string identifier) { for (auto it = roster.begin(); it != roster.end(); ) { if (it->id == identifier) { it = roster.erase(it); } else { ++it; } } } void printRoster() { std::cout << "Volunteer Roster:" << std::endl; for (const Volunteer& vol : roster) { std::cout << "ID: " << vol.id << " | Name: " << vol.name << " | Phone: " << vol.phone << " | Hours: " << vol.hours << std::endl; } std::cout << "Total volunteers: " << roster.size() << std::endl; } void sortRoster() { std::sort(roster.begin(), roster.end(), [](const Volunteer& a, const Volunteer& b) { return a.hours > b.hours; }); } int main() { addVolunteer(10); int choice; while (true) { std::cout << "\nMenu:" << std::endl; std::cout << "1. Add volunteers" << std::endl; std::cout << "2. Insert volunteer" << std::endl; std::cout << "3. Edit volunteer" << std::endl; std::cout << "4. Delete volunteer" << std::endl; std::cout << "5. Print roster" << std::endl; std::cout << "6. Sort roster by hours" << std::endl; std::cout << "7. Exit" << std::endl; std::cout << "Enter your choice: "; std::cin >> choice; switch (choice) { case 1: int n; std::cout << "Enter number of volunteers to add: "; std::cin >> n; addVolunteer(n); break; case 2: int pos; std::cout << "Enter position to insert volunteer: "; std::cin >> pos; insertVolunteer(pos); break; case 3: std::string identifier; std::cout << "Enter volunteer ID or Name to edit: "; std::cin >> identifier; editVolunteer(identifier); break; case 4: std::cout << "Enter volunteer ID to delete: "; std::cin >> identifier; deleteVolunteer(identifier); break; case 5: printRoster(); break; case 6: sortRoster(); std::cout << "Roster sorted by hours." << std::endl; printRoster(); break; case 7: return 0; default: std::cout << "Invalid choice. Please try again." << std::endl; break; } } return 0; } ``` [2024-12-16 11:11:39 | AI写代码神器 | 2934点数解答]

相关提问