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

📄 dbs.java

📁 用java编写的dbms
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
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 + -