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

📄 tableframe.java

📁 java程序 学生信息管理系统 数据库采用acce
💻 JAVA
字号:
package com.studentFrame;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.sql.*;

/*管理员或教师登陆时信息的显示界面*/

public class TableFrame extends JFrame implements ActionListener           
{
	Object columnname [];   //表格的列名
	Object columndata[][];   //表格数据
	/*菜单*/
	MenuBar m_menubar;
	Menu menuEdit,menuHelp;
	MenuItem mi_edit_add,mi_edit_delete,mi_edit_modify;
	MenuItem mi_help_about;
	
	DefaultTableModel dtm;
	JScrollPane jscrollpane;
	private JTable table;
	Panel p;
	TextField grd,cls;   //班级与年级
	JButton inquire;
	Label hint1,hint2; //提示班级,年级的输入格式
	int index;
	String temp;   //根据构造函数的参数判断是那张表
    String url,username,password,sql; 
    static Connection con =null;
    static Statement stmt = null;
    static ResultSet rs = null;
    int count = 0;
    int colcount = 0;
	TableFrame(boolean editable,String tablekind)
	{
	   Container c = getContentPane();
	   initMenu();   //初始化菜单
	   /*如果是教师登录不可以修改任何信息*/
	   if(!editable)          
	   {
	     mi_edit_add.setEnabled(false);
		 mi_edit_delete.setEnabled(false);
		 mi_edit_modify.setEnabled(false); 
	   }
	   temp = tablekind;	  
	   String student[] = {"学号","姓名","性别","籍贯","地址","系别","年级","生日","入学时间",};
 	   String course[] = {"课程","性质","学时","学分","学期","班级","教师","地点","星期"};
 	   /*根据不同参数初始化列名*/
 	   if(tablekind.equals("学生基本信息表"))
 	   {
 	   	 columnname  = new Object[9];
 	   	 for(int i = 0;i<9;i++)
 	   	   columnname[i] = student[i];
 	   }
	   else if(tablekind.equals("课程表"))
	   {
	     columnname  = new Object[9];
 	   	 for(int i = 0;i<9;i++)
 	   	   columnname[i] = course[i];
	   }
	   /*初始化表格数据*/	           
	   columndata = new Object[20][columnname.length];
	   for(int i = 0;i<20;i++)
	     for(int j = 0;j<columnname.length;j++)
		     columndata[i][j] = "";	
		 if(editable)
		 {
			dtm = new DefaultTableModel(columndata,columnname)
			{
						public Class getColumnClass(int c)
						{
							return getValueAt(0,c).getClass();
						}
						public boolean isCellEditable(int row,int col)
						{
						      return true;		//行可编辑			      		
						}
	
			};
		}
		else
		{
			dtm = new DefaultTableModel(columndata,columnname)
			{
						public Class getColumnClass(int c)
						{
							return getValueAt(0,c).getClass();
						}
						public boolean isCellEditable(int row,int col)
						{
						      return false;		//行不可编辑			      		
						}
	
			};
		}
		table = new JTable(dtm);	
	    setTitle(tablekind);
		jscrollpane = new JScrollPane(table);
		p = new Panel();
		grd = new TextField("",6);
		cls = new TextField("",6);
		
		inquire = new JButton("查询");	
		if(tablekind.equals("学生基本信息表"))
		 hint1 = new Label("入学时间(例如:2004)");
		else 
		 hint1 = new Label("学期(例如2005-1)");
		hint2 = new Label("班级(例如:043)");
		
		p.add(hint1);
		p.add(grd);
		p.add(hint2);
		p.add(cls);
		p.add(inquire); 
		c.add(p,BorderLayout.NORTH);	
		this.setMenuBar(m_menubar);
		c.add(jscrollpane,BorderLayout.CENTER);
	    inquire.addActionListener(this);
		jscrollpane.setSize(650,400);
        /*连接数据库*/
        url="jdbc:odbc:javadbc";
	    username="";
	    password="";
	    try{
	         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
	         con=DriverManager.getConnection(url,username,password);
	         stmt=con.createStatement();
	        }
	    catch(SQLException ex)
	        {
	   	     System.out.println(ex.getMessage());
	        }
	    catch(Exception e){} 
	    addWindowListener(new closeWin());
		setSize(700,500);
		setVisible(true);
	//	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);WindowConstants.DO_NOTHING_ON_CLOSE
	}
	/*初始化菜单*/
	public void initMenu()   //
	{
	    m_menubar = new MenuBar();	
		menuEdit = new Menu("编辑");
		mi_edit_add = new MenuItem("添加",new MenuShortcut('a'));
		mi_edit_delete = new MenuItem("删除",new MenuShortcut('d'));
		mi_edit_modify = new MenuItem("修改",new MenuShortcut('m'));
		mi_edit_add.addActionListener(this);
		mi_edit_delete.addActionListener(this);
		mi_edit_modify.addActionListener(this);
		menuEdit.add(mi_edit_add);
		menuEdit.add(mi_edit_delete);
		menuEdit.add(mi_edit_modify);
		m_menubar.add(menuEdit);
		
		menuHelp = new Menu("帮助");
		mi_help_about = new MenuItem("关于...",new MenuShortcut('h'));
		mi_help_about.addActionListener(this);
		menuHelp.add(mi_help_about);
		m_menubar.add(menuHelp);
	}
	public void addData()   //添加数据函数
	{  
	   String sql1 = "";
	   int rows = count;        //rows用来跟踪插入的记录数
	   while(!(((String)dtm.getValueAt(rows,0)).equals("")))
	   {
	   	/*根据不同参数执行不同的sql语句*/
		    if(temp.equals("学生基本信息表"))
		     sql ="insert into student values('"+dtm.getValueAt(rows,0)+"','"+
		            dtm.getValueAt(rows,1)+"','"+dtm.getValueAt(rows,2)+"','"+
		            dtm.getValueAt(rows,3)+"','"+dtm.getValueAt(rows,4)+"','"+
		            dtm.getValueAt(rows,7)+"','"+dtm.getValueAt(rows,8)+"','"+
		            dtm.getValueAt(rows,6)+"','"+dtm.getValueAt(rows,5)+"','"+
		            dtm.getValueAt(rows,7)+"')";
		    else if(temp.equals("课程表"))
		    {
		     sql = "insert into course values('"+dtm.getValueAt(rows,0)+"','"+
		            dtm.getValueAt(rows,4)+"','"+dtm.getValueAt(rows,1)+"','"+
		            dtm.getValueAt(rows,2)+"','"+dtm.getValueAt(rows,3)+"')";
		     sql1 = "insert into cschedule values('"+dtm.getValueAt(rows,0)+"','"+
		            dtm.getValueAt(rows,5)+"','"+dtm.getValueAt(rows,6)+"','"+
		            dtm.getValueAt(rows,7)+"','"+dtm.getValueAt(rows,8)+"')";
		    }		
			if(index!=-1)
			{
			  try{
			  	  if(temp.equals("课程表"))
			  	    if(stmt.executeUpdate(sql1)== 0)
			  	      JOptionPane.showMessageDialog(null,"插入失败");
			      int i = stmt.executeUpdate(sql);
			       if(i == 0)
			       JOptionPane.showMessageDialog(null,"插入失败");
			      }
			  catch(SQLException ex)
			  {
			  	 System.out.println(ex.getMessage());
			  }     
		    }
		    rows++;
		}
		count = rows+1;    //返回记录总数
	}
	public void deleteData()    //删除数据函数
	{   
	    String sql1="";
	    index = table.getSelectedRow();
	    if(JOptionPane.showConfirmDialog(null, "确定要删除", "删除", JOptionPane.ERROR_MESSAGE)==0)
	    {
	    if(temp.equals("学生基本信息表"))
	     sql ="delete from student where id ='"+dtm.getValueAt(index,0)+"'";
	    else if(temp.equals("课程表"))
	    { 
	      sql ="delete from course where cname ='"+dtm.getValueAt(index,0)+"'";
	      sql1 = "delete from cschedule where cname ='"+dtm.getValueAt(index,0)
			      +"' and grade='"+dtm.getValueAt(index,5)+"' and teacher ='"
			      +dtm.getValueAt(index,6)+"' and place = '"
			      +dtm.getValueAt(index,7)+"' and week = '"
			      +dtm.getValueAt(index,8)+"'";
	    }		
		if(index!=-1)
		{
			try{
			     int i = stmt.executeUpdate(sql);
			     if(temp.equals("课程表"))
			      {
			       if(stmt.executeUpdate(sql1)==0)
			         JOptionPane.showMessageDialog(null,"删除失败");
			      }
		         if(i != 0)
		           dtm.removeRow(index);
		         else
		           JOptionPane.showMessageDialog(null,"删除失败"); 
			    }
			catch(SQLException ex)
			  {
			  	 System.out.println(ex.getMessage());
			  }     		
		}
		else 
		JOptionPane.showMessageDialog(null,"请选择要删除的行");
	 }
	}
	public void updateData()    //更新数据函数
	{
		String sql1 = "";
	    index = table.getSelectedRow();
	    /*根据不同的表执行不同的sql语句*/
	    if(temp.equals("学生基本信息表"))
	    {
	    	sql = "update student set name ='"+dtm.getValueAt(index,1)+"',sex ='"+
	    	       dtm.getValueAt(index,2)+"',nativeplace ='"+dtm.getValueAt(index,3)+
	    	       "',address ='"+dtm.getValueAt(index,4)+"',dept ='"+dtm.getValueAt(index,5)+
	    	       "',grade ='"+dtm.getValueAt(index,6)+"',birth ='"+dtm.getValueAt(index,7)+
	    	       "'where id ='"+dtm.getValueAt(index,0)+"'";
	    }	     
	    else if(temp.equals("课程表"))
	    {
	     	sql = "update course set cname ='"+dtm.getValueAt(index,0)+"',term ='"+
	     	       dtm.getValueAt(index,4)+"',property ='"+dtm.getValueAt(index,1)+"',studytime ="
	     	       +dtm.getValueAt(index,2)+",credit ="+dtm.getValueAt(index,3)+" where cname='"
	     	       +dtm.getValueAt(index,0)+"'";
	     	 try{
	     	 	  rs = stmt.executeQuery("select * from cschedule where cname ='"+dtm.getValueAt(index,0)+"'"); 
	             while(rs.next())
	             {
	             sql1 = "update cschedule set cname ='"+dtm.getValueAt(index,0)+"',grade ='"+
	     	       dtm.getValueAt(index,5)+"',teacher ='"+dtm.getValueAt(index,6)+"',place ='"
	     	       +dtm.getValueAt(index,7)+"',week ='"+dtm.getValueAt(index,8)+"' where cname ='"
	     	       +rs.getString(1)+"'and grade ='"+rs.getString(2)+"'and teacher ='"
	     	       +rs.getString(3)+"'and place ='"+rs.getString(4)+"'and week ='"+rs.getString(5)+"'";
	     	     //  System.out.println(sql1+"hhh");
	     	       }
	     	       if(stmt.executeUpdate(sql1)==0)
	           	     JOptionPane.showMessageDialog(null,"修改失败");	     	     
	     	     } 
	     	  catch(SQLException sqlx)
	     	  {
	     	  	System.out.println(sqlx.getMessage());
	     	  }    
	    }
	    	
		if(index!=-1)
		{
	      try{ 
		       int i = stmt.executeUpdate(sql);
		       if(i == 0)
		         JOptionPane.showMessageDialog(null,"修改失败"); 
		     }
		  catch(SQLException ex)
		  {
		  	System.out.println(ex.getMessage());
		  }   
		}
		else 
		 JOptionPane.showMessageDialog(null,"请选择要修改的行");
	}
	/*显示查询信息的函数*/
	public void displayInfo(String grd,String cls)   
	{
	  clearRecord();
	  count = colcount = 0;
      boolean hasrecord = false;
      if(temp.equals("学生基本信息表"))
      { 
       if(!grd.equals("")&&!cls.equals(""))
	    sql = "select id,name,sex,nativeplace,address,dept,grade,birth,entrytime from student"
	         +" where entrytime='"+grd+"'and grade ='"+cls+"'";
	   else if(!grd.equals(""))
	    sql = "select id,name,sex,nativeplace,address,dept,grade,birth,entrytime from student"
	         +" where entrytime='"+grd+"'";
	   else 
	    sql = "select id,name,sex,nativeplace,address,dept,grade,birth,entrytime from student"
	         +" where grade ='"+cls+"'";    
	   colcount = 9;
	  }
	  else if(temp.equals("课程表"))
	  {
	  	if(!grd.equals("")&&!cls.equals(""))
	  	  sql = "select course.cname,property,studytime,credit,term,grade,teacher,place,week"
	  	       +" from course,cschedule where course.cname = cschedule.cname and grade = '"+
	  	       grd+"' and term = '"+cls+"'";
	  	else if(!grd.equals(""))
	  	  sql = "select course.cname,property,studytime,credit,term,grade,teacher,place,week"
	  	       +" from course,cschedule where course.cname = cschedule.cname and term = '"+
	  	       grd+"'";
	  	else
	  	  sql = "select course.cname,property,studytime,credit,term,grade,teacher,place,week"
	  	       +" from course,cschedule where course.cname = cschedule.cname and grade='"+
	  	         cls+"'";
	  	      
	  	colcount = 9;
	  }   
	  try 
	  { 
	     rs=stmt.executeQuery(sql);	 
	     while(rs.next())
	     {
	       for(int j = 1;j<=colcount;j++)
	       {
	       	  dtm.setValueAt(rs.getString(j),count,j-1);	
	       }
	       hasrecord = true;
	       count++;
	     }
	     
	     if(hasrecord == false) 
	      JOptionPane.showMessageDialog(this, "无记录", "alert", JOptionPane.ERROR_MESSAGE);
	  } 
      catch(SQLException ex)
      {
      	System.out.println(ex.getMessage());
      }
	  rs = null;
	}
	/*显示信息函数的重载*/
	public void displayInfo()    
	{
	  clearRecord();
	  count = colcount = 0;
      if(temp.equals("学生基本信息表"))
      {  
	   sql = "select id,name,sex,nativeplace,address,dept,grade,birth,entrytime from student";      
	   colcount = 9;
	  }
	  else if(temp.equals("课程表"))
	  {
	  	sql = "select course.cname,property,studytime,credit,term,grade,teacher,place,week"
	  	       +" from course,cschedule where course.cname = cschedule.cname";
	  	colcount = 9;
	  }   
	  try 
	  { 
	     rs=stmt.executeQuery(sql);
	     while(rs.next())
	     {
	       for(int j = 1;j<=colcount;j++)
	       {
	       	  dtm.setValueAt(rs.getString(j),count,j-1);	
	       }
	       count++;
	     }
	  } 
      catch(SQLException ex)
      {
      	System.out.println(ex.getMessage());
      }
	  rs = null;	
	}
	public void clearRecord()    //清除记录
	{
		for(int i = 0;i<count;i++)
	     for(int j = 0;j<colcount;j++)
		     dtm.setValueAt("",i,j);
	}
	public static void closeConn()   //在关闭窗口时关闭数据库联接
	{
		try
	      {
	        if(stmt!=null)
              stmt.close();
            if(rs!=null)
              rs.close();
            con.close();
          }
      catch(SQLException ex)
          {
 	         ex.printStackTrace();
          }  
             
	}
	public void actionPerformed(ActionEvent e)
	{   
	    if(e.getSource() == inquire)
	    {
	      if(grd.getText().trim().equals("")&& cls.getText().trim().equals(""))
	        displayInfo();
	      else
	        displayInfo(grd.getText().trim(),cls.getText().trim());
	    }  
		else if(e.getActionCommand()== "添加")
		    addData();
		 else if(e.getActionCommand()=="删除")
		   deleteData();
		 else if(e.getActionCommand()=="修改")
		   updateData();
		 else
		   JOptionPane.showMessageDialog(this, "  在进行修改,插入操作时修改完最后\n"+
		                                 "一个字段后需点击同行其他字段\n"+"以便读入此字段值");
		
	}
}

class closeWin extends WindowAdapter   //关闭窗口时关闭数据库连接
{
	public void windowClosing(WindowEvent e)
	{
	  JFrame frm = (JFrame)(e.getSource());
	  TableFrame.closeConn();
	  frm.dispose();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -