SuperQYH 2021-03-10 23:08 采纳率: 50%
浏览 49
已采纳

为啥程序没有按照想法执行?

#include <string.h>

struct info {
    char number[15];
    int num;
    char part_name;
    char date;
    char buyer_name[4];
    int  shumu;
    float price;
    char firm[10];
    struct info *next;
};

struct info* list;
void begin();
void menu();
struct info* sousuo(char number, char part_name);
void xsinformation(struct info* p);
void input();
void searchnumber();
void searchpart_name();
void modify();
void delete_info();
void show_all();

void begin() {
    list = (struct info*)malloc(sizeof(struct info));
    if (list == NULL) {
        printf("分配内存空间出错了\n");
        exit(-1);
    } 
    list->next = NULL;
}


void menu() {
    printf("\t\t汽车零部件采购管理程序\n");
    printf("1.录入采购信息\n");
    printf("2.零部件编码显示零部件的信息\n");
    printf("3.零部件名称显示零部件信息。\n");
    printf("4.给定零部件零部件编码、零部件名称,修改零部件信息。\n");
    printf("5.定零部件零部件编码、零部件名称,删除零部件信息。\n");
    printf("6.显示系统中全部的零部件信息\n");
    printf("0.退出系统\n");
}

struct info* sousuo(char number, char part_name) {
    int num;
    struct info* head = list->next;
    num=atoi(head->number);
    while (head) {
        if (head->num == number && head->part_name == part_name) {
            return head;
        }
        head = head->next;
    }

    return NULL;
}

void xsinformation(struct info* p) {
    if (p == NULL) {
        printf("节点并不存在\n");
        return;
    }
    else{
    
    printf("零部件编码: %s     \n", p->number);
    printf("零部件名称: %s\n", p->part_name);
    printf("采购日期: %s\n", p->date);
    printf("采购员: %s\n", p->buyer_name);
    printf("采购数量: %d\n", p->shumu);
    printf("采购单价: %f\n",p->price);
    printf("供货单位: %s\n",p->firm);
    }
}


void input() {
    char number[15];
    char part_name;
    printf("请输入零部件编码: \n");
    scanf("%s", &number);

    printf("请输入零部件名称: \n");
    scanf("%s", &part_name);

    struct info * p =sousuo(number, part_name);
    if (p) {
        printf("此编码有录入: \n");
        xsinformation(p);
        printf("无法继续录入\n");
        return;
    }

    p = (struct info*)malloc(sizeof(struct info));
    if (p == NULL) {
        printf("分配内存空间出错了\n");
        exit(-1);
    }
    p->number[15] = number[15];
    p->part_name = part_name;
    p->next = NULL;

    printf("请输入采购日期: ");
    scanf("%s",&p->date);
    printf("请输入采购员\n");
    scanf("%s",&p->buyer_name);
    printf("请输入采购数量\n");
    scanf("%s",&p->shumu);
    printf("请输入采购单价\n");
    scanf("%s",&p->price);    
    printf("请输入供货单位\n");
    scanf("%s",&p->firm);
    
        //return;
    struct info* head = list->next;
    list->next = p;
    p->next = head;

    printf("录入成功\n");

}
void searchnumber() {//编码查找 
    char number[15];
    printf("请输入编码: \n");
    scanf("%s", &number);

    struct info * p = list->next;
    while (p) {
        if (strcmp(p->number, number) == 0) {
            xsinformation(p);
            return;
        }
        p = p->next;
    }
    printf("没有找到编码为: %s 的记录\n", number);
}


void searchpart_name() {//名称查找 
    char part_name;
    printf("请输入零部件名称:\n");
    scanf("%s", &part_name);

    int found = 0;
    struct info* p = list->next;
    while (p) {
        if (p->part_name == part_name) {
            xsinformation(p);
            found++;
        }
        p = p->next;
    }

    if (found == 0) {
        printf("没有找到零部件编码为: %s 的记录\n", part_name);
        return;
    }
    printf("共找到 %d 条记录.\n", found);
}


void modify() {   //修改 
    char part_name;
    printf("请输入零部件名称: \n");
    scanf("%s", &part_name);

    int number;
    printf("请输入零部件编码: \n");
    scanf("%d", &number);

    struct info* p = sousuo(number, part_name);
    if (p == NULL) {
        printf("未找到此零部件的信息\n");
        return;
    }
    
    printf("请输入新的零部件编码:\n");
    scanf("%d", p->number);

    printf("请输入新的零部件的名称:\n");
    scanf("%s", p->part_name);

    printf("请输入新的采购日期:");
    scanf("%s",&p->date);
    printf("请输入采购员\n");
    scanf("%s",&p->buyer_name);
    printf("请输入采购数量\n");
    scanf("%s",&p->shumu);
    printf("请输入采购单价\n");
    scanf("%s",&p->price);    
    printf("请输入供货单位\n");
    scanf("%s",&p->firm);
    
    printf("修改成功\n");
}

void delete_info() {
    printf("\n定零部件零部件编码、零部件名称,删除零部件信息。\n");
    char number[15] ;
    printf("请输入零部件编码: \n");
    scanf("%s", &number);

    char part_name;
    printf("请输入零部件名称: \n");
    scanf("%s", &part_name);

    struct info* p = sousuo(number, part_name);
    if (p == NULL) {
        printf("未找到此零部件的信息\n");
        return;
    }
    struct info* head = list->next;
    struct info* pre = list;//前一个 
    while (head) {
        if (head == p) { 
            pre->next = head->next;
            free(head);
            printf("删除成功\n");
            return;
        }
        pre = head;
        head = head->next;
    }

}

void show_all() {
    printf("\n显示零部件所有的信息\n");
    struct info* head = list->next;
    int count = 0;
    while (head) {
        xsinformation(head);
        head = head->next;
        count++;
    }
    printf("共 %d 条记录\n", count);
}

int main() {
    begin(); 
    while (1) {
        system("cls");
        menu();

        int sel = 0;
        scanf("%d", &sel);
        if (sel == 0) {
            printf("谢谢使用,再见。\n");
            getchar();
            getchar();
            return 0;
        }

        if (sel == 1) {
            input();
            printf("\n按回车键继续\n");
            getchar();
            getchar();
            continue;
        }

        if (sel == 2) {
            searchnumber();
            printf("\n按回车键继续\n");
            getchar();
            getchar();
            continue;
        }

        if (sel == 3) {
            searchpart_name();
            printf("\n按回车键继续\n");
            getchar();
            getchar();
            continue;
        }

        if (sel == 4) {
            modify(); 
            printf("\n按回车键继续\n");
            getchar();
            getchar();
            continue;
        }

        if (sel == 5) {
            delete_info();
            printf("\n按回车键继续\n");
            getchar();
            getchar();
            continue;
        }
        if (sel == 6) {
            show_all();
            printf("\n按回车键继续\n");
            getchar();
            getchar();
            continue;
        }
        printf("无法识别的指令\n");
    }
}
 

 

 

就是以上代码。

  • 写回答

2条回答 默认 最新

  • cpp_learners 2021-03-11 08:41
    关注

    你这里写的有语法错误啊char类型的参数,你非要传一个char*类型进去。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程