各路大神帮忙看看,为什么我写的工资管理系统删除功能不能用。

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
void kaitou()
{
	cout << "******欢迎使用工资管理系统******" << endl;
	cout << "================================" << endl;
	cout << "     输入1,浏览工资记录" << endl;
	cout << "     输入2,查询工资记录" << endl;
	cout << "     输入3,添加工资记录" << endl;
	cout << "     输入4,删除工资记录" << endl;
	cout << "     输入5,修改工资记录" << endl;
	cout << "     输入6,保存工资记录" << endl;
	cout << "     输入7,退出系统" << endl;
	cout << "================================" << endl;
	cout << "您的选择是(输入1-7中任意一个数):" << endl;
}
struct zhigong
{
	char gonghao[10];//工号
	char xingming[10];//姓名
	float gwgz;//岗位工资
	float jxgz;//绩效工资
	float yfgz;//应发工资
	float grkk;//个人扣款
	float sfgz;//实发工资
	struct zhigong *next;
}k,z[100],f[100];
struct zhigong head={0};//定义一个有头的链表
void sr()//输入的内容
{
    cout << "请输入职工工号" << endl;
	cin >> k.gonghao;
	cout << "请输入职工姓名" << endl;
	cin >> k.xingming;
	cout << "请输入岗位工资" << endl;
    cin>>k.gwgz;
	cout << "请输入绩效工资" << endl;
	cin>>k.jxgz;
	cout << "请输入个人扣款" << endl;
	cin>>k.grkk;
	k.yfgz=k.gwgz+k.jxgz;
	k.sfgz=k.yfgz-k.grkk;
}
void xieru()//进行文件写入操作
{
	FILE*fp;
	fp = fopen("D:\\工资管理.txt", "ab+");
	fwrite(&k, sizeof(k),1,fp);
	fclose(fp);
}
void xieru1()//进行文件写入操作1
{
   FILE*fp;
   if ((fp=fopen("D:\\工资管理.txt","wb+"))==NULL)  /*创建文件并判断是否能打开*/
   {
     printf ("cannot open file\n");
     exit(0);
   }
   fwrite(&z,sizeof(struct zhigong),100,fp);
      fclose(fp);
}
void duqu()//进行文件的读取操作
{
	FILE*fq;
	fq=fopen("D:\\工资管理.txt","rb+");
	fread(&z[0],sizeof(struct zhigong),100,fq);
	fclose(fq);
}
void shuchu()//文件的输出操作
{
	
	int a;
	FILE*fq;
	fq=fopen("D:\\工资管理.txt","rb+");
	for(a=0;a<100;a++)
	{
		fread(&z,sizeof(z),1,fq);
		fclose(fq);
		if(z[a].jxgz==0)
		break;
		else
		printf("工号:%s 姓名:%s 岗位工资:%.2f 绩效工资:%.2f 个人扣款:%.2f 应发工资:%.2f 实发工资:%.2f\n",z[a].gonghao,z[a].xingming,z[a].gwgz,z[a].jxgz,z[a].grkk,z[a].yfgz,z[a].sfgz);
	}
}
void chaxun()
{
	int a;
	int i;
	cout<<"请输入查询方式"<<endl;
	cout<<"输入1,按照姓名查询"<<endl;
	cout<<"输入2,按照工号查询"<<endl;
	cin>>a;
	switch(a)
	{
		case 1:cout<<"请输入被查询者的姓名:";
		char m[10];
		cin>>m;
		for(i=0;i<100;i++)
		{
			if(strcmp(z[i].xingming,m)==0)
			printf("工号:%s 姓名:%s 岗位工资:%.2f 绩效工资:%.2f 个人扣款:%.2f 应发工资:%.2f 实发工资:%.2f\n",z[i].gonghao,z[i].xingming,z[i].gwgz,z[i].jxgz,z[i].grkk,z[i].yfgz,z[i].sfgz);
		}break;
		case 2:cout<<"请输入被查询者的工号:";
		char n[10];
		cin>>n;
		for(i=0;i<100;i++)
		{
			if(strcmp(z[i].gonghao,n)==0)
			printf("工号:%s 姓名:%s 岗位工资:%.2f 绩效工资:%.2f 个人扣款:%.2f 应发工资:%.2f 实发工资:%.2f\n",z[i].gonghao,z[i].xingming,z[i].gwgz,z[i].jxgz,z[i].grkk,z[i].yfgz,z[i].sfgz);
		}break;
	}
}
void shanchu()
{
	int a;
	int i;
	int j;
	char k[10];
	cout<<"====请根据提示执行操作====\n"<<endl;
	cout<<"输入1,按照姓名执行删除操作"<<endl;
	cout<<"输入2,按照工号执行删除操作"<<endl;
	cin>>a;
	switch(a)
	{
		case 1:cout<<"请输入将被删除者的姓名:";
		char m[10];
		cin>>m;
        for(i=0;i<100;i++)
		{
			if(strcmp(z[i].xingming,m)==0)
			j=i;
		}
            for(i;i<100;i++)
			{
				strcpy(z[i - 1].gonghao, z[i].gonghao);
				strcpy(z[i - 1].xingming, z[i].xingming);
				z[i - 1].gwgz = z[i].gwgz;
				z[i - 1].jxgz = z[i].jxgz;
				z[i - 1].grkk = z[i].grkk;
				z[i - 1].sfgz = z[i].sfgz;
				z[i - 1].yfgz = z[i].yfgz;
			}
			printf("\n=======删除成功!========\n");
	        break;
		
		case 2:cout<<"请输入将被删除者的工号:";
		char n[10];
		cin>>n;
		for(i=0;i<100;i++)
		{
			if(strcmp(z[i].xingming,m)==0)
			j=i;
		}
            for(i;i<100;i++)
			{
				strcpy(z[i - 1].gonghao, z[i].gonghao);
				strcpy(z[i - 1].xingming, z[i].xingming);
				z[i - 1].gwgz = z[i].gwgz;
				z[i - 1].jxgz = z[i].jxgz;
				z[i - 1].grkk = z[i].grkk;
				z[i - 1].sfgz = z[i].sfgz;
				z[i - 1].yfgz = z[i].yfgz;
			}
			printf("\n=======删除成功!========\n");
	        break;
	}
}
void xiugai()
{
	int j;
	int a;
	int i;
	cout<<"请输入查询方式"<<endl;
	cout<<"输入1,按照姓名查询"<<endl;
	cout<<"输入2,按照工号查询"<<endl;
	cin>>a;
	switch(a)
	{
		case 1:cout<<"请输入被查询者的姓名:";
		char m[10];
		cin>>m;
		for(j=0;j<100;j++)
		{
			if(strcmp(z[j].xingming,m)==0)
				i=j;
		}
		printf("工号:%s 姓名:%s 岗位工资:%.2f 绩效工资:%.2f 个人扣款:%.2f 应发工资:%.2f 实发工资:%.2f\n",z[i].gonghao,z[i].xingming,z[i].gwgz,z[i].jxgz,z[i].grkk,z[i].yfgz,z[i].sfgz);
				printf("请输入修改的姓名:\n");
				scanf("%s",&z[i].xingming);
				printf("请输入修改的岗位工资:\n");
				scanf("%f",&z[i].gwgz);
				printf("请输入修改的绩效工资:\n");
				scanf("%f",&z[i].jxgz);
				printf("请输入修改的个人扣款:\n");
				scanf("%f",&z[i].grkk);
				z[i].yfgz=z[i].gwgz+z[i].jxgz;
				z[i].sfgz=z[i].yfgz-z[i].grkk;
		break;
		case 2:cout<<"请输入被查询者的工号:";
		char n[10];
		cin>>n;
		for(j=0;j<100;j++)
		{
			if(strcmp(z[j].gonghao,n)==0)
			i=j;
		}
		printf("工号:%s 姓名:%s 岗位工资:%.2f 绩效工资:%.2f 个人扣款:%.2f 应发工资:%.2f 实发工资:%.2f\n",z[i].gonghao,z[i].xingming,z[i].gwgz,z[i].jxgz,z[i].grkk,z[i].yfgz,z[i].sfgz);
		        printf("请输入修改的姓名:\n");
				scanf("%s",&z[i].xingming);
				printf("请输入修改的岗位工资:\n");
				scanf("%f",&z[i].gwgz);
				printf("请输入修改的绩效工资:\n");
				scanf("%f",&z[i].jxgz);
				printf("请输入修改的个人扣款:\n");
				scanf("%f",&z[i].grkk);
				z[i].yfgz=z[i].gwgz+z[i].jxgz;
				z[i].sfgz=z[i].yfgz-z[i].grkk;
		break;
	}
}
int main()//主函数
{
	int i;
	int l;
	printf("请输入密码!");
	scanf("%d",&l);
	switch(l)
	{
	case 1234:
	system("cls");
	kaitou();
	cin >> i;
	switch(i)
	{
	    case 1:shuchu();break;
	    case 2:duqu();chaxun();break;
		case 3:sr();xieru();break;
		case 4:duqu();shanchu();xieru1();break;
		case 5:duqu();xiugai();xieru1();break;
		case 7:return 0;
		default:printf("输入有误,请重新输入!");
	}
	return 0;
	default :printf("密码输入错误!");
   }
}


Occultator
浏览 1398回答 1
1回答

宝慕林9955328

你的删除功能里面的for循环i不初始化真的行吗
打开App,查看更多内容
随时随地看视频慕课网APP