gpt4 book ai didi

java - Java通讯录程序

转载 作者:行者123 更新时间:2023-12-01 19:11:09 25 4
gpt4 key购买 nike

我只是在做一个小程序。这是一个地址簿,有四个选项:

  1. 插入新联系人
  2. 按姓氏搜索联系人
  3. 按姓名删除联系人
  4. 显示所有联系人
  5. 退出程序

只是想知道如何获取插入接触部件以及如何存储它。我对一个联系人进行了硬编码以对其进行测试。

这是我已经开始的代码

package addressbook;
import java.util.Scanner;

public class addressbooks
{


public static void main(String[] args)
{
Scanner input = new Scanner(System.in);

//create a table to hold information

String[][] addressbooks = new String[100][8];

addressbooks[0][0]="Mobile Number";
addressbooks[0][1]="First Name";
addressbooks[0][2]="Last Name";
addressbooks[0][3]="Address";
addressbooks[0][4]="City";
addressbooks[0][5]="County";
addressbooks[0][7]="Telephone Number";

//pre-populate address book for testing purposes and records

addressbooks[1][0]="1";
addressbooks[1][1]="David";
addressbooks[1][2]="Needham";
addressbooks[1][3]="Sraheens, Achill";
addressbooks[1][4]="Galway";
addressbooks[1][5]="Mayo";
addressbooks[1][6]="086-1581077";
addressbooks[1][7]="098-45368";

addressbooks[2][0]="2";
addressbooks[2][1]="Mc";
addressbooks[2][2]="lovin";
addressbooks[2][3]="Hawaii";
addressbooks[2][4]="Hawaii";
addressbooks[2][5]="Hawaii";
addressbooks[2][6]="12345";
addressbooks[2][7]="412-555-1234";

//menu options
System.out.print("Welcome to my Address book!");
System.out.print("\n");
System.out.print("\n1 - Insert a New Contact \n2 - Search Contact by Last Name \n3 - Delete Contact \n4 - Show All Contacts \n5 - Exit " );
System.out.print("\n");
System.out.print("\nChoose your option: ");

int option = input.nextInt();

if (option ==1)
{
System.out.print("\nPlease enter your First Name : ");
}
if (option ==2)
{
}

if (option ==3)
{
}

if (option ==4)
{
System.out.println(addressbooks[1][0]+
"\t"+addressbooks[1][2]+ ", "+addressbooks[1][1]+
"\n\t"+addressbooks[1][3]+
"\n\t"+addressbooks[1][4]+ ", "+addressbooks[1][5]+ " "+addressbooks[1][6]+
"\n\t"+addressbooks[1][7]);
}

if (option ==5)
{
}

}
}

最佳答案

我会这样开始:

package model;

public class Person {
private String firstName;
private String lastName;
// What else means something to your problem? Birthday?
// Constructors, getters (make them immutable), equals/hashCode
}

public class Address {
private String street;
private String city;
private String county;
private String postalCode;
// Constructors, getters (make them immutable), equals/hashCode
}

public class AddressBook {
private Map<Person, Address> contacts = new ConcurrentHashMap<Person, Address>();

public void addContact(Person p, Address a) {
this.contacts.put(p, a);
}

public void removeContact(Person p) {
this.contacts.remove(p);
}

public Collection<Person> findAllContacts() {
return new Collections.unmodifiableCollection(this.contacts.keySet());
}

public boolean hasContact(Person p) {
return this.contacts.contains(p);
}
// etc.
}

我建议将所有有关基于文本 IO 的内容与问题的基本原理分开。如果你做对了,下一步就是编写 Web UI。如果你做得正确的话,大部分代码都可以重用。

考虑对应用进行分层:

view->services->persistence

模型类可以在所有三层中使用。

推荐 JDBC 的答案并没有错。如果您将服务和持久性类编写为接口(interface),您会发现很容易将内存中的联系人 map 替换为使用 JDBC 的数据库版本:

package persistence;

public interface ContactDao {
Collection<Contact> find();
Contact find(Long id);
Collection<Contact> find(String lastName);
Collection<Contact> find(Address address);
Long save(Contact c);
void update(Contact c);
void delete(Contact c);
}

做事的方法有很多种。我已经改变了主意:我引入了一个 Contact 类:

package model; 

public class Contact {
private Person;
private Address;
}

关于java - Java通讯录程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8369928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com