西 安 思 源 学 院
Java 课程设计报告
课程名称: JAVA语言程序设计 设计题目: 简单小闹钟的设计与实现 学 院: 电子信息工程学院 专业班级: 计算机科学与技术统本01班 学 号 : 111102020103 姓 名: 张慧 小组成员 : 谢莉萍
时 间 : 2013年6月29日
- 1 -
目 录
一、项目设计
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
- 2 -
闹钟的设计与实现
一、项目设计
1.1题目描述:
结合JAVA图形界面的知识设计一个简单的小闹钟
1.2设计思路
百度下载的闹钟程序设计,参考别人的程序,通过改编,并添加一些自己的程序,最终实现小闹钟的运行.本次设计要求画出时钟的面板,动态的显示当前时间,可设定或解除闹钟时间,并提供闹钟服务相应的文字提示功能,可以自己选择闹钟提示声音提示功能,并在闹钟设定的输入框中有简单的排错功能。
1.3设计内容
1.3.1画出Clock类的UML简图 Clock类中的变量 ri, shi, fen, miao, dangqian, guanji: JLabel queding, dakai : JButton music, RI, SHI, FEN, MIAO : JTextField h = 0, f = 0, m = 0, r = 0 : int Fo, foo : boolean soumd1 : public AudioClip Clock类中的函数 public clock() public static void main(String agrs[]) public void run()
1.3.2各方法功能描述列表 Clock类方法 Main() Clock() Run() 功能 执行main函数 Clock类的构造函数,用于对时钟界面的初始化 用于对时钟的动态显示的执行,并判断是否设定了闹钟时间,若当前时间与设定的时间相等则播放选定的音乐
二、算法描述
- 3 -
2.1基本算法描述
本程序先是在框架中新建了一个容器,然后用GridLayout类对面板进行划分,程序引入java.util.Date来显示当前时间,并用一个永真循环,来对当前时间显示的更新,引入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 (true) {
Date now = new Date();//设置一个新的当前时间对象。
dangqian.setText(\当前时间: \显示当前的时间 .......
}
2.2.2音乐文件的选择。
(1)功能:用打开按钮实现对本地音乐文件的选择
(2)算法:引入java.io.File和java.net.MalformedURLException 来实现对音乐本地音乐文件的选择。 (3)代码:
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(\ || name.endsWith(\ || file.isDirectory(); }
public String getDescription()
{ return \音乐文件(*.wav,*.au)\ } });
- 4 -
2.2.3闹铃功能的实现
(1)功能:到达设定闹钟时间,会有输出文字及产生音乐。
(2)算法:读入Clock类中的时间,并设置一个Timer,每隔0.1秒进行比对,如果字符串之间匹配就显示
(3)代码:
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(\ SimpleDateFormat shi = new SimpleDateFormat(\ SimpleDateFormat fen = new SimpleDateFormat(\ SimpleDateFormat miao = new SimpleDateFormat(\ 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) { } } }
- 5 -