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 を呼び出すことができます。従業員を追加した後、メソッド display (プロジェクトに存在) を呼び出そうとすると、リストの内容が出力されません。

Project が、その親クラスである Employee に存在する List の値にアクセスできない理由がわかりません。

編集: メインクラスを追加しました。問題は、addEmployee メソッドを使用して新しい従業員を追加し、employeeDetails ですべてを完全に表示することです。しかし、p.search() を呼び出すと、NAME ID DOB 以外は何も表示されません。

注: 奇妙なデザインを許してください。私はJavaが初めてです。私は従業員管理システムに関するミニプロジェクトを行っています(DBソフトウェアを使用せずに)。では、どのように設計すればよいか教えてください。ありがとう!

4

2 に答える 2

1

私はあなたの主な方法を見る必要があります。メインを実行したとき:

public static void main(String[] args) {

    Project aProject = new Project();

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

次の出力が得られます (サンプル入力を使用)。

数字を入力してください:2

従業員名を入力してください:bob

従業員IDを入力してください:123

生年月日を入力してください (mm-dd-yyy) :01-01-2222

従業員名を入力してください:アリス

従業員IDを入力してください: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 に答える