我是靠谱客的博主 从容抽屉,最近开发中收集的这篇文章主要介绍员工管理系统的真删除实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 先贴上代码

int use_remove()
{
char *szNo = {0};
char *szOrder = {0};
pNode *thead = NULL;
int count = 0;
int i = 0;
int szcount = 0;
int flag = 0;
int fflag = 0;
int num = 0;
STAFF_T *p = NULL;
//开辟空间
szNo = (char *)malloc(sizeof(char *));
memset(szNo,0,sizeof(char *));
thead = (pNode *)malloc(sizeof(pNode *));
szOrder = (char *)malloc(sizeof(char *));
memset(szOrder,0,sizeof(char *));
//开辟结构体空间
p = (STAFF_T *)malloc(sizeof(STAFF_T));
printf("Please input the staff No.:");
while(1)
{
flag = 0;
glb_putString(szNo,10,3,1);
szcount = sizeof(szNo)/sizeof(szNo[0]);
//判断是否为数字
for(i = 0; i<szcount; i++)
{
if(szNo[i] >= 'a' && szNo[i] <= 'z' || szNo[i] >= 'A' && szNo[i] <= 'Z')
{
flag = 1;
}
}
if(flag == 1)
{
printf("nErr:nInput number only please:n");
}
else
{
break;
}
}
//读取文件
head=FILE_read(staff_fp,sizeof(STAFF_T));
count = LIST_GetCount(head);
//判断是否为空
if(count == 0)
{
printf("nStaff No. doesn't exist ! n");
Sleep(1000);
return -1;
}
//变脸初始化
fflag = 0;
num = 0;
//数据遍历打印
for(i = 1; i <= count; i++)
{
p = (STAFF_T *)LIST_GetNode(i,head);
//因为它之前是void * 所以要进行强转
if(strcmp(p->NO,szNo)==0)
{
fflag = 1;
}
}
if(fflag == 0)
{
printf("Staff No. doesn't exist ! n");
Sleep(1000);
return 1;
}
if(count == 1)
{
LIST_Free(head);
staff_fp = fopen("data/staff.txt","wb+");
fflag = 0;
return 1;
}
else
{
for(i = 1; i < count; i++)
{
p = (STAFF_T *)LIST_GetNode(i,head);
//因为它之前是void * 所以要进行强转
if(strcmp(p->NO,szNo)== 0)
{
LIST_Del(i,head);
fflag = 1;
// printf("name : %s",p->Name);
}
}
}
if(i == count)
{
LIST_Del(i,head);
staff_fp = fopen("data/staff.txt","wb+");
//同步文件的数据
FILE_write(staff_fp,head,sizeof(STAFF_T));
}
printf("nSure to remove the staff?(y/n)n");
while(1)
{
flag = 0;
memset(szOrder,0,sizeof(char *));
glb_putString(szOrder,10,3,1);
szcount = sizeof(szOrder)/sizeof(szOrder[0]);
//判断是否为数字
for(i = 0; i<szcount; i++)
{
if(szOrder[i] == 'y' || szOrder[i] == 'Y')
{
flag = 1;
}
else if(szOrder[i] == 'n' || szOrder[i] == 'N')
{
flag = 2;
}
}
if(flag == 2)
{
return 1;
}
else if(flag == 1)
{
break;
}
printf("nERR: nInput 'y' or 'n' please:n");
}
staff_fp = fopen("data/staff.txt","wb+");
//同步文件的数据
FILE_write(staff_fp,head,sizeof(STAFF_T));
printf("nStaff removed.n");
if(fflag == 0)
{
printf("n Err:n Staff No. doesn't exist !n");
printf("回到上级菜单n");
}
getch();
}

其实我们上面代码实现真删除的思路,是先把内存里面的数据,进行删除,然后再把删除后(也就是修改后的数据),进行文件的存储。这样就可以避免对文件直接删除数据操作困难的问题。

员工管理系统代码连接:https://download.csdn.net/download/gaodes/10940115

最后

以上就是从容抽屉为你收集整理的员工管理系统的真删除实现的全部内容,希望文章能够帮你解决员工管理系统的真删除实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(27)

评论列表共有 0 条评论

立即
投稿
返回
顶部