www.pudn.com > student.rar > StudentManager.java


import java.io.*; 
import javax.swing.*; 
import java.util.Vector; 
import java.awt.Toolkit; 
import java.awt.Dimension; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.table.DefaultTableModel; 
 
public class StudentManager 
{//学生信息管理类 
	private JFrame frame = new JFrame(); 
	private JPanel panel = new JPanel();  
	//菜单栏 
	private JMenuBar bar = new JMenuBar();  
	private JMenu file = new JMenu("文件(F)"); 
	private JMenu manager = new JMenu("管理(M)"); 
	//菜单项 
	private JMenuItem open = new JMenuItem(); 
	private JMenuItem save = new JMenuItem(); 
	private JMenuItem exit = new JMenuItem(); 
	 
	private JMenuItem insert = new JMenuItem(); 
	private JMenuItem select = new JMenuItem(); 
	private JMenuItem modify = new JMenuItem(); 
	private JMenuItem delete = new JMenuItem(); 
	//工具栏 
	private JToolBar tool = new JToolBar(); 
	 
	private Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
	private ActionListener listener = new Listener(); 
	//表格 
	private JTable table;	 
	private JScrollPane scroll; 
	private static DefaultTableModel model; 
	private static Vector> data = new Vector>(); 
	private Vector header = new Vector(); 
	private String[] titles = {"学号","姓名","性别","年龄","专业","家庭住址"}; 
	//创建四个界面的对象 
	private StudentSituation aInsert = new StudentSituation("学生信息录入"); 
	private ModifySituation aModify = new ModifySituation("学生信息修改"); 
	private Inquest aSelect = new Inquest("学生信息查询"); 
	private Delete aDelete = new Delete("学生信息删除"); 
	//文件读取保存 
	private File dataFile; 
	private FileReader reader; 
	private FileWriter writer; 
	private BufferedReader bufReader; 
	private JFileChooser chooser = new JFileChooser(); 
	//宽度和高度 
	private static int WIDTH = 700; 
	private static int HEIGH = 500; 
	 
	private void addItem(JMenu menu,JMenuItem item,String title,String stroke) 
	{//添加菜单项方法 
		menu.add(item); 
		item.setText(title); 
		item.setAccelerator(KeyStroke.getKeyStroke(stroke)); 
		item.addActionListener(listener); 
	} 
	private class Listener implements ActionListener 
	{//监听器 
		String dataLine = "";//缓冲区 
		public void actionPerformed(ActionEvent e) 
		{ 
			if(e.getActionCommand().equals("导入数据")) 
			{ 
				chooser.setCurrentDirectory(new File(".")); 
				int var = chooser.showOpenDialog(frame);			 
				dataFile = chooser.getSelectedFile(); 
				if(var == JFileChooser.APPROVE_OPTION) 
				{ 
					data.clear();//首先清空表中原有的数据 
					open();				 
				} 
			} 
			if(e.getActionCommand().equals("导出数据")) 
			{ 
				chooser.setCurrentDirectory(new File(".")); 
				int var = chooser.showSaveDialog(frame); 
				dataFile = chooser.getSelectedFile(); 
				if(var == JFileChooser.APPROVE_OPTION) 
				{ 
					save();					 
				}	 
			} 
			if(e.getActionCommand().equals("退出")) 
			{ 
				System.exit(0);	 
			} 
			if(e.getActionCommand().equals("信息录入")) 
			{ 
				aInsert.show();	 
			} 
			if(e.getActionCommand().equals("信息查询")) 
			{ 
				aSelect.show();	 
			} 
			if(e.getActionCommand().equals("信息修改")) 
			{ 
				aModify.show();	 
			} 
			if(e.getActionCommand().equals("信息删除")) 
			{ 
				aDelete.show(); 
			}			 
		} 
		private void open() 
		{//打开数据 
			try 
			{ 
				reader = new FileReader(dataFile); 
				bufReader = new BufferedReader(reader); 
				while((dataLine = bufReader.readLine())!=null) 
				{ 
					model.addRow(dataLine.split(","));							 
				} 
				reader.close(); 
				bufReader.close(); 
			} 
			catch(FileNotFoundException fe) 
			{ 
				JOptionPane.showMessageDialog(frame,"文件未找到!", 
							 	"错误",JOptionPane.ERROR_MESSAGE); 
			} 
			catch(IOException ioe) 
			{ 
				ioe.printStackTrace(); 
			}			 
		} 
		private void save() 
		{//保存数据 
			try 
			{ 
				writer = new FileWriter(dataFile); 
				for(Vector vectorLine:data) 
				{ 
					for(String meta:vectorLine) 
					{ 
						writer.write(meta); 
						writer.write(","); 
					}	 
					writer.write(System.getProperty("line.separator")); 
				}		 
				writer.close(); 
				JOptionPane.showMessageDialog(frame,"保存成功!"); 
			} 
			catch(IOException ioe) 
			{ 
				ioe.printStackTrace(); 
			}		 
		}	 
	} 
	StudentManager(String title) 
	{//构造方法 
		file.setMnemonic('F'); 
		addItem(file,open,"导入数据","ctrl O"); 
		addItem(file,save,"导出数据","ctrl S"); 
		file.addSeparator(); 
		addItem(file,exit,"退出","alt X"); 
		 
		manager.setMnemonic('M'); 
		addItem(manager,insert,"信息录入","F5"); 
		addItem(manager,select,"信息查询","F6"); 
		addItem(manager,modify,"信息修改","F7"); 
		addItem(manager,delete,"信息删除","F8"); 
		//表格初始化 
		for(String str:titles) 
			header.add(str); 
		model = new DefaultTableModel(data,header) 
				{ 
					public boolean isCellEditable(int row,int col) 
					{ 
						return false;	 
					}	 
				}; 
		table = new JTable(model); 
		table.getColumnModel().getColumn(0).setPreferredWidth(20); 
		table.getColumnModel().getColumn(1).setPreferredWidth(40); 
		table.getColumnModel().getColumn(2).setPreferredWidth(20); 
		table.getColumnModel().getColumn(3).setPreferredWidth(20); 
		table.getColumnModel().getColumn(4).setPreferredWidth(80); 
		table.getColumnModel().getColumn(5).setPreferredWidth(200); 
		scroll = new JScrollPane(table); 
		scroll.setPreferredSize(new Dimension(WIDTH-10,HEIGH-60)); 
		panel.add(scroll);	 
		//添加菜单栏 
		bar.add(file); 
		bar.add(manager); 
		frame.setJMenuBar(bar); 
		//添加工具栏和面板 
		frame.add(tool,"North"); 
		frame.add(panel,"Center"); 
		//框架的属性设置	 
		frame.setBounds((dim.width-WIDTH)/2,(dim.height-HEIGH)/2,WIDTH,HEIGH); 
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
		frame.setTitle(title); 
		frame.setVisible(true); 
	} 
	public static DefaultTableModel getModel() 
	{ 
		return model; 
	} 
	public static Vector> getData() 
	{ 
		return data;	 
	} 
	public static void main(String[] args) 
	{//main方法 
		StudentManager manager = new StudentManager("学生信息管理系统");	 
	}			 
}