java抽獎(jiǎng)程序課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  工學(xué)系課程設(shè)計(jì)報(bào)告</b></p><p>  設(shè) 計(jì) 題 目:抽獎(jiǎng)程序 </p><p>  系 別:工學(xué)系 </p><p>  專(zhuān) 業(yè) (方 向):電子商務(wù) </p><p>  年 級(jí)、 班

2、 </p><p>  學(xué) 生 姓 名: </p><p>  學(xué) 生 學(xué) 號(hào): </p><p>  指 導(dǎo) 教 師: </p><p>  2013年 12 月 5 日</p><p><b>  目錄&

3、lt;/b></p><p>  一、系統(tǒng)開(kāi)發(fā)的背景3</p><p>  二、系統(tǒng)分析與設(shè)計(jì)3</p><p> ?。ㄒ唬┫到y(tǒng)功能要求3</p><p>  (二)系統(tǒng)模塊設(shè)計(jì)3</p><p><b>  三、系統(tǒng)的設(shè)計(jì)4</b></p><p><

4、;b>  四、系統(tǒng)測(cè)試5</b></p><p><b>  五、總結(jié)5</b></p><p><b>  六、程序代碼6</b></p><p><b>  抽獎(jiǎng)程序</b></p><p>  一、系統(tǒng)開(kāi)發(fā)的背景 </p><

5、p>  java語(yǔ)言的開(kāi)發(fā)方法是當(dāng)今世界最流行的開(kāi)發(fā)方法,是當(dāng)今流行的網(wǎng)絡(luò)編程語(yǔ)言。它具有面向?qū)ο?、跨平臺(tái)、分布應(yīng)用等特點(diǎn)。它不僅具有更貼近自然的語(yǔ)義,而且有利于軟件的維護(hù)和繼承。很多程序開(kāi)發(fā)人員得第一選擇。為了將課堂上得知識(shí)掌握得更加透徹,深刻把握J(rèn)ava語(yǔ)言的重要概念及其面向?qū)ο蟮奶匦?,鍛煉學(xué)生熟練的應(yīng)用面向?qū)ο蟮乃枷牒驮O(shè)計(jì)方法解決實(shí)際問(wèn)題的能力,開(kāi)設(shè)了Java程序設(shè)計(jì)課程設(shè)計(jì)。讓學(xué)生自己動(dòng)手動(dòng)腦,將書(shū)本上得知識(shí)運(yùn)用到實(shí)踐當(dāng)中

6、去,使知識(shí)能更好得融會(huì)貫通。</p><p><b>  二、系統(tǒng)分析與設(shè)計(jì)</b></p><p><b> ?。ㄒ唬┫到y(tǒng)功能要求</b></p><p>  1)能夠在電腦上抽獎(jiǎng),分別抽取4等獎(jiǎng)、3等獎(jiǎng)、2等獎(jiǎng)、1等獎(jiǎng)、特等獎(jiǎng),設(shè)定每種獎(jiǎng)項(xiàng)的人數(shù)后分別一次抽取每個(gè)獎(jiǎng)項(xiàng)。</p><p>  2)

7、按給定的總?cè)藬?shù)以序號(hào)或電話(huà)號(hào)碼為抽獎(jiǎng)依據(jù)。</p><p><b> ?。ǘ┫到y(tǒng)模塊設(shè)計(jì)</b></p><p>  通過(guò)對(duì)系統(tǒng)功能的分析,抽獎(jiǎng)系統(tǒng)功能如圖1所示</p><p><b>  三、系統(tǒng)的設(shè)計(jì)</b></p><p>  此小程序的基本流程是,在一個(gè)文本文件存放里面?zhèn)溥x的數(shù)據(jù),數(shù)據(jù)的

8、格式是每行有姓名和手機(jī)號(hào)他們之間是用分隔符-來(lái)分隔的。然后在自定義一個(gè)方法,通過(guò)分隔符來(lái)區(qū)分姓名和手機(jī)號(hào),然后將他們分別存儲(chǔ)進(jìn)兩個(gè)不同的可變向量當(dāng)中。自定義一個(gè)線(xiàn)程,此線(xiàn)程是專(zhuān)門(mén)用來(lái)隨機(jī)選取一個(gè)號(hào)碼, 并且每隔50毫秒就將一個(gè)不同的號(hào)碼顯示在號(hào)碼框中,這樣就實(shí)現(xiàn)了號(hào)碼的快速滾動(dòng),實(shí)現(xiàn)了完全模擬電視當(dāng)中抽獎(jiǎng)的畫(huà)面為了實(shí)現(xiàn)選取出的一個(gè)號(hào)碼不能再被選種,實(shí)現(xiàn)的方法是將他們從可變向量中清除出去。此程序首先從四等獎(jiǎng)開(kāi)始抽取四人,三等獎(jiǎng)抽取三人,二

9、等獎(jiǎng)抽取二人,一等獎(jiǎng)一人,特等獎(jiǎng)一人。 </p><p><b>  抽獎(jiǎng)功能流程圖</b></p><p><b>  四、系統(tǒng)測(cè)試</b></p><p><b>  程序測(cè)試如下圖:</b></p><p><b>  五、總結(jié)</b></p

10、><p>  在設(shè)計(jì)程序時(shí),不能妄想一次就將整個(gè)程序設(shè)計(jì)好,反復(fù)修改、不斷改進(jìn)是程序設(shè)計(jì)的必經(jīng)之路。在設(shè)計(jì)課程過(guò)程中遇到問(wèn)題是很正常的,但我們應(yīng)該將每次遇到的問(wèn)題記錄下來(lái),并分析清楚,以免下次再碰到同樣的問(wèn)題的課程設(shè)計(jì)結(jié)束了,但是從中學(xué)到的知識(shí)會(huì)讓我受益終身。發(fā)現(xiàn)、提出、分析、解決問(wèn)題和實(shí)踐能力的提高都會(huì)受益于我在以后的學(xué)習(xí)、工作和生活中。設(shè)計(jì)過(guò)程,好比是我們?nèi)祟?lèi)成長(zhǎng)的歷程,常有一些不如意,但畢竟這是第一次做,難免會(huì)

11、遇到各種各樣的問(wèn)題。在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處,對(duì)以前所學(xué)過(guò)的知識(shí)理解得不夠深刻,掌握得不夠牢固。我們通過(guò)查閱大量有關(guān)資料,使自己學(xué)到了不少知識(shí),也經(jīng)歷了不少艱辛,但收獲同樣巨大。通過(guò)這次課程設(shè)計(jì)我也發(fā)現(xiàn)了自身存在的不足之處,雖然感覺(jué)理論上已經(jīng)掌握,但在運(yùn)用到實(shí)踐的過(guò)程中仍有意想不到的困惑,經(jīng)過(guò)一番努力才得以解決。這也激發(fā)了我今后努力學(xué)習(xí)的興趣,我想這將對(duì)我以后的學(xué)習(xí)產(chǎn)生積極的影響。通過(guò)這次設(shè)計(jì),我懂得了學(xué)習(xí)的重要性,了解到理論

12、知識(shí)與實(shí)踐相結(jié)合的重要意義,學(xué)會(huì)了堅(jiān)持、耐心和努力。</p><p><b>  附件</b></p><p><b>  六、程序代碼</b></p><p>  import java.awt.*;</p><p>  import java.awt.event.*;</p>&l

13、t;p>  import javax.swing.*;</p><p>  import java.io.*;</p><p>  import java.util.*;</p><p>  public class ChooseAward extends JFrame</p><p><b>  {</b><

14、;/p><p><b>  /**</b></p><p><b>  * </b></p><p><b>  */</b></p><p><b>  //系統(tǒng)自動(dòng)生成</b></p><p>  private static fi

15、nal long serialVersionUID = 7510608124693852355L;</p><p>  JButton b_start = new JButton("開(kāi)始");</p><p>  JButton b_stop = new JButton("停止");</p><p>  JPanel p_no

16、rth=new JPanel();</p><p>  JPanel p_center=new JPanel();</p><p>  JPanel p_south=new JPanel();</p><p><b>  //菜單欄</b></p><p>  JMenuBar menubar=new JMenuBar(

17、);</p><p><b>  //菜單項(xiàng)</b></p><p>  JMenu fileMenu=new JMenu("文件");</p><p>  JMenu setMenu=new JMenu("設(shè)置");</p><p>  JMenu aboutMenu=new J

18、Menu("關(guān)于");</p><p><b>  /*</b></p><p><b>  * 菜單子項(xiàng)</b></p><p><b>  */</b></p><p>  private JMenuItem[] filem={new JMenuItem

19、("選擇文件"),new JMenuItem("另存為.."),</p><p>  new JMenuItem("保存"),new JMenuItem("退出")</p><p><b>  };</b></p><p>  JTextField t_identN

20、umber = new JTextField(); // 身份證號(hào)的文本域</p><p>  Vector v_identNumber = new Vector(); // 存放讀取出來(lái)的身份證的號(hào)碼</p><p>  Vector v_name = new Vector(); // 存放讀取出來(lái)的人的姓名</p><p>  Vector v_printide

21、nt = new Vector(); // 存放中獎(jiǎng)人的身份證號(hào)碼</p><p>  JLabel l_information = new JLabel();</p><p>  JLabel l_identNumber = new JLabel();</p><p>  JLabel l_sysinformation = new JLabel("系統(tǒng)信

22、息:");</p><p>  JFileChooser filechooser = new JFileChooser(); // 文件選擇器</p><p>  //選擇隨機(jī)數(shù)的線(xiàn)成</p><p>  public ChooseThread awardThread = null;</p><p>  int chooseTime

23、 = 0; // 按下停止按鈕的次數(shù),也就是抽獎(jiǎng)的次數(shù)</p><p>  public ChooseAward()</p><p><b>  {</b></p><p>  super("小型抽獎(jiǎng)系統(tǒng)");</p><p>  t_identNumber.setEditable(false);&l

24、t;/p><p><b>  /*</b></p><p>  * 1.4以后的JDK可以不用Container</p><p><b>  */</b></p><p>  Container contentPane = getContentPane();</p><p>  

25、//BorderLayout布局管理器,東,南,西,北</p><p>  contentPane.setLayout(new BorderLayout());</p><p><b>  /*</b></p><p>  * 給幾個(gè)按鈕和子菜單添加監(jiān)聽(tīng)器</p><p><b>  */</b>&

26、lt;/p><p>  filem[0].addActionListener(new ActionListener()</p><p><b>  {</b></p><p>  // 注冊(cè)加載事件的監(jiān)聽(tīng)器</p><p>  public void actionPerformed(ActionEvent e)</p&

27、gt;<p><b>  {</b></p><p>  b_loadident_ActionPerformed(e);</p><p><b>  }</b></p><p><b>  });</b></p><p>  b_start.addActionLi

28、stener(new ActionListener()</p><p>  { </p><p>  // 注冊(cè)開(kāi)始事件的監(jiān)聽(tīng)器</p><p>  public void actionPerformed(ActionEvent e)</p><p><b>  {</b></p><

29、;p>  b_start_ActionPerformed(e);</p><p><b>  }</b></p><p><b>  });</b></p><p>  b_stop.addActionListener(new ActionListener()</p><p>  {// 注冊(cè)

30、停止事件的監(jiān)聽(tīng)器</p><p>  public void actionPerformed(ActionEvent e)</p><p><b>  {</b></p><p>  b_stop_ActionPerformed(e);</p><p><b>  }</b></p>

31、<p><b>  });</b></p><p>  filem[2].addActionListener(new ActionListener()</p><p>  {// 注冊(cè)打印事件的監(jiān)聽(tīng)器</p><p>  public void actionPerformed(ActionEvent e)</p><

32、;p><b>  {</b></p><p>  b_printaward_ActionPerformed(e);</p><p><b>  }</b></p><p><b>  });</b></p><p>  addWindowListener(new Wind

33、owAdapter()</p><p><b>  {</b></p><p>  public void windowClosing(WindowEvent e)</p><p><b>  {</b></p><p>  System.exit(0);</p><p>&

34、lt;b>  }</b></p><p><b>  });</b></p><p>  //將菜單子項(xiàng)加入菜單中</p><p>  for(int i=0;i<filem.length;i++)</p><p><b>  {</b></p><p&g

35、t;  fileMenu.add(filem[i]);</p><p>  //加入分隔線(xiàn),為了美觀</p><p>  fileMenu.addSeparator();</p><p><b>  }</b></p><p>  //將菜單條加入frame中</p><p>  menubar.

36、add(fileMenu);</p><p>  menubar.add(setMenu);</p><p>  menubar.add(aboutMenu);</p><p>  setJMenuBar(menubar);</p><p>  /*將p_north設(shè)計(jì)為一個(gè)狀態(tài)欄,顯示一些操作過(guò)程中的信息</p><p&

37、gt;  * 創(chuàng)建一個(gè)左對(duì)齊方式的流布局</p><p><b>  */</b></p><p>  p_south.setLayout(new FlowLayout(FlowLayout.LEFT));</p><p>  l_information.setForeground(Color.blue);</p><p&g

38、t;  p_south.add(l_sysinformation);</p><p>  p_south.add(l_information);</p><p>  contentPane.add(p_south,BorderLayout.SOUTH);</p><p><b>  /*</b></p><p>  *

39、設(shè)置的一些顯示方式,字體,大小等,為了盡量美觀一點(diǎn)</p><p><b>  */</b></p><p>  Font xuehao=new Font("null",Font.PLAIN,30);</p><p>  l_identNumber.setFont(xuehao);</p><p>&

40、lt;b>  //字體的居中對(duì)齊</b></p><p>  l_identNumber.setHorizontalAlignment(0);</p><p>  l_identNumber.setText("手機(jī)號(hào)");</p><p>  Font number=new Font("null",Font.

41、BOLD,30);//粗體</p><p>  t_identNumber.setFont(number);</p><p><b>  //設(shè)置字體顏色</b></p><p>  t_identNumber.setForeground(Color.red);</p><p>  t_identNumber.setHo

42、rizontalAlignment(0);</p><p>  //給上面的jpanel設(shè)置布局</p><p>  p_north.setLayout(new GridLayout(2,1));</p><p>  p_north.add(l_identNumber);</p><p>  p_north.add(t_identNumber

43、);</p><p>  contentPane.add(p_north,BorderLayout.NORTH);</p><p>  //給中間的jpanel 設(shè)置布局</p><p>  p_center.setLayout(new GridLayout(1,2,10,0));</p><p>  p_center.add(b_start

44、);</p><p>  p_center.add(b_stop);</p><p>  contentPane.add(p_center,BorderLayout.CENTER);</p><p><b>  }</b></p><p><b>  /*</b></p><p&

45、gt;  * 加載按鈕事件方法</p><p><b>  */</b></p><p>  public void b_loadident_ActionPerformed(ActionEvent e)</p><p><b>  {</b></p><p>  int k = 0;</p&g

46、t;<p>  chooseTime = 0;</p><p>  //從字符輸入流中讀取文本,緩沖各個(gè)字符,從而提供字符、數(shù)組和行的高效讀取</p><p>  BufferedReader reader = null;</p><p>  //此方法會(huì)返回一個(gè)int值</p><p>  int i = filechoose

47、r.showOpenDialog(this); // 顯示打開(kāi)文件對(duì)話(huà)框</p><p><b>  /*</b></p><p>  * 確實(shí)所選擇的是對(duì)話(huà)框上的確定按鈕</p><p><b>  */</b></p><p>  if (i == JFileChooser.APPROVE_OP

48、TION)</p><p>  { // 點(diǎn)擊對(duì)話(huà)框中打開(kāi)選項(xiàng)</p><p>  File f = filechooser.getSelectedFile(); // 得到所選擇的文件</p><p><b>  try</b></p><p><b>  {</b></p><

49、;p>  l_information.setText("數(shù)據(jù)加載中,請(qǐng)稍等...");</p><p><b>  //讀取字符流</b></p><p>  reader = new BufferedReader(new FileReader(f));</p><p><b>  //循環(huán)讀取</b&

50、gt;</p><p>  while (true)</p><p><b>  {</b></p><p><b>  //讀取一個(gè)文本行</b></p><p>  String data = reader.readLine();</p><p>  System.out

51、.println(data);//開(kāi)發(fā)時(shí)候測(cè)試用</p><p>  // 讀完了數(shù)據(jù)</p><p>  if (data == null)</p><p><b>  {</b></p><p>  l_information.setTex

52、t("數(shù)據(jù)加載完成!");</p><p><b>  break;</b></p><p><b>  }</b></p><p>  //通過(guò)“-”這個(gè)符號(hào)將 字符串分離為兩部分,再存放到向量里面</p><p>  Vector v = this.apart(data, &

53、quot;-");</p><p>  //System.out.println(data);//開(kāi)發(fā)時(shí)候測(cè)試用</p><p>  if (v == null)</p><p><b>  {</b></p><p>  l_information.setText("數(shù)據(jù)格式不正確,請(qǐng)重新加載!&q

54、uot;);</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  /*</b></p><p>  * 分別將分離開(kāi)來(lái)的手機(jī)號(hào)碼,和姓名分別放入兩個(gè)可變向量當(dāng)中</p><p>  *

55、這里應(yīng)該使用泛型,由于本人還沒(méi)有熟練掌握泛型,姑且放之</p><p><b>  * </b></p><p><b>  * </b></p><p>  * 捕獲異常,看是否出現(xiàn)了格式錯(cuò)誤,因?yàn)橐话愠霈F(xiàn)了格式錯(cuò)誤</p><p>  * 這兩條語(yǔ)句都會(huì)發(fā)生無(wú)法取得元素的錯(cuò)誤</p>

56、<p><b>  */</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  v_identNumber.add(k, v.elementAt(0)); </p><p>  v_name.add(k,

57、v.elementAt(1)); </p><p><b>  k++;</b></p><p><b>  }</b></p><p>  catch(Exception e4)</p><p><b>  {</b></p><p>  System

58、.out.println("格式中沒(méi)有分隔符號(hào)出現(xiàn)的錯(cuò)誤");</p><p>  //JOptionPane.showMessageDialog(this, "導(dǎo)入的數(shù)據(jù)格式錯(cuò)誤!");</p><p>  l_information.setText("導(dǎo)入的數(shù)據(jù)格式錯(cuò)誤!");</p><p><

59、b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  } catch (Exception ex)</p><p><b>  {</b></p><p>  

60、ex.printStackTrace(); // 輸出出錯(cuò)信息</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  /*</b></p><

61、p><b>  * 啟動(dòng)按鈕的事件</b></p><p><b>  */</b></p><p>  public void b_start_ActionPerformed(ActionEvent e)</p><p><b>  {</b></p><p>  //

62、判斷存儲(chǔ)兩個(gè)標(biāo)記的向量中是否為空</p><p>  if (v_identNumber.size() <= 0 || v_name.size() <= 0)</p><p><b>  {</b></p><p>  l_information.setText("數(shù)據(jù)沒(méi)有加載,請(qǐng)加載數(shù)據(jù)!");</p&g

63、t;<p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  if (chooseTime > 11)</p><p><b>  {</b></p&

64、gt;<p>  l_information.setText("抽獎(jiǎng)結(jié)束,若要再進(jìn)行一次須重新啟動(dòng)程序!");</p><p><b>  } </b></p><p>  else//執(zhí)行....</p><p><b>  {</b></p><p>  awa

65、rdThread = new ChooseThread(this);</p><p>  awardThread.changeflag_start();</p><p>  l_information.setText("將產(chǎn)生:特(1名),一(1名),二(2名),三(3名)等獎(jiǎng),四(4名)等獎(jiǎng)");</p><p>  l_identNumber

66、.setText("選取中...");</p><p>  b_start.setEnabled(false);</p><p>  b_stop.setEnabled(true);</p><p><b>  }</b></p><p><b>  }</b></p>

67、;<p><b>  }</b></p><p><b>  /*</b></p><p><b>  * 暫停按鈕的事件</b></p><p><b>  */</b></p><p>  public void b_stop_Actio

68、nPerformed(ActionEvent e)</p><p><b>  {</b></p><p>  //將跳轉(zhuǎn)的數(shù)字置于停止?fàn)顟B(tài)</p><p>  awardThread.changeflag_stop();</p><p>  String awardmessage = "";<

69、/p><p>  chooseTime++;//第幾次按停止按鈕</p><p>  String str_name = "";</p><p>  String message="";</p><p><b>  /*</b></p><p>  * 根據(jù)第幾

70、次來(lái)按停止按鈕來(lái)決定是產(chǎn)生幾等獎(jiǎng)</p><p><b>  */</b></p><p>  switch (chooseTime)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  cas

71、e 2: </p><p><b>  case 3:</b></p><p>  case 4://按前三次都是產(chǎn)生三等獎(jiǎng) </p><p>  //尋找停止在號(hào)碼框中的數(shù)字,是對(duì)應(yīng)的的存放號(hào)碼的向量中的第幾個(gè)</p><p>  for (int k = 0; k < v_ident

72、Number.size(); k++)</p><p><b>  {</b></p><p>  //找到了對(duì)應(yīng)的號(hào)碼</p><p>  if ((t_identNumber.getText()).equals(v_identNumber.elementAt(k)))</p><p><b>  {<

73、/b></p><p>  //取出這個(gè)號(hào)碼對(duì)應(yīng)的名字</p><p>  str_name = (String) v_name.elementAt(k);</p><p>  //為防止下次抽的時(shí)候再抽到相同的號(hào)碼,所以把它們從向量中移除掉</p><p>  v_identNumber.removeElementAt(k);<

74、/p><p>  v_name.removeElementAt(k);</p><p>  break;//跳出循環(huán)</p><p><b>  }</b></p><p><b>  }</b></p><p>  l_identNumber.setText("四等獎(jiǎng)

75、");</p><p>  b_start.setText("繼續(xù)");</p><p>  //這是要輸出到文本文件的信息</p><p>  awardmessage = "四等獎(jiǎng) " + t_identNumber.getText() + str_name + "\r\n";</p&

76、gt;<p>  //將要打印的文本信息先存放到一個(gè)可變向量中</p><p>  v_printident.addElement(awardmessage);</p><p>  message = "第"+chooseTime+"位四等獎(jiǎng)得主為: "+str_name;</p><p>  JOptionP

77、ane.showMessageDialog(this, message);</p><p><b>  break;</b></p><p><b>  case 5:</b></p><p><b>  case 6:</b></p><p><b>  case

78、7:</b></p><p>  for (int k = 0; k < v_identNumber.size(); k++)</p><p><b>  {</b></p><p>  //找到了對(duì)應(yīng)的號(hào)碼</p><p>  if ((t_identNumber.getText()).equals(

79、v_identNumber.elementAt(k)))</p><p><b>  {</b></p><p>  //取出這個(gè)號(hào)碼對(duì)應(yīng)的名字</p><p>  str_name = (String) v_name.elementAt(k);</p><p>  //為防止下次抽的時(shí)候再抽到相同的號(hào)碼,所以把它們從向

80、量中移除掉</p><p>  v_identNumber.removeElementAt(k);</p><p>  v_name.removeElementAt(k);</p><p>  break;//跳出循環(huán)</p><p><b>  }</b></p><p><b>  

81、}</b></p><p>  l_identNumber.setText("三等獎(jiǎng)");</p><p>  b_start.setText("繼續(xù)");</p><p>  //這是要輸出到文本文件的信息</p><p>  awardmessage = "三等獎(jiǎng) "

82、; + t_identNumber.getText() + str_name + "\r\n";</p><p>  //將要打印的文本信息先存放到一個(gè)可變向量中</p><p>  v_printident.addElement(awardmessage);//系統(tǒng)提示說(shuō)要使用泛型,本人不會(huì)用,以后再研究</p><p>  int seria

83、l1=chooseTime-4;</p><p>  message = "第"+serial1+"位三等獎(jiǎng)得主為: "+str_name;</p><p>  JOptionPane.showMessageDialog(this, message);</p><p><b>  break;</b>&

84、lt;/p><p>  case 8: </p><p><b>  case 9:</b></p><p>  for (int k = 0; k < v_identNumber.size(); k++)</p><p><b>  {</b></p><p>

85、;  if (t_identNumber.getText().equals(v_identNumber.elementAt(k)))</p><p><b>  {</b></p><p>  str_name = (String) v_name.elementAt(k);</p><p>  v_identNumber.removeEleme

86、ntAt(k);</p><p>  v_name.removeElementAt(k);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  l_iden

87、tNumber.setText("二等獎(jiǎng)");</p><p>  b_start.setText("繼續(xù)");</p><p>  awardmessage = "二等獎(jiǎng) " + t_identNumber.getText() + str_name + "\r\n";</p><p>

88、;  v_printident.addElement(awardmessage);</p><p>  int serial=chooseTime-7;//第幾位得主,排名序號(hào)</p><p>  message = "第"+serial+"位二等獎(jiǎng)得主為: "+str_name;</p><p>  JOptionPane

89、.showMessageDialog(ChooseAward.this, message);</p><p>  break; </p><p><b>  case 10:</b></p><p>  for(int k=0;k<v_identNumber.size();k++)</p><p&

90、gt;<b>  {</b></p><p>  if(t_identNumber.getText().equals(v_identNumber.elementAt(k)))</p><p><b>  {</b></p><p>  str_name=(String) v_name.elementAt(k);</p

91、><p>  v_identNumber.removeElementAt(k);</p><p>  v_name.removeElementAt(k);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>

92、  }</b></p><p>  l_identNumber.setText("一等獎(jiǎng)");</p><p>  awardmessage = "一等獎(jiǎng) " + t_identNumber.getText() + str_name + "\r\n";</p><p>  v_printide

93、nt.addElement(awardmessage);</p><p><b>  /*</b></p><p>  * 第幾位得主,排名序號(hào),其實(shí)沒(méi)必要這樣寫(xiě),因?yàn)楸緛?lái)就這一名</p><p>  * 現(xiàn)在這樣寫(xiě)的作用是為我以后改進(jìn)這個(gè)程序(可以自主選擇產(chǎn)生幾名得獎(jiǎng)主)</p><p><b>  * 的時(shí)

94、候做好準(zhǔn)備</b></p><p><b>  */</b></p><p>  //serial=chooseTime-5;</p><p>  //message = "第"+serial+"位二等獎(jiǎng)得主為: "+str_name;</p><p>  messa

95、ge = "一等獎(jiǎng)得主為: "+str_name;</p><p>  JOptionPane.showMessageDialog(ChooseAward.this, message);</p><p><b>  break;</b></p><p><b>  case 11:</b></p

96、><p>  for (int k = 0; k < v_identNumber.size(); k++)</p><p><b>  {</b></p><p>  if (t_identNumber.getText().equals(v_identNumber.elementAt(k)))</p><p><

97、b>  {</b></p><p>  str_name = (String) v_name.elementAt(k);</p><p>  v_identNumber.removeElementAt(k);</p><p>  v_name.removeElementAt(k);</p><p><b>  br

98、eak;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  l_identNumber.setText("特等獎(jiǎng)");</p><p>  awardmessage = "特等獎(jiǎng)" + t_

99、identNumber.getText() + str_name + "\r\n";</p><p>  v_printident.addElement(awardmessage);</p><p>  message = "特等獎(jiǎng)得主為: "+str_name;</p><p>  JOptionPane.showMess

100、ageDialog(ChooseAward.this, message);</p><p>  l_information.setText("此次抽獎(jiǎng)全部結(jié)束,保存抽獎(jiǎng)結(jié)果!");</p><p><b>  break;</b></p><p><b>  default:</b></p>

101、<p>  JOptionPane.showMessageDialog(ChooseAward.this, "抽獎(jiǎng)已經(jīng)結(jié)束");</p><p>  b_start.setText("開(kāi)始");</p><p>  awardThread.changeflag_stop();</p><p><b> 

102、 break;</b></p><p><b>  }</b></p><p>  b_start.setEnabled(true);</p><p>  b_stop.setEnabled(false);</p><p><b>  }</b></p><p>

103、<b>  /*</b></p><p><b>  * 輸出按鈕的事件</b></p><p><b>  */</b></p><p>  public void b_printaward_ActionPerformed(ActionEvent e)</p><p><

104、;b>  {</b></p><p><b>  try</b></p><p><b>  {</b></p><p>  FileOutputStream fs_out = new FileOutputStream("result.txt");</p><p&g

105、t;  DataOutputStream out = new DataOutputStream(fs_out);</p><p>  for (int i = 0; i < v_printident.size(); i++)</p><p><b>  {</b></p><p>  System.out.println(v_printi

106、dent.elementAt(i));//測(cè)試用</p><p>  out.writeUTF((String) v_printident.elementAt(i) + "\r\n");</p><p><b>  }</b></p><p>  out.close();</p><p>  l_in

107、formation.setText("文件輸出成功!保存在當(dāng)前目錄下..");</p><p>  } catch (FileNotFoundException fe)</p><p><b>  {</b></p><p>  System.err.println(fe);</p><p>  }

108、catch (IOException ioe)</p><p><b>  {</b></p><p>  System.err.println(ioe);</p><p><b>  }</b></p><p><b>  }</b></p><p>

109、<b>  /*</b></p><p>  * 定義一個(gè)方法,將號(hào)碼和名字分離開(kāi)來(lái)</p><p><b>  */</b></p><p>  //一個(gè)是源數(shù)據(jù)文件,一個(gè)是分隔符號(hào)</p><p>  public Vector apart(String src, String separato

110、r)</p><p><b>  {</b></p><p>  //使用了泛型,用可變向量來(lái)存放等到的標(biāo)記</p><p>  Vector<String> v = new Vector<String>();</p><p><b>  /*</b></p>

111、<p>  * string tokenizer 類(lèi)允許應(yīng)用程序?qū)⒆址纸鉃闃?biāo)記,祥見(jiàn)api文檔</p><p><b>  */</b></p><p>  //src是源字符串,separator是把src分隔為幾段的標(biāo)記</p><p>  StringTokenizer st = new StringTokenizer(sr

112、c, separator);</p><p>  //測(cè)試此 tokenizer 的字符串中是否還有更多的可用標(biāo)記</p><p>  while (st.hasMoreTokens())</p><p><b>  {</b></p><p>  //返回此 string tokenizer 的下一個(gè)標(biāo)記,并將它加入到

113、可變向量中存放</p><p>  v.addElement(st.nextToken());</p><p><b>  }</b></p><p>  return v;//返回向量</p><p><b>  }</b></p><p><b>  /*<

114、;/b></p><p><b>  * 程序的入口</b></p><p><b>  */</b></p><p>  public static void main(String[] args)</p><p><b>  {</b></p><

115、p>  //根據(jù)經(jīng)驗(yàn),這條語(yǔ)句只能在第一行</p><p>  JFrame.setDefaultLookAndFeelDecorated(true);</p><p>  ChooseAward award = new ChooseAward();</p><p>  award.setSize(333, 209);</p><p>

116、  award.setLocationRelativeTo(null);//居中顯示</p><p>  award.setVisible(true);</p><p>  award.setAlwaysOnTop(true);//置頂</p><p>  award.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&l

117、t;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  /*</b></p><p>  * 定義的線(xiàn)程類(lèi),該線(xiàn)呈是循環(huán)的顯示號(hào)碼</p><p><b>  */</b></

118、p><p>  class ChooseThread extends Thread</p><p><b>  {</b></p><p>  private boolean runFlag = true;//決定此線(xiàn)程是否運(yùn)行的標(biāo)記</p><p>  //需要該對(duì)象來(lái)讀取文本框字段,不用創(chuàng)建它,申明下就好</p&g

119、t;<p>  private ChooseAward chooseAward = null;</p><p>  //創(chuàng)建一個(gè)新的隨機(jī)數(shù)生成器</p><p>  Random randomNumber = new Random();</p><p>  public ChooseThread(Object obj)</p><p

120、><b>  {</b></p><p><b>  start();</b></p><p>  chooseAward = (ChooseAward) obj;</p><p><b>  }</b></p><p>  public void start()<

121、/p><p><b>  {</b></p><p>  runFlag = false;</p><p>  super.start();</p><p><b>  }</b></p><p>  public void changeflag_start()</p>

122、;<p><b>  {</b></p><p>  runFlag = true;</p><p><b>  }</b></p><p>  public void changeflag_stop()</p><p><b>  {</b></p>

123、<p>  runFlag = false;</p><p><b>  }</b></p><p><b>  /*</b></p><p>  *實(shí)現(xiàn)文本框滾動(dòng)的效果</p><p><b>  */</b></p><p>  pub

124、lic void run()</p><p><b>  {</b></p><p>  while (runFlag)</p><p><b>  {</b></p><p><b>  /*</b></p><p>  * 返回一個(gè)偽隨機(jī)數(shù),它是從此

125、隨機(jī)數(shù)生成器的序列中取出的</p><p>  * 、在 0(包括)和指定值(不包括)之間均勻分布的 int值</p><p><b>  */</b></p><p>  //返回向量中存儲(chǔ)了幾個(gè)號(hào)碼的隨便一個(gè)序號(hào)</p><p>  int num = randomNumber.nextInt(chooseAward

126、.v_identNumber.size());</p><p>  //顯示那個(gè)選種的序號(hào)對(duì)應(yīng)的號(hào)碼</p><p>  chooseAward.t_identNumber.setText((String) chooseAward.v_identNumber</p><p>  .elementAt(num));</p><p><b&

127、gt;  try</b></p><p><b>  {</b></p><p>  sleep(50);</p><p><b>  } </b></p><p>  catch (Exception e)</p><p><b>  {</b&

128、gt;</p><p>  e.printStackTrace();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b>&l

溫馨提示

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

評(píng)論

0/150

提交評(píng)論