欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

一群菜鸟们的“员工信息管理系统”(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;
}
/*主体框架结束*/(注释)

(以上代码引用结构体数组,无法实现应用关闭后保存数据)

以下是程序运行时的部分图片

一群菜鸟们的“员工信息管理系统”(C语言课程设计)(此图为程序运行开始菜单)
一群菜鸟们的“员工信息管理系统”(C语言课程设计)
(此图为界面密码输入)

总结

优势:

1.整体界面改变颜色
2.程序多出添加错误提示音
3.密码加密(输入显示星号)
4.程序模块清晰,易懂,便于观察理解

不足:

1.多次引用“goto”语句(以标明位置)
2.无法实现文件保存形式
3.代码行较长

上一篇: Ansible 安装测试

下一篇: