JAVA课程设计 闹钟的设计与实现项目报告 附源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java 设计报告书
课程名称:JA V A语言程序设计
设计题目:闹钟的设计与实现
院系:计算机科学与信息工程系
学生姓名:
学号:
专业班级:
指导教师:**
2010 年12 月28 日
目录
一、题目描述 (1)
二、设计思路 (1)
三、运行结果 (5)
四、源代码 (6)
五、总结 (10)
六、参考文献 (10)
闹钟的设计与实现
一、题目描述:
结合JA V A图形界面的知识设计一个闹钟
二、设计思路
1、设计要求:
编写闹钟钟程序,要求画出时钟面板,动态的显示当前时间,可设定或解除闹钟时间,并提供闹钟服务相应的文字提示功能与可以自己选择闹钟提示声音提示功能,并在闹钟设定的输入框中有简单的排错功能。
2、算法基本描述:
本程序先是在框架中新建了一个容器,然后用GridLayout类对面板进行划分,程序引入java.util.Date来显示当前时间,并用一个永真循环,来对当前时间显示的更新,引入java.io.File来实现对文件的读写操作,程序设计了一个选择按钮,用来选择文件,并且声明只能选择,WAU、MID的文件,引入用java.applet.Applet 来播放音乐文件,用getText()函数获取输入的闹钟设定时间,并永真循环和当前的时间进行对比,若相等则播放音乐,若不相等则显示离目标设定时间的差距。
3、设计思想与内容
1、画出类的UML简图
Clock类:
2
3
(1)当前动态时间的显示的设计与实现。
功能:可以实时的更新显示系统完整的时间
算法:引入java.util.Date用while循环更新时间
代码如下:
public void run() {
while (true) {
Date now = new Date();//设置一个新的当前时间对象。
dangqian.setText("当前时间: " + now.toString());//显示当前的时间
…
}
(2)音乐文件的选择。
功能:用打开按钮实现对本地音乐文件的选择
算法:引入java.io.File和.MalformedURLException 来实现对音乐本地音乐文件的选择。
代码如下:
dakai.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
JFileChooser 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.getName().toLowerCase();
return name.endsWith(".wav")
|| name.endsWith(".au")
|| file.isDirectory();
}
public String getDescription() { // 文件描述
return "音乐文件(*.wav,*.au)";
}
});
(3)闹铃功能的实现
功能:到达设定闹钟时间,会有输出文字及产生音乐。
算法:读入Clock类中的时间,并设置一个Timer,每隔0.1秒进行比对,如果字符串之间匹配就显示,简化代码如下示意:
public void run() {
………
if (fo) {
foo = true;
RI.setEditable(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 SimpleDateFormat("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())
.toURL()); // 播放音乐
soumd1.loop(); // 我设置的是循环播放..这样不起床都不行..
fo = false;
foo = false;
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException ie) {
}
}
}
三、运行结果