⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tele_phonebook.java.java

📁 用JAVA实现电话本
💻 JAVA
字号:
import java.io.*;
import java.util.*;
/********IOmethods.java***********************/
class IOmethods
{
	public void writeString(String s,RandomAccessFile out)throws IOException
	{
		for(int i=0;i<s.length();i++)
			out.writeChar(s.charAt(i));
	}
	public String readString(int len,RandomAccessFile in)throws IOException
	{
		String s="";
		for(int i=0;i<len;i++)
			s+=in.readChar();
		return s;
	}
	public String readline()throws IOException
	{
		int ch;
		String s="";
		while(true)
		{
			ch=System.in.read();
			if(ch==-1||(char)ch=='\n')
				break;                      //行结束或者文件结束
			else if((char)ch!='\r')         //
				s=s+(char)ch;
		}
		return s;
	}
}
/*********Personal.java***********************/
class Personal extends IOmethods
{
	protected final int namel=12,mobilel=12,telel=14,emaill=25;//定义信息中每条内容所占位数
	protected String name,mobile,tele,email;
	protected final int size=(namel+mobilel+telel+emaill)*2;//记录每条信息长度
	Personal(){} //重载
	Personal(String n,String m,String t,String e)
	{
		name=n;mobile=m;tele=t;email=e;
	}
	public int size()
	{
		return size; 
	}  //返回所记录的信息长度
	public boolean equals(Personal d)
	{
		return name.equals(d.name);
	}  //比较两个名字是否相同
	public boolean compareTo(Personal d)
	{
		int i=0;
		i=name.compareTo(d.name);
		if(i>=0)
		return true;
		else
		return false;
	}  //对名字按音序比较大小
	public void writeToFile(RandomAccessFile out)throws IOException
	{
		writeString(name,out);
		writeString(mobile,out);
		writeString(tele,out);
		writeString(email,out);
	}//把每条信息的四个部分写入文件
	public void writeOneLine()
	{
		System.out.println("name        "+"mobile      "+"tele          "
				+"email                    ");
		System.out.println(name+'\t'+mobile+'\t'+tele+'\t'+email+'\t'+'\n');
	}
	public void listtofile(LinkedList list,RandomAccessFile out)throws IOException
	{
		for(int i=0;i<list.size();i++)
		{
			out.seek(i*size);
			((Personal)list.get(i)).writeToFile(out);
		}
		out.setLength(list.size()*size);
	}
	public void readFromFile(RandomAccessFile in)throws IOException
	{
		name=readString(namel,in);
		mobile=readString(mobilel,in);
		tele=readString(telel,in);
		email=readString(emaill,in);
	}
	public void readname()throws IOException
	{
		System.out.print("Please enter name: ");
		name=readline();
		for(int i=name.length();i<namel;i++)
			name+=' ';
	}	//读入名字
	public void readFromConsole()throws IOException
	{
		System.out.print("Please enter name:");
		name=readline();
		for(int i=name.length();i<namel;i++)
			name+=' ';
		System.out.print("Please enter mobile number:");
		mobile=readline();
		for(int i=mobile.length();i<mobilel;i++);
		    mobile+=' ';
		System.out.print("Please enter telephone number:");
		tele=readline();
		for(int i=tele.length();i<telel;i++);
	    	tele+=' ';
		System.out.print("Please enter email:");
		email=readline();
		for(int i=email.length();i<emaill;i++);
	    	email+=' ';
	}//从控制台读入一条信息的四个部分,不足位以空格代替
	public void copy(Personal[] d)
	{
		d[0]=new Personal(name,mobile,tele,email);
	}//将Personal实例化,新建一个Personal的方法d[0]
}
/*********Database.java***********************/
class Database
{
	private RandomAccessFile database;
	private String fname=new String();
	private IOmethods io=new IOmethods();
	private LinkedList list=new LinkedList();
	Database() throws IOException
	{
		System.out.print("Please enter the file name:");
		fname=io.readline();
	}
	private void add(Personal d)throws IOException
	{
		int i=list.size();
		for(int j=0;j<i;j++)
		{
		if(((Personal)list.get(j)).compareTo(d))
		{
			list.add(j,d);
			return;
		}
		}
		list.add(d);
	}
	private void modify(Personal d)throws IOException
	{
		Personal temp=new Personal();
		for(int i=0;i<list.size();i++)
		{
			if(((Personal)list.get(i)).equals(d))
			{
				list.remove(i);
				temp.readFromConsole();
				list.add(i,temp);
				System.out.println("The record to be modified has been modified:");
				((Personal)list.get(i)).writeOneLine();
				return;
			}
		}
		System.out.println("The record to be modified is not exist!");
	}
	private void delete(Personal d)throws IOException
	{
		for(int i=0;i<list.size();i++)
		{
			if(((Personal)list.get(i)).equals(d))
			{
				list.remove(i);
				System.out.println("The record to be deleted has been deleted!");
				return;
			}
		}
		System.out.println("The record to be deleted is not exist!");
	}
	private void find(Personal d)throws IOException
	{
		for(int i=0;i<list.size();i++)
	    {
			if(((Personal)list.get(i)).equals(d))
		    {
			System.out.println("The record has been found:");
			((Personal)list.get(i)).writeOneLine();
			System.out.println();
			return;
		    }
	    }
		System.out.println("The record is not exist.");
	}
	private void printall(LinkedList list)throws IOException
	{
		System.out.println("All of the records are:");
		System.out.println("\nname\t\tmobile\t\ttele\t\temail\n");
		for(int i=0;i<list.size();i++)
		{
			System.out.println(((Personal)list.get(i)).name+"\t"+
					((Personal)list.get(i)).mobile+"\t\t"+((Personal)list.get(i)).tele+"\t\t"
					+((Personal)list.get(i)).email);
		}
	}
	public void run()throws IOException
	{
		database=new RandomAccessFile(fname,"rw");
		Personal temp=new Personal();
		if(database.getFilePointer()<database.length())
		{
			database.seek(database.getFilePointer());
			temp.readFromFile(database);
			list.add(temp);
		}
		database.close();
		printall(list);
		String option;
		System.out.println("1.add  2.modify  3.delete  4.find  5.printall  6.exit\n\n");
		System.out.print("Enter your option: ");
		option=io.readline();
		database=new RandomAccessFile(fname,"rw");
	while(true){
		switch(option.charAt(0))
		{
		case'1':
		       {
			   Personal xrx=new Personal();
		       xrx.readFromConsole();
		       add(xrx);
		       printall(list);
		       break;
	           }
		case'2':
	    	{
			Personal xrx=new Personal();
			xrx.readname();
			modify(xrx);
			break;
			}
		case'3':
    		{
			Personal xrx=new Personal();
			xrx.readname();
			delete(xrx);
			break;
			}
		case'4':
	    	{
			Personal xrx=new Personal();
			xrx.readname();
			find(xrx);
			break;
    		}
		case'5':
		    {
			printall(list);
			break;
		    }
		case'6':
	    	{
			Personal xrx=new Personal();
			xrx.listtofile(list,database);
			database.close();
			return;
	    	}
	    default:
	        {
	    	Personal xrx=new Personal();
	    	System.out.println("error!");
	    	xrx.listtofile(list,database);
	    	break;
	        }
		}
		System.out.print("Enter an option: ");
        option = io.readline();
	}
	}
}
/*********xrx_Phonebook.java*****************/
public class xrx_Phonebook
{
	static public void main(String arg[])throws IOException
	{
		(new Database()).run();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -