哈工大java实验 学生管理数据库

这次的实验差点忘记贴了上来

主要是数据库这边要连接好

怎么连接:

http://blog.csdn.net/xihuanqiqi/article/details/6728641

怎么操作:

http://blog.csdn.net/xihuanqiqi/article/details/6728716

数据库外,没一点难度,事实上,数据库也不难。




/*
 * For java 5
 * Made a database manage system
 */
import java.awt.BorderLayout;
import java.awt.Choice;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.regex.Pattern;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JToolBar;

public class MyDataBase {

	public static void main(String args[]) throws ClassNotFoundException, SQLException {
		 new LoginFrame();
		//new DataBaseFrame();
	}
}

class DataBaseFrame extends JFrame implements ActionListener {
	private static final long serialVersionUID = 1L;
	private JMenuBar menuBar;
	private JMenu menu;
	private JMenuItem addStdItem;
	private JMenuItem exitItem;
	private JToolBar toolBar;
	private JTable table;
	private JButton addStdButton;
	private JButton exitButton;
	private int height, width;
	private JPanel panel;
	private ImageIcon icon1, icon2;
	private JScrollPane scrollPane;
	private Object[][] cellData;

	public JTable getTable(){
		return table;
	}
	public DataBaseFrame() throws ClassNotFoundException, SQLException {
		super("学生数据库管理系统");

		panel = new JPanel();
		panel.setLayout(null);
		this.add(panel);
		initHeightAndWidth();
		initMenuBar();
		initToolBar();
		reflashTableData();
		
		this.setSize(width, height);
		this.setVisible(true);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	}

	public void initHeightAndWidth() {
		Toolkit tk = Toolkit.getDefaultToolkit();
		Dimension screenSize = tk.getScreenSize();
		height = screenSize.height;
		width = screenSize.width;
	}

	public void initMenuBar() {
		menuBar = new JMenuBar();
		menu = new JMenu("学生管理");
		addStdItem = new JMenuItem("增加学生");
		exitItem = new JMenuItem("退出");
		addStdItem.addActionListener(this);
		exitItem.addActionListener(this);
		menu.add(addStdItem);
		menu.add(exitItem);
		menuBar.add(menu);
		setJMenuBar(menuBar);
	}

	public void initToolBar() {
		toolBar = new JToolBar();
		addStdButton = new JButton();
		exitButton = new JButton();
		String root = System.getProperty("user.dir").replace('\\', '/');
		icon1 = new ImageIcon(root + "/1.jpg");
		icon2 = new ImageIcon(root + "/2.jpg");
		icon1.setImage(icon1.getImage().getScaledInstance(100, 100,
				Image.SCALE_DEFAULT));
		icon2.setImage(icon2.getImage().getScaledInstance(100, 100,
				Image.SCALE_DEFAULT));
		addStdButton.setSize(100, 100);
		exitButton.setSize(100, 100);
		addStdButton.setIcon(icon1);
		exitButton.setIcon(icon2);
		addStdButton.addActionListener(this);
		exitButton.addActionListener(this);
		toolBar.add(addStdButton);
		toolBar.add(exitButton);
		panel.add(toolBar);
		toolBar.setBounds(0, 0, width, 100);
	}

	public void reFlashTable() {
		String[] columnNames = { "学号", "姓名", "性别", "年龄", "生日", "学院" };
		table = new JTable(cellData, columnNames);
		table.setBounds(0, 0, 450, 450);
		scrollPane = new JScrollPane(table);
		scrollPane.setBounds(0, 100, width, height - 100);
		panel.add(scrollPane);
	}

	public void reflashTableData() throws SQLException, ClassNotFoundException {
		Class.forName("com.mysql.jdbc.Driver");// 装载驱动Driver
		String DBUser = "root";// 自己数据库的用户名
		String DBPassword = "root";// 自己数据库的密码
		String url = "jdbc:mysql://127.0.0.1:3306/hit";
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(url, DBUser, DBPassword);
		} catch (SQLException e) {
			e.printStackTrace();
		}// 连接数据库
		Statement sm = conn.createStatement();
		String sql = "select  * from student";
		ResultSet rs = sm.executeQuery(sql);

		//炮哥的想法是在是太厲害了!!先是跑的最後知道了row
		//然後就能定義那個cellData了!厲害!
		//tabel太噁心了,構造函數總是要什麽object,不過這個方法
		//應該能應付大部份的情況了,學習啦.
		rs.last();
		cellData = new Object[rs.getRow()][6];
		System.out.println(rs.getRow());
		rs.beforeFirst();
		int i = 0;
		while (rs.next()) {
			for (int j = 0; j < 6; j++) {
				cellData[i][j] = rs.getObject(j + 1);
			}
			i++;
		}
		reFlashTable();

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==addStdItem || e.getSource() == addStdButton){
			new addStd();
		}
		if(e.getSource()==exitItem ||e.getSource() == exitButton){
			int returnVal = JOptionPane.showConfirmDialog(null, 
					"确定离开", "choose one", JOptionPane.YES_NO_OPTION);
			if(returnVal == JOptionPane.YES_OPTION){
				this.dispose();
				System.exit(0);
			}
		}
	}

class addStd extends JFrame implements ActionListener, ItemListener{
	private JLabel numLabel;
	private JTextField numField;
	private JLabel nameLabel;
	private JTextField nameField;
	private JLabel sexLabel;
	private JRadioButton maleRButton,femaleRButton;
	private JLabel ageLabel;
	private JTextField ageField;
	private JLabel birthdayLabel;
	private JLabel yearLabel,mouthLabel,dayLabel;
	private Choice yearChoice,mouthChoice,dayChoice;
	private JLabel collegeLabel;
	private Choice collegeChoice;
	private JButton addDataButton,exitButton;
	private ButtonGroup group;
	
	GridBagLayout bag = new GridBagLayout();
	GridBagConstraints c = new GridBagConstraints();

	String number;
	String name;
	String sex="M";
	int age;
	String birthday;
	String college;
			
	public addStd(){
		super("學生信息");
		init();
		this.setSize(400,400);
		this.setLocation(400,200);
		this.setVisible(true);
		//this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	}
	
	public void init(){
		JPanel panel=new JPanel();
		this.add(panel);
		numLabel=new JLabel("學號:");
		numField=new JTextField(100);
		nameLabel=new JLabel("姓名:");
		nameField=new JTextField(100);
		sexLabel=new JLabel("姓名:");
		maleRButton=new JRadioButton("男",true);
		femaleRButton=new JRadioButton("女");
		
		group=new ButtonGroup();
		group.add(femaleRButton);
		group.add(maleRButton);
		
		ageLabel=new JLabel("年齡:");
		ageField=new JTextField(100);
		ageField.setEditable(false);
		birthdayLabel=new JLabel("生日:");
		yearChoice=new Choice();
		for(int i=1900;i<2012;i++)
			yearChoice.addItem(String.valueOf(i));
		mouthChoice=new Choice();
		for(int i=1;i<13;i++)
			mouthChoice.addItem(String.valueOf(i));
		dayChoice=new Choice();
		for(int i=1;i<32;i++)
			dayChoice.addItem(String.valueOf(i));
		yearChoice.addItemListener(this);
		
		yearLabel=new JLabel("年");
		mouthLabel=new JLabel("月");
		dayLabel=new JLabel("日");
		collegeLabel= new JLabel("學院:");
		collegeChoice=new Choice();
		addDataButton=new JButton("錄入數據");
		addDataButton.setEnabled(false);
		exitButton=new JButton("離開");
		
		collegeChoice.addItem("Hang tian");
		collegeChoice.addItem("Software");
		
		
		panel.setLayout(bag);

		c.fill=2;
		setCons(1,0,1,1);	panel.add(numLabel,c);
		setCons(2,0,2,1);
		panel.add(numField,c);
		setCons(1,1,1,1);	panel.add(nameLabel,c);
		setCons(2,1,1,1);	panel.add(nameField,c);
		setCons(1,2,1,1);	panel.add(sexLabel,c);
		setCons(2,2,1,1);	panel.add(maleRButton,c);
		setCons(3,2,1,1);	panel.add(femaleRButton,c);
		setCons(1,3,1,1);	panel.add(ageLabel,c);
		setCons(2,3,1,1);	panel.add(ageField,c);
		setCons(1,4,1,1);	panel.add(birthdayLabel,c);
		setCons(2,4,1,1);	panel.add(yearChoice,c);
		setCons(3,4,1,1);	panel.add(yearLabel,c);
		setCons(4,4,1,1);	panel.add(mouthChoice,c);
		setCons(5,4,1,1);	panel.add(mouthLabel,c);
		setCons(6,4,1,1);	panel.add(dayChoice,c);
		setCons(7,4,1,1);	panel.add(dayLabel,c);
		setCons(1,5,1,1);	panel.add(collegeLabel,c);
		setCons(2,5,1,1);	panel.add(collegeChoice,c);
		setCons(2,6,1,1);	panel.add(addDataButton,c);
		setCons(4,6,1,1);	panel.add(exitButton,c);
		
		addListener();
		numField.addKeyListener(new NumberFieldKeyListener());
		nameField.addKeyListener(new NameFieldKeyListener());
	}
	

/* 子类NumberFieldKeyListener是用来监听JTextField的 */
class NumberFieldKeyListener implements KeyListener {
	public void keyTyped(KeyEvent e) {
		Object o = e.getSource();
		if (o instanceof JTextField) {
			char keyCh = e.getKeyChar();
			Pattern pat = Pattern.compile("[0-9]");
			if (!pat.matcher(String.valueOf(keyCh)).matches()) {
				if (keyCh != ' ') // 回车字符
					e.setKeyChar('\0');
			}
		}
	}
	public void keyPressed(KeyEvent arg0) {}
	public void keyReleased(KeyEvent arg0) {
		String tempNumber = numField.getText();
		String tempName =nameField.getText();
		if (tempNumber.length() != 0 && !tempName.equals(""))
		{
			addDataButton.setEnabled(true);
		}
	}
}
/* 子类NameFieldKeyListener是用来监听JTextField的 */
class NameFieldKeyListener implements KeyListener {
	public void keyTyped(KeyEvent e) {
		Object o = e.getSource();
		if (o instanceof JTextField) {
			char keyCh = e.getKeyChar();
			Pattern pat = Pattern.compile("[a-z]");
			if (!pat.matcher(String.valueOf(keyCh)).matches()) {
				if (keyCh != ' ') // 回车字符
					e.setKeyChar('\0');
			}
		}
	}
	public void keyPressed(KeyEvent arg0) {}
	public void keyReleased(KeyEvent arg0) {
		String tempNumber = numField.getText();
		String tempName =nameField.getText();
		if (tempNumber.length() != 0 && !tempName.equals(""))
		{
			addDataButton.setEnabled(true);
		}
	}
}
	public void addListener(){
		addDataButton.addActionListener(this);
		exitButton.addActionListener(this);
		maleRButton.addActionListener(this);
		femaleRButton.addActionListener(this);
	}
	
	public void setCons(int x,int y,int width,int height){
		c.weightx=1;
		c.weighty=1;
		c.gridx=x;
		c.gridy=y;
		c.gridheight=height;
		c.gridwidth=width;
	}

	public void getMsg(){
		number=numField.getText();
		name=nameField.getText();
		if(!number.equals("") && !name.equals("")){
			addDataButton.setEnabled(true); 	
		}
		//sex不在這裡取得
		//age这里遇到了小麻烦当我这么写的时候:  if(ageField.getText() != null) {即使它是null也被认为不是null}
		//看来得这么写才行啊,这问题明天好好整整
		String year=yearChoice.getSelectedItem();
		String mouth=mouthChoice.getSelectedItem();
		String day=dayChoice.getSelectedItem();
		//怎么得到系统的时间?并且解析出本年份???
		age = 2011-Integer.valueOf(year);
		ageField.setText(String.valueOf(age));
		birthday=year+"-"+mouth+"-"+day;
		college=collegeChoice.getSelectedItem();
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == maleRButton){
			sex="M";
		}
		if(e.getSource()==femaleRButton){
			sex="F";
		}
		if(e.getSource() == addDataButton){
			try {
				Class.forName("com.mysql.jdbc.Driver");
			
			String DBUser = "root";// 自己数据库的用户名
			String DBPassword = "root";// 自己数据库的密码
			String url = "jdbc:mysql://127.0.0.1:3306/hit";
			Connection conn = null;
			try {
				conn = DriverManager.getConnection(url, DBUser, DBPassword);
			} catch (SQLException e1) {
				e1.printStackTrace();
			}// 连接数据库

			Statement sm = conn.createStatement();
			getMsg();
			
			String sql="insert into student values("+"\""+number+"\","+"\""+name+"\","+"\""+sex+"\","
			+age+","+"\""+birthday+"\","+"\""+college+"\""+");";
				
			sm.executeUpdate (sql);
			reflashTableData();
				
			sm.close();
			conn.close();
			} catch (ClassNotFoundException e2) {
				e2.printStackTrace();
			}
			catch (SQLException e2) {
				e2.printStackTrace();
			}
		}
		if(e.getSource() == exitButton){
			this.dispose();	
		}
	}

	@Override
	public void itemStateChanged(ItemEvent e) {
		// TODO Auto-generated method stub

		age=2011-Integer.parseInt(yearChoice.getSelectedItem());
		ageField.setText(String.valueOf(age));
	}

}
}



class LoginFrame extends JFrame implements ActionListener {
	private JLabel userLabel;
	private JLabel mmLabel;
	private JTextField userField;
	private JPasswordField mmField;
	private JButton yes, no;
	private static final long serialVersionUID = 1L;

	public LoginFrame() {
		super("欢迎登陆数据库管理系统"); // 调用父类构造函数

		init();

		setResizable(false);
		this.setSize(300, 150);
		this.setLocation(400, 200);
		this.setVisible(true);
	}

	public void init() {
		JPanel panel = new JPanel();

		userLabel = new JLabel("用户名:");
		mmLabel = new JLabel("密码:");
		userField = new JTextField(50);
		mmField = new JPasswordField(50);
		yes = new JButton("登陆");
		no = new JButton("退出");

		panel.setLayout(null);
		userLabel.setBounds(30, 10, 50, 20);
		userField.setBounds(90, 10, 150, 20);
		mmLabel.setBounds(30, 40, 50, 20);
		mmField.setBounds(90, 40, 150, 20);
		yes.setBounds(90, 70, 60, 20);
		no.setBounds(180, 70, 60, 20);
		this.getRootPane().setDefaultButton(yes);

		panel.add(userLabel);
		panel.add(mmLabel);
		panel.add(userField);
		panel.add(mmField);
		panel.add(yes);
		panel.add(no);

		yes.addActionListener(this);
		no.addActionListener(this);

		Container container = getContentPane(); // 得到容器
		container.add(panel, BorderLayout.CENTER); // 增加组件到容器上
	}

	public void checkUser() throws IOException, SQLException,
			ClassNotFoundException {
		String user = userField.getText();
		@SuppressWarnings("deprecation")
		String mm = mmField.getText();
		Class.forName("com.mysql.jdbc.Driver");// 装载驱动Driver
		String DBUser = "root";// 自己数据库的用户名
		String DBPassword = "root";// 自己数据库的密码
		String url = "jdbc:mysql://127.0.0.1:3306/hit";
		Connection conn = null;
		try {
			conn = DriverManager.getConnection(url, DBUser, DBPassword);
		} catch (SQLException e) {
			e.printStackTrace();
		}// 连接数据库
		Statement sm = conn.createStatement();
		String sql = "select  * from admin";
		ResultSet rs = sm.executeQuery(sql);
		boolean found = false;
		while (rs.next()) {
			String un = rs.getString("username");// username是我table
			String pw = rs.getString("password");
			if (un.equals(user) && pw.equals(mm)) {
				found = true;
				break;
			}
		}
		if (found) {
			new DataBaseFrame();
			this.dispose();
		} else {
			JOptionPane.showMessageDialog(null, "用户名或密码不正确\n请注意大小写!");
			userField.setText(null);
			mmField.setText(null);
		}
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == yes) {
			try {
				checkUser();
			} catch (IOException e1) {
				e1.printStackTrace();
			} catch (SQLException e1) {
				e1.printStackTrace();
			} catch (ClassNotFoundException e2) {
				e2.printStackTrace();
			}
		} else if (e.getSource() == no) {
			System.exit(0);
		}
	}
}




  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值