222详细设计文档.doc_第1页
222详细设计文档.doc_第2页
222详细设计文档.doc_第3页
222详细设计文档.doc_第4页
222详细设计文档.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

详细设计说明书时钟日历程序时钟日历程序详细设计说明书文档名称: 时钟日历详细设计说明书小组成员: 殷鑫,黄丹,邓伟,张鸿俊,庞玉涛,刘陈界面设计与美术资料搜集: 庞玉涛程序设计与实现: 殷鑫,黄丹文档资料收集与编写: 刘陈,张鸿俊编写时间: 2009年12月23日星期三文档和程序审核: 邓伟审核时间: 2009年12月27日星期日目录第一章 引言6第一节 编写目的6第二节 编写背景61.2.1 组件名称及版本号61.2.2 任务提出者61.2.3 任务承接者及实施者61.2.4 使用者61.2.5 所使用到的其他组件6第三节 文档概述71.3.1 文档结构说明71.3.2 电子文档编写工具71.3.3 定义说明与符号71.3.4 参考资料7第二章 功能概述8第一节 功能模块命名原则8第二节 用例图8第三节 功能模块与部门的对应关系9第四节 本子系统的外部接口10第三章 功能模块详述15第一节 模块115第二节 模块216第三节 模块316第一章 引言第一节 编写目的设计对象:时钟日历组件预期读者:我方与用户方的开发人员、双方的系统维护人员。作用:承上启下。基于概要设计,为下一阶段的程序编码工作提供依据。它是项目验收的重要内容和后期维护的必备资料。第二节 编写背景1.2.1 系统名称及版本号时钟日历组件 原始版本1.2.2 任务提出者指承担质量保证计划中规定的我方领导机构或项目负责人。1.2.3 任务承接者及实施者承担本组件详细设计的负责人及工作人员为: 殷鑫,黄丹,邓伟,张鸿俊,庞玉涛,刘陈1.2.4 使用者1.2.5 与其它子系统的关系【说明】给本子系统在整个系统中准确定位,用功能层次图及相应的文字予以说明。第三节 文档概述1.3.1 文档结构说明【说明】章节划分原则、内容的取舍、重点的确定等。1.3.2 电子文档编写工具【说明】工具名、版本号、操作系统平台。使用多种工具时,应分别说明。形如: Microsoft Word 97 for Windows 98 Power-Designor 6.0 for Windows 95 PhotoShop 4.0 for Windows 95 Visio或Power Point1.3.3 定义说明与符号【说明】包括对专用术语及缩略语的解释、所用到的图(物理数据模型图/功能层次图/逻辑框图/流程图等)中图符的表示与解释、屏幕界面中图标与按钮的表示与含义等。 1.3.4 参考资料【说明】格式:作者,版本号,资料来源,日期,起止页号。其中,需求规格说明书与概要设计说明书是必选的参考资料。第二章 功能概述第一节 功能模块命名原则第二节 用例图显示时间显示日期更改日期 用户第三节 功能与部门对应关系第四节 本子系统的外部接口第三章 功能模块详述模块一 时钟显示模块3.1.1 模块编号与中文注释模块编号:模块一。注释:在软件界面右方显示时钟。3.1.2 功能描述与性能描述功能描述:显示时间功能:在组件弹出框的右边显示一个表示当前时间的时钟。性能描述:时间精确度高,精确到秒。并且误差小,与操作系统时钟同步。3.1.3 输入信息用一个Calendar的实例ca接收系统时间,初始化时钟。3.1.4 输出信息图形化界面显示当前时间。3.1.5 算法Canlendar类的实例ca接受系统时间。在利用相关函数算出时针、分针以及秒针终点坐标。Calendar ca = Calendar.getInstance();double hour = ca.get(Calendar.HOUR) * Math.PI * 2 / 12;double minute = ca.get(Calendar.MINUTE) * Math.PI * 2 / 60;double second = ca.get(Calendar.SECOND) * Math.PI * 2 / 60; g2.draw(draw_pointline(hour,30); /画出时针g2.draw(draw_pointline(minute,60); /画出分针g2.draw(draw_pointline(second,90); /画出秒针3.1.6 处理流程开 始读取系统时间函数计算画时钟显示时间结 束3.1.7 应说明的问题与限制改时钟与系统时钟同步,无法直接修改该时钟。如须修改,要通过修改系统时钟以完成修改。3.1.8屏幕布局设计与说明Clock类的中的方法paintComponent()该方法完成了整个时钟的刻画。首先调用父类的paintComponent(g);然后设置颜色为黄色(Color.orange),接着调用creat_clock_frame()方法画出时钟的外接圆然后设置颜色为黑色(Color.black)。接着用一个for循环,其中调用creat_clock_pointline(j,10)方法画出秒针刻度,然后同理再用一个for循环和该方法画出时针刻度。public void paintComponent(Graphics g)super.paintComponent(g); Graphics2D g2=(Graphics2D)g;g2.setPaint(Color.orange); /设置绘画颜色为黄色g2.fill(creat_clock_frame(); /画出一个时钟的外接圆g2.setPaint(Color.black); /设置绘画颜色为黑色for(int i=1;i=60;i+) /画出秒针刻度double j = i * Math.PI / 30;g2.draw(creat_clock_pointline(j,10);for (int i = 1; i = 12; i+) /画出时针刻度double j = i * Math.PI / 6;g2.draw(creat_clock_pointline(j,20);时钟完整界面如下:模块二 日历显示模块3.2.1 模块编号与中文注释模块编号:模块二。注释:此模块包含一个类mypanel1扩展与JPanel。其中包了myJSpinner.addChangeListener、myJComboBox.addItemListener两个用于事件处理的监听器类。3.2.2 功能描述与性能描述功能描述此模块从系统、子模块JSpinner、子模块JCombobox获取输入,显示和更新日历面板。此模块用于绘制日历面板、显示对应年月的每天对应的星期。性能描述该模块要能在JSpinner和JCombobox中值改变几乎同时要能看到日历显示当年当月的日历 。3.2.3 输入信息从日历修改模块接收信息。3.2.4 输出信息将所选日期在日历上的对应格底色改为紫色。3.2.5 算法为了使当前日期的Button显示为其他颜色,获得当前日期后,利用一个FOR循环,找出与cu_day的值相等的Button。然后将其Background改成BLUE。使用以下代码:if(Integer)myJSpinner.getValue()=cu_year&myJComboBox.getSelectedIndex()=cu_month)String a=new Integer(cu_day).toString();System.out.println(a);for(int z=0;z=41;z+)if(myJButtonz.getText().equals(a)myJButtonz.setBackground(Color.BLUE); 非选 被选3.2.6 处理流程开 始读取系统日期初始化下拉表初始化复合框显示日期结 束3.2.7应说明的问题与限制在setgridBagConstraints()方法中使用的对每个Button的布局管理有点问题,使得有显示数字和没显示数字的Button之间存在间隙,对美观有一定影响。3.2.8屏幕布局设计与说明1.JComboBox组件通过方法getMyJComboBox()实现,用于返回JComboBox,并对其设置初始值,以及加入事件监听,监听对JComboBox的操作和改变,并且将改变的值放入相应变量,重新刷新日历的显示。在此组件中,通过使用以下代码加入可选项:myJComboBox.addItem(一月); myJComboBox.addItem(二月);myJComboBox.addItem(三月);myJComboBox.addItem(四月);myJComboBox.addItem(五月);myJComboBox.addItem(六月);myJComboBox.addItem(七月);myJComboBox.addItem(八月);myJComboBox.addItem(九月);myJComboBox.addItem(十月);myJComboBox.addItem(十一月);myJComboBox.addItem(十二月);2.JPanel组件通过方法 getMypanel2()实现,用于返回盛放日历中显示具体日子的组件的Panel,并在此Panel中加入许多相同Button,以作为具体显示日期的容器。在此组件中,通过调用setgridBagConstraints()和add_date()方法对所有用于显示具体日期的Button进行布局设置和显示值设置。setgridBagConstraints()方法用于设置每个Button的布局的gridBagConstraints,被getMypanel2()调用。在setgridBagConstraints()方法中通过使用for循环,在for循环中使用下面代码产生每个Button的容器:gridBagConstraintsn=new GridBagConstraints()并且在后面的for循环中对每个Button的容器进行设置.gridBagConstraintsi.gridx=x;gridBagConstraintsi.gridy=y;add_date()方法用于设置Mypanel2中所有组件的初始值。在add_date()方法中通过使用for循环,在for循环中使用下面代码设置每个Button和Label复选框的初始状态如图(左边的数值代表年份):而用户将鼠标移到左边的方框内,则可以直接输入数值来修改年份。剩下的部分为日期界面,整个界面是一个红色的按钮。使用以下代码完成Button的添加,完成日历界面。myJLabel0.setText(日)myJLabel1.setText(一)myJLabel2.setText(二)myJLabel3.setText(三)myJLabel4.setText(四)myJLabel5.setText(五)myJLabel6.setText(六)mypanel2.add(myJLabel0, gridBagConstraints0)mypanel2.add(myJLabel1, gridBagConstraints1)mypanel2.add(myJLabel2, gridBagConstraints2)mypanel2.add(myJLabel3, gridBagConstraints3)mypanel2.add(myJLabel4, gridBagConstraints4)mypanel2.add(myJLabel5, gridBagConstraints5)mypanel2.add(myJLabel6, gridBagConstraints6)在先后两个for循环中使用,加入Button和剩余的Label:日历完整界面如下:模块三 日历修改模块3.3.1 模块编号与中文注释模块编号:模块三。注释:通过方法getMyJSpinner()实现,用于返回JSpinner,并对其设置初始值,以及加入事件监听,监听对JSpinner的操作和改变,并且将改变的值放入相应变量,重新刷新日历的显示。 3.3.2 功能描述与性能描述功能描述根据用户输入信息更改日历日期。性能描述该模块要能在JSpinner和JCombobox中值改变几乎同时要能看到日历显示当年当月的日历 。 3.3.3 输入信息JComboBox的值与JSpinner的值3.3.4 输出信息日历上对应日期背景色为紫色3.3.5算法日历模块改变 年份改变 YES NO NO月份改变 YES NO 日 改变 YES YES刷新日历模块通过方法getMyJSpinner()实现,用于返回JSpinner,并对其设置初始值,以及加入事件监听,监听对JSpinner的操作和改变,并且将改变的值放入相应变量,重新刷新日历的显示。在此组件中,通过使用以下代码设置初

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论