精华内容
下载资源
问答
  • 2020-12-23 16:05:39

    最近咨询这方面源码的朋友比较多,所以扒一扒以前的网盘,发现了好多之前攒的源码,分享给大家。

    扫描上方二维码,回复 999 直接获取作者之前收藏的学习资源,谢谢网友们的分享。

    更多管理系统更新中,请注意关注!

    今天分享: C语言员工信息管理系统源代码

    /*******************************************************************************
    *   文件名:UI.Cpp															   *
    *                                                                              *
    *   文件功能: 该文件主要是定义(实现)和用户操作有关的一些函数,之所以把和用户 *
    *   操作有关的函数单独放到ui.c中,是为了使程序结构更加清晰,源代码更           *
    *	容易管理,这也是遵循结构化程序设计的要求(模块化、层次化)				   *
    *																			   *
    *   作者:                                                                      *
    *                                                                              *
    *******************************************************************************/
    
    #include  <stdio.h>
    #include	<stdlib.h>
    #include  <string.h>
    #include "ui.h"
    
    
    //选择身份
    void UserOperateChoose(ListType  L)
    {
    	int  option = 0;
    	
    
    	
    	do
    	{
    		
    		//提示用户操作选择
    		PrintOptionChoose( );
    		scanf("%d", &option );
    		
    		//根据用户选择调用相关函数完成指定的操作
    		switch(option )
    		{
    			//添加一个员工
    	/*	case 1:   
    			 
    			UserOperateOne(L);
    			break;*/
    			
    			//删除员工
    	/*	case 2:
    			DelStu(L);
    			break;
    			
    			//修改员工
    	 	case 3:
    			ModifyStu(L);
    			break;         */
    			
    			//查询某个员工
    		case 1:
    			UserOperatemanager(L);
    
    			break;
    			
    			
    		
    			
    			//排序
    	/*	case 3:
    			UserOperateThree(L);
    			break;*/
    			//打印所有员工信息
    		case 2:
    			UserOperateVisitor(L);
    			
    			break;
    			
    		default: break;
    		}
    	}while(option );
    	
    	//程序退出时,显示BYEBYE
    	PrintHello( );
    }
    
    //该函数根据管理员的选择,完成指定的操作
    void UserOperateVisitor(ListType  L)
    {
    	int  option = 0;
    	
    	  //显示欢迎信息
    
    
    	
    	do
    	{
    		//提示用户操作选择
    		PrintOptionVisitor( );
    		scanf("%d", &option );
    		
    		//根据用户选择调用相关函数完成指定的操作
    		switch(option )
    		{
    			//添加一个员工
    	/*	case 1:   
    			 
    			UserOperateOne(L);
    			break;*/
    			
    			//删除员工
    	/*	case 2:
    			DelStu(L);
    			break;
    			
    			//修改员工
    	 	case 3:
    			ModifyStu(L);
    			break;         */
    			
    			//查询某个员工
    		case 1:
    			UserOperateTwo(L);
    
    			break;
    			
    			
    		
    			
    			//排序
    	/*	case 3:
    			UserOperateThree(L);
    			break;*/
    			//打印所有员工信息
    		case 2:
    			PrntAll(L);
    			
    			break;
    			
    		default: break;
    		}
    	}while(option );
    	
    	//程序退出时,显示BYEBYE
    	
    }
    
    
    //该函数根据管理员的选择,完成指定的操作
    void UserOperatemanager(ListType  L)
    {
    	int  option = 0;
    	
    	 
    		//用密码进入系统
    	 password();
    
    	
    	do
    	{
    		//提示用户操作选择
    		PrintOption( );
    		scanf("%d", &option );
    		
    		//根据用户选择调用相关函数完成指定的操作
    		switch(option )
    		{
    			//添加一个员工
    		case 1:   
    			 
    			UserOperateOne(L);
    			break;
    			
    			//删除员工
    	/*	case 2:
    			DelStu(L);
    			break;
    			
    			//修改员工
    	 	case 3:
    			ModifyStu(L);
    			break;         */
    			
    			//查询某个员工
    		case 2:
    			UserOperateTwo(L);
    
    			break;
    			
    			
    		
    			
    			//排序
    		case 3:
    			UserOperateThree(L);
    			break;
    			//打印所有员工信息
    		case 4:
    			PrntAll(L);
    			
    			break;
    		 
    			
    		default: break;
    		}
    	}while(option );
    	
    	//程序退出时,显示BYEBYE
    	 
    }
    
    
    //该函数为基本操作的二级菜单,完成指定的操作
    void UserOperateOne(ListType  L)
    {
    	int  option = 0;
    	
    	
    	do
    	{
    		//提示用户操作选择
    		PrintOptionOne( );
    		scanf("%d", &option );
    		
    		//根据用户选择调用相关函数完成指定的操作
    		switch(option )
    		{
    			//添加一个员工
    		case 1:   
    			AddStu(L);
    			break;
    			
    			//删除员工
    		case 2:
    			DelStu(L);
    			break;
    			
    			//修改员工
    		case 3:
    			ModifyStu(L);
    			break;
    			
    			//返回上级菜单
    		case 0:
    			return;
    			break;
    			
    	/*		//查询某个员工
    		case 5:
    			chkStuname(L);
    			break;
    			
    			
    			//打印所有员工信息
    		case 6:
    			PrntAll(L);
    			break;
    			
    			//按ID号排序
    		case 7:
    			sortbyID(L);
    			
    			break;
    		case 8:
    			//按姓名排序
    			sortbyname(L);
    			break;
    		case 9:
    			//按部门分类显示信息
    			sortbyoffice(L);
    			break;*/
    			
    		default: break;
    		}
    	}while(option );
    	
    	//程序退出时,显示BYEBYE
    	//PrintHello( );
    }
    
    
    //该函数为基本操作的第二个二级菜单,完成指定的操作
    void UserOperateTwo(ListType  L)
    {
    	int  option = 0;
    	
    	
    	do
    	{
    		//提示用户操作选择
    		PrintOptionTwo( );
    		scanf("%d", &option );
    		
    		//根据用户选择调用相关函数完成指定的操作
    		switch(option )
    		{
    			//查询某个员工
    		case 1:
    			chkStu(L);
    			break;
    			
    			//查询某个员工
    		case 2:
    			chkStuname(L);
    
    			break;
    			
    			//返回上级菜单
    		case 0:
    			return;
    			break;
    			
    	/*		//查询某个员工
    		case 5:
    			chkStuname(L);
    			break;
    			
    			
    			//打印所有员工信息
    		case 6:
    			PrntAll(L);
    			break;
    			
    			//按ID号排序
    		case 7:
    			sortbyID(L);
    			
    			break;
    		case 8:
    			//按姓名排序
    			sortbyname(L);
    			break;
    		case 9:
    			//按部门分类显示信息
    			sortbyoffice(L);
    			break;*/
    			
    		default: break;
    		}
    	}while(option );
    	
    	//程序退出时,显示BYEBYE
    	//PrintHello( );
    }
    
    //该函数为基本操作的第三个二级菜单,完成指定的操作
    void UserOperateThree(ListType  L)
    {
    	int  option = 0;
    	
    	
    	do
    	{
    		//提示用户操作选择
    		PrintOptionThree( );
    		scanf("%d", &option );
    		
    		//根据用户选择调用相关函数完成指定的操作
    		switch(option )
    		{
    				//按ID号排序
    		case 1:
    			sortbyID(L);
    			
    			break;
    		case 2:
    			//按姓名排序
    			sortbyname(L);
    			break;
    		case 3:
    			//按部门分类显示信息
    			sortbyoffice(L);
    			break;
    			
    			//按性别排序显示信息
    		case 4:
    
    			sortbysex(L);
    			break;
    			
    		//按年龄排序显示信息
    		case 5:
    			sortbyage(L);
    			break;
    
           //按电话排序显示信息 
    
    		case 6:
    			sortbyphone( L);
    			break;
            //按地址排序显示信息
    		case 7:
    			sortbyaddress( L);
    			break;
    
    
    		//按工资排序显示信息   
    		case 8:
    			sortbypay( L);
    			break;
    
    		//按电子邮件排序显示信息
    		case 9:
    
    			sortbyemil( L);
    			break;
    			
    			//返回上级菜单
    		case 0:
    			return;
    			break;
    			
    	/*		//查询某个员工
    		case 5:
    			chkStuname(L);
    			break;
    			
    			
    			//打印所有员工信息
    		case 6:
    			PrntAll(L);
    			break;
    			
    			//按ID号排序
    		case 7:
    			sortbyID(L);
    			
    			break;
    		case 8:
    			//按姓名排序
    			sortbyname(L);
    			break;
    		case 9:
    			//按部门分类显示信息
    			sortbyoffice(L);
    			break;*/
    			
    		default: break;
    		}
    	}while(option );
    	
    	//程序退出时,显示BYEBYE
    	//PrintHello( );
    }
    
    
    
    /* 用户操作界面启动时,在显示器上显示一些欢迎信息 */
    void PrintWelcome( )
    {
    	puts(" ");
    	puts("********************************************************************" );
    	puts("                       欢迎使用员工管理系统!" );
    	puts("********************************************************************" );
     	puts("	            若有有问题请在留言区交流");
     	puts("********************************************************************" );
    	
    }
    
    
    
    
    
    
    /* 在显示器上显示用户可以进行的操作,以及操作的方法 */
    void PrintOption( )
    {
    	puts(" ");
    	puts("请选择操作:" );
    	puts("0:返回 " );
    	puts("1:进入基本操作菜单");
    	puts("2:进入员工查询系统");
    	puts("3:进入信息排序系统");
    	puts("4:打印员工信息");
    	
    }
    
    
    //选择身份
    void PrintOptionChoose( )
    
    {
    	puts(" ");
    	puts("请选择身份:" );
    	puts("0:退出系统 " );
    	puts("1:以管理员身份进入 " );
    	puts("2:以游客身份进入 " );
    
    }
    
    //显示第一个二级的提示信息
    void PrintOptionOne( )
    {
    	puts(" ");
    	puts("请选择操作:" );
    	puts("0:返回 " );
    	puts("1:添加员工                2:删除员工               3:修改员工信息" );
    	
    }
    //显示第二个二级的提示信息
    void PrintOptionTwo( )
    {
    	puts(" ");
    	puts("请选择操作:" );
    	puts("0:返回 " );
    	puts("1:按员工ID号查询           2:按员工姓名查询" );
    	
    }
    
    //显示第三个二级的提示信息
    void PrintOptionThree( )
    {
    	puts(" ");
    	puts("请选择操作:" );
    	puts("0:返回 " );
    	puts("1:按ID号排序显示信息	 2:按姓名排序显示信息	    3:按部门分类显示信息");
    	puts("4:按性别排序显示信息    5:按年龄排序显示信息      6:按电话排序显示信息");
    	puts("7:按地址排序显示信息    8:按工资排序显示信息      9:按电子邮件排序显示信息");
    	
    }
    
    //显示游客查询系统
    void PrintOptionVisitor( )
    {
    	puts(" ");
    	puts("请选择操作:" );
    	puts("0:返回 " );
     
    	puts("1:进入员工查询系统");
     
    	puts("2:打印员工信息");
    }
    
    
    
    
    /* 程序退出时,在显示器上显示一些感谢语言,以给使用者一个好印象 */
    void PrintHello( )
    {
    	
    	puts("********************************************************************" );
    	puts("                   谢谢使用员工管理系统,再见!" );
    	puts("********************************************************************" );
    	puts(" ");
    	
    }
    
    
    
    //比较两个员工信息的学号是否相等
    //若相等则返回TRUE,否则返回FALSE
    //当调用线性表操作函数int LocateElem(ListType L, ElemType e, STATUS (*compare)(ElemType e1, ElemType e2) 
    //的时候,将该函数名作为第三个参数传递给compare
    STATUS IsEqual(ElemType e1, ElemType e2 )
    {
    	if( strcmp(e1.ID, e2.ID)==0 )
    		return TRUE;
    	
    	return FALSE;
    }
    STATUS IsEqual2(ElemType e1, ElemType e2 )
    {
    	if( strcmp(e1.name, e2.name)==0 )
    		return TRUE;
    	
    	return FALSE;
    }
    
    
    
    //往线性表中添加一个员工
    void AddStu(ListType  L)
    {
    	ElemType  stu;
    	
    	printf("请输入员工的ID号(不超过15位):" );
    	getchar();  //吃掉前面的回车键,否则后面的字符串输入时会出错
    	gets(stu.ID );
    	printf("请输入员工的姓名(不超过15位):" );
    	gets(stu.name );
    	printf("请输入员工的性别(输入M/W):" );
    	stu.sex=getchar();
    	printf("请输入员工的年龄:" );
    	scanf("%d",&stu.age);
    	printf("请输入员工的电话(不超过20位):" );
    	getchar();  //吃掉前面的回车键,否则后面的字符串输入时会出错
    	gets(stu.phone);
    	printf("请输入员工的地址(不超过100位):" );
    	gets(stu.address);
    	printf("请输入员工的电子邮件(不超过50位):" );
    	gets(stu.email);
    	printf("请输入员工的工资(不超过10位):" );
    	gets(stu.pay);
    	printf("请输入员工的工龄:" );
    	scanf("%d",&stu.workingyears);
    	getchar();  //吃掉前面的回车键,否则后面的字符串输入时会出错
    	printf("请输入员工的所在部门(不超过100位):" );
    	gets(stu.office);
    	
    	
    	//判断线性表中是否已经存在该ID号的员工,如果已经存在,则放弃插入操作
    	if( LocateElem(L, stu, IsEqual) )
    	{
    		puts("操作失败,该员工已经存在" );
    		return ;
    	}
    	
    	//将该学生放入线性表中
    	//为简单起见,我们把新添加的结点放到线性表的前面
    	if( ListInsert(L, 1, stu ) )
    		puts("操作成功" );
    	else
    		puts("操作失败" );
    }
    
    
    
    
    
    
    //从线性表中删除一个员工,根据员工的ID号决定删除哪个员工
    void DelStu(ListType  L)
    {
    	ElemType stu;
    	int pos;
    	
    	printf("请输入员工的ID号(不超过15位):" );
    	getchar();  //吃掉前面的回车键,否则后面的字符串输入时会出错
    	gets(stu.ID );
    	pos = LocateElem(L, stu, IsEqual );  //如果存在该ID号的V,则返回其在线性表中的位序,如果不存在返回0
    	if(pos )   
    	{
    		if(ListDelete(L, pos, stu) )
    		{
    			puts("操作成功");
    			return;
    		}
    	}
    	
    	puts("操作失败" );
    }
    
    
    
    //修改员工成绩,根据ID号决定修改哪个员工的成绩
    void ModifyStu(ListType  L)
    {
    	int pos;
    	ElemType stu;
    	
    	printf("请输入员工的ID号(不超过15位):" );
    	getchar();  //吃掉前面的回车键,否则后面的字符串输入时会出错
    	gets(stu.ID );
    	printf("请输入员工的姓名(不超过15位):" );
    	gets(stu.name );
    	printf("请输入员工的性别(输入M/W):" );
    	scanf("%c",&stu.sex);
    	printf("请输入员工的年龄:" );
    	scanf("%d",&stu.age);
    	printf("请输入员工的电话(不超过20位):" );
    	getchar();  //吃掉前面的回车键,否则后面的字符串输入时会出错
    	gets(stu.phone);
    	printf("请输入员工的地址(不超过100位):" );
    	gets(stu.address);
    	printf("请输入员工的电子邮件(不超过50位):" );
    	gets(stu.email);
    	printf("请输入员工的工资(不超过10位):" );
    	gets(stu.pay);
    	printf("请输入员工的工龄:" );
    	scanf("%d",&stu.workingyears);
    	getchar();  //吃掉前面的回车键,否则后面的字符串输入时会出错
    	printf("请输入员工的所在部门:" );
    	gets(stu.office);
    	
    	pos = LocateElem(L, stu, IsEqual );
    	if(pos > 0 )
    	{
    		ListModify(L, pos, stu );
    		puts("操作成功" );
    	}
    	else
    	{
    		puts("操作失败" );
    	}
    	
    	
    }
    
    
    
    
    
    
    //根据学号查询某个员工的成绩
    void chkStu(ListType  L)
    {
    	int pos;
    	ElemType stu;
    	
    	printf("请输入员工的ID号(不超过15位):" );
    	getchar();  //吃掉前面的回车键,否则后面的字符串输入时会出错
    	gets(stu.ID );
    	
    	if(pos = LocateElem(L, stu, IsEqual) )
    	{
    		GetElem(L, pos, stu );
    		PrntOneStu(stu );
    	}
    	else
    	{
    		puts("操作失败" );
    	}
    	
    }
    
    
    
    //根据姓氏查询某个员工的成绩
    void chkStuname(ListType  L)
    {
    	int pos;
    	ElemType stu;
    	
    	printf("请输入员工的姓氏(不超过15位):" );
    	getchar();  //吃掉前面的回车键,否则后面的字符串输入时会出错
    	gets(stu.name);
    	
    	if(pos = LocateElem(L, stu, IsEqual2) )
    	{
    		GetElem(L, pos, stu );
    		PrntOneStu(stu );
    	}
    	else
    	{
    		puts("操作失败" );
    	}
    	
    }
    
    
    //成绩统计,统计全体员工的平均成绩
    /*void StateScore(ListType  L)
    {
    float  total[2] = {0.0, 0.0};
    int num = 0;
    ElemType  e;
    
      while(GetElem(L, num+1, e ) )  //GetElem(...)返回值为FALSE时说明没有位序为num+1的数据
      {
    		num++;
    		total[0] += e.score[0];
    		total[1] += e.score[1];
    		}
    		
    		  if(num > 0 )
    		  {
    		  printf("平均成绩分别为:%.2f, %.2f\n", total[0]/num, total[1]/num );
    		  }
    		  else
    		  {
    		  puts("没有数据信息" );
    		  }
    		  
    			
    }*/
    
    
    
    //打印一个员工的信息
    //调用ListTraverse()函数的时候,将该函数的名字作为第二个参数传递给visit
    STATUS  PrntOneStu(ElemType  stu )
    {
    	printf("ID号:%s 姓名:%s 性别:%c 年龄:%d 电话:%s 地址:%s 电子邮件:%s 工资:%s 工龄:%d 所在部门:%s\n", stu.ID, stu.name, stu.sex,stu.age,stu.phone,stu.address,
    		stu.email,stu.pay, stu.workingyears ,stu.office);
    	
    	return OK;
    }
    
    
    
    
    
    //打印所有学生信息
    void PrntAll(ListType  L)
    {
    	
    	ListTraverse(L, PrntOneStu );
    	
    }
    
    //用于做新的链表 
    
    //按ID排序
    void sortbyID(struct lnode *head)
    {
    	struct lnode *p1,*p2,*l;
    	
    	l=(struct lnode *)malloc(sizeof(struct lnode));                  
    	l->next=NULL;
    	
    	for (p1=head;p1->next!=NULL;p1=p1->next)
    	{
    		for (p2=p1->next;p2!=NULL;p2=p2->next)
    		{
    			if (strcmp(p1->data.ID,p2->data.ID)==-1)
    			{
    				l->data=p1->data;
    				p1->data=p2->data;
    				
    				p2->data=l->data;
    				
    				
    			}
    		}
    	}
        printf("降序排序成功\n");
    	PrntAll(head);
    		  
    }
    
    
    //按姓名排序
    void sortbyname(struct lnode *head)
    {
    	struct lnode *p1,*p2,*l;
    	
    	l=(struct lnode *)malloc(sizeof(struct lnode));                  
    	l->next=NULL;
    	
    	for (p1=head;p1->next!=NULL;p1=p1->next)
    	{
    		for (p2=p1->next;p2!=NULL;p2=p2->next)
    		{
    			if (strcmp(p1->data.name,p2->data.name)==-1)
    			{
    				l->data=p1->data;
    				p1->data=p2->data;
    				
    				p2->data=l->data;
    				
    				
    			}
    		}
    	}
        printf("降序排序成功\n");
    	PrntAll(head);
    		  
    }
    
    //按性别分类显示信息
    void sortbysex(struct lnode *head)
    {
    	struct lnode *p1,*p2,*l;
    	
    	l=(struct lnode *)malloc(sizeof(struct lnode));                  
    	l->next=NULL;
    	
    	for (p1=head;p1->next!=NULL;p1=p1->next)
    	{
    		for (p2=p1->next;p2!=NULL;p2=p2->next)
    		{
    			if (p1->data.sex>p2->data.sex)
    			{
    				l->data=p1->data;
    				p1->data=p2->data;
    				
    				p2->data=l->data;
    				
    				
    			}
    		}
    	}
        PrntAll(head);
    		  
    }
    
    
    //按年龄分类显示信息
    void sortbyage(struct lnode *head)
    {
    	struct lnode *p1,*p2,*l;
    	
    	l=(struct lnode *)malloc(sizeof(struct lnode));                  
    	l->next=NULL;
    	
    	for (p1=head;p1->next!=NULL;p1=p1->next)
    	{
    		for (p2=p1->next;p2!=NULL;p2=p2->next)
    		{
    			if (p1->data.age>p2->data.age)
    			{
    				l->data=p1->data;
    				p1->data=p2->data;
    				
    				p2->data=l->data;
    				
    				
    			}
    		}
    	}
        PrntAll(head);
    		  
    }
    
    
    //按电话分类显示信息
    void sortbyphone(struct lnode *head)
    {
    	struct lnode *p1,*p2,*l;
    	
    	l=(struct lnode *)malloc(sizeof(struct lnode));                  
    	l->next=NULL;
    	
    	for (p1=head;p1->next!=NULL;p1=p1->next)
    	{
    		for (p2=p1->next;p2!=NULL;p2=p2->next)
    		{
    			if (strcmp(p1->data.phone,p2->data.phone)==-1)
    			{
    				l->data=p1->data;
    				p1->data=p2->data;
    				
    				p2->data=l->data;
    				
    				
    			}
    		}
    	}
        PrntAll(head);
    		  
    }
    
    
    //按地址分类显示信息
    void sortbyaddress(struct lnode *head)
    {
    	struct lnode *p1,*p2,*l;
    	
    	l=(struct lnode *)malloc(sizeof(struct lnode));                  
    	l->next=NULL;
    	
    	for (p1=head;p1->next!=NULL;p1=p1->next)
    	{
    		for (p2=p1->next;p2!=NULL;p2=p2->next)
    		{
    			if (strcmp(p1->data.address,p2->data.address)==-1)
    			{
    				l->data=p1->data;
    				p1->data=p2->data;
    				
    				p2->data=l->data;
    				
    				
    			}
    		}
    	}
        PrntAll(head);
    		  
    }
    
    
    //按工资分类显示信息
    void sortbypay(struct lnode *head)
    {
    	struct lnode *p1,*p2,*l;
    	
    	l=(struct lnode *)malloc(sizeof(struct lnode));                  
    	l->next=NULL;
    	
    	for (p1=head;p1->next!=NULL;p1=p1->next)
    	{
    		for (p2=p1->next;p2!=NULL;p2=p2->next)
    		{
    			if (strcmp(p1->data.pay,p2->data.pay)==-1)
    			{
    				l->data=p1->data;
    				p1->data=p2->data;
    				
    				p2->data=l->data;
    				
    				
    			}
    		}
    	}
        PrntAll(head);
    		  
    }
    //按邮件地址分类显示信息
    void sortbyemil(struct lnode *head)
    {
    	struct lnode *p1,*p2,*l;
    	
    	l=(struct lnode *)malloc(sizeof(struct lnode));                  
    	l->next=NULL;
    	
    	for (p1=head;p1->next!=NULL;p1=p1->next)
    	{
    		for (p2=p1->next;p2!=NULL;p2=p2->next)
    		{
    			if (strcmp(p1->data.email,p2->data.email)==-1)
    			{
    				l->data=p1->data;
    				p1->data=p2->data;
    				
    				p2->data=l->data;
    				
    				
    			}
    		}
    	}
        PrntAll(head);
    		  
    }
    
    //按部门分类显示信息
    void sortbyoffice(struct lnode *head)
    {
    	struct lnode *p1,*p2,*l;
    	
    	l=(struct lnode *)malloc(sizeof(struct lnode));                  
    	l->next=NULL;
    	
    	for (p1=head;p1->next!=NULL;p1=p1->next)
    	{
    		for (p2=p1->next;p2!=NULL;p2=p2->next)
    		{
    			if (strcmp(p1->data.office,p2->data.office)==-1)
    			{
    				l->data=p1->data;
    				p1->data=p2->data;
    				
    				p2->data=l->data;
    				
    				
    			}
    		}
    	}
        PrntAll(head);
    		  
    }
    
    //按密码进入系统
    void password()
    {
    	char password[7]="123456"; 
    
    	int choice; 
    	char s[7]; 
    	int flag=0; 
    	int n=3; 
    	do 
    	{ 
    		printf("请你输入密码:\n"); 
    		scanf("%s",s); 
    		if(strcmp(s,password)==0)//若密码正确 
    		{ 
    			printf("恭喜你成功登陆了\n\n\n"); 
    			flag=1; 
    			
    			break; 
    		} 
    		else 
    		{ 
    			printf("输入有错误请重新输入:\n"); 
    			n--; 
    		} 
    	}while(n>0); 
    	
    	if(!flag) 
    	{ 
    		printf("哈哈,O(∩_∩)O哈!,想暴力破解是行不通的\n"); 
    		puts("若有有问题留言区交流");
    		exit(0); 
    
    	}
    }

    做报告课程设计也是在网上找到了很多好的资源,感谢原作者的分享,现在也记不清名字啦,不过也学习网友们的无私奉献精神,把资料分享给大家,帮助更多的朋友吧

    相关文章推荐:

    1、 C语言学生成绩管理系统源代码 ★★★★★

    2、 C语言学籍管理系统源代码 ★★

    3、C语言学生成绩管理系统设计 《C语言程序设计》实训报告 ★★★

    4、C语言学生信息管理系统源代码 ★★★

    感谢阅读!

    更多相关内容
  • 员工管理数据库设计

    万次阅读 多人点赞 2019-07-06 20:56:52
    员工管理数据库系统,助于为对员工数量增多,信息量增大,以及员工部门分配,工资发放等问题实现现代、化网络化管理,能够提高企业管理效率,提高准确度,节约企业成本,提高生产效率。 通过该课题可以熟悉...

    一、课题背景和目的

    员工管理数据库系统,有助于为对员工数量增多,信息量增大,以及员工部门分配,工资发放等问题实现现代、化网络化管理,能够提高企业管理效率,提高准确度,节约企业成本,提高生产效率。

    通过该课题可以熟悉PowerDesigner设计数据库的流程,巩固数据库的设计规则和设计原理,以及对数据库进行多种逻辑查询。

     

    二、数据库的需求分析

    通过设计数据库实现对企业员工的基本信息、职位、所属项目、工资等数据进行存储、查询和管理。数据库需要存储员工的基本信息如员工编号、身份证号、联系方式、所属部门信息、工资信息等,还要对员工参与的项目信息进行存储,如项目编号,项目名称,项目起止时间等。

    系统开发首先通过PowerDesigner设计物理模型,并将设计好的模型转换为可执行的SQL代码。通过SQL Server 创建数据库,并加入相关数据,在数据库中完成查询管理工作。

    系统的开发过程中使用 PowerDesigner16.5和 SQL Server 2014实现。

     

    三、数据库概念模型构造

    模型中包含五个实体,实体名称以及属性如下:

    员工信息表:员工编号、员工姓名、身份证号、性别、手机号、邮箱;

    公司部门表:部门编号、部门名称、负责人工号;

    部门职位表:职位编号、职位名称;

    项目表:项目编号、项目名称、开启时间、结束时间;

    工资表:出纳编号、基本工资、五险一金、绩效奖金、补贴、加班费。

    (以上加有下划线的属性为表的主键属性)

    根据以上实体设计的数据库系统ER图如下图图1所示:

    图 1系统ER图

    四、数据库逻辑设计说明

    一个公司部门中可以包含多个员工,每个员工只能属于一个公司部门,因此员工与公司部门的关系为N:1.

    一个公司部门内可以多个职位,每个特定职位只能属于一个部门,因此公司部门与部门职位的关系为1:N.

    每个员工可以属于不同部门的相同职位,及同一个职位可以对应多个员工,而每个员工只能由一个职位,因此部门职位与员工的关系为1:N.

    每个员工都对应一个工资单,每个工资单只能属于一个员工,因此员工表与工资表的关系是1:1.

    每个员工可以参与多个项目,每个项目可以由多个员工参与,因此员工表与项目表的关系是N:M.

     

    五、数据库物理设计说明

    1:1的关系如员工信息表和工资表,可将员工信息表的主键设置为工资表的外键,也可将工资表的主键设置为员工信息表的外键

    1:N的关系如公司部门表和员工信息表,公司部门表为1的一方,员工信息表为N的一方,需要将公司部门表的主键设为员工信息表的外键。

    M:N的关系如员工信息表和项目表,需要建立一个联系表(员工和项目关系表)将员工信息表的主键和项目表的主键分别设为员工和项目关系表的外键。

    系统设计物理模型图如下图图2所示:

    图 2物理模型图

     

    六、数据库及表的创建实施过程

    通过PowerDesigner生成可执行的SQL文件,其操作过程如下图图3所示:

    图 3生产SQL文件

    在SQL server 2014 中创建一个EmploySystem数据库,然后在该数据库中运行PowerDesginer生产的SQL文件,来创建表,SQL代码如下图所示:

    图 4SQL代码

    表的结构生成后,需要为每个表添加数据,截图如下:

    公司部门表数据如图5:

    图 5公司部门表

    员工信息表数据如图6:

    图 6员工信息表

    部门职位表数据如图7:

    图 7部门职位表

    项目表数据如图8:

    图 8项目表

    员工和项目关系表数据如图9:

    图 9员工和项目关系表

    工资表数据如图10:

    图 10工资表

    七、涉及到相关业务逻辑的单表查询及多表查询

    (1)查询所有员工信息:

    SQL语句如下:

    select * from Employee_info

    执行结果如下:

    (2)查询20100101员工的工资信息:

    SQL语句如下:

    select * from Salary_info where employee_id='20100101'

    执行结果如下:

     

    (3)查询20100101员工所在的部门和职位:

    SQL语句如下:

    select employee_id, deparment_name , position_name

    from Department_info ,position_info, Employee_info

    where  employee_id='20100101' and Employee_info.department_number = Department_info.department_number

         and position_info.position_number = Employee_info.position_number

    执行结果如下:

     

    (4)查询20100101员工所分配的项目:

    SQL语句如下:

    select Employee_info.employee_id, employee_name, Project_info.project_number, project_name

    from Employee_info ,Project_info, employee_project_r

    where  Employee_info.employee_id='20100101' and Employee_info.employee_id=employee_project_r.employee_id

             and employee_project_r.project_number = Project_info.project_number

    执行结果如下:

     

    八、涉及到相关业务逻辑的存储过程和触发器设计

    (1)创建存储过程“stuff_pr”,查询员工号为“20100101”的员工所有的相关信息

    SQL语句如下:

    create procedure stuff_pr as

    select distinct * from Employee_info as e

       left join Department_info on e.department_number = Department_info.department_number

       left join position_info on e.position_number = position_info.position_number

       left join employee_project_r on e.employee_id = employee_project_r.employee_id

       left join Project_info on employee_project_r.project_number = Project_info.project_number

       left join Salary_info on e.employee_id = Salary_info.employee_id

    where e.employee_id='20100101'

    执行结果如下:

    SQL语句如下:

    exec stuff_pr

     

    (2)创建触发器“project_del”,当删除项目表里的项目时,对应的雇员与项目关系表中的数据也同时删除。

    SQL语句如下:

    create trigger ep_project_del

    on employee_project_r

    after delete

    as

    if exists(select * from Project_info,deleted where Project_info.project_number = deleted.project_number)

      begin

           delete from Project_info

           where Project_info.project_number in (select project_number from deleted)

      end

     

    执行结果如下:

    SQL语句如下:

    delete from employee_project_r

    where project_number = '1901'

    执行结果如下:

    SQL语句如下:

    select * from employee_project_r

    执行结果如下:

    SQL语句如下:

    select * from Project_info

    执行结果如下:

     

    九、心得体会

    通过本次数据设计,熟悉了PowerDesigner设计数据库的流程,更加深化了对数据库的设计规则和设计原理的理解,提高了动手设计数据库的能力。通过对数据库中简单少数数据的操作验证了数据库设计的合理性,在实际项目中可以通过验证来完善数据库。

    在对数据库进行操作的过程中,提高了对SQL语句的掌握程度,加深了对存储过程和触发器的理解。通过数据库来管理和查询数据能够很大程度地提高工作效率。

     

    十、相关参考文献

    [1]雷景生,叶文珺,楼越焕.数据库原理及应用(第2版)[M].北京:清华大学出版社,2015

     

    展开全文
  • 基于Java+springmvc+mysql+jquery实现企业员工管理系统

    千次阅读 多人点赞 2021-08-01 12:47:39
    员工管理: 系统管理: 数据库表设计: 用户表: 部门表: 人员表: 职位表: 总结: 下载完整项目 推荐阅读文章 查看更多博主首页更多实战项目 >>> 企业员工信息管理系统 一、绪论 2 1.1 ...

    作者主页:Java李杨勇 

     简介:Java领域优质创作者、【Java李杨勇】公号作者  简历模板、学习资料、面试题库、技术互助【关注我,都给你】 

    文末获取源码

    目录

    研究背景 

    系统功能概述

    主要功能:

    用户登录:

    主页功能:

    部门管理:

    职位管理:

    员工管理:

    系统管理:

    数据库表设计:

    用户表:

    部门表:

    人员表:

    职位表:

     总结:

    下载完整项目

    推荐阅读文章

    查看更多博主首页更多实战项目 >>>


    企业员工信息管理系统 

    一、 绪论 2

    1.1 研究背景 2

    1.2目的和意义 3

    1.2研究的目标与内容 3

    1.3项目的可行性研究设计 3

    1.4技术可行性 3

    spring 4

    Spring MVC 4

    mybatis 5

    jQuery 5

    c3p0 6

    Mysql 6

    二、 需求分析 8

    2.1系统功能概述 8

    2.2系统运行环境 8

    2.3功能需求描述 9

    2.4技术难点 9

    springmvc解决中文乱码: 9

    启动tomcat服务器时报错: 10

    三、 系统设计 11

    3.1系统设计 11

    3.2系统模块总体架构构图 11

    3.3模块设计 11

    3.4系统流程描述 11

    3. 5项目源码架构 12

    四、 系统实现 13

    4.1 程序主要类 13

    4.1.1用户实体类 14

    4.1.2部门类 14

    4.1.3员工类 15

    4.1.4职位类 16

    4.3系统功能主要实现模块截图 18

    4.3.1登陆页面 18

    4.3.2 主页面 19

    4.3.4部分关键源码展示: 23

    4.4数据库表设计 32

    4.4.0数据库三范式要求: 32

    4.4.1数据库表ER图 34

    4.4.2用户表设计 34

    4.4.3部门表设计 35

    4.4.4员工表设计 35

    4.4.5职位表设计 35

    4.4.6数据库sql文件 35

    五.系统开发总结心得与体会 38

    六、参考献文 38

    研究背景 

       计算机网络技术的发展,给信息时代的人们带来了很大的方便。如今在Internet上,随处都可以看到种类繁多的信息管理系统,比如,企业办公化自动管理系统,电子商务系统,高校教务管理系统等等。随着信息技术的日益发展已深入到社会的各个角落,各个大的企业,都充分意识到传统的手工管理模式已经逐渐不能适应时代的发展,为了更好的发展,纷纷开发适合自己的管理系统。不管大企业。各种员工信息的小企业也是如此,企业的管理层也深深意识到这一点,以前管理大多为手工管理,效率低、易出错、手续繁琐,而且耗费大量的人力,物力,财力。他们希望有一个适合自己的管理系统,能够实现员工信息管理,部门管理,请假管理,考勤管理等功能。通过此系统,管理者可以对员工的信息做出及时的修改,通过电脑的数字化管理,方便的管理员工信息,这样可以提高工作效率,解放管理员的双手,也使得管理员工信息所需的各项信息能方便快速进行录入,查询和更新,各种功能能够相应的实现,对相应关键数据也能够方便的统计结果。
      当前大量企业的员工管理不能及时的对员工的信息做出修改,管理员与员工之间不能进行良好的互动,尚需要进行手工传达信息,不但效率低下还常常因为信息不能及时的传达下去而造成损失。因此大多数企业需要设计一个高效的企业员工信息管理系统以帮助企业对员工进行更好、更快的管理,加强上级与下级之间的联系,达到提高企业工作效率的目的。员工信息管理系统设计的主要目的是对企业员工的信息进行集中管理,方便对员工的信息进行及时的更新,上级的命令能够准确、高效的传达下去,方便企业建立一个高效的、准确的员工信息数据库。它是以SQL 数据库作为开发平台,使用jsp编写程序完成数据的各项功能并使用SQL数据库形成数据进行数据存储。

    系统功能概述

    1.能够对部门信息进行管理,方便添加、 修改、删除部门信息,来适应企业今后的发展;
    2.对员工信息进行管理,方便对员工的归属部门,以及员工的基本信息进行录入、管理等操作,实现规范化管理;
    3. 对职位信息的添加、修改、删除等操作
    4.保证员工信息的安全、完整,避免造成信息的泄漏, 员工造成不必要的损失。

    5.对员工数据进行Excel导出功能

    6.用户注销退出

    主要功能:

    用户登录:

    登录代码

    <title>企业员工信息管理平台</title>
    
    <link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css" />
    <link rel="stylesheet" type="text/css" href="easyui/themes/icon.css" />
    <link rel="stylesheet" type="text/css" href="css/login.css" />
    </head>
    <body>
    
    
    <div id="login">
    	<p>登录帐号:<input type="text"  id="manager" class="textbox"></p>
    	<p>登录密码:<input type="password" id="password" class="textbox"></p>
    	<p> <font color="#999">记住账号</font>
    		<input  id="saveid" type="checkbox"  onclick="savePaw();"  />
    	</p>
    	 
    </div>
    
    <div id="btn">
    	<a href="#" class="easyui-linkbutton">登录</a>
    </div>
    

    主页功能:

    首页main.jsp页面

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <jsp:include page="check_logstate.jsp"/>
     
    <!DOCTYPE html>
    <html>
    <head>
    <title>信息管理系统</title>
    <meta charset="UTF-8" />
    <link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css" />
    <link rel="stylesheet" type="text/css" href="easyui/themes/icon.css" />
    <link rel="stylesheet" type="text/css" href="css/admin.css" />
    </head>
    <body class="easyui-layout">
    
    <div data-options="region:'north',title:'header',split:true,noheader:true" style="height:60px;background-color:#01B1EA;">
    	<div class="logo">企业员工后台信息管理系统</div>
    	<div class="logout">您好,<%=session.getAttribute("username")%> | <a href="logout">退出</a></div>
    </div>   
    <div data-options="region:'south',title:'footer',split:true,noheader:true" style="height:35px;line-height:30px;text-align:center;">
    	&copy; Powered by dashen
    </div>    
    <div data-options="region:'west',title:'导航',split:true,iconCls:'icon-world'" style="width:200px;padding:10px;">
    	<ul id="nav"></ul>
    </div>   
    <div data-options="region:'center'" style="overflow:hidden;">
    	<div id="tabs">
    		<div title="起始页" iconCls="icon-house" style="padding:0 10px;display:block;font-size:70px">
    			<br/><br/> <center>欢迎来到企业员工后台信息管理系统!</center>
    		</div>
    	</div>
    </div> 
    
    
    <script type="text/javascript" src="easyui/jquery.min.js"></script>
    <script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
    <script type="text/javascript" src="easyui/locale/easyui-lang-zh_CN.js" ></script>
    <script type="text/javascript" src="js/admin.js"></script>
    </body>
    </html>
    

    部门管理:

    <div id="department_manage_tool" style="padding:5px;">
    	<div style="margin-bottom:5px;">
    		<a href="#" class="easyui-linkbutton" iconCls="icon-edit-new" plain="true" onclick="department_manage_tool.edit();">修改</a>
    		<a href="#" class="easyui-linkbutton" iconCls="icon-delete-new" plain="true" onclick="department_manage_tool.remove();">删除</a>
    		<a href="#" class="easyui-linkbutton" iconCls="icon-reload" plain="true"  onclick="department_manage_tool.reload();">刷新</a>
    		<a href="#" class="easyui-linkbutton" iconCls="icon-redo" plain="true" onclick="department_manage_tool.redo();">取消选择</a>
    		<a href="#" class="easyui-linkbutton" iconCls="icon-export" plain="true" onclick="department_manage_tool.exportExcel();">导出到excel</a>
    	</div>
    	<div style="padding:0 0 0 7px;color:#333;">
    		<form id="departmentQueryForm" method="post">
    		</form>	
    	</div>
    </div>
    
    <div id="departmentEditDiv">
    	<form id="departmentEditForm" enctype="multipart/form-data"  method="post">
    		<div>
    			<span class="label">部门编号:</span>
    			<span class="inputControl">
    				<input class="textbox" type="text" id="department_departmentNo_edit" name="department.departmentNo" style="width:200px" />
    			</span>
    		</div>
    		<div>
    			<span class="label">部门名称:</span>
    			<span class="inputControl">
    				<input class="textbox" type="text" id="department_departmentName_edit" name="department.departmentName" style="width:200px" />
    
    			</span>
    
    		</div>
    	</form>
    </div>

    职位管理:

    <div id="employeeEditDiv">
    	<form id="employeeEditForm" enctype="multipart/form-data"  method="post">
    		<div>
    			<span class="label">员工编号:</span>
    			<span class="inputControl">
    				<input class="textbox" type="text" id="employee_employeeNo_edit" name="employee.employeeNo" style="width:200px" />
    			</span>
    		</div>
    		<div>
    			<span class="label">职位:</span>
    			<span class="inputControl">
    				<input class="textbox"  id="employee_positionObj_positionId_edit" name="employee.positionObj.positionId" style="width: auto"/>
    			</span>
    		</div>
    		<div>
    			<span class="label">姓名:</span>
    			<span class="inputControl">
    				<input class="textbox" type="text" id="employee_name_edit" name="employee.name" style="width:200px" />
    
    			</span>
    
    		</div>
    		<div>
    			<span class="label">性别:</span>
    			<span class="inputControl">
    				<select id="employee_sex_edit" name="employee.sex" >
    					<option value="男">男</option>
    					<option value="女">女</option>
    				</select>
    			</span>
    
    		</div>
    		<div>
    			<span class="label">员工照片:</span>
    			<span class="inputControl">
    				<img id="employee_employeePhotoImg" width="200px" border="0px"/><br/>
        			<input type="hidden" id="employee_employeePhoto" name="employee.employeePhoto"/>
    				<input id="employeePhotoFile" name="employeePhotoFile" type="file" size="50" />
    			</span>
    		</div>
    		<div>
    			<span class="label">出生日期:</span>
    			<span class="inputControl">
    				<input class="textbox" type="text" id="employee_birthday_edit" name="employee.birthday" />
    
    			</span>
    
    		</div>
    		<div>
    			<span class="label">学历:</span>
    			<span class="inputControl">
    				<select id="employee_schoolRecord_edit" name="employee.schoolRecord">
    					<option value="小学">小学</option>
    					<option value="初中">初中</option>
    					<option value="高中">高中</option>
    					<option value="大专">大专</option>
    					<option value="本科">本科</option>
    					<option value="硕士">硕士</option>
    					<option value="博士">博士</option> 
    				</select>
    			</span>
    
    		</div>
    		<div>
    			<span class="label">员工介绍:</span>
    			<span class="inputControl">
    				<textarea id="employee_employeeDesc_edit" name="employee.employeeDesc" rows="8" cols="60"></textarea>
    
    			</span>
    
    		</div>
    	</form>
    </div>

    员工管理:

    系统管理:

    数据库表设计:

    用户表:

    CREATE TABLE `NewTable` (
    `username`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' ,
    `password`  varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
    PRIMARY KEY (`username`)
    )
    ENGINE=InnoDB
    DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
    ROW_FORMAT=COMPACT
    ;
    
    

    部门表:

    CREATE TABLE `NewTable` (
    `departmentNo`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'departmentNo' ,
    `departmentName`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '部门名称' ,
    PRIMARY KEY (`departmentNo`)
    )
    ENGINE=InnoDB
    DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
    ROW_FORMAT=COMPACT
    ;
    
    

    人员表:

    CREATE TABLE `NewTable` (
    `employeeNo`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'employeeNo' ,
    `positionObj`  int(11) NOT NULL COMMENT '职位' ,
    `name`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '姓名' ,
    `sex`  varchar(4) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '性别' ,
    `employeePhoto`  varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '员工照片' ,
    `birthday`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '出生日期' ,
    `schoolRecord`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '学历' ,
    `employeeDesc`  varchar(5000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '员工介绍' ,
    PRIMARY KEY (`employeeNo`),
    FOREIGN KEY (`positionObj`) REFERENCES `t_position` (`positionId`) ON DELETE RESTRICT ON UPDATE RESTRICT,
    INDEX `positionObj` (`positionObj`) USING BTREE 
    )
    ENGINE=InnoDB
    DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
    ROW_FORMAT=COMPACT
    ;
    
    

    职位表:

    CREATE TABLE `NewTable` (
    `positionId`  int(11) NOT NULL AUTO_INCREMENT COMMENT '职位id' ,
    `departmentObj`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '所属部门' ,
    `positionName`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '职位名称' ,
    `baseSalary`  float NOT NULL COMMENT '基本工资' ,
    `sellPercent`  varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '销售提成' ,
    PRIMARY KEY (`positionId`),
    FOREIGN KEY (`departmentObj`) REFERENCES `t_department` (`departmentNo`) ON DELETE RESTRICT ON UPDATE RESTRICT,
    INDEX `departmentObj` (`departmentObj`) USING BTREE 
    )
    ENGINE=InnoDB
    DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
    AUTO_INCREMENT=5
    ROW_FORMAT=COMPACT
    ;
    
    

     总结:

     经过近期对 java 面向对象程序设计、前端知识以及JAVA ssm框架的掌握和学习,让我更加了解到 java 学习的重要性。在开发这个系统是哪个,我完成多个实验以及测试,在这个阶段的学习开发中,我从认识到熟悉,而后到能够自主运用。通过对 java 相关的了解,我发现它确实有很多方便之处,它集抽象性、封装性、继承性和多态性于一体,实现了代码重用和代码扩充,提高了软件开发的效率。对于我们这个专业来说学好 java 语言是很重要的,所以在开发这个项目的过程中我都尽力理解 java 编程思想、掌握基本技巧,尽量学到最多的知识。 我学习程序设计的基本目的就是培养描述实际问题的程序化解决方案的关键技能, java 面向对象程序设计是一门实践性比较强的语言、springMVC框架的MVC三层架构、将数据访问和逻辑操作都集中到组件中 , 增强了系统的复用性。使系统的扩展性大大增强。以及前端jQuery、js、css样式的掌握让我对网页的布局、样式调整、字体等让网页效果实现的更加精准。

    下载项目

    推荐阅读:

    基于java+springboot+mybatis+laiyu实现学科竞赛管理系统

    基于java ssm springboot+VUE疫情防疫系统系统前后端分离设计和实现

    基于java springboot+mybatis电影售票网站管理系统前台+后台设计和实现

    基于java ssm springboot+mybatis酒庄内部管理系统设计和实现

    基于JAVA springboot+mybatis智慧生活分享平台设计和实现

    基于Java springboot+vue+redis前后端分离家具商城平台系统设计和实现

    查看更多博主首页更多实战项目 >>>

    获取源码:

    总体来说这个项目功能相对还是比较简单优秀的、适合初学者作为课程设计和毕业设计参考 

    查看下方微信公众号获取联系方式~

    精彩系列推荐

    Java毕设项目精品实战案例《100套》

    HTML5大作业实战案例《100套》

    展开全文
  • C语言员工信息管理系统

    千次阅读 多人点赞 2022-03-06 19:13:51
    题目:员工信息管理系统 总体设计:1.实现添加功能,即添加员工的相关信息。 2.实现查看功能,即显示系统中所有员工的相关信息。 3.实现查找功能,即可以通过多种条件对员工进行查询。 4.实现修改功能,即输入...

    1.题目及总体设计

    题目:员工信息管理系统

    总体设计:1.实现添加功能,即添加员工的相关信息。

    2.实现查看功能,即显示系统中所有员工的相关信息。

    3.实现查找功能,即可以通过多种条件对员工进行查询。

    4.实现修改功能,即输入员工的姓名修改其相关信息。

    5.实现删除功能,即输入员工的姓名删除其相关信息。

    6.退出系统。

    2.各个模块详细的功能描述

    (1).输入员工信息功能模块:用struct Employee * Create(),void Add(struct Employee * pHead)函数实现将用户从键盘输入的数据存储到对应字段或数据成员中,并检查输入的合法性。

    (2).显示员工信息功能模块:调用void Show(struct Employee * pHead); void ShowLine();void ShowHead(int iType); void ShowMainMenu()函数用户根据提示操作显示系统中已有的员工的相关信息,如果系统中海没有存储员工信息则给出无法显示信息的提示。

    (3).查询员工信息功能模块:调用struct Employee * Search(struct Employee *pHead);函数根据用户输入的待查询记录的关键字,在数据结构中查找该记录,如找到则输出该员工的信息,否则给出无法找到的提示信息。

    (4).修改员工信息功能模块:调用void Modify(struct Employee * pHead);函数,根据用户要求,根据提示操作,找到要修改信息的员工然后修改员工的相关信息,如年龄。工资等。

    (5).删除员工信息功能模块:调用void Delete(struct Employee * pHead);函数,由用户输入选择删除相关的员工的信息。

    (6).退出系统功能模块:在用户执行完相关系统操作之后,退出使用本系统。

    3.测试结果分析与说明

    (1).正常测试数据和运行结果

      第一组:实现添加员工信息并显示员工的信息的功能,操作如下图:

     

      第二组:查询员工信息功能,操作如下图:

      第三组:实现修改员工信息的功能,并显示修改后的员工信息,操作如下图:

       (2).异常测试数据及运行结果

         第一组:添加员工信息后表格不显示,操作如下图:

         第二组:缓冲区空格被gets函数读取,操作如下图:

    4.课程设计小结

    (1).改进方案

        员工信息管理系统中,其功能包括了存储和读写员工的基本信息,例如姓名、年龄、职位、工资等,都有存储记录,和可以再读取,编程也实现由增、删、查、改等的功能,且本系统是基于链表和文件编程实现的,使用和操作本系统基本没问题,达到了一个企业员工基本信息管理的要求。

    但是也存在很多不足之处,首先,本系统的功能还是比较少的,明显的一个就是缺少了排序,例如按员工的姓名或工号的信息排序等,所以修改完善本系统时可以添加排序功能,其次操作界面也有不够完美,所以修改也可以设计更好的界面。

    (2).体会

        的课程设计中,我选定的是编写一个员工信息管理系统,要想完成这个管理系统,首先要分析好系统应具备的功能,要根据要求确定管理系统的这的整体布局结构,然后再一一细化系统的各个功能模块,之后再有思路的编程,通过代码实现,代码完成后,进行跟踪调试程序,将代码的错误的警告都更正,不断的完善代码,加强系统的稳定性和操作性。

        通过这次的课程设计,让我更进一步的掌握C语言链表和文件的使用,通过对企业管理系统功能的分析和确定系统的整体布局结构,然后在遇到不会问题的就通过翻阅书本或问同学解决,这些提高了我整体分析和解决问题的能力,同时在一系列的代码编程中,也使我的代码编程能力有所提高,还有,在完成这次的课程设计也让我深刻的体会到基础很重要,企业员工管理系统看似实现复杂,但是都是基于我们所学的基本知识,所以加强基础是很关键的,在今后的学习中就告诫我们要一步一个脚印,踏踏实实的掌握知识,这次的课程设计让我收获很多,受益匪浅。

    源代码:

    ​
    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
    #include<string.h>
    
    //函数声明
    void ShowMainMenu();
    int  CheckNum(char*pcNotice);
    int CheckAge(char*pcNotice);
    struct Employee * Create();
    void Add(struct Employee * pHead);
    struct Employee * Search(struct Employee *pHead);
    void Modify(struct Employee * pHead);
    void Delete(struct Employee * pHead);
    void ShowLine();
    void ShowHead(int iType);
    struct Employee*Read();
    void Show(struct Employee * pHead);
    
    struct Employee
    {
    	int iNumber;//工号
    	char acName[999];//姓名
        int Age;
        char Sex[999];
    	int fSalary;//薪资
    	struct Employee *pNext;
    };
    
    int  CheckNum(char *pcNotice)
    {
        int Num;
        do
        {
            printf(pcNotice);
            scanf("%d",&Num);
            getchar();
        }while(Num<0);
        return Num;
    }
    int CheckAge(char *pcNotice)
    {
        int iAge;
        do
        {
            printf(pcNotice);
            scanf("%d",&iAge);
        }while(iAge<0);
        return iAge;
    }
    
    void ShowHead(int iType)
    {
        printf("\t\t员工信息管理系统\n");
        if(iType==1)
        {
            printf("\t|工号\t|姓名\t|性别\t|年龄\t|薪资\t\n");
        }
        else if(iType==2)
        {
            printf("\t|工号\t|姓名\t|性别\t|年龄\t|薪资\t\n");
        }
    }
    
    void Show(struct Employee * pHead)
    {
    	struct Employee * pCur = pHead;
    	int i=0;
    	if(pHead==NULL)
    	{
    		printf("======没有员工记录======\n");
    	}
    	else
    	{
    		ShowHead(1);
    		do{
    		    printf("\t|%-6d |%-7s|%-7s|%-7d|%-d\t\n",pCur->iNumber,pCur->acName,pCur->Sex,pCur->Age,pCur->fSalary);
    			ShowLine();
    			pCur=pCur->pNext;
    		}while(pCur!=NULL);
    	}
     }
    
     struct Employee * Create()
    {
    	struct Employee * pHead = NULL, *pTail = NULL, *pTemp,*pCur;
    	int iNum,iFlag;
    	while(1)
    	{
    		while(1)
    		{
    			iNum = CheckNum("请输入员工工号(输入0退出):");
    			if(iNum==0)
    			{
    				printf("添加结束!新表是:\n");
    				Show(pHead);
    				return pHead;
    			 }
    			 iFlag=0;
    			 pCur = pHead;
    			 while(pCur!= NULL)
    			 {
    			 	if(pCur->iNumber==iNum)
    			 	{
    			 		iFlag=1;
    			 		break;
    				 }
    				 pCur = pCur-> pNext;
    			 }
    			 if(iFlag == 1)
    			 {
    			 	printf("工号重复,请再次输入:\n");
    				continue;
    			 }
    			 else
    			      break;
    		}
    		pTemp =(struct Employee *)malloc(sizeof(struct Employee));
    		if(pTemp == NULL)
    		{
    		    printf("\n分配内存失败\n");
    			return NULL;
    		}
    		pTemp->iNumber = iNum;
    		printf("输入员工姓名:");
    		gets(pTemp->acName);
    		printf("请输入性别(男/女):");
            gets(pTemp->Sex);
            printf("请输入薪水:");
            scanf("%d",&pTemp->fSalary);
            //getchar();
            //gets(pTemp->fSalary);
    		pTemp->Age=CheckAge("请输入年龄:");
    
    		pTemp->pNext =NULL;
    
    		if(!pHead)
    		{
    			pHead = pTail = pTemp;
    		}
    		else
    		{
    			pTail->pNext = pTemp;
    			pTail = pTemp;
    		}
    	}
    }
    
    struct Employee * Search(struct Employee *pHead)
     {
     	struct Employee *pCur =pHead;
     	int iNum=0,iItem=0;
    	char acName[10];
    	if(pHead==NULL)
    	{
    		printf("\n=====没有员工记录!======\n");
    		return NULL;
    	 }
    	 printf("\t1:输入员工工号\n\t2:输入员工姓名\n");
    
    	 printf("请输入你的选项:");
    	 scanf("%d",&iItem);
    	 getchar();
    
    	switch(iItem)
    	{
    		case 1:
    		       printf("请输入员工工号:");
    			   scanf("%d",&iNum);
    			   while(pCur!=NULL)
    			   {
    			   	if(iNum ==pCur->iNumber)
    			   	{
    			   	    ShowHead(1);
    			   	  printf("\t|%-6d |%-7s|%-7s|%-7d|%-d\t\n",pCur->iNumber,pCur->acName,pCur->Sex,pCur->Age,pCur->fSalary);
    			   	    ShowLine();
    					return pCur;
    				   }
    				    pCur=pCur->pNext;
    				}
    				if(pCur==NULL)
    				{
    					printf("员工数据未找到!\n");
    				}
    				break;
    		case 2:
    			printf("请输入员工姓名");
    			gets(acName);
    			while(pCur!=NULL);
    			{
    				if(strcmp(acName,pCur->acName)==0)
    				{
    					ShowHead(1);
    					printf("\t|%-6d |%-7s|%-7s|%-7d|%-d\t\n",pCur->iNumber,pCur->acName,pCur->Sex,pCur->Age,pCur->fSalary);
    					ShowLine();
    					return pCur;
    				}
    				pCur=pCur->pNext;
    			 }
    			 if(pCur==NULL)
    			 {
    			 	printf("员工数据未找到!\n");
    			 }
    			 break;
    		default:
    			printf("输入工号数据错误!\n");
    		}
    		return pCur;
     }
    
     void Add(struct Employee * pHead)
    {
    	struct Employee * pCur,*pTail,*pTemp;
    	int iNum,iFlag;
    
    	if(pHead==NULL)
    	{
    		printf( "\n 没有员工数据,请首次创建!\n");
    		return;
    	}
    	pCur = pHead;
    	while(pCur->pNext!=NULL)
    	    pCur = pCur->pNext;
    	pTail =pCur;
    
    	while(1)
    	{
    		while(1)
    		{
    			iNum=CheckNum("请输入员工工号:");
    			if(iNum==0)
    			{
    				printf("添加完成,新的表是:\n");
    				Show(pHead);
    				return;
    			}
    			iFlag=0;
    			 pCur = pHead;
    			 while(pCur!= NULL)
    			 {
    			 	if(pCur->iNumber==iNum)
    			 	{
    			 		iFlag=1;
    			 		break;
    				 }
    				 pCur = pCur-> pNext;
    			 }
    			 if(iFlag == 1)
    			 {
    			 	printf("工号重复,请再次输入:\n");
    				continue;
    			 }
    			 else
    			      break;
    		}
    		pTemp =(struct Employee *)malloc(sizeof(struct Employee));
    		if(pTemp == NULL)
    		{
    			return;
    		}
    		pTemp->iNumber = iNum;
    		printf("输入员工姓名:");
    		gets(pTemp->acName);
    		printf("请输入性别(男/女):");
            gets(pTemp->Sex);
            printf("请输入薪水:");
            scanf("%d",&pTemp->fSalary);
            //getchar();
            //gets(pTemp->fSalary);
    		pTemp->Age=CheckAge("请输入年龄:");
    		pTemp->pNext=NULL;
    		if(!pHead)
    		{
    			pHead = pTail = pTemp;
    		}
    		else
    		{
    			pTail->pNext = pTemp;
    			pTail = pTemp;
    		}
    	}
    }
    
    void Modify(struct Employee * pHead)
     {  struct Employee * pCur=pHead;
     	struct Employee * pTemp=NULL;
    
     	pTemp = Search(pHead);
     	if(pTemp !=NULL)
     	{
     		printf("\n\t请输入新的员工数据!f\t\n");
     		pTemp->iNumber =CheckNum("请输入工号");
    		printf("输入员工姓名:");
    		gets(pTemp->acName);
    		printf("请输入性别(男/女):");
            		gets(pTemp->Sex);
    		pTemp->Age=CheckAge("请输入年龄:");
      		printf("请输入薪水:");
            scanf("%d",&pTemp->fSalary);
    		printf("修改成功!新纪录是:\n");
    		ShowHead(1);
    		printf("\t|%-6d |%-7s|%-7s|%-7d|%-d\t\n",pCur->iNumber,pCur->acName,pCur->Sex,pCur->Age,pCur->fSalary);
    		ShowLine();
    	 }
     }
    
     void Delete(struct Employee * pHead)
    {
    	struct Employee * pTemp=NULL,*pPre = pHead,*pCur = pHead;
    	pTemp = Search(pHead);
    	if(pTemp!=NULL)
    	{
    		if(pHead==pTemp)
    		{
    			pHead =pHead->pNext;
    		}
    		else
    		{
    			while(pCur!=pTemp)
    			{
    				pPre = pCur;
    				pCur = pCur->pNext;
    			}
    			pPre->pNext = pCur->pNext;
    		}
    		free(pTemp);
    		printf("删除成功!剩余的员工数据是:\n");
    		Show(pHead);
    	 }
    }
    
    
    void ShowMainMenu()
    { int i;
        system("cls");
        printf("\n\t\t\t员工信息管理系统\n\n");
        for(i=0;i<80;i++)
        {
            printf("*");
        }
        printf("\n1.输入员工数据\t\t\t\t\t\t5.更改员工数据\t\t\n");
        printf("2.添加员工数据\t\t\t\t\t\t6.删除员工数据\t\t\n");
        printf("3.显示员工数据\t\t\t\t\t\t7.读取员工数据\t\t\n");
        printf("4.查找员工数据\t\t\t\t\t\t8.保存员工数据\t\t\n");
        printf("0.退出程序\n");
        for(i=0;i<80;i++)
        {
            printf("*");
        }
    }
    
    void ShowLine()
    {
    	int i;
    	for(i=0;i<80;i++)
    	{
    		printf("-");
    	}
    	printf("\n");
    }
    
    struct Employee*Read()
    {
     FILE*fp;
     struct Employee*pHead=NULL,*pTemp=NULL,*pCur=NULL;
     char Empsystem[20];
     printf("请输入文件名:");
     gets(Empsystem);
     if((fp=fopen(Empsystem,"rb"))==NULL)
     {
         printf("\n无法打开文件\n");
         return NULL;
     }
     pTemp=(struct Employee*)malloc(sizeof(struct Employee));
     while(fread(pTemp,sizeof(struct Employee),1,fp))
      {
         if(!pHead)
         {
             pHead=pCur=pTemp;
         }
         else
         {
             pCur->pNext=pTemp;
             pCur=pTemp;
         }
         pTemp=(struct Employee*)malloc(sizeof(struct Employee));
       }
       fclose(fp);
       Show(pHead);
       return pHead;
    }
    
    void Save(struct Employee*pHead)
    {
        FILE*fp;
        struct Employee*pCur=pHead;
        int iCount=0;
        char Empsystem[20];
        if(pHead==NULL)
        {
            printf("查无此人!\n");
            return;
        }
        printf("输入文件名:");
        gets(Empsystem);
        if((fp=fopen(Empsystem,"wb"))==NULL)
        {
            printf("\n无法打开文件\n");
            getchar();
            exit(1);
        }
        while(pCur)
        {
            fwrite(pCur,sizeof(struct Employee),1,fp);
            pCur=pCur->pNext;
            iCount++;
        }
        printf("\n======保存完成======\n");
        fclose(fp);
    }
    
    int main()
    {
    struct Employee*pHead=NULL;
    int iItem;
    while (1)
    {ShowMainMenu();
    printf("\n请输入(1-8):");
    scanf("%d",&iItem);
    getchar();
    while(iItem>10||iItem<0)
    {
    scanf("%d",&iItem);
    getchar();
    }
    switch (iItem)
    {
    case 1:pHead=Create(); break;
    case 2:Add(pHead);break;
    case 3:Show(pHead);break;
    case 4:Search(pHead);break;
    case 5:Modify(pHead);break;
    case 6:Delete(pHead);break;
    case 7:pHead = Read();break;
    case 8:Save(pHead);break;
    case 0:exit(0);
    }
    printf("返回主菜单\n");
    getch();
    }
    }
    
    ​

    展开全文
  • 员工考勤管理系统

    千次阅读 多人点赞 2021-05-11 21:39:46
    考情信息管理系统是通过用户的需求描述而制定的员工信息考情管理系统,主要的功能公司人员进行每天打卡签到、签退、请假申请、出差申请等。管理员对员工和部门进行管理(对员工增删改查、对部门的增删改查)、设定...
  • 本项目是一套基于SSM实现的员工管理系统 或 企业员工信息管理系统 或 员工考勤管理系统 或 员工工资管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 详细介绍了该系统的具体...
  • QT实现员工管理系统

    千次阅读 2020-09-12 15:07:01
    最近学习需要做一个员工管理系统的项目。 项目要求是客户端服务器之间进行通信,注册与查询员工信息,因为学过QT就想着用QT来实现以下客户端,C来实现服务器。 下面是我的客户端界面 登陆界面 注册界面 主界面 ...
  • 员工编号管理制度

    万次阅读 2020-12-22 17:50:59
    为进一步规范人员管理,便于人力资源管理各项工作的有序、有效、快速、灵活的开展,加强公司企业文化建设,结合公司的实际情况,特制定本规则。凡公司目前在职的所有门店员工,均按照本规则进行编号调整,以后入职的...
  • C++实现员工信息管理系统

    千次阅读 多人点赞 2021-11-03 22:11:12
    员工信息管理系统 成绩 课 程 设 计 主 要 内 容 【问题描述】 编写一个程序来管理员工信息。通过一个类来存放输入的每一位员工的...
  • 通用员工积分制管理系统软件

    热门讨论 2014-09-05 15:03:31
     在传统管理模式下工作效率低下,执行力弱或由于方式繁琐而得不到很好的实行,老板不知道管理者一天在干些什么,管理不知道员工每天在忙些什么,如果一款软件能解决或这些问题那该多好。在电脑软件高度发达的...
  • python django公司员工管理系统(毕设、课程设计、学习) python django工厂员工管理系统 python django公司员工管理系统 python django采购系统 python django工作流程管理系统 python django公司人员管理系统 ...
  • MyBatis案例一:员工管理系统

    千次阅读 2022-02-24 09:39:02
    在数据库中创建一个employee表,实现以下几个功能: (1) 根据id查询员工信息; (2) 新增员工信息; (3) 根据id修改员工信息; (4) 根据id删除员工信息; (5) 查询所有员工信息; 步骤: 在数据库中创建...
  • 最近学SSH项目整合的员工管理系统,大部分功能都可以实现,但是在员工管理界面对 员工进行编辑保存后,员工的所属部门一栏就会变成空,新增员工的话,那一栏的属性 也会为空,按一下保存就会报Error setting ...
  • 管理者如何对待员工反馈

    千次阅读 2018-06-12 01:57:00
    相信在任何企业、团队中都一定会提倡员工反馈的行为,遇到问题及时向管理层反馈,不仅有利于问题的解决,更能够建立管理者与员工之间的有效沟通渠道。 离职小故事 近来在今日头条上经常看到关于员工离职的文章...
  • 员工管理系统基于狂神老师的SpringBoot教程:https://www.bilibili.com/video/BV1PE411i7CV?p=20 项目所需的资源搜索公众号BaretH 后台回复静态资源获取静态资源: 后台回复员工管理系统获取最终完整项目资源: ...
  • python员工管理系统(基础版)

    千次阅读 2020-03-24 21:29:53
    各位小伙伴们大家好,最近自学python已经差不多把基础学完了,现在运用这些基础知识写了一个简单版本的员工管理系统 因为在大学里我是学过java的,所以,当了一定的基础和熏陶外,真心觉得python比java要简单的多...
  • 员工管理

    千次阅读 2016-06-17 09:26:54
    第一讲:员工流失原因 一、新员工流失原因分析 1、外部“拉力” 外部“拉力”因素——提升的职位、高薪、发展机会等 2、内部“推力” 内部的“推力”因素(缺乏内部提升机会、不合理或不公平的薪酬分配、复杂的人际或...
  • 单位员工通讯录管理系统

    千次阅读 2017-01-23 13:41:07
    1、单位员工通讯录管理系统(线性表的应用) [问题描述] 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。其功能包括通讯录链表的建立、员工通讯信息的查询、...
  • 员工管理系统Android版

    千次阅读 热门讨论 2017-07-21 21:21:53
    Android版的员工管理系统。包括服务器,客户端,及数据库。
  • 展示员工列表1、员工管理2、自定义员工管理页面2、Fragments 页面复用4、侧边栏高亮显示5、员工列表展示 1、员工管理 我们希望在后台页面中的Customers页面中进行所有员工管理的操作 因此,我们修改dashboard.html...
  • 基于员工管理权限系统的数据库设计完整版

    万次阅读 多人点赞 2018-07-02 20:31:36
    设计一个灵活、通用、方便的权限管理系统。 在这个系统中,我们需要对系统的所有资源进行权限控制,那么系统中的资源包括哪些呢?我们可以把这些资源简单概括为静态资源(功能操作、数据列)和动态资源(数据),也...
  • 企业篇之员工工资管理系统(Java+SQL sever实现)

    千次阅读 多人点赞 2020-06-26 11:29:57
    (5)、添加员工工资信息 员工信息由管理员进行添加,管理员通过操作,向数据库中插入增加一个员工信息 (6)、更改员工工资信息 3.2 系统需求说明 系统需求功能框架图: 四、数据库逻辑设计 4.1 ER图 4.2 数据字典 ...
  • 目录员工管理系统1、准备工作1.1、导入资源1.2、编写pojo层1.3、编写dao层2、首页实现2.1、引入Thymeleaf2.2、编写MyMvcConfig2.3、测试首页3、页面国际化3.1、 File Encodings设置3.2、配置文件编写4、登录+拦截器...
  • Java项目员工信息管理系统

    千次阅读 多人点赞 2018-12-20 21:50:47
    该项目名称为“员工信息管理系统”(或“员工收录系统”),主要是通过输入员工的id、姓名信息,实现简单的增删改查功能。 该项目主要在DOS窗口的控制台或者Eclipse的控制台上进行操作。操作界面如下: 该项目的...
  • 数据结构实训——员工管理系统

    千次阅读 多人点赞 2019-01-11 19:40:00
    2 问题分析和任务定义 要求: 每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。 (1) 排序:按不同关键字,对所有员工的信息进行排序。(这里仅按照工号排序) (2) 查询:按特定...
  • 单位员工通讯录管理系统(线性表的应用) [问题描述] 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。其功能包括通讯录链表的建立、员工通讯信息的查询、修改、...
  • 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。 算法思想 建立...
  • 写在前面:欢迎来到「发奋的小张」的博客。我是小张,一名普通的在校大学生...职工管理系统代码 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> struct employ.
  • JavaWeb项目系列(一):员工管理系统(SSH框架)

    万次阅读 多人点赞 2017-07-25 15:33:06
    JavaWeb项目系列(一):员工管理系统(SSH框架) 这是一个员工管理系统,应用的是SSH框架Spring+SpringMVC+Hibernate的项目,重构了之前用纯servlet版本和struts+jsp版本(项目源码在我的github),本次项目...
  • 相信不少主管都遇到过,技术好又不服众管理员工。这让主管很头痛:管了吧,惹着他走人有点舍不得;不管吧,这工作没法开展,其他员工怨气。怎么办?    首先,要区分这个不服从管理,是暂时的,还是持续...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 237,066
精华内容 94,826
关键字:

如何管理有问题的员工