⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 web158_com.java

📁 java socket 网上在线考试系统
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package web158.com;
/**
 * @param 李建东
 * 
 * 联系电话:0898-62925341
 * 
 * 联系QQ:813751  657597  8912740
 * 
 * 网   址:
 * 			http://www.web156.com
 *			http://www.web158.com
 *使用本源码,请保留版权信息,谢谢
 */
import java.awt.*;
import java.io.*;

import javax.swing.*;

import java.awt.event.*;
import java.sql.*;
import java.net.*;
/********************************************************
 *                                                      *
 *                    窗口类                             *
 *                                                      *
*********************************************************/
class web158_frame extends JFrame implements ActionListener
{
	//加载软件皮肤
	Web158_Com_Config web158_config=new Web158_Com_Config();
	//软件皮肤Panel
	web158_com_getSkin mainSkin=new web158_com_getSkin();
	//字体
	Font font = new  Font("宋体",0,12);
	//控制行
	JPanel web158_com_ordermenu=new JPanel();
	//左边Label
	JLabel web158_com_left=new JLabel();
	JLabel web158_space_1=new JLabel();
	JLabel web158_space_2=new JLabel();
	JLabel web158_space_3=new JLabel();
	//	关闭窗口按钮
	JButton web158_com_system=new JButton(" 最 小 化 ");
	//	关闭窗口按钮
	JButton web158_com_submit=new JButton("试卷提交");
	//关闭窗口按钮
	JButton web158_com_close=new JButton("关闭");
	//主板排板
	FlowLayout f_main=new FlowLayout();
	//中间变动面板
	JPanel web158_com_Cpanel=new JPanel();
	//右边变动面板////////////////////////////////////////////////////////////////////////////////
	JPanel web158_com_Rpanel=new JPanel();
	//右边考生信息
	//	考生信息顶站位
	JPanel web158_r_space=new JPanel();
	JPanel web158_stuinfo=new JPanel();
	//姓名label
	JLabel web158_stu_name=new JLabel();
	//准考证号
	JLabel web158_stu_id=new JLabel();
	//所需要黑字体
	Font web158_stuinfo_font=new Font("宋体",Font.BOLD,13);
	
	//考生头象信息
	web158_com_pic headpic=new web158_com_pic();
	//头象下面
	JPanel pic_panel =new JPanel();
	//考生手则
	JTextPane txtinfo=new JTextPane();
	//计时器
	Timer timer,closetimer;
	int m,n;
	//系统退出时间
	Timer exitTimer;
	int m1,n1;
	//关闭窗口所用的时间
	int c=60;
	/*
	 * 
	 * 	底部板权
	 * 
	 */
	
	JPanel web158_bottom=new JPanel();
	JButton web158_com_copy=new JButton("关于本软件 网址:http://www.web158.com  ");
	//	中Label
	JLabel web158_com_s_1=new JLabel();
	//考生信息
	JLabel web158_com_b_1=new JLabel();
	
	//考试完的面板
	JPanel examed=new JPanel();
	JLabel examed_label=new JLabel();
	
	//	加载取试题Panel
	Web158_SGetQuestion qpanel;
	//考试Panel
	Web158_Com_Begin examPanel=new Web158_Com_Begin();
	Web158_Com_Operate operatePanel=new Web158_Com_Operate();
	//当前试题ID号
	int nowexamid=1;
	int totalchoose=0;
	
	//启动服务器
    ServerSocket ss;
    Socket socket;
    BufferedReader in;
    PrintWriter out;
    //全局变量
    private String stuname="李建东";
    private String stuid="2005010720";
    //每选择题分数
    private int prechoose=3;
    //学生选择题成绩
    private int score=0;
    private String serverip="127.0.0.1";
    //定义端口
    private int sendport=10000;
    private int receiveport=8852;
	//类入口
	web158_frame()
	{
		web158_config.initFont();
		//计时器
		timer=new Timer(1000,this);
		closetimer=new Timer(10,this);
		m=45;
		n=59;
		//
		exitTimer=new Timer(1000,this);
		m1=4;
		n1=59;
		//取试题Panel
		qpanel=new Web158_SGetQuestion();
		//文件没有加载失败
		if(web158_config.web_158_config_ok()==true)
		{
			//空间
			web158_space_1.setPreferredSize(new Dimension(13,30));
			web158_space_2.setPreferredSize(new Dimension(30,30));
			web158_space_3.setPreferredSize(new Dimension(30,30));
			web158_com_ordermenu.add(web158_space_1);
			//最小化按钮
			web158_com_system.setBackground(Color.white);
			web158_com_system.setFont(font);
			web158_com_system.setCursor(new Cursor(Cursor.HAND_CURSOR));
			web158_com_system.setBorder(null);
			web158_com_system.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) 
				{
					//getExamPanel();
					//timer.start();
				}
			});//end of actionPerformed
			//添加系统按钮
			web158_com_ordermenu.add(web158_com_system);
			web158_com_ordermenu.add(web158_space_2);
			
			//试卷提交按钮
			web158_com_submit.setBackground(Color.white);
			web158_com_submit.setFont(font);
			web158_com_submit.setCursor(new Cursor(Cursor.HAND_CURSOR));
			web158_com_submit.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e)
				{
					sendAnswer();
				}
			});
			web158_com_submit.setBorder(null);
			web158_com_submit.setEnabled(false);
			//添加系统按钮
			web158_com_ordermenu.add(web158_com_submit);
			web158_com_ordermenu.add(web158_space_3);
			//添加时间面板
			web158_com_left.setPreferredSize(new Dimension(530,35));
			web158_com_left.setFont(font);
			web158_com_left.setText("剩余时间: 还没有开始答题");
			web158_com_ordermenu.add(web158_com_left);//添加到主面板
			//关闭按钮
			web158_com_close.setBackground(Color.white);
			web158_com_close.setFont(font);
			web158_com_close.setCursor(new Cursor(Cursor.HAND_CURSOR));
			web158_com_close.setBorder(null);
			//添加关闭按钮
			web158_com_close.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) 
				{
					closetimer.start();
					//System.exit(0);
				}
			});//end of actionPerformed
			web158_com_ordermenu.add(web158_com_close);
			//工具栏
			web158_com_ordermenu.setPreferredSize(new Dimension(780,40));
			web158_com_ordermenu.setOpaque(false);//透明
			mainSkin.add(web158_com_ordermenu);//添加到主面板
			
			
			//首次加载初始化登陆及配置面板
			//Web158_SLogin s_login=new Web158_SLogin();
			//web158_com_Cpanel.add(s_login);
			//初始化
			web158_info();
			
			//变动面板
			web158_com_Cpanel.setPreferredSize(new Dimension(520,510));
			web158_com_Cpanel.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
			web158_com_Cpanel.setOpaque(false);
			web158_com_Cpanel.setLayout(f_main);
			web158_com_Cpanel.addMouseMotionListener(new MouseMotionAdapter() { 

				public void mouseDragged(MouseEvent e) {}
			});//end of frame.addMouseMotionListener()
			
			
			//右边考生信息///////////////////////////////////////////////////////////////////////////////////////////////
			//先添加头部空位
			web158_r_space.setPreferredSize(new Dimension(215,10));
			web158_r_space.setOpaque(false);
			//添加
			web158_com_Rpanel.add(web158_r_space);
			//添加头象
			headpic.setPreferredSize(new Dimension(120,150));
			//headpic.setPicurl("2005010720.gif");
			pic_panel.add(headpic);
			//设置头象背景
			pic_panel.setPreferredSize(new Dimension(210,160));
			pic_panel.setOpaque(false);
			web158_stuinfo.add(pic_panel);
			//考生文字信息
			web158_stuinfo.setPreferredSize(new Dimension(210,270));
			web158_stuinfo.setBackground(Color.LIGHT_GRAY);
			web158_stuinfo.setOpaque(false);
			//考生姓名
			//姓名面板
			web158_stu_name.setPreferredSize(new Dimension(210,30));
			web158_stu_name.setFont(web158_stuinfo_font);
			web158_stu_name.setForeground(new Color(92,19,17));
			web158_stu_name.setText("考生姓名:您还没有登陆");
			web158_stuinfo.add(web158_stu_name);
			//准考证号
			web158_stu_id.setPreferredSize(new Dimension(210,30));
			web158_stu_id.setFont(web158_stuinfo_font);
			web158_stu_id.setForeground(new Color(92,19,17));
			web158_stu_id.setText("准考证号:您还没有登陆");
			web158_stuinfo.add(web158_stu_id);
			
			//添加姓名考号面板
			web158_com_Rpanel.add(web158_stuinfo);
			//添加考试规则
			final JScrollPane scrollPane = new JScrollPane();
			scrollPane.setPreferredSize(new Dimension(200,200));
			scrollPane.setBorder(null);
			scrollPane.getHorizontalScrollBar().setUI(null);
			web158_com_Rpanel.add(scrollPane);
			//考生手则及提示信息区
			//txtinfo.setBackground(new Color(207,207,157));
			txtinfo.setEditable(false);
			txtinfo.setFont(new Font("宋体",Font.PLAIN,13));
			txtinfo.setText("注意事项:\n服务器地址:监考老师提供的考试服务器地址\n服务器端口:监考老师提供的服务器端口\n您的姓名:您的名字\n准考证号:您的准考证号。\n\n特别注意:\n每位考生只能领取一份试卷,领取成功后请不要在没有提交您的试卷或答题中退出系统,否则您将失去本次考试资格!");
			scrollPane.setViewportView(txtinfo);
			
			//添加右边面板
			web158_com_Rpanel.setPreferredSize(new Dimension(215,510));
			web158_com_Rpanel.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
			web158_com_Rpanel.setOpaque(false);
			web158_com_Rpanel.addMouseMotionListener(new MouseMotionAdapter() { 

				public void mouseDragged(MouseEvent e) {}
			});//end of frame.addMouseMotionListener()
			web158_com_Rpanel.setLayout(new FlowLayout(FlowLayout.LEFT));
			
			
			mainSkin.add(web158_com_Cpanel);//添加到主面板
			mainSkin.add(web158_com_Rpanel);//添加到主面板
			
			
			
			
			//底部版权
			web158_com_copy.setBackground(Color.white);
			web158_com_copy.setFont(font);
			web158_com_copy.setCursor(new Cursor(Cursor.HAND_CURSOR));
			web158_com_copy.setBorder(null);
			web158_com_copy.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) 
				{
					if(web158_config.gotoWeb158_com()==false)
					{
						JOptionPane.showMessageDialog(null, "您的系统不支持直接打开!\n\n请您直接打开网站:http://www.web158.com\n\n联系QQ:813751 657597");
					}
				}
			});//end of actionPerformed
			web158_bottom.add(web158_com_copy);
			//添加空格LABEL
			web158_com_s_1.setPreferredSize(new Dimension(200,23));
			web158_bottom.add(web158_com_s_1);
			//添加考生信息
			web158_com_b_1.setFont(font);
			web158_com_b_1.setPreferredSize(new Dimension(250,23));
			//考生信息
			web158_com_b_1.setText("    华夏网建在线考试系统-学生端");
			web158_bottom.add(web158_com_b_1);
			//底部主板
			web158_bottom.setLayout(f_main);
			web158_bottom.setPreferredSize(new Dimension(700,30));
			web158_bottom.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
			web158_bottom.setOpaque(false);
			mainSkin.add(web158_bottom);//添加到主面板
			
			//主面板大小
			mainSkin.setSize(800,600);
			mainSkin.setCursor(new Cursor(Cursor.HAND_CURSOR));
			//f_main.setHgap(10);
			mainSkin.setLayout(new FlowLayout());
			//添加面板
			add(mainSkin);
			//窗口属性
			//标题
			setTitle("华夏网建在线考试系统-学生端");
			//图标
			setIconImage(Toolkit.getDefaultToolkit().createImage("web158_com_config/info.dll"));//设置图标
			//无边
			setUndecorated(true);
			//大小
			setSize(800,600);
			//总在最前
			//setAlwaysOnTop(true);
			//可见
			setVisible(true);
			//如不加关闭窗口事件,只能不显示,可是进程没有关闭造成系统资源浪费!
			addWindowListener(new WindowAdapter()
			{
				public void windowClosing(WindowEvent e)
				{
					System.exit(0);//退出整个系统 
				}
			});
			//居中显示
			web158_com_goCenter();
			
			//有效
			validate();
		}
		//文件加载失败
		else
		{
			JOptionPane.showMessageDialog(null, "文件加载失败!请联系管理员");
			return ;
		}
	}//end of web158_frame
	//事件处理
	public void actionPerformed(ActionEvent e)
	{
		Object event=e.getSource();
		//分钟秒钟
		String minutes=""+(m-1);
		String seconds=""+n;
		//系统退出所需
		String minutes1=""+(m1-2);
		String seconds1=""+n1;
		if(event==timer)
		{
			n--;
			web158_com_left.setText("剩余时间:"+minutes+"分钟"+seconds+"秒");
			if(n<1)
			{
				n=59;
				m--;
				//System.out.println("m--后"+m);

				seconds=""+n;
				if(m-2<1)
				{
					timer.stop();
					JOptionPane.showMessageDialog(null, "答题时间已经到了,请把您的操作题打包后提交答案!\n\n操作题所有文件需存在D:/myexam/exam文件夹中,存好请把exam文件夹打包并提交试卷!\n\n在3分钟内您如果还没有提交试卷,本次考试您将没有成绩!");
					exitTimer.start();
				}
			}
		}//end of timer
		//系统退出时间
		if(event==exitTimer)
		{
			n1--;
			web158_com_left.setForeground(Color.red);
			web158_com_left.setText("系统退出剩余时间:"+minutes1+"分钟"+seconds1+"秒");
			if(n1<1)
			{
				n1=59;
				m1--;
				seconds1=""+n1;
				//系统退出时间到自动退出系统
				if(m1-1<1)
				{
					exitTimer.stop();
					closetimer.start();
				}
			}
		}//end of timer
		if(event==closetimer)
		{
			//c--;
			//this.setSize(this.getWidth(),this.getHeight()-10);
			//if(c<0)
			//{
				System.exit(0);
			//}
		}
		//

	}//end of actionperofrmed
	
	/********************************************************
	 *                                                      *
	 *                    窗口居中显示                       *
	 *                                                      *
	*********************************************************/

	void web158_com_goCenter()
	{
		Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize(); //得到用户屏幕大小
		Dimension frameSize=this.getSize();  //得到当前窗口大小 以上以定义:800*600
		if(frameSize.width>screenSize.width)
		{
			frameSize.width=screenSize.width;  //窗口长度大于屏幕时,令窗口长度等于屏幕长度
			}
		if(frameSize.height>screenSize.height)  //与上同理,处理窗口高度
		{
			frameSize.height=screenSize.height; //窗口高度
			}
		this.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);//居中显示
	}//end of web158_com_goCenter()

/**************************************************************************************
 * 
 * 选择题处理模块
 */
	//答题
	//题没有做选择
	boolean isSelect()
	{
		if(!examPanel.A.isSelected()&&!examPanel.B.isSelected()&&!examPanel.C.isSelected()&&!examPanel.D.isSelected())
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	//保存选择的答案
	protected String getNowAnswer()
	{
		String answer="";
		if(examPanel.A.isSelected())
		{
			answer="A";
		}
		if(examPanel.B.isSelected())
		{
			answer="B";
		}
		if(examPanel.C.isSelected())
		{
			answer="C";
		}
		if(examPanel.D.isSelected())
		{
			answer="D";
		}
		return answer;
	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -