版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医学影像诊断学部主任领导力与团队培养
- 医疗卫生行业创新实践
- 土木基础与工程 7
- 中药足浴疗法在手脚冰冷中的应用
- 移动医疗健康服务的挑战与机遇
- 医学检验技术在疾病诊断与治疗中的应用研究
- 2026年智能按摩太阳穴器项目商业计划书
- 2026年智能遮阳控制器项目营销方案
- 医学教育与科研方法
- 医学人文素养与医患沟通技巧
- 2025年压力容器作业证理论全国考试题库(含答案)
- 2025四川成都农商银行招聘10人笔试备考题库及答案解析
- 中职第一学年(会计)会计基础2026年阶段测试题及答案
- 室外长廊合同范本
- 2025年资产清查自查报告
- 2025年浙江省杭州市辅警考试真题及答案
- 山东名校考试联盟2025年12月高三年级阶段性检测英语试卷(含答案)
- 建筑企业工伤预防培训体系
- 团干部培训课件
- 2025年智能配电系统行业分析报告及未来发展趋势预测
- 《中法高标准产品“蓝天标志(blue sky sign)”认证技术规范》
评论
0/150
提交评论