那这样void xiugai() { int ch; system("cls"); system("color 6B"); printf("\n\n\n\t~~~~~~~修改订单~~~~~~~~~\n\n"); printf("\t输入1修改订单\t输入0返回上一级:"); scanf("%d",&ch); while(1){ switch(ch){ case 1:printf(p);break; case 0:printf("0");break; default:online();//退出 } printf("\t输入1修改订单\t输入0返回上一级:"); scanf("%d",&ch); } }这段代码始终再出现问题
时间: 2024-03-23 10:41:19 浏览: 192
CM-XiuGai.py
这段代码仍然存在问题。具体问题如下:
1. 函数`xiugai`没有参数,无法访问链表中的节点数据,无法进行修改操作。
2. 函数`xiugai`中,调用了一个未定义的变量`p`,应该将其替换为调用修改函数的代码。
3. 函数`xiugai`中,修改订单的逻辑应该写在`case 1`中,而不是输出`p`。
综上所述,修改后的代码如下:
```
void xiugai(node* h) {
int ch;
system("cls");
system("color 6B");
printf("\n\n\n\t~~~~~~~修改订单~~~~~~~~~\n\n");
printf("\t输入1修改订单\t输入0返回上一级:");
scanf("%d", &ch);
while (1) {
switch (ch) {
case 1:
modification(h);//调用修改函数
break;
case 0:
printf("0");
break;
default:
online();//退出
}
printf("\t输入1修改订单\t输入0返回上一级:");
scanf("%d", &ch);
}
}
```
在修改订单时,应该先通过查询订单功能找到要修改的订单,再调用修改函数对其进行修改。因此,需要在查询订单函数中记录要修改的节点的指针,将其作为参数传递给修改函数。例如:
```
node* search(node* h, char* name) {
node* p = h->next;
while (p != NULL) {
if (strcmp(p->data.name, name) == 0) {
printf("名称:%s\n", p->data.name);
printf("增加时间:%lf\n", p->data.time);
printf("类型:%d\n", p->data.type);
return p;
}
p = p->next;
}
printf("未找到该订单!\n");
return NULL;
}
void xiugai(node* h) {
char name[20];
node* p;
printf("请输入要修改的订单名称:");
scanf("%s", name);
p = search(h, name);
if (p != NULL) {
modification(p);//将要修改的节点作为参数传递给修改函数
}
}
```
这样,在修改订单时,就可以先通过查询功能找到要修改的订单,然后将其作为参数传递给修改函数进行修改。
阅读全文