《JAVA课程设计-闹钟的设计与实现--11计科本01班--张慧.doc》由会员分享,可在线阅读,更多相关《JAVA课程设计-闹钟的设计与实现--11计科本01班--张慧.doc(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateJAVA课程设计-闹钟的设计与实现-11计科本01班-张慧JAVA课程设计-闹钟的设计与实现-11计科本01班-张慧 西 安 思 源 学 院 Java 课程设计报告 课程名称: JAVA语言程序设计 设计题目: 简单小闹钟的设计与实现 学 院: 电子信息工程学院 专业班级: 计算机科学与技术统本01班学 号 : 111102020103 姓 名: 张慧 小组成员 :
2、谢莉萍 时 间 : 2013年6月29日 目 录一、项目设计 1.1设计题目2 1.2设计思路2 1.3设计内容 2 1.3.1 Clock类的UML简图2 1.3.2 各方法功能描述列表 2二、 算法描述 2.1 基本算法描述 3 2.2 主要模块算法描述 3 2.2.1当前动态时间的显示的设计与实现4 2.2.2闹钟功能的实现 4 2.2.3闹铃功能的实现 5 三、程序源代码6四、运行结果截图9五、总结10闹钟的设计与实现一、项目设计 1.1题目描述:结合JAVA图形界面的知识设计一个简单的小闹钟 1.2设计思路百度下载的闹钟程序设计,参考别人的程序,通过改编,并添加一些自己的程序,最终实
3、现小闹钟的运行.本次设计要求画出时钟的面板,动态的显示当前时间,可设定或解除闹钟时间,并提供闹钟服务相应的文字提示功能,可以自己选择闹钟提示声音提示功能,并在闹钟设定的输入框中有简单的排错功能。 1.3设计内容 1.3.1画出Clock类的UML简图Clock类中的变量ri, shi, fen, miao, dangqian, guanji: JLabelqueding, dakai : JButtonmusic, RI, SHI, FEN, MIAO : JTextFieldh = 0, f = 0, m = 0, r = 0 : intFo, foo : booleansoumd1 : p
4、ublic AudioClipClock类中的函数public clock()public static void main(String agrs)public void run() 1.3.2各方法功能描述列表Clock类方法功能Main()执行main函数Clock()Clock类的构造函数,用于对时钟界面的初始化Run()用于对时钟的动态显示的执行,并判断是否设定了闹钟时间,若当前时间与设定的时间相等则播放选定的音乐二、算法描述 2.1基本算法描述 本程序先是在框架中新建了一个容器,然后用GridLayout类对面板进行划分,程序引入java.util.Date来显示当前时间,并用一个
5、永真循环,来对当前时间显示的更新,引入java.io.File来实现对文件的读写操作,程序设计了一个选择按钮,用来选择文件,并且声明只能选择,WAU、MID的文件,引入用java.applet.Applet 来播放音乐文件,用getText()函数获取输入的闹钟设定时间,并永真循环和当前的时间进行对比,若相等则播放音乐,若不相等则显示离目标设定时间的差距。 2.2主要模块算法描述2.2.1当前动态时间的显示的设计与实现。 (1)功能:可以实时的更新显示系统完整的时间 (2)算法:引入java.util.Date用while循环更新时间 (3)代码:public void run() while
6、 (true) Date now = new Date();/设置一个新的当前时间对象。 dangqian.setText(当前时间: + now.toString();/显示当前的时间 .2.2.2音乐文件的选择。 (1)功能:用打开按钮实现对本地音乐文件的选择(2)算法:引入java.io.File和.MalformedURLException来实现对音乐本地音乐文件的选择。 (3)代码: dakai.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) JFileChoo
7、ser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); fileChooser.setCurrentDirectory(new File(.); / 设置文件选择器当前目录 fileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() public boolean accept(File file) / 可接受的文件类型 String name = file.get
8、Name().toLowerCase(); return name.endsWith(.wav) | name.endsWith(.au) | file.isDirectory(); public String getDescription() return 音乐文件(*.wav,*.au); );2.2.3闹铃功能的实现(1)功能:到达设定闹钟时间,会有输出文字及产生音乐。(2)算法:读入Clock类中的时间,并设置一个Timer,每隔0.1秒进行比对,如果字符串之间匹配就显示(3)代码: public void run() if (fo) foo = true; RI.setEditabl
9、e(false); SHI.setEditable(false); FEN.setEditable(false); MIAO.setEditable(false); queding.setText(关闭); /关闭闹钟设定 SimpleDateFormat ri = new SimpleDateFormat(dd); SimpleDateFormat shi = new SimpleDateFormat(HH); SimpleDateFormat fen = new SimpleDateFormat(mm); SimpleDateFormat miao = new SimpleDateForm
10、at(ss); riqi = Integer.parseInt(ri.format(now); shizhong = Integer.parseInt(shi.format(now); fenzhong = Integer.parseInt(fen.format(now); miaozhong = Integer.parseInt(miao.format(now); if (riqi = r & shizhong = h & fenzhong = f & miaozhong = m) try soumd1 = Applet.newAudioClip(new File(music.getText
11、() .toURL(); / 播放音乐 soumd1.loop(); fo = false; foo = false; catch (MalformedURLException e) e.printStackTrace(); try Thread.sleep(1000); catch (InterruptedException ie) 三、程序源代码import java.applet.Applet;import java.applet.AudioClip;import java.awt.Container;import java.awt.GridLayout;import java.awt.
12、event.*;import java.io.File;import .MalformedURLException;import java.text.SimpleDateFormat;import java.util.Date;import javax.swing.*;class clock extends JFrame implements RunnableJLabel ri, shi, fen, miao, dangqian, guanji;JButton queding, dakai;JTextField music, RI, SHI, FEN, MIAO;int h = 0, f =
13、0, m = 0, r = 0;boolean fo = false, foo = false;public AudioClip soumd1;int riqi, shizhong, fenzhong, miaozhong;public clock() Container c = getContentPane(); c.setLayout(new GridLayout(4, 1); JPanel jp = new JPanel(); dangqian = new JLabel(); jp.add(dangqian); c.add(jp); JPanel jp3 = new JPanel();
14、guanji = new JLabel(离闹铃时间:0日0时0分0秒); jp3.add(guanji); c.add(jp3); JPanel jp1 = new JPanel(); music = new JTextField(20); dakai = new JButton(选择闹铃音乐); jp1.add(music); jp1.add(dakai); c.add(jp1); ri = new JLabel(日); RI = new JTextField(4); shi = new JLabel(时); SHI = new JTextField(4); fen = new JLabel
15、(分); FEN = new JTextField(4); miao = new JLabel(秒); MIAO = new JTextField(4); JPanel jp2 = new JPanel(); jp2.add(ri); jp2.add(RI); jp2.add(shi); jp2.add(SHI); jp2.add(fen); jp2.add(FEN); jp2.add(miao); jp2.add(MIAO); queding = new JButton(确定); jp2.add(queding); c.add(jp2); setSize(400, 160); setVisi
16、ble(true); dakai.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); fileChooser.setCurrentDirectory(new File(.); / 设置文件选择器当前目录 fileChooser.setFileFi
17、lter(new javax.swing.filechooser.FileFilter() public boolean accept(File file) String name = file.getName().toLowerCase(); return name.endsWith(.wav) | name.endsWith(.au) | file.isDirectory(); public String getDescription() return 音乐文件(*.wav,*.au); ); if (fileChooser.showOpenDialog(clock.this) = JFi
18、leChooser.APPROVE_OPTION) String fileName = fileChooser.getSelectedFile() .getAbsolutePath(); music.setText(fileName); ); queding.addActionListener(new ActionListener() public void actionPerformed(ActionEvent event) if (queding.getText().equals(确定) try h = Integer.parseInt(SHI.getText(); f = Integer
19、.parseInt(FEN.getText(); m = Integer.parseInt(MIAO.getText(); if (1 = h & h = 31 & 0 = h & h = 23 & 0 = f & f = 59 & 0 = m & m = 59) Date now = new Date(); SimpleDateFormat ri = new SimpleDateFormat(dd); if (RI.getText() = null | RI.getText().equals() r = Integer.parseInt(ri.format(now); RI.setText(
20、ri.format(now); else r = Integer.parseInt(RI.getText(); fo = true; else JOptionPane.showMessageDialog(null, 输入时间错误); catch (Exception e) JOptionPane.showMessageDialog(null, 请输入正确的时间); else try fo = false; RI.setEditable(true); SHI.setEditable(true); FEN.setEditable(true); MIAO.setEditable(true); que
21、ding.setText(确定); soumd1.stop(); catch(Exception E) System.out.println(关闭); );public static void main(String agrs) clock s = new clock(); Thread t1 = new Thread(s); t1.start(); s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public void run() while (true) Date now = new Date(); dangqian.setText(当前时
22、间: + now.toString(); if (foo) if (h = 0|h - shizhong0) h += 24; r = r - 1; if (f = 0|f - fenzhong0) f += 60; h -= 1; if (m = 0|m - miaozhong0) m += 60; f -= 1; guanji.setText(离闹铃时间: + (r - riqi) + 日 + (h - shizhong) + 时 + (f - fenzhong) + 分 + (m - miaozhong-1) + 秒); if(rriqi) foo=false; guanji.setTe
23、xt(离闹铃时间:0日0时0分0秒); else if(r=riqi&hshizhong) foo=false; guanji.setText(离闹铃时间:0日0时0分0秒); else if(r=riqi&h=shizhong&ffenzhong) foo=false; guanji.setText(离闹铃时间:0日0时0分0秒); else if(r=riqi&h=shizhong&f=fenzhong&mmiaozhong) foo=false; guanji.setText(离闹铃时间:0日0时0分0秒); if (fo) foo = true; RI.setEditable(fals
24、e); SHI.setEditable(false); FEN.setEditable(false); MIAO.setEditable(false); queding.setText(关闭); SimpleDateFormat ri = new SimpleDateFormat(dd); SimpleDateFormat shi = new SimpleDateFormat(HH); SimpleDateFormat fen = new SimpleDateFormat(mm); SimpleDateFormat miao = new SimpleDateFormat(ss); riqi =
25、 Integer.parseInt(ri.format(now); shizhong = Integer.parseInt(shi.format(now); fenzhong = Integer.parseInt(fen.format(now); miaozhong = Integer.parseInt(miao.format(now); if (riqi = r & shizhong = h & fenzhong = f & miaozhong = m) try soumd1 = Applet.newAudioClip(new File(music.getText() .toURL(); /
26、 播放音乐 soumd1.loop(); fo = false; foo = false; catch (MalformedURLException e) e.printStackTrace(); try Thread.sleep(1000); catch (InterruptedException ie) 四、运行结果截图打开文件添加音乐闹钟设置完成五、 总结本次JAVA课程设计是我和谢莉萍合作完成的,从网上下载了一个简单的小闹钟的开发程序,参照该程序代码,改编并添加一些自己的程序,在当前时间上加入了年月的显示,并在闹钟的时间设置上加入日的时间显示,最终实现小闹钟的运行.此小闹钟功能比较少,
27、主要为能动态的显示当前时间,可设定或解除闹钟时间,并提供闹钟服务相应的文字提示功能,可以自己从本地文件中选择闹钟提示声音提示功能,并在闹钟设定的输入框中有简单的排错功能,比较简单.该课程设计在修改运行过程中遇见很多问题,例如:添加日期时,显示一直不对,选择音乐时,音乐会出现播放不了的情况等等,但是,在两个人的努力下,经过修改,最终实现了小闹钟的运行.当然,由于是参照了别人的程序,依旧有好多程序语言不是很理解.经过这次的课程设计,也有了很多收获,发现自己的整体面向对象的编程能力大大提高,虽然相对于以前的实验更复杂,不过加强了对GUI、线程等的程序的练习。由于这次课程设计安排的时间不是很足够,这个小闹钟软件比较简单,很多功能不是很完善,在很多功能上还需加强。虽然在设计的时候有遇到过很多困难和错误,但我觉得能够完成这次的课程设计,确实有了很大的进步与收获。-