2
回答
C语言员工管理系统的问题(大一大专课程设计)
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

已知问题:

 1、运行后添加四行以上不能修改最后一行,若修改最后一行,最后一行不会变,最后一行的倒数第二行会变。

2、删除。不能删除第一行,若删除第一行,第二行就跟着变。

我是个学的不精的学生,我知道这个网站里大神比较多,请大神看我哪错了,并帮我改正一下(最好是注释掉错误的代码,改成正确的,方便我看哪错了)。

程序完整代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define WORK_BASE_SIZE 32 //员工基本信息
#define WORK_NUM 1000 //员工数量

struct WORK {  //以下是结构体
	char szID[WORK_BASE_SIZE];
	char szName[WORK_BASE_SIZE];
	char szSex[WORK_BASE_SIZE];
	char iAge[WORK_BASE_SIZE];
	char szPhone[WORK_BASE_SIZE];
	char szAddr[WORK_BASE_SIZE];
};

struct WORK g_workNode[WORK_NUM];
int g_iNum =0;

void Add() //添加模块
{

	printf("员工编号:");
	scanf("%s",g_workNode[g_iNum+1].szID);
	printf("姓名:");
	scanf("%s",g_workNode[g_iNum+1].szName);
	printf("性别:");
	scanf("%s",g_workNode[g_iNum+1].szSex);
	printf("年龄:");
	scanf("%s",g_workNode[g_iNum+1].iAge);
	printf("电话:");
	scanf("%s",g_workNode[g_iNum+1].szPhone);
	printf("地址:");
	scanf("%s",g_workNode[g_iNum+1].szAddr);
	g_iNum++;
	printf("添加成功\n");
	system("pause");
}

void Del() //删除模块
{
	int i=0;
	int iSel = 0;
	printf("ID  姓名  性别  年龄  电话  地址\n");
	for(i = 0; i < g_iNum; ++i)
	{
		printf("%s    ", g_workNode[i+1].szID);
		printf("%s    ", g_workNode[i+1].szName);
		printf("%s    ", g_workNode[i+1].szSex);
		printf("%s    ", g_workNode[i+1].iAge);
		printf("%s    ", g_workNode[i+1].szPhone);
		printf("%s    \n", g_workNode[i+1].szAddr);
	}//end for
	printf("请输入要删除的人员序号:");
	scanf("%d",&iSel);
	{
		strcpy(g_workNode[iSel].szID,g_workNode[iSel+1].szID);
		strcpy(g_workNode[iSel].szName,g_workNode[iSel+1].szName);
		strcpy(g_workNode[iSel].szSex,g_workNode[iSel+1].szSex);
		strcpy(g_workNode[iSel].iAge,g_workNode[iSel+1].iAge);
		strcpy(g_workNode[iSel].szPhone,g_workNode[iSel+1].szPhone);
		strcpy(g_workNode[iSel].szAddr,g_workNode[iSel+1].szAddr);
	}// end scanf
	g_iNum--;
	printf("删除成功\n");
	system("pause");
}

void Mod() //修改模块
{
	int i = 0;
	int x;
	printf("ID  姓名  性别  年龄  电话  地址\n");
	for(i = 0; i < g_iNum; ++i)
	{
		printf("%s    ", g_workNode[i+1].szID);
		printf("%s    ", g_workNode[i+1].szName);
		printf("%s    ", g_workNode[i+1].szSex);
		printf("%s    ", g_workNode[i+1].iAge);
		printf("%s    ", g_workNode[i+1].szPhone);
		printf("%s    \n", g_workNode[i+1].szAddr);
	}//end for
	printf("请输入要修改的人员ID:");
	scanf("%d",&x);
	printf("请输入姓名:");
	scanf("%s",&g_workNode[g_iNum-1].szName);
	printf("请输入性别:");
	scanf("%s",&g_workNode[g_iNum-1].szSex);
	printf("请输入年龄:");
	scanf("%s",&g_workNode[g_iNum-1].iAge);
	printf("请输入电话:");
	scanf("%s",&g_workNode[g_iNum-1].szPhone);
	printf("请输入地址:");
	scanf("%s",&g_workNode[g_iNum-1].szAddr);
	printf("修改成功\n");
	system("pause");
}

void Look() //查看模块
{
	int i = 0;
	printf("ID  姓名  性别  年龄  电话  地址\n");
	for(i = 0; i < g_iNum; ++i)
	{
		printf("%s    ", g_workNode[i+1].szID);
		printf("%s    ", g_workNode[i+1].szName);
		printf("%s    ", g_workNode[i+1].szSex);
		printf("%s    ", g_workNode[i+1].iAge);
		printf("%s    ", g_workNode[i+1].szPhone);
		printf("%s    \n", g_workNode[i+1].szAddr);
	}//end for
	//printf("查看操作\n");
	system("pause");
}

void Save() //保存模块
{
	int i;
	FILE *fpw=NULL;
	fpw=fopen("work.dat","w");
	fprintf(fpw,"%d\n",g_iNum);
	for(i=1;i<=g_iNum;i++)
	{
		fprintf(fpw,"%s\n",g_workNode[i].szID);
		fprintf(fpw,"%s\n",g_workNode[i].szName);
		fprintf(fpw,"%s\n",g_workNode[i].szSex);
		fprintf(fpw,"%s\n",g_workNode[i].iAge);
		fprintf(fpw,"%s\n",g_workNode[i].szPhone);
		fprintf(fpw,"%s\n",g_workNode[i].szAddr);
	}//end for
	fclose(fpw);
	printf("保存成功\n");
	system("pause");
}

void Read() //读取模块
{
	int i;
	FILE *fpr=NULL;
	fpr=fopen("work.dat","r");
	fscanf(fpr,"%d",&g_iNum);
	for(i=1;i<=g_iNum;i++)
	{
		fscanf(fpr,"%s",g_workNode[i].szID);
		fscanf(fpr,"%s",g_workNode[i].szName);
		fscanf(fpr,"%s",g_workNode[i].szSex);
		fscanf(fpr,"%s",g_workNode[i].iAge);
		fscanf(fpr,"%s",g_workNode[i].szPhone);
		fscanf(fpr,"%s",g_workNode[i].szAddr);	
	}//end for
	fclose(fpr);
	printf("读取员工基本信息成功\n");
	system("pause");
}

int Menu() //系统菜单
{
	{ 	
		int iSelOption = 0;
		system("cls");
		printf("------------------------------------------------\n"); 
		printf("              欢迎使用人员管理系统              \n");
		printf("              1.添加人员基本信息                \n");
		printf("              2.删除人员基本信息                \n");
		printf("              3.修改人员基本信息                \n");
		printf("              4.查看人员基本信息                \n");
		printf("              5.保存人员基本信息                \n");
		printf("              6.读取人员基本信息                \n");
		printf("              0.退出系统                        \n");
		printf("------------------------------------------------\n");
		printf("请选择:");
		scanf("%d", &iSelOption);
		return iSelOption;
	} 
	system("pause");
	getch();
	exit(0);
	} 

int main() //主函数
{
	int iSelOption = 1;	
	while(iSelOption) 
	{
		iSelOption = Menu(); 
		switch(iSelOption) 
		{
		case 1:
		Add(); 
		break;
		case 2:
		Del(); 
		break;
		case 3:
		Mod(); 
		break;
		case 4:
		Look(); 
		break;
		case 5:
		Save();
		break;	
		case 6:
		Read();
		break;	
		case 0:
		break;
		default:
		//system("color c"); 
		printf("输入错误,");
		system("pause");
		break;		
		}
	}
	
	return 0;
}



举报
zhangyujia
发帖于1年前 2回/239阅
顶部