在大二第一学期的时候,在学习了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 list=new LinkedList(); 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 list=new LinkedList(); 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简易通讯录不用数据库_大二用java开发的一个不用数据库支持的通讯录
最新推荐文章于 2023-03-17 15:03:10 发布