• 数据库应用-java+sqlserver(三)CourseList


    CourseList:

    
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.sql.*;
    import javax.swing.DefaultCellEditor;
    import javax.swing.JButton;
    import javax.swing.JCheckBox;
    import javax.swing.JComboBox;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableCellRenderer;
    import javax.swing.table.TableColumnModel;
    
    public class CourseList extends JPanel implements ActionListener
    {
    	int count=0;//可供选择的课程数
    	MyTable table1;
    	JTable table2;
    	TableColumnModel tcm;
    	JButton button;
    	CourseList()
    	{
    		setLayout(new BorderLayout());
    		button=new JButton("确定");
    		button.addActionListener(this);
    		JPanel p=new JPanel();
    		p.add(button);
    		table1=new MyTable();
    		JTable table2=initTable(table1);
    		JScrollPane sp=new JScrollPane(table2);
    		add(sp,BorderLayout.CENTER);
    		add(p,BorderLayout.SOUTH);
    	}
    	private JTable initTable(JTable table) {   
            DefaultTableModel dtm = new DefaultTableModel(   
                new Object [] {"","课程编号","课程名称","学分","任课教师","教师职称","上课地点","已选人数"},0);   
            SqlManager DBm=SqlManager.createInstance();
            DBm.connectDB();
            String sql="exec AllCourse";//所有选修课,如果选课人数没有达到5时设置MyTable.b=true;
            ResultSet rs=DBm.executeQuery(sql);
            try{
            	while(rs.next())
                {
            		dtm.addRow(new Object[] {new Boolean(false),rs.getString(1),rs.getString(2),
            				rs.getString(3),rs.getString(4),rs.getString(5),rs.getString(6),rs.getString(7)});
            		count++;
                }
            	rs.close();
            }catch(SQLException e){
            	e.printStackTrace();
            }
            DBm.closeDB();
            table.setModel(dtm);   
            TableColumnModel tcm = table.getColumnModel();   
            tcm.getColumn(0).setCellEditor(new DefaultCellEditor(new JCheckBox()));   
            tcm.getColumn(0).setCellRenderer(new MyTableRenderer());
            tcm.getColumn(0).setPreferredWidth(20);   
            tcm.getColumn(0).setWidth(20);   
            tcm.getColumn(0).setMaxWidth(20);   
            return table;   
    	}
    	
    	public void actionPerformed(ActionEvent e)
    	{
    		if(e.getSource()==button)
    		{
    			if(selectcourse()>0)
    			{
    				JOptionPane.showMessageDialog(this,"选课成功
    点击"确定"查看以选课程",
    						"选课成功",JOptionPane.INFORMATION_MESSAGE);
    				ChooseList.updateTable();
    				StuPanel.card.show(StuPanel.pCenter, "已选课程");
    			}
    		}
    	}
    	public int selectcourse()
    	{
    		int selectedCount=ChooseList.getSelectedCount();
    		int a=xianzhi();
    		int c=0;
    		String[] courseID=new String[selectedCount];
    		if(selectedCount==3)
    		{
    			JOptionPane.showMessageDialog(this,"选课数目不能超过3门,你已经选择了3门
    点击"确定"查看已选课程",
    					"警告",JOptionPane.WARNING_MESSAGE);
    			ChooseList.updateTable();
    			StuPanel.card.show(StuPanel.pCenter, "已选课程");
    			return c ;
    		}
    		else{
    			if(a+selectedCount>3)
    			{
    				JOptionPane.showMessageDialog(this,"选课数目不能超过3门,你已经选择了"+selectedCount+"门
    点击"确定"查看以选课程",
    						"警告",JOptionPane.WARNING_MESSAGE);
    				ChooseList.updateTable();
    				StuPanel.card.show(StuPanel.pCenter, "已选课程");
    				return c;
    			}
    			else
    			{//不能选重复了
    				String sql="exec SelectedCourse'"+Logon.userid+"'";
    				//System.out.println(sql+"不能选重复了");
    				SqlManager DBm=SqlManager.createInstance();
    				DBm.connectDB();
    				ResultSet rs=DBm.executeQuery(sql);
    				try{
    					int i=0;
    					while(rs.next()){
    						courseID[i]=rs.getString(1).trim();
    						System.out.println(courseID[i]+"changdu");
    					}
    					rs.close();
    				}catch(SQLException e){
    					e.printStackTrace();
    					return c;
    				}
    				DBm.closeDB();
    				for(int i=0;i<count;i++)
    				{
    					for(int j=0;j<selectedCount;j++)
    					{
    						if(table1.getValueAt(i,0).toString().equals("true"))
    						{
    							//System.out.println(table1.getValueAt(i,1).toString().trim()+"选课不能重复,点击");
    							//System.out.println(courseID[j]);
    							if(table1.getValueAt(i,1).toString().trim().equals(courseID[j])){
    								JOptionPane.showMessageDialog(this,"选课不能重复,
    点击"确定"查看已选课程",
    										"警告",JOptionPane.WARNING_MESSAGE);
    								ChooseList.updateTable();
    								StuPanel.card.show(StuPanel.pCenter, "已选课程");
    								return c;
    						    }
    						}
    					}	
    				}
    				for(int i=0;i<count;i++)
    				{
    					if(table1.getValueAt(i,0).toString().equals("true"))
    					{
    						String courseid=table1.getValueAt(i,1).toString();
    						sql="exec SelectCourse'"+Logon.userid+"','"+courseid+"'";
    						DBm.connectDB();
    						c=DBm.executeUpdate(sql);
    						DBm.closeDB();
    						System.out.println("c1="+c);
    					}System.out.println("c2="+c);
    				}
    				if(c==0)
    				{
    					JOptionPane.showMessageDialog(this,"请选择选修课",
    							"警告",JOptionPane.WARNING_MESSAGE);
    				}
    				return c;
    			}
    		}
    	}
    	public int xianzhi()
    	{
    		int a=0;
    		for(int i=0;i<count;i++)
    		{
    			if(table1.getValueAt(i,0).toString().equals("true"))
    				a++;
    		}
    		return a;
    	}
    }
    class MyTable extends JTable
    {
    	static boolean b=true;	
    	public   boolean   isCellEditable(int   rowIndex,   int   columnIndex){
    		if (columnIndex>0)return false;   
    		else return true;
    	}	
    }
    class MyTableRenderer extends JCheckBox implements TableCellRenderer 
    {
        public Component getTableCellRendererComponent( JTable table,   
                Object value,   
                boolean isSelected,   
                boolean hasFocus,   
                int row,   
                int column ) {   
            Boolean b = (Boolean) value;   
            this.setSelected(b.booleanValue());   
            return this;   
        }   
    } 
    
  • 相关阅读:
    NET打包時加入卸载功能
    c#水晶报表注册码
    sqlserver:某年份某月份 是否在某时间段内的函数
    修改KindEditor编辑器 版本3.5.1
    Flash大文件上传(带进度条)
    让.Net程序脱离.net framework框架运行的方法(转载)
    夏天到了,什么时候园子的T恤可以出来?
    VS2005项目的安装与布署
    解决Select覆盖Div的简单直接的方法
    .Net向Page和UpdatePanel输出JS
  • 原文地址:https://www.cnblogs.com/1997Ff/p/7365070.html
Copyright © 2020-2023  润新知