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");

}

结语

实力不精,花了一天时间才完成代码撰写和测试工作,如有错误,欢迎各位大佬指正。

至于代码运行截图,我本来是截了的,但我忘了保存。。所以没有运行截图,各位大佬如果感兴趣可以自己试一试。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。