⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 app1.cpp

📁 一个人口教育普查数据收集的软件
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	{
		printf("当前教育状况编码表中数据为空!\n");		
	}
	else
	{
		printf("请输入需要检索的编码(1-5个字符):");
		scanf("%s",Fec_sEStatusCode);

		while( Fec_pNode!=NULL && strcmp(Fec_pNode->sEStatusCode,Fec_sEStatusCode)!=0 )
			Fec_pNode=Fec_pNode->next;
		
		if( Fec_pNode==NULL )
		{
			printf("没有对应的编码!\n");
		}
		else
		{
			printf("对应编码\t\t\t\t教育状况\n");
			printf("%s\t\t\t\t\t%s\n",Fec_pNode->sEStatusCode,Fec_pNode->sEStatus);
		}
	}

}

//添加教育状况编码
void AppendEStatusCode()
{
	EStatusNode *Aec_pNode;
	char Aec_sEStatus[20];
	char Aec_sEStatusCode[5];

	//判断当前编码表对象是否存在
	if( pMyEStatusList->head==NULL )
	{
		printf("当前性别编码表为空!\n");	
	}
	else
	{
		printf("请输入教育状况(1-20个字符或者1-10个汉字):");
		scanf("%s",Aec_sEStatus);
		printf("请输入编码:(1-4个字符):");
		scanf("%s",Aec_sEStatusCode);

		if( isEStatusCodeExisted(Aec_sEStatus)==1 )
		{

			//将新的教育状况编码添加到链表
			Aec_pNode=(EStatusNode*)malloc(sizeof(EStatusNode));
			if( Aec_pNode==NULL )
			{
				printf("Memory assign fail\n"); 
				ErrorReport("AppendEStatusCode","Memory assign fail");
			}
			else
			{
				strcpy(Aec_pNode->sEStatus,Aec_sEStatus);
				strcpy(Aec_pNode->sEStatusCode,Aec_sEStatusCode);

				Aec_pNode->next=pMyEStatusList->head->next;
				pMyEStatusList->head->next=Aec_pNode;
			}

			//将新的教育状况编码表重新写入Sex.Dat文件
			FILE *fp;
			if( (fp=fopen("EducationStatus.dat","a"))!=NULL ) //打开教育状况编码表文件
			{
				fwrite(Aec_pNode,sizeof(EStatusNode)-4,1,fp);
				fclose(fp);
			}
			else
			{
				printf("不能打开EducationStatus.dat!!\n");
				ErrorReport("AppendEStatusCode","不能打开EducationStatus.dat文件!!");
				exit(0);
			}
			
			printf("已成功添加此编码!!\n");	
		}
	}
}

//修改教育状况编码
void ModifyEStatusCode()
{
	EStatusNode *Mec_pNode=pMyEStatusList->head->next;
	char Mec_sEStatus[20];
	char Mec_sEStatusCode[5];

	printf("请输入需要修改编码的教育状况:");
	scanf("%s",Mec_sEStatus);
	printf("请输入新的编码:");
	scanf("%s",&Mec_sEStatusCode);

	//扫描用户信息表查找相符合的用户名:
	while( Mec_pNode!=NULL && ( strcmp(Mec_pNode->sEStatus,Mec_sEStatus)!=0 ) )
			Mec_pNode=Mec_pNode->next;

	//若Mec_pNode==NULL 则
	if( Mec_pNode==NULL )
	{
		printf("没有该编码的信息!!\n");	
	}
	else
	{
		strcpy(Mec_pNode->sEStatusCode,Mec_sEStatusCode);
		printf("该教育状况编码已经更改!!\n");
		
		//更新文件		
		Mec_pNode=pMyEStatusList->head->next;
		FILE *fp;
		if( (fp=fopen("EducationStatus.dat","w"))!=NULL ) //打开用户信息表文件
		{
			while( Mec_pNode!=NULL )
			{
				fwrite(Mec_pNode,sizeof(EStatusNode)-4,1,fp);
				Mec_pNode=Mec_pNode->next;
			}
			free(Mec_pNode);
			fclose(fp);
		}	

	}

}

//删除教育状况编码
void DelEStatusCode()
{
	EStatusNode *Dec_pNode=pMyEStatusList->head->next;
	EStatusNode *Dec_pPreNode=pMyEStatusList->head;
	char Dec_sEStatusCode[5];

	printf("请输入需要删除的教育状况编码(1-5个字符):");
	scanf("%s",Dec_sEStatusCode);

	//扫描用户信息表查找相符合的用户名:
	while( Dec_pNode!=NULL && ( strcmp(Dec_pNode->sEStatusCode,Dec_sEStatusCode)!=0 ) )
	{
		Dec_pPreNode=Dec_pNode;
		Dec_pNode=Dec_pNode->next;
	}

	//若Del_pNode==NULL 则
	if(Dec_pNode==NULL )
	{
		printf("没有该编码的信息!!\n");	
	}
	else
	{
		//从链表中删除该用户
		Dec_pPreNode->next=Dec_pNode->next;
		
		//重新写入用户信息文件
		Dec_pNode=pMyEStatusList->head->next;
		FILE *fp;
		if( (fp=fopen("EducationStatus.dat","w"))!=NULL ) //打开用户信息表文件
		{
			while( Dec_pNode!=NULL )
			{
				fwrite(Dec_pNode,sizeof(EStatusNode)-4,1,fp);
				Dec_pNode=Dec_pNode->next;
			}
			free(Dec_pNode);
			fclose(fp);
		}
		printf("该编码信息已经删除!!\n");
	
	}
}

//显示教育状况编码表
void DispEStatusCode()
{
	EStatusNode *Diec_pCurrentNode=pMyEStatusList->head->next;
	printf("对应编码\t\t\t\t教育状况\n");
	while( Diec_pCurrentNode!=NULL)
	{			
		printf("%s\t\t\t\t\t",Diec_pCurrentNode->sEStatusCode );
		printf("%s\n",Diec_pCurrentNode->sEStatus  );		
		Diec_pCurrentNode=Diec_pCurrentNode->next;
	}

}

//最后毕业学校编码管理
void LastSchoolCodeManagement()
{
		//iFlag为循环控制变量,iFunItem为操作识别变量
	int iFunItem,iFlag=1;	

	while(iFlag==1)
	{		
		printf("1)检索最后毕业学校编码表;\n");
		printf("2)添加最后毕业学校编码;\n");
		printf("3)修改最后毕业学校编码;\n");
		printf("4)删除最后毕业学校编码;\n");
		printf("5)显示最后毕业学校编码表;\n");
		printf("0)退出;\n");
		printf("请选择操作:");		
		
		scanf("%d",&iFunItem);

		switch(iFunItem)
		{
		case 1:
			{		
				FindLastSchoolCode();			
			}
			break;		
		case 2:
			{
				AppendLastSchoolCode();		
			}
			break;	
		case 3:
			{
				ModifyLastSchoolCode();			
			}
			break;	
		case 4:
			{
				DelLastSchoolCode();			
			}
			break;	
		case 5:
			{
				DispLastSchoolCode();		
			}
			break;	
		case 0:
			{			
				iFlag=0;
			}
			break;
		default:
			{
				printf("错误的操作选择!!!\n");
				ErrorReport("CodeControl","选择错误!!");			
			}
			break;
		}	
	}


}

//判断最后毕业学校编码是否重复
int isLastSchoolCodeExisted(char *sLastSchool)
{
	LastSchoolNode *pNode;
	if( pMyLastSchoolList->head->next!=NULL )
	{
		pNode=pMyLastSchoolList->head->next;

		while( pNode!=NULL && strcmp(pNode->sLSchool,sLastSchool)!=0 )
			pNode=pNode->next;

		if( pNode==NULL )
			return 1;
		else
		{
			printf("该编码信息已经存在!!\n");
			return 0;
		}	
	}
	else
		return 1;

}

//检索最后毕业学校编码表
void FindLastSchoolCode()
{
	LastSchoolNode *Flc_pNode=pMyLastSchoolList->head->next;
	char Flc_sLastSchoolCode[5];
	
	if( pMyLastSchoolList->head->next==NULL )
	{
		printf("当前最后毕业学校编码表中数据为空!\n");		
	}
	else
	{
		printf("请输入需要检索的编码(1-5个字符):");
		scanf("%s",Flc_sLastSchoolCode);

		while( Flc_pNode!=NULL && strcmp(Flc_pNode->sLSchoolCode,Flc_sLastSchoolCode)!=0 )
			Flc_pNode=Flc_pNode->next;
		
		if( Flc_pNode==NULL )
		{
			printf("没有对应的编码!\n");
		}
		else
		{
			printf("对应编码\t\t\t\t最后毕业学校\n");
			printf("%s\t\t\t\t\t%s\n",Flc_pNode->sLSchoolCode,Flc_pNode->sLSchool);
		}
	}


}

//添加最后毕业学校编码
void AppendLastSchoolCode()
{
	LastSchoolNode *Alc_pNode;
	char Alc_sLastSchool[20];
	char Alc_sLastSchoolCode[5];

	//判断当前编码表对象是否存在
	if( pMyLastSchoolList->head==NULL )
	{
		printf("当前性别编码表为空!\n");	
	}
	else
	{
		printf("请输入最后毕业学校(1-20个字符或者1-10个汉字):");
		scanf("%s",Alc_sLastSchool);
		printf("请输入编码:(1-4个字符)");
		scanf("%s",Alc_sLastSchoolCode);

		if( isLastSchoolCodeExisted(Alc_sLastSchool)==1 )
		{

			//将新的最后毕业学校编码添加到链表
			Alc_pNode=(LastSchoolNode*)malloc(sizeof(LastSchoolNode));
			if( Alc_pNode==NULL )
			{
				printf("Memory assign fail\n"); 
				ErrorReport("AppendLastSchoolCode","Memory assign fail");
			}
			else
			{
				strcpy(Alc_pNode->sLSchool,Alc_sLastSchool);
				strcpy(Alc_pNode->sLSchoolCode,Alc_sLastSchoolCode);

				Alc_pNode->next=pMyLastSchoolList->head->next;
				pMyLastSchoolList->head->next=Alc_pNode;
			}

			//将新的最后毕业学校编码表重新写入Sex.Dat文件
			FILE *fp;
			if( (fp=fopen("LastSchool.dat","a"))!=NULL ) //打开最后毕业学校表文件
			{
				fwrite(Alc_pNode,sizeof(LastSchoolNode)-4,1,fp);
				fclose(fp);
			}
			else
			{
				printf("不能打开LastSchool.dat!!\n");
				ErrorReport("AppendLastSchoolCode","不能打开LastSchool.dat文件!!");
				exit(0);
			}
			
			printf("已成功添加此编码!!\n");	
		}
	}

}

//修改最后毕业学校编码
void ModifyLastSchoolCode()
{
	LastSchoolNode *Mlc_pNode=pMyLastSchoolList->head->next;
	char Mlc_sLastSchool[20];
	char Mlc_sLastSchoolCode[5];

	printf("请输入需要修改编码的教育状况:");
	scanf("%s",Mlc_sLastSchool);
	printf("请输入新的编码:");
	scanf("%s",&Mlc_sLastSchoolCode);

	//扫描用户信息表查找相符合的用户名:
	while( Mlc_pNode!=NULL && ( strcmp(Mlc_pNode->sLSchool,Mlc_sLastSchool)!=0 ) )
			Mlc_pNode=Mlc_pNode->next;

	//若Mlc_pNode==NULL 则
	if( Mlc_pNode==NULL )
	{
		printf("没有该编码的信息!!\n");	
	}
	else
	{
		strcpy(Mlc_pNode->sLSchoolCode,Mlc_sLastSchoolCode);
		printf("该教育状况编码已经更改!!\n");
		
		//更新文件		
		Mlc_pNode=pMyLastSchoolList->head->next;
		FILE *fp;
		if( (fp=fopen("LastSchool.dat","w"))!=NULL ) //打开用户信息表文件
		{
			while( Mlc_pNode!=NULL )
			{
				fwrite(Mlc_pNode,sizeof(LastSchoolNode)-4,1,fp);
				Mlc_pNode=Mlc_pNode->next;
			}
			free(Mlc_pNode);
			fclose(fp);
		}	

	}

}

//删除最后毕业学校编码
void DelLastSchoolCode()
{
	LastSchoolNode *Delc_pNode=pMyLastSchoolList->head->next;
	LastSchoolNode *Delc_pPreNode=pMyLastSchoolList->head;
	char Delc_sLastSchoolCode[5];

	printf("请输入需要删除的最后毕业学校编码:");
	scanf("%s",Delc_sLastSchoolCode);

	//扫描最后毕业学校编码表查找相符合的用户名:
	while( Delc_pNode!=NULL && ( strcmp(Delc_pNode->sLSchoolCode,Delc_sLastSchoolCode)!=0 ) )
	{
		Delc_pPreNode=Delc_pNode;
		Delc_pNode=Delc_pNode->next;
	}

	//若Del_pNode==NULL 则
	if(Delc_pNode==NULL )
	{
		printf("没有该编码的信息!!\n");	
	}
	else
	{
		//从链表中删除该用户
		Delc_pPreNode->next=Delc_pNode->next;
		
		//重新写入用户信息文件
		Delc_pNode=pMyLastSchoolList->head->next;
		FILE *fp;
		if( (fp=fopen("LastSchool.dat","w"))!=NULL ) //打开用户信息表文件
		{
			while( Delc_pNode!=NULL )
			{
				fwrite(Delc_pNode,sizeof(LastSchoolNode)-4,1,fp);
				Delc_pNode=Delc_pNode->next;
			}
			free(Delc_pNode);
			fclose(fp);
		}
		printf("该编码信息已经删除!!\n");
	
	}
}

//显示最后毕业学校编码表
void DispLastSchoolCode()
{
	LastSchoolNode *Dilc_pCurrentNode=pMyLastSchoolList->head->next;
	printf("对应编码\t\t\t\t最后毕业学校\n");
	while( Dilc_pCurrentNode!=NULL)
	{			
		printf("%s\t\t\t\t\t",Dilc_pCurrentNode->sLSchoolCode );
		printf("%s\n",Dilc_pCurrentNode->sLSchool  );		
		Dilc_pCurrentNode=Dilc_pCurrentNode->next;
	}

}



//编码管理模块
void CodeManagement()
{
	//iFlag为循环控制变量,iFunItem为操作识别变量
	int iFunItem,iFlag=1;	

	while(iFlag==1)
	{
		printf("1)输入编码表;\n");		
		printf("0)退出;\n");
		printf("请选择操作:");		
		
		scanf("%d",&iFunItem);

		switch(iFunItem)
		{
		case 1:
			{
				CodeControl();
			
			}
			break;			
		case 0:
			{			
				iFlag=0;
			}
			break;
		default:
			{
				printf("错误的操作选择!!!\n");
				ErrorReport("CodeManagement","选择错误!!");			
			}
			break;
		}	
	}
}


//主控模块
void main()
{
	//iFlag为循环控制变量,iFunItem为操作识别变量
	int iFunItem,iFlag=1;
	char sPermission[20];
	//调用系统初始化
	Initialization();

	while(iFlag==1)
	{
		printf("1)用户登录;\n");		
		printf("0)系统退出;\n");
		printf("请选择操作:");		
		
		scanf("%d",&iFunItem);

		switch(iFunItem)
		{
		case 1:
			{
				//调用“用户登录”模块
				UserLogin();
				//调用JudgePermission()返回用户权限信息
				if( JudgePermission()!=NULL )
				{
					strcpy(sPermission,JudgePermission());
					//权限识别				
					if( strcmp(sPermission,"Administrator")==0 )
					{
						AdmModule();
					}
					else if( strcmp(sPermission,"Operator")==0 )
					{
						//操作员
						printf("Your permission is Operator!!!\n");					
					}
					else if( strcmp(sPermission,"Guest")==0 )
					{
						//游客
						printf("Your permission is Guest!!!\n");
					}
				}
				else
				{
					printf("sPermission is NULL\n");

				}
			}
			break;			
		case 0:
			{
				//调用系统退出模块
				ExitApp();
				iFlag=0;
			}
			break;
		default:
			{
				printf("错误的操作选择!!!\n");
				ErrorReport("main","选择错误!!");			
			}
			break;
		}	
	}
	exit(0);
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -