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

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

```cpp #include <iostream> #include <string> using namespace std; // 定义志愿者结构体 struct Volunteer { string id; string name; string phone; int hours; }; // 定义志愿者名册管理类 class Registry { private: Volunteer volunteers[100]; int numVolunteers; public: Registry() { numVolunteers = 0; } void addVolunteer() { int n; cout << "请输入要添加的志愿者人数:"; cin >> n; for (int i = 0; i < n; i++) { cout << "请输入第" << i + 1 << "个志愿者的编号:"; cin >> volunteers[numVolunteers].id; cout << "请输入第" << i + 1 << "个志愿者的姓名:"; cin >> volunteers[numVolunteers].name; cout << "请输入第" << i + 1 << "个志愿者的电话号码:"; cin >> volunteers[numVolunteers].phone; volunteers[numVolunteers].hours = 0; numVolunteers++; } } void insertVolunteer(int pos) { if (pos < 0 || pos > numVolunteers) { cout << "插入位置无效!" << endl; return; } cout << "请输入要插入的志愿者的编号:"; cin >> volunteers[numVolunteers].id; cout << "请输入要插入的志愿者的姓名:"; cin >> volunteers[numVolunteers].name; cout << "请输入要插入的志愿者的电话号码:"; cin >> volunteers[numVolunteers].phone; volunteers[numVolunteers].hours = 0; numVolunteers++; } void findVolunteer(string key) { for (int i = 0; i < numVolunteers; i++) { if (volunteers[i].id == key || volunteers[i].name == key) { cout << "编号:" << volunteers[i].id << " 姓名:" << volunteers[i].name << " 电话号码:" << volunteers[i].phone << " 志愿时长:" << volunteers[i].hours << endl; return; } } cout << "未找到匹配志愿者!" << endl; } void deleteVolunteer(string key) { for (int i = 0; i < numVolunteers; i++) { if (volunteers[i].id == key) { for (int j = i; j < numVolunteers - 1; j++) { volunteers[j] = volunteers[j + 1]; } numVolunteers--; cout << "删除成功!" << endl; return; } } cout << "未找到匹配志愿者!" << endl; } void printVolunteers() { for (int i = 0; i < numVolunteers; i++) { cout << "编号:" << volunteers[i].id << " 姓名:" << volunteers[i].name << " 电话号码:" << volunteers[i].phone << " 志愿时长:" << volunteers[i].hours << endl; } cout << "总人数:" << numVolunteers << endl; } void sortVolunteers() { for (int i = 0; i < numVolunteers - 1; i++) { for (int j = 0; j < numVolunteers - i - 1; j++) { if (volunteers[j].hours > volunteers[j + 1].hours) { Volunteer temp = volunteers[j]; volunteers[j] = volunteers[j + 1]; volunteers[j + 1] = temp; } } } } }; int main() { Registry registry; // 初始化部分数据 Volunteer v1 = {"001", "Alice", "*0", 10}; Volunteer v2 = {"002", "Bob", "9876543210", 5}; Volunteer v3 = {"003", "Cathy", "1357924680", 8}; registry.addVolunteer(v1); registry.addVolunteer(v2); registry.addVolunteer(v3); int choice; string key; int pos; do { cout << "==========志愿者名册管理系统==========" << endl; cout << "1. 添加志愿者信息" << endl; cout << "2. 在指定位置插入志愿者信息" << endl; cout << "3. 修改志愿者信息" << endl; cout << "4. 根据编号或姓名查找志愿者信息" << endl; cout << "5. 删除特定编号的志愿者" << endl; cout << "6. 输出所有志愿者信息" << endl; cout << "7. 根据志愿服务时长排序" << endl; cout << "8. 退出" << endl; cout << "请选择功能:"; cin >> choice; switch (choice) { case 1: registry.addVolunteer(); break; case 2: cout << "请输入插入位置:"; cin >> pos; registry.insertVolunteer(pos); break; case 3: cout << "请输入要查找的志愿者的编号或姓名:"; cin >> key; registry.findVolunteer(key); break; case 4: cout << "请输入要删除的志愿者的编号:"; cin >> key; registry.deleteVolunteer(key); break; case 5: registry.printVolunteers(); break; case 6: registry.sortVolunteers(); cout << "排序成功!" << endl; break; case 7: break; case 8: cout << "感谢使用!" << endl; break; default: cout << "请输入有效的菜单选项!" << endl; } } while (choice != 8); return 0; } ``` [2024-12-16 11:12:08 | AI写代码神器 | 3423点数解答]

相关提问