Zufällig ausgewählte Fragen aus
import java.awt.BorderLayout; import java.util.*; import java.awt.event.*; import java.awt.Container; import java.awt.EventQueue; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; public class Test extends JFrame { public static final String DBDRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver"; public static final String DBURL="jdbc:sqlserver://localhost:1433;DatabaseName=SystemTest;SelectMethod=Cursor"; public static final String DBUSER="sa"; public static final String DBPASSWORD="123"; public static Connection conn=null; public static Statement stmt=null; public static Statement stmt1=null; public static Statement stmt2=null; public static ResultSet rs=null; public static ResultSet rs1=null; public static void main(String args[]) { try{ //数据库的连接。 Class.forName(DBDRIVER); conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD); stmt= conn.createStatement(ResultSet. TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); stmt1= conn.createStatement(ResultSet. TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); stmt2= conn.createStatement(ResultSet. TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); }catch(Exception e) { e.printStackTrace(); } Test t1=new Test(); t1.sel_save(); EventQueue.invokeLater(new Runnable() { public void run() { try { Test frame = new Test(); frame.setVisible(true); frame.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e) { System.exit(0); /*try{ sql_1="delete from stu_selAns"; stmt=conn.createStatement(); rs=stmt.executeQuery(sql_1); } catch(Exception event) { }*/ } }); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame */ public Test() { super(); setBounds(100, 100, 500, 386); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("测试"); final Container container = new Container(); container.setLayout(null); getContentPane().add(container, BorderLayout.CENTER); label = new JLabel(); label.setBounds(22, 68, 462, 57); container.add(label); final JButton nextButton = new JButton(); nextButton.setText("next"); nextButton.setBounds(60, 270, 106, 28); container.add(nextButton); nextButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event) { int current=Integer.parseInt(label_3.getText()); current+=1; if(current>0 &¤t<=10) { label_3.setText(""+current); label_3.setVisible(true); sel_show(current); } label_2.setVisible(false); label_1.setVisible(false); } }); button = new JButton(); button.setText("显示答案"); button.setBounds(224, 270, 106, 28); container.add(button); button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event) { label_1.setVisible(true); label_2.setVisible(true); int current=Integer.parseInt(label_3.getText()); current+=1; try{ sql="select sel_Ans from stu_selAns where sel_Id="+current; stmt=conn.createStatement(); rs=stmt.executeQuery(sql); while(rs.next()) { label_2.setText(rs.getString(1)); } }catch(Exception e) { } } }); label_1 = new JLabel(); label_1.setText("正确答案是:"); label_1.setBounds(22, 199, 78, 28); container.add(label_1); label_1.setVisible(false); label_2 = new JLabel(); label_2.setBounds(106, 199, 323, 28); container.add(label_2); label_2.setVisible(false); button_1 = new JButton(); button_1.setText("退出"); button_1.setBounds(349, 270, 106, 28); container.add(button_1); button_1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event) { dispose(); /*try{ sql_1="delete from stu_selAns"; stmt=conn.createStatement(); rs=stmt.executeQuery(sql_1); }catch(Exception e) { e.printStackTrace(); }*/ } }); label_3 = new JLabel(); label_3.setBounds(363, 175, 66, 18); container.add(label_3); label_3.setVisible(false); label_3.setText("0"); } //此方法用于获取选择题的数目。 public int sel_count() { int n = 0; try{ Connection conn=null; Statement stmt=null; ResultSet rs=null; Class.forName(DBDRIVER); conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD); sql_1="select COUNT(selId) from sel_test where selId=1"; stmt=conn.createStatement(); rs=stmt.executeQuery(sql_1); if(rs.next()) { n=rs.getInt(1); } } catch(Exception e ) { e.printStackTrace(); } return n; } //此方法用于产生十道选择题的随机数。 public int[] Random() { Test st=new Test(); int n=st.sel_count(); int[] numbers=new int[n]; for(int i=0;i<numbers.length;i++) numbers[i]=i+1; int[] result=new int[10]; for(int i=0;i<result.length;i++) { int r=(int)(Math.random()*n); result[i]=numbers[r]; numbers[r]=numbers[n-1]; n--; } return result; } //此方法实现存取随机抽取的选择题 public void sel_save() { Test s=new Test(); int k[]=s.Random(); Arrays.sort(k); for(int i=0;i<k.length;i++) { System.out.println(k[i]); try{ sql_2="select selNo,selInf,selA,selB,selC,selD,selAns from sel_test where selNo="+k[i]; sql=" insert into stu_selAns(sel_No,sel_Inf,sel_A,sel_B,sel_C,sel_D,sel_Ans)"+sql_2; stmt=conn.createStatement(); stmt1=conn.createStatement(); rs=stmt1.executeQuery(sql); while(rs.next()) { stmt1.execute(sql); } }catch(Exception e) { e.printStackTrace(); } } //此处的FOR循环实现将试题的题号从一到十进行排列。 for(int j=0;j<k.length;j++) { //System.out.println(k[j]+"a");//用于测试产生的随机数是否相同。 try{ sql="update stu_selAns set sel_Id="+(j+1)+"where sel_No="+k[j]; stmt=conn.createStatement(); rs=stmt.executeQuery(sql); }catch(Exception e) { e.printStackTrace(); } } } //此方法实现选择题的调用 public void sel_show(int i) { try{ sql="select sel_Inf ,sel_Ans from stu_selAns where sel_No="+i; stmt=conn.createStatement(); rs=stmt.executeQuery(sql); while(rs.next()) { label.setText(rs.getString(1)); label_2.setText(rs.getString("sel_Ans")); } }catch(Exception e) { e.printStackTrace(); } } private String sql; public static String sql_1; private String sql_2; private JLabel label; private JLabel label_1; private JLabel label_2; private JLabel label_3; private JButton button; //显示答案的按钮。 private JButton button_1; } 说明:执行此程序前需先建立两张表。其中一张表是(sel_test(selNo,selA,selB,selC,selD,selAns)),另一张表是(stu_selAns(sel_No,sel_A,sel_B,sel_C,sel_D,sel_Ans) 此张表用于保存从表sel_test
.
Die allgemeine Idee dieses Programms ist: Wählen Sie zunächst zufällig zehn Fragen aus der Fragendatenbank aus, speichern Sie sie dann in einer anderen Tabelle und ändern Sie die entsprechenden Fragennummern von eins auf zehn. um andere nachfolgende Operationen zu erleichtern.
Weitere Artikel zum Thema Java + SQL2005-Code zu zufällig ausgewählten Testfragen finden Sie auf der chinesischen PHP-Website!