java学籍管理系统

来源:互联网 发布:c语言迭代法辗转相减法 编辑:程序博客网 时间:2024/04/27 14:17

//自己建个access数据库——“学生管理数据库”,创建表“学生信息表”,列名:学号,姓名,性别,民族,年龄,年级,班级,专业,其中年龄

//字段类型设置成数字。否则按年龄查询时会出错!

import java.net.URL;
import javax.swing.ImageIcon;
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) {
        loginFrame lf=new loginFrame();
        lf.setVisible(true);
        lf.addWindowListener(new WindowAdapter(){
         public void windowClosing(WindowEvent e){
          System.exit(0);
         }
        });
    }
}


//主界面
class mainFrame extends JFrame implements   ActionListener{
    //创建对象
        MenuBar myMenuBar=new MenuBar();     //菜单栏
 Menu myMenuFile,myMenuEdit,myMenuUser;    //下拉菜单组件
 MenuItem miNew,miOpen,miSave,miSaveAs,miExit;      
 MenuItem miAdd,miEdit,miDel,miFind,miShow,miUser;     //菜单元素
 
 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("退出");    //给菜单组件添加实际菜单项
  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);
  
  myMenuBar.add(myMenuFile);
  myMenuBar.add(myMenuEdit);
  myMenuBar.add(myMenuUser);    //将组件添加到菜单栏
        
  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);  //添加监听者
    
  }
 
 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.showMessageDialog(null, "成功删除", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
     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); 
  }
 }
        //添加背景图片
    /*    private class MyPanel extends JPanel {
           public void paintComponent(Graphics g) {
              Graphics2D g2 = (Graphics2D)g;
              super.paintComponent(g);
              Image img = Toolkit.getDefaultToolkit().getImage("my.jpg");
              g2.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
           }
       }

     */  

}


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.TYPE_SCROLL_SENSITIVE   数据集支持指针滚动,
                                                                                                                     //ResultSet.CONCUR_UPDATABLE   数据库更新是客户端同步更新
   ResultSet re=stmt.executeQuery(sql);//在此 公共接口 对象中执行 SQL 查询,并返回该查询生成的 接口 对象
   return re;  //返回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("");
      
     }else{
      JOptionPane.showMessageDialog(null, "添加失败", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
     }    
    }
   }catch(Exception er){
    System.out.println(er.toString());
   }
  }  
 }
  

 

class editFrame 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 editFrame(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);
    学号.setEnabled(false);

    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="update 学生信息表 set 姓名='"+姓名.getText()+"',性别='"+性别.getText()+"',年龄="+年龄.getText()+",年级='"+年级.getText()+"',班级='"+班级.getText()+"',专业='"+专业.getText()+"',民族='"+民族.getText()+"' where 学号='" + 学号.getText() + "'";
   myConnection conn=new myConnection();
   try{
    //JOptionPane.showMessageDialog(null, sql, "温馨提示", JOptionPane.INFORMATION_MESSAGE);
    if (conn.executeSql(sql)){
     JOptionPane.showMessageDialog(null, "修改成功", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
     mf.freshTable("select * from 学生信息表");
     this.dispose();
    }else{
     JOptionPane.showMessageDialog(null, "修改失败", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
    }
   }catch(Exception er){
    System.out.println(er.toString());
   }
  }  
 }
  

 

class findFrame extends JDialog implements ActionListener{

 mainFrame mf;
 JPanel p;
 JComboBox c;
 JTextField t;
 JButton b;
 JButton fAll;
 String sql="select * from student";
 String[] colStr={"学号","姓名","性别","民族","年龄","年级","班级","专业"};

 public findFrame(mainFrame mmf){
  mf=mmf;
  p=new JPanel();
  c=new JComboBox(colStr);
  t=new JTextField(10);
  b=new JButton("查找");
  fAll=new JButton("全部显示");
  
  b.addActionListener(this);
  fAll.addActionListener(this);
  
  p.add(new JLabel("选择"));
  p.add(c);
  p.add(new JLabel("查找内容"));
  p.add(t);
  p.add(b);
  p.add(fAll);
  this.add(p);
  this.setTitle("查找");
  this.setSize(450,80);
 }
 
 
 public void actionPerformed(ActionEvent e){
  //查找
  if (e.getSource()==b){
   String selectStr=c.getSelectedItem().toString();
   if (selectStr=="年龄"){
    sql="select * from 学生信息表 where "+selectStr+" = "+t.getText().toString();
   }
   else {
    sql="select * from 学生信息表 where "+selectStr+" = '"+t.getText().toString()+"'";
   }

   
   mf.freshTable(sql);
  //全部显示
  }if (e.getSource()==fAll){
   sql="select * from 学生信息表";
   mf.freshTable(sql);
  }
 }
}

class userFrame extends JFrame implements   ActionListener{
 
 JTextField user,pass;
 JButton add,del;
 JTable t;
 JPanel p1,p2,p3,p4,p5;
 DefaultTableModel m;
 
 public  userFrame(){
  p1=new JPanel();
  p2=new JPanel();
  p3=new JPanel();
  p4=new JPanel();
  p5=new JPanel();
  
  user=new JTextField(8);
  pass=new JTextField(8);
  add=new JButton("添加");
  del=new JButton("删除");
  String[] col = {"用户名","密码"};
  
  m= new DefaultTableModel(col,0);
  t=new JTable();
  t.setModel(m);   
  JScrollPane sp = new JScrollPane(t);
  
  p1.add(new JLabel("用户名"));
  p1.add(user);
  p1.add(new JLabel("密码"));
  p1.add(pass);
  p1.add(add);
  p2.add(sp);
  p3.add(del);  
  
  add.addActionListener(this);
  del.addActionListener(this);
  
  myConnection conn=new myConnection();
  ResultSet rs;
  rs=conn.getResult("select * from 管理员");
  if (rs!=null){
   try{
    while(rs.next()){
         String 用户名 = rs.getString("用户名");
         String 密码 = rs.getString("密码");
         String[] cloumns ={用户名,密码};         
         m.addRow(cloumns);    
      }
      t.setModel(m);
   }catch(Exception e){
    System.out.println(e.toString());
   }
  }
  
  
  
  this.add(p1,BorderLayout.NORTH);
  this.add(p2,BorderLayout.CENTER);
  this.add(p3,BorderLayout.SOUTH);
  this.add(p4,BorderLayout.WEST);
  this.add(p5,BorderLayout.EAST);
  this.setTitle("用户管理");
  this.setSize(600,400);
 }

 public void actionPerformed(ActionEvent e){
  //添加
  if (e.getSource()==add){
   if (user.getText().toString().equals("")){
    JOptionPane.showMessageDialog(null, "请输入用户名", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
   }else if (pass.getText().toString().equals("")){
    JOptionPane.showMessageDialog(null, "请输入密码", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
   }else{
    myConnection conn=new myConnection();
    ResultSet rs;
    try{
     rs=conn.getResult("select * from 管理员 where 用户名='"+user.getText().toString()+"'");    
     if (rs.next()){
      JOptionPane.showMessageDialog(null, "此用户已经存在", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
     }else{
      if (conn.executeSql("insert into 管理员 values('"+user.getText().toString()+"','"+pass.getText().toString()+"')")){
       String[] newUser={user.getText(),pass.getText()};       
       m.addRow(newUser);
       t.setModel(m);
       JOptionPane.showMessageDialog(null, "添加成功", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
      }else{
       JOptionPane.showMessageDialog(null, "添加失败", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
      }
     }
    }catch(Exception er){
     System.out.println(er.toString());
    }
   }
   
   //删除
  }else if (e.getSource()==del){
   if (t.getSelectedRow()==-1){
    JOptionPane.showMessageDialog(null, "请选择你要删除的行", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
   
   }else {
    
    String sql="delete from 管理员 where 用户名 = '"+t.getValueAt(t.getSelectedRow(),0)+"'";
    //JOptionPane.showMessageDialog(null, sql, "温馨提示", JOptionPane.INFORMATION_MESSAGE);
    myConnection conn=new myConnection();
    if (conn.executeSql(sql)){     
     m.removeRow(t.getSelectedRow());
     t.setModel(m);
     //t.removeRowSelectionInterval();
     JOptionPane.showMessageDialog(null, "成功删除", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
    }else {
     JOptionPane.showMessageDialog(null, "未知错误", "删除失败", JOptionPane.INFORMATION_MESSAGE);
    }    
   }
  }
 }
}

 

class loginFrame extends JDialog implements ActionListener{

 JPanel p;
 JTextField user,pass;
 JButton login,cancel;
        JLabel a1,a2,a3,a4,a5,a6,a7,a8,a9,a10;
 public loginFrame(){
  p=new JPanel();
  user=new JTextField(10);
  pass=new JTextField(10);
  login=new JButton("登录");
  cancel=new JButton("退出");
                a1=new JLabel();a2=new JLabel();a3=new JLabel();a4=new JLabel();a5=new JLabel();a6=new JLabel();
                a7=new JLabel();a8=new JLabel();a9=new JLabel();a10=new JLabel();
  user.setText("admin");
                pass.setText("admin");
  login.addActionListener(this);
  cancel.addActionListener(this);
  p.add(a1);p.add(a2);p.add(a3);p.add(a4);p.add(a5);
  p.add(new JLabel("                        账号:"));
  p.add(user);
  p.add(new JLabel("                        密码:"));
  p.add(pass);
                p.add(a8);p.add(a9);
  p.add(login);
                p.add(a7);
  p.add(cancel);
                p.add(a10);p.add(new JLabel());p.add(new JLabel());p.add(new JLabel());p.add(new JLabel());
  this.add(p);
  this.setTitle("系统登录");
  this.setSize(800,600);
                p.setLayout(new GridLayout(4,4,30,100));//四行四列,水平距离,垂直距离

 }
 
 
 public void actionPerformed(ActionEvent e){
  //查找
  if (e.getSource()==login){
   
   if (user.getText().toString().equals("")){
    JOptionPane.showMessageDialog(null, "请输入用户名", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
   }else if (pass.getText().toString().equals("")){
    JOptionPane.showMessageDialog(null, "请输入密码", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
   }else{
    myConnection conn=new myConnection();
    ResultSet rs;
    String  sql="select * from 管理员 where 用户名 = '"+user.getText().toString()+"' and 密码 = '"+pass.getText().toString()+"'";
    try{
     rs=conn.getResult(sql);    
     if (rs.next()){
      this.dispose();
      //JOptionPane.showMessageDialog(null, "此用户已经存在", "温馨提示", JOptionPane.INFORMATION_MESSAGE);
            sql="select * from 学生信息表";
            mainFrame mf=new mainFrame();
            mf.setTitle("学生信息管理系统");
            mf.setSize(800,600);
            mf.freshTable(sql);
            mf.setVisible(true);
            mf.addWindowListener(new WindowAdapter(){
             public void windowClosing(WindowEvent e){
              System.exit(0);
             }
            });
     }else{      
      JOptionPane.showMessageDialog(null, "用户名或密码错误", "登录失败", JOptionPane.INFORMATION_MESSAGE);      
     }
    }catch(Exception er){
     System.out.println(er.toString());
    }
   }
  //全部显示
  }if (e.getSource()==cancel){
   System.exit(0);
  }
 }
}

原创粉丝点击