精华内容
下载资源
问答
  • 最近学SSH项目整合的员工管理系统,大部分功能都可以实现,但是在员工管理界面对 员工进行编辑保存后,员工的所属部门一栏就会变成空,新增员工的话,那一栏的属性 也会为空,按一下保存就会报Error setting ...
  • 员工管理数据库设计

    万次阅读 多人点赞 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

     

    展开全文
  • [企业管理]员工生育保障问题的讨论

    千次阅读 2016-06-10 13:41:15
    article/Pregnancy/1082840下面是我当时的回答:其实,就是利益问题管理者不认为这是需要自己承担的费用,而对于员工来说,很可能只是为了孕期的工资收入而不是为了给这家公司创造收入,除此无他。 简而言之,...

    以下内容来自水木的一个讨论帖子:

    http://www.newsmth.net/nForum/#!article/Pregnancy/1082840

    下面是我当时的回答:

    其实,就是利益问题,管理者不认为这是需要自己承担的费用,而对于员工来说,很有可能只是为了孕期的工资收入而不是为了给这家公司创造收入,除此无他。

    简而言之,法律上有一定的弱点,企业是为了盈利的,而孕期或者哺乳期的员工会造成盈利降低,而政府却对此没有任何补贴或者优惠,于是企业就不愿意养人了。

    不仅仅是企业,政府和中科院等事业单位也是如此,我十年前就亲厉一个百人计划女研究员为了减少自己的责任而让自己的女助理(刚怀孕)自己辞职。


    本文补充:

    生育权是公民的基本权利,而企业存在的目的就是盈利,社会责任其实是企业的额外承担并不是主要责任,换句话说,你会要求一个即将倒闭的企业去为社会承担责任么?

    明显不会,那问题就来了,活得好的企业就应该承担责任么?

    实际上是未必的,此事任志强先生曾做过较好的解答,王石先生的解答也很不错,我当时也不理解,曾经跟风骂过王石先生,这里一并道歉,当然,王先生未必知道我骂过他,也未必介意,但对我来说,一向是错则改之,对则坚持。

    因为政府在这方面的责任和执行缺失,使得企业不愿意接收未婚女性,尤其是适龄未婚女性,同比条件下会减少这类女性员工的入职,毕竟企业的主要目的是为了盈利,而不是社会公益服务。

    对于个人来说,我尊重每一个人的权利,十年前,部分因为这些不良研究院的存在我第二次离开了中科院,但是,对于中科院体系来说,我认为是有这种责任的,因此我强烈方案这些非人类的所谓百人假话研究员的存在,更反感这样的非人类居然这几年要去评选院士了!而对于企业,我不认为有。对于个人,我希望从保护自己利益的角度看,女性员工尽量稳定的情况下完成自己的生育考虑,然后再考虑自己的职业变更,尽量减少刚入职就要进行生育而生育后立刻辞职的事情,这对于企业来说损失太大了,真心认为,互相关心,避免任何一方未来极端非预期行为的发生和延续。

    当然,我赞赏在有能力的情况下履行社会责任的企业和企业家,同时,也强烈反感借用这类事情来宣传企业进行不正当牟利的企业和企业家。

    同样对比360和百度,我可以和真小人合作,绝不和伪君子喝茶!大家明白什么意思即可。

    哈哈,说到这里,我的意思表达完了,作为一个技术人员,我绝不想干涉任何非技术的事务,甚至连公司的管理我都没有什么兴趣,所以,这也是我多次逃避的原因吧。

    展开全文
  • 1.测试类 ... import java.util.Scanner; public class Test {  public static void main(String[] args) {... 当员工的时候将员工加入到管理系统  可以根据工号实现对该员工信息查询  可以现实查看所有员工...

    1.测试类

    package com.hzyc.homework;
    import java.util.Scanner;
    
    public class Test {
        public static void main(String[] args) {
        /*员工信息管理系统
        当有新员工的时候将员工加入到管理系统
        可以根据工号实现对该员工信息查询
        可以现实查看所有员工信息
        可以修改员工的薪水
        当员工离职时,可以删除员工信息从管理系统中
    
        可以按照员工薪水从低到高排序
        可以统计员工的平均工资和最低最高工资
        */
        
        
        boolean bol = true;
        Scanner scan = new Scanner(System.in);
        Tools tool = new Tools();
        
        while(bol){
        System.out.println("欢迎进入员工管理系统");
            System.out.println("--------------------请选择以下功能----------------------");
            System.out.println("--------------------1.添加员工信息---------------------");
            System.out.println("--------------------2.根据工号实现对该员工信息查询---------------------");
            System.out.println("--------------------3.查看所有员工信息---------------------");
            System.out.println("--------------------4.修改员工的薪水---------------------");
            System.out.println("--------------------5.删除员工信息---------------------");
            System.out.println("--------------------6.按照员工薪水从低到高排序---------------------");
            System.out.println("--------------------7.统计员工的平均工资和最低最高工资---------------------");
                   System.out.println("--------------------8.退出---------------------");
            
        int i =scan.nextInt();
        switch(i){
        case 1:
          tool.add();
          break;
        case 2:
          tool.check();
         break; 
        case 3:
          tool.allCheck();
         break;
        case 4:
          tool.update();
         break;
        case 5:
          tool.delete();
         break;
        case 6:
          tool.rank(0, tool.aList.size()-1);
          tool.allCheck();
          break;
        case 7:
          tool.statisticsSalary();
         break;
        case 8:
          System.out.println("欢迎使用,已退出");
          bol=false;
        
        }
    }
       }
    
    }

    2.实体类

    package com.hzyc.homework;
    
    
    public class Emp {
       private int id=0;//员工号
       private String name=null;//名字
       private float sal=0;//工资
       
    public int getId() {
    return id;
    }
    public void setId(int id) {
    this.id = id;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public float getSal() {
    return sal;
    }
    public void setSal(float sal) {
    this.sal = sal;
    }
    
      
    
    }

     

    3.工具类

    package com.hzyc.homework;
    
    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class Tools {
        Scanner scan = new Scanner(System.in);
       //成员属性
        ArrayList aList = null;
        
        //构造方法:初始化 不断创造新对象
        public Tools()
        {
        aList = new ArrayList();//注意写法!!
        }
        
        
        //1.添加员工信息
    public void add() {
    for(int i=1;i<=3;i++){
    Emp emp = new Emp();
    System.out.println("请输入员工的id"); 
       emp.setId(scan.nextInt());
       System.out.println("请输入员工姓名");
       emp.setName(scan.next());
       System.out.println("请输入员工工资");
       emp.setSal(scan.nextFloat());
       
       aList.add(emp);//储存员工信息    
    } 
    }
    
    
    //2.根据工号实现对该员工信息查询
    public void check(){
    System.out.println("2.根据工号实现对该员工信息查询");
    System.out.println("请输入员工编号");
    Emp emp1 = (Emp)aList.get(scan.nextInt()-1);
    System.out.println(emp1.getId()+" "+emp1.getName()+" "+emp1.getSal()); 
    }
    
    //3.查看所有员工信息
           public void allCheck() {
        System.out.println("3.查看所有员工信息");
        for(int i = 0; i<=aList.size()-1; i++){
    Emp emp3 = (Emp)aList.get(i);
    System.out.println(emp3.getId()+" "+emp3.getName()+" "+emp3.getSal()); 
    
        } 
    }
        
     //4.修改员工的薪水
    public void update() {
    System.out.println("4.修改员工的薪水");
    System.out.println("请输入员工编号");
    int id = scan.nextInt();
    
    Emp emp4 = (Emp)aList.get(id-1);
    System.out.println(emp4.getId()+" "+emp4.getName()+" "+emp4.getSal());
    
    System.out.println("请输入修改后的工资");
    emp4.setSal(scan.nextInt());
    
    aList.set(id-1, emp4);//修改后所储存的信息
    
    }
    //5.删除员工信息
    public void delete() {
    System.out.println("5.删除员工信息。----请输入员工编号:");
    
    int id = scan.nextInt();
    Emp emp5 = (Emp)aList.get(id-1);
    System.out.println(emp5.getId()+" "+emp5.getName()+" "+emp5.getSal());
    
    System.out.println("确认删除请输入:y");
    if("y".endsWith(scan.next())){
    aList.remove(id-1);
    }else{
    System.out.println("请合法输入");
    }
    
    
    }
    
    
    //6.按照员工薪水从低到高排序
    public void rank(int left, int right)
        {
    
    int i = left;
            int j = right;
            
            if(i < j)//递归结束条件
            {
            Emp emp = (Emp)aList.get(left);
                float key  = emp.getSal();
                System.out.println("key:"+key);
                while(i<j)//一趟快速排序
                {
                    while(i<j && ((Emp)aList.get(j)).getSal() >= key)
                    {
                        j--;
                    }
                    if(i<j)
       
    
    package com.hzyc.homework;
    
    import java.util.ArrayList;
    import java.util.Scanner;
    
    /**
     * @author xzt
     *
     */
    public class Tools {
        Scanner scan = new Scanner(System.in);
       //成员属性
        ArrayList aList = null;
        
        //构造方法:初始化 不断创造新对象
        public Tools()
        {
            aList = new ArrayList();//注意写法!!
        }
        
        
        //1.添加员工信息
        public void add() {
            for(int i=1;i<=3;i++){
                Emp emp = new Emp();
                System.out.println("请输入员工的id");    
                emp.setId(scan.nextInt());
                System.out.println("请输入员工姓名");
                emp.setName(scan.next());
                System.out.println("请输入员工工资");
                emp.setSal(scan.nextFloat());
                
                aList.add(emp);//储存员工信息
                
            }
           
            
        }
    
        //2.根据工号实现对该员工信息查询
        public void check(){
            System.out.println("2.根据工号实现对该员工信息查询");
            System.out.println("请输入员工编号");
            Emp emp1 = (Emp)aList.get(scan.nextInt()-1);
            System.out.println(emp1.getId()+" "+emp1.getName()+" "+emp1.getSal());
            
        }
        
        //3.查看所有员工信息
        public void allCheck() {
            System.out.println("3.查看所有员工信息");
            for(int i = 0; i<=aList.size()-1; i++){
                Emp emp3 = (Emp)aList.get(i);
                System.out.println(emp3.getId()+" "+emp3.getName()+" "+emp3.getSal());    
                
            }    
        }
        
        //4.修改员工的薪水
        public void update() {
            System.out.println("4.修改员工的薪水");
            System.out.println("请输入员工编号");
            int id = scan.nextInt();
            
            Emp emp4 = (Emp)aList.get(id-1);
            System.out.println(emp4.getId()+" "+emp4.getName()+" "+emp4.getSal());
            
            System.out.println("请输入修改后的工资");
            emp4.setSal(scan.nextInt());
            
            aList.set(id-1, emp4);//修改后所储存的信息
            
        }
        //5.删除员工信息
        public void delete() {
            System.out.println("5.删除员工信息。----请输入员工编号:");
            
            int id = scan.nextInt();
            Emp emp5 = (Emp)aList.get(id-1);
            System.out.println(emp5.getId()+" "+emp5.getName()+" "+emp5.getSal());
            
            System.out.println("确认删除请输入:y");
            if("y".endsWith(scan.next())){
                aList.remove(id-1);
            }else{
                System.out.println("请合法输入");
            }
            
            
        }
    
        //6.按照员工薪水从低到高排序
        public void rank(int left, int right)
        {
            
            int i = left;
            int j = right;
            
            if(i < j)//递归结束条件
            {
                Emp emp = (Emp)aList.get(left);
                float key  = emp.getSal();
                System.out.println("key:"+key);
                while(i<j)//一趟快速排序
                {
                    while(i<j && ((Emp)aList.get(j)).getSal() >= key)
                    {
                        j--;
                    }
                    if(i<j)
                    {
                        aList.set(i,aList.get(j));
                        i++;
                    }
                    while(i<j && ((Emp)aList.get(i)).getSal() <= key)
                    {
                        i++;
                    }
                    if(i<j)
                    {
                        aList.set(j, aList.get(i));
                    }
                }
                aList.set(i, emp);
                rank(left, i-1);
                rank(i+1, right);
            }
        }
    
        //统计员工的平均工资、最高工资和最低工资
        public void statisticsSalary()
        {
            float totalSal = 0;
            float minSal = ((Emp)aList.get(0)).getSal();
            float maxSal = ((Emp)aList.get(0)).getSal();
            
            for(int i=0; i<aList.size(); i++)
            {
                Emp emp = (Emp)aList.get(i);
                totalSal += emp.getSal();
                if(minSal > emp.getSal())
                {
                    minSal = emp.getSal();
                }
                if(maxSal < emp.getSal())
                {
                    maxSal = emp.getSal();
                }
            }
            System.out.println(aList.size()+"个人平均工资的薪资为:"+totalSal/aList.size());
            System.out.println(aList.size()+"个人的最低薪资为:"+minSal);
            System.out.println(aList.size()+"个人的最高薪资为:"+maxSal)    
        }   
    
    }
    

     

    展开全文
  • 单位员工通讯录管理系统

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

    1、单位员工通讯录管理系统(线性表的应用)

    [问题描述]

    为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。

    [实现提示]

    可以采用单链表的存储结构,如可定义如下的存储结构:

    typedef struct {  /*员工通讯信息的结构类型定义*/

        char num[5];       /*员工编号*/

        char name[10];      /*员工姓名*/

        charphone[15];     /*办公室电话号码*/

    char call[15];    /*手机号码*/

    char mail[25];     /*邮箱*/

    }DataType;

    /*通讯录单链表的结点类型*/

    typedef struct node

    { DataType data;   /*结点的数据域*/

      struct node *next;   /*结点的指针域*/

    }ListNode,*LinkList;

    算法思想

    要想完成员工的通讯管理系统,需要首先建立一个链表存储员工的信息,创建的方法有头插法和尾插法,本次试验中我是使用尾插法,每个结点保存员工的信息以及指针域。对于员工的信息查询,需要遍历链表并输出每个结点所包含的信息;对于员工的信息插入需要先找到要插入的相应的位置,在把该结点的指针域赋给前一结点的p->next,在进行该操作的赋值时要遵循先空后实的原则;对于员工的信息删除,需要首先找到相应的员工信息,然后把该员工下一个员工的地址赋给该员工前一个员工的指针域中;对于员工信息的修改,先遍历链表,找到存储员工信息的结点,把员工的修改后的信息放入该结点中

     

    流程图

        

    进入菜单选择:menu()

     

     


     

     

    创建单链表ListLength(LinkList &L

    查找结点FindList(LinkList &L)

    插入结点ListInsert(LinkList &L

    删除结l ListDelete(LinkList &L)

    输出结点信息Display(LinkList &L)

     

     

     

    // 员工信息.cpp : 定义控制台应用程序的入口点。

    //

     

    #include "stdafx.h"

     

     

    #include<iostream>

    #include<malloc.h>

    #include<string.h>

    #include<stdio.h>

    using namespace std;

    #define ERROR -1

    typedef struct                         //员工通讯信息的结构类型定义

    {

           charnum[10];                         //员工编号

           charname[15];                       //员工姓名

           charphone[15];                      //办公室电话号码

           charcall[15];                       //手机号码

           charmail[25];                       //邮箱

    }DataType;

    typedef struct LinkNode                  //构造链表结点结构体

    {

           DataType  data;

           structLinkNode  *next;

    }Node, *LinkList;

     

    void CreateList(LinkList &L)       //头插法创建链表

    {

           Node*p, *r, *v;       //LinkList p;

           inti, n;

           L= (LinkList)malloc(sizeof(Node));

           r= L;

           cout<< "请输入通讯录员工人数n值<n为整型数字>:";

           cin>> n;

           cout<< endl;

           if(n == 0)

           {

                  cout<< "通讯录链表里无员工信息,请插入新的员工信息!" << endl << endl;

           }

           else

           {

                  cout<< "请输入"<< n << "个员工的信息: " << endl << endl;

                  for(i = 0; i<n; i++)

                  {

                         p= (LinkList)malloc(sizeof(Node));

                         r->next= p;

                         r= p;

                         p->next= NULL;

     

                  loop:          cout << "请输入第" << i + 1 << "个员工的编号:";        //编号不重复功能

                         cin>> p->data.num;

                         v= L;

                         while(v)

                         {

                                if(v != p&&strcmp(v->data.num, p->data.num) == 0)

                                {

                                       cout<< "你输入的编号已存在,请重新输入!" << endl << endl;

                                       gotoloop;

                                }

                                else

                                       v= v->next;

                         }

                         for(int j = 0; j<strlen(p->data.num); j++)         //编号必须是数字;

                         {

                                if(p->data.num[j] >= '0'&&p->data.num[j] <= '9')

                                       continue;

                                else

                                {

                                       cout<< "你输入的编号不合法,请重新输入整型编号!" << endl << endl;

                                       gotoloop;

                                }

                         }

                         cout<< "请输入第"<< i + 1 << "个员工的姓名:";

                         cin>> p->data.name;

                         cout<< "请输入第"<< i + 1 << "个员工的办公室电话:";

                         cin>> p->data.phone;

                         cout<< "请输入第"<< i + 1 << "个员工的手机号:";

                         cin>> p->data.call;

                         cout<< "请输入第"<< i + 1 << "个员工的电子邮件:";

                         cin>> p->data.mail;

                         cout<< endl;

                  }

           }

           cout<< "通讯录链表创建成功,可以通过功能7进行查看哦!" << endl <<endl;

    }//CreateList_L

     

     

     

    int ListLength(LinkList &L)                   //求链表表长

    {

           inti = 0;

           LinkListp = L;

           if(p == NULL)

           {

                  cout<< "通讯录链表不存在,请先创建新的通讯录链表! " << endl<< endl;

                  returnERROR;

           }

           while(p->next != NULL)

           {

                  i++;

                  p= p->next;

           }

           cout<< "该通讯录链表的长度为:"<< i << endl << endl;

           return0;

    }//ListLength_L

     

     

    int FindList(LinkList &L)   //求链表某位序的值

    {

           LinkListp = L;

           charnum[5], name[10];

           intc;

           boolflag1 = false, flag2 = false;

           if(p == NULL)

           {

                  cout<< "通讯录链表不存在,请先创建新的通讯录链表!" << endl ;

                  returnERROR;

           }

           p= L->next;

           cout<< "*************************************" << endl;

           cout<< "          1.按员工编号查询           " << endl;

           cout<< "          2.按员工姓名查询           " << endl;

           cout<< "*************************************" << endl;

           cout<< "请选择查询方式:";

           cin>> c;

           cout<< endl;

           if(c == 1)

           {

                  cout<< "请输入要查找员工的编号:";

                  cin>> num;

                  while(p)

                  {

                         if(strcmp(p->data.num, num) == 0)

                         {

                                flag1= true;

                                cout<< "你要查找的员工编号:"<< p->data.num << endl;

                                cout<< "你要查找的员工姓名:"<< p->data.name << endl;

                                cout<< "你要查找的员工办公室电话:"<< p->data.phone << endl;

                                cout<< "你要查找的员工手机号:"<< p->data.call << endl;

                                cout<< "你要查找的员工电子邮件:"<< p->data.mail << endl << endl;

                                p= p->next;

                         }

                         else

                                p= p->next;

                  }

                  if(flag1 == false)

                         cout<< "你要查询的"<< num << "编号员工不存在!" << endl << endl;

           }

           elseif (c == 2)

           {

                  cout<< "请输入要查找员工的姓名:";

                  cin>> name;

                  while(p)

                  {

                         if(strcmp(p->data.name, name) == 0)

                         {

                                flag2= true;

                                cout<< "你要查找的员工姓名:"<< p->data.name << endl;

                                cout<< "你要查找的员工编号:"<< p->data.num << endl;

                                cout<< "你要查找的员工办公室电话:"<< p->data.phone << endl;

                                cout<< "你要查找的员工手机号:"<< p->data.call << endl;

                                cout<< "你要查找的员工电子邮件:"<< p->data.mail << endl << endl;

                                p= p->next;

                         }

                         else

                                p= p->next;

                  }

                  if(flag2 == false)

                         cout<< "你要查询的"<< name << "姓名员工不存在!" << endl << endl;

           }

           else

                  cout<< "你输入的查询方式不合法,请重新查询!" << endl << endl;

           return0;

    }//FindList_L

     

     

    int ListChange(LinkList &L)   //改变链表中某元素的值

    {

           LinkListp = L, q;

           charnum[5];

           boolflag = false;

           if(p == NULL)

           {

                  cout<< "通讯录链表不存在,请先创建新的通讯录链表!" << endl<< endl;

                  returnERROR;;

           }

           p= L->next;

           cout<< "请输入要修改员工的编号:";

           cin>> num;

           while(p)

           {

                  if(strcmp(p->data.num, num) == 0)

                  {

                         flag= true;

                         q= (LinkList)malloc(sizeof(Node));

                         cout<< "*************************************" << endl;

                         cout<< "          1.修改员工姓名             " << endl;

                         cout<< "          2.修改员工办公室电话       " << endl;

                         cout<< "          3.修改员工手机号码         " << endl;

                         cout<< "          4.修改员工电子邮件         " << endl;

                         cout<< "*************************************" << endl;

                         cout<< "请选择你要修改的选项:";

                         charn;

                         cin>> n;

                         cout<< endl;

                         switch(n)

                         {

                         case'1':cout << "输入你修改后的员工姓名:";

                                cin>> q->data.name;

                                strcpy_s(p->data.name,q->data.name);

                                break;

                         case'2':cout << "输入你修改后的员工办公室电话:";

                                cin>> q->data.phone;

                                strcpy_s(p->data.phone,q->data.phone);

                                break;

                         case'3':cout << "输入你修改后的员工手机号码:";

                                cin>> q->data.call;

                                strcpy_s(p->data.call,q->data.call);

                                break;

                         case'4':cout << "输入你修改后的员工电子邮件:";

                                cin>> q->data.mail;

                                strcpy_s(p->data.mail,q->data.mail);

                                break;

                         default:cout << "你输入的修改选项不合法,请重新修改!" << endl;

                         }

                         cout<< endl;

                         p= p->next;

                  }

                  else

                         p= p->next;

           }

           if(flag == false)

                  cout<< "在通讯录中未找到你要修改的"<< num << "编号员工信息" << endl << endl;

           return0;

    }//ListChange_L

     

     

    int ListInsert(LinkList &L)    //在链表尾部插入元素

    {

           LinkListp, s, v;

           p= L;

           if(p == NULL)

           {

                  cout<< "通讯录链表不存在,请先创建新的通讯录链表!" << endl<< endl;

                  returnERROR;

           }

           while(p->next != NULL)

           {

                  p= p->next;

           }

           cout<< "你将在通讯录链表尾部插入此员工的信息!" << endl << endl;

           s= (LinkList)malloc(sizeof(Node));

           s->next= NULL;

    loop:

           cout<< "请输入你要插入的员工编号:";

           cin>> s->data.num;

           v= L;

           while(v)

           {

                  if(v != s&&strcmp(v->data.num, s->data.num) == 0)

                  {

                         cout<< "你输入的编号已存在,请重新输入!" << endl << endl;

                         gotoloop;

                  }

                  else

                         v= v->next;

           }

           cout<< "请输入你要插入的员工姓名:";

           cin>> s->data.name;

           cout<< "请输入你要插入的员工办公室电话:";

           cin>> s->data.phone;

           cout<< "请输入你要插入的员工手机号:";

           cin>> s->data.call;

           cout<< "请输入你要插入的员工电子邮件:";

           cin>> s->data.mail;

           cout<< "员工信息插入成功"<< endl;

           cout<< endl;

           p->next= s;

           p= p->next;

           return0;

    }//ListInsert_L

     

     

    int ListDelete(LinkList &L)   //在链表中删除某元素

    {

           LinkListp, q, r;

           p= q = L;

           intj = 0;

           charnum[5];

           if(p == NULL)

           {

                  cout<< "通讯录链表不存在,请先创建新的通讯录链表!" << endl<< endl;

                  returnERROR;

           }

           cout<< "请输入要删除员工的编号:";

           cin>> num;

           cout<< endl;

           while(p&&strcmp(p->data.num, num))

           {

                  j++;

                  p= p->next;

           }

           if(p == NULL)

           {

                  cout<< "你要删除的"<< num << "编号员工在通讯录链表中不存在!" << endl << endl;

           }

           else

           {

                  for(int i = 0; i<j - 1; i++)

                  {

                         q= q->next;

                  }

                  r= q->next;

                  q->next= r->next;

                  cout<< "你指定的编号员工信息删除成功!"<< endl << endl;;

                  cout<< "你删除员工的编号:"<< r->data.num << endl;

                  cout<< "你删除员工的姓名:"<< r->data.name << endl;

                  cout<< "你删除员工的办公室电话:"<< r->data.phone << endl;

                  cout<< "你删除员工的手机号:"<< r->data.call << endl;

                  cout<< "你删除员工的电子邮件:"<< r->data.mail << endl << endl;

                  free(r);

           }

           return0;

    }//ListDelete_L

     

    void Display(LinkList &L)          //显示链表中的全部元素

    {

           LinkListp;

           p= L;

           if(p == NULL)

           {

                  cout<< "通讯录链表不存在,请先创建新的通讯录链表!" << endl<< endl;

                  return;

           }

           p= p->next;

           if(p == NULL)

           {

                  cout<< "通讯录链表为空,没有找到可显示的员工信息!" << endl << endl;

           }

           else

           {

                  while(p)

                  {

                         cout<< "员工的编号:"<< p->data.num << endl;

                         cout<< "员工的姓名:"<< p->data.name << endl;

                         cout<< "员工的办公室电话:"<< p->data.phone << endl;

                         cout<< "员工的手机号:"<< p->data.call << endl;

                         cout<< "员工的电子邮件:"<< p->data.mail << endl << endl;

                         p= p->next;

                  }

           }

    }//Display_L

    void menu()

    {

           cout<< "*************欢迎来到单位员工通讯录管理系统************* " << endl << endl;;

           cout<< "                1.建立员工通讯录链表                  " << endl;

           cout<< "                2.求通讯录链表的表长                  " << endl;

           cout<< "                3.查询通讯录员工的信息                " << endl;

           cout<< "                4.修改通讯录员工的信息                " << endl;

           cout<< "                5.插入通讯录中某员工信息              " << endl;

           cout<< "                6.删除通讯录中某员工信息              " << endl;

           cout<< "                7.显示通讯录中员工的信息              " << endl;

           cout<< "                0.退出通讯录员工管理系统              " << endl <<endl;

           cout<< "******************************************************"<< endl;

    }

    int main()

    {

           charM;

           LinkListL = NULL;

           while(1)

           {

                  menu();

                  cout<< "请输入你要选择的功能序号:";

                  cin>> M;

                  cout<< endl;

                  switch(M)                      //进行链表基本操作功能的选择

                  {

                  case'1':   CreateList(L);  system("pause");  system("cls");   break;

                  case'2':   ListLength(L);  system("pause");  system("cls");   break;

                  case'3':   FindList(L);    system("pause");  system("cls");   break;

                  case'4':   ListChange(L);  system("pause");  system("cls");   break;

                  case'5':   ListInsert(L);  system("pause");  system("cls");   break;

                  case'6':   ListDelete(L);  system("pause");  system("cls");   break;

                  case'7':   Display(L);     system("pause");  break;

                  case'0':   return 0;

                  default:cout << "你的选择有误,此管理系统没有此项功能!" << endl << endl;

                  }

           }

           system("pause");

    }

     

     



    展开全文
  • 员工管理系统Android版

    千次阅读 热门讨论 2017-07-21 21:21:53
    Android版的员工管理系统。包括服务器,客户端,及数据库。
  • 我在公司从事软件项目管理两年时间,带过大大小小三个项目,这个问题从一开始到现在,为了解决这个问题,我做过很多实践,包括:对于做的出色的员工给予及时的表扬和鼓励;分配具有挑战性的工作任务;给予奖励,...
  • 如何用微信管理员工管理团队

    千次阅读 2015-01-26 11:38:02
    大多数人,都认为微信朋友圈是自己的私人领地,不想同级或者下级过多介入和干涉,执这样的想法,自然会抗拒通过微信与员工交流。 虽然如此,作为管理者,想要获得与员工高质量、高效率的沟通、效率,你就要...
  • 企业经常会面临员工把手机、平板电脑等个人移动设备带入工作场所的情况,这样不但给网络管理人员带来麻烦,更会增加企业资料外泄的风险。一般企业会选择使用移动设备管理(MDM-Mobile device management)来防护和...
  • 管理者如何对待员工反馈

    千次阅读 2018-06-12 01:57:00
    相信在任何企业、团队中都一定会提倡员工反馈的行为,遇到问题及时向管理层反馈,不仅有利于问题的解决,更能够建立管理者与员工之间的有效沟通渠道。 离职小故事 近来在今日头条上经常看到关于员工离职的文章...
  • C语言员工信息管理系统源代码

    千次阅读 2020-12-23 16:05:39
    分享:C语言学生成绩管理系统设计《C语言程序设计》实训报告 扫描下方公众号,发送成绩系统4个字,获取下载实训源码。 ... ...回复系统大全,即可获得关于...今天分享:C语言员工信息管理系统源代码 /************...
  • 如何管理关键员工

    千次阅读 2006-05-01 19:19:00
    其次,关键员工管理在具体方式和方法上,更强调针对性、创意的个性化管理。下面就从这两个方面来详细谈谈。 一、关键员工的系统化管理 【关键员工队伍的规划】 业务战略决定了组织所需的人力资源,配合企业的...
  • 我在公司从事软件项目管理两年时间,带过大大小小三个项目,这个问题从一开始到现在,为了解决这个问题,我做过很多实践,包括:对于做的出色的员工给予及时的表扬和鼓励;分配具有挑战性的工作任务;给予奖励,...
  • 常常听到一些企业管理者这样抱怨:现在的员工越来越难对付了,没有钱他们没干劲,了钱也未必就能提高工作效率,真是左右为难。 我认为,持这种论点的算不上一个合格的管理者。 ——你对员工的需要了解多少? ——...
  • 管理理念:如何让员工服从管理

    千次阅读 2011-08-30 19:59:34
    管理理念:如何让员工服从管理转自:总裁网 ...其实,不仅对待动物是这样,我们对待员工也是如此,要在信息化管理中,让他们看到信息化管理有盼头,能够让他们尝到一些甜头,他们才会死心塌地的跟着你走...
  • 销售公司员工管理c++实现

    千次阅读 2013-06-06 13:20:19
    一、 设计目的 Ø 熟练掌握C++语法、...销售公司员工管理 设计一个虚基类Staff(员工),包含编号、姓名和年龄保护数据成员以及相关的成员函数;由Staff派生出销售员类Salesman,包含销售额保护数据成员以及相关的
  • 在后面的章节可以看到一个用户管理,这两者什么关系呢?员工包含当前企事业单位的所有职员(如保安、保洁员等),这些员工不一定都需要登录到系统中做相应的业务操作,而用户则是可以登录到系统中进行操作的系统...
  • 马云说:管理不要怕员工离开

    千次阅读 2014-10-09 14:33:51
    哪个团队都有问题,哪个团队都优点,如果稍不顺或诱惑,就轻易动摇,无论怎样,这种人是不能托付重任的。 抱怨和埋怨团队就是打自己耳光,说自己无能,更是在放弃机会! 过河拆桥的员工不可能心怀感恩之心,...
  • 展示员工列表1、员工管理2、自定义员工管理页面2、Fragments 页面复用4、侧边栏高亮显示5、员工列表展示 1、员工管理 我们希望在后台页面中的Customers页面中进行所有员工管理的操作 因此,我们修改dashboard.html...
  • Java项目员工信息管理系统

    千次阅读 2018-12-20 21:50:47
    该项目名称为“员工信息管理系统”(或“员工收录系统”),主要是通过输入员工的id、姓名信息,实现简单的增删改查功能。 该项目主要在DOS窗口的控制台或者Eclipse的控制台上进行操作。操作界面如下: 该项目的...
  • 相信不少主管都遇到过,技术好又不服众管理员工。这让主管很头痛:管了吧,惹着他走人有点舍不得;不管吧,这工作没法开展,其他员工怨气。怎么办?    首先,要区分这个不服从管理,是暂时的,还是持续...
  • 薪水是调节员工工作情绪的核武器。如果只有这个核武器的话,公司的管理一定有问题
  • java小demo---员工管理系统

    万次阅读 多人点赞 2018-10-10 21:50:23
    最近开始自学java,在学到ArrayList的时候做了个员工管理系统来熟悉ArrayList的一部分操作。 此系统5个功能: 1.添加员工:输入员工编号,姓名,薪水 2.查找员工:输入员工编号进行查找,如果找到员工就会显示...
  • JavaWeb项目系列(一):员工管理系统(SSH框架)

    万次阅读 多人点赞 2017-07-25 15:33:06
    JavaWeb项目系列(一):员工管理系统(SSH框架) 这是一个员工管理系统,应用的是SSH框架Spring+SpringMVC+Hibernate的项目,重构了之前用纯servlet版本和struts+jsp版本(项目源码在我的github),本次项目...
  • 设计一个计算机程序,能够实现简单的员工管理功能。 2.设计要求 (1)每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。 (2)系统的功能包括: (a)查询:按特定条件查找员工。 (b...
  • 员工管理系统基于狂神老师的SpringBoot教程:https://www.bilibili.com/video/BV1PE411i7CV?p=20 项目所需的资源搜索公众号BaretH 后台回复静态资源获取静态资源: 后台回复员工管理系统获取最终完整项目资源: ...
  • 项目经理如何管理不同类型员工的扯皮攻略

    万次阅读 热门讨论 2011-01-25 16:17:00
    项目经理如何管理不同类型员工的扯皮攻略
  • 单位员工通讯录管理系统(线性表的应用) [问题描述] 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。其功能包括通讯录链表的建立、员工通讯信息的查询、修改、...
  • QT杂记(三)员工管理系统

    千次阅读 2018-08-10 16:25:01
    这两天在用QT做一个员工管理系统,里面牵涉到不少之前没细想过的问题,记录下来以便以后查阅 先把需要放出来: (一)两个没有关系的窗口间怎么传递信息 一开始是做客户端的,遇到的第一个问题是,作为普通用户...
  • c++课程设计-简单的员工管理系统

    千次阅读 2017-07-11 22:59:26
    设计一个计算机程序,能够实现简单的员工管理功能。 2.实习要求 (1)每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等。 (2)系统的功能包括:  (a)查询:按特定条件查找员工。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 210,475
精华内容 84,190
关键字:

如何管理有问题的员工