圆柱齿轮减速器齿轮参数设计一个数据结构,编写程序应达到下述要求:

试为下表的圆柱齿轮减速器齿轮参数设计一个数据结构,存放每个齿轮的各个数据项(图号、名称、模数、齿数、蜴旋角、宽度、材料),编写程序应达到下述要求:

1)可按名称或材料排序输出所有齿轮的参数

2)选用-种查找办法检索制定齿轮的信息,若找不到,出示有关信息。

3)在可能的情况下,允许向表中增加齿轮,也可以对某齿轮的数据进行修改。

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

//定义齿轮数据结构
struct Gear {
    string graphNum; //图号
    string name; //名称
    double module; //模数
    int teethNum; //齿数
    string helixAngle; //螺旋角
    double width; //宽度
    string material; //材料
};

//按名称排序
bool cmpByName(const Gear& a, const Gear& b) {
    return a.name < b.name;
}

//按材料排序
bool cmpByMaterial(const Gear& a, const Gear& b) {
    return a.material < b.material;
}

//查找齿轮
string searchGear(const string graphNum, const vector<Gear>& gears) {
    for (const auto& gear : gears) {
        if (gear.graphNum == graphNum) {
            return "名称:" + gear.name + ",模数:" + to_string(gear.module) + ",齿数:" + to_string(gear.teethNum) + ",螺旋角:" + gear.helixAngle + ",宽度:" + to_string(gear.width) + ",材料:" + gear.material;
        }
    }
    return "没有找到该齿轮的信息";
}

//添加齿轮
void addGear(vector<Gear>& gears) {
    Gear newGear;
    cout << "请输入齿轮的图号:" << endl;
    cin >> newGear.graphNum;
    cout << "请输入齿轮的名称:" << endl;
    cin >> newGear.name;
    cout << "请输入齿轮的模数:" << endl;
    cin >> newGear.module;
    cout << "请输入齿轮的齿数:" << endl;
    cin >> newGear.teethNum;
    cout << "请输入齿轮的螺旋角:" << endl;
    cin >> newGear.helixAngle;
    cout << "请输入齿轮的宽度:" << endl;
    cin >> newGear.width;
    cout << "请输入齿轮的材料:" << endl;
    cin >> newGear.material;
    gears.push_back(newGear);
}

//修改齿轮
void modifyGear(vector<Gear>& gears) {
    string graphNum;
    cout << "请输入要修改的齿轮的图号:" << endl;
    cin >> graphNum;
    bool found = false;
    for (auto& gear : gears) {
        if (gear.graphNum == graphNum) {
            found = true;
            cout << "请输入修改后的齿轮的模数:" << endl;
            cin >> gear.module;
            cout << "请输入修改后的齿轮的齿数:" << endl;
            cin >> gear.teethNum;
            cout << "请输入修改后的齿轮的螺旋角:" << endl;
            cin >> gear.helixAngle;
            cout << "请输入修改后的齿轮的宽度:" << endl;
            cin >> gear.width;
            cout << "请输入修改后的齿轮的材料:" << endl;
            cin >> gear.material;
        }
    }
    if (!found) {
        cout << "没有找到该齿轮的信息" << endl;
    }
}

int main() {
    vector<Gear> gears = {
         {"JSQ-01", "小锥齿轮", 2.5, 24, "0", 25, "35SiMn"},
        {"JSQ-02", "大锥齿轮", 2.5, 75, "0", 25, "45"},
        {"JSQ-03", "二级小圆柱齿轮", 3, 21, "0", 55, "45"},
        {"JSQ-04", "二级大圆柱齿轮", 3, 59, "0", 50, "45"},
        {"JSQ-05", "三级小圆柱齿轮", 4, 20, "12°11′20″", 70,"45"},
        {"JSQ-06", "三级大圆柱齿轮", 4, 78, "12°11′20″", 65, "45"}
    };

    //按名称排序输出齿轮参数
    cout << "按名称排序输出所有齿轮的参数:" << endl;
    sort(gears.begin(), gears.end(), cmpByName);
    for (const auto& gear : gears) {
        cout << "图号:" << gear.graphNum << ",名称:" << gear.name << ",模数:" << gear.module << ",齿数:" << gear.teethNum << ",螺旋角:" << gear.helixAngle << ",宽度:" << gear.width << ",材料:" << gear.material << endl;
    }
    cout << endl;

    //按材料排序输出齿轮参数
    cout << "按材料排序输出所有齿轮的参数:" << endl;
    sort(gears.begin(), gears.end(), cmpByMaterial);
    for (const auto& gear : gears) {
        cout << "图号:" << gear.graphNum << ",名称:" << gear.name << ",模数:" << gear.module << ",齿数:" << gear.teethNum << ",螺旋角:" << gear.helixAngle << ",宽度:" << gear.width << ",材料:" << gear.material << endl;
    }
    cout << endl;

    //查找齿轮
    cout << "查找齿轮:" << endl;
    string graphNum;
    cout << "请输入要查找的齿轮的图号:" << endl;
    cin >> graphNum;
    cout << searchGear(graphNum, gears) << endl;
    cout << endl;

    //添加齿轮
    addGear(gears);
    cout << "添加齿轮后的参数:" << endl;
    for (const auto& gear : gears) {
        cout << "图号:" << gear.graphNum << ",名称:" << gear.name << ",模数:" << gear.module << ",齿数:" << gear.teethNum << ",螺旋角:" << gear.helixAngle << ",宽度:" << gear.width << ",材料:" << gear.material << endl;
    }
    cout << endl;

    //修改齿轮
    modifyGear(gears);
    cout << "修改齿轮后的参数:" << endl;
    for (const auto& gear : gears) {
        cout << "图号:" << gear.graphNum << ",名称:" << gear.name << ",模数:" << gear.module << ",齿数:" << gear.teethNum << ",螺旋角:" << gear.helixAngle << ",宽度:" << gear.width << ",材料:" << gear.material << endl;
    }
    cout << endl;

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值