选题
本次是使用大学常用VC6.0
基于C 语言的小型企业员工信息管理系统开发
设计要求:
1.利用结构体设计图书信息的数据结构,包括:姓名、性别、工号、年龄、学历、岗位、 电话等。
2. 系统具有录入、查询、显示、删除、排序、保存等基本功能。
3.系统各功能模块采用函数的形式来实现,
4. 系统的所有数据均以数据文件的形式保存,以便于系统的管理与维护。
5. 按要求撰写设计报告。正文部分包括设计题目与要求、系统功能模块划分、流程图、 完整程序代码、结果及分析。要求文档条理清晰,语言流畅,排版规范。
代码
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_EMPLOYEES 100
struct Employee {
char name[50];
char gender[10];
int id;
int age;
char education[20];
char position[30];
char phone[15];
};
struct Employee employees[MAX_EMPLOYEES];
int num_employees = 0;
void input_employee() {
struct Employee new_employee;
printf("输入姓名: ");
scanf("%s", new_employee.name);
printf("输入性别 (男/女): ");
scanf("%s", new_employee.gender);
printf("输入工号: ");
scanf("%d", &new_employee.id);
printf("输入年龄: ");
scanf("%d", &new_employee.age);
printf("输入学历: ");
scanf("%s", new_employee.education);
printf("输入岗位: ");
scanf("%s", new_employee.position);
printf("输入电话号码: ");
scanf("%s", new_employee.phone);
employees[num_employees++] = new_employee;
}
void query_employee() {
char name[50];
int i;
printf("输入名称进行查询: ");
scanf("%s", name);
for (i = 0; i < num_employees; i++) {
if (strcmp(employees[i].name, name) == 0) {
printf("工号: %d\n", employees[i].id);
printf("年龄: %d\n", employees[i].age);
printf("学历: %s\n", employees[i].education);
printf("岗位: %s\n", employees[i].position);
printf("电话号码: %s\n", employees[i].phone);
return;
}
}
printf("Employee not found.\n");
}
void display_employees() {
int i;
for (i = 0; i < num_employees; i++) {
printf("姓名: %s\n", employees[i].name);
printf("工号: %d\n", employees[i].id);
printf("年龄: %d\n", employees[i].age);
printf("学历: %s\n", employees[i].education);
printf("岗位: %s\n", employees[i].position);
printf("电话: %s\n", employees[i].phone);
printf("\n");
}
}
void delete_employee() {
char name[50];
int i,j;
printf("输入需要删除的员工姓名: ");
scanf("%s", name);
for (i = 0; i < num_employees; i++) {
if (strcmp(employees[i].name, name) == 0) {
for (j = i; j < num_employees - 1; j++) {
employees[j] = employees[j + 1];
}
num_employees--;
printf("Employee deleted.\n");
return;
}
}
printf("Employee not found.\n");
}
void sort_employees() {
int i, j;
char sort_by[20];
printf("\n输入要排序的字段(姓名、工号、年龄、学历、岗位、电话): ");
scanf("%s", sort_by);
for (i = 0; i < num_employees - 1; i++) {
for (j = i + 1; j < num_employees; j++) {
if (strcmp(sort_by, "姓名") == 0) {
if (strcmp(employees[i].name, employees[j].name) > 0) {
struct Employee temp = employees[i];
employees[i] = employees[j];
employees[j] = temp;
}
} else if (strcmp(sort_by, "工号") == 0) {
if (employees[i].id > employees[j].id) {
struct Employee temp = employees[i];
employees[i] = employees[j];
employees[j] = temp;
}
} else if (strcmp(sort_by, "年龄") == 0) {
if (employees[i].age > employees[j].age) {
struct Employee temp = employees[i];
employees[i] = employees[j];
employees[j] = temp;
}
} else if (strcmp(sort_by, "学历") == 0) {
if (strcmp(employees[i].education, employees[j].education) > 0) {
struct Employee temp = employees[i];
employees[i] = employees[j];
employees[j] = temp;
}
} else if (strcmp(sort_by, "岗位") == 0) {
if (strcmp(employees[i].position, employees[j].position) > 0) {
struct Employee temp = employees[i];
employees[i] = employees[j];
employees[j] = temp;
}
} else if (strcmp(sort_by, "电话") == 0) {
if (strcmp(employees[i].phone, employees[j].phone) > 0) {
struct Employee temp = employees[i];
employees[i] = employees[j];
employees[j] = temp;
}
} else {
printf("无效.\n");
return;
}
}
}
}
void save_employees()
{
int i;
FILE *file = fopen("employees.txt", "w");
if (file == NULL)
{
printf("无法打开文件.\n");
return;
}
for ( i = 0; i < num_employees; i++)
{
fprintf(file, "姓名: %s\n", employees[i].name);
fprintf(file, "工号: %d\n", employees[i].id);
fprintf(file, "年龄: %d\n", employees[i].age);
fprintf(file, "学历: %s\n", employees[i].education);
fprintf(file, "岗位: %s\n", employees[i].position);
fprintf(file, "电话: %s\n", employees[i].phone);
fprintf(file, "\n");
}
fclose(file);
printf("数据已保存到文件.\n");
}
int main()
{
int choice;
do
{
printf("\n====员工信息管理系统====\n");
printf("1. 输入员工信息\n");
printf("2. 查询员工\n");
printf("3. 显示员工\n");
printf("4. 删除员工信息\n");
printf("5. 对员工进行排序\n");
printf("6. 将员工保存到文件中\n");
printf("7. Exit\n");
printf("选择: ");
scanf("%d", &choice);
switch (choice)
{
case 1:
input_employee();
break;
case 2:
query_employee();
break;
case 3:
display_employees();
break;
case 4:
delete_employee();
break;
case 5:
sort_employees();
break;
case 6:
save_employees();
break;
case 7:
printf("Exiting...\n");
break;
default:
printf("Invalid choice.\n");
}
}
while (choice != 7);
return 0;
}
功能测试
根据提示输入员工信息,下图中输入了工号为1 的员工信息,更多的输入过程省略
然后测试显示所有信息功能,可以正常输出
剩下的你们自己测试吧!
而在保存文件后,可以看见同一目录下出现了一名为employees.txt的数据文件
功能
此系统功能包括:
- 录入功能:允许用户输入新员工的详细信息,并将其添加到员工数组中。
- 查询功能:允许用户根据员工的工号或姓名查询其详细信息。
- 显示功能:显示当前存储在系统中的所有员工的详细信息。
- 删除功能:允许用户根据员工的工号或姓名删除其信息。
- 排序功能:允许用户根据员工的姓名或年龄对员工信息进行排序。
- 保存功能:将当前存储在系统中的所有员工信息保存到文件中,以便于将来使用。