程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> java-通訊錄中TXT文件讀取問題

java-通訊錄中TXT文件讀取問題

編輯:編程解疑
通訊錄中TXT文件讀取問題
 package in;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;


public class Demo extends JFrame {

    /*
     * 界面設計
     * */
    public Demo(){
        Container c = getContentPane(); //定義一個頂級容器c
        setAlwaysOnTop(true); //窗體置頂
        JPanel jp = new JPanel();   //新建JPanel面板--jp
        JButton button1 = new JButton("新建聯系人");
        JButton button2 = new JButton("刪除聯系人");
        JButton button3 = new JButton("編輯聯系人");
        JButton button4 = new JButton("查找聯系人");
        JButton button5 = new JButton("顯示所有聯系人");
        JButton button6 = new JButton("保存聯系人到本地");
        JButton button7 = new JButton("讀取本地聯系人");
        jp.setLayout(new GridLayout(3,4,5,5));//新建網格布局管理器(行數,列數,組件間的水平垂直間距)
        jp.add(button1);
        jp.add(button2);
        jp.add(button3);
        jp.add(button4);
        jp.add(button5);
        jp.add(button6);
        jp.add(button7);
        c.add(jp);//將JPanel面板jp添加到頂級容器c中
        setSize(600,150);
        setTitle("*通 訊 錄 管 理 系 統*");
        setVisible(true);
        setResizable(false);//窗體大小由程序員決定,用戶不能自由改變大小
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);


        /*
         *按鍵響應
         * 
         * */
        button1.addActionListener(new ActionListener(){//添加功能實現 

            public void actionPerformed(ActionEvent arg0){
                Infro.addFunction();
            }
        });
        button2.addActionListener(new ActionListener(){//刪除功能實現
            public void actionPerformed(ActionEvent arg0){
                Infro.deleteFunction();
            }
        });
        button3.addActionListener(new ActionListener(){//修改功能實現
            public void actionPerformed(ActionEvent arg0){
                Infro.reditFunction();
            }
        });
        button4.addActionListener(new ActionListener(){//查詢功能實現
            public void actionPerformed(ActionEvent arg0){
                try {
                    Infro.searchFunction();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
        button5.addActionListener(new ActionListener(){//顯示功能實現
            public void actionPerformed(ActionEvent arg0){
                Infro.showFunction();
            }
        });
        button6.addActionListener(new ActionListener(){//保存功能實現
            public void actionPerformed(ActionEvent arg0){
                try {
                    Infro.writeFunction();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
        button7.addActionListener(new ActionListener(){//讀取功能實現
            public void actionPerformed(ActionEvent arg0){
                try {
                    Infro.readFunction();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new Demo();
        Infro a = new Infro("", "", "", "", "", "");
    }

}

package in;


import java.applet.Applet;
import java.awt.Graphics;
import java.io.BufferedReader;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

import javax.swing.JPanel;



class Infro {
    public String Name;
    public String Sex;
    public String Unit;
    public String Homephone;
    public String Telephone;
    public String E_mail;
    static int index = 0;
    static ArrayList<Infro> list = new ArrayList();
    static int len = list.size();
    //構造函數
    public Infro(String Name,String Sex,String Unit,String Homephone,String Telephone,String E_mail){
        this.Name = Name;
        this.Sex = Sex;
        this.Unit = Unit;
        this.Homephone = Homephone;
        this.Telephone = Telephone;
        this.E_mail = E_mail;
    }
    public String toString(){
        return "姓名:"+Name+"\t性別:"+Sex+"\t單位:"+Unit+"\t住宅電話:"+Homephone
                +"\t移動電話:"+Telephone+"\tE_mail:"+E_mail;
    }

    /*
                            * 添加功能
     * */
    public static void addFunction(){//添加功能
        Infro infro = new Infro("","","","","","");
        System.out.println("請輸入添加的數據:");
        Scanner in = new Scanner(System.in);
        System.out.println("輸入姓名:");
        infro.Name = in.next();
        System.out.println("輸入性別:");
        infro.Sex = in.next();
        System.out.println("輸入單位:");
        infro.Unit = in.next();
        System.out.println("輸入住宅電話:");
        infro.Homephone = in.next();
        System.
        out.println("輸入移動電話:");
        infro.Telephone = in.next();
        System.out.println("輸入E_mail:");
        infro.E_mail = in.next();
        list.add(index,infro);
        index++;
        if(list.isEmpty()){
            System.out.println("數據添加失敗啦");
        }else{
            System.out.println("數據添加成功啦");
            len++;//list集合長度加一
//          System.out.println(list.get(0).toString());
        }
        System.out.println("是否繼續添加?1.是   2.否");
        Scanner e=new Scanner(System.in);
        int e1=e.nextInt();
        if(e1==1){
            Infro.addFunction();
        }else{
            return;
        }
    }

    /*
                            * 刪除功能
     * */
     public static void deleteFunction(){
         System.out.println("輸入要刪除的聯系人的姓名");
         Scanner in_2 = new Scanner(System.in);
         String d1 = in_2.nextLine();
         java.util.Iterator<Infro> it = list.iterator();
         while (it.hasNext()){
               Infro infro = it.next();
               if (infro.Name.equals(d1)){
                    it.remove();
                    --index;//一定要加這個,否則當做了刪除操作再做添加操作的時候會出現異常(類似於指針,棧)
                    System.out.println("刪除完畢"+"此時通訊錄記錄條數為:" + --len);
               }
            }
         System.out.println("是否繼續刪除?1.是   2.否");
         Scanner e=new Scanner(System.in);
         int e1=e.nextInt();
         if(e1==1){
            Infro.deleteFunction();
         }else{
            return;
        }
     }
     /*
      *                     修改功能
      * */
     public static void reditFunction(){
         System.out.println("輸入要修改的通訊錄的姓名");
         Scanner in_r = new Scanner(System.in);
         String r1 = in_r.nextLine();
         for(int a = 0; a < len;a++){
             if(r1.equals(list.get(a).Name)){
                 System.out.println("輸入修改後的性別:");
                 String Sex_1 = in_r.next();
                 list.get(a).Sex = Sex_1;
                 System.out.println("輸入修改後的單位:");
                 String Unit_1 = in_r.next();
                 list.get(a).Unit = Unit_1;
                 System.out.println("輸入修改後的住宅電話:");
                 String Homephone_1 = in_r.next();
                 list.get(a).Homephone = Homephone_1;
                 System.out.println("輸入修改後的移動電話:");
                 String Telephone_1 = in_r.next();
                 list.get(a).Telephone = Telephone_1;
                 System.out.println("輸入修改後的E_mail:");
                 String E_mail_1 = in_r.next();
                 list.get(a).E_mail = E_mail_1;
                 System.out.println("數據修改完畢");
             }
         }
         System.out.println("是否繼續修改?1.是   2.否");
         Scanner e=new Scanner(System.in);
         int e1=e.nextInt();
         if(e1==1){
            Infro.reditFunction();
         }else{
            return;
         }
     }
        /*
                                * 查詢功能
        * */

     public static void searchFunction() throws Exception{//查詢功能

        System.out.println("請選擇查詢方式: ");
        System.out.println("1.姓名    2.性別    3.單位   4.住宅電話   5.移動電話   6.E_mail ");
        Scanner in_0=new Scanner(System.in);
        int s0=in_0.nextInt();
        if(s0==1){
        System.out.println("請輸入要查詢的姓名:");
        Scanner in_1 = new Scanner(System.in);
        String s1=in_1.nextLine();
        for(int a= 0; a<len;a++){//切記,,這裡不能用a<=list.size(),否則會數組越界異常
            if(s1.equals(list.get(a).Name)){
                System.out.println(list.get(a).toString());
            }
        }
        }
        else if(s0==2){
            System.out.println("請輸入要查詢的性別:");
            Scanner in_2 = new Scanner(System.in);
            String s2=in_2.nextLine();
            for(int a= 0; a<len;a++){//切記,,這裡不能用a<=list.size(),否則會數組越界異常
                if(s2.equals(list.get(a).Sex)){
                    System.out.println(list.get(a).toString());
                }
            }
        }
        else if(s0==3){
            System.out.println("請輸入要查詢的單位:");
            Scanner in_3 = new Scanner(System.in);
            String s3=in_3.nextLine();
            for(int a= 0; a<len;a++){//切記,,這裡不能用a<=list.size(),否則會數組越界異常
                if(s3.equals(list.get(a).Unit)){
                    System.out.println(list.get(a).toString());
                }
            }
        }
        if(s0==4){
            System.out.println("請輸入要查詢的住宅電話:");
            Scanner in_4 = new Scanner(System.in);
            String s4=in_4.nextLine();
            for(int a= 0; a<len;a++){//切記,,這裡不能用a<=list.size(),否則會數組越界異常
                if(s4.equals(list.get(a).Homephone)){
                    System.out.println(list.get(a).toString());
                }
            }
        }
        else if(s0==5){
            System.out.println("請輸入要查詢的移動電話:");
            Scanner in_5 = new Scanner(System.in);
            String s5=in_5.nextLine();
            for(int a= 0; a<len;a++){//切記,,這裡不能用a<=list.size(),否則會數組越界異常
                if(s5.equals(list.get(a).Telephone)){
                    System.out.println(list.get(a).toString());
                }
            }
        }
        else if(s0==6){
            System.out.println("請輸入要查詢的E_mail:");
            Scanner in_6 = new Scanner(System.in);
            String s6=in_6.nextLine();
            for(int a= 0; a<len;a++){//切記,,這裡不能用a<=list.size(),否則會數組越界異常
                if(s6.equals(list.get(a).E_mail)){
                    System.out.println(list.get(a).toString());
                }
            }
        }
    }

    /*
                            * 顯示功能
     * */
    public static void showFunction(){
        for(int i = 0 ;i<len;i++){
            System.out.println(list.get(i).toString());
        }
    }
    /*
     *                      保存功能
     * */
    public static void writeFunction() throws IOException{
        FileWriter writer = new FileWriter("通訊錄管理.txt");
        for(int i = 0 ;i<len;i++){
            String []strwriter = new String[len];
            strwriter[i]=list.get(i).toString();
            writer.write(strwriter[i]);
            writer.write("\r\n");
            System.out.println("成功寫入一行數據到 通訊錄管理.txt 中");
        }
        writer.close();//關閉寫入流,釋放資源
    }
    /*
     *                      讀取功能
     * */
    public static void readFunction() throws IOException{
        FileReader reader = new FileReader("通訊錄管理.txt");
        BufferedReader br = new BufferedReader(reader);
        String str;
        while((str = br.readLine()) != null){//每次讀取一行文本,判斷是否到達文件尾
            System.out.println(str);
        }
        br.close();
    }
}

課程設計中遇到了問題… 在運行時輸入,可以查詢,編輯等操作。可是保存到本地後退出運行,第二次再運行時讀取本地聯系人,就沒辦法執行查詢操作了。我改了好久還是不行,請各位哥哥姐姐幫忙看一下,拜托~因為還沒有學數據庫,只能用文件了。
超過20個分屏顯示就不要了,因為貌似java沒有分屏顯示……其他的功能,按姓名排序也希望你們能給些思路,謝謝謝謝

這是題目:
3. 以本班同學的具體數據為背景,設計一個本班同學通訊錄(3人)
通訊錄要求存儲姓名、性別、單位、住宅電話、移動電話、E-mail地址等內容。系統功能要求如下:
(1)通訊錄記錄按姓名排序存放,顯示時每屏不超過20個記錄,超過時分屏顯示。
(2)增加某人的通訊錄。
(3)修改某人的通訊錄。
(4)刪除某人的通訊錄。
(5)按多種方式查詢符合條件的信息。

最佳回答:


你重新打開新的程序 必須先執行加載功能 把文件裡的數據加載到list中
因為你的查詢代碼遍歷的是list 如果你不執行加載 遍歷一個空的list當然就沒有數據了。
並且 我發現 你再次打開一個 重新新增會把原來的文件覆蓋掉。所以我覺得必須寫一個static靜態塊,加載文件中內容對list進行初始化

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved