JAVA课程设计 闹钟的设计与实现项目报告 附源代码

上传人:ya****h 文档编号:142655316 上传时间:2022-08-25 格式:DOCX 页数:9 大小:61.72KB
返回 下载 相关 举报
JAVA课程设计 闹钟的设计与实现项目报告 附源代码_第1页
第1页 / 共9页
JAVA课程设计 闹钟的设计与实现项目报告 附源代码_第2页
第2页 / 共9页
JAVA课程设计 闹钟的设计与实现项目报告 附源代码_第3页
第3页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
MiJava设计报告书-4-课程名称:JAVA语言程序设计设计题目:闹钟的设计与实现院系:计算机科学与信息工程系学生姓名:学号:一专业班级:指导教师:2010年12月28日目录一、题目描述1二、设计思路1三、运行结果5四、源代码6五、总结10六、参考文献10一、题目描述:结合JAVA图形界面的知识设计一个闹钟二、设计思路1、设计要求:编写闹钟钟程序,要求画出时钟面板,动态的显示当前时间,可设定或解除闹钟时间,并提供闹钟服务相应的文字提示功能与可以自己选择闹钟提示声音提示功能,并在闹钟设定的输入框中有简单的排错功能。2、算法基本描述:本程序先是在框架中新建了一个容器,然后用GridLayout类对面板进行划分,程序引入java.util.Date来显示当前时间,并用一个永真循环,来对当前时间显示的更新,引入java.io.File来实现对文件的读写操作,程序设计了一个选择按钮,用来选择文件,并且声明只能选择,WAU、MID的文件,引入用java.applet.Applet来播放音乐文件,用getText()函数获取输入的闹钟设定时间,并永真循环和当前的时间进行对比,若相等则播放音乐,若不相等则显示离目标设定时间的差距。3、设计思想与内容1、画出类的UML简图Clock类:Clock类中的变量ri,shi,fen,miao,dangqian,guanji:JLabelqueding,dakai:JButtonmusic,RI,SHI,FEN,MIAO:JTextFieldh=0,f=0,m=0,r=0:intFo,foo:booleansoumdl:publicAudioClipClock类中的函数publicclock()publicstaticvoidmain(Stringagrs)publicvoidrun()2、各方法功能描述列表Clock类方法功能Main()执行main函数Clock()Clock类的构造函数,用于对时钟界面的初始化Run()用于对时钟的动态显示的执行,并判断是否设定了闹钟时间,若当前时间与设定的时间相等则播放选定的音乐3、主要模块算法描述(1)当前动态时间的显示的设计与实现。功能:可以实时的更新显示系统完整的时间算法:引入javautil.Date用while循环更新时间代码如下:publicvoidrun()while(true)Datenow=newDate();/设置一个新的当前时间对象。dangqian.setText(当前时间:+now.toString();/显示当前的时间(2) 音乐文件的选择。功能:用打开按钮实现对本地音乐文件的选择算法:引入java.io.File和.MalformedURLException来实现对音乐本地音乐文件的选择。代码如下:dakai.addActionListener(newActionListener()publicvoidactionPerformed(ActionEventevent)JFileChooserfileChooser=newJFileChooser();/实例化文件选择器fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);/设置文件选择模式,此处为文件和目录均可fileChooser.setCurrentDirectory(newFile(.);/设置文件选择器当前目录fileChooser.setFileFilter(newjavax.swing.filechooser.FileFilter()publicbooleanaccept(Filefile)/可接受的文件类型Stringname=file.getName().toLowerCase();returnname.endsWith(.wav)|name.endsWith(.au)|file.isDirectory();publicStringgetDescription()/文件描述return音乐文件(*.wav,*.au););(3) 闹铃功能的实现功能:到达设定闹钟时间,会有输出文字及产生音乐。算法:读入Clock类中的时间,并设置一个Timer,每隔0.1秒进行比对,如果字符串之间匹配就显示,简化代码如下示意:publicvoidrun()if(fo)foo=true;RI.setEditable(false);/设定之后禁用输入功能SHI.setEditable(false);FEN.setEditable(false);MIAO.setEditable(false);queding.setText(关闭);/关闭闹钟设定SimpleDateFormatri=newSimpleDateFormat(dd);/封装为了获取日期SimpleDateFormatshi=newSimpleDateFormat(HH);/封装为了获取小时SimpleDateFormatfen=newSimpleDateFormat(mm);/封装为了获取分钟SimpleDateFormatmiao=newSimpleDateFormat(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)/判断条件是否符合trysoumdl=Applet.newAudioClip(newFile(music.getText().toURL();/播放音乐soumdl.loop();/我设置的是循环播放.这样不起床都不行.fo=false;foo=false;catch(MalformedURLExceptione)e.printStackTrace();tryThread.sleep(lOOO);catch(InterruptedExceptionie)三、运行结果当前F吋间:TueDec2320:54:26CST2010确定日时分四、源程序清单:importjava.applet.Applet;importjava.applet.AudioClip;importjava.awt.Container;importjava.awt.GridLayout;importjava.awt.event.*;importjava.io.File;.MalformedURLException;importjava.text.SimpleDateFormat;importjava.util.Date;importjavax.swing.*;publicclassclockextendsJFrameimplementsRunnableJLabelri,shi,fen,miao,dangqian,guanji;JButtonqueding,dakai;JTextFieldmusic,RI,SHI,FEN,MIAO;inth=0,f=0,m=0,r=0;booleanfo=false,foo=false;publicAudioClipsoumd1;intriqi,shizhong,fenzhong,miaozhong;publicclock()Containerc=getContentPane();c.setLayout(newGridLayout(4,1);JPaneljp=newJPanel();dangqian=newJLabel();jp.add(dangqian);c.add(jp);JPaneljp3=newJPanel();guanji=newJLabel(离闹铃时间:0日0时0分0秒);jp3.add(guanji);c.add(jp3);JPaneljp1=newJPanel();music=newJTextField(20);dakai=newJButton(选择闹铃音乐);jp1.add(music);jp1.add(dakai);c.add(jp1);ri=newJLabel(日);RI=newJTextField(4);shi=newJLabel(时);SHI=newJTextField(4);fen=newJLabel(分);FEN=newJTextField(4);miao=newJLabel(秒);MIAO=newJTextField(4);JPaneljp2=newJPanel();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=newJButton(确定);jp2.add(queding);c.add(jp2);setSize(400,160);setVisible(true);dakai.addActionListener(newActionListener()publicvoidactionPerformed(ActionEventevent)JFileChooserfileChooser=newJFileChooser();/实例化文件选择器fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);/设置文件选择模式,此处为文件和目录均可fileChooser.setCurrentDirectory(newFile(.);/设置文件选择器当前目录fileChooser.setFileFilter(newjavax.swing.filechooser.FileFilter()publicbooleanaccept(Filefile)/可接受的文件类型Stringname=file.getName().toLowerCase();returnname.endsWith(.wav)|name.endsWith(.au)|file.isDirectory();publicStringgetDescription()/文件描述return音乐文件(*.wav,*.au););if(fileChooser.showOpenDialog(clock.this)=JFileChooser.APPROVE_OPTION)/弹出文件选择器,并判断是否点击了打开按钮StringfileName=fileChooser.getSelectedFile().getAbsolutePath();/得到选择文件或目录的绝对路径music.setText(fileName););queding.addActionListener(newActionListener()publicvoidactionPerformed(ActionEventevent)if(queding.getText().equals(确定)tryh=Integer.parseInt(SHI.getText();f=Integer.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)Datenow=newDate();SimpleDateFormatri=newSimpleDateFormat(dd);if(RI.getText()=null|RI.getText().equals()r=Integer.parseInt(ri.format(now);RI.setText(ri.format(now);elser=Integer.parseInt(RI.getText();fo=true;elseJOptionPane.showMessageDialog(null,输入时间错误);catch(Exceptione)JOptionPane.showMessageDialog(null,请输入正确的时间);elsetryfo=false;RI.setEditable(true);SHI.setEditable(true);FEN.setEditable(true);MIAO.setEditable(true);queding.setText(确定);soumd1.stop();catch(ExceptionE)System.out.println(关闭););publicstaticvoidmain(Stringagrs)clocks=newclock();Threadt1=newThread(s);t1.start();s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);publicvoidrun()while(true)Datenow=newDate();dangqian.setText(当前时间:+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.setText(离闹铃时间:0日0时0分0秒);elseif(r=riqi&hshizhong)foo=false;guanji.setText(离闹铃时间:0日0时0分0秒);elseif(r=riqi&h=shizhong&ffenzhong)foo=false;guanji.setText(离闹铃时间:0日0时0分0秒);elseif(r=riqi&h=shizhong&f=fenzhong&mmiaozhong)foo=false;guanji.setText(离闹铃时间:0日0时0分0秒);if(fo)foo=true;RI.setEditable(false);SHI.setEditable(false);FEN.setEditable(false);MIAO.setEditable(false);queding.setText(关闭);SimpleDateFormatri=newSimpleDateFormat(dd);/封装为了获取日期SimpleDateFormatshi=newSimpleDateFormat(HH);/封装为了获取小时SimpleDateFormatfen=newSimpleDateFormat(mm);/封装为了获取分钟SimpleDateFormatmiao=newSimpleDateFormat(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)/判断条件trysoumd1=Applet.newAudioClip(newFile(music.getText().toURL();/播放音乐soumd1.loop();/我设置的是循环播放.这样不起床都不行.fo=false;foo=false;catch(MalformedURLExceptione)e.printStackTrace();tryThread.sleep(1000);catch(InterruptedExceptionie)五、总结经过这次短短的一个礼拜的课程设计,发现自己的整体面向对象的编程能力大大提高,虽然相对于以前的实验更复杂,不过加强了对GUI、线程的等程序的练习。由于这次课程设计安排的时间不是很足够,对于一个要给别人用的软件来比较的话,在很多功能上还需加强。虽然在设计的时候有遇到过很多困难和错误,但我觉得能够完成这次的课程设计,确实有了很大的进步与收获。六、参考文献Java语言程序设计-基础篇作者Y.DanielLang机械工业版社Java语言程序设计-进阶篇作者Y.DanielLang机械工业版社-9-
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!