222详细设计文档.docx

上传人:b****4 文档编号:4678529 上传时间:2022-12-07 格式:DOCX 页数:18 大小:169.55KB
下载 相关 举报
222详细设计文档.docx_第1页
第1页 / 共18页
222详细设计文档.docx_第2页
第2页 / 共18页
222详细设计文档.docx_第3页
第3页 / 共18页
222详细设计文档.docx_第4页
第4页 / 共18页
222详细设计文档.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

222详细设计文档.docx

《222详细设计文档.docx》由会员分享,可在线阅读,更多相关《222详细设计文档.docx(18页珍藏版)》请在冰豆网上搜索。

222详细设计文档.docx

222详细设计文档

 

时钟日历程序

 

详细设计说明书

 

文档名称:

时钟日历详细设计说明书

小组成员:

殷鑫,黄丹,邓伟,张鸿俊,庞玉涛,刘陈

界面设计与美术资料搜集:

庞玉涛

程序设计与实现:

殷鑫,黄丹

文档资料收集与编写:

刘陈,张鸿俊

编写时间:

2009年12月23日星期三

文档和程序审核:

邓伟

审核时间:

2009年12月27日星期日

目录

第一章引言6

第一节编写目的6

第二节编写背景6

1.2.1组件名称及版本号6

1.2.2任务提出者6

1.2.3任务承接者及实施者6

1.2.4使用者6

1.2.5所使用到的其他组件6

第三节文档概述7

1.3.1文档结构说明7

1.3.2电子文档编写工具7

1.3.3定义说明与符号7

1.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电子文档编写工具

【说明】工具名、版本号、操作系统平台。

使用多种工具时,应分别说明。

形如:

MicrosoftWord97forWindows98

Power-Designor6.0forWindows95

PhotoShop4.0forWindows95

Visio或PowerPoint

1.3.3定义说明与符号

【说明】包括对专用术语及缩略语的解释、所用到的图(物理数据模型图/功能层次图/逻辑框图/流程图等)中图符的表示与解释、屏幕界面中图标与按钮的表示与含义等。

1.3.4参考资料

【说明】格式:

作者,[版本号],资料来源,日期,[起止页号]。

其中,《需求规格说明书》与《概要设计说明书》是必选的参考资料。

第二章功能概述

第一节功能模块命名原则

第二节用例图

用户

第三节功能与部门对应关系

第四节本子系统的外部接口

第三章功能模块详述

模块一时钟显示模块

3.1.1模块编号与中文注释

模块编号:

模块一。

注释:

在软件界面右方显示时钟。

3.1.2功能描述与性能描述

功能描述:

显示时间功能:

在组件弹出框的右边显示一个表示当前时间的时钟。

性能描述:

时间精确度高,精确到秒。

并且误差小,与操作系统时钟同步。

3.1.3输入信息

用一个Calendar的实例ca接收系统时间,初始化时钟。

3.1.4输出信息

图形化界面显示当前时间。

3.1.5算法

Canlendar类的实例ca接受系统时间。

在利用相关函数算出时针、分针以及秒针终点坐标。

Calendarca=Calendar.getInstance();

doublehour=ca.get(Calendar.HOUR)*Math.PI*2/12;

doubleminute=ca.get(Calendar.MINUTE)*Math.PI*2/60;

doublesecond=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循环和该方法画出时针刻度。

publicvoidpaintComponent(Graphicsg)

{

super.paintComponent(g);

Graphics2Dg2=(Graphics2D)g;

g2.setPaint(Color.orange);//设置绘画颜色为黄色

g2.fill(creat_clock_frame());//画出一个时钟的外接圆

g2.setPaint(Color.black);//设置绘画颜色为黑色

for(inti=1;i<=60;i++)//画出秒针刻度

{

doublej=i*Math.PI/30;

g2.draw(creat_clock_pointline(j,10));

}

for(inti=1;i<=12;i++)//画出时针刻度

{

doublej=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)

{

Stringa=newInteger(cu_day).toString();

System.out.println(a);

for(intz=0;z<=41;z++)

{

if(myJButton[z].getText().equals(a))

{

myJButton[z].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的容器:

gridBagConstraints[n]=newGridBagConstraints()

并且在后面的for循环中对每个Button的容器进行设置.

gridBagConstraints[i].gridx=x;

gridBagConstraints[i].gridy=y;

add_date()方法用于设置Mypanel2中所有组件的初始值。

在add_date()方法中通过使用for循环,在for循环中使用下面代码设置每个Button和Label

复选框的初始状态如图(左边的数值代表年份):

而用户将鼠标移到左边的方框内,则可以直接输入数值来修改年份。

剩下的部分为日期界面,整个界面是一个红色的按钮。

使用以下代码完成Button的添加,完成日历界面。

myJLabel[0].setText("日")

myJLabel[1].setText("一")

myJLabel[2].setText("二")

myJLabel[3].setText("三")

myJLabel[4].setText("四")

myJLabel[5].setText("五")

myJLabel[6].setText("六")

mypanel2.add(myJLabel[0],gridBagConstraints[0])

mypanel2.add(myJLabel[1],gridBagConstraints[1])

mypanel2.add(myJLabel[2],gridBagConstraints[2])

mypanel2.add(myJLabel[3],gridBagConstraints[3])

mypanel2.add(myJLabel[4],gridBagConstraints[4])

mypanel2.add(myJLabel[5],gridBagConstraints[5])

mypanel2.add(myJLabel[6],gridBagConstraints[6])

在先后两个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的操作和改变,并且将改变的值放入相应变量,重新刷新日历的显示。

在此组件中,通过使用以下代码设置初值:

myJSpinner.setValue(year);

通过加入监听器myJSpinner.addChangeListener,监听对JSpinner的操作和改变,并且将改变的值放入相应变量,重新刷新日历的显示:

3.3.6处理流程

YES

NO

NO

YES

NO

YES

YES

3.3.7应说明的问题与限制

在setgridBagConstraints()方法中使用的对每个Button的布局管理有点问题,使得有显示数字和没显示数字的Button之间存在间隙,对美观有一定影响.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1