一个职工登记表

                这是我写的职工表当中的删除功能的代码:

Delete_Worker.cpp :

#include "stdafx.h"
#include "Delete_Worker.h"
#include"stdio.h"
#include"stdlib.h"

#include"head.h"

#define LEN sizeof(struct worker)

/*
删除的界面
*/
void Delete_print()
{
    printf("     ----------------------Delete----------------------\n") ;
    printf("0. 删除所有职工信息;\n1 . 按职工号查找删除;\n2. 按姓名查找删除;\n3. 退出,返回主菜单;\n") ;
    getchar();
    scanf("%d" , &w) ;
}
/*
通过职工号查找删除
*/
void Num_delete()
{
        if(( Sway == 2)||(Sway == 1))
        {
            p = p0 = head ;
            while(( p != NULL) && (p->num != c.Cnum))
            {    p0 = p ;
                p = p->next ;
            }
            if( p == NULL) printf("不存在此工号:%d的职工\n",c.Cnum) ;
            if( p->num == c.Cnum )
            {
                if( p0 == head)     head = p->next ;
                else            p0->next  = p->next ;
                free(p) ;
                n-- ;
                printf("成功删除工号为%d的职工信息\n", c.Cnum) ;
            }
        }
}
/*
通过职工姓名查找
*/
void Name_delete()
{
    if(( Sway == 2)||(Sway == 1))
    {
        p = p0 = head ;
        while(( p != NULL) && (p->name != c.Cname))
        {    
            p0 = p ;
            p = p->next ;}
        if( p == NULL) printf("不存在此姓名:%s的职工;\n" , c.Cname);
        if( p->name == c.Cname )
        {
                if( p0 == head)     head = p->next ;
                else            p0->next  = p->next ;
                free(p) ;
                n-- ;
                printf("成功删除工号为%s的职工信息\n", c.Cname) ;
        }
    }
}

void Delete_Infor()
{
    Delete_print();
    switch(w)
    {
    case 0 :
        {
            char a ;
            printf("确定要删除所有职工的信息吗?(y 或 n)") ;
            getchar() ;
            scanf("%c" , &a) ;
            if( a == 'y')
            {
                head = p1 = p2 = NULL ;
                n = 0 ;
                printf("成功删除所有职工信息!\n") ;
            }
            break ;
        }

    case 1 :
        {
            printf("请输入要删除职工工号:\n");
            scanf("%d" , &c.Cnum) ;
            Num_delete() ;
            Delete_Infor();
            break ;
        }
    case 2 :
        {
            printf("请输入要删除职工姓名:\n");
            scanf("%s" , &c.Cname) ;
            Name_delete() ;
            Delete_Infor();
            break ;
        }
    case 3 : break ;
    default :  Delete_Infor() ;break ;
    }
}



//
// Construction/Destruction
//

Delete_Worker::Delete_Worker()
{

}

Delete_Worker::~Delete_Worker()
{

}

调试的时候就出问题了,1. 当通过姓名查找删除方式时,就是不能查找出当中存在的职工?

                                             2. 当查找某个不存在的职工号时,就会出现调试错误,强制停止调试?


求~帮帮我这菜鸟~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值