这是我写的职工表当中的删除功能的代码:
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. 当查找某个不存在的职工号时,就会出现调试错误,强制停止调试?
求~帮帮我这菜鸟~