一群菜鸟们的“员工信息管理系统”(C语言课程设计)
程序员文章站
2024-03-22 12:16:28
...
一群菜鸟们的“员工信息管理系统”(C语言课程设计)
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<ctype.h>
/*结构体开始*/(注释)
struct xinxi
{
char num[20]; /*工号*/
char name[20]; /*姓名*/
char xingbie[5]; /*性别*/
char xueli[20]; /*学历*/
char phone[20]; /*电话*/
char work[20]; /*职务*/
char add[30]; /*住址*/
char yuexin[20]; /*月薪*/
}person[10000]; //暂时定义了10000个员工的空间
/*结构体结束*/(注释)
/*录入函数开始*/(注释)
void luru()
{
int i,a;
printf("请输入员工的信息:\n");
for(i=0;;i++)
{
printf("--------------------------------------\n");
printf("职 工 号: ");
scanf("%s",person[i].num);
printf("姓 名: ");
scanf("%s",person[i].name);
printf("性 别: ");
scanf("%s",person[i].xingbie);
printf("学 历: ");
scanf("%s",person[i].xueli);
printf("电 话: ");
scanf("%s",person[i].phone);
printf("职 务: ");
scanf("%s",person[i].work);
printf("家庭住址: ");
scanf("%s",person[i].add);
printf("月 薪: ");
scanf("%s",person[i].yuexin);
printf("请选择是否继续录入员工信息(是='1'/否='0')[ ]\b\b");
scanf("%d",&a);
if(a==0)break; //判断是否终止录入,'0'则终止,非零则继续
}
}
/*录入函数结束*/(注释)
/*查询函数开始*/(注释)
void search()
{
void search_num(); //声明工号查询函数
void search_name(); //声明姓名查询函数
int t,flag;
do
{
printf("\n按职工号查询请按1 ; 按姓名查询请按2 ; 退出查询请按3\n");
scanf("%d", &t);
if (t >= 1 && t <= 3)
{flag = 1;break;}
else
{flag = 0;printf("您输入有误,请重新选择!\a");}
}
while (flag == 0);
while (flag == 1)
{
switch (t)
{
case 1:printf("按职工号查询\n"); search_num(); break;
case 2:printf("按姓名查询\n"); search_name(); break;
case 3: break;
default:printf("输入正确的数字,记住,数字哦!!!别乱搞>0<");break;
}break;
}
}
void search_num() //工号查询函数
{
char numr[20];
int i, t;
int m = 10000;
printf("请输入要查找的职工号:\n");
scanf("%s", numr);
for (i = 0; i<m; i++)
if (strcmp(person[i].num,numr)==0)
{
printf("\n已找到此人,其记录t为:\n");
printf("\n职工号\t姓名\t性别\t学历\t工资\t住址\t电话 \n");
printf("\n%s\t%s\t%s\t%s\t%s\t%s\t%s\n",
person[i].num, person[i].name, person[i].xingbie,
person[i].xueli, person[i].yuexin, person[i].add, person[i].phone);
break;
}
if (i == m)
printf("\n对不起,查无此人\a\n");
printf("\n");
D: printf("返回查询函数请按1,继续查询职工号请按2\n");
scanf("%d", &t);
switch (t)
{
case 1:search(); break;
case 2:search_num(); break;
default:printf("您输入的序号我无法识别(>_<)!!请您按要求重新输入正确的序号呦\a\n");goto D;
}
}
void search_name() //姓名查询函数
{
char namer[20];
int i, t;
int m = 10000;
printf("请输入要查找的姓名:\n");
scanf("%s", namer);
for (i = 0; i < m; i++)
if (strcmp(person[i].name, namer) == 0)
{
printf("\n已找到此人,其记录t为:\n");
printf("\t姓名\t职工号\t性别\t学历\t工资\t住址\t电话 \n");
printf("\n%s\t%s\t%s\t%s\t%s\t%s\t%s\n",
person[i].name, person[i].num, person[i].xingbie,
person[i].xueli, person[i].yuexin, person[i].add, person[i].phone);
break;
}
if (i == m)
printf("\n对不起,查无此人\a\n");
printf("\n");
C: printf("返回查询函数请按1,继续查询姓名请按2\n");
scanf("%d", &t);
switch (t)
{
case 1:search(); break;
case 2:search_name();break;
default:printf("您输入的序号我无法识别(>_<)!!请您按要求重新输入正确的序号呦\a\n");goto C;
}
}
/*查询函数结束*/(注释)
/*修改函数开始*/(注释)
void xiugai()
{
int j,b;
char num2[20];
for(;;)
{
j=0;
printf("--------------------------------------\n");
printf("请输入需要修改的员工的工号:");
scanf("%s",num2);
while(1)
{
if(strcmp(person[j].num,num2)==0)
{
printf("请重新录入该员工的信息\n");
printf("姓 名: ");
scanf("%s",person[j].name);
printf("性 别: ");
scanf("%s",person[j].xingbie);
printf("学 历: ");
scanf("%s",person[j].xueli);
printf("电 话: ");
scanf("%s",person[j].phone);
printf("职 务: ");
scanf("%s",person[j].work);
printf("家庭住址: ");
scanf("%s",person[j].add);
printf("月 薪: ");
scanf("%s",person[j].yuexin);
break;
}
else
j++;
if(j==1000)
{
printf("查无此人\a\n");
break;
}
}
printf("请选择是否继续修改其他员工的信息(是='1'/否='0')[ ]\b\b");
scanf("%d",&b);
if(b==0)break;
}
}
/*修改函数结束*/(注释)
/*浏览函数开始*/(注释)
void display()
{
int i;
int m=10000;
printf("\n 职工号\t姓名\t性别\t学历\t电话\t职务\t工资\t住址 \n");
for(i=0;i<m;i++) /*m为输入部分的职工人数*/
{
if(strlen(person[0].num)==0)
{
printf("\n\t\t\t**************************\n");
printf("\n\t\t\t*我暂时还找不到他的信息呦*\a\n");
printf("\n\t\t\t**************************\n");
}
if(strlen(person[i].num)>0)
{
printf("\n %s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",
person[i].num,person[i].name,person[i].xingbie,
person[i].xueli,person[i].phone,person[i].work,person[i].yuexin,person[i].add);
}
else
break;
}
}
/*浏览函数结束*/ (注释)
/*删除函数开始*/(注释)
void shanchu()
{
int u,k,c;
char num3[20];
while(1)
{
k=0;
printf("------------------------------------\n");
printf("请输入需要删除的员工的工号:");
scanf("%s",num3);
while(1)
{
if(strcmp(person[k].num,num3)==0)
{
for(u=k;u<1000;u++)
{
person[u]=person[u+1];
break;
}
printf("已删除\n");
break;
}
if(k==10000)
{
printf("查无此人\a\n");
break;
}
else
k++;
}
printf("请选择是否继续删除其他员工的信息(是='1'/否='0')[ ]\b\b");
scanf("%d",&c);
if(c==0)break;
}
}
/*删除函数结束*/ (注释)
/*主体框架开始*/(注释)
int main()
{
char num2[20];
int xuhao;
char x[20];
char y[20]="wjhyd521";
int i=0;
system("color A");/*变一下颜色(帽子的那种哈哈哈>-<)*/
printf("请您输入正确的密码>.<!\n");
A: /*这里有一个被禁用的goto语句,因为这个确实在这可以无脑的解决一个问题(goto起点在第49行)*/
do
{
x[i]=getch();
if(x[i]=='\r')
break;
if(x[i]=='\b'){
if(i==0)
{
printf("\a");
continue;
}
else{i=i-1;printf("\b \b\b ");}/*删除用的,但是因为有小问题所以用另一种方式掩盖了一下*/
}
else{i=i+1;printf("*");}/*输入密码时显示"*"号*/
}
while(x[i]!='\n' && i<20);/*避免输入太多*/
x[i]='\0';
if(strcmp(x,y)==0)
B: { printf("\n");/*界面*/
printf("\n");
printf("\n");
printf("\n");
printf("员工信息管理系统:\n");
printf(" ————————————————菜单——————————————— \n");
printf(" | 1员工信息录入 2员工信息查询 3员工信息修改 |\n");
printf(" | |\n");
printf(" | 4浏览员工信息 5删除员工信息 0退出此系统 |\n");
printf(" | |\n");
printf(" ————————————————菜单——————————————— \n");
printf("\n");
printf("\n");
printf("\n");
printf(" 请输入您所需要服务的正确序号(例:‘1’、‘2’) \n");
E: scanf("%d",&xuhao);
switch (xuhao)/*选项开始,引入其他函数*/
{
case 1:luru();goto B;
case 2:search();goto B;
case 3:xiugai();goto B;
case 4:display();goto B;
case 5:shanchu();goto B;
case 0: printf("哈哈哈(->。<-)!,感谢您的使用,现在要退出系统咯>_<!\n");break;
default: printf("您输入的序号我无法识别(>_<)!!请您按要求重新输入正确的序号呦\n");goto E;
}
}
else{printf("\n"); printf("错误!!!请您重新输入正确的密码\n");printf("\a"); i=0; goto A;}
return 0;
}
/*主体框架结束*/(注释)
(以上代码引用结构体数组,无法实现应用关闭后保存数据)
以下是程序运行时的部分图片
(此图为程序运行开始菜单)
(此图为界面密码输入)
总结
优势:
1.整体界面改变颜色
2.程序多出添加错误提示音
3.密码加密(输入显示星号)
4.程序模块清晰,易懂,便于观察理解
不足:
1.多次引用“goto”语句(以标明位置)
2.无法实现文件保存形式
3.代码行较长
上一篇: Ansible 安装测试