📄 data.java
字号:
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class data extends JFrame{
private JTextArea text;
private JTextArea error;
private SystemTab systab;
data(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;
error.setText("");
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);
try{ File file=new File(str+".dat");
file.createNewFile();}
catch(IOException ex)
{
}
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);return;
}
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();return;
}
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();return;
}
if(next.equals("update"))
{
String name=token.nextToken();
Header h=systab.getH(systab.Search(name));
WriteFile up =new WriteFile(h);
String attname=token.nextToken();
String attri[]=h.getAttri();int k;
for( k=0;k<attri.length;k++)
if(attri[k].equals(attname))
break;
else {error.setText("no such attribute name");return;}
token.nextToken();
String attvalue=token.nextToken();
token.nextToken();
token.nextToken();
token.nextToken();
String key=token.nextToken();
up.update(key,attvalue,k);up.close();return;
}
}
}});
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(true);
}
public static void main(String args[])
{
data app=new data();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -