代做毕业设计的网站企业网络营销策划案例
实验内容
考试题
要求在一个界面内至少显示5道选择题,每道题4个选项。题目从数据库读取。表结构自定义。
另有2个命令按钮,分别为“重新答题”(全部选项及正确答题数清空)和“提交”(计算),在按钮下方的标签内显示最终的正确的题目数(自动和数据库中的标准答案比对)。
界面大致布局如下:
实验环境
eclipse+MySQL8.0版本+MySQL的JDBC驱动
实验结果
如果运行之后显示空白窗口,首先检查数据库等是否正确,如果全部正确可以点击右上角最大化,刷新之后即可正常显示(不知道为什么会这样)
数据库中的内容
所有列均为varchar类型
源代码
Answer.java
package lab4;
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Answer extends JFrame
{public static void main(String[] args) throws SQLException{int i=0;String[] strla = new String[5];//存储5个题目String[] strbu = new String[20];//存储20个单选选项内容String[] str = new String[5];//存储数据库中的答案String[] str1 = new String[5];//存储选择的选项JFrame f = new JFrame("Test");f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);f.setLayout(new GridLayout(12,1));f.setSize(1000,600);f.setVisible(true);JPanel P0 = new JPanel();P0.setLayout(new GridLayout());//面板分区JPanel P1 = new JPanel();P1.setLayout(new GridLayout(1,4,5,5));JPanel P2 = new JPanel();P2.setLayout(new GridLayout());JPanel P3 = new JPanel();P3.setLayout(new GridLayout(1,4,5,5));JPanel P4 = new JPanel();P4.setLayout(new GridLayout());JPanel P5 = new JPanel();P5.setLayout(new GridLayout(1,4,5,5));JPanel P6 = new JPanel();P6.setLayout(new GridLayout());JPanel P7 = new JPanel();P7.setLayout(new GridLayout(1,4,5,5));JPanel P8 = new JPanel();P8.setLayout(new GridLayout());JPanel P9 = new JPanel();P9.setLayout(new GridLayout(1,4,5,5));JPanel P10 = new JPanel();P10.setLayout(null);JPanel P11 = new JPanel();P11.setLayout(new GridLayout());Connection con = null;JLabel[] la = new JLabel[5];//题目显示la[0]=new JLabel();la[1]=new JLabel();la[2]=new JLabel();la[3]=new JLabel();la[4]=new JLabel();JRadioButton[] bu = new JRadioButton[20];//单选显示for(i=0;i<20;i++)bu[i]=new JRadioButton();try{Class.forName("com.mysql.cj.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/?user=root";//换成自己的mysql用户名String username = "root"; //换成自己的mysql用户名String password = "123456"; //换成自己的mysql密码con = DriverManager.getConnection(url, username, password);ResultSet re = null;PreparedStatement pre =null;String sql = "select * from stusys.ans";//换成自己的数据库名.表名pre = con.prepareStatement(sql);re = pre.executeQuery();i=0;while(re.next()){strla[i]=re.getString("question");strbu[4*i]=re.getString("A");strbu[4*i+1]=re.getString("B");strbu[4*i+2]=re.getString("C");strbu[4*i+3]=re.getString("D");str[i]=re.getString("answer");i++;}pre.close();re.close();}catch(Exception e){e.printStackTrace();System.out.println("操纵数据库时发生未知错误");}finally{if(con!=null)con.close();}for(i=0;i<5;i++)//给每个题设置内容和选项内容{la[i].setText("题目"+(i+1)+":"+strla[i]);la[i].setFont(new Font("Dialog",1,20));bu[4*i].setText("A."+strbu[4*i]);bu[4*i].setFont(new Font("Dialog",1,20));bu[4*i+1].setText("B."+strbu[4*i+1]);bu[4*i+1].setFont(new Font("Dialog",1,20));bu[4*i+2].setText("C."+strbu[4*i+2]);bu[4*i+2].setFont(new Font("Dialog",1,20));bu[4*i+3].setText("D."+strbu[4*i+3]);bu[4*i+3].setFont(new Font("Dialog",1,20));}ButtonGroup group1 = new ButtonGroup();//每一题的四个选项为一组for(i=0;i<4;i++)group1.add(bu[i]);ButtonGroup group2 = new ButtonGroup();for(i=4;i<8;i++)group2.add(bu[i]);ButtonGroup group3 = new ButtonGroup();for(i=8;i<12;i++)group3.add(bu[i]);ButtonGroup group4 = new ButtonGroup();for(i=12;i<16;i++)group4.add(bu[i]);ButtonGroup group5 = new ButtonGroup();for(i=16;i<20;i++)group5.add(bu[i]);JButton b1 = new JButton("重新答题");//重新答题按钮b1.setFont(new Font("Dialog",1,20));b1.setBounds(250, 0, 200, 40);JButton b2 = new JButton("提交");//提交按钮b2.setFont(new Font("Dialog",1,20));b2.setBounds(550, 0, 200, 40);JLabel show = new JLabel("答对的题目数量是:0");show.setFont(new Font("Dialog",1,20));P0.add(la[0]);//添加题目和选项for(i=0;i<4;i++)P1.add(bu[i]);P2.add(la[1]);for(i=4;i<8;i++)P3.add(bu[i]);P4.add(la[2]);for(i=8;i<12;i++)P5.add(bu[i]);P6.add(la[3]);for(i=12;i<16;i++)P7.add(bu[i]);P8.add(la[4]);for(i=16;i<20;i++)P9.add(bu[i]);P10.add(b1);P10.add(b2);//添加重新答题和提交按钮P11.add(show);f.add(P0);f.add(P1);//将各个面板添加到顶级容器中f.add(P2);f.add(P3);f.add(P4);f.add(P5);f.add(P6);f.add(P7);f.add(P8);f.add(P9);f.add(P10);f.add(P11);MouseListener lisb1 = new MouseListener()//重新答题按钮功能实现{@Overridepublic void mouseClicked(MouseEvent e){group1.clearSelection();group2.clearSelection();group3.clearSelection();group4.clearSelection();group5.clearSelection();for(int i=0;i<5;i++)str1[i]=null;int ans=0;String Ans = String.valueOf(ans);show.setText("答对的题目数量是:"+Ans);show.setFont(new Font("Dialog",1,20));}@Overridepublic void mousePressed(MouseEvent e) {// TODO 自动生成的方法存根}@Overridepublic void mouseReleased(MouseEvent e) {// TODO 自动生成的方法存根}@Overridepublic void mouseEntered(MouseEvent e) {// TODO 自动生成的方法存根}@Overridepublic void mouseExited(MouseEvent e) {// TODO 自动生成的方法存根}};MouseListener lisb2 = new MouseListener()//提交按钮功能实现{@Overridepublic void mouseClicked(MouseEvent e){int i=0,j=0,ans=0;for(i=0;i<5;i++){if(bu[4*i].isSelected()){str1[j]="A";j++;}if(bu[4*i+1].isSelected()){str1[j]="B";j++;}if(bu[4*i+2].isSelected()){str1[j]="C";j++;}if(bu[4*i+3].isSelected()){str1[j]="D";j++;}}for(i=0;i<5;i++){if(str[i].equals(str1[i]))ans++;}String Ans = String.valueOf(ans);show.setText("答对的题目数量是:"+Ans);show.setFont(new Font("Dialog",1,20));}@Overridepublic void mousePressed(MouseEvent e) {// TODO 自动生成的方法存根}@Overridepublic void mouseReleased(MouseEvent e) {// TODO 自动生成的方法存根}@Overridepublic void mouseEntered(MouseEvent e) {// TODO 自动生成的方法存根}@Overridepublic void mouseExited(MouseEvent e) {// TODO 自动生成的方法存根}};b1.addMouseListener(lisb1);b2.addMouseListener(lisb2);}
}
感谢大家的观看