

如图光标处代码该如何编写可以实现材料总数减去相对应的机器所需要的材料数量?
关注引自免费微信小程序:皆我百晓生
为了实现材料总数减去相对应的机器所需的材料数量,我们需要在BorrowMachin函数中找到对应机器并更新其所需材料的剩余数量。由于BorrowMachin函数中只涉及到struct Info和struct Suliang类型的处理,而未直接操作struct Machin和struct Linjian类型的数据,我们首先需要了解struct Info如何存储struct Machin的信息。
假设struct Info是链表节点,其中包含指向struct Machin的指针,我们可以按照以下步骤进行操作:
BorrowMachin函数中,通过Search函数找到对应的struct Info节点。struct Machin中的A11Num(即库存数量)。struct Linjian的sum(即材料数量)。但是,从给定的代码片段来看,我们并没有看到struct Info的具体定义以及它如何与struct Machin关联。为了简化说明,我们将假设struct Info中的pMachinInfo是一个指向struct Machin的指针,并且struct Machin中有一个数组linjians用于存储struct Linjian类型的材料信息。
下面是BorrowMachin函数中如何更新材料数量的部分代码示例:
void BorrowMachin(struct Info *head, struct Suliang *suliang)
{
struct Info *q = NULL;
struct Machin *p = NULL;
int i, x, flag, t;
cout << endl;
cout << "请输入你想出库的机器编号:";
cin >> x;
q = Search(head, x, &flag); // 查找机器
if (flag == 1)
{
p = q->pMachinInfo;
cout << endl;
cout << "机器信息:";
cout << endl;
cout << "名称:" << p->name;
cout << endl;
cout << "当前可出库的机器数:" << p->A11Num;
cout << endl;
cout << "所耗材料名称:";
// 打印所有材料名称
for (i = 0; i < p->num_of_materials; i++)
{
cout << p->linjians[i].cliaoname << ", ";
}
cout << endl;
cout << "出库?(y/n)";
t = _getch();
if (t == 'y' || t == 'Y')
{
// 确认出库
if (p->A11Num > 0)
{
p->A11Num--; // 减少机器库存
// 减少材料数量
for (i = 0; i < p->num_of_materials; i++)
{
p->linjians[i].sum--;
}
cout << endl;
cout << "成功出库。";
}
else
{
cout << endl;
cout << "对不起,已经没有库存。";
}
}
}
}
注意:上述代码中的num_of_materials是struct Machin中存储材料数量的属性,但这个属性在原始代码中并未出现。你需要确保struct Machin中包含一个表示材料种类数量的成员变量,这样才能正确地遍历并减少材料数量。
另外,_getch()函数用于读取键盘输入而不换行,这在C++中通常用于控制台程序中获取单个字符输入。如果你的环境不支持_getch(), 可以使用std::cin.get()作为替代。