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

📄 filegui.java

📁 (文件数据库系统)功能强大,很有价值的代码.
💻 JAVA
字号:
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[] tabName=new String[2];int t=0;
while(token.hasMoreTokens())
{
		ne=token.nextToken();
			if(ne.equals("where"))
			break;
		tabName[t++]=ne;
	}
	System.out.println("before");
if(t==1){System.out.println("in 1");
String value=null;

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

		Header h=systab.getH(systab.Search(tabName[0]));
	WriteFile sel =new WriteFile(h);
	String[]	 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]);
		
	}
	
		
	
	
else{	for( k=0;k<attri.length;k+=2)
	if(attri[k].trim().equals(attname[j]))
	break;
	if(k==attri.length) {JOptionPane.showMessageDialog(null,"no such attribute name");return;}
sel.Select(k/2,result[j]);
}
}
if(value!=null){	result[i]=new String[20];
if(attname[i].equals(key))
		{
		sel.Select(result[i]);
		
	}
	
		
	
	
else{	for( k=0;k<attri.length;k+=2)
	if(attri[k].trim().equals(attname[i]))
	break;
	if(k==attri.length) {JOptionPane.showMessageDialog(null,"no such attribute name");return;}
sel.Select(k/2,result[i]);}
}

boolean end=true;String out=" ";
for(int m=0;m<result[0].length;m++){
for(int n=0;n<i;n++)
{if(result[n][m]!=null)
end=false;
out+=result[n][m];
}
if(end==true) break;
else{
if(!end&&value==null)
{output.append(out+"\n");out=new String(" ");end=true;}
 

if(!end&&value.equals(result[i][m].trim()))
{output.append(out+"\n");out=new String(" ");end=true;
}
 if(!end&&!value.equals(result[i][m].trim())){out=new String(" ");end=true;continue;}

}
}
sel.close();
}

else{
	System.out.println("att    "+attname[i-1]);boolean condition=false;
	if(token.hasMoreTokens())
{
attname[i]=token.nextToken();   	System.out.println(attname[i]+"tab");
                  //condition
 attname[i+1]=token.nextToken();	System.out.println(attname[i+1]+"tab");
 condition=true;

}
	
		Header h=systab.getH(systab.Search(tabName[0]));
System.out.println("att "+(i-1)+" "+attname[i-1]+"");
	
	Header h2=systab.getH(systab.Search(tabName[1]));
	Header H=new Header(h,h2);
	WriteFile sel=new WriteFile(H);
	sel.NewTab(h,h2);
String[]	attri=H.getAttri();
		String[][] result=new String[i+2][];     //2attribute for where ...=...

for(int j=0;j<i+2;j++)          //i=2;
{

	result[j]=new String[20];
		
	int k=0;
	System.out.println(condition);
	if(j==i&&!condition){System.out.println("if"); break;}
		System.out.println(attname[j]);

	for( k=0;k<attri.length;k+=2)
	if(attri[k].trim().equals(attname[j]))
	break;
	if(k==attri.length) {JOptionPane.showMessageDialog(null,"no such attribute name");return;}
sel.Select(k/2,result[j]);System.out.println("index "+k/2);

}
if(attname[i+1]!=null&&attname[i]!=null){	result[i]=new String[20];result[i+1]=new String[20];
		
	
	int k=0;
	for( k=0;k<attri.length;k+=2)
	if(attri[k].trim().equals(attname[i]))
	break;
	if(k==attri.length) {JOptionPane.showMessageDialog(null,"no such attribute name");return;}
sel.Select(k/2,result[i]);

for( k=0;k<attri.length;k+=2)
	if(attri[k].trim().equals(attname[i+1]))
	break;
	if(k==attri.length) {JOptionPane.showMessageDialog(null,"no such attribute name");return;}
sel.Select(k/2,result[i+1]);
}



boolean end=true;String out=" ";
for(int m=0;m<result[0].length;m++){
for(int n=0;n<i;n++)
{if(result[n][m]!=null)
end=false;
out+=result[n][m];System.out.println("out"+result[n][m]);
}
if(end==true) break;
else{
if(!end&&!condition)
{output.append(out+"\n");out=new String(" ");end=true;}
 

if(!end&&condition&&(result[i][m].trim().equals(result[i+1][m].trim())))
{output.append(out+"\n");out=new String(" ");end=true;
}
 if(!end&&condition&&!(result[i][m].trim().equals(result[i+1][m].trim()))){out=new String(" ");end=true;continue;}

}
}
sel.close();
}

	
}}
	

}});
JPanel bu=new JPanel();
bu.add(button1);
bu.add(button2);
getContentPane().setLayout(new BorderLayout());
Container container=getContentPane();
container.add(bu,BorderLayout.NORTH);
container.add(text,BorderLayout.CENTER);
container.add(new JScrollPane(output),BorderLayout.SOUTH);
setVisible(false);
		setSize(500,500);



			
}
}	



 class changeDataDialog extends JInternalFrame{
	private JTextArea text;
	private JTextArea error;
	private SystemTab systab;
	
	changeDataDialog(SystemTab tab)
	{
		super(" change data ");
		text=new JTextArea(20,30);
		text.setEditable(true);
		Button button1=new Button("prompt");
	Button	button2=new Button("Commit");
	Button button3=new Button("Clear");

		error=new JTextArea(8,30);
		error.setEditable(false);
		systab=tab;
	
	
		 button1.addActionListener(new ActionListener(){
        	public void actionPerformed(ActionEvent e){
        	JOptionPane.showMessageDialog(null,"Create\tInsert\tDelete...","prompt",JOptionPane.INFORMATION_MESSAGE);
        }});
        	button3.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("create"))
				{
					if(!token.nextToken().equals("table"))return;
					Header h=new Header();
					
					String str=token.nextToken();
					h.setName(str);
					str=token.nextToken();
					h.setKey(str);
				if(token.hasMoreTokens())	str=token.nextToken();
				else {error.setText("no key type");return;}
				h.setType(str);
				count++;
			
			String[] att=new String[20];
			int i=0;String type;
				while(token.hasMoreTokens())
				{
					
					str=token.nextToken();
					if(token.hasMoreTokens())	type=token.nextToken();
				else{ error.setText("no attribute type");return;
			}
				if(type.equals("int")||type.equals("real")||type.equals("string")||type.equals("boolean"))
				{
					att[i++]=str;
					att[i++]=type;count++;
				}
				else {error.setText("type invalid");return;}
				
			
				
			}
			h.setCount(count);
			h.setAttri(att);
			systab.add(h);
			error.append("successfully create table "+h.getName()+"\n");
		}
		if(next.equals("insert")){
			if(!token.nextToken().equals("into"))
			error.setText("sematic error");
			String name=token.nextToken();
		Header h=systab.getH(systab.Search(name));
		
		WriteFile add=new WriteFile(h);
		String key=new String(token.nextToken());
		if(key==null)
		error.setText("key can not be null");
		String att[]=new String[h.getCount()-1];
		for(int k=0;k<att.length;k++)
		if(token.hasMoreTokens())
		att[k]=token.nextToken();
		else error.setText("need more attribute value");
		add.addRecord(key,att);
		add.close();
		error.append("finish inserting\n");
	}
	if(next.equals("delete"))
	{
		String key=token.nextToken();
			if(key==null)
		error.setText("key can not be null");
	
		if(!token.nextToken().equals("from"))
			error.setText("sematic error");
			String name=token.nextToken();
			Header h=systab.getH(systab.Search(name));
		WriteFile del=new WriteFile(h);
		del.Delete(key);
		del.close();
		error.append("finish delete tuple\n");
	}
	if(next.equals("update"))
	{
			String name=token.nextToken();
		Header h=systab.getH(systab.Search(name));
		token.nextToken();
	WriteFile up =new WriteFile(h);
	String attname[]=new String[10];int i=0;
	String[] attvalue=new String[10];
	String tem=null;
	int[] index=new int[10];
	while(token.hasMoreTokens())
	{
	 tem=token.nextToken();
	 if(tem.equals("where"))
	 break;
	 	
	attname[i]=tem;
	String attri[]=h.getAttri();
	int k;
	for( k=0;k<attri.length;k+=2)
{
		if(attri[k].trim().equals(attname[i]))
{	index[i]=k/2;
	break;}}
	if(k==attri.length) {error.setText("no such attribute name");return;}
	System.out.println("index is "+index[i]);
	
	 attvalue[i]=token.nextToken();
	 i++;
}
String con=token.nextToken();
String conval=token.nextToken();

if(con.equals(h.getKey().trim()))
up.update(conval,attvalue,index);
else{
int k;	String attri[]=h.getAttri();

	for( k=0;k<attri.length;k+=2)
{
		if(attri[k].trim().equals(con))
	break;
	if(k==attri.length) {error.setText("no such attribute name");return;}
}
up.update(conval,k/2,attvalue,index);
	
	
}
up.close();
error.append("finish update\n");
}
}

}});
	
	
	
		
		
	
		
		
		
		
			
			
			
			
				
			
					
					
	
        
        
        
        
        
        	JPanel pane=new JPanel();

        pane.add(button1);
        pane.add(button2);
                pane.add(button3);

  
       

        
		
		Container container=getContentPane();container.setLayout(new BorderLayout());
		container.add(pane,BorderLayout.NORTH);
		        container.add(new JScrollPane(text), BorderLayout.CENTER);

		container.add(error,BorderLayout.SOUTH);
		setSize(500,500);
		    setVisible(false);    

	}
		
/*	
	 private void createFile(String na)
	 {
	 		try{
		File fileName=new File(na);	 	
	 	fileName.createNewFile();	
	 	}
			catch(IOException e){
				JOptionPane.showMessageDialog(null,na+"not exist.Failed to create","Error",JOptionPane.INFORMATION_MESSAGE);
			}

	 	

	 		RandomAccessFile file=new RandomAccessFile(fileName,"rw");


	 		
	 		Record blank=new Record();
	 		for(int count=0;count<50;count++)
	 		blank.write(file);
	 		file.close();
	 		
	 		JOptionPane.showMessageDiglog(null,"Created file"+fileName.getName(),"Status",JOptionPane.INFORMATION_MESSAGE);
	 		System.exit(0);
	     }
	     catch(IOException e){
	     	JOptionPane.showMessageDialog(null,"Error processing file","Error processing file",JOptionPane.ERROR_MESSAGE);
	     	
	        system.exit(1);
	     }
	   }


	
	*/
	
	
	
	
	
	
	
	

}

⌨️ 快捷键说明

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