`

大二用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("通讯录");

   }
 
 
 
 
}



1
0
分享到:
评论

相关推荐

    JAVA+SQL数据库电子通讯录带系统托盘

    JAVA+SQL电子通讯录带系统托盘JAVA+SQL数据库电子通讯录带系统托盘JAVA+SQL数据库电子通讯录带系统托盘JAVA+SQL数据库电子通讯录带系统托盘JAVA+SQL数据库电子通讯录带系统托盘JAVA+SQL数据库电子通讯录带系统托盘...

    JAVA 连接数据库 同学通讯录

    1)设计有5个进程并发执行的模拟调度程序,每个程序由一个PCB表示。 2)模拟调度程序可任选两种调度算法之一实现(有能力的同学可同时实现两个调度算法)。 3)程序执行中应能在屏幕上显示出各进程的状态变化,以...

    java+数据库实现个人通讯录的各种操作

    这个项目通常涉及使用Java语言来设计用户界面,处理数据输入和输出,并通过数据库存储和检索联系人信息。以下是对"java+数据库实现个人通讯录的各种操作"这一主题的详细解释。 首先,我们需要理解Java在其中的角色...

    java+SQL数据库通讯录

    【Java+SQL数据库通讯录】项目是一个使用Java编程语言与MySQL数据库进行交互的简单应用程序,主要功能是实现一个基于控制台的联系人管理工具。在这个项目中,Java作为客户端,负责用户界面的交互以及与数据库的通信...

    C#结合数据库开发的通讯录管理系统

    在信息技术领域,开发一个实用的通讯录管理系统是常见的需求,尤其是在企业环境中。本系统采用C#编程语言,结合SQL Server数据库,利用Windows Forms(winform)作为用户界面,构建了一个高效、易用的通讯录管理平台...

    课程设计-java swing带GUI界面的通讯录管理系统(源码+数据库+运行截图).zip

    总的来说,这个Java Swing通讯录管理系统提供了一个实用的案例,展示了如何利用Java GUI库和数据库技术来开发桌面应用。它可以帮助初学者理解Swing组件的使用、数据库操作、MVC设计模式以及良好的编程实践。同时,...

    MFC做的一个连数据库的通讯录

    本项目利用MFC框架开发了一个连接到Access数据库的通讯录应用,这对于初学者来说是一个很好的实践案例。在本文中,我们将深入探讨如何使用MFC与Access数据库进行交互,以及如何构建一个简单的通讯录应用。 首先,...

    java通讯录使用Acess数据库保存

    在Java编程中,创建一个通讯录应用并利用Access数据库来存储数据是一个常见的实践。这个项目可能涉及了多个关键知识点,包括Java编程基础、数据库连接、JDBC(Java Database Connectivity)API使用、对象-关系映射...

    Java+Swing+Mysql实现通讯录管理系统源码

    综上所述,这个"Java+Swing+Mysql实现通讯录管理系统源码"项目是一个综合性的Java编程实践,涵盖了GUI设计、数据库操作和异常处理等多个核心知识点,对于学习Java桌面应用开发和数据库管理具有很高的参考价值。...

    基于java 开发的通讯录软件

    本项目是广东一所211大学的学生在学习Java后进行的课程设计,其目标是开发一个功能完备的通讯录软件,它不仅包含了基本的用户界面,还涵盖了相关的代码实现。 【描述】:“某广东211大学学习java后要交的一个课程...

    基于数据库的通讯录

    在实现【基于数据库的通讯录】时,开发人员首先会设计数据库表结构,然后使用Java编写后端服务,通过Hibernate与MySQL进行数据交互。前端部分可能使用Swing或JavaFX等工具创建用户界面,允许用户输入、查看和管理...

    java课程设计 通讯录 access数据库

    在这个项目中,学生通常会被要求使用Java语言来创建一个能够存储、查询和管理联系人信息的应用,同时利用Access数据库来持久化这些数据。以下是一些关于这个课程设计的关键知识点: 1. **Java编程基础**:首先,你...

    [毕业设计] Java环境下SQL数据库电子通讯录带托盘应用开发.zip

    [毕业设计] Java环境下SQL数据库电子通讯录带托盘应用开发

    JAVA + ACCESS数据库 通讯录

    从给定的文件信息来看,这是一段Java代码示例,旨在实现一个基于Java和Microsoft Access数据库的简单通讯录应用程序。下面将详细解析并总结出关键的知识点。 ### Java + ACCESS数据库通讯录 #### 一、项目背景与...

    java通讯录系统——只是java 没有用到数据库

    本篇将详细探讨一个基础的、不依赖数据库的Java通讯录系统,旨在帮助初学者了解如何仅用Java语言实现一个简单但实用的通讯录功能。 通讯录系统,作为日常生活中常见的信息管理工具,主要用于存储、查询和管理联系人...

    简单的数据库版通讯录

    【数据库版通讯录】是一个适合初学者的项目,旨在通过数据库技术实现一个基本的联系人管理功能。这个项目的核心在于如何有效地存储、管理和检索个人的联系信息,如姓名、电话号码、电子邮件地址等。在本项目中,我们...

    java图形化界面实现的个人通讯录管理系统

    Java图形化界面实现的个人通讯录管理...总之,这个个人通讯录管理系统结合了Java GUI编程、数据管理、用户认证和权限控制等多个IT领域的核心知识点,是一个综合性的项目,对于学习和提升Java应用开发能力非常有帮助。

    通讯录代码 数据库 MFC vc 通讯录代码数据库

    在本项目中,我们主要关注的是使用MFC(Microsoft Foundation Classes)框架开发一个基于VC++(Visual C++)的通讯录应用。MFC是微软提供的一套C++类库,用于简化Windows应用程序的开发,它封装了Windows API,使得...

    通讯录 数据库课程设计

    综上所述,通过本次课程设计的学习和实践,学生不仅能够掌握数据库系统的设计与开发流程,还能深入了解如何运用Java和SQL Server 2000等工具来构建实用的通讯录管理系统。这种实践经验对于提升学生的综合技能具有...

    简单通讯录简单通讯录

    此外,为了提高用户体验,我们可以设计一个简单的图形用户界面(GUI),如使用Java Swing或JavaFX。在本项目中,`PhonePage.jar`可能就是实现了GUI功能的应用程序。用户可以通过界面输入联系人信息,并点击按钮执行...

Global site tag (gtag.js) - Google Analytics