




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、JavafX印程序設計頁腳內容 蘭州商學院隴橋學院工學系課程設計報告設計題目:抽獎程序系別:工學系專業(方向):電子商務年 級、 班學生姓名:學生學號:指導教師:一2013年12月 5日目錄一、系統開發的背景3java語言的開發方法是當今世界最流行的開發方法,是當今流行的網絡編程語言。它具有面向對象、跨平臺、分布應用等特點。它不僅具有更貼近自然的語義,而且有利于軟件的維護和繼承。很多程序開發人員得第一選擇。為了將課堂上得知識掌握得更加透徹,深刻把握Java語言的重要概念及其面向對象的特性,鍛煉學生熟練的應用面向對象的思想和設計方法解決實際問題的能力,開設了 Jav刑序 設計課程設計。讓學生自己
2、動手動腦,將書本上得知識運用到實踐當中去,使知識能更好得融會貫通。3 TOC o 1-5 h z 二、系統分析與設計3(一)系統功能要求3(二)系統模塊設計 3三、系統的設計4抽獎功能流程圖5四、系統測試5程序測試如下圖:5五、總結5六、程序代碼6抽獎程序一、系統開發的背景java語言的開發方法是當今世界最流行的開發方法,是當今流行的網絡編程語言。它具有面向對象、 跨平臺、分布應用等特點。它不僅具有更貼近自然的語義,而且有利于軟件的維護和繼承。很多程序 開發人員得第一選擇。為了將課堂上得知識掌握得更加透徹,深刻把握Java語言的重要概念及其面向對象的特性,鍛煉學生熟練的應用面向對象的思想和設計
3、方法解決實際問題的能力,開設了Jav刑序設計課程設計。讓學生自己動手動腦,將書本上得知識運用到實踐當中去,使知識能更好得融會貫通。二、系統分析與設計(一)系統功能要求1)能夠在電腦上抽獎,分別抽取4等獎、3等獎、2等獎、1等獎、特等獎,設定每種獎項的人數后分別 一次抽取每個獎項。2)按給定的總人數以序號或電話號碼為抽獎依據。(二)系統模塊設計通過對系統功能的分析,抽獎系統功能如圖 1所示圖1抽獎系統業務流程圖三、系統的設計此小程序的基本流程是,在一個文本文件存放里面備選的數據,數據的格式是每行有姓名和手機號他們之間是用分隔符-來分隔的。然后在自定義一個方法,通過分隔符來區分姓名和手機號,然后將
4、他們分別存儲進兩個不同的可變向量當中。自定義一個線程,此線程是專門用來隨機選取一個號碼,并且每隔50毫秒就將一個不同的號碼顯示在號碼框中,這樣就實現了號碼的快速滾動,實現了完全模擬電視當中抽獎的畫面為了實現選取出的一個號碼不能再被選種,實現的方法是將他們從可變向量中清除出去。此程序首先從四等獎開始抽取四人,三等獎抽取三人,二等獎抽取二人,一等獎一人,特等獎一人。抽獎功能流程圖四、系統測試程序測試如下圖:五、總結在設計程序時,不能妄想一次就將整個程序設計好,反復修改、不斷改進是程序設計的必經之路。在 設計課程過程中遇到問題是很正常的,但我們應該將每次遇到的問題記錄下來,并分析清楚,以免下 次再碰
5、到同樣的問題的課程設計結束了,但是從中學到的知識會讓我受益終身。發現、提出、分析、 解決問題和實踐能力的提高都會受益于我在以后的學習、工作和生活中。設計過程,好比是我們人類 成長的歷程,常有一些不如意,但畢竟這是第一次做,難免會遇到各種各樣的問題。在設計的過程中 發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。我們通過查閱大量 有關資料,使自己學到了不少知識,也經歷了不少艱辛,但收獲同樣巨大。通過這次課程設計我也發 現了自身存在的不足之處,雖然感覺理論上已經掌握,但在運用到實踐的過程中仍有意想不到的困惑, 經過一番努力才得以解決。這也激發了我今后努力學習的興趣,我想這將
6、對我以后的學習產生積極的 影響。通過這次設計,我懂得了學習的重要性,了解到理論知識與實踐相結合的重要意義,學會了堅 持、耐心和努力。附件六、程序代碼import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class ChooseAward extends JFrame/*/系統自動生成private static final long serialVersionUID = 7510608124693852355L;JButton b_sta
7、rt = new JButton 件始)JButton b_stop = new JButton(止);JPanel p_north=new JPanel();JPanel p_center=new JPanel();JPanel p_south=new JPanel();/菜單欄JMenuBar menubar=new JMenuBar();/菜單項JMenu fileMenu=new JMenUp 件)JMenu setMenu=new JMenU(lt);JMenu aboutMenu=new JMenUT);/*菜單子項*/private JMenuItem filem=new JMe
8、nuItem(擇文件),new JMenuItem(存為.”), new JMenuItem保存),new JMenuItem( 出);JTextField t_identNumber = new JTextField();身份證號的文本域Vector v_identNumber = new Vector(); /f放讀取出來的身份證的號碼Vector v_name = new Vector(); /存放讀取出來的人的姓名Vector v_printident = new Vector(); /存放中獎人的身份證號碼JLabel l_information = new JLabel();JLa
9、bel l_identNumber = new JLabel();兒abel l_sysinformation = new JLabelf統信息:);JFileChooser filechooser = new JFileChooser()/件選擇器/選擇隨機數的線成public ChooseThread awardThread = null;int chooseTime = 0; /按下停止按鈕的次數,也就是抽獎的次數public ChooseAward()super(小型抽獎系統);t_identNumber.setEditable(false);/*1.4以后的JDKM以不用Contai
10、ner*/Container contentPane = getContentPane();/BorderLayout布局管理器,東,南,西,北contentPane.setLayout(new BorderLayout();/*給幾個按鈕和子菜單添加監聽器/filem0.addActionListener(new ActionListener()/注冊加載事件的監聽器public void actionPerformed(ActionEvent e)b_loadident_ActionPerformed(e););b_start.addActionListener(new ActionLis
11、tener()/注冊開始事件的監聽器public void actionPerformed(ActionEvent e)b_start_ActionPerformed(e););b_stop.addActionListener(new ActionListener()/注冊停止事件的監聽器public void actionPerformed(ActionEvent e)b_stop_ActionPerformed(e););filem2.addActionListener(new ActionListener()/注冊打印事件的監聽器public void actionPerformed(A
12、ctionEvent e)b_printaward_ActionPerformed(e););addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.exit(O););/將菜單子項加入菜單中for(int i=0;ifilem.length;i+)fileMenu.add(filemi);/加入分隔線,為了美觀fileMenu.addSeparator();/將菜單條加入frame中menubar.add(fileMenu);menubar.add(setMenu);menubar
13、.add(aboutMenu);setJMenuBar(menubar);/*將p_north設計為一個狀態欄,顯示一些操作過程中的信息創建一個左對齊方式的流布局/p_south.setLayout(new FlowLayout(FlowLayout.LEFT);l_information.setForeground(Color.blue);p_south.add(l_sysinformation);p_south.add(l_information);contentPane.add(p_south,BorderLayout.SOUTH);/*設置的一些顯示方式,字體,大小等,為了盡量美觀一點
14、/Font xuehao=new Font(null,Font.PLAIN,30);l_identNumber.setFont(xuehao);/字體的居中對齊l_identNumber.setHorizontalAlignment(0);l_identNumber.setText(機號);Font number=new Font(null,Font.BOLD,30)和體t_identNumber.setFont(number);/設置字體顏色t_identNumber.setForeground(Color.red);t_identNumber.setHorizontalAlignment(
15、0);/給上面的jpanel設置布局p_north.setLayout(new GridLayout(2,1);p_north.add(l_identNumber);p_north.add(t_identNumber);contentPane.add(p_north,BorderLayout.NORTH);/給中間的jpanel設置布局p_center.setLayout(new GridLayout(1,2,10,0);p_center.add(b_start);p_center.add(b_stop);contentPane.add(p_center,BorderLayout.CENTER
16、);/*加載按鈕事件方法*/public void b_loadident_ActionPerformed(ActionEvent e)int k = 0;chooseTime = 0;的高效讀取/從字符輸入流中讀取文本,緩沖各個字符,從而提供字符、數組和行BufferedReader reader = null;/此方法會返回一個int值int i =刊echooser.showOpenDialog(this); /K 示打開文件對話框/*確實所選擇的是對話框上的確定按鈕*/if (i = JFileChooser.APPROVE_OPTION) /點擊對話框中打開選項File f = fi
17、lechooser.getSelectedFile(); /得到所選擇的文件tryl_information.setText(數據加載中,請稍等.);/讀取字符流reader = new BufferedReader(new FileReader(f);/循環讀取while (true)/讀取一個文本行String data = reader.readLine();System.out.println(data);/FF 發時候測試用/讀完了數據if (data = null)l_information.setText(數據力口載完成!);break;/通過“-”這個符號將 字符串分離為兩部分
18、,再 存放到向量里面Vector v = this.apart(data, -);/System.out.println(data);/ 開發時候測試用if (v = null)l_information.setText(數據格式不正確,請重 新加載!)return;/*分別將分離開來的手機號碼,和姓名分別放入兩 個可變向量當中這里應該使用泛型,由于本人還沒有熟練掌握泛 型,姑且放之*捕獲異常,看是否出現了格式錯誤,因為一般出現了格式錯誤*這兩條語句都會發生無法取得元素的錯誤*/tryv_identNumber.add(k, v.elementAt(O);v_name.add(k, v.ele
19、mentAt(l);k+;catch(Exception e4)System.out.println(格式中沒有分隔符號出現 的錯誤);JOptionPane.showMessageDialog(thiS,導入的數據格式錯誤!);l_information.setText(導入的數據格式錯誤!);break; catch (Exception ex)ex.printStackTrace(); / 輸出出錯信息/*啟動按鈕的事件*/public void b_start_ActionPerformed(ActionEvent e)/判斷存儲兩個標記的向量中是否為空if (v_identNumbe
20、r.size() = 0 | v_name.size() 11)l_information.setText(抽獎結束,若要再進行一次須重新啟動程序!)else/執行.awardThread = new ChooseThread(this);awardThread.changeflag_start();l_information.setText(將產生:特(1 名),一 (1 名),二(2 名),三(3 名) 等獎,四(4名)等獎)l_identNumber.setTex電取中.);b_start.setEnabled(false);b_stop.setEnabled(true);/*暫停按鈕的
21、事件*/public void b_stop_ActionPerformed(ActionEvent e)/將跳轉的數字置于停止狀態awardThread.changeflag_stop();String awardmessage =;chooseTime+;/第幾次按停止按鈕String str_name =;String message=;/*根據第幾次來按停止按鈕來決定是產生幾等獎*/switch (chooseTime)case 4:/按前三次都是產生三等獎第幾個/尋找停止在號碼框中的數字,是對應的的存放號碼的向量中的for (int k = 0; k v_identNumber.si
22、ze(); k+)/找到了對應的號碼if (t_identNumber.getText().equals(v_identNumber.elementAt(k) /取出這個號碼對應的名字str_name = (String) v_name.elementAt(k);/為防止下次抽的時候再抽到相同的號碼,所以把它們 從向量中移除掉v_identNumber.removeElementAt(k);v_name.removeElementAt(k);break;/跳出循環l_identNumber.setText(等獎);b_startsetText0昧續);/這是要輸出到文本文件的信息awardme
23、ssage=四等獎 + t_identNumber.getText(+ str_name + rn;/將要打印的文本信息先存放到一個可變向量中v_printident.addElement(awardmessage);message =第+chooseTime+”位四等獎得主為:+str_name;JOptionPane.showMessageDialog(this, message);break;for (int k = 0; k v_identNumber.size(); k+)/找到了對應的號碼if (t_identNumber.getText().equals(v_identNumbe
24、r.elementAt(k) /取出這個號碼對應的名字str_name = (String) v_name.elementAt(k);從向量中移除掉/為防止下次抽的時候再抽到相同的號碼,所以把它們v_identNumber.removeElementAt(k);v_name.removeElementAt(k);break;/跳出循環l_identNumber.setText(等獎);b_startsetText0昧續);/這是要輸出到文本文件的信息awardmessage=三等獎 + t_identNumber.getText(+ str_name + rn;/將要打印的文本信息先存放到一個
25、可變向量中v_printident.addElement(awardmessage)系統提示說要使用泛型,本人 不會用,以后再研究int serial1=chooseTime-4;message =第+serial1+位三等獎得主為:+str_name;JOptionPane.showMessageDialog(this, message);break;for (int k = 0; k v_identNumber.size(); k+)if (t_identNumber.getText().equals(v_identNumber.elementAt(k)str_name = (String
26、) v_name.elementAt(k);v_identNumber.removeElementAt(k);v_name.removeElementAt(k);break;l_identNumber.setTex卑等獎);b_startsetText0昧續);awardmessage=二等獎+ t_identNumber.getText(+ str_name +rn;v_printident.addElement(awardmessage);int serial=chooseTime-7;/第幾位得主,排名序號message =第+serial+位二等獎得主為:+str_name;JOpti
27、onPane.showMessageDialog(ChooseAward.this, message);break;for(int k=0;kv_identNumber.size();k+)if(t_identNumber.getText().equals(v_identNumber.elementAt(k)str_name=(String) v_name.elementAt(k);v_identNumber.removeElementAt(k);v_name.removeElementAt(k);break;l_identNumber.setText(等獎);awardmessage=一等獎
28、 + t_identNumber.getText(+ str_name + rn;v_printident.addElement(awardmessage);/*第幾位得主,排名序號,其實沒必要這樣寫,因為本來就這一名現在這樣寫的作用是為我以后改進這個程序(可以自主選擇產生幾名得獎主)的時候做好準備*/serial=chooseTime-5;/message =第+serial+位二等獎得主為:+str_name;message =匚等獎得主為:+str_name;JOptionPane.showMessageDialog(ChooseAward.this, message);break;ca
29、se 11:for (int k = 0; k v_identNumber.size(); k+)if (t_identNumber.getText().equals(v_identNumber.elementAt(k)str_name = (String) v_name.elementAt(k);v_identNumber.removeElementAt(k);v_name.removeElementAt(k);break;l_identNumber.setText(等獎);awardmessage=特等獎+ t_identNumber.getText+ str_name +rn;v_pri
30、ntident.addElement(awardmessage);message =特等獎得主為:+str_name;JOptionPane.showMessageDialog(ChooseAward.this, message);l_information.setText(此次抽獎全部結束,保存抽獎結果!);break;default:JOptionPane.showMessageDialog(ChooseAward摘爵巴經結束);b_start.setText 件始);awardThread.changeflag_stop();break;b_start.setEnabled(true);
31、b_stop.setEnabled(false);/*輸出按鈕的事件/public void b_printaward_ActionPerformed(ActionEvent e)tryFileOutputStream fs_out = new FileOutputStream(result.txt);DataOutputStream out = new DataOutputStream(fs_out);for (int i = 0; i v_printident.size(); i+)System.out.println(v_printident.elementAt(i)刪試用out.wri
32、teUTF(String) v_printident.elementAt(i) + rn);out.close();l_information.setText(文件輸出成功!保存在當前目錄下.); catch (FileNotFoundException fe)System.err.println(fe); catch (IOException ioe)System.err.println(ioe);/*定義一個方法,將號碼和名字分離開來/ 一個是源數據文件,一個是分隔符號public Vector apart(String src, String separator)/使用了泛型,用可變向量
33、來存放等到的標記Vector v = new Vector();/* string tokenizer類允許應用程序將字符串分解為標記,祥見api文檔*/src是源字符串,separator是把src分隔為幾段的標記StringTokenizer st = new StringTokenizer(src, separator);/測試此tokenizer的字符串中是否還有更多的可用標記while (st.hasMoreTokens()/返回此string tokenizer的下一個標記,并將它加入到可變向量中存放v.addElement(st.nextToken();return v;/返回向量/*程序的入口*/public static void main(String口 args)根據經驗,這條語句只能在第一行JFrame.setDefaultLookAndFeelDecorated(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025中國銀行外匯商業房抵押貸款合同中國銀行抵押貸款
- 2025授權專賣店特許合同范本
- 2025設備租賃合同欠款爭議解決
- 2025專利使用許可專用合同范本
- 《2025年度企業雇傭合同》
- 2025年標準管理資金信托合同模板
- 2025企業臨時工勞動合同樣本示范
- 2025租賃合同格式
- 2025網絡安全等級保護測評服務合同
- 2025合同違約不及時履行將產生保函責任
- 電臺項目可行性研究報告
- 人教版(2024)七年級下冊英語期中質量檢測試卷(含答案)
- 針刺傷預防與處理(中華護理學會團體標準)
- 2024年度《安全教育家長會》課件
- 安全生產法律法規知識培訓課件
- 地鐵安檢專業知識培訓課件
- 2024年國家國防科技工業局軍工項目審核中心招聘筆試參考題庫附帶答案詳解
- 南京開通KT820數控車床說明書
- GB/T 17554.1-2006識別卡測試方法第1部分:一般特性測試
- 送教上門學生教案(生活適應和實用語數共17篇)
- 三年級家長會(語文).ppt
評論
0/150
提交評論