从数据文件读取和写入的地址簿 [英] Address book that reads and write from a data file

查看:118
本文介绍了从数据文件读取和写入的地址簿的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在做一个通讯录的小程序,该程序允许用户:添加联系人,搜索联系人和删除联系人。所有这些数据都被读取并写入 .dat文件

I'm doing a small program an addressbook that allows the user to: add contact, search contact and delete contact. All of this data is read and written to .dat file.

此外,如何在数据文件中创建布局,(即名称,姓氏,地址和编号)?

我在Java上很糟糕,需要完成此操作。

Also, how would you create a layout in the data file, (i.e. name, lastname, address and number)?
I'm terrible at Java and I need to get this done.

我的代码:

public interface Inter
{
    //Interface class 
    public void addContact();
    public void deleteContact();
    public void searchContact();
    public void readFile();
}

public class Contact
{
    static String name;
    static String lastName;
    static String address;
    static String number;

    public Contact () { }
}

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader; // reads from dat file
import java.io.FileWriter; // writes from dat file
import java.io.IOException;
import java.io.InputStreamReader; 

public class Phonebook extends Contact implements Inter
{
    public static void main(String[] args)
    {
    } // main

    @Override
    public void deleteContact() { }

    @Override
    public void searchContact() { }

    @Override
    public void addContact() 
    {
        String details = null;
        System.out.println("Enter new contact i.e name:number:lastname ");
        InputStreamReader converter = new InputStreamReader(System.in);
        BufferedReader in = new BufferedReader(converter);

        try
        {
            details=in.readLine();
            String[] tokens =details.split(":"); // eg david :098:Needham
            name= tokens[0];
            lastName = tokens[1];
            address = tokens[2];
            number = tokens[3];
        }  catch (IOException e1) { }

        FileWriter fw = null; // writes contact info to the dat file
        try 
        {
            fw = new FileWriter("data.dat");
            fw.write(name);
            fw.write(lastName);
            fw.write(address);
            fw.write(number);
         } catch (IOException e) { }
         BufferedWriter bw = new BufferedWriter(fw);
    }

    public void readFile() // reads contacts from dat file
    {
        try
        {
            BufferedReader in = new BufferedReader(new FileReader("data.dat"));
            String str;
            while ((str = in.readLine()) != null) 
            {}
         } catch(Exception ex) { }
     }
}


推荐答案

您的文件格式应为 .csv ,因此看起来像这样:

Your file format should be a .csv, so it would look like:

name,lastname,address,number,
name,lastname,address,number,
name,lastname,address,number,

I知道我不应该为您发布代码,但是在这里:

I know I shouldn't be posting code for you, but here:

class Contact {
  public String name, lastname, address, number;

  public Contact(String name, String lastname, String address, String number) {
    this.name = name;
    this.lastname = lastname;
    this.address = address;
    this.number = number;
  }

  public boolean equals(Contact c) {
    if(name.equals(c.name) && lastname.equals(c.lastname)
          && address.equals(c.address) && number.equals(c.number))
      return true;
    return false;
  }

  public String toString() {
    return name+","+lastname+","address+","+number+",";
  }
}

public class ContactDriver {
  public ArrayList<Contact> contacts = new ArrayList<Contact>();

  public static void addContact(Contact c) {
    contacts.add(c);
  }

  public static Contact deleteContact(Contact c) {
    return contacts.remove(c);
  }

  public static int searchContact(Contact c) {
    for(int i = 0; i < contacts.size(); i++)
      if(contacts.get(i).equals(c))
        return i;
    return -1;
  }

  public static void readContacts(String file) throws Exception {
    Scanner in = new Scanner(new File(file)).useDelimiter(",");

    while(in.hasNextLine()) {
      addContact(in.next(), in.next(), in.next(), in.next());
    }
  }

  public static void writeContacts(String fileName) {
    FileWriter dest = new FileWriter(fileName);

    for(Contact c : contacts)
      dest.write(c.toString());
  }

  public static void main() {
    readContacts();
    // Do logical stuffs
    writeContacts();
  }
}

该代码未经测试,所以我将编辑任何内容

That code is untested, so I'll edit anything that has an error.

乐于学习更多Java!

Have fun learning more Java!

这篇关于从数据文件读取和写入的地址簿的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆