📄 temtab.java
字号:
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 + -