C language employee information management system

C Language—Course Design Staff Information Management System

Project requirements

Work through the menu to manage the personal information of each employee.
(1) There are 10 employees in total, and each employee is a record, including information such as: employee number, name, gender, date of birth, education, position, department, salary, address, phone number and employee information can be entered , delete, modify, browse and other operations.
(2) You can query by name.
(3) You can sort and browse by salary.

Instructions for calling between functions:

insert image description here

First, set the structure

code show as below:

struct worker
{
    
    
	int number;
	char name[15];
	char sex[15];
	int birth;
	char edu[15];
	char post[15];
	char department[15];
	int salary;
	char address[15];
}

The character type name represents the employee's name, the character type sex represents the employee's gender, the character type edu represents the employee's education background, the character type post represents the employee's position, the character type department represents the employee's department, the character type address represents the employee's address, the integer number represents the employee number, and the integer The type birth represents the employee's age, the integer salary represents the employee's salary, and the structure worker stores different employee information.

Second, define the main function

code show as below:

int main()
{
    
    
	char  c;
	do
	{
    
    
		printf("\n\n\n");
		printf("                     §§职工信息管理系统§§         \n");
		printf("\n");   printf("*****************************************************************\n");
		printf("*                               §                              *\n");
		printf("*         1.录入职工信息");	printf("	§	2.显示职工信息          *\n");
		printf("*                               §                              *\n");
		printf("*         3.修改职工信息");	printf("	§	4.删除职工信息          *\n");
		printf("*                               §                              *\n");
		printf("*         5.查询职工信息");	printf("	§	6.职工信息排序          *\n");
		printf("*                                                               *\n");
		printf("*                         0.退出管理系统                        *\n");
		printf("*****************************************************************\n");
		printf("\n 请输入:");
		c = getchar();
		switch (c)
		{
    
    
		case '1': {
    
    input(); getchar(); break; }
		case '2': {
    
    display(); getchar(); break; }
		case '3': {
    
    modify(); getchar(); break; }
		case '4': {
    
    dele(); getchar(); break; }
		case '5': {
    
    query(); getchar(); break; }
		case '6': {
    
    order(); getchar(); break; }
		case '0':
		{
    
    
			printf("\n感谢使用,本程序由Mi-ronin编写而成,版权所有侵权必究,感谢支持,再见。 ");
			exit(0);
		}
		default:
		{
    
    
			printf("\n请输入有效数字:");
			c = getchar();
		}
		}
	} while (1);
	return 0;
}

Three, the main menu

code show as below:

int main()
{
    
    
	char  c;
	do
	{
    
    
		printf("\n\n\n");
		printf("                     §§职工信息管理系统§§         \n");
		printf("\n");   printf("*****************************************************************\n");
		printf("*                               §                              *\n");
		printf("*         1.录入职工信息");	printf("	§	2.显示职工信息          *\n");
		printf("*                               §                              *\n");
		printf("*         3.修改职工信息");	printf("	§	4.删除职工信息          *\n");
		printf("*                               §                              *\n");
		printf("*         5.查询职工信息");	printf("	§	6.职工信息排序          *\n");
		printf("*                                                               *\n");
		printf("*                         0.退出管理系统                        *\n");
		printf("*****************************************************************\n");
		printf("\n 请输入:");
		c = getchar();
		switch (c)
		{
    
    
		case '1': {
    
    input(); getchar(); break; }
		case '2': {
    
    display(); getchar(); break; }
		case '3': {
    
    modify(); getchar(); break; }
		case '4': {
    
    dele(); getchar(); break; }
		case '5': {
    
    query(); getchar(); break; }
		case '6': {
    
    order(); getchar(); break; }
		case '0':
		{
    
    
			printf("\n感谢使用,本程序由Mi-ronin编写而成,版权所有侵权必究,感谢支持,再见。 ");
			exit(0);
		}
		default:
		{
    
    
			printf("\n请输入有效数字:");
			c = getchar();
		}
		}
	} while (1);
	return 0;
}

Fourth, enter employee information

code show as below:

void input()
{
    
    
	int i;
	for (i = 0; i < M; i++)
	{
    
    
		printf("\n输入第%d个职工信息", i + 1);
		printf("\n输入职工号:");
		scanf_s("%d", &worker[i].number);
		printf("\n输入职工姓名:");
		scanf_s("%s", &worker[i].name);
		printf("\n输入职工性别:");
		scanf_s("%s", &worker[i].sex);
		printf("\n输入职工年龄:");
		scanf_s("%d", &worker[i].birth);
		printf("\n输入职工学历:");
		scanf_s("%s", &worker[i].edu);
		printf("\n输入职工职务:");
		scanf_s("%s", &worker[i].post);
		printf("\n输入职工部门:");
		scanf_s("%s", &worker[i].department);
		printf("\n输入职工工资:");
		scanf_s("%d", &worker[i].salary);
		printf("\n输入职工住址:");
		scanf_s("%s", &worker[i].address);
	}
	writeToFile();
}

Five, file operation

File operations include writing files and reading files:

//将职工数据写到文件中
void writeToFile()
{
    
    
	int i;
	FILE* fp;
	fopen_s(&fp, "worker", "wb");
	if (!fp)
	{
    
    
		printf("cannot open the file\n");
		return;
	}
	for (i = 0; i < 10; i++)
	{
    
    
		if (fwrite(&worker[i], sizeof(struct worker), 1, fp) != 1)
		{
    
    
			printf("file write error\n");
			return;
		}
	}
	fclose(fp);
}
//从文件中读取职工数据并存入数组stu[M]
int readFromFile()
{
    
    
	int i = 0;
	FILE* fp;
	fopen_s(&fp, "worker", "rb");
	if (!fp)
	{
    
    
		printf("cannot open the file\n");
		exit(0);
	}
	else
	{
    
    
		do {
    
    
			fread(&worker[i], sizeof(struct worker), 1, fp);
			i++;
		} while (feof(fp) == 0);
	}
	fclose(fp);
	return(i - 1);
}

Six, employee information display

code show as below:

void display()
{
    
    
	int i;
	int m = readFromFile();
	printf("\n公司职工信息:\n");
	printf("\n职工号\t姓名\t性别\t年龄\t学历\t职务\t部门\t工资\t住址\n");
	for (i = 0; i < M; i++)
		printf("\n %d\t %s\t %s\t %d\t %s\t %s\t %s\t %d\t %s\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].birth, worker[i].edu, worker[i].post, worker[i].department, worker[i].salary, worker[i].address);
	printf("\n");
}

7. Deletion of employee information

code show as below:

void dele()
{
    
    
	int m = readFromFile();
	int i, j, t, n, f, Num;
	display();
	printf("请输入要删除的职工的职工号:");
	scanf_s("%d", &Num);
	for (f = 1, i = 0; f && i < m; i++)
	{
    
    
		if (worker[i].number == Num)
		{
    
    
			printf("\n已找到此人,原始记录为:\n");
			printf("\n职工号\t姓名\t性别\t年龄\t学历\t职务\t部门\t工资\t住址\n"); 		printf("\n %d\t %s\t %s\t %d\t %s\t %s\t %s\t %d\t %s\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].birth, worker[i].edu, worker[i].post, worker[i].department, worker[i].salary, worker[i].address);
			printf("\n确认删除请按 1,取消删除请按 0: ");
			scanf_s("%d", &n);
			if (n == 1)   /*如果删除,则其他的信息都向前移一行*/
			{
    
    
				for (j = i; j < m - 1; j++)
					worker[j] = worker[j + 1];      /*当找到第j个职工时,for语句后j自加了1,所以下面的应该把改后的  信息赋值给第j-1个人*/
				f = 0;
			}
			else f = 2;
		}
	}
	system("cls");
	switch (f) {
    
    
	case 0: m = m - 1;
		printf("\n删除成功!\n");
		writeToFile();     /*调用保存函数*/
		display();  /*调用浏览函数*/
		break;
	case 1: printf("\n没有该员工!\n");
		display();  /*调用浏览函数*/
		break;
	case 2: printf("\n取消删除!\n");
		break;
	}
	//display();  /*调用浏览函数*/
	printf("\n继续删除请按1,返回主菜单请按0:");
	scanf_s("%d", &t);
	system("cls");
	switch (t)
	{
    
    
	case 1:  dele();
		break;
	case 0:  system("cls");
		break;
	default: break;
	}
	system("cls");
}

8. Modification of employee information

code show as below

//信息修改 
void modify()
{
    
    
	int m = readFromFile();
	int number;
	char name[15];
	char sex[15];
	int birth;
	char edu[15];
	char post[15];
	char department[15];
	int salary;
	int tel[15];
	char address[15];
	int b = 1, c, i, n, t, k = 0;                /*导入文件内的信息*/
	printf("\n");
	printf("请输入要修改的职工的职工号:  ");
	scanf_s("%d", &number);
	system("cls");
	for (i = 0; i < m; i++)
	{
    
    
		if (worker[i].number == number)
		{
    
    
			k = 1;
			printf("\n已找到该职工号员工,其记录为:\n");
			printf("\n职工号\t姓名\t性别\t年龄\t学历\t职务\t部门\t工资\t住址\n");
			printf("\n %d\t %s\t %s\t %d\t %s\t %s\t %s\t %d\t %s\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].birth, worker[i].edu, worker[i].post, worker[i].department, worker[i].salary, worker[i].address);
			printf("\n确认修改请按1,取消修改请按0:");
			scanf_s("%d", &n);
			if (n == 1)
			{
    
    
				printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.性别 4.年龄 5.学历 6.职务 7.部门 8.工资 9.住址\n");
				printf("请输入你想修改的那一项序号: ");
				scanf_s("%d", &c);
				do {
    
    
					switch (c)
					{
    
    
					case 1: printf("职工号改为:");
						scanf_s("%d", &number);
						worker[i].number = number;
						break;
					case 2: printf("姓名改为:");
						scanf_s("%s", name);
						strcpy_s(worker[i].name, name);
						break;
					case 3: printf("性别改为:");
						scanf_s("%s", &sex);
						strcpy_s(worker[i].sex, sex);
						break;
					case 4: printf("年龄改为:");
						scanf_s("%d", &birth);
						worker[i].birth = birth;
						break;
					case 5: printf("学历改为:");
						scanf_s("%s", edu);
						strcpy_s(worker[i].edu, edu);
						break;
					case 6: printf("职务改为:");
						scanf_s("%s", &post);
						strcpy_s(worker[i].post, post);
						break;
					case 7: printf("部门改为:");
						scanf_s("%s", department);
						strcpy_s(worker[i].department, department);
						break;
					case 8: printf("工资改为:");
						scanf_s("%d", &salary);
						worker[i].salary = salary;
						break;
					case 9:printf("住址改为:");
						scanf_s("%s", &address);
						strcpy_s(worker[i].address, address);
						break;
					}
					printf("\n确认修改 请按1,重新输入 请按2:   ");
					scanf_s("%d", &b);
					if (b == 1)
					{
    
    
						system("cls");
						writeToFile();//储存修改后的数据
						printf("\n");
						display();//浏览修改后的数据
					}
				} while (b == 2);
			}
		}
		else if (i == (m - 1)) i++;
	}
	if (k == 0) {
    
    
		printf("\n输入有误!\n");
		getchar();
		getchar();
	}
	else {
    
    
		printf("\n继续修改请按 1,退出修改请按 0:  ");
		scanf_s("%d", &t);
	}
	system("cls");
	switch (t)
	{
    
    
	case 1: display();
		modify();//返回修改函数
		break;
	case 0: break;
	default:break;
	}
	system("cls");
}

Nine, employee information query

//信息查询
void query()
{
    
    
	char name1[15];
	int i, t, n = 0;
	int m = readFromFile();
	printf("\n请输入要查找的姓名:  ");
	scanf_s("%s", name1);
	for (i = 0; i < m; i++)
		if (strcmp(name1, worker[i].name) == 0)
		{
    
    
			if (n == 0)
			{
    
    
				printf("\n已找到以下信息:\n");
				printf("\n职工号\t姓名\t电话号\t性别\t年龄\t学历\t职务\t部门\t工资\t住址\n");
			}
			n++;		printf("\n %d\t %s\t %s\t %d\t %s\t %s\t %s\t %d\t %s\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].birth, worker[i].edu, worker[i].post, worker[i].department, worker[i].salary, worker[i].address);
		}
	if (n == 0)
	{
    
    
		printf("\n没有该员工!\n");
		getchar(); getchar();
	}
	else
	{
    
    
		printf("\n查询到有 %d 个员工符合要求。\n", n);
		printf("\n");
		printf("继续查询请按 1,,返回主菜单请按 0 :");
		scanf_s("%d", &t);
		switch (t)
		{
    
    
		case 0: system("cls");
			break;
		case 1: break;
		default:break;
		}
	}
}

Code running detection and results:

1. Information entry:
insert image description here
2. Information modification:
insert image description here
3. Information deletion:
insert image description here
4. Information query:
insert image description here
5. Information sorting:
insert image description here

Guess you like

Origin blog.csdn.net/weixin_56935264/article/details/122198682