具有更多课程的地址簿程序

最后发布: 2011-12-12 02:11:12


问题

你好。 我正在寻找帮助,将我的代码分成不同的类,以便更好地运行。

这是一个简单的地址簿程序,允许用户执行以下操作:

  1. 增加联系人

  2. 搜索

  3. 删除

  4. 全部显示

  5. 出口

我是java的新手,所以我需要所有的帮助!

我的代码:

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class AddressBookOperations
{


    public static void main(String[] args) throws IOException
    {
        String s = null;
        String s2 = null;
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

        // Console in = System.console();

        while (s2 != "5"){
        System.out.println(" Welcome, Please enter an option: \n"
                             + "---------------------------------\n"
                        + " 1- Add contact\n 2- search contact\n 3- delete contact\n 4- display all contacts\n 5- exit\n");
        s2 = in.readLine();

        if (s2.equals("5"))
        {
            System.exit(0);
        }

        else
        {
            s = s2;
        }

        if (s != null)
        {
            String dataLine;
            String data;
            if (s.equals("1")) {
                System.out.println("Enter Name: ");
                dataLine = in.readLine();
                data = dataLine;
                in = new BufferedReader(new InputStreamReader(System.in));
                System.out.println("Enter LastName: ");
                dataLine = in.readLine();
                data = data + "--" + dataLine;
                System.out.println("Enter Address: ");
                dataLine = in.readLine();
                data = data + "--" + dataLine;
                System.out.println("Enter PhoneNumber: ");
                dataLine = in.readLine();
                data = data + "--" + dataLine;
                writeToFile("AddressBookData.dat", data, true, true);
            }
            else if (s.equals("2")) // Search contact
            {
                System.out.println("Enter Name 0r PhoneNumber: ");
                dataLine = in.readLine();
                String result = readFromFile("C:/AddressBookData.dat", dataLine);
                System.out.println("Search Results\n" + result);
            }
            else if (s.equals("3")) // Delete contact
            {
                System.out.println("Enter Name: ");
                dataLine = in.readLine();
                data = dataLine;
                System.out.println("PhoneNumber: ");
                dataLine = in.readLine();
                data = data + "--" + dataLine;
                deleteFromFile("AddressBookData.dat", data);
            }
            else if (s.equals("4")) // Display all contacts
            {
                String result = readFromFile("AddressBookData.dat", null);
                System.out.println("All contacts\n" + result);



                }
            }
        }
    }

    private static void deleteFromFile(String string, String dataLine) 
    {
        String data = readFromFile(string, null);
        data = data.replaceAll(dataLine, "");
        writeToFile(string, data, false, false);
    }

    public static boolean writeToFile(String fileName, String dataLine,
            boolean isAppendMode, boolean isNewLine) {
        if (isNewLine) {
            dataLine = "\n" + dataLine;
        }

        try {
            File outFile = new File(fileName);
            DataOutputStream dos;
            if (isAppendMode) {
                dos = new DataOutputStream(new FileOutputStream(fileName, true));
            } else {
                dos = new DataOutputStream(new FileOutputStream(outFile));
            }

            dos.writeBytes(dataLine);
            dos.close();
        } catch (FileNotFoundException ex) {
            return (false);
        } catch (IOException ex) {
            return (false);
        }
        return (true);

    }


     // Reads data from a given file

    public static String readFromFile(String fileName, String dataLine2)
    {
        String DataLine = "";
        String fileData = "";
        try
        {
            File inFile = new File(fileName);
            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(inFile)));

            if (dataLine2 != null)
            {
                while ((DataLine = br.readLine()) != null)
                {
                    if (DataLine.contains(dataLine2))
                    {
                        fileData = DataLine;
                    }
                }
            }

            else
            {
                while ((DataLine = br.readLine()) != null)
                {
                    fileData = fileData + "\n" + DataLine;
                    //System.out.println(DataLine);
                }
            }
            br.close();
        }

        catch (FileNotFoundException ex)
        {
            return (null);
        } catch (IOException ex)
        {
            return (null);
        }
        return (fileData);

    }

    public static boolean isFileExists(String fileName)
    {
        File file = new File(fileName);
        return file.exists();
    }
}
java class addressbook
回答

创建一个Contact类来存储Contact的信息。 您应该能够覆盖Contact类的ToString()方法,并且可以使用它来打印到文件。 这应该是一个好的开始。

您可以做的另一件事是将文件拉入List ,在程序的持续时间内将其保存在内存中,并在完成后将其写回文件。 磁盘IO将是该程序中最慢的部分,因此您希望尽可能避免这种情况。


回答

你之前几乎问了同样的问题,最后我给了你整个事情的所有代码。

这个问题在这里: 从数据文件读取和写入的地址簿

从那里,您需要做的就是将Contact放入名为Contact.java的文件中,并使类定义读取public class Contact { 然后使用ContactDriver执行相同操作。

另外,你现在已经问了三个与同一个项目有关的问题,基本上让我们为你编写整个项目。 编写代码时我真的没有问题,因为这对我来说是一个好习惯,但是我确实遇到了问题,你没有表现出任何努力,反复提出问题让我们为你编写整个应用程序。