大二用java开发的一个不用数据库支持的通讯录

在大二第一学期的时候,在学习了JAVA中的输入输出流后老师要我们做一个通讯录。其功能可以添加删除和在关闭时保存信息,保存和导入数据用的技术是纯粹的IO流,没有设计到数据库,呵呵,功能是实现出来了,但效率可能不怎么好,希望高手们看完后给小弟点意见,我会改进的,OK,以下是我的原代码和试用方法说明:

代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.swing.border.*;
import java.util.*;
class People implements Serializable
{
static int j;
   static int j2=0;
   static int j3=0;
   static int munber=0;    //这个就是整个程序的计数器


private static final long serialVersionUID = 3757263881374182471L;
    String ID;
String Name;
String Address;
String Phone;
String Work;
protected Object length;
People(String ID,String Name,String Address,String Phone,String Work)
{
   this.ID=ID;
   this.Name=Name;
   this.Address=Address;
   this.Phone=Phone;
   this.Work=Work;
  
 
}

String getID()
{
 
   return ID;
 
}

String getName()
{
   return Name;
 
 
}

String getAddress()
{
   return Phone;
 
}

String getWork()
{
 
   return Work;
}

static public String id()//变数据为字符
{
   int jj=j;
   Integer id=new Integer(2);
   id=jj;
   String iD=id.toString();

   return iD;

}
static public String id2()//添加自加功能的方法,显示在文本框上
{
   int j1=j+1;
   Integer id2=new Integer(1);
   id2=j1;
   String jd=id2.toString();
   return jd;
 
 
 
}

    public String getValue()
    {
    String value="ID号:"+ this.ID+"    "+"姓名:"+this.Name+"    "+"地址:"+this.Address+"    "+"电话:"+this.Phone+"    "+"单位:"+this.Work+'\n';
    return value;
   
   
    }
}


    public class tongxunlu extends JFrame
{
  
private static final long serialVersionUID = 1057782438609006743L;
   //初始化窗口实现类
JTextField ID;
JTextField Name;
JTextField Address;
JTextField Phone;
JTextField Work;

JTextField IDc;
JTextField Namec;
JTextField Addressc;
JTextField Phonec;
JTextField Workc;

JButton Add;
JButton Clear;
JButton Load;
JButton Save;
JButton Delect;
JButton Check;
JPanel P1;
JPanel P2;
JTextArea Show;
JTextArea Show2;
JTabbedPane p;
    Box baseBox,baseBox2,boxV1,boxV2,boxV3,boxV4,boxV5;
   
FileOutputStream fileOut;
    ObjectOutputStream objectOut;
FileInputStream fileIn;
ObjectInputStream objectIn;
FileOutputStream fileOut2;
FileInputStream fileIn2;
DataInputStream dataInput;
DataOutputStream dataOutput;
FileWriter out;
FileReader in;

People p1[]=new People[100];                  //构造存储数组
People personLoad[]=new People[100];
People personSave[]=new People[100];
People person[]=new People[100];                      //定义person为保存对象的数组,容量是100个对象



tongxunlu (String s)
{ super(s);            
      Container con=getContentPane();       
      Show=new JTextArea();
      Show2=new JTextArea();
      p=new JTabbedPane();
      P1=new JPanel();
      P2=new JPanel();
     
      ID=new JTextField(4);
      Name=new JTextField(6);
      Address=new JTextField(20);
      Phone=new JTextField(8);
      Work=new JTextField(18);
     
      IDc=new JTextField(4);
      Namec=new JTextField(6);
      Addressc=new JTextField(20);
      Phonec=new JTextField(8);
      Workc=new JTextField(18);
     
      Add=new JButton("添加");
      Clear=new JButton("清空");
      Load=new JButton("导入资料");
   Delect=new JButton("删除");
   Save=new JButton("保存");
   Check=new JButton("查询");
  
     boxV1=Box.createVerticalBox();
     boxV1.add(new JLabel("输入您的ID:"));
     boxV1.add(Box.createVerticalStrut(31));
     boxV1.add(new JLabel("请输入您的姓名:"));
     boxV1.add(Box.createVerticalStrut(31));
     boxV1.add(new JLabel("请输入您的地址:"));
     boxV1.add(Box.createVerticalStrut(31));
     boxV1.add(new JLabel("请输入您的电话:"));
     boxV1.add(Box.createVerticalStrut(31));
     boxV1.add(new JLabel("请输入您的单位:"));
     boxV2=Box.createVerticalBox();
     boxV2.add(ID);
     boxV2.add(Box.createVerticalStrut(8));
     boxV2.add(Name);
     boxV2.add(Box.createVerticalStrut(8));
     boxV2.add(Address);
     boxV2.add(Box.createVerticalStrut(8));
     boxV2.add(Phone);
     boxV2.add(Box.createVerticalStrut(8));
     boxV2.add(Work);
     baseBox=Box.createHorizontalBox();
     baseBox.add(boxV1);
     baseBox.add(Box.createHorizontalStrut(10));
     baseBox.add(boxV2);
    
     boxV3=Box.createVerticalBox();
     boxV3.add(new JLabel("输入您要查找或删除的ID:"));
     boxV3.add(Box.createVerticalStrut(8));   
     boxV4=Box.createVerticalBox();
     boxV4.add(Box.createVerticalStrut(100));
     boxV4.add(IDc);
     boxV4.add(Box.createVerticalStrut(110));    
    
     boxV5=Box.createVerticalBox();
     boxV5.add(Check);
     boxV5.add(Box.createVerticalStrut(8));
     boxV5.add(Delect);
     boxV5.add(Box.createVerticalStrut(8));
    
     baseBox2=Box.createHorizontalBox();
     baseBox2.add(boxV3);
     baseBox2.add(Box.createHorizontalStrut(10));
     baseBox2.add(boxV4);
     baseBox2.add(Box.createHorizontalStrut(10));
     baseBox2.add(boxV5);
    
    
    
    
     p.add("添加信息", baseBox);
     p.add("查询或删除", baseBox2);
     p.add("显示",new JScrollPane(Show));
     p.add("资料库",new JScrollPane(Show2));
     p.validate();

   P2.add(Add);
   P2.add(Clear);
   P2.add(Save);
   P2.add(Load);
   con.add(p,BorderLayout.CENTER);
   con.add(P2,BorderLayout.SOUTH);
   con.validate();
   setBounds(0,0,333,333);
     setVisible(true);
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    
    
   Add.addActionListener(new ActionListener(){                   //至此完成了窗口的设置.以下开始功能实现了
    public void actionPerformed(ActionEvent e){  
      String iid=ID.getText();
      People.j=Integer.parseInt(iid);
      ID.setText(People.id2());
    String name=Name.getText();
    String address=Address.getText();
    String phone=Phone.getText();
    String work=Work.getText();
    int count=People.j-1;                                        //记录添加人数下标
    try{
          personSave[count]=new People(People.id(),name,address,phone,work);
             String value=personSave[count].getValue();
             String value2="您刚刚添加的信息是:"+value;
             Show.insert(value2,Show.getDocument().getLength());//可在当前显示插入信息
               
    }
    catch(Exception a){System.out.println(a);}  
    }  
   });
  
    Save.addActionListener(new ActionListener(){                           //此方法可以把保存数组里面的所有当前对象写入文件
   public void actionPerformed(ActionEvent e2){
   try{
    File f=new File("a.txt");
    fileOut=new FileOutputStream(f);
      objectOut=new ObjectOutputStream(fileOut);         
   }
   catch(Exception a)
   {
    System.out.println(a);
    }
    for(int i2=0;i2<=People.j-1;i2++)
       {
  
    try {
    
     objectOut.writeObject(personSave[i2]);
   
   
   
    }
    catch (IOException e22) {
   
     e22.printStackTrace();
    }
 
       }
 
      }

});


        Load.addActionListener(new ActionListener(){                           //此方法可以把文件里面的保存对象读入
   public void actionPerformed(ActionEvent e2){
 
   try{
    int n=0;  
      fileIn=new FileInputStream("a.txt");
      objectIn=new ObjectInputStream(fileIn);
     while(( personSave[n]=(People)objectIn.readObject())!=null)
     {        Show2.insert(personSave[n].getValue(),Show2.getDocument().getLength());
              People.munber=n;    //计数器计数
           n=n+1;
     
     }
    
     
      }
   
   catch(Exception a)
   {System.out.println(a.getMessage()); }
}});
 

Clear.addActionListener(new ActionListener(){                //此方法可以清楚文本框,方便填写
   public void actionPerformed(ActionEvent e){
   Address.setText("");
   Name.setText("");
   Work.setText("");
   Phone.setText("");
   }
   });



Check.addActionListener(new ActionListener(){              //此方法运用数据结构方法在链表里进行查找
   public void actionPerformed(ActionEvent e){
     LinkedList<People> list=new LinkedList<People>();
     for(int k=0;k<=People.munber;k++)
     {
     list.add(personSave[k]);    
    
     }
     int f=0;
     String iid=IDc.getText();     //把文本框的字符转为可以参加运算的整型数字
     f=Integer.parseInt(iid);
     People find=list.get(f-1);
     String message="您要查找的人的信息是:"+">"+find.getValue()+"\n";
     Show.insert(message,Show.getDocument().getLength());    
   }
   });


     
Delect.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e){
     LinkedList<People> list=new LinkedList<People>();
     for(int k=0;k<=People.munber;k++)
     {
     list.add(personSave[k]);    
    
     }
     int d=0;
     String iid=IDc.getText();
     d=Integer.parseInt(iid);
     People delect=list.remove(d-1);
     String message="您已经删除了的人的信息是:"+">"+delect.getValue()+"\n";
     Show.insert(message,Show.getDocument().getLength());
    // People replace=list.set(d-1, new People("", "", "", "", ""));    
    
     try{                                         //通过覆盖达到利用数据结构删除文件信息的功能
    File f=new File("a.txt");
    fileOut=new FileOutputStream(f);
      objectOut=new ObjectOutputStream(fileOut);         
   }
   catch(Exception a)
   {
    System.out.println(a);
    }
    for(int i2=0;i2<=People.munber;i2++)
       {
      personSave[i2]=list.get(i2);
                     
    
    try {
    
     objectOut.writeObject(personSave[i2]);
   
   
   
    }
    catch (IOException e22) {
   
     e22.printStackTrace();
    }
 
       }
    
    
    
    
   }
   });



}







   public static void main(String args[])
   {
  
new tongxunlu("通讯录");

   }
 
 
 
 
}



你可能感兴趣的:(java,数据结构,swing,F#,J#)