职工管理系统

在这里插入图片描述
本次用到的头文件

#include <stdio.h>
#include <stdlib.h>//malloc申请空间
#include<string.h>//string类函数
#include<windows.h>//sleep函数使用

构建结构体,显示元素

typedef struct worker
{	char num[100];//职工号	
char name[10];//姓名	
char sex[10];//性别	
char age[10];//年龄	
char edu[20];//学历	
char major[20];//职务	
char wag[10];//工资	
char address[100];//地址	
char tel[20];//电话	
struct worker *next;
} worker;

构建链表,头结点。
插入功能

worker *head;//头指针
void LinkedList()
{
head=(worker*)malloc(sizeof(worker));	
head->next=NULL;//初始化链表
}
void insert()//插入职工信息
{
worker *newworker=(worker*)malloc(sizeof(worker));	//插入职工信息	
printf("请输入职工的职工号   \n");	
scanf("%s",newworker->num);	
printf("请输入职工的姓名   \n");	
scanf("%s",newworker->name);	
printf("请输入职工的性别   \n");	
scanf("%s",newworker->sex);	//性别判断,是否合法	
while(strcmp(newworker->sex,"男")!=0&&strcmp(newworker->sex,"女")!=0)	
{
printf("非男非女。。。你认真的吗,再输一遍吧\n");		
scanf("%s",newworker->sex);	}	
printf("请输入职工的年龄   \n");	("%s",&newworker->age);	
printf("请输入职工的学历   \n");	
scanf("%s",newworker->edu);	
printf("请输入职工的职务   \n");	
scanf("%s",newworker->major);	
printf("请输入职工的工资   \n");	
scanf("%s",&newworker->wag);	
printf("请输入职工的住址   \n");	
scanf("%s",newworker->address);	
printf("请输入职工的电话   \n");	
scanf("%s",newworker->tel);	//把新职工的信息插入链表	
newworker->next=head->next;	
head->next=newworker;	
printf("录入成功!\n");
}

修改职工信息。
提供一种查改方法。

void change()//修改职工的信息
{
char worknum[100];	
int emp;	
int flag=0;//标识符,初始值为0,匹配到对象置换为1;	
printf("请输入需要修改的职工的职工号    \n");	
scanf("%s",worknum);	
worker *flagp=head->next;	while(flagp!=NULL)//遍历,保证链表不为空	
{		
if(strcmp(flagp->num,worknum)==0)//比中目标		
{		
flag=1;//标识为1,表示比中目标			
printf("\t\t\t------ 1.修改姓名------\n");			
printf("\t\t\t------ 2.修改性别------\n");			
printf("\t\t\t------ 3.修改年龄------\n");			
printf("\t\t\t------ 4.修改学历------\n");			
printf("\t\t\t------ 5.修改工资------\n");			
printf("\t\t\t------ 6.修改住址------\n");			
printf("\t\t\t------ 7.修改电话------\n");			
printf("\t\t\t------ 8.退出菜单------\n");			
printf("\t\t\t请输入您要进行的操作对应的编号\n");			scanf("%d",&emp);			while(emp!=8)			
{
switch(emp)				
{
case 1:					
printf("\t\t\t修改前的职工姓名:%s\n",flagp->name);					
printf("\t\t\t请输入修改后的姓名   \n");					
scanf("%s",flagp->name);					
break;				
case 2:					
printf("\t\t\t修改前的职工性别:%s\n",flagp->sex);					
printf("\t\t\t请输入修改后的姓别   \n");					
scanf("%s",flagp->sex);					
break;				
case 3:
printf("\t\t\t修改前的职工年龄:%s\n",flagp->age);					
printf("\t\t\t请输入修改后的年龄   \n");					
scanf("%s",&flagp->age);					
break;				
case 4:					
printf("\t\t\t修改前的职工学历:%s\n",flagp->edu);					
printf("\t\t\t请输入修改后的学历   \n");					
scanf("%s",flagp->edu);					
break;				
case 5:					
printf("\t\t\t修改前的职工工资:%s\n",flagp->wag);					
printf("\t\t\t请输入修改后的工资   \n");					
scanf("%s",&flagp->wag);					
break;				case 6:					
printf("\t\t\t修改前的职工住址:%s\n",flagp->address);					
printf("\t\t\t请输入修改后的住址   \n");					
scanf("%s",flagp->address);					
break;				
case 7:					
printf("\t\t\t修改前的职工电话:%s\n",flagp->tel);					
printf("\t\t\t请输入修改后的电话   \n");					
scanf("%s",flagp->tel);					
break;					
default:						
printf("你tm故意找茬是吧,重来!");				}				
printf("请在菜单中选择您要进行的操作\n");				
scanf("%d",&emp);			
}			
break;		
}		
flagp=flagp->next;	
}	
if(flag==0)
{		
printf("没有这个人啊!\n");
}
}

删除模块,此处提供两种查删方法

void del()//删除职工信息
{	
char workernum[100],workername[100];	
printf("\t\t---你想怎么删除呢?---\n");	
printf("\t\t---1.通过职工号删除---\n");	
printf("\t\t---2.通过职工名删除---\n");	
printf("\t\t---3.退出这个小菜单---\n");	
int emp;	
while(1)	
{		
printf("你想干啥,看着小菜单选吧\n");		
scanf("%d",&emp);		
switch(emp)		
{		
case 1:		
{			
printf("想删谁的,把他工号打出来   \n");			
scanf("%s",workernum);			
worker *p1=head;			
worker *p2=head->next;			
while(p2!=NULL)			
{				
if(strcmp(p2->num,workernum)==0)//比中目标对象				

{					
p1->next=p2->next;//使p1指向p2下一个结点,释放p2.					
free(p2);					p2=NULL;//防止野指针出现					
printf("\t\t删除成功,他没了\n");					
break;				
}				
p1=p2;				
p2=p2->next;			
}			
break;		
}		
break;		
case 2:		
{			
printf("想删谁的,把他名字打出来   \n");			
scanf("%s",workername);			
worker *p1=head;			
worker *p2=head->next;			
while(p2!=NULL)			
{				
if(strcmp(p2->num,workername)==0)//比中目标对象				
{					
p1->next=p2->next;//使p1指向p2下一个结点,释放p2.					
free(p2);					p2=NULL;//防止野指针出现					
printf("\t\t删除成功,他没了\n");					
break;				
}				
p1=p2;
p2=p2->next;			
}			
break;		
}		
case 3:			
return;			
default:				
printf("又来?好好输入。");		
}	
}
}

职工查找系统
此处提供两种查找方式

void sear1()
{	
int emp;	
printf("\t\t\t---你想怎么找人呢?---\n");	
printf("\t\t\t---1.通过职工号查找---\n");	
printf("\t\t\t---2.通过职工名查找---\n");	
printf("\t\t\t---3.退出这个小菜单---\n");	
while(1)	
{		
printf("从小菜单里面选一个吧   \n");		
scanf("%d",&emp);		
switch (emp)		
{			
case 1://按工号查找			
{				
printf("请输入你想找的职工的工号  \n");				
char workernumber[100];				
scanf("%s",workernumber);				
worker *flagp1=head->next;				
while(flagp1!=NULL)				
{					
if(strcmp(flagp1->num,workernumber)==0)					
{						
printf("工号:%s\n姓名:%s\n性别:%s\n年龄:%s\n学历:%s\n工资:%s\n住址:%s\n电话:%s\n"							
,flagp1->num,flagp1->name,flagp1->sex,flagp1->age,flagp1->edu,flagp1-
>wag,flagp1->address,flagp1->tel);						
break;					
}					
else					
{						
printf("查无此人!");					
break;					
}					
flagp1=flagp1->next;				}				
break;			
}		
case 2:		
{			
printf("请输入你想找的职工的名字  \n");			
char workername[40];			
scanf("%s",workername);			
worker *flagp1=head->next;			
while(flagp1!=NULL)			
{				
if(strcmp(flagp1->name,workername)==0)				
{					
printf("工号:%s\n姓名:%s\n性别:%s\n年龄:%s\n学历:%s\n工资:%s\n住址:%s\n电话:%s\n",
flagp1->num,flagp1->name,flagp1->sex,flagp1->age,flagp1->edu,flagp1->wag,flagp1->address,flagp1->tel);					
break;				
}				
else					
printf("查无此人");				
break;				
flagp1=flagp1->next;			
}			
break;		
}
case 3:
return;//退出			
default:				
printf("不是吧阿sir,你又输错了???,再来一遍。");		
}	
}
}

显示所有职工信息

void sear2()

{
worker *flagP=head->next;	while(flagP!=NULL)	
{		
printf("职工号:%-15s 姓名:%-20s 性别:%-10s 年龄:%-20s 学历:%-20s 工资:%-20s 地址:%-10s 电话:%-10s\n",
&flagP->num,&flagP->sex,&flagP->age,&flagP->edu,&flagP->wag,&flagP->address,&flagP->tel);//向左对齐		    
flagP=flagP->next;	
}	
system("pause");	
system("cls");}

职工信息保存模块


void savefile()
{	
FILE *file=NULL;	
file=fopen("worker.txt","w+");//可读写	
if(!file)	
{		
printf("这个文件好像打不开啊\n");	}	
else	
{		
struct worker *p;		
for(p=head->next;p!=NULL;p=p->next)		
{			
fprintf(file,"职工名:%s\t姓名:%s\t性别:%s\t年龄:%s\t学历:%s\t工资:%s\t住址:%s\t电话:%s\t\n",				
p->num,p->name,p->sex,p->age,p->edu,p->wag,p->address,p->tel);		}		
fclose(file);		
printf("震惊!居然储存成功了\n");	
}
}

主菜单以及欢迎页面
欢迎页面通过sleep实现暂时停留

//主菜单目录

void menu()
{	
printf("\t\t\t\t|**************************************************|\n");	
printf("\t\t\t\t|*****************职工信息管理系统*****************|\n");	
printf("\t\t\t\t|**************************************************|\n");	
printf("\t\t\t\t|-----------------1.新增职工信息-------------------|\n");	
printf("\t\t\t\t|-----------------2.修改职工信息-------------------|\n");	
printf("\t\t\t\t|-----------------3.删除职工信息-------------------|\n");	
printf("\t\t\t\t|-----------------4.查找职工信息-------------------|\n");	
printf("\t\t\t\t|-----------------5.查看所有职工信息---------------|\n");	
printf("\t\t\t\t|-----------------6.保存职工信息-------------------|\n");	
printf("\t\t\t\t|**************************************************|\n");	
printf("\t\t\t\t|==================================================|\n");}
//初始界面
void welcome()
{	
printf("\t\t\t\t*********欢迎进入职工信息管理系统**********\n");	
printf("\t\t\t\t*******************************************\n");	
printf("\t\t\t\t******请按照菜单所对应的数字进行操作*******\n");

指令输入操作模块

//操作系统


void operation()
{	
system("cls");	
int ad;	welcome();	
Sleep(1100);	
system("cls");	
int op;	menu();	
printf("请输入你想进行的操作  \n");	ad=scanf("%d",&op);	
while(ad!=1)	
{		
while((getchar())!='\n');		
printf("提示:只能输入数字!\n");		
ad=scanf("%d",op);	}
	while(op!=7)	
	{		
	switch (op)		
	{		
	case 1:		
		printf("\t\t\t------插入职工信息------\n");			
		insert();			break;		case 2:			
		printf("\t\t\t------修改职工信息------\n");			
		change();			
		break;		
case 3:			
		printf("\t\t\t------删除职工信息------\n");			
		del();		
		break;		
case 4:			
			printf("\t\t\t------查找职工信息------\n");		
			sear1();			
			break;		
case 5:			
				printf("\t\t\t----查看所有职工信息----\n");			
			sear2();			
			break;		
case 6:			
			printf("\t\t\t------职工信息保存------\n");			
			savefile();			
			break;			
			default:				
		
	printf("\t\t\t指令不合法,系统看不懂\n");						}		
	
		system("pause");		
		system("cls");		
		menu();		
		printf("请输入你要进行的操作  \n");		
		scanf("%d",&op);	}
				}

登陆系统


int login(char username[],char password[])

{
	
	//默认初始用户名
	
	char adminUsername[30]="admin";
	
	//默认初始密码
	
	char 
	adminUserPassword[30]="pass";
	
	if(strcmp(username,adminUsername)==0&&strcmp(password,adminUserPassword)==0)
	
	{
		
		return 1;
	}
	
	else
	
	{
		
		return -1;
	
	}

}

主函数,含有密码校验



int main()
{	
LinkedList();	//输入用户名 密码	
char username[30],password[30];	
int loginSuccessTime=0;	//判断是否登录成功	
int FauleTime=0;	//记录登录失败次数	
while(loginSuccessTime!=1)	
{		
printf("\t\t\t初始账号: admin\n\t\t\t初始密码:pass\n\n");		
printf("\t\t\t请输入用户名:");		
scanf("%s",username);		
printf("\t\t\t请输入密码  ");		
scanf("%s",password);		
loginSuccessTime=login(username,password);		
if(loginSuccessTime==1)		
{			//登陆成功进入系统			
operation();		
}		
else if(loginSuccessTime==-1)		
{			
printf("\t\t\tshit! 对着抄你都抄不对\n\n");			
FauleTime++;		}		
if(FauleTime>=3)		
{			
printf("\n你已经输错了三次,你没机会了。哎,你走吧。");		
break;		
}	
}	
return 0;
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值