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

📄 temtab.java

📁 (文件数据库系统)功能强大,很有价值的代码.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.io.*;

public class TemTab{
	Header table;
	RandomAccessFile file;
	File tempFile;
	TemTab()
	{
	try{
			File filename=new File("tempFile"+".txt");	 	
	 	filename.createNewFile();
	 	 file=new RandomAccessFile(filename,"rw");}
	 	 catch(IOException e)
	 	 {
	 	 	System.err.println("in Temp");
	 	 }
	 	
	 }
	 File newTemp()
	 {
	 	file=new File("temTab.txt");
	 	file.createNewFile();
	 	
	void  add(Header h) 
	 {try{file.seek(file.length());System.out.println(file.length());
	file.writeInt(h.count);           //count,delete,name,key,keytype,att
	 		 	file.writeBoolean(h.delete);	 		
	 		 	 writeStr(file,h.name);

	 	writeStr(file,h.key);
	 	writeStr(file,h.keyType);
	 	for(int i=0;i<2*(h.count-1);i++)
	 	writeStr(file,h.attri[i]);
	 	table=h;
	 	row++;}
	 	catch(IOException e)
	 	{System.err.println("in add");
	 	}
	 	
	 }
	 	private void writeStr(RandomAccessFile file,String str) 
	{
		try{
		StringBuffer buffer=null;
		if(str!=null)
		buffer=new StringBuffer(str);
		else
		buffer=new StringBuffer(15);
		
		buffer.setLength(15);
		file.writeChars(buffer.toString());}
		catch(IOException e)
		{
			System.err.println("in writeStr");
	}
}	
	Header  read()        //count,delete,name,key,attri
	{
		Header h=new Header();               //32,8,(count+1)*16
		try{
		int count=file.readInt();System.out.println("readint "+count);
		boolean de=file.readBoolean();
		if(de)h.delete();
		char ch[]=new char[15],temp;
		for(int i=0;i<ch.length;i++)
		{
		temp=file.readChar();
		ch[i]=temp;}
		h.setName(new String(ch).replace('\0',' '));
		h.setCount(count);
	for(int i=0;i<ch.length;i++)
		{
		temp=file.readChar();
		ch[i]=temp;}
	
		h.setKey(new String(ch).replace('\0',' '));
			for(int i=0;i<ch.length;i++)
		{
		temp=file.readChar();
		ch[i]=temp;}
		h.setType(new String(ch).replace('\0',' '));

	
		String as[]=new String[2*(count-1)];
		
		for(int j=0;j<2*(count-1);j++){
			for(int i=0;i<ch.length;i++)
		{
		temp=file.readChar();
		ch[i]=temp;
         }
       	as[j]=new String(ch).replace('\0',' ');
       }
       h.setAttri(as);
      }
        catch(IOException e)
      {System.err.println("in systeb read");}
             
             return h;

      }
     
           
          
      Header getH(int pos)
      {
      	try{	file.seek(pos);
      	System.out.println(pos); }catch(IOException e)
      {}
      
      	Header h=read();
      	return h;
      
     
    }
      	
      	
      int  Search(String na)
      {
      	int i=0;
      	try{      	System.out.println(na+"in search file length:"+file.length());


      	while(true)
      	{
      		      		      	file.seek(i);

      		
      		int j=file.readInt();
      		char ch[]=new char[15],temp;
      		if(!file.readBoolean())
      		
		for(int k=0;k<ch.length;k++)
		{
		temp=file.readChar();
		ch[k]=temp;
	}
		if(new String(ch).trim().equals(na))
	break;
	
		i+=5+(j)*30*2+30;
		
		
      		
      	}
      }
      catch(EOFException e){
      	return -1;
      }
      catch(IOException ex)
      {}
     return i;
      
      }
      
      boolean  Drop(String na)
      {
      	int i=Search(na);
      	if(i==-1) return false;try{
      	file.seek(i);
      	file.writeInt(0);
      	file.writeBoolean(true);return true;
      }
      catch(IOException e)
      {
      	System.err.println("in drop");      	return false;

      }
      
      
      }
      
    }


	
		
		
			
	

	
	


class Header
{
	String name;
	String key;
	String keyType;
	String []attri;
	int count=0;
	boolean delete=false;
	
	void setName(String na)
	{
		name=new String(na);
	}
	String  getName()
	{
		return name;
	}
	void setCount(int i)
	{
		count=i;
	}
	void delete()
	{
		delete=true;
	}
	
	void setKey(String value)
	{
		key=value;
	}
	void setType(String type)
	{
		keyType=type;
	}
	
	void setAttri(String at[])
	{
		attri=new String[2*(count-1)];
		for(int i=0;i<attri.length;i++)
		attri[i]=at[i];
	}
	String [] getAttri()
	{
		return attri;
	}
	int getCount()
	{
		return count;
		}	
}
	
	
	
	
	
	
	
	import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;


public class fileGUI extends JFrame
{
	  private JMenuItem changeItem, queryItem, 
       exitItem;
   private JDesktopPane desktop;
  changeDataDialog change;
  QueryDialog query;
  SystemTab systab;
  fileGUI()
  {
  	  super( "Simulator" );
  	 systab=new SystemTab();
  	  change=new changeDataDialog(systab);
  	  query=new QueryDialog(systab);

      desktop = new JDesktopPane();
      desktop.add(change);
      desktop.add(query);
      getContentPane().add( desktop );
 
      JMenuBar menuBar = new JMenuBar();
      setJMenuBar( menuBar );

      JMenu fileMenu = new JMenu( "File" );
      menuBar.add( fileMenu );
      
   changeItem = new JMenuItem( "data control" );

      // display new record dialog when user selects New Record
      changeItem.addActionListener( 

         new ActionListener() {

            public void actionPerformed( ActionEvent event )
            {
               change.setVisible( true );              
            }
         }
      );

      queryItem = new JMenuItem( "Query Record" );
      queryItem.setEnabled( true );
      queryItem.addActionListener( 

         new ActionListener() {

            public void actionPerformed( ActionEvent event )
            {
               query.setVisible( true );              
            }
         }
      );
      fileMenu.add(changeItem);
      fileMenu.add(queryItem);
      setSize(400,250);
      setVisible(true);

}

	public static void main(String args[])
	{
		fileGUI app=new fileGUI();

			app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	
		}
}


class QueryDialog extends JInternalFrame{
	private JTextArea text;
	private JTextArea output;
	private SystemTab systab;
	QueryDialog(SystemTab tab)
	{
super(" query data ");
		text=new JTextArea(5,30);
		text.setEditable(true);
		Button button1=new Button("Clear");
	Button	button2=new Button("Commit");

		output=new JTextArea(20,30);
		output.setEditable(false);
		systab=tab;
		button1.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e)
			{
				text.setText(" ");
			}});
		 button2.addActionListener(new ActionListener(){
        	public void actionPerformed(ActionEvent e){
        	StringTokenizer token=new StringTokenizer(text.getText()," \t\n\r\f,()=");
        	String next;int count=0;
        		if(token.hasMoreTokens())
				{
					
				next=token.nextToken();
				if(next.equals("select"))
{
		String[] attname=new String[10];String ne;int i=0;
		while(token.hasMoreTokens())
		{
			ne=token.nextToken();
			if(ne.equals("from"))
			break;
		attname[i++]=ne;
	}
	String [2] tabName=new String[2];int t=0;
while(token.hasMoreToken())
{
		ne=token.nextToken();
			if(ne.equals("where"))
			break;
		tabName[t++]=ne;
	}
if(t==1){
String value=null;

if(token.hasMoreTokens())
{
attname[i]=token.nextToken();                     //condition
 value=token.nextToken();
}

		Header h=systab.getH(systab.Search(tabName[0]));	String attri[]=null;
	WriteFile sel =new WriteFile(h);
		 attri[]=h.getAttri();
		int k=0;
	
	
		String key=h.getKey().trim();
		String[][] result=new String[i+1][];
for(int j=0;j<i;j++)
{
	System.out.println(attname[j]);
	result[j]=new String[20];
		if(attname[j].equals(key))
		{
		sel.Select(result[j]);
		
	}
	
		
	
	

⌨️ 快捷键说明

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