繁体   English   中英

使用自定义LinkedList类的薪资系统

[英]Payroll System using custom LinkedList Class

我正在使用链接列表编写薪资应用程序。 目的是读取多个文件并将其内容存储在链接列表中。 然后,程序将使用另一个类从链接到另一个文本文件的位置输出所需的数据。 以后,文件将被数据库表替换。

我的TestReadFile类读取数据并存储在链接列表中,然后应该读取它。 LinkedListClass和LinkedListNode类应该是通用的。

我想将每个部门的对象存储在单独的对象中,然后将其放置在链表中,并且在需要时可以从链表中检索对象。

任何帮助将不胜感激! 非常感谢

package payroll;
public class Department implements iDepartment
{
    private int deptID;
    private String deptName, deptLoc;

    public Department()
    {
        deptID = 0;
        deptName = "";
        deptLoc = "";
    }

    public Department(int deptID, String deptName, String deptLoc)
    {
        setDeptID(deptID);
        setDepName(deptName);
        setDeptLoc(deptLoc);
    }

    public void setDeptID(int deptID)
    {
        this.deptID = deptID;
    }

    public void setDepName(String deptName)
    {
        this.deptName = deptName;
    }

    public void setDeptLoc(String deptLoc)
    {
        this.deptLoc = deptLoc;
    }

    public int getDeptID()
    {
        return deptID;
    }

    public String getDeptName()
    {
        return deptName;
    }

    public String getDeptLoc()
    {
        return deptLoc;
    }
}

package payroll;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;

public class TestReadFile 
{
    private static Scanner inFile;    
    private static Department department;
    public static void main(String[] args) throws FileNotFoundException
    {
        inFile = new Scanner(new FileReader("Department.in"));

        LinkedListClass dept = new LinkedListClass();        

        inFile.useDelimiter(";");
//        while(inFile.hasNextLine())
//        {            
            department = new Department();
            department.setDeptID(inFile.nextInt());
            department.setDepName(inFile.next());
            department.setDeptLoc(inFile.next());            
            dept.addLast(department);                        
//        }
//

//      dept.outputObject();    
        System.out.println("Department ID: " + dept.outputObject().toString());             
    }
}

public class LinkedListClass<T> implements iLinkedListClass<T>
{
    private LinkedListNode<T> head, tail, trav, p;
    private int count;


    public LinkedListClass()
    {
        head = null;
        tail = null;
        count = 0;
    }

    public void addFirst(T data)
    {
        p = new LinkedListNode<T>(data, null);
        p.setLink(head);
        head = p;
    }

    public void addLast(T data)
    {
        p = new LinkedListNode<T>(data, null);

        if(head == null)
        {
            head = p;
            tail = p;
        }
        else
        {
            tail.setLink(p);
            tail = p;
        }
    }

    public void removePosition(int pos)
    {
        LinkedListNode<T> prev;
        count = 0;

        if(pos == 0)
        {
            head = head.getLink();
        }

        else if(pos < size())
        {
            prev = head;
            for (int i = 1; i <= (pos - 1); i++)
            {
                prev = prev.getLink();
            }
            prev.setLink(prev.getLink().getLink());

            //if last one to be deleted
            if (prev.getLink() == null)
            {
                tail = prev;
            }
        }
    }

    public void print()
    {
        trav = head;

        while(trav != null)
        {
            System.out.println("Value: " + trav.getInfo());
            trav = trav.getLink();
        }
    }

    public int size()
    {
        trav = head;
        count = 0;

        while(trav != null)
        {
            count++;
            trav = trav.getLink();
        }
        return count;
    }

    public boolean search(T data)
    {
        boolean found = false;
        trav = head;

        while(trav != null)
        {
            if(trav.getLink() != null)
            {
                found = true;
            }
            trav = trav.getLink();
        }
        if(found)
        {
            System.out.println("Value searched is: " + data);
        }
        else
        {
            System.out.println("Value does not exist in the list");
        }
        return found;
    }

    public void insert(T data, int pos)
    {
        trav = head;

        if((pos <= size()) && (pos > 0))
        {
            count = 1;
            while(count <= pos)
            {
                if(count == pos)
                {
                    p = new LinkedListNode(data , null);
                    p.setLink(trav.getLink());
                    trav.setLink(p);
                }
                trav = trav.getLink();
                count++;
            }
        }
        else if(pos <= 0)
        {
            addFirst(data);
        }
        else if(pos > size())
        {
            addLast(data);
        }        
    }

    public int position(T data)
    {
        int pos = -1;
        trav = head;
        while(trav != null)
        {
            if(trav.getInfo() != null)
            {
                return pos;
            }
            pos++;
            trav = trav.getLink();
        }
        return -1;
    }    

    public T outputObject()
    {
        trav = head;
        return trav.getInfo();
    }
}


package payroll;
public class LinkedListNode<T>
{
    private T data;
    private LinkedListNode<T> link;

    public LinkedListNode(T info, LinkedListNode<T> link)
    {
        this.data = info;
        this.link = link;
    }

    public void setInfo(T info)
    {
        this.data = info;
    }

    public void setLink(LinkedListNode<T> link)
    {
        this.link = link;
    }

    public T getInfo()
    {
        return this.data;
    }

    public LinkedListNode<T> getLink()
    {
        return this.link;
    }
}

您应该按要创建的类(对象)来分解问题,而不要按要执行的程序工作来分解。 示例:在您的情况下,您似乎拥有一个由一个或多个部门组成的公司。 因此,..创建一个Company类,并为其提供一种读取部门等的方法。

例如,考虑下面的代码。

主班

package com.example.accounting;
import java.util.LinkedList;
public class Main {
// Object fields
private static Main me;
private Company company;
private LinkedList<Department> departments;

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    me = new Main();
    me.doWork(args);

}

private void doWork(String[] args) {
    //TODO accept file name as an argument?!

    company = new Company();
    company.addDepartment("Department.in");
    company.listDepartments();

    departments = company.getDepartments();
}
}

公司类别

package com.example.accounting;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.LinkedList;
import java.util.Scanner;

public class Company {
// Object fields
LinkedList<Department> departments = null;

public Company() {
    departments = new LinkedList<Department>();
}

public boolean addDepartment(String file) {
    Scanner source = null;

    try {
        source = new Scanner(new FileReader(file));
    } catch (FileNotFoundException e) {
        System.out.println("Error trying to read " + file + ": " + e.getMessage());
        e.printStackTrace();
        return false;
    }
    source.useDelimiter(";");

    while(source.hasNextLine()) {
        int departmentId = source.nextInt();
        String departmentName = source.next();
        String departmentLocation = source.next();
        departments.add(new Department(departmentId, departmentName, departmentLocation));
    }
    source.close();
    return true;
}

public LinkedList<Department> getDepartments() {
    return departments;
}

public void listDepartments() {

    for (Department dept : departments) {
        System.out.println(" " + dept.getDeptId() + ". " + dept.getDeptName() + ", " + dept.getDeptLoc());
    }
}
}

部门课

package com.example.accounting;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.LinkedList;
import java.util.Scanner;

公共类Company {//对象字段LinkedList部门= null;

public Company() {
    departments = new LinkedList<Department>();
}

public boolean addDepartment(String file) {
    Scanner source = null;

    try {
        source = new Scanner(new FileReader(file));
    } catch (FileNotFoundException e) {
        System.out.println("Error trying to read " + file + ": " + e.getMessage());
        e.printStackTrace();
        return false;
    }
    source.useDelimiter(";");

    while(source.hasNextLine()) {
        int departmentId = source.nextInt();
        String departmentName = source.next();
        String departmentLocation = source.next();
        departments.add(new Department(departmentId, departmentName, departmentLocation));
    }
    source.close();
    return true;
}

public LinkedList<Department> getDepartments() {
    return departments;
}

public void listDepartments() {

    for (Department dept : departments) {
        System.out.println(" " + dept.getDeptId() + ". " + dept.getDeptName() + ", " + dept.getDeptLoc());
    }
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM