?? dbs.java
字號:
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.util.*;
import java.io.*;
import java.lang.*;
import java.text.*;
import javax.swing.event.*;
class CreatBox
{
String name;
String type;
String leg;
String NULL;
CreatBox(){}
CreatBox(CreatBox e)
{
name=new String(e.name);
type=new String(e.type);
leg=new String(e.leg);
NULL=new String(e.NULL);
}
}
class object
{
LinkedList ob=new LinkedList();
object(){}
object(object e)
{
ob=new LinkedList(e.ob);
}
}
class index
{
String key;
String location;
index(){
}
index(index e)
{
key=new String(e.key);
location=new String(e.location);
}
}
class db extends JFrame implements ActionListener
{
LinkedList box;
LinkedList hang;
LinkedList hang2;
LinkedList suoyin;
LinkedList suoyin2;
LinkedList daishu;
LinkedList daishu1=new LinkedList();
LinkedList daishu2=new LinkedList();
int wancheng=-1;
String filename[]=new String[2];
int inlian=0;
////////////
FileDialog save,load;
/////////
JMenuBar bar;
JMenu menu,menu1,menu2,menu3,menu4,menu5;
JMenuItem itemOpen,itemSave,itemNew,itemExit,itemAppend,itemInsert,itemDel,
itemList,itemModify,itemshuxing,itemsappend,itemsdel,itemLists,itemindex,
itemindexseek,itembing,itemjiao,itemcha,itemOpen2,itemlianjie,itemxuanze,itemtiaojian,
itemziran,itemquel;
JTextArea area;
Container con;
JFrame mainFrame,creatFrame,creatFramea,inputdataFrame,deleteFrame,
deleteFrames,insertDFrame,insertFrame,lianjieFrame;
/////////insertDFrame////
JLabel i_label[];
JTextField i_textField[];
JButton insert_b1,insert_b2;
JButton next,complete;
JButton NULL;
JTextField name,width;
JComboBox type;
JPanel p1,p2,p3;
JLabel l1,l2,l3,l4,l5,l6;
JButton nexta,completea;
JButton NULLa;
JTextField namea,widtha;
JComboBox typea;
JPanel p1a,p2a,p3a;
JLabel l1a,l2a,l3a,l4a,l5a,l6a;
JButton b1,b2;
JLabel label[];
JTextField textField[];
JLabel l;
JTextField f;
JButton b_1,b_2;
JLabel ls;
JTextField fs;
JButton b_1s,b_2s;
JLabel li;
JTextField fi;
JButton b_i1,b_i2;
//////////////modifyFrame////////
JFrame modifyFrame;
JLabel[] m_l;JLabel[] mm_l;
JTextField[] m_f;
JButton m_b;
Container con_m;
JPanel m_p;
////////////shuxing/////////////////
JFrame shuxingFrame;
JTextField[] s_name,s_width;
JComboBox[] s_type;
JButton[] s_NULL;
JPanel[] s_p;
JButton s_b;
int item=0,datano=0;
//////////////////
//////////連接
JButton button_lianjie;
JRadioButton[] lianb1,lianb2;
////////////xuanze
JFrame xuanzeFrame;
JButton and,or,xuan;
JTextField xf;
JPanel xp1,xp2,xp3,xp4,xp5,xp;
JRadioButton r1,r2;
ButtonGroup xg;
JComboBox xiangmu,xiangmu2,xc;
String[] xiang1,xiang2;
////////////////////////
JFrame selectFrame;
JButton selectButton1,selectButton2;
JLabel selectLabel1,selectLabel2;
JRadioButton[] selectRadio1,selectRadio2;
///////////////////////////
JFrame quelFrame;
JTextArea quelArea;
JButton quelButton;
db()
{
box=new LinkedList();
hang=new LinkedList();
hang2=new LinkedList();
suoyin=new LinkedList();
suoyin2=new LinkedList();
daishu=new LinkedList();
/////////////////////////////////主窗口///////////////////////////////////////
mainFrame=new JFrame("數據庫");
mainFrame.setVisible(true);
mainFrame.setBounds(200,200,600,400);
bar=new JMenuBar();
menu=new JMenu("文件");
menu1=new JMenu("元組");
menu2=new JMenu("視圖");
menu3=new JMenu("屬性");
menu4=new JMenu("察看");
menu5=new JMenu("多張表");
itemOpen=new JMenuItem("打開");
itemOpen.addActionListener(this);
itemOpen2=new JMenuItem("打開多張表");
itemOpen2.addActionListener(this);
itemSave=new JMenuItem("保存");
itemSave.addActionListener(this);
itemNew=new JMenuItem("新建");
itemNew.addActionListener(this);
itemExit=new JMenuItem("退出");
itemAppend=new JMenuItem("增加");
itemAppend.addActionListener(this);
itemInsert=new JMenuItem("插入");
itemInsert.addActionListener(this);
itemDel=new JMenuItem("刪除");
itemDel.addActionListener(this);
itemList=new JMenuItem("列表");
itemList.addActionListener(this);
itemxuanze=new JMenuItem("投影");
itemxuanze.addActionListener(this);
itemLists=new JMenuItem("屬性察看");
itemLists.addActionListener(this);
itemModify=new JMenuItem("修改");
itemModify.addActionListener(this);
itemshuxing=new JMenuItem("修改屬性");
itemshuxing.addActionListener(this);
itemsdel=new JMenuItem("刪除屬性");
itemsdel.addActionListener(this);
itemsappend=new JMenuItem("增加");
itemsappend.addActionListener(this);
itemindex=new JMenuItem("按索引察看");
itemindex.addActionListener(this);
itemindexseek=new JMenuItem("索引表");
itemindexseek.addActionListener(this);
itembing=new JMenuItem("并");
itembing.addActionListener(this);
itemjiao=new JMenuItem("交");
itemjiao.addActionListener(this);
itemcha=new JMenuItem("差");
itemcha.addActionListener(this);
itemlianjie=new JMenuItem("連接");
itemlianjie.addActionListener(this);
itemtiaojian=new JMenuItem("選擇");
itemtiaojian.addActionListener(this);
itemquel=new JMenuItem("QUEL");
itemquel.addActionListener(this);
itemziran=new JMenuItem("自然連接");
itemziran.addActionListener(this);
area=new JTextArea();
//area.enable(false);
JScrollPane p=new JScrollPane(area);
con=mainFrame.getContentPane();
con.add(p,BorderLayout.CENTER);
mainFrame.setJMenuBar(bar);
bar.add(menu);
bar.add(menu1);
bar.add(menu2);
bar.add(menu3);
bar.add(menu4);
bar.add(menu5);
menu.add(itemOpen);
menu.add(itemOpen2);
menu.add(itemSave);
menu.add(itemNew);
menu.add(itemExit);
menu2.add(itemList);
menu2.add(itemlianjie);
menu2.add(itemxuanze);
menu2.add(itemtiaojian);
menu2.add(itemziran);
menu2.add(itemquel);
menu1.add(itemAppend);
menu1.add(itemInsert);
menu1.add(itemDel);
menu1.add(itemModify);
menu3.add(itemshuxing);
menu3.add(itemsdel);
menu3.add(itemsappend);
menu3.add(itemLists);
menu4.add(itemindex);
menu4.add(itemindexseek);
menu5.add(itembing);
menu5.add(itemjiao);
menu5.add(itemcha);
//menu5.add(itemlianjie);
mainFrame.addWindowListener(new WindowAdapter()
{public void windowClosing(WindowEvent e)
{System.exit(0);}
});
mainFrame.validate();;
//////////////////newFile/////////
save=new FileDialog(this,"保存文件對話框",FileDialog.SAVE);
load=new FileDialog(this,"打開文件對話框",FileDialog.LOAD);
/////////////////////////數據delete窗口////////////////////////////////
deleteFrame=new JFrame("刪除窗口");
deleteFrame.setVisible(false);
deleteFrame.setBounds(300,300,600,600);
Container cond=deleteFrame.getContentPane();
cond.setLayout(new GridLayout(2,2));
l=new JLabel("請輸入要刪除的數據號碼:");
cond.add(l);
f=new JTextField(10);
cond.add(f);
b_1=new JButton("確定");
cond.add(b_1);
b_1.addActionListener(this);
b_2=new JButton("取消");
cond.add(b_2);
b_2.addActionListener(this);
deleteFrame.pack();
/////////////////////////屬性delete窗口////////////////////////////////
deleteFrames=new JFrame("刪除窗口");
deleteFrames.setVisible(false);
deleteFrames.setBounds(300,300,600,600);
Container conds=deleteFrames.getContentPane();
conds.setLayout(new GridLayout(2,2));
ls=new JLabel("請輸入要刪除的數據號碼:");
conds.add(ls);
fs=new JTextField(10);
conds.add(fs);
b_1s=new JButton("確定");
conds.add(b_1s);
b_1s.addActionListener(this);
b_2s=new JButton("取消");
conds.add(b_2s);
b_2s.addActionListener(this);
deleteFrames.pack();
/////////////////////////insertFrame////////////////////////
insertFrame=new JFrame("插入窗口");
insertFrame.setVisible(false);
insertFrame.setBounds(300,300,600,600);
Container coni=insertFrame.getContentPane();
coni.setLayout(new GridLayout(2,2));
li=new JLabel("請輸入要插入的位置在x后:");
coni.add(li);
fi=new JTextField(10);
coni.add(fi);
b_i1=new JButton("確定");
coni.add(b_i1);
b_i1.addActionListener(this);
b_i2=new JButton("取消");
coni.add(b_i2);
b_i2.addActionListener(this);
insertFrame.pack();
/////////////////////////////////創建表窗口/////////////////////////
creatFrame=new JFrame("建表");
creatFrame.setVisible(false);
creatFrame.setBounds(300,300,400,400);
next=new JButton("下一個");
next.addActionListener(this);
complete=new JButton("完成");
complete.addActionListener(this);
NULL=new JButton("0");
NULL.addActionListener(this);
name=new JTextField(10);
width=new JTextField(5);
String t_name[]={"Character","Integer"};
type=new JComboBox(t_name);
type.setMaximumRowCount(2);
l1=new JLabel(" Name");
l2=new JLabel(" Type");
l3=new JLabel(" Width");
l4=new JLabel(" Null");
l5=new JLabel("");
l6=new JLabel("");
p1=new JPanel();
Container conf=creatFrame.getContentPane();
conf.setLayout(new GridLayout(3,4));
conf.add(l1);conf.add(l2);conf.add(l3);conf.add(l4);
conf.add(name);conf.add(type);conf.add(width);conf.add(NULL);
conf.add(l5);conf.add(next);conf.add(complete);conf.add(l6);
creatFrame.pack();
///////////////////////////////////////////////////////
creatFramea=new JFrame(" 增加屬性");
creatFramea.setVisible(false);
creatFramea.setBounds(300,300,400,400);
nexta=new JButton("下一個");
nexta.addActionListener(this);
completea=new JButton("完成");
completea.addActionListener(this);
NULLa=new JButton("0");
NULLa.addActionListener(this);
namea=new JTextField(10);
widtha=new JTextField(5);
String t_namea[]={"Character","Integer"};
typea=new JComboBox(t_namea);
typea.setMaximumRowCount(2);
l1a=new JLabel(" Name");
l2a=new JLabel(" Type");
l3a=new JLabel(" Width");
l4a=new JLabel(" Null");
l5a=new JLabel("");
l6a=new JLabel("");
p1a=new JPanel();
Container confa=creatFramea.getContentPane();
confa.setLayout(new GridLayout(3,4));
confa.add(l1a);confa.add(l2a);confa.add(l3a);confa.add(l4a);
confa.add(namea);confa.add(typea);confa.add(widtha);confa.add(NULLa);
confa.add(l5a);confa.add(nexta);confa.add(completea);confa.add(l6a);
creatFramea.pack();
}
void quelframe()
{
quelFrame=new JFrame(" QUEL命令窗口");
quelFrame.setVisible(true);
quelFrame.setBounds(300,300,200,200);
quelArea=new JTextArea();
Container confa=quelFrame.getContentPane();
quelButton=new JButton("確定");
quelButton.addActionListener(this);
confa.add(quelArea,BorderLayout.CENTER);
confa.add(quelButton,BorderLayout.SOUTH);
quelFrame.validate();
}
boolean shuxingxiangrong(String s)
{
for(int i=0;i<box.size();i++)
{
CreatBox c=new CreatBox((CreatBox)box.get(i));
if(c.name.equals(s))
{
return true;
}
}
return false;
}
void creatBox()
{
CreatBox c=new CreatBox();
c.name=name.getText();
c.type=(String)(type.getSelectedItem());
c.leg=width.getText();
c.NULL=NULL.getText();
if(shuxingxiangrong(c.name))
{
JOptionPane.showMessageDialog(null,"又重復屬性請重新輸入");
}
else if(!shuxingxiangrong(c.name))
{
box.add(c);
name.setText("");
width.setText("");
for(int i=0;i<box.size();i++)
{
CreatBox o=new CreatBox();
o=(CreatBox)box.get(i);
}
}
}
///////////////////modifyFrame////////////////////////////////////////////
void modifyf()
{
modifyFrame=new JFrame("修改窗口");
modifyFrame.setBounds(100,100,300,300);
modifyFrame.setVisible(true);
m_b=new JButton("確定");
m_b.addActionListener(this);
con_m=modifyFrame.getContentPane();
LinkedList l=(LinkedList)hang.get(0);
m_p=new JPanel();
m_p.setLayout(new GridLayout(hang.size(),l.size()+1));
m_l=new JLabel[l.size()+1];
m_l[0]=new JLabel("序號");
m_p.add(m_l[0]);
for(int i=1;i<l.size()+1;i++)
{
CreatBox oo=(CreatBox)l.get(i-1);
m_l[i]=new JLabel(oo.name);
m_p.add(m_l[i]);
}
mm_l=new JLabel[hang.size()-1];
for(int i=0;i<hang.size()-1;i++)
{
mm_l[i]=new JLabel(""+i);
}
m_f=new JTextField[(hang.size()-1)*(l.size())];
for(int i=0;i<(hang.size()-1)*(l.size());i++)
{
m_f[i]=new JTextField(5);
}
for(int i=0;i<hang.size()-1;i++)
{
m_p.add(mm_l[i]);
for(int j=0;j<l.size();j++)
{
m_p.add(m_f[i*l.size()+j]);
}
}
for(int i=1;i<hang.size();i++)
{
LinkedList ll=(LinkedList)hang.get(i);
for(int j=0;j<l.size();j++)
{
CreatBox oo=(CreatBox)ll.get(j);
m_f[(i-1)*l.size()+j].setText(oo.name);
}
}
con_m.add(m_p,BorderLayout.CENTER);
con_m.add(m_b,BorderLayout.SOUTH);
modifyFrame.pack();
}
void jianlisuoyin()
{
suoyin.clear();
for(int i=1;i<hang.size();i++)
{
LinkedList list=new LinkedList((LinkedList)hang.get(0));
LinkedList l=new LinkedList((LinkedList)hang.get(i));
if(((CreatBox)list.get(0)).type.equals("Integer"))
{
if(suoyin.isEmpty())
{
index in=new index();
in.key=((CreatBox)l.get(0)).name;
in.location=""+1;
suoyin.add(in);
}
else
{
boolean g=true;
index in=new index();
in.key=((CreatBox)l.get(0)).name;
in.location=""+i;
for(int j=0;j<suoyin.size();j++)
{
if(Integer.parseInt(in.key)<Integer.parseInt(((index)suoyin.get(j)).key))
{
suoyin.add(j,in);
g=false;break;
}
}
if(g)
{
suoyin.add(in);
}
}
}
if(((CreatBox)l.get(0)).type.equals("Character"))
{
if(suoyin.isEmpty())
{
index in=new index();
in.key=((CreatBox)l.get(0)).name;
in.location=""+1;
suoyin.add(in);
}
else
{
boolean g=true;
index in=new index();
in.key=((CreatBox)l.get(0)).name;
in.location=""+i;
for(int j=0;j<suoyin.size();j++)
{
int r=(in.key).compareTo(((index)suoyin.get(j)).key);
if(r<0)
{
suoyin.add(j,in);
g=false;break;
}
}
if(g)
{
suoyin.add(in);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -