zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java+sql2005随机抽取试题的代码

JAVA试题代码 随机 抽取 sql2005
2023-06-13 09:14:28 时间
复制代码代码如下:

importjava.awt.BorderLayout;
importjava.util.*;
importjava.awt.event.*;
importjava.awt.Container;
importjava.awt.EventQueue;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.Statement;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
publicclassTestextendsJFrame{
publicstaticfinalStringDBDRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver";
publicstaticfinalStringDBURL="jdbc:sqlserver://localhost:1433;DatabaseName=SystemTest;SelectMethod=Cursor";
publicstaticfinalStringDBUSER="sa";
publicstaticfinalStringDBPASSWORD="123";
publicstaticConnectionconn=null;
publicstaticStatementstmt=null;
publicstaticStatementstmt1=null;
publicstaticStatementstmt2=null;
publicstaticResultSetrs=null;
publicstaticResultSetrs1=null;
publicstaticvoidmain(Stringargs[]){
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(Exceptione)
{
e.printStackTrace();
}
Testt1=newTest();
t1.sel_save();
EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
try{
Testframe=newTest();
frame.setVisible(true);
frame.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente)
{
System.exit(0);
/*try{
sql_1="deletefromstu_selAns";
stmt=conn.createStatement();
rs=stmt.executeQuery(sql_1);
}
catch(Exceptionevent)
{
}*/
}
});
}catch(Exceptione){
e.printStackTrace();
}
}
});
}
/**
*Createtheframe
*/
publicTest(){
super();
setBounds(100,100,500,386);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("测试");
finalContainercontainer=newContainer();
container.setLayout(null);
getContentPane().add(container,BorderLayout.CENTER);
label=newJLabel();
label.setBounds(22,68,462,57);
container.add(label);
finalJButtonnextButton=newJButton();
nextButton.setText("next");
nextButton.setBounds(60,270,106,28);
container.add(nextButton);
nextButton.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevent)
{
intcurrent=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=newJButton();
button.setText("显示答案");
button.setBounds(224,270,106,28);
container.add(button);
button.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevent)
{
label_1.setVisible(true);
label_2.setVisible(true);
intcurrent=Integer.parseInt(label_3.getText());
current+=1;
try{
sql="selectsel_Ansfromstu_selAnswheresel_Id="+current;
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next())
{
label_2.setText(rs.getString(1));
}
}catch(Exceptione)
{
}
}
});
label_1=newJLabel();
label_1.setText("正确答案是:");
label_1.setBounds(22,199,78,28);
container.add(label_1);
label_1.setVisible(false);
label_2=newJLabel();
label_2.setBounds(106,199,323,28);
container.add(label_2);
label_2.setVisible(false);
button_1=newJButton();
button_1.setText("退出");
button_1.setBounds(349,270,106,28);
container.add(button_1);
button_1.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevent)
{
dispose();
/*try{
sql_1="deletefromstu_selAns";
stmt=conn.createStatement();
rs=stmt.executeQuery(sql_1);
}catch(Exceptione)
{
e.printStackTrace();
}*/
}
});
label_3=newJLabel();
label_3.setBounds(363,175,66,18);
container.add(label_3);
label_3.setVisible(false);
label_3.setText("0");
}
//此方法用于获取选择题的数目。
publicintsel_count()
{
intn=0;
try{
Connectionconn=null;
Statementstmt=null;
ResultSetrs=null;
Class.forName(DBDRIVER);
conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);
sql_1="selectCOUNT(selId)fromsel_testwhereselId=1";
stmt=conn.createStatement();
rs=stmt.executeQuery(sql_1);
if(rs.next())
{
n=rs.getInt(1);
}
}
catch(Exceptione)
{
e.printStackTrace();
}
returnn;
}
//此方法用于产生十道选择题的随机数。
publicint[]Random()
{
Testst=newTest();
intn=st.sel_count();
int[]numbers=newint[n];
for(inti=0;i<numbers.length;i++)
numbers[i]=i+1;
int[]result=newint[10];
for(inti=0;i<result.length;i++)
{
intr=(int)(Math.random()*n);
result[i]=numbers[r];
numbers[r]=numbers[n-1];
n--;
}
returnresult;
}
//此方法实现存取随机抽取的选择题
publicvoidsel_save()
{
Tests=newTest();
intk[]=s.Random();
Arrays.sort(k);
for(inti=0;i<k.length;i++)
{
System.out.println(k[i]);
try{
sql_2="selectselNo,selInf,selA,selB,selC,selD,selAnsfromsel_testwhereselNo="+k[i];
sql="insertintostu_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(Exceptione)
{
e.printStackTrace();
}
}
//此处的FOR循环实现将试题的题号从一到十进行排列。
for(intj=0;j<k.length;j++)
{
//System.out.println(k[j]+"a");//用于测试产生的随机数是否相同。
try{
sql="updatestu_selAnssetsel_Id="+(j+1)+"wheresel_No="+k[j];
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}catch(Exceptione)
{
e.printStackTrace();
}
}
}
//此方法实现选择题的调用
publicvoidsel_show(inti)
{
try{
sql="selectsel_Inf,sel_Ansfromstu_selAnswheresel_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(Exceptione)
{
e.printStackTrace();
}
}
privateStringsql;
publicstaticStringsql_1;
privateStringsql_2;
privateJLabellabel;
privateJLabellabel_1;
privateJLabellabel_2;
privateJLabellabel_3;
privateJButtonbutton;//显示答案的按钮。
privateJButtonbutton_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

中随机抽取的题目。
此程序是大概思路是:先从题库中随机抽取十道题,然后将其保存在另一张表中并将其相应的题号变为一到十。便于接下来的其他操作。