考试系统(超简版)-----大二上java课程设计

来源:互联网 发布:软件架构图分类 编辑:程序博客网 时间:2024/05/17 21:52
/*-------Vecrates---------*/import java.awt.BorderLayout;public class ExamWindow extends JFrame {private JPanel contentPane;final JPanel panel = new JPanel();QuestionWindow qw;private final Action StartExam = new SwingAction();//开始考试按钮事件private final Action CloseFrame = new SwingAction_1();//退出考试事件/** * Launch the application. */public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {ExamWindow frame = new ExamWindow();frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/** * Create the frame. */public ExamWindow() {qw = new QuestionWindow();setTitle("标准化考试系统1.0");setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);setBounds(100, 100, 500, 450);contentPane = new JPanel();contentPane.setBackground(Color.CYAN);contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);contentPane.setLayout(null);panel.setBackground(SystemColor.activeCaption);panel.setBounds(0, 0, 484, 411);contentPane.add(panel);panel.setLayout(null);JButton btnNewButton_1 = new JButton("\u9000\u51FA\u7CFB\u7EDF");btnNewButton_1.setAction(CloseFrame);btnNewButton_1.setBounds(188, 221, 100, 30);panel.add(btnNewButton_1);JLabel lblNewLabel = new JLabel("\u8003\u8BD5\u7CFB\u7EDF");lblNewLabel.setBounds(168, 36, 120, 35);panel.add(lblNewLabel);lblNewLabel.setFont(new Font("宋体", Font.PLAIN, 30));lblNewLabel.setForeground(Color.BLUE);JButton btnNewButton = new JButton("\u5F00\u59CB\u8003\u8BD5");btnNewButton.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {}});btnNewButton.setBounds(188, 157, 100, 30);panel.add(btnNewButton);btnNewButton.setAction(StartExam);}//“开始考试”按钮的监听事件private class SwingAction extends AbstractAction {public SwingAction() {putValue(ACTION_COMMAND_KEY, "");putValue(NAME, "开始考试");putValue(SHORT_DESCRIPTION, "Some short description");}public void actionPerformed(ActionEvent e) {qw = new QuestionWindow();setVisible(false); //使ExamWindow不可见qw.setVisible(true); //使QuestionWindow可见new Thread(qw.new RemainTime()).start();//点击开始考试时同时计算剩余时间//读出第一个题目 try {qw.qArea.setText(new ReadQuestion(0).getStr());} catch (IOException e1) {e1.printStackTrace();}}}//“退出考试”按钮的监听事件private class SwingAction_1 extends AbstractAction {public SwingAction_1() {putValue(NAME, "退出系统");putValue(SHORT_DESCRIPTION, "Some short description");}public void actionPerformed(ActionEvent e) {System.exit(0);}}}
//ExamWindow
public class QuestionWindow extends JFrame {JLabel remain_time = new JLabel(); //显示剩余时间的标签private JPanel contentPane; public JTextArea qArea; //显示问题的文本域//用于保存答案的数组String[] answer = new String[]{"A","B","C","D","A","B","C","D","A","B"}; String tempAS;//保存单选框中选择的答案int i; //用于计分int  n = 1; //用于定位(读txt)文件中的第几行int socre = 0; //得分JLabel jl; //用于提示考试结束和给出分数的标签/** * Create the frame. */public QuestionWindow() {qArea = new JTextArea();setTitle("标准考试系统");setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);setBounds(100, 100, 500, 450);setVisible(false);//使其不可见contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);contentPane.setLayout(null);JPanel panel = new JPanel();panel.setBackground(SystemColor.activeCaption);panel.setBounds(0, 0, 484, 411);contentPane.add(panel);panel.setLayout(null);JButton nextQ = new JButton("\u4E0B\u4E00\u9898");nextQ.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {}});nextQ.setAction(nextq);nextQ.setFont(new Font("宋体", Font.BOLD, 12));nextQ.setBounds(397, 378, 77, 23);panel.add(nextQ);nextQ.setForeground(Color.GREEN);JLabel lblNewLabel = new JLabel("\u8003\u8BD5\u5269\u4F59\u65F6\u95F4\uFF1A");lblNewLabel.setBounds(0, 0, 114, 23);panel.add(lblNewLabel);lblNewLabel.setForeground(Color.RED);lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);JButton submitAS = new JButton("\u63D0\u4EA4\u6B64\u9898");submitAS.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {}});submitAS.setAction(submitItem);submitAS.setFont(new Font("宋体", Font.BOLD, 12));submitAS.setBounds(296, 378, 91, 23);panel.add(submitAS);submitAS.setForeground(Color.GREEN);//显示倒计时的标签remain_time.setBounds(99, 0, 106, 23);remain_time.setVisible(true);panel.add(remain_time);//ABCD单选按钮组件ButtonGroup group = new ButtonGroup();JPanel panel_1 = new JPanel();panel_1.setBackground(SystemColor.activeCaption);panel_1.setBounds(26, 370, 192, 31);panel.add(panel_1);panel_1.setLayout(null);JRadioButton a = new JRadioButton();a.setAction(ASA);a.setFont(new Font("微软雅黑", Font.PLAIN, 12));a.setBounds(6, 7, 43, 21);a.setText("A");a.setForeground(Color.BLACK);panel_1.add(a);a.setBackground(SystemColor.activeCaption);a.setVerticalAlignment(SwingConstants.BOTTOM);group.add(a);JRadioButton b = new JRadioButton();b.setAction(ASB);b.setForeground(Color.BLACK);b.setBackground(SystemColor.activeCaption);b.setFont(new Font("微软雅黑", Font.PLAIN, 12));b.setText("B");b.setBounds(51, 7, 50, 21);panel_1.add(b);group.add(b);JRadioButton c = new JRadioButton();c.setForeground(Color.BLACK);c.setFont(new Font("微软雅黑", Font.PLAIN, 12));c.setBackground(SystemColor.activeCaption);c.setText("C");c.setBounds(103, 7, 44, 21);panel_1.add(c);group.add(c);JRadioButton d = new JRadioButton();d.setAction(ASD);d.setForeground(Color.BLACK);d.setFont(new Font("微软雅黑", Font.PLAIN, 12));d.setBackground(SystemColor.activeCaption);d.setBounds(149, 7, 43, 21);panel_1.add(d);d.setText("D");group.add(d);qArea.setLineWrap(true);qArea.setEnabled(false);qArea.setEditable(false);qArea.setForeground(Color.GREEN);qArea.setFont(new Font("微软雅黑 Light", Font.BOLD, 20));//显示题目的文本域qArea.setBounds(10, 22, 464, 299);panel.add(qArea);JButton submitTest = new JButton("\u63D0\u4EA4\u8BD5\u5377");submitTest.setAction(EndTest);submitTest.setFont(new Font("宋体", Font.BOLD, 14));submitTest.setForeground(Color.GREEN);submitTest.setBounds(360, 323, 114, 31);panel.add(submitTest);}//选择A时private final Action ASA = new SwingAction();private class SwingAction extends AbstractAction {public SwingAction() {putValue(NAME, "SwingAction");putValue(SHORT_DESCRIPTION, "Some short description");}public void actionPerformed(ActionEvent e) {tempAS = "A";}}//选择B时private final Action ASB = new SwingAction_1();private class SwingAction_1 extends AbstractAction {public SwingAction_1() {putValue(NAME, "SwingAction_1");putValue(SHORT_DESCRIPTION, "Some short description");}public void actionPerformed(ActionEvent e) {tempAS = "B";}}//选择C时private final Action ASC = new SwingAction_2();private class SwingAction_2 extends AbstractAction {public SwingAction_2() {putValue(NAME, "SwingAction_2");putValue(SHORT_DESCRIPTION, "Some short description");}public void actionPerformed(ActionEvent e) {tempAS = "C";}}//选择D时private final Action ASD = new SwingAction_3();private class SwingAction_3 extends AbstractAction {public SwingAction_3() {putValue(NAME, "SwingAction_3");putValue(SHORT_DESCRIPTION, "Some short description");}public void actionPerformed(ActionEvent e) {tempAS = "D";}}//"提交此题"按钮监听事件private final Action submitItem = new SwingAction_4();private class SwingAction_4 extends AbstractAction {public SwingAction_4() {putValue(NAME, "提交此题");putValue(SHORT_DESCRIPTION, "Some short description");}public void actionPerformed(ActionEvent e) {if(answer[i++] == tempAS)socre += 10;}}//结束考试按钮的监听事件private final Action EndTest = new SwingAction_5();private class SwingAction_5 extends AbstractAction {public SwingAction_5() {putValue(NAME, "结束考试");putValue(SHORT_DESCRIPTION, "Some short description");}public void actionPerformed(ActionEvent e) {jl = new JLabel("考试结束,你的得分是:" + socre+"分");new Socre(jl).setVisible(true);}}//"下一题"按钮监听事件private final Action nextq = new SwingAction_6();private class SwingAction_6 extends AbstractAction {public SwingAction_6() {putValue(NAME, "下一题");putValue(SHORT_DESCRIPTION, "Some short description");}public void actionPerformed(ActionEvent e) { //next questiontry {//题库中有10个题目if(n < 10){     qArea.setText(new ReadQuestion(n++).getStr());//读题目并显示到面板上    setVisible(true);}else{jl = new JLabel("你已完成答题,得分是:" + socre+"分");new Socre(jl).setVisible(true);}} catch (IOException e1) {e1.printStackTrace();}}}//实现倒计时功能的子类    private int time = 300;class RemainTime implements Runnable {public void run() {while(time >= 0){//当时间为0时结束考试if(time == 0){jl = new JLabel("考试时间到,你的得分是:" + socre+"分");    new Socre(jl).setVisible(true);    try {Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}    System.exit(0);}else{time--;long minu = time / 60;long sec = time % 60;    remain_time.setText(minu + "分" + sec + "秒");try{    Thread.sleep(1000); }catch (Exception e){    e.printStackTrace();}} } }}}



import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.Reader;public class ReadQuestion {private String str;public String getStr() {return str;}public void setStr(String str) {this.str = str;} public ReadQuestion(int n) throws IOException{File txt = new File("D:/代码/java/java课程设计/src/考试系统题库.txt");FileReader fr = new FileReader(txt);BufferedReader inBuf = new BufferedReader(fr);String strline = null;for(int i = 0;i <= n; i ++)    strline = new String(inBuf.readLine()); //读取一行字符String[] newstr = strline.split(",");this.setStr(newstr[0]+"\n"+newstr[1]+"\n"+newstr[2]+"\n"+newstr[3]+"\n"+newstr[4]);inBuf.close(); }}


import java.awt.BorderLayout;public class Socre extends JDialog {private final Action ensure_action = new SwingAction();public Socre(JLabel JL) {this.setModal(true); //强制性窗口getContentPane().setLayout(null);setBounds(150,150, 384, 300);JL.setFont(new Font("宋体", Font.BOLD, 14));JL.setForeground(Color.RED);JL.setHorizontalAlignment(SwingConstants.CENTER);JL.setBounds(38, 27, 278, 84);getContentPane().add(JL);setUndecorated(true);//确定按钮JButton ensure = new JButton("\u786E\u5B9A");ensure.setAction(ensure_action);ensure.setBackground(Color.RED);ensure.setBounds(126, 213, 99, 38);getContentPane().add(ensure);}//"确定按钮"监听private class SwingAction extends AbstractAction {public SwingAction() {putValue(NAME, "确定");putValue(SHORT_DESCRIPTION, "Some short description");}public void actionPerformed(ActionEvent e) {System.exit(0);}}}

考试系统题库形式为:

1、工笔是哪种绘画形式的技法,A.水彩画,B.油画,C.水粉画,D.国画,
2、“冰激凌”是从哪国传进的外来语,A.英国,B.法国,C.美国,D.俄国,
3、“席梦思”三个字源于什么,A.人名, B.地名,C.00  ,D.00, 
4、“八仙过海”中的八仙除铁拐李、张果老、吕洞宾、曹国舅外还有,A.韩非子、蓝采和、何翠姑、汉钟离,B.蓝采和、何仙姑、韩非子、汉钟离 ,C.韩湘子、蓝采和、何仙姑、红孩儿 ,D.韩湘子、蓝采和、何仙姑、汉钟离,
5、“无冕之王”的由来与下列哪一个有关,A.英国《泰晤士报》 ,B.法国《费加罗报》 ,C.美国《太阳报》 ,D.德国《明镜》周刊,
6、博士作为官名最早出现在:,A.秦 ,B.汉 ,C.唐,D.00,
7、“谬种流传”最早是宋朝人批评当时的,A.官场黑暗, B.科举制度 ,C.社会风气 ,D.诗词风格,
8、《在那遥远的地方》是哪里的民歌,A.四川民歌 ,B.江苏民歌 ,C.蒙古民歌 ,D.云南民歌, 
9、人体含水量百分比最高的器官是,A.肝 ,B.肾 ,C.眼球,D.0111,
10、人体最大的解毒器官是,A.胃 ,B.肾脏 ,C.肝脏 ,D.脾,






0 0
原创粉丝点击