人那有不疯的 2023-10-23 11:05 采纳率: 100%
浏览 3
已结题

C语言职工信息管理系统

img


职工信息管理系统,其中删除职工信息代码有点问题,只能固定删除第一个人的信息,不知道怎么修改。

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-23 12:33
    关注

    【以下回答由 GPT 生成】

    要根据指定姓名删除职工信息,你可以按照以下步骤修改代码:

    1. 增加一个变量 index,用于存储要删除的记录的索引位置,默认值为 -1,表示找不到对应姓名的记录。
    2. for 循环中,添加一个条件判断,用于找到要删除的记录的索引位置。如果找到了,将 index 的值更新为当前循环变量 i 的值,并跳出循环。
    3. 在循环外部,添加一个条件判断,检查 index 的值是否仍为默认值 -1。如果是,则说明没有找到对应姓名的记录,提示用户删除失败并返回。
    4. 如果找到了对应姓名的记录,使用相同的循环移位方式将 arr 数组中 index 之后的记录往前移动一个位置,并将 length 值减一。
    5. 最后,输出删除成功的提示信息。

    下面是修改后的代码示例:

    //删除职工信息
    void deleteByName(struct employee arr[], int length) {
        int i, index = -1;
        char name[20];
    
        printf("请输入要删除记录的姓名:");
        scanf("%s", name);
    
        if (length == -1)
            return;
    
        for (i = 0; i < length; i++) {
            if (strcmp(arr[i].name, name) == 0) {
                index = i;
                break;
            }
        }
    
        if (index == -1) {
            printf("未找到对应姓名的记录,删除失败\n");
            return;
        }
    
        for (i = index; i < length - 1; i++)
            arr[i] = arr[i + 1];
    
        length--; //删除成功后,实际长度减1
        printf("删除成功\n");
    }
    

    请注意,这里假设 struct employee 结构体中有一个成员 name,用于存储职工姓名。如果你的结构体中不是这个字段,请将 strcmp(arr[i].name, name) == 0 中的 .name 替换为正确的字段名。

    希望以上解决方案对你有所帮助。如果还有其他问题,请随时提问。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月31日
  • 已采纳回答 10月23日
  • 创建了问题 10月23日

悬赏问题

  • ¥15 在matlab中Application Compiler后的软件无法打开
  • ¥15 想问一下STM32创建工程模板时遇到得问题
  • ¥15 Fiddler抓包443
  • ¥20 Qt Quick Android 项目报错及显示问题
  • ¥15 而且都没有 OpenCVConfig.cmake文件我是不是需要安装opencv,如何解决?
  • ¥15 oracleBIEE analytics
  • ¥15 H.264选择性加密例程
  • ¥50 windows的SFTP服务器如何能批量同步用户信息?
  • ¥15 centos7.9升级python3.0的问题
  • ¥15 安装CentOS6时卡住