Java實(shí)訓(xùn)報(bào)告冊_第1頁
Java實(shí)訓(xùn)報(bào)告冊_第2頁
Java實(shí)訓(xùn)報(bào)告冊_第3頁
Java實(shí)訓(xùn)報(bào)告冊_第4頁
Java實(shí)訓(xùn)報(bào)告冊_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 1 實(shí) 訓(xùn) 報(bào) 告 冊 實(shí)訓(xùn)課程 : Java 程序設(shè)計(jì) 項(xiàng)目題目:學(xué)生考試登錄系統(tǒng) 項(xiàng)目小組:周夜葵 楊君超 和澤慧 指導(dǎo)老師:田海燕 實(shí)訓(xùn)時間: 2010 年 6 月 28-2010 年 7 月 3 日 計(jì)算機(jī)網(wǎng)絡(luò) 08 1 班 Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 2 目錄 一工具選擇, JDK的安裝和 NetBeans的調(diào)試 (1) 安裝 JDK6.0 和 Netbeans 3 (2) 環(huán)境變量的配置 4 (3) 使用 NetBeans 創(chuàng)建登錄窗口 5 二 用戶 登錄 功能模塊開發(fā) (1) 登陸模塊的思路 6 (2) 用戶登錄的功能實(shí)現(xiàn) 6 ( 3)用戶登錄核心代碼 7 ( 4)運(yùn)行結(jié)果 9 三 用戶 注冊 功能模塊開發(fā) (1) 思路 9 ( 2)用戶注冊實(shí)現(xiàn) 9 ( 3)用戶注冊核心代碼 14 ( 4)用戶注冊運(yùn)行結(jié)果 13 四 用戶 考試 功能模塊開發(fā) ( 1) 思路 15 ( 2) 具體實(shí)現(xiàn) 15 ( 3) 核心代碼 15 ( 1.1)運(yùn)行結(jié)果 26 五 實(shí)訓(xùn)總結(jié) ( 1) 實(shí)訓(xùn) 心得 27 Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 3 工具選擇, JDK 的安裝和 NetBeans 的調(diào)試 1 工具的選擇 在題目的選擇上我們選擇了學(xué)生考試系統(tǒng)的開發(fā), 開發(fā)環(huán)境是sun 公司的 NetBeans, NetBeans 是一個全功能的開放源碼 Java IDE,可以幫助開發(fā)人員編寫、編譯、調(diào)試和部署 Java 應(yīng)用,并將版本控制和 XML編輯融入其眾多功能之中。 NetBeans 可支持 Java 2 平臺標(biāo)準(zhǔn)版 (J2SE)應(yīng)用的創(chuàng)建、采用 JSP和 Servlet的 2層 Web應(yīng)用的創(chuàng)建,以及用于 2層 Web應(yīng)用的 API及軟件的核心組的創(chuàng)建。此外, NetBeans 最新牒還預(yù)裝了兩個 Web 服務(wù)器,即 Tomcat 和 GlassFish,從而免除了繁瑣的配置和安裝過程。所有這些都為 Java 開發(fā)人員創(chuàng)造了一個可擴(kuò)展的開放源多平臺的 Java IDE,以支持他們在各自所選擇的環(huán)境中從事開發(fā)工作,如 Solaris、 Linux、 Windows 或 Macintosh。 NetBeans 是一個為軟件開發(fā)者而設(shè)計(jì)的自由、開放的 IDE(集成開發(fā)環(huán)境),你可以在這里獲得許多需要的工具,包括建立桌面應(yīng)用、企業(yè)級應(yīng)用、 WEB開發(fā)和 JAVA 移動應(yīng)用程序開發(fā)、 C/C+,甚至 Ruby。NetBeans 可以非常方便的安裝于多種操作系統(tǒng)平臺,包括Windows,Linux,Mac OS 和 Solaris等操作系統(tǒng) NetBeans IDE6.1 版本提供了幾種新功能和一些功能的增強(qiáng)。提供了強(qiáng)大的 JavaScript 編輯功能,支持使用 Spring 的 WEB框架,并加強(qiáng)了與 MySQL的整合,使 NetBeans比較方便的使用 MySQL 數(shù)據(jù)庫,NetBeans 6.1 增強(qiáng)了性能,啟動速度提升 40%。在建立一個大工程時, Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 4 有較低的內(nèi)存消耗和更快的響應(yīng)速度! 2. JDK 的安裝和 NetBeans 的調(diào)試 要安裝 NetBeans6.8必須安裝 JDK5.0或者 JDK6.0的版本 ,因?yàn)?NetBeans 是基于 JDK 的開發(fā)工具, JDK 屬于支持 NetBeans的環(huán)境。 安裝好后,配置環(huán)境變量, path 和 classpa, path 目錄指向: C:Program FilesJavajdk1.6.0_18bin 就是安裝 JDK所在 的 目 錄 。 Classpath 指 向 : C:Program FilesJavajdk1.6.0_18lib;.并在后面加上“ .”結(jié)束。 安裝 NetBeans6.8,安裝步驟省略,首先得注意的時候一定要記得配置環(huán)境變量,包括 path 和 classpath 一個也不能少否則安裝程序檢測不到 JDK的存在。 成功安裝如圖: 界面截圖: Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 5 3 使用 NetBeans 創(chuàng)建登錄窗口 打開 NetBeans,點(diǎn)擊左邊窗格上的新建文件,選擇swing GUI 或者 awt GUI,選擇好存放項(xiàng)目的位置就可以進(jìn)入圖形界面的開發(fā)環(huán)境進(jìn)行設(shè)計(jì)。 首先要添加面板到設(shè)計(jì)面板上,如圖: ,然后再工具欄拖動相應(yīng)的按鈕和文本框到底層面板上,布局好相應(yīng)的按鈕后,進(jìn)行 txt屬性的修改,再屬性欄找到txt屬性, 修改按鈕和標(biāo)簽的文本屬性。 對于按鈕上的事件,則可以雙擊該按鈕進(jìn)入到代碼的 Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 6 編寫界面。 由于首次接觸 NetBeans 對其強(qiáng)大的功能和良好的交互性不夠了解,許多可用的功能沒有得到實(shí)現(xiàn)。正在進(jìn)一步的學(xué)習(xí)和研究中。 用戶 登錄 功能模塊開發(fā) 1 登錄模塊的思路 首先我們的思路是,在登錄的窗體上輸入用戶名和密碼之后,把用戶名和密碼與注冊界面注冊生成的 txt文本中的內(nèi)容進(jìn)行對比, 若 一致則登錄成功,否則不成功。但是現(xiàn)在的問題是在進(jìn)行對比的時候由于代碼復(fù)雜,沒有實(shí)現(xiàn)這個功能,只好把判斷的代碼 加上注釋 進(jìn)行傻瓜式的判斷。然后跳轉(zhuǎn)到考試的界面。 2 用戶登錄的功能實(shí)現(xiàn) 登錄 窗口作為 注冊窗口和考試界面的主窗體 ,在點(diǎn)擊注冊 按鈕時 調(diào)用 注冊窗體 并將父窗體隱藏,可以實(shí)現(xiàn)注冊界面的調(diào)用 ,注冊完后點(diǎn)擊“確定”可返回登錄界面,在登錄窗體上正確填寫相關(guān)資料后 點(diǎn)擊 登錄按鈕,可進(jìn)入考試界面,進(jìn)行考試。 Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 7 3 用戶登錄的核心代碼 LoginPanel-登錄界面的類名 窗體界面設(shè)計(jì)的主要思路是:在主界面中添加面板,并在面板中添加相關(guān)組件。 面板的布局為: BorderLayout import java.awt.*; import java.awt.event.*; import javax.swing.*; /完成登錄界面的設(shè)計(jì) class LoginPanel extends JPanel implements ActionListener JButton loginbtn,registerbtn,cancelbtn; JLabel titlelabel,namelabel,pwdlabel; JTextField namefield; JPasswordField pwdfield; JPanel panel1,panel2,panel3,panel21,panel22; JFrame iframe; public static void main(String args) new LoginPanel(); public LoginPanel() iframe=new JFrame(); JLabel titlelabel=new JLabel(歡迎使用考試系統(tǒng) ); titlelabel.setFont(new Font(隸書 ,Font.BOLD,24); JLabel namelabel=new JLabel(用戶名 :); JLabel pwdlabel=new JLabel(密 碼 :); JTextField namefield=new JTextField(16); JPasswordField pwdfield=new JPasswordField(16); pwdfield.setEchoChar(*); JButton loginbtn=new JButton(登錄 ); JButton registerbtn=new JButton(注冊 ); JButton cancelbtn=new JButton(取消 ); /裝入監(jiān)聽器 loginbtn.addActionListener(this); registerbtn.addActionListener(this); cancelbtn.addActionListener(this); panel1 = new JPanel(); panel2 = new JPanel(); panel3 = new JPanel(); Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 8 panel21 = new JPanel(); panel22 = new JPanel(); BorderLayout b1=new BorderLayout(); setLayout(b1); panel1.add(titlelabel); panel21.add(namelabel); panel21.add(namefield); panel22.add(pwdlabel); panel22.add(pwdfield); panel2.add(panel21,BorderLayout.NORTH); panel2.add(panel22,BorderLayout.SOUTH); panel3.add(loginbtn); panel3.add(registerbtn); panel3.add(cancelbtn); iframe.add(panel1,BorderLayout.NORTH); iframe.add(panel2,BorderLayout.CENTER); iframe.add(panel3,BorderLayout.SOUTH); iframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); iframe.setSize(300,250); iframe.setTitle(登錄系統(tǒng) ); iframe.setVisible(true); /實(shí)現(xiàn)三個按鈕事件功能 public void actionPerformed(ActionEvent e) if(e.getActionCommand()=登錄 ) /登錄按鈕的相關(guān)事件 /if(namefield.getText().trim().equals() /JOptionPane.showMessageDialog(null,t 請輸入用戶名! ,用戶名空提示 ,JOptionPane.OK_OPTION); / /else /if(new String(pwdfield.getPassword().equals()JOptionPane.showMessageDialog(null,t請輸入密碼! ,密碼空提示 ,JOptionPane.OK_OPTION); / /else /if(namefield.getText().trim().equals(zyk)&(new String(pwdfield.getPassword().equals(123456) / / new Test_GUI(zyk); /實(shí)現(xiàn)與考試模塊界面的連接 iframe.dispose(); Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 9 if(e.getActionCommand()=注冊 ) /注冊 按 鈕的相關(guān)事件 new Register_GUI(); /實(shí)現(xiàn)與 注冊 界面的連接 iframe.dispose(); if(e.getActionCommand()=取消 ) /取消 按鈕的相關(guān)事件 System.exit(0); 4 運(yùn)行結(jié)果 用戶注冊功能模塊開發(fā) 1思路 簡單的注冊界面,有登陸提示信息,注冊提示信息,簡約的界面,通過用戶的注冊可以授權(quán)合法的用戶登陸考試, 可以進(jìn)行界面的跳轉(zhuǎn)功能,主要正對完成注冊的跳 轉(zhuǎn),在注冊界面通過,獲取用戶名和密碼以及相關(guān)的信息后將信息提交到本地txt文本中(模擬數(shù)據(jù)庫)。以便后期登錄時從 txt中取得相應(yīng)合法用戶的賬戶和密碼。 2.用戶注冊的實(shí)現(xiàn) Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 10 注冊窗口作為登陸窗口的子窗體,在點(diǎn)擊注冊的時候調(diào)用子窗體并將父窗體隱藏,就可以實(shí)現(xiàn)注冊界面的調(diào)用。 3.用戶注冊的核心代碼 Register_GUI-注冊界面的類名 窗體界面的布局分別為: GridBagLayout、 BoxLayout import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.Border; import java.util.*; public class Register_GUI Register_GUI() RegisterFrame rf=new RegisterFrame(); rf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); rf.setVisible(true); public static void main(String args) new Register_GUI(); /完成 注冊 界面的設(shè)計(jì) class RegisterFrame extends JFrame Toolkit tool; public RegisterFrame() setTitle(用戶注冊 ); tool=Toolkit.getDefaultToolkit(); Dimension ds=tool.getScreenSize(); int w=ds.width; int h=ds.height; setBounds(w-300)/2,(h-300)/2,300,300); setResizable(false); RegisterPanel rp=new RegisterPanel(this); add(rp); class RegisterPanel extends JPanel implements ActionListener Jlabel titlelabel,namelabel,pwdlabel1,pwdlabel2,sexlabel,agelabel,classlabel; Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 11 JTextField namefield,agefield; JPasswordField pwdfield1,pwdfield2; JButton commitbtn,resetbtn,cancelbtn; JRadioButton rbtn1,rbtn2; JComboBox combo; Vectorv; GridBagLayout gbl; GridBagConstraints gbc; JPanel panel; Box box; Component c; JFrame iframe; public RegisterPanel(JFrame frame) iframe=new JFrame(); titlelabel=new JLabel(用戶注冊 ); titlelabel.setFont(new Font(隸書 ,Font.BOLD,24); namelabel=new JLabel(用戶名 :); pwdlabel1=new JLabel(密 碼 :); pwdlabel2=new JLabel(確認(rèn)密碼 :); sexlabel=new JLabel(性 別 :); agelabel=new JLabel(年 齡 :); classlabel=new JLabel(所屬班級 :); namefield=new JTextField(16); pwdfield1=new JPasswordField(16); pwdfield1.setEchoChar(*); pwdfield2=new JPasswordField(16); pwdfield2.setEchoChar(*); agefield=new JTextField(16); rbtn1=new JRadioButton(男 ); rbtn2=new JRadioButton(女 ); rbtn2.setSelected(true); ButtonGroup bg=new ButtonGroup(); bg.add(rbtn1); bg.add(rbtn2); v=new Vector(); v.add(計(jì)算機(jī)網(wǎng)絡(luò) 08); v.add(圖文圖形設(shè)計(jì) 08); v.add(水利水電 08); v.add(會計(jì) 08); v.add(自動化 08); combo=new JComboBox(v); commitbtn=new JButton(注冊 ); resetbtn=new JButton(重置 ); cancelbtn=new JButton(取消 ); Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 12 /裝入監(jiān)聽器 commitbtn.addActionListener(this); resetbtn.addActionListener(this); cancelbtn.addActionListener(this); panel=new JPanel(); panel.add(rbtn1); panel.add(rbtn2); Border border=BorderFactory.createTitledBorder(); panel.setBorder(border); box = Box.createHorizontalBox(); box.add(commitbtn); box.add(Box.createHorizontalStrut(30); box.add(resetbtn); box.add(Box.createHorizontalStrut(30); box.add(cancelbtn); gbl=new GridBagLayout(); setLayout(gbl); gbc=new GridBagConstraints(); addCompnent(titlelabel,0,0,4,1); add(Box.createVerticalStrut(20); gbc.anchor=GridBagConstraints.CENTER; gbc.fill=GridBagConstraints.HORIZONTAL; gbc.weightx=0; gbc.weighty=100; addCompnent(namelabel,0,1,1,1); addCompnent(namefield,1,1,4,1); addCompnent(pwdlabel1,0,2,1,1); addCompnent(pwdfield1,1,2,4,1); addCompnent(pwdlabel2,0,3,1,1); addCompnent(pwdfield2,1,3,4,1); addCompnent(sexlabel,0,4,1,1); addCompnent(panel,1,4,1,1); gbc.anchor=GridBagConstraints.EAST; gbc.fill=GridBagConstraints.NONE; addCompnent(agelabel,2,4,1,1); gbc.fill=GridBagConstraints.HORIZONTAL; addCompnent(agefield,3,4,2,1); addCompnent(classlabel,0,5,1,1); addCompnent(combo,1,5,4,1); gbc.anchor=GridBagConstraints.CENTER; gbc.fill=GridBagConstraints.NONE; addCompnent(box,0,6,4,1); Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 13 public void addCompnent(Component c,int x,int y,int w,int h) gbc.gridx=x; gbc.gridy=y; gbc.gridwidth=w; gbc.gridheight=h; gbc.gridx=x; add(c,gbc); /實(shí)現(xiàn)三個按鈕事件功能 public void actionPerformed(ActionEvent e) if(e.getSource()=commitbtn) /注冊按鈕的相關(guān)事件 Register rinfo=new Register(); =namefield.getText().trim(); rinfo.password=new String(pwdfield1.getPassword(); rinfo.sex=rbtn2.isSelected()?男 :女 ; rinfo.age=agefield.getText().trim(); rinfo.nclass=combo.getSelectedItem().toString(); if(.length()=0) JOptionPane.showMessageDialog(null,t用戶名不能為空 ); return; if(rinfo.password.length()=0) JOptionPane.showMessageDialog(null,t密碼不能為空 ); return; if(!rinfo.password.equals(new String(pwdfield2.getPassword() JOptionPane.showMessageDialog(null,密碼兩次輸入不一致,請重新輸 ); return; if(rinfo.age .length()=0) JOptionPane.showMessageDialog(null,t年齡不能為空 ); return; int age=Integer.parseInt(rinfo.age); if(age100) JOptionPane.showMessageDialog(null,t年 齡輸入不合法 ); return; JOptionPane.showMessageDialog(null,t注冊成功 ); new LoginPanel().setVisible(true); /實(shí)現(xiàn)與登錄界面的連接 iframe.dispose(); if(e.getSource()=resetbtn) /重置按鈕的相關(guān)事件 Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 14 namefield.setText(); pwdfield1.setText(); pwdfield2.setText(); rbtn2.isSelected(); agefield.setText(); combo.setSelectedIndex(0); if(e.getSource()=cancelbtn) /退出按鈕的相關(guān)事件 System.exit(0); class Register String name; String password; String sex; String age; String nclass; 4用戶注冊運(yùn)行結(jié)果 Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 15 考試模塊功能 1.思路 首先 在同一個目錄下新建一個 test.txt 文件,加入試題,再把試題加載到考試界面模塊中;其次在其中添加倒計(jì)時模塊,實(shí)現(xiàn)時間的提醒功能,;再次,實(shí)現(xiàn)“開始考試”按鈕的功能,當(dāng)點(diǎn)擊“開始考試”按鈕時,跳出試題,可對試題進(jìn)行答案的選擇;最后,實(shí)現(xiàn)“提交試題”按鈕的功能,點(diǎn)擊“提交試題”按鈕后,跳出得分情況。 2.具體實(shí)現(xiàn) 考試模塊 作為登陸窗口的子窗體,在 正確填寫相關(guān)資料后,點(diǎn)擊登錄按鈕后 調(diào)用子窗體并將父窗體隱藏,就可以實(shí)現(xiàn) 考試模塊 界面的調(diào)用 。 3.核心代碼 TestGUI-考試模塊 的類名 窗體界面 的主要 布局為: BorderLayout、 BoxLayout 以繼承線程類的方法實(shí)現(xiàn) 考試時間 倒計(jì)時 import java.awt.*; import java.awt.event.*; import java.io.*; import java.text.NumberFormat; Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 16 import java.util.Vector; import javax.swing.*; import javax.swing.border.Border; public class Test_GUI public static void main(String args) new Test_GUI(zyk); public Test_GUI(String name) TestFrame tf = new TestFrame(name); tf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); tf.setVisible(true); /框架類 class TestFrame extends JFrame private Toolkit tool; private JMenuBar mb; private JMenu menutool,menuhelp,menuexit; private JMenuItem edition,about; private JDialog help; public TestFrame(String name) setTitle(學(xué)生在線考試系統(tǒng) ); tool = Toolkit.getDefaultToolkit(); Dimension ds = tool.getScreenSize(); int w = ds.width; int h = ds.height; setBounds(w-500)/2,(h-430)/2, 500, 450); /設(shè)置窗體圖標(biāo) Image image = tool.getImage(hu.jpg); setIconImage(image); setResizable(false); /-菜單條的設(shè)置 - mb = new JMenuBar(); setJMenuBar(mb); menutool = new JMenu(工具 (T); menuhelp = new JMenu(幫助 (H); menuexit = new JMenu(退出 (E); /設(shè)置助記符 menutool.setMnemonic(T); menuhelp.setMnemonic(H); menuexit.setMnemonic(E); mb.add(menutool); mb.add(menuhelp); mb.add(menuexit); Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 17 edition = new JMenuItem(版本 (E),E); about = new JMenuItem(關(guān)于 (A),H); menuhelp.add(edition); /添加分隔線 menuhelp.addSeparator(); menuhelp.add(about); /設(shè)置快捷鍵 edition.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK); about.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK); BorderLayout bl =new BorderLayout(); setLayout(bl); TestPanel tp = new TestPanel(name); add(tp,BorderLayout.CENTER); /匿名內(nèi)部類添加事件 edition.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) JOptionPane.showMessageDialog(null, 單機(jī)版 Exam_System V1.1,版本信息 ,JOptionPane.PLAIN_MESSAGE);); about.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) help = new JDialog(new JFrame(); JPanel panel = new JPanel(); JTextArea helparea = new JTextArea(14,25); helparea.setText(本書以一個在線考試系統(tǒng)的開發(fā)貫穿全書+n系統(tǒng)的開發(fā)分為三個版本: +n 1.單機(jī)版 Stand-alone_Exam System V1.1+n 2.C/S 版 C/S_Exam System V1.2+n 3.數(shù)據(jù)庫版 Data_Exam System V1.3); helparea.setEditable(false); JScrollPane sp = new JScrollPane(helparea); panel.add(sp); help.setTitle(幫助信息 ); help.add(panel,Center); help.setBounds(350,200,300,300); help.setVisible(true); ); menuexit.addMouseListener(new MouseListener() public void mouseClicked(MouseEvent arg0) int temp = JOptionPane.showConfirmDialog(null, 您確認(rèn)要 Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 18 退出系統(tǒng)嗎? , 確認(rèn)對話框 , JOptionPane.YES_NO_OPTION); if (temp = JOptionPane.YES_OPTION) System.exit(0); else if (temp = JOptionPane.NO_OPTION) return; public void mouseEntered(MouseEvent arg0) public void mouseExited(MouseEvent arg0) public void mousePressed(MouseEvent arg0) public void mouseReleased(MouseEvent arg0) ); /容器類 class TestPanel extends JPanel implements ActionListener Private JLabel totaltime,lifttime,ttimeshow,ltimeshow,textinfo,userinfo; private JLabel copyright; /版權(quán)信息標(biāo)簽 private JButton starttest,back,next,commit; private JTextArea area; private JRadioButton rbtna,rbtnb,rbtnc,rbtnd; private String totaltimer = ,lifttimer=,username=; private int i = 0,n = 0; private Box box,box1,box2,box3,box4,box5; private Question question; private ClockDisplay clock; private int index = 0; private int time=0; public TestPanel(String name) username = name; totaltimer = 00:0:00; lifttimer = 00:00:00; totaltime = new JLabel(總的考試時間是: ); lifttime = new JLabel(剩余考試時間是: ); ttimeshow = new JLabel(totaltimer); ttimeshow.setForeground(Color.RED); ltimeshow = new JLabel(lifttimer); ltimeshow.setForeground(Color.RED); textinfo = new JLabel(第 +i+題 +,共 +n+題 ); userinfo = new JLabel(考生 : +username); copyright = new JLabel(); copyright.setHorizontalAlignment(JLabel.RIGHT); Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 19 copyright.setFont(new Font(宋體 ,Font.PLAIN,14); copyright.setForeground(Color.GRAY); copyright.setText(楊君超、周夜葵、和澤慧 ); starttest = new JButton(開始考試 ); back = new JButton(上一題 ); back.setEnabled(false); next = new JButton(下一題 ); next.setEnabled(false); commit = new JButton(提交試卷 ); commit.setEnabled(false); area = new JTextArea(10,10); area.setText(考場規(guī)則 :n + 一、考試前 15分鐘,憑準(zhǔn)考證和身份證進(jìn)入考場,對號入座,將準(zhǔn)考證和身份證放在桌面右上角,便于監(jiān)考人員檢查。n +二、筆譯考試開考三十分鐘后不得入場,答題結(jié)束后提交試卷后可以申請離場。 n +三、考生要愛惜考場的機(jī)器和相關(guān)設(shè)備,嚴(yán)格按照規(guī)定的操作說明進(jìn)行操作,如有人為損壞,照價(jià)賠償。 ); JScrollPane sp = new JScrollPane(area); area.setEditable(false); rbtna = new JRadioButton(A); rbtnb = new JRadioButton(B); rbtnc = new JRadioButton(C); rbtnd = new JRadioButton(D); rbtna.setEnabled(false); rbtnb.setEnabled(false); rbtnc.setEnabled(false); rbtnd.setEnabled(false); ButtonGroup bg = new ButtonGroup(); bg.add(rbtna); bg.add(rbtnb); bg.add(rbtnc); bg.add(rbtnd); Border border=BorderFactory.createTitledBorder(選項(xiàng) ); JPanel panel = new JPanel(); panel.add(rbtna); panel.add(rbtnb); panel.add(rbtnc); panel.add(rbtnd); panel.setBorder(border); box = Box.createVerticalBox(); box1 = Box.createHorizontalBox(); box2 = Box.createHorizontalBox(); box3 = Box.createHorizontalBox(); box4 = Box.createHorizontalBox(); Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 20 box5 = Box.createHorizontalBox(); new JDialog(new JFrame(); /注冊監(jiān)聽事件 starttest.addActionListener(this); back.addActionListener(this); next.addActionListener(this); commit.addActionListener(this); /添加組件,采用箱式布局 box1.add(totaltime); box1.add(Box.createHorizontalStrut(5); box1.add(ttimeshow); box1.add(Box.createHorizontalStrut(15); box1.add(lifttime); box1.add(Box.createHorizontalStrut(5); box1.add(ltimeshow); box1.add(Box.createHorizontalStrut(15); box1.add(starttest); box2.add(textinfo); box2.add(Box.createHorizontalStrut(30); box2.add(userinfo); box3.add(sp, BorderLayout.CENTER); box4.add(panel); box4.add(Box.createHorizontalStrut(5); box4.add(back); box4.add(Box.createHorizontalStrut(5); box4.add(next); box4.add(Box.createHorizontalStrut(5); box4.add(commit); box5.add(Box.createHorizontalStrut(250); box5.add(copyright); box.add(box1); box.add(Box.createVerticalStrut(10); box.add(box2); box.add(Box.createVerticalStrut(10); box.add(box3); box.add(Box.createVerticalStrut(10); box.add(box4); box.add(Box.createVerticalStrut(20); box.add(box5,BorderLayout.EAST); add(box); /加載考試時間和試題 Java 程序設(shè)計(jì)實(shí)訓(xùn)報(bào)告冊 21 testTime(); createQuestion(); ttimeshow.setText(time+分鐘 ); ltimeshow.setText(time+分鐘 ); public void display(Question q) String answer=; answer=q.getSelectedAnswer(); area.setText(n+q.getDetail(); if(answer=A) rbtna.setSelected(true); else if(answer=B) rbtnb.setSelected(true); else if(answer=C) rbtnc.setSelected(true); else if(answer=D) rbtnd.setSelected(true); textinfo.setText(第 + (index+1) + 題 +,共 + question.length+題 ); /從文件中讀取出來的試題加載到程序中 public void createQuestion() Vector qStore =

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論