0
abstract class PayRoll
{
    List<String> nm=new ArrayList<String>();
    List<String> id=new ArrayList<String>();
    List<String> dob=new ArrayList<String>();
}


class Employee extends PayRoll implements PayEmpInt
{
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    int n;
    String ename,eid,birth,pr_id;
    public void addEmployee()
    {
        try
        {
            System.out.print("\nEnter the number\t :");
            n=Integer.parseInt(br.readLine());
            for(int i=0;i<n;i++)
            {
            System.out.print("\nEnter Employee name\t :");
            ename=br.readLine();
            System.out.print("\nEnter the Employee ID\t :");
            eid=br.readLine();
            System.out.print("\nEnter the D.O.B(mm-dd-yyy)\t :");
            birth=br.readLine();
            nm.add(ename);
            id.add(eid);
            dob.add(birth);
        }
    }
    catch(IOException e)
    {
        System.out.print("\nError while handling the Input. "+e);
    }
}


class Project extends Employee
{
    public void display()
    {
        System.out.print("\nName\t\tID\t\tDOB");
        for(int i=0;i<id.size();i++)
        System.out.println(nm.get(i)+"\t"+id.get(i)+"\n"+dob.get(i));
    }
}

import java.io.*;

class PayMain
{
  public static void main(String args[])throws IOException
  {
   int ch;
   BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
   while(true)
   {
    System.out.println("\nOptions:\n\t1. Employee DB\n\t2. Projects\n\t3. Exit");
    ch=Integer.parseInt(br.readLine());
    switch(ch)
    {
    case 1:
    Employee e=new Employee();
    e.addEmployee();
    System.out.print("\nEMPLOYEE LIST");
    e.employeeDetails();
    break;
    case 2:
    Project p=new Project();
    p.display();
    break;
    case 3:
    System.exit(0);
    }
   }
 }

}

我可以从主类调用方法 addEmployee 。添加员工后,当我尝试调用方法显示(存在于项目中)时,它不会打印列表的内容。

我不知道为什么 Project 无法访问其父类 Employee 中存在的 List 的值。

编辑: 添加了主类。问题是我使用 addEmployee 方法添加新员工,并且employeeDetails 完美地显示了所有内容。但是当我调用 p.search() 时,它不显示除 NAME ID DOB 之外的任何内容。

注意:请 原谅我奇怪的设计。我是 Java 新手。我正在做一个关于员工管理系统的小项目(不使用任何数据库软件)。所以建议我如何设计它。谢谢!

4

2 回答 2

1

我需要看看你的主要方法。当我运行主程序时:

public static void main(String[] args) {

    Project aProject = new Project();

    aProject.addEmployee();
    aProject.display();
}

我得到以下输出(带有我的示例输入):

输入号码:2

输入员工姓名:bob

输入员工编号:123

输入出生日期(mm-dd-yyy) :01-01-2222

输入员工姓名:alice

输入员工编号:234

输入出生日期(mm-dd-yyy) :04-44-4444

姓名 ID DOBbob 123 01-01-2222 alice 234 04-44-4444

您需要确保在同一个对象上调用方法。

此外,您可能希望将 addEmployee 方法更新为 addEmployees,因为它会提示您输入要添加的数字。

于 2013-11-09T17:52:20.087 回答
0

抽象类 Payroll 的字段没有修饰符,这意味着它们只能被同一个包中的类访问。他们应该是protected。或者public如果合适的话提供一个吸气剂。(在这里我会说不)

我同意其他人的观点,即架构感觉很奇怪。

于 2013-11-09T18:32:46.560 回答