在java中显示联系人列表程序中的联系人

时间:2015-02-11 16:21:54

标签: java

我是编程和面向对象设计的新手。这是我完成学士学位的最后要求(不是编程)。我对如何进行面向对象的工作有点困惑,我看不出任何东西似乎有帮助。分配是创建使用继承,多态和集合的联系人列表。我需要一个存储两种联系人的联系人列表:商业和个人。我需要提示1添加联系人然后询问1个人或2个人。提示2将允许用户显示所选联系人的输出,提示3将退出。

我构建了以下类和子类。我很确定这些类是正确构建的但是在添加任何类型的联系人之后,当我选择2以便查看时我只能看到来自超类而不是子类的信息(即:职称和组织或日期出生)。任何帮助都很棒,我只需要通过这个,然后我很乐意将编程留给那些知道他们正在做什么的人。

我为长篇大论道歉,但我认为我应该展示一切。

这是我的主要课程:

package contactlist;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class ContactList {

/*ArrayList<List.Contact> contactlist;*/

List<Contact> contactlist = new ArrayList<>();


/* Contact contact; */
private int top = 0;

public static void main(String[] args) throws IOException {
    /* Contact contact;
    contact = new Contact();
    List.Contact c;
    c = contact; */
    ContactList list = new ContactList();

    BufferedReader keyIn;
    keyIn = new BufferedReader(new InputStreamReader(System.in));
    String choose = "";
    while (true) {

        System.out.println("\n[1] Add contact");
        System.out.println("[2] View all contacts");
        System.out.println("[3] Quit");
        System.out.print("Choose : ");

        try {
            choose = keyIn.readLine();
        } catch (IOException e) {

            System.out.println("Error");
        }
        switch (choose) {
            case "1":
                list.addContact();
                break;
            case "2":
                list.viewContacts();
                break;
            case "3":
                System.exit(0);
                break;
            default:
                System.out.println("Error");
                break;
         }

       }
    }

public ContactList() {
    this.contactlist = new ArrayList<>();
}

public void addContact() throws IOException {
    BufferedReader keyIn;
    keyIn = new BufferedReader(new InputStreamReader(System.in));
    String firstName;
    String lastName;
    String address;
    String email;
    String phone;
    String jobTitle;
    String organization;
    String dateOfBirth;

    Scanner input = new Scanner(System.in);
    System.out.println("Please enter Specify the contact type (1) Personal
    or (2) Business: ");
    int contactType = input.nextInt();
    if (contactType == 1) {
        System.out.print("First Name: ");
        firstName = keyIn.readLine();
        System.out.print("Last Name: ");
        lastName = keyIn.readLine();
        System.out.print("Address: ");
        address = keyIn.readLine();
        System.out.print("E-mail address: ");
        email = keyIn.readLine();
        System.out.print("Phone number: ");
        phone = keyIn.readLine();
        System.out.print("Date of Birth (MM/DD/YYYY): ");
        dateOfBirth = keyIn.readLine();

        PersonalContact entry;
        entry = new PersonalContact(firstName, lastName, address, email, 
        phone, dateOfBirth);
        contactlist.add(entry);
        top++;
        try {
            entry.write();
        } catch (Exception e) {
        }

    } else if (contactType == 2) {
        System.out.print("First Name: ");
        firstName = keyIn.readLine();
        System.out.print("Last Name: ");
        lastName = keyIn.readLine();
        System.out.print("Address: ");
        address = keyIn.readLine();
        System.out.print("E-mail address: ");
        email = keyIn.readLine();
        System.out.print("Phone number: ");
        phone = keyIn.readLine();
        System.out.print("Job Title: ");
        jobTitle = keyIn.readLine();
        System.out.print("Organization: ");
        organization = keyIn.readLine();

        BusinessContact entry;
        entry = new BusinessContact(firstName, lastName, address, email, 
        phone, jobTitle, organization);
        contactlist.add(entry);
        top++;
        try {
            entry.write();
        } catch (Exception e) {
        }

    }

}

public void viewContacts() {
for (int index = 0; index < top; index++) {
    System.out.println((index + 1) + " First Name " +
    contactlist.get(index).getFirstName());
    System.out.println("Last Name " + contactlist.get(index).getLastName());
    System.out.println("Address: " + contactlist.get(index).getAddress());
    System.out.println("E-mail: " + contactlist.get(index).getEmail());
    System.out.println("Phone: " + contactlist.get(index).getPhone());
    System.out.println("Job Title " + contactlist.get(index).getJobTitle());
    System.out.println("Organization " +  contactlist.get(index).
    getOrganization());
    System.out.println("Date of Birth " + contactlist.get(index).
    getDateOfBirth());
    }
    }
}

联系班级:

package contactlist;

public class Contact {
    private String firstName;
    private String lastName;
    private String address;
    private String email;
    private String phone;

    public Contact(String firstName, String lastName, String address, String email, String phone){
        this.firstName = firstName;
        this.lastName = lastName;
        this.address = address;
        this.email = email;
        this.phone = phone;
    }

    public String getfirstName() {
        return this.firstName;
    }

    public String setfirstName(){
        return (this.firstName = firstName);
    }

    public String getlastName() {
        return this.lastName;
    }

    public String setlastName(){
        return (this.lastName = lastName);
    }

    public String getAddress() {
        return this.address;
    }

    public String setAddress(){
        return (this.address = address);
    }

    public String getEmail() {
        return this.email;
    }

    public String setEmail(){
        return (this.email = email);
    }

    public String getPhone() {
        return this.phone;
    }

    public String setPhone(){
        return (this.phone = phone);
    }

    String getFirstName() {
        return firstName;
    }

    String getLastName() {
        return lastName;
    }

    String getJobTitle() {
        throw new UnsupportedOperationException("Not supported yet."); 
        //To change body of generated methods, choose Tools | Templates.
    }

    String getOrganization() {
        throw new UnsupportedOperationException("Not supported yet."); 
        //To change body of generated methods, choose Tools | Templates.
    }

    String getDateOfBirth() {
        throw new UnsupportedOperationException("Not supported yet."); 
        //To change body of generated methods, choose Tools | Templates.
    }

}

业务联系子类:

package contactlist;

public class BusinessContact extends Contact {

    private String jobTitle;
    private String organization;

    public BusinessContact(String firstName, String lastName, String address, 
    String email, String phone, String jobTitle, String organization) {
        super(firstName, lastName, address, email, phone);
        this.jobTitle = jobTitle;
        this.organization = organization;
    }

    public String getJobTitle() {
        return jobTitle;
    }

    public void setJobTitle(String jobTitle) {
        this.jobTitle = jobTitle;
    }

    public String getOrganization() {
        return organization;
    }

    public void setOrganization(String organization) {
        this.organization = organization;
    }

    void write() {
        throw new UnsupportedOperationException("Not supported yet."); 
        //To change body of generated methods, choose Tools | Templates. 
    }

}

个人联系子类:

package contactlist;

public class PersonalContact extends Contact {

    private String dateOfBirth;

    public PersonalContact(String firstName, String lastName, String address, 
        String email, String phone, String dateOfBirth) {
        super(firstName, lastName, address, email, phone);
        this.dateOfBirth = dateOfBirth;
    }

    public String getDateOfBirth() {
        return dateOfBirth;
    }

    public void setDateOfBirth(String dateOfBirth) {
        this.dateOfBirth = dateOfBirth;
    }

    void write() {
        throw new UnsupportedOperationException("Not supported yet."); 
        //To change body of generated methods, choose Tools | Templates.
    }
}

2 个答案:

答案 0 :(得分:1)

首先,您不应该在基类中使用组织,作业标题和dob的getter,因为这些是各个派生类的属性。你应该做的是覆盖viewContacts方法,首先调用super.override,然后显示派生类成员

    package contactlist;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;

    public class ContactList {

    /*ArrayList<List.Contact> contactlist;*/

    List<Contact> contactlist = new ArrayList<>();


    /* Contact contact; */
    private int top = 0;

    public static void main(String[] args) throws IOException {
        /* Contact contact;
        contact = new Contact();
        List.Contact c;
        c = contact; */
        ContactList list = new ContactList();

        BufferedReader keyIn;
        keyIn = new BufferedReader(new InputStreamReader(System.in));
        String choose = "";
        while (true) {

            System.out.println("\n[1] Add contact");
            System.out.println("[2] View all contacts");
            System.out.println("[3] Quit");
            System.out.print("Choose : ");

            try {
                choose = keyIn.readLine();
            } catch (IOException e) {

                System.out.println("Error");
            }
            switch (choose) {
                case "1":
                    list.addContact();
                    break;
                case "2":
                    list.viewContacts();
                    break;
                case "3":
                    System.exit(0);
                    break;
                default:
                    System.out.println("Error");
                    break;
             }

           }
        }

    public ContactList() {
        this.contactlist = new ArrayList<>();
    }

    public void addContact() throws IOException {
        BufferedReader keyIn;
        keyIn = new BufferedReader(new InputStreamReader(System.in));
        String firstName;
        String lastName;
        String address;
        String email;
        String phone;
        String jobTitle;
        String organization;
        String dateOfBirth;

        Scanner input = new Scanner(System.in);
        System.out.println("Please enter Specify the contact type (1) Personal
        or (2) Business: ");
        int contactType = input.nextInt();
        if (contactType == 1) {
            System.out.print("First Name: ");
            firstName = keyIn.readLine();
            System.out.print("Last Name: ");
            lastName = keyIn.readLine();
            System.out.print("Address: ");
            address = keyIn.readLine();
            System.out.print("E-mail address: ");
            email = keyIn.readLine();
            System.out.print("Phone number: ");
            phone = keyIn.readLine();
            System.out.print("Date of Birth (MM/DD/YYYY): ");
            dateOfBirth = keyIn.readLine();

            PersonalContact entry;
            entry = new PersonalContact(firstName, lastName, address, email, 
            phone, dateOfBirth);
            contactlist.add(entry);
            top++;
            try {
                entry.write();
            } catch (Exception e) {
            }

        } else if (contactType == 2) {
            System.out.print("First Name: ");
            firstName = keyIn.readLine();
            System.out.print("Last Name: ");
            lastName = keyIn.readLine();
            System.out.print("Address: ");
            address = keyIn.readLine();
            System.out.print("E-mail address: ");
            email = keyIn.readLine();
            System.out.print("Phone number: ");
            phone = keyIn.readLine();
            System.out.print("Job Title: ");
            jobTitle = keyIn.readLine();
            System.out.print("Organization: ");
            organization = keyIn.readLine();

            BusinessContact entry;
            entry = new BusinessContact(firstName, lastName, address, email, 
            phone, jobTitle, organization);
            contactlist.add(entry);
            top++;
            try {
                entry.write();
            } catch (Exception e) {
            }

        }

    }

    public void view() {
    for (int index = 0; index < top; index++) {
        contactlist.get(index).viewContact();
        }
        }
    }

联系课程:

package contactlist;

    public class Contact {
    private String firstName;
    private String lastName;
    private String address;
    private String email;
    private String phone;

    public Contact(String firstName, String lastName, String address, String 
    email, String phone){
        this.firstName = firstName;
        this.lastName = lastName;
        this.address = address;
        this.email = email;
        this.phone = phone;
    }

    public String getfirstName() {
        return this.firstName;
    }

    public String setfirstName(){
        return (this.firstName = firstName);
    }

    public String getlastName() {
        return this.lastName;
    }

    public String setlastName(){
        return (this.lastName = lastName);
    }

    public String getAddress() {
        return this.address;
    }

    public String setAddress(){
        return (this.address = address);
    }

    public String getEmail() {
        return this.email;
    }

    public String setEmail(){
        return (this.email = email);
    }

    public String getPhone() {
        return this.phone;
    }

    public String setPhone(){
        return (this.phone = phone);
    }

    String getFirstName() {
        return firstName;
    }

    String getLastName() {
        return lastName;
    }

public void viewContacts() {
System.out.println(this.getfirstName());
System.out.println(this.getlastName());
.....
}

业务联系子类:

package contactlist;

    public class BusinessContact extends Contact {

    private String jobTitle;
    private String organization;

    public BusinessContact(String firstName, String lastName, String address, 
    String email, String phone, String jobTitle, String organization) {
        super(firstName, lastName, address, email, phone);
        this.jobTitle = jobTitle;
        this.organization = organization;
    }

    public String getJobTitle() {
        return jobTitle;
    }

    public void setJobTitle(String jobTitle) {
        this.jobTitle = jobTitle;
    }

    public String getOrganization() {
        return organization;
    }

    public void setOrganization(String organization) {
        this.organization = organization;
    }

    void write() {
        throw new UnsupportedOperationException("Not supported yet."); //To 
    change body of generated methods, choose Tools | Templates. 
    }

public void viewContacts() {
super.viewContacts();
System.out.println(this.getOrganization());
System.out.println(this.getJobTitle());
}
    }

同样你可以为其他班做。我只是在说一个主意。

答案 1 :(得分:0)

List<Contact> contactlist = new ArrayList<>();

看起来你的contactList实际上是Contact类型的超类对象,并且用它表示你将无法访问子类的方法/属性,因为它不知道它们,我想你已经尝试了,但它会告诉你我认为没有找到的符号。

也许你可以创建另一个实际包含两个集合的类,一个用于PersonalContactBusinessContact,并添加一个方法将其添加到适当的列表中。它可能有点矫枉过正,但这是我唯一能想到的,你仍然会满足你的Collection要求。希望它有所帮助,并为您提供一个起点。