📄 addressbook.java
字号:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class addressbook
{
public static void main(String args[])
{
new myfile();
}
}
class myfile extends Frame implements ActionListener
{
TextArea ta;
TextField name,email,phone,address,team;
Button bnext,quit,bpre,bnew,bsave,bdisp,bdelt,bdel,bmod,bsearch;
Label ln,le,lp,la,lt,ltm;
Choice mych;
List liteam;
info myinfo;
int n,k,j;
File myf;
RandomAccessFile in;
myfile()
{
super("简易通讯录");
myinfo=new info("同学","张三2","zhangsan2@163.com","88935047","hangzhou");
name=new TextField(10);
team=new TextField(10);
email=new TextField(20);
phone=new TextField(20);
address=new TextField(40);
ln=new Label("姓名:");
le=new Label("E-MAIL:");
lp=new Label("电话号码:");
la=new Label("家庭住址:");
lt=new Label("通讯录");
ltm=new Label("组别");
bnext=new Button("下一个");
bpre=new Button("前一个");
bnew=new Button("新建");
bsave=new Button("保存");
bdisp=new Button("显示组");
quit=new Button("退出");
bdelt=new Button("删除组");
bdel=new Button("删除");
bmod=new Button("修改");
bsearch=new Button("查找");
mych=new Choice();
liteam=new List(5,false);
bnext.addActionListener(this);
bpre.addActionListener(this);
bnew.addActionListener(this);
bsave.addActionListener(this);
quit.addActionListener(this);
bdisp.addActionListener(this);
liteam.addActionListener(this);
bdelt.addActionListener(this);
bdel.addActionListener(this);
bmod.addActionListener(this);
bsearch.addActionListener(this);
setLayout(null);
n=0;
add(lt);
lt.setBounds(155,30,480,20);
add(ln);
ln.setBounds(20,60,70,20);
add(name);
name.setBounds(100,60,100,20);
add(ltm);
ltm.setBounds(210,60,50,20);
add(team);
team.setBounds(260,60,100,20);
add(le);
le.setBounds(20,120,70,20);
add(email);
email.setBounds(100,120,150,20);
add(lp);
lp.setBounds(20,180,70,20);
add(phone);
phone.setBounds(100,180,150,20);
add(la);
la.setBounds(20,240,70,20);
add(address);
address.setBounds(100,240,240,20);
add(bnext);
bnext.setBounds(80,300,50,30);
add(bpre);
bpre.setBounds(20,300,50,30);
add(bmod);
bmod.setBounds(320,300,50,30);
add(bsearch);
bsearch.setBounds(380,300,50,30);
add(quit);
quit.setBounds(620,300,50,30);
add(bnew);
bnew.setBounds(140,300,50,30);
add(bsave);
bsave.setBounds(200,300,50,30);
add(bdel);
bdel.setBounds(260,300,50,30);
try{
myf=new File("a.dat");
in=new RandomAccessFile(myf,"rw");
while(in.getFilePointer()<in.length())
{
myinfo.readdata(in);
k=0;
for(j=0;j<mych.getItemCount();j++)
{
if(myinfo.indexinfo.equals(mych.getItem(j)))
{ k=1;}
}
if(k==0&&!myinfo.indexinfo.equals("#"))
mych.addItem(myinfo.indexinfo);
}
}
catch(IOException ioe)
{
System.err.println(ioe.toString());
}
add(mych);
mych.setBounds(420,60,50,30);
add(bdisp);
bdisp.setBounds(520,60,50,20);
add(bdelt);
bdelt.setBounds(580,60,50,20);
add(liteam);
liteam.setBounds(420,120,180,80);
setSize(700,400);
show();
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==liteam)
{
try{
in.seek(0);
while(in.getFilePointer()<in.length())
{
myinfo.readdata(in);
if(myinfo.name.equals(liteam.getSelectedItem()))
{
team.setText(myinfo.indexinfo);
name.setText(myinfo.name);
email.setText(myinfo.email);
phone.setText(myinfo.phone);
address.setText(myinfo.address);
}
}
}
catch(IOException ioe)
{
System.err.println(ioe.toString());
}
}
if(e.getActionCommand()=="下一个")
{
try{
if(in.getFilePointer()<in.length())
myinfo.readdata(in);
while(myinfo.indexinfo.equals("#")&&in.getFilePointer()<in.length())
myinfo.readdata(in);
if(!myinfo.indexinfo.equals("#"))
{
team.setText(myinfo.indexinfo);
name.setText(myinfo.name);
email.setText(myinfo.email);
phone.setText(myinfo.phone);
address.setText(myinfo.address);
//lt.setText(" "+in.getFilePointer());
}
}
catch(IOException ioe)
{
System.err.println(ioe.toString());
}
}
if(e.getActionCommand()=="前一个")
{
try{
if(in.getFilePointer()>200)
{
in.seek(in.getFilePointer()-200*2);
myinfo.readdata(in);
while(myinfo.indexinfo.equals("#")&&in.getFilePointer()>200)
{in.seek(in.getFilePointer()-200*2);
myinfo.readdata(in);}
//lt.setText(" "+in.getFilePointer());
}
if(!myinfo.indexinfo.equals("#"))
{
team.setText(myinfo.indexinfo);
name.setText(myinfo.name);
email.setText(myinfo.email);
phone.setText(myinfo.phone);
address.setText(myinfo.address);
}
}
catch(IOException ioe)
{
System.err.println(ioe.toString());
}
}
if(e.getActionCommand()=="退出")
{
dispose();
System.exit(0);
}
if(e.getActionCommand()=="新建")
{
team.setText("");
name.setText("");
email.setText("");
phone.setText("");
address.setText("");
}
if(e.getActionCommand()=="保存")
{
try{
in.seek(0);
while(in.getFilePointer()<in.length())
{
myinfo.readdata(in);
k=0;
if(myinfo.name.equals("#"))
{in.seek(in.getFilePointer()-200);
k=1;
break;
}
}
if(k==0)
in.seek(in.length());
myinfo.indexinfo=team.getText();
myinfo.name=name.getText();
myinfo.email=email.getText();
myinfo.phone=phone.getText();
myinfo.address=address.getText();
myinfo.writedata(in);
}
catch(IOException ioe)
{
System.err.println(ioe.toString());
}
}
if(e.getActionCommand()=="显示组")
{
try{
in.seek(0);
liteam.removeAll();
while(in.getFilePointer()<in.length())
{
myinfo.readdata(in);
if(myinfo.indexinfo.equals(mych.getSelectedItem()))
liteam.add(myinfo.name);
}
}
catch(IOException ioe)
{
System.err.println(ioe.toString());
}
}
if(e.getActionCommand()=="删除组")
{
try{
in.seek(0);
String temps=mych.getSelectedItem();
liteam.removeAll();
mych.remove(temps);
while(in.getFilePointer()<in.length())
{
myinfo.readdata(in);
if(myinfo.indexinfo.equals(temps))
{
myinfo.indexinfo="#";
myinfo.name="#";
myinfo.email="#";
myinfo.phone="#";
myinfo.address="#";
in.seek(in.getFilePointer()-200);
myinfo.writedata(in);
}
}
}
catch(IOException ioe)
{
System.err.println(ioe.toString());
}
}
if(e.getActionCommand()=="删除")
{
try{
in.seek(0);
while(in.getFilePointer()<in.length())
{
myinfo.readdata(in);
if(myinfo.name.equals(name.getText()))
{
myinfo.indexinfo="#";
myinfo.name="#";
myinfo.email="#";
myinfo.phone="#";
myinfo.address="#";
in.seek(in.getFilePointer()-200);
myinfo.writedata(in);
break;
}
}
}
catch(IOException ioe)
{
System.err.println(ioe.toString());
}
}
if(e.getActionCommand()=="修改")
{
try{
in.seek(in.getFilePointer()-200);
myinfo.indexinfo=team.getText();
myinfo.name=name.getText();
myinfo.email=email.getText();
myinfo.phone=phone.getText();
myinfo.address=address.getText();
myinfo.writedata(in);
}
catch(IOException ioe)
{
System.err.println(ioe.toString());
}
}
if(e.getActionCommand()=="查找")
{
try{
in.seek(0);
while(in.getFilePointer()<in.length())
{
myinfo.readdata(in);
k=0;
if(name.getText().length()>0)
{if(myinfo.name.equals(name.getText()))
k=1;
else
continue;}
if(team.getText().length()>0)
{
if(myinfo.indexinfo.equals(team.getText()))
{k=1;}
else
{k=0;continue;}
}
if(email.getText().length()>0)
{if(myinfo.email.equals(email.getText()))
k=1;
else
{k=0;continue;}}
if(phone.getText().length()>0)
{if(myinfo.phone.equals(phone.getText()))
k=1;
else
{k=0;continue;}}
if(address.getText().length()>0)
{if(myinfo.address.equals(address.getText()))
k=1;
else
{k=0;continue;}}
if(k==1)
{
team.setText(myinfo.indexinfo);
name.setText(myinfo.name);
email.setText(myinfo.email);
phone.setText(myinfo.phone);
address.setText(myinfo.address);
break;
}
//lt.setText(" "+in.getFilePointer());
}
}
catch(IOException ioe)
{
System.err.println(ioe.toString());
}
}
}
}
class info
{
String indexinfo; //10
String name; //10
String email; //20
String phone; //20
String address; //40
public info(String i,String a,String b,String c,String d)
{
indexinfo=i;
name=a;
email=b;
phone=c;
address=d;
}
public info() {}
public void writedata(DataOutput out) throws IOException
{
DataIO.writeFixedString(indexinfo,10,out);
DataIO.writeFixedString(name,10,out);
DataIO.writeFixedString(email,20,out);
DataIO.writeFixedString(phone,20,out);
DataIO.writeFixedString(address,40,out);
}
public void readdata(DataInput in) throws IOException
{
indexinfo=DataIO.readFixedString(10,in);
name=DataIO.readFixedString(10,in);
email=DataIO.readFixedString(20,in);
phone=DataIO.readFixedString(20,in);
address=DataIO.readFixedString(40,in);
}
}
class DataIO
{
public static String readFixedString(int size,DataInput in) throws IOException
{
StringBuffer b=new StringBuffer(size);
int i=0;
boolean more=true;
while(more&&i<size)
{
char ch=in.readChar();
i++;
if(ch==0)
{
more=false;
}
else
{
b.append(ch);
}
}
in.skipBytes(2*(size-i));
return b.toString();
}
public static void writeFixedString(String s,int size,DataOutput out) throws IOException
{
int i;
for(i=0;i<size;i++)
{
char ch=0;
if(i<s.length())
ch=s.charAt(i);
out.writeChar(ch);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -