栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言课设职工信息管理系统

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言课设职工信息管理系统

**

职工信息管理系统

**
问题描述

对职工信息进行管理,职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。

基本要求
(1)系统以菜单方式工作。
(2)职工信息录入功能(职工信息用文件保存)。
(3)输出职工信息、浏览职工信息功能。
(4)查询和排序功能:(至少一种查询方式),如按工资查询、按学历查询等。
(5)职工信息删除、修改功能(任选项)。

// 头文件 
#include 
#include 
#include 
#include  
#include 

// 常量
#define NUMBER_MAX_LENGTH 20				// 工号 
#define NAME_MAX_LENGTH 20					// 姓名 
#define SEX_MAX_LENGTH 20 					// 性别 
#define EDUCATION_MAX_LENGTH 40				// 年龄 
#define ADDRESS_MAX_LENGTH 40				// 住址
#define PHONE_MAX_LENGTH 20					// 电话 
#define STAFF_MAX 1010						// 结构体数组 

// 全局变量
int nowStaff = 0; 							// 计算当前总的职工人数 

// 结构体
struct staff
{
	char number[NUMBER_MAX_LENGTH];			// 工号
	char name[NAME_MAX_LENGTH];				// 姓名	
	char sex[SEX_MAX_LENGTH];				// 性别
	int age;								// 年龄
	char education[EDUCATION_MAX_LENGTH]; 	// 学历
	int salary;								// 工资 
	char address[ADDRESS_MAX_LENGTH];		// 住址 
	char phone[PHONE_MAX_LENGTH]; 			// 电话 
}sta[STAFF_MAX];

void startup();
int compare();								// 比较大小 
void swap();								// 交换 
void menu();								// 菜单 
void quitFunction();						// 按ESC退出 
void showStaffInformation(int i);			// 展示第i+1个员工的个人信息 
void enterStaffInformation();				// 1.录入职工信息 
void outputStaffInformation();				// 2.输出职工信息
void traverseStaffInformation();			// 3.浏览职工信息
void staffInformationQuery();				// 4.职工信息查询 
void staffInformationOrder();				// 5.职工信息排序 
void staffInformationDelete();				// 6.职工信息删除 
void staffInformationSet();					// 7.职工修改功能		 

// 主函数 
int main()
{
	startup();	
	while(1)
	{
		menu();
	}
	return 0;
} 

void startup()
{
	char strLine[1024];
	char item[60];
	FILE *fp = NULL;
	fp = fopen("staff.csv","r");
	printf("正在加载中,请稍等...");
	if(fp==NULL)
	{
		Sleep(1500);
		return;
	}
	
	int flag=1;
	int i=0,j=0,k=0;
	while (!feof(fp))
	{
		if(flag)
		{
			fgets(strLine,1024,fp); 	
			flag=0;
		}
		else
		{
			fgets(strLine,1024,fp); 
			
			while(strLine[i]!=',')
			{
				sta[nowStaff].number[j]=strLine[i];
				i++;
				j++;
			}
			sta[nowStaff].number[j]='';
			i++;
			j=0;
			
			while(strLine[i]!=',')
			{
				sta[nowStaff].name[j]=strLine[i];
				i++;
				j++;
			}
			sta[nowStaff].name[j]='';
			i++;
			j=0;
			
			while(strLine[i]!=',')
			{
				sta[nowStaff].sex[j]=strLine[i];
				i++;
				j++;
			}
			sta[nowStaff].sex[j]='';
			i++;
			j=0;
			
			while(strLine[i]!=',')
			{
				item[j]=strLine[i];
				i++;
				j++;
			}
			item[j]='';
			sta[nowStaff].age=atof(item);
			i++;
			j=0;
			
			while(strLine[i]!=',')
			{
				sta[nowStaff].education[j]=strLine[i];
				i++;
				j++;
			}
			sta[nowStaff].education[j]='';
			i++;
			j=0;
			
			while(strLine[i]!=',')
			{
				item[j]=strLine[i];
				i++;
				j++;
			}
			item[j]='';
			sta[nowStaff].salary=atof(item);
			i++;
			j=0;
			
			while(strLine[i]!=',')
			{
				sta[nowStaff].address[j]=strLine[i];
				i++;
				j++;
			}
			sta[nowStaff].address[j]='';
			i++;
			j=0;
			
			while( strLine[i] != 'n' )
			{
				sta[nowStaff].phone[j]=strLine[i];
				i++;
				j++;
			}
			sta[nowStaff].phone[j]='';
			j=0;
			
			i=0; 
			nowStaff++;
		} 
	}
	nowStaff--;
	Sleep(1500);
	fclose(fp);
}

// 比较大小 
int compare(long long a,long long b)
{
	if(a>b)
		return 1;
	else
	 	return 0;
}

// 交换
void swap(struct staff *a,struct staff *b)
{
	struct staff temp = *a;
	*a = *b;
	*b = temp;
}
 

// 菜单 
void menu()
{
	system("cls");
	printf("--------------------n");
	printf("|  1.职工信息录入  |n");
	printf("|  2.输出职工信息  |n");
	printf("|  3.浏览职工信息  |n");
	printf("|  4.职工信息查询  |n");
	printf("|  5.职工信息排序  |n");
	printf("|  6.职工信息删除  |n");
	printf("|  7.职工信息修改  |n");
	printf("|  8.退出职工系统  |n");
	printf("--------------------n"); 
	char input = '0';
	input = getch();
	switch(input)
	{
		case '1':
			enterStaffInformation();
			return;
		case '2':
			outputStaffInformation();
			return;
		case '3':
			traverseStaffInformation();
			return;
		case '4':
			staffInformationQuery();
			break;
		case '5':
			staffInformationOrder();
			return;
		case '6':
			staffInformationDelete();
			return;
		case '7':
			staffInformationSet();		
			return;
		case '8':
			exit(0);
			return;
		default:
			return;
	}
}

// 按ESC退出 
void quitFunction()
{
	printf("按ESC退出");
	while(1)
	{
		char input = '0';
		input = getch();
		if( input == 27 )
		{
			break;
		}
	}
	return;
}

void showStaffInformation(int i)
{
	printf("工号:%sn",sta[i].number);
	printf("姓名:%sn",sta[i].name);
	printf("性别:%sn",sta[i].sex);
	printf("年龄:%dn",sta[i].age);
	printf("学历:%sn",sta[i].education);
	printf("工资:%dn",sta[i].salary);
	printf("住址:%sn",sta[i].address);
	printf("电话:%sn",sta[i].phone);
	printf("n");
}

//1.职工信息录入
void enterStaffInformation()
{
	system("cls");
	// 工号 
	struct staff s;
	char input; 
	printf("输入工号:");
	scanf("%s",s.number);
	
	// 检验是否重复
	int i;
	for (i=0;i
		if (strcmp(s.number,sta[i].number)==0)
		{
			printf("该工号已存在"); 
			Sleep(2000);
			system("cls");
			printf("即将返回菜单"); 
			Sleep(1000);
			return;
		}	
	} 
	
	// 姓名 
	printf("输入姓名:");
	scanf("%s",s.name);
	
	// 性别
	printf("输入性别:");
	scanf("%s",s.sex);
	
	// 年龄
	printf("输入年龄:");
	scanf("%d",&s.age); 
	scanf("%c",&input);
//	if( scanf("%d",&s.age) != 1 )
//	{
//		printf("输入内容非法,已终止程序");
//		exit(0);
//	}
	
	// 学历
	printf("输入学历:");
	scanf("%s",s.education);
	
	// 工资
	printf("输入工资:");
	scanf("%d",&s.salary);
	scanf("%c",&input);
//	if( scanf("%d",&s.salary) != 1 )
//	{
//		printf("输入内容非法,已终止程序");
//		exit(0);
//	}
	
	// 住址
	printf("输入住址:");
	scanf("%s",s.address);
	 
	// 电话
	printf("输入电话:");
	scanf("%s",s.phone);
	
	sta[nowStaff] = s;
	nowStaff++;
	printf("录入成功!n");
	Sleep(2000);
	system("cls");
	printf("即将返回菜单"); 
	Sleep(1000);
	return;
}

//2.输出职工信息
void outputStaffInformation()
{
	FILE *fp = NULL;
	fp = fopen("staff.csv","w");
	int i;
	fprintf(fp,"%s,%s,%s,%s,%s,%s,%s,%sn","工号","姓名","性别","年龄","学历","工资","住址","电话");
	for(i=0;i
		struct staff s = sta[i];
		fprintf(fp,"%s,%s,%s,%d,%s,%d,%s,%sn",s.number,s.name,s.sex,s.age,s.education,s.salary,s.address,s.phone);
	}	
	system("cls");
	printf("正在保存信息中n");
	Sleep(1500);
	printf("保存成功!");
	Sleep(1500);
	system("cls");	
	fclose(fp);
}

//3.浏览职工信息
void traverseStaffInformation()
{
	system("cls");
	int i;
	for(i=0;i
		showStaffInformation(i); 
	}
	quitFunction();				
	system("cls");
	return;
}

// 4.职工信息查询 
void staffInformationQuery()
{
	system("cls");
	while(1)
	{
		printf("------------------------n");
		printf("| 请输入你要查询的内容 |n");
		printf("|        1.工号        |n");
		printf("|        2.姓名        |n");
		printf("|        3.性别        |n");
		printf("|        4.年龄        |n");
		printf("|        5.学历        |n");
		printf("|        6.工资        |n");
		printf("|        7.住址        |n");
		printf("|        8.电话        |n"); 
		printf("|        9.退出        |n");
		printf("------------------------n");
		char input = '0';
		input = getch();
		if (input == '1')
		{
			system("cls");
			char s[NUMBER_MAX_LENGTH];
			printf("请输入你要查询的工号:");
			scanf("%s",s);
			int flag=1,i;
			for (i=0;i
				if(strcmp(s,sta[i].number)==0)
				{
					if(flag)
						printf("找到匹配的工号n");
					flag=0;
					showStaffInformation(i);
				}
			}
			if(flag)
			{
				printf("未找到匹配的工号n");
			}
		}
		else if (input == '2')
		{
			system("cls");
			char s[NAME_MAX_LENGTH];
			printf("请输入你要查询的姓名:");
			scanf("%s",s);
			int flag=1,i;
			for (i=0;i
				if(strcmp(s,sta[i].name)==0)
				{
					if(flag)
						printf("找到匹配的姓名n");
					flag=0;
					showStaffInformation(i);
				}
			}
			if(flag)
			{
				printf("未找到匹配的姓名n");
			}
		}
		else if (input == '3')
		{
			system("cls");
			char s[SEX_MAX_LENGTH];
			printf("请输入你要查询的性别:");
			scanf("%s",s);
			int flag=1,i;
			for (i=0;i
				if(strcmp(s,sta[i].sex)==0)
				{
					if(flag)
						printf("找到匹配的性别n");
					flag=0;
					showStaffInformation(i);
				}
			}
			if(flag)
			{
				printf("未找到匹配的性别n");
			}
		}
		else if (input == '4')
		{
			system("cls");
			int a,b;
			printf("请输入你要查询年龄的范围[a,b]:");
			scanf("%d %d",&a,&b);
			int flag=1,i;
			for (i=0;i
				if(sta[i].age>=a&&sta[i].age<=b)
				{
					if(flag)
						printf("找到匹配的年龄n");
					flag=0;
					showStaffInformation(i);
				}
			}
			if(flag)
			{
				printf("未找到匹配的年龄n");
			}
		}
		else if (input == '5')
		{
			system("cls");
			char s[EDUCATION_MAX_LENGTH];
			printf("请输入你要查询的学历:");
			scanf("%s",s);
			int flag=1,i;
			for (i=0;i
				if(strcmp(s,sta[i].education)==0)
				{
					if(flag)
						printf("找到匹配的学历n");
					flag=0;
					showStaffInformation(i);
				}
			}
			if(flag)
			{
				printf("未找到匹配的学历n");
			}
		}
		else if (input == '6')
		{
			system("cls");
			int a,b;
			printf("请输入你要查询工资的范围[a,b]:");
			scanf("%d %d",&a,&b);
			int flag=1,i;
			for (i=0;i
				if(sta[i].salary>=a&&sta[i].salary<=b)
				{
					if(flag)
						printf("找到匹配的工资n");
					flag=0;
					showStaffInformation(i);
				}
			}
			if(flag)
			{
				printf("未找到匹配的工资n");
			}
		}
		else if (input == '7')
		{
			system("cls");
			char s[ADDRESS_MAX_LENGTH];
			printf("请输入你要查询的住址:");
			scanf("%s",s);
			int flag=1,i;
			for (i=0;i
				if(strcmp(s,sta[i].address)==0)
				{
					if(flag)
						printf("找到匹配的住址n");
					flag=0;
					showStaffInformation(i);
				}
			}
			if(flag)
			{
				printf("未找到匹配的住址n");
			}
		}
		else if (input == '8')
		{
			system("cls");
			char s[PHONE_MAX_LENGTH];
			printf("请输入你要查询的电话:");
			scanf("%s",s);
			int flag=1,i;
			for (i=0;i
				if(strcmp(s,sta[i].phone))
				{
					if(flag)
						printf("找到匹配的电话n");
					flag=0;
					showStaffInformation(i);
				}
			}
			if(flag)
			{
				printf("未找到匹配的电话n");
			}
		}
		else if (input == '9')
		{
			system("cls");
			printf("即将返回菜单"); 
			Sleep(1000);
			return;
		}
		printf("n");
		quitFunction();
		system("cls");
	}
	

}

//5.职工信息排序
void staffInformationOrder()
{
	system("cls");
	int i,j;
	printf("请选择你排序的关键字(1.年龄,2.工资):");
	char input1;
	input1 = getch();
	printf("n请选择你排序的顺序(1.升序,2.降序):");
	char input2;
	input2 = getch();
	if(input1 == '1' && input2 == '1')
	{
		for(i=nowStaff-1;i>0;i--)
		{
			for(j=0;j
				if(compare(sta[j].age,sta[j+1].age))
				{
					swap(&sta[j],&sta[j+1]);
				}
			}
		}
		printf("n排序成功!nn");
		quitFunction();
	}
	else if(input1 == '1' && input2 == '2')
	{	
		for(i=nowStaff-1;i>0;i--)
		{
			for(j=0;j
				if(compare(sta[j+1].age,sta[j].age))
				{
					swap(&sta[j],&sta[j+1]);
				}
			}
		}
		printf("n排序成功!nn");
		quitFunction();
	}
	else if(input1 == '2' && input2 == '1')
	{
		for(i=nowStaff-1;i>0;i--)
		{
			for(j=0;j
				if(compare(sta[j].salary,sta[j+1].salary))
				{
					swap(&sta[j],&sta[j+1]);
				}
			}
		}
		printf("n排序成功!nn");
		quitFunction();
	}
	else if(input1 == '2' && input2 == '2')
	{	
		for(i=nowStaff-1;i>0;i--)
		{
			for(j=0;j
				if(compare(sta[j+1].salary,sta[j].salary))
				{
					swap(&sta[j],&sta[j+1]);
				}
			}
		}
		printf("n排序成功!nn");
		quitFunction();
	}
	else
	{
		printf("n按键方式不符合要求nn");
		quitFunction();
	}
	system("cls");
	printf("即将返回菜单");
	Sleep(1000);
	system("cls");
	return;
}

//6.职工信息删除
void staffInformationDelete()
{
	system("cls"); 
	printf("请输入职工的工号:");
	char s[NUMBER_MAX_LENGTH];
	scanf("%s",s);
	int flag = 1;
	int i,j;
	for(i=0;i
		if(strcmp(sta[i].number,s)==0)
		{
			flag = 0;
			
			for(j=i;j
				sta[j] = sta[j+1];
			}
			nowStaff--;
			printf("删除成功");
			break;
		}
	}
	if(flag)
		printf("不存在该工号");
	Sleep(1000);
	system("cls");
	printf("即将返回菜单");
	Sleep(1000);
	return;
}

//7.职工信息修改
void staffInformationSet()
{
	int k;
	system("cls"); 
	printf("请输入职工的工号:");
	char s[NUMBER_MAX_LENGTH];
	scanf("%s",s);
	int flag = 1;
	int i;
	for(i=0;i
		if(strcmp(sta[i].number,s)==0)
		{
			flag=0;
			k=i;
			printf("找到职工信息");
			Sleep(1000);
			break;
		}
	}
	if(flag)
	{
		printf("不存在该职工号");
		Sleep(1000);
		system("cls");
		return;
	}
	system("cls");
	while(1)
	{
		printf("------------------------n");
		printf("| 请输入你要修改的内容 |n");
		printf("|        1.工号        |n");
		printf("|        2.姓名        |n");
		printf("|        3.性别        |n");
		printf("|        4.年龄        |n");
		printf("|        5.学历        |n");
		printf("|        6.工资        |n");
		printf("|        7.住址        |n");
		printf("|        8.电话        |n"); 
		printf("|        9.退出        |n");
		printf("------------------------n");
		char input;
		input = getch();
		system("cls");
		switch(input)
		{
			case '1':
				printf("请输入修改后的职工工号:");
				char s1[60];
				scanf("%s",s1);
				// 检验是否重复
				flag = 1;
				for (i=0;i
					if ( strcmp(s1,sta[i].number)==0 )
					{
						printf("该工号已存在,修改失败...nn"); 
						flag = 0;
					}	
				} 
				if(flag)
				{
					strcpy(sta[k].number,s1);
					printf("修改完成nn");
				}		
				quitFunction();
				break;
			case '2':
				printf("请输入修改后的职工姓名:");
				scanf("%s",sta[k].name);
				printf("修改完成nn");
				quitFunction();
				break;
			case '3':
				printf("请输入修改后的职工性别:");
				scanf("%s",sta[k].sex);
				printf("修改完成nn");
				quitFunction();
				break;
			case '4':
				printf("请输入修改后的职工年龄:");
				scanf("%d",&sta[k].age);
				printf("修改完成nn");
				quitFunction();
				break;
			case '5':
				printf("请输入修改后的职工学历:");
				scanf("%s",sta[k].education);
				printf("修改完成nn");
				quitFunction();
				break;
			case '6':
				printf("请输入修改后的职工工资:");
				scanf("%d",&sta[k].salary);
				printf("修改完成nn");
				quitFunction();
				break;
			case '7':
				printf("请输入修改后的职工住址:");
				scanf("%s",sta[k].address);
				printf("修改完成nn");
				quitFunction();
				break;
			case '8':
				printf("请输入修改后的职工姓名:");
				scanf("%s",sta[k].phone);
				printf("修改完成nn");
				quitFunction();
				break;
			case '9':
				return;
			default:
				break; 
		}
		system("cls");
	}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/953949.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号