C语言:职工信息管理系统
caatry 2024-07-04 08:35:01 阅读 92
一、系统功能
职工信息包括:职工号、姓名、年龄、电话、家庭住址(职工号不重复)等。
详细功能如下:
(1)系统以菜单方式工作
(2)职工信息录入功能;
(3)职工信息浏览功能;
(4)职工信息查询功能;
(5)职工信息删除、修改功能。
要求系统能正常,稳定运行,实现所有功能,并具有一定的容错能力。
二、涉及知识点
分支和循环结构、数组、函数、结构体。
三、代码实现
1.结构体定义
自定义一个结构体,用来存放单个职工信息,并定义全局变量teachers用来存放教师个数,代码如下:
<code>int teachers = 0;//全局变量,教师数量
struct teacher//教师结构体
{
char ID[20];//工号
char name[7];
int age;
char tel[12];
char address[30];
};
2.输出菜单
自定义menu函数,用来打印系统菜单,代码如下:
void menu()//菜单
{
printf("=======职工信息管理系统=======\n");
printf("===1.信息录入 2.信息浏览===\n");
printf("===3.信息查询 4.信息删除===\n");
printf("===5.信息修改 0.退出系统===\n");
printf("==============================\n");
printf("请输入要选择的数字:");
}
3.录入功能
自定义函数,实现职工信息的录入功能,并通过引入strcmp函数来进行工号对比,防止录入工号重复,代码如下:
void addinformation()//添加信息
{
int i = teachers;
printf("请输入职工号:");
scanf("%s", &teach[i].ID);
if (teachers != 0)
{
for (int j = 0; j < teachers; j++)
{
if(strcmp(teach[i].ID, teach[j].ID)==0)
{
system("cls");
printf("职工工号重复!");
Sleep(1200);
system("cls");
return 0;
}
}
}
printf("请输入职工姓名:");
scanf("%s", &teach[i].name);
printf("请输入职工年龄:");
scanf("%d", &teach[i].age);
printf("请输入职工电话:");
scanf("%s", &teach[i].tel);
printf("请输入职工家庭住址:");
scanf("%s", &teach[i].address);
system("cls");
printf("教师信息录入成功!\n");
Sleep(1200);
system("cls");
}
4.浏览功能
调用全局变量teachers,即教师数量,作为循环次数,使用for循环遍历结构体数组并输出,便可实现浏览全部教师信息的功能,代码如下:
void browse()//浏览信息
{
if (teachers > 0)
{
for (int i = 0; i < teachers; i++)
{
printf("职工号:%s\n",teach[i].ID);
printf("姓名:%s\n",teach[i].name);
printf("年龄:%d\n",teach[i].age);
printf("电话:%s\n",teach[i].tel);
printf("家庭住址:%s\n\n",teach[i].address);
}
system("pause");
system("cls");
}
else
{
system("cls");
printf("暂无职工信息!\n");
Sleep(1200);
system("cls");
}
}
5.查询功能
使用strcmp函数将输入的职工号和已录入的职工号进行逐一对比,若系统中有对应职工号,则输出对应信息,否则输入无效,代码如下:
void searchinformation()
{
char id[20];
int i = 0;
printf("请输入要查找的职工工号:");
scanf("%s", &id);
for (i = 0; i < teachers; i++)
{
if (strcmp(id,teach[i].ID)==0)
{
printf("职工号:%s\n", teach[i].ID);
printf("姓名:%s\n", teach[i].name);
printf("年龄:%d\n", teach[i].age);
printf("电话:%s\n", teach[i].tel);
printf("家庭住址:%s\n\n", teach[i].address);
system("pause");
system("cls");
return 0;
}
}
if (id != teach[i].ID)
{
system("cls");
printf("查无此人!请检查输入的职工工号\n");
Sleep(1200);
system("cls");
}
}
6.删除功能
仍然使用strcmp函数将输入的职工号和已录入的职工号进行对比,若有匹配项,则进行删除工作,将指定职工之后的职工信息在结构体数组中向前移一位,对指定职工信息进行覆盖,达到删除效果;若无匹配项,则输入无效,代码如下:
void deleteinformation()
{
char idd[20];
printf("请输入要删除的职工工号:");
scanf("%s",&idd);
for (int i = 0; i < teachers; i++)
{
if (strcmp(idd,teach[i].ID)==0)
{
for (int j = i;j < teachers;j++)
{
teach[j] = teach[j + 1];
}
teachers--;
system("cls");
printf("删除职工信息成功!\n");
Sleep(1200);
system("cls");
return 0;
}
}
system("cls");
printf("职工工号不存在!\n");
Sleep(1200);
system("cls");
}
7.修改功能
使用strcmp函数(没错还是我)将输入的职工号进行逐一对比,若有匹配项,则进行修改工作,将新输入的信息对原信息进行覆盖,达到修改功能;若无匹配项,则输入无效,代码如下:
void changeinformation()
{
char id[20];
printf("请输入要修改的职工工号");
scanf("%s", &id);
for (int i = 0; i < teachers; i++)
{
if (strcmp(id, teach[i].ID) == 0)
{
printf("请输入职工号:");
scanf("%s", &teach[i].ID);
printf("请输入职工姓名:");
scanf("%s", &teach[i].name);
printf("请输入职工年龄:");
scanf("%d", &teach[i].age);
printf("请输入职工电话:");
scanf("%s", &teach[i].tel);
printf("请输入职工家庭住址:");
scanf("%s", &teach[i].address);
system("cls");
printf("修改职工信息成功!\n");
Sleep(1200);
system("cls");
return 0;
}
}
system("cls");
printf("职工工号不存在!\n");
Sleep(1200);
system("cls");
}
8.主函数段
对上述函数进行合理调用,并使用do while循环合理控制代码运行,再加上一点点细节,代码完成!
int main()
{
int mode = 0;
do
{
menu();
scanf("%d", &mode);
switch (mode)
{
case 1:
printf("\n");
addinformation();
teachers++;
break;
case 2:
printf("\n");
browse();
break;
case 3:
printf("\n");
searchinformation();
break;
case 4:
printf("\n");
deleteinformation();
break;
case 5:
changeinformation();
break;
case 0:
system("cls");
printf("系统已退出");
break;
default:
system("cls");
printf("输入错误!请重新输入");
Sleep(1200);
system("cls");
}
} while (mode);
}
9.完整代码
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
void browse();
void menu();
void addinformation();
void searchinformation();
void deleteinformation();
void changeinformation();
struct teacher//教师结构体
{
char ID[20];//工号
char name[7];
int age;
char tel[12];
char address[30];
};
struct teacher teach[50];//教师结构体数组
int teachers = 0;//全局变量,教师数量
int main()
{
int mode = 0;
do
{
menu();
scanf("%d", &mode);
switch (mode)
{
case 1:
printf("\n");
addinformation();
teachers++;
break;
case 2:
printf("\n");
browse();
break;
case 3:
printf("\n");
searchinformation();
break;
case 4:
printf("\n");
deleteinformation();
break;
case 5:
changeinformation();
break;
case 0:
system("cls");
printf("系统已退出");
break;
default:
system("cls");
printf("输入错误!请重新输入");
Sleep(1200);
system("cls");
}
} while (mode);
}
void menu()//菜单
{
printf("=======职工信息管理系统=======\n");
printf("===1.信息录入 2.信息浏览===\n");
printf("===3.信息查询 4.信息删除===\n");
printf("===5.信息修改 0.退出系统===\n");
printf("==============================\n");
printf("请输入要选择的数字:");
}
void addinformation()//添加信息
{
int i = teachers;
printf("请输入职工号:");
scanf("%s", &teach[i].ID);
if (teachers != 0)
{
for (int j = 0; j < teachers; j++)
{
if(strcmp(teach[i].ID, teach[j].ID)==0)
{
system("cls");
printf("职工工号重复!");
Sleep(1200);
system("cls");
return 0;
}
}
}
printf("请输入职工姓名:");
scanf("%s", &teach[i].name);
printf("请输入职工年龄:");
scanf("%d", &teach[i].age);
printf("请输入职工电话:");
scanf("%s", &teach[i].tel);
printf("请输入职工家庭住址:");
scanf("%s", &teach[i].address);
system("cls");
printf("教师信息录入成功!\n");
Sleep(1200);
system("cls");
}
void browse()//浏览信息
{
if (teachers > 0)
{
for (int i = 0; i < teachers; i++)
{
printf("职工号:%s\n",teach[i].ID);
printf("姓名:%s\n",teach[i].name);
printf("年龄:%d\n",teach[i].age);
printf("电话:%s\n",teach[i].tel);
printf("家庭住址:%s\n\n",teach[i].address);
}
system("pause");
system("cls");
}
else
{
system("cls");
printf("暂无职工信息!\n");
Sleep(1200);
system("cls");
}
}
void searchinformation()
{
char id[20];
int i = 0;
printf("请输入要查找的职工工号:");
scanf("%s", &id);
for (i = 0; i < teachers; i++)
{
if (strcmp(id,teach[i].ID)==0)
{
printf("职工号:%s\n", teach[i].ID);
printf("姓名:%s\n", teach[i].name);
printf("年龄:%d\n", teach[i].age);
printf("电话:%s\n", teach[i].tel);
printf("家庭住址:%s\n\n", teach[i].address);
system("pause");
system("cls");
return 0;
}
}
if (id != teach[i].ID)
{
system("cls");
printf("查无此人!请检查输入的职工工号\n");
Sleep(1200);
system("cls");
}
}
void deleteinformation()
{
char idd[20];
printf("请输入要删除的职工工号:");
scanf("%s",&idd);
for (int i = 0; i < teachers; i++)
{
if (strcmp(idd,teach[i].ID)==0)
{
for (int j = i;j < teachers;j++)
{
teach[j] = teach[j + 1];
}
teachers--;
system("cls");
printf("删除职工信息成功!\n");
Sleep(1200);
system("cls");
return 0;
}
}
system("cls");
printf("职工工号不存在!\n");
Sleep(1200);
system("cls");
}
void changeinformation()
{
char id[20];
printf("请输入要修改的职工工号");
scanf("%s", &id);
for (int i = 0; i < teachers; i++)
{
if (strcmp(id, teach[i].ID) == 0)
{
printf("请输入职工号:");
scanf("%s", &teach[i].ID);
printf("请输入职工姓名:");
scanf("%s", &teach[i].name);
printf("请输入职工年龄:");
scanf("%d", &teach[i].age);
printf("请输入职工电话:");
scanf("%s", &teach[i].tel);
printf("请输入职工家庭住址:");
scanf("%s", &teach[i].address);
system("cls");
printf("修改职工信息成功!\n");
Sleep(1200);
system("cls");
return 0;
}
}
system("cls");
printf("职工工号不存在!\n");
Sleep(1200);
system("cls");
}
结语
实力不精,花了一天时间才完成代码撰写和测试工作,如有错误,欢迎各位大佬指正。
至于代码运行截图,我本来是截了的,但我忘了保存。。所以没有运行截图,各位大佬如果感兴趣可以自己试一试。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。