已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
佛山科学技术学院可视化编程技术课程设计报告时钟软件设计学生姓名: 黄雪容 学 号: 年级专业: 11级教育技术学2班指导老师: 容汝佳学 院: 教育科学学院广东佛山提交日期:2013年6月目 录1. 前言22概要设计3 2.1 开发环境 3 2.2 计算器功能 3 2.3 界面设计 3 2.4 类的框架结构图 43. 详细设计 4 3.1 使用的JAVA类的说明 4 3.2 类的主要方法 53.2.1 处理按了运算符后的计算 53.2.2 处理输入字符 63.2.3 进制的转换 63.2.4 设计总体认识 73.2.5 程序流程图 8 4. 运行结果85. 测试分析9 5.1 程序运行情况9 5.2 程序异常处理96. 源程序9参考文献27设计总结271摘要:本程序在框架中新建一个容器,用GridLayout类对面板进行划分,程序引入java.util.Date来显示当前时间;用一个永真循环,来对当前时间显示的更新,用java.io.File来实现对文件读写,设计了一个按钮,用来选择文件WAU或MID,用java.applet.Applet播放音乐文件,用getText()函数获取输入的闹钟设定时间,并永真循环和当前的时间进行对比,若相等则播放音乐,若不相等则显示离目标设定时间的差距.关键字:java时钟,时钟类,方法,事件1 前言随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的时钟,可以清楚地知道时间和设定一个时间来提醒自己,满足日常基本的工作学习和生活需要。Java是由Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。还有Java 2企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。Java语言是由C+语言发展起而来的,是一种彻底的面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。Java语言去掉了C+语言的一些容易引起错误的特性。Java语言的特点有:面向对象、跨平台、安全性、多线程和图形功能强。2 概要设计2.1开发环境 开发平台:Microsoft Windows XP Professional Service Pack 2 开发工具:JBuilder 2007 + JDK 1.6.0_022.2时钟功能 功能 1:在时钟面板上,动态显示出当前时间。 功能 2:可以设定闹钟时间 ,且当时间到了设定的闹钟时间时,会播放音乐来提醒。 功能 3:可以随意解除设定的闹钟时间,再重新设定一个新的时间。 功能4 :按下清除开始键,闹钟就开始设定好了,按“关闭”闹铃就停止。 功能5:界面设计,可模拟真实钟表界面也可以用数字界面显示,美观、实用和个性化。2.3界面设计图2.3 时钟面板2.4类的框架结构图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 : booleansoumd1 : public AudioClipClock类中的函数public clock()public static void main(String agrs)public void run()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) l JAVA设计的摘要l JAVA设计的目录结构l JAVA设计的概要和详细设计l JAVA设计的版权意识l JAVA设计需要编译的环境l JAVA设计的实用性4运行结果图 工作状态显示 js(); catch(This_number_too_big e) lab.setText(0); number=0; mark=n; Refresh=false; System.out.println(The number is too big); /如果出现异常则初始化效果如同clear键 5 .程序分析遇到问题 5. 1 设置迷你闹钟的界面化时遇到问题通过参考已有的程序加以解决 。 5. 2 设置“闹铃时间”、“开关按钮”、“背景音乐列表框”时事件的触发和监 控遇到问题经过反复修改调试得到解决。 5. 3 闹铃背景音乐格式设置遇到问题,经过调试和格式转换解决。待解决问题 闹钟的思想是“北京时间”所以背景音乐中有天涯共此时音乐界面上有北京时间等标识本来想在界面上添加一幅具有北京特色的图片做背景但反复尝试遗憾的是均未能成功添加的背景图片总被上层面板遮挡希望老师给以指导。6 程序清单:import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import sun.audio.*;import java.io.*;public class JavaClock extends JFrame implements ActionListener,Runnable /* * */private static final long serialVersionUID = -L;Thread thread; JPanel panel1=new JPanel(); JPanel panel2=new JPanel(); JPanel panel3=new JPanel(); JButton button2=new JButton(开闹铃); JButton button1=new JButton(确定); JComboBox sComboBox,mComboBox,hComboBox; JLabel label1=new JLabel(:); JLabel label2=new JLabel(:); JLabel label3=new JLabel(设置闹铃时间:); JLabel label4=new JLabel(闹铃状态:关); Clock clock=new Clock(); boolean flag=false; int hour=0,minute=0,second=0; int nowsecond,nowminute,nowhour; AudioData theData=null; AudioDataStream nowPlaying=null; public JavaClock() setTitle(闹钟); setResizable(false);/用户不能调整大小 setLocation(450,100);/在屏幕位置 setSize(400,500); setVisible(true); setDefaultCloseOperation(EXIT_ON_CLOSE);/按窗口关闭按钮时退出程序 setLayout(new BorderLayout(); add(clock,BorderLayout.NORTH); sComboBox=new JComboBox(); mComboBox=new JComboBox(); hComboBox=new JComboBox(); for(int i=0;i60;i+) sComboBox.addItem(i); mComboBox.addItem(i); for(int i=0;i=12) hour-=12; /画表盘 imageBuffer=createImage(400,400);/不能在外面实例化 Graphics graphBuffer=imageBuffer.getGraphics(); graphBuffer.setColor(backColor); graphBuffer.fillRect(0, 0, 400, 400); double radius=(diameter1)*0.9; /画刻度 for(int i=1;i=12;i+) double buffer=Math.PI*(0.5-i/6.0); int posX=(int)Math.floor(centerX+radius*Math.cos(buffer); int posY=(int)Math.floor(centerY+radius*Math.sin(buffer); graphBuffer.setColor(hPointColor); graphBuffer.fill3DRect(posX-4, posY-4, 8, 8, true); for(int i=1;i1)*0.90; double Mradius=(diameter1)*0.80; double Hradius=(diameter1)*0.70; double posSecond=Math.PI*second/30.0;/秒针走过弧度 double posMinute=Math.PI*(minute/30.0+second/1800.0);/分针走过弧度 double posHour=Math.PI*(hour/6.0+minute/360.0);/时针走过弧度 /画指针 graphBuffer.setColor(hHandColor); graphBuffer.drawLine(centerX-3, centerY-3, (int)(Math.round(centerX+Hradius*Math.sin(posHour), (int)(Math.round(centerY-Hradius*Math.cos(posHour); graphBuffer.drawLine(centerX+3, centerY+3, (int)(Math.round(centerX+Hradius*Math.sin(posHour), (int)(Math.round(centerY-Hradius*Math.cos(posHour); graphBuffer.setColor(mHandColor); graphBuffer.drawLine(centerX-2, centerY-2, (int)(Math.round(centerX+Mradius*Math.sin(posMinute), (int)(Math.round(centerY-Mradius*Math.cos(posMinute); graphBuffer.drawLine(centerX+2, centerY+2, (int)(Math.round(centerX+Mradius*Math.sin(posMinute), (int)(Math.round(centerY-Mradius*Math.cos(posMinute); graphBuffer.setColor(sHandColor); graphBuffer.drawLine(centerX, centerY, (int)Math.round(centerX
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川成都市新津区外国语实验小学校面向社会招聘教师18人备考题库完整答案详解
- 2026济南文旅发展集团有限公司校园招聘20人备考题库及参考答案详解1套
- 2026南方科技大学生物医学工程系诚聘海内外高层次人才备考题库附参考答案详解(突破训练)
- 2026吉林四平市事业单位招聘(含专项招聘高校毕业生)25人备考题库(2号)带答案详解(夺分金卷)
- 2026宁波甬科天使创业投资基金管理有限公司招聘1人备考题库及答案详解(名师系列)
- 2026广东清远私立学校2026年教师招聘37人备考题库附参考答案详解(精练)
- 2026内蒙古鄂尔多斯景泰艺术中学(普高)招聘教师3人备考题库及答案详解(必刷)
- 2026山东济南市中心医院招聘博士研究生(控制总量)70人备考题库附答案详解(b卷)
- 2026云南楚雄州永仁县发展和改革局政府购买服务人员招聘5人备考题库完整答案详解
- 2026江西赣州市托育综合服务中心招聘业务园长1人备考题库及答案详解一套
- 贵州省六盘水市2025-2026学年九年级上学期期末语文试题(含答案)
- 一年级数学5以内加减法计算专项练习题(每日一练共42份)
- 2026年山西云时代技术有限公司校园招聘笔试备考题库及答案解析
- 数字孪生智慧管网监测系统构建课题申报书
- 统编版(新版)道德与法治八年级下册课件13.1全面依法治国的指导思想
- 汽车驾驶员技师论文
- 2025年三季度云南航空产业投资集团招聘(云南云航投现代物流有限公司岗位)考试笔试历年常考点试题专练附带答案详解2套试卷
- 3.长方体和正方体(单元测试)2025-2026学年五年级数学下册人教版(含答案)
- 八大特殊作业安全管理流程图(可编辑)
- 新教材人教版2019年高中生物课本课后问题参考答案(全集)
- 海尔集团PIP-绩效改进计划
评论
0/150
提交评论