当前位置:
文档之家› (完整版)java万年历课程
(完整版)java万年历课程
获取组合框中显示的中文格式年份
public int getComboYear( )
获取组合框中的年份
public int getInitWeek(String initWeek)
返回当月中的 1 号是从星期几开始
public int getMonthDays(int year, int month)
4、创建一个标签用于显示时间,监听系统时间并显示。
( 2)中央部件上添加系统的结果显示部分:
1、该部分最初显示为当日年月的月历,改变年月后,获得需要显示的 月 份 天 数 m 和 当 月 1 号 是 从 labelDay[n] 开 始 后 按 顺 序 从 添 加 到 labelDay[m+n] ,遇到周末用 setForeground(Color.red设) 定字体显示为红色;
获得该月 1 号所在位 置和该月天数
生成日历界面
设置系统为该年 月
图3 2、用户用鼠标点击选择一个日期后,系统可用蓝色方框框住该日期,表示 系统已选择该日,具体流程如图 5 所示
用户点击某一 日期
系统判断用户已点 击标签的下标
清除上一个方 框
对被点击的标签设 一个蓝色方框
图4
五、运行调试与分析讨论
( 1)运行结果和分析
返回所选年月的天数
public void setSysDate(int year,int month)
设置系统日期
public void setChangeDate( )
改变显示日期
public void setDays(int monthDays,int initWeek,int day)
设置月历
..
. ..
. ..
2、对 labelDay 标签进行监听, 如果鼠标点击某个 label,判断该标签的 的序号,用 setBorder()为该 label 设置蓝色边框并用 setBordr(null )将上 一个边框清除。
..
.
四、详细设计
( 1)类设计
本程序创建了一个 MainFrame 类,该类包括了改变年月对月历界面显 示的改变和时间的显示,主要包括函数如表 1 所示:
.
JAVA 课程设计报告
模拟时钟
系 别: 计 算 机 系 班 级: 计本 1119 班 姓 名: 高鹏飞 学 号: 1162041928 指导教师: 白茹意
..
.
一、课程设计任务及要求
( 1)设计任务: 编写一个 Java 万年历程序,实现日期和星期的查询。
( 2)设计要求 : 1、主界面采用边界布局,北面是一个设置年月的控制面板,中间是日
( 1)查看万年历
1、进入万年历系统; 2、系统获取当日日期并设置日历为当月,红框选中当日日期;
( 2)查询当月其他年份
改变年份的方法是选择年份。 下拉菜单选择年份:
1、点击选择年份的下拉菜单,选择年份; 2、系统获取已选择的年份; 3、系统设置为已选年份当月的月历并显示在界面显示。
( 3)查询当年的其他月份
( 3)功能实现
该系统主要实现的功能如图 2 所示
查询指定年份日历
查询指定月份日历
万 查询相邻年份日历
年
历ห้องสมุดไป่ตู้
系
查询相邻月份日历
统
查看今日
选择其他日期
显示时间
图2
..
.
1、当用户需要查询指定年月的日历时,用户将选择框内年月改变,系 统获取信息并设置月历,具体流程如图 3 所示
选择年份月份
获取年月份并转 化为英文格式
图 5 为系统初始界面,系统自动设置为当日年月的月历,并且用红色 框住当日日期。
..
.
( 2)改进想法
图5
该万年历程序只能显示阳历,可在其基础上加上阴历的显示,当鼠标
点击了某一日的日期时,该日期被框住并且显示出其阴历日期;
每年一些固定的节日如“五一” 、“十一”可在日历上用红色数字显示
出来;
月历上其他未填日期的空白 label 可用加上上个月和下个月的部分日
2、四个 button 按钮用于实现年—、年 +、月—、月 +,如摁了“年 +” 后,系统用 getShowYear()和 getCombYear()获得组合框中的年份,在 其年份上加 1,将改变的年份显示在组合框里,计算出该年月日历的安排, 并用 setDays()设置出用户所要求得月历,其他按钮同理;
期,用灰色表示方便区。
六、设计体会与小结
Java 语言是解释执行的高级编程语言 ,是面向对象的程序设计语言 ,功 能强大, 它是解释执行的 ,能跨平台使用。 具有较高的性能和高度的安全性, Java 程序的三级代码安全检查机制可以有效的防止非法代码的入侵,阻止 对内存的越权访问,能够避免病毒的侵害,成为 Internet 上最安全的技术 之一。并且支技多线程 ,可使用户程序并行执行,即有内存垃圾自动收集机 制。 Java 语言是一种“直译”式语言,即用 Java 编写的程序首先被编译 成字节码, 再通过 JVM 解释成机器码, 字节码是 Java 专有的一种中间码, 必须通过 JVM 来解释才能运行。 经过了一个学期对 《 Java 程序设计》 的学 习,我们学习了理论知识,了解了 Java 语言程序设计的思想,这些知识都
表1
表1
( 2)界面设计
界面如图 1 所示该界面由上北面的输入选择部分和中央的结果显示部 分组成。输入部分创建两个下拉列表选择年月及 5 个功能按键用于实现日
历的基本操作;结果显示部分根据该月 该月月历界面。
1 号所属星期和该月的天数设置出
for(int i=0;i<7;i++)
{
labelWeek[i] = new JLabel();
} else {
labelWeek[i].setForeground(Color.BLACK); labelWeek[i].setFont(new Font("新宋体 ",Font.PLAIN,18)); } labelWeek[i].setText(stringWeekCn[i]); panel2.add(labelWeek[i]); } ————————————加上日期的 label————————————— for(int i= 0;i<42;i++) { labelDay[i] = new JLabel(); labelDay[i].setHorizontalAlignment(0); // 设置文本的水平对齐方式 labelDay[i].setText(""); panel2.add(labelDay[i]); labelDay[i].addMouseListener(listener); //对 label 进行监听 } ————————————设置月历———————————————— public void setDays(int monthDays,int initWeek,int day) { setDateNull(); for(int i=initWeek;i<initWeek+monthDays+1;i++) //initWeek 初始星期 { labelDay[i].setFont(new Font("黑体 ",Font.BOLD,18));
改变月份的方法是选择月份。 下拉菜单选择月份:
1、点击选择月份的下拉菜单,选择年份; 2、系统获取已选择的月份; 3、系统设置已选月份为当年的月历并在界面显示。
..
.
( 4)选择其他日期查看
1、点击其他日期; 2、系统对所有日期的 label 进行监听,判断点击的那个 3、返回被点击的 label 的数组下标; 4、对该下标的 label 设置蓝色边框,表示选中。
历绘制区; 2、单击“月份”的下拉式菜单,可以显示当前月的上一月 /下一月的日
历; 3、单击“年份”的下拉式菜单,可以显示上一年 /下一年的当前日历;
二、需求分析
对于万年历系统,其主要功能是:查看当日日期(年、月、日) 、查看 当时时间、查看其他年月的月历。主要使用流程是:查看万年历系统,查 看其他月份或年份日历,选中其他日期查看,查看当日日期。主要功能的 用例描述如下:
//设置日期的字体 if((i-initWeek+1)==day) //如果日期为今天 {
for(int j=0;j<42;j++)
..
.
labelDay[j].setBorder(null); labelDay[i].setBorder(border1); //选中当日日期 } if((i%7==0)||(i%7==6)) labelDay[i].setForeground(Color.red); else labelDay[i].setForeground(Color.BLACK); labelDay[i].setText(String.valueOf(i-initWeek+1)); } for(int i=initWeek+monthDays;i<42;i++) labelDay[i].setText(""); }
label;
三、设计思路
本课设界面由边界布局构成,主要有北方部件和中央部件两部分。
( 1)北方部件上有查询输入部分和时间显示部分:
1 、两个下拉列表用于选择的年份和月份,如改变年份后系统用 getShowYea(r )获得组合框中的中文年份, getCombYea(r )转换成英文格 式,得到用户选择的年份,同时用 getMonthDays()和 getInitWeek()得 到界面的设定,最终,用 setDays()设置出用户所要求的月历,改变月份 同理;