/*使用前请先建一个数据库放在同一个文件夹下,名为 学生管理数据库.mdb
*然后建两张表名称分别为: 学生信息表 和 管理员
*学生信息表 的字段有:"学号","姓名","性别","民族","年龄","年级","班级","专业" 其中"
性别"为数值型其它为字符型
*管理员
*/
的字段有:"用户名" 和 "密码" , 并且添加一条记录 :admin,admin
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.border.*;
import javax.swing.JOptionPane;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import java.sql.*;
import java.awt.GridLayout;
public class myStudent {
public myStudent() {
}
public static void main(String[] args) {
// TODO code application logic here
loginFrame lf=new loginFrame();
lf.setVisible(true);
lf.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
}
//主界面
class mainFrame extends JFrame implements
MenuBar myMenuBar=new MenuBar();
ActionListener{
Menu myMenuFile,myMenuEdit,myMenuUser,myMenuAbout;
MenuItem miNew,miOpen,miSave,miSaveAs,miExit;
MenuItem miAdd,miEdit,miDel,miFind,miShow,miUser,miAbout;
public JTable table = new JTable();
public DefaultTableModel mm ;
public mainFrame(){
myMenuFile=new Menu("文件");
miNew=new MenuItem("新建");
miOpen=new MenuItem("打开");
miSave=new MenuItem("保存");
miExit=new MenuItem("退出");
//miNew.enable(false);
//miOpen.enable(false);
//miSave.enable(false);
//myMenuFile.add(miNew);
//myMenuFile.add(miOpen);
//myMenuFile.add(miSave);
myMenuFile.add(miExit);
myMenuEdit=new Menu("数据编辑");
miFind=new MenuItem("查找数据");
miAdd=new MenuItem("添加数据");
miEdit=new MenuItem("修改数据");
miDel=new MenuItem("删除数据");
miShow=new MenuItem("全部显示");
myMenuEdit.add(miFind);
myMenuEdit.add(miAdd);
myMenuEdit.add(miEdit);
myMenuEdit.add(miDel);
myMenuEdit.add(miShow);
myMenuUser=new Menu("用户");
miUser=new MenuItem("编辑用户");
myMenuUser.add(miUser);
myMenuAbout=new Menu("我的作业");
miAbout=new MenuItem("作业说明");
myMenuAbout.add(miAbout);
myMenuBar.add(myMenuFile);
myMenuBar.add(myMenuEdit);
myMenuBar.add(myMenuUser);
myMenuBar.add(myMenuAbout);
String[] col = {"学号","姓名","性别","民族","年龄","年级","班级","专业"};//创建属性
列名
mm= new DefaultTableModel(col,0);
table.setModel(mm);
JScrollPane tableScrollPane = new JScrollPane(table);
this.setMenuBar(myMenuBar);
this.add(tableScrollPane);
miExit.addActionListener(this);
miFind.addActionListener(this);
miAdd.addActionListener(this);
miEdit.addActionListener(this);
miDel.addActionListener(this);
miShow.addActionListener(this);
miUser.addActionListener(this);
miAbout.addActionListener(this);
}
public void freshTable(String sql){
myConnection conn=new myConnection();
ResultSet rs;
rs=conn.getResult(sql);
if (rs!=null){
try{
mm.setRowCount(0);
table.setModel(mm);
while(rs.next()){
String 学号 = rs.getString("学号");
String 姓名 = rs.getString("姓名");
String 性别 = rs.getString("性别");
String 民族 = rs.getString("民族");
String 年龄 = rs.getString("年龄");
String 年级 = rs.getString("年级");
String 班级 = rs.getString("班级");
String 专业 = rs.getString("专业");
String[] cloumns ={学号,姓名,性别,民族,年龄,年级,班级,专业};
mm.addRow(cloumns);
}
//table.clearSelection();
table.setModel(mm);
}catch(Exception e){
System.out.println(e.toString());
}
}
}
public void actionPerformed(ActionEvent e){
//退出
if (e.getSource()==miExit){
System.exit(0);
//查找
}else if(e.getSource()==miFind){
findFrame ff=new findFrame(this);
ff.setVisible(true);
//添加
}else if(e.getSource()==miAdd){
addFrame af=new addFrame(this);
af.setVisible(true);
//修改
}else if(e.getSource()==miEdit){
if (table.getSelectedRow()==-1){
JOptionPane.showMessageDialog(null, "请选择你要修改的内容", "温馨提
示", JOptionPane.INFORMATION_MESSAGE);
}else{
editFrame ef=new editFrame(this);
ef.学号.setText((String)table.getValueAt(table.getSelectedRow(),0));
ef.姓名.setText((String)table.getValueAt(table.getSelectedRow(),1));
ef.性别.setText((String)table.getValueAt(table.getSelectedRow(),2));
ef.民族.setText((String)table.getValueAt(table.getSelectedRow(),3));
ef.年龄.setText((String)table.getValueAt(table.getSelectedRow(),4));
ef.年级.setText((String)table.getValueAt(table.getSelectedRow(),5));
ef.班级.setText((String)table.getValueAt(table.getSelectedRow(),6));
ef.专业.setText((String)table.getValueAt(table.getSelectedRow(),7));
ef.setVisible(true);
this.freshTable("select * from 学生信息表");
}
//删除
}else if(e.getSource()==miDel){
if (table.getSelectedRow()==-1){
JOptionPane.showMessageDialog(null, "请选择你要删除的行", "温馨提示",
JOptionPane.INFORMATION_MESSAGE);
}else {
String
sql="delete
from 学 生 信 息 表
where 学 号
=
'"+table.getValueAt(table.getSelectedRow(),0)+"'";
//JOptionPane.showMessageDialog(null,
sql,
" 温 馨 提 示 ",
JOptionPane.INFORMATION_MESSAGE);
myConnection conn=new myConnection();
if (conn.executeSql(sql)){
JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null, " 成 功 删 除 ", " 温 馨 提 示 ",
this.freshTable("select * from 学生信息表");
}else {
JOptionPane.showMessageDialog(null, " 未 知 错 误 ", " 删 除 失 败 ",
JOptionPane.INFORMATION_MESSAGE);
}
}
//显示
}else if(e.getSource()==miShow){
//JOptionPane.showMessageDialog(null, " 未 知 错 误 ", " 删 除 失 败 ",
JOptionPane.INFORMATION_MESSAGE);
this.freshTable("select * from 学生信息表");
//用户管理
}else if(e.getSource()==miUser){
userFrame uf=new userFrame();
uf.setVisible(true);
//关于
}else if(e.getSource()==miAbout){
aboutFrame af=new aboutFrame();
af.setVisible(true);
}
}
}
class myConnection{
ResultSet re;
String strurl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ= 学 生 管 理 数 据
库.mdb";
public myConnection(){}
public ResultSet getResult(String sql){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection(strurl);
Statement
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet re=stmt.executeQuery(sql);
return re;
}
catch(Exception e){
System.out.println("getResult------"+e.toString());
return null;
}
}
public boolean executeSql(String sql){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection(strurl);
Statement stmt=conn.createStatement();
stmt.executeUpdate(sql);
conn.commit();
return true;
}
catch(Exception e){
System.out.println("executeSql----"+e.toString());
return false;
}
}
}
class addFrame extends JDialog implements ActionListener{
public static final int WIDTH = 400;
public static final int HEIGHT = 400;
JLabel 学号 1,姓名 1,性别 1,民族 1,年龄 1,年级 1,班级 1,专业 1;
JTextField 学号,姓名,性别,民族,年龄,年级,班级,专业;
JButton b;
JPanel p;
mainFrame mf;
public addFrame(mainFrame mmf){
setTitle("修改学生信息");
setSize(WIDTH,HEIGHT);
setLocation(120,180);
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
学号 1=new JLabel("学号");
姓名 1=new JLabel("姓名");
性别 1=new JLabel("性别");
民族 1=new JLabel("民族");
年龄 1=new JLabel("年龄");
年级 1=new JLabel("年级");
班级 1=new JLabel("班级");
专业 1=new JLabel("专业");
学号=new JTextField(5);
姓名=new JTextField(5);
性别=new JTextField(5);
民族=new JTextField(5);
年龄=new JTextField(5);
年级=new JTextField(5);
班级=new JTextField(10);
专业=new JTextField(10);
b=new JButton("确定");
p=new JPanel();
p.setLayout(new GridLayout(10,2,5,5));
p.add(学号 1);
p.add(学号);
p.add(姓名 1);
p.add(姓名);
p.add(性别 1);
p.add(性别);
p.add(民族 1);
p.add(民族);
p.add(年龄 1);
p.add(年龄);
p.add(年级 1);
p.add(年级);
p.add(班级 1);
p.add(班级);
p.add(专业 1);
p.add(专业);
p.add(new Label(""));
p.add(new Label(""));
p.add(b);
contentPane.add(p);
//添加按钮监听器
b.addActionListener(this);
mf=mmf;
}
public void actionPerformed(ActionEvent e){
if (学号.getText().toString().equals("")){
JOptionPane.showMessageDialog(null, " 请 输 入 学 号 ", " 温 馨 提 示 ",
JOptionPane.INFORMATION_MESSAGE);
}else if (姓名.getText().toString().equals("")){
JOptionPane.showMessageDialog(null, " 请 输 入 姓 名 ", " 温 馨 提 示 ",
JOptionPane.INFORMATION_MESSAGE);
}else if (年龄.getText().toString().equals("")){
JOptionPane.showMessageDialog(null, " 请 输 入 年 龄 ", " 温 馨 提 示 ",
JOptionPane.INFORMATION_MESSAGE);
}else{
String sql="select * from 学生信息表 where 学号='" + 学号.getText() + "'";
myConnection conn=new myConnection();
ResultSet rs;
rs=conn.getResult(sql);
try{
//System.out.println(rs.getRow());
if (rs.next()){
JOptionPane.showMessageDialog(null, "此学号已经存在", "温馨提示",
JOptionPane.INFORMATION_MESSAGE);
}else{
sql="insert into 学 生 信 息 表 values('" + 学 号 .getText()+"','"+ 姓
名 .getText() +"','"+ 性 别 .getText() +"','"+ 民 族 .getText() +"',"+ 年 龄 .getText() +",'"+ 年
级.getText() +"','"+ 班级.getText() +"','"+ 专业.getText() +"')";
if (conn.executeSql(sql)){
JOptionPane.showMessageDialog(null, " 添 加 成 功", " 温 馨 提 示",
JOptionPane.INFORMATION_MESSAGE);
mf.freshTable("select * from 学生信息表");
学号.setText("");
姓名.setText("");
性别.setText("");
民族.setText("");
年龄.setText("");
年级.setText("");
班级.setText("");
专业.setText("");