Java课程设计-万年历

合集下载

万年历java课程设计说明书

万年历java课程设计说明书

JA V A程序设计课程设计(论文)题目:万年历院(系):软件学院专业班级:计算机信息管理051班学号:学生姓名:指导教师:教师职称:起止时间:程序设计专题(报告)任务及评语目录第1章课程设计的目的与要求 (1)1.1 课程设计目的 (1)1.2 课程设计的实验环境 (1)1.3 课程设计的预备知识 (1)1.4 课程设计要求 (1)第2章课程设计内容 (2)2.1课程设计题目 (2)2.2课程设计整体设计说明 (2)2.2.1课程设计内容 (2)2.2.2程序中所用类说明 (3)2.2.3程序中使用方法的说明 (3)2.2.4异常处理说明 (4)2.2.5程序运行效果及存在的问题 (4)2.3程序部分源代码及注释 (5)第3章课程设计总结 (12)参考资料 (13)第1章课程设计的目的与要求1.1 课程设计目的《JA V A程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。

实践教学环节是必不可少的一个重要环节。

本课程的程序设计专题实际是计算机信息管理专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JA V A程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

1.2 课程设计的实验环境硬件要求能运行Windows 9.X操作系统的微机系统。

JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。

1.3 课程设计的预备知识熟悉JAVA语言及ECLIPSE开发工具。

1.4 课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。

要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JA V A程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。

Java万年历课程设计报告

Java万年历课程设计报告

杭州师范大学钱江学院课程设计题目万年历学院钱江学院专业信电分院计算机科学与技术班级计算机1101姓名崔伊平指导教师王李冬2013 年9 月20 日目录一.概述 (1)二.总体方案设计 (2)三.详细设计 (3)四.最终输出 (7)五.课程设计总结 (8)参考文献 (9)一、概述1.课程设计的目的通过显示年日历程序的设计,培养学生综合利用java语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力。

通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《java语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了java语言的好处和其可用性!2.课程设计的要求2.1输入查询的年份与月份,单击“更新”按扭,则可得到相应的日历。

本实验是对图形用户界面,布局管理器的综合运用。

要掌握APPLET容器中添加组件的方法,理解JAVA 的事件处理机制,编写独立的运行窗口。

2.2 输出形式使用独立的运行窗口进行显示。

界面主要由两部分组成——查询输入部分和结果显示部分。

查询输入部分包括两个文本域,一个用于输入年份:一个用于选择月份:一个更新按扭,用来触发查询事件。

二总体方案设计1.程序开发环境a.开发环境:eclipseb.系统环境:windows xp/7c.设计工具:Microsoft office 20032.整体流程图图1 流程图3.功能模块图图2 结构图三.详细设计3.1导入的包import java.applet.*;import java.awt.*;import java.awt.event.*;import java.util.*;3.2Applet的初始化public void init(){Label L1 = new Label("输入年份");Label L2 = new Label("输入月份");TextField F1 = new TextField(5);TextField F2 = new TextField(5);Button B1 = new Button("查询");int arr = new int[12];add(L1);add(F1);add(L2);add(F2);add(B1);Date date = new Date();F1.setText(String.valueOf(date.getYear() + 1900));F2.setText(String.valueOf(date.getMonth() + 1));B1.addActionListener(this);arr[0] = arr[2] = arr[4] = arr[6] = arr[7] = arr[9] = arr[11] = 31; arr[3] = arr[5] = arr[8] = arr[10] = 30;date.setDate(1);//设置每月第一天var = date.getDay();//得到每月最后一天}3.3监听器public void actionPerformed(ActionEvent e) {int x = Integer.parseInt(F1.getText()), i = Integer.parseInt(F2.getText()) - 1, s = 0;if(F1.getText().isEmpty()||F2.getText().isEmpty()){JOptionPane.showMessageDialog(null,"输入不能为空!");}Date date = new Date();date.setYear(x - 1900);date.setMonth(i);date.setDate(1);var = date.getDay();repaint();}3.3paint()public void paint(Graphics g) {int xpos, ypos;//arr[0] = arr[2] = arr[4] = arr[6] = arr[7] = arr[9] = arr[11] = 31; //arr[3] = arr[5] = arr[8] = arr[10] = 30;int x = Integer.parseInt(F1.getText()), i = Integer.parseInt(F2.getText()) - 1;if ((x % 4 == 0 && x % 100 != 0) || (x % 400 == 0))arr[1] = 29;elsearr[1] = 28;g.drawString("星期一", 50, 50);g.drawString("星期二", 100, 50);g.drawString("星期三", 150, 50);g.drawString("星期四", 200, 50);g.drawString("星期五", 250, 50);g.drawString("星期六", 300, 50);g.drawString("星期日", 350, 50);ARR = new String[arr[i]];int j = 0, k = 1;while (k <= arr[i]) {ARR[j] = String.valueOf(k);//获得每个月日期k ++;j ++;}int line = 0;for (int m = 0 ; m < ARR.length ; m ++) { //设置日期显示的位置ypos = 50 + 50 * (line + 1);xpos = (var * 50 + 50 * (m % 7)) % 350;if (xpos == 0) {xpos = 350;line ++;}g.drawString(ARR[m], xpos, ypos);}}}四.最终输出1.输入年月界面2.显示界面4.输入为空情况五.课程设计总结在最初设计这个程序的时候走了不少弯路,一开始对Applet程序没有深入理解,就把初始化部分写到构造函数里去了,后来在老师的提醒下,自己修改过来了。

java课程设计任务书万年历

java课程设计任务书万年历

课程设计(论文)任务书软件学院学院_______________________________ 专业_______________________ 班一、课程设计(论文)题目 ____________________________________________________________二、课程设计(论文)工作自2012 年12月_2£日起至2012年12月_28_日止。

三、课程设计(论文)地点:软件学院实训中心四、课程设计(论文)内容要求:1 •本课程设计的目的______________________________________________________________(1)掌握Java语言的程序设计方法;( 2)理论联系实际,进一步提高学生的软件开发技术;( 3)培养学生分析、解决问题的能力;( 4)提高学生实践论文撰写能力。

2 •课程设计的任务及要求1 )课程设计任务:(1) 设计一个万年历系统,能查看日期。

___________________________________________(2) 能查任意一年任意一月的日期。

_______________________________________________(3) 背景显示当前年月。

_________________________________________________________ 2) 创新要求:(1)月份查看使用下拉菜单。

(2)查看框可随意拉大拉小,背景显示当前的年月。

__________________________________3) 课程设计论文编写要求___________________________________________________________(1)课程设计任务及要求____________________________________________________________(2 )设计思路--工作原理、功能规划(3)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代码及注释)、界面等。

JAVA课程设计--基于JAVA的万年历设计与实现

JAVA课程设计--基于JAVA的万年历设计与实现

JAVA课程设计--基于JAVA的万年历设计与实现Java课程设计报告:万年历课程设计题目:万年历指导老师:**********学生姓名:*********专业:**********学号:*******1.课程设计目的本学期我们研究了Java语言,它是当今世界最流行的开发语言之一,具有面向对象、跨平台、分布应用等特点。

为了巩固所学知识,锻炼学生熟练应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。

本次课程设计要求我们利用已学的Java知识,编辑一个电子万年历,通过自主研究和实践,将理论变成实践,将知识真正学以致用。

2.需求分析2.1 本程序要求本程序要使用图形用户界面,能够实现日期与星期查询,同时显示此时的时间。

2.2 功能设计本程序要构建万年历程序,其功能如下:1) 通过窗口形式运行,实现界面功能;2) 以月历的形式来显示日期与星期;3) 为用户提供年份与月份的下拉形式菜单,选择年份与月份;4) 同时显示查看时的时刻。

3.课程设计的基本算法在Java程序中,通过定义中英文字符数组来存储星期信息,用于转换显示。

同时,使用Date类和GregorianCalendar 类来获取日期和时间信息,实现万年历的功能。

以上是本次Java课程设计的基本内容和算法,通过此次实践,我们巩固了Java语言的基本知识,掌握了JDK、JCreator等开发工具的运用,拓宽了常用类库的应用,对Java这门课程有了更深的了解和认识。

public class DateUtil {private static final String[] stringWeekEn = {"Sun"。

"Mon"。

"Tue"。

"Wed"。

"Thu"。

"Fri"。

"Sat"};private static final String[] stringMonthEn = {"Jan"。

Java超级万年历课程设计

Java超级万年历课程设计
2.2.1自定义类说明
(1) ClockAction类
作用:获取当前下拉列表中所选择的信息
实现的接口:ActionListener
ActionListener用于接收操作事件的侦听器接口。使用该类创建的对象可使用组件的addActionListener方法向该组件注册。在发生操作事件时,调用该对象的actionPerformed方法。ActionEvent指示发生了组件定义的动作的语义事件。当特定于组件的动作(比如被按下)发生时,由组件生成此高级别事件。事件被传递给每一个ActionListener对象,这些对象是使用组件的addActionListener方法注册的,用以接收这类事件。
2.2概要设计
本程序涉及三个类,MainFrame为显示日期部分的类,是程序中的主类,ClockAction
是对所要查询的年份及其月份进行选择的类,Clock是对当前时间进行显示的类,位与整个界面的底部,程序运行时,只要运行MainFrame即可显示出日期以及时间的详细信息。以下是对这三个类的具体说明。
//得到当前所选年份
c_year = Integer.parseInt(com1.getSelectedItem().toString());
//得到当前月份,并减1,计算机中的月为0-11
c_month = Integer.parseInt(com2.getSelectedItem().toString())-1;
2.设计方案论证
2.1需求分析
本次课程设计是编写一个万年历程序,主要目的是加强对Java的实际运用,了解图形用户界面的基本组件窗口、按纽(JButton)、标签(JLabel)、下拉表组件(JComboBox)、文本框(TextBox)、选择框、查询事件的处理,菜单的设计还有日期的计算等的使用方法,了解如何使用布局管理器对组件进行管理,以及如何使用Java的事件处理机制。

Java万年历课程设计报告

Java万年历课程设计报告

Java课程设计设计题目:万年历系别:计算机科学与工程学院专业:信息管理与信息系统学号: 1100340116 姓名:岑少兵指导教师:汪华澄时间: 2013-6-29目录摘要 (3)系统功能结构图 (3)1 系统模块设计 (4)1.1 需求设计 (4)1.2 开发和运行环境 (4)1.3 功能设计 (4)2 万年历详细设计思路 (4)2.1 程序设计思路 (5)2.2 程序运行主界面 (5)2.3 流程图 (6)3 各模块功能实现及代码说明 (6)3.1 MainFramel类 (6)3.2 Lunar类 (14)3.3 national类 (22)3.4 SetClock类 (26)4 小结 (34)5 参考文献 (34)基于Myeclipse的万年历摘要:万年历是日常生活中不可或缺的小工具,用万年历我们可以准确地查到当前,以后或是过去的日期,极大地方便了我们的生活。

在万年历上添加了显示本地时间以后会更加准确地显示时间。

无论是对于我们学生还是上班族或是自由职业者需要经常查看和查找万年历来规划自己将要做得一些事情,或是回忆在过去的时间里已经做过的事情,使之更加有利于提升我们的学习或是工作进度。

系统功能结构图:主要描述系统要实现的各个模块的功能。

1系统模块设计1.1需求分析本程序的要求为:1.使用图形用户界面2.能够实现日期与星期的查询3.能够显示农历4.能够查看世界时间5.能够添加闹钟1.2 开发和运行环境开发工具:Myeclipse运行环境: windows 71.3功能设计本程序要构建的万年历程序,其功能有以下几个方面:(1)通过(2)提供年份、月份的下拉形式菜单来选择年份和月份。

(3)通过Lunar类实现农历日期。

(4)通过national类实现世界时间。

(5)能以月历形式显示日期与星期。

(6)通过SetClock类来实现闹钟功能。

(7)通过点击世界时间按钮查询世界时间(8)通过点击闹钟按钮设置闹钟(9)显示系统当前时间和日期。

java课程设计万年历程序设计报告

java课程设计万年历程序设计报告

山东科技大学信息学院JAVA程序设计学院:信息科学与工程学院班级:计算机 11-3学号:0230姓名:赵乐目录目录 (1)前言 (1)1需求分析 (2)2.概要设计 (3)3.各模块的功能及程序说明 (5)4.测试分析 (13)5.源程序清单 (13)6.课程设计体会 (22)前言Java的前身是Oak,它一开始只是被应用于消费性电子产品中。

后来它的开发者们发现它还可以被用于更大范围的Internet上。

1995年,Java语言的名字从Oak编程了Java。

1997年发布。

1998年发布,标志Java2的诞生。

十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。

Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。

它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。

Java支持多线程编程,Java 运行时系统在多线程同步方面具有成熟的解决方案。

Java的平台标准有Java ME,Java SE和Java EE。

Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。

目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。

其中Java Development Kit 简称JDK是大多开发工具的基础。

以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。

1需求分析需求分析本程序的要求为:1.使用图形用户界面;2.本程序能够实现日期与星期的查询。

功能设计本程序要构建的万年历程序,其功能有以下几个方面:(1)通过网页形式运行,实现图形界面。

(2)能以月历形式显示日期与星期。

(3)支持用户自己输入年份,并提供月份的下拉形式菜单来选择月份。

java课程设计 万年历

java课程设计 万年历
}
}
3.4代码实现
package ss2;
import java.applet.Applet;
import java.awt.*;
import java.util.*;
public class WanNianLi extends Applet{
static final int TOP = 70; //顶端距离
int searchMonth,searchYear; //查询的年份及月份
}
(4)绘制程序的界面
public void init(){
setBackground(Color.green); //设置背景颜色
searchMonth = calendar.get(Calendar.MONTH); //得到系统年份,当前的年份
add(monthChoice);
add(btUpdate);
int componentCount=this.getComponentCount(); //得到Applet中的组件数量
for (int i=0;i<componentCount;i++){
getComponent(i).setFont(smallFont); //设置所有组件的显示字体
monthChoice.addItem(months[i]); //增加下拉框选项
}
monthChoice.select(searchMonth); //设置下拉框当前选择项
add(monthChoice);
add(btUpdate);
int componentCount=this.getComponentCount(); //得到Applet中的组件数量

java课程设计万年历程序设计报告

java课程设计万年历程序设计报告

山东科技大学信息学院JAVA程序设计学院:信息科学与工程学院班级:计算机11-3学号:**************:**目录目录 (1)前言 (1)1需求分析 (2)2.概要设计 (3)3.各模块的功能及程序说明 (5)4.测试分析 (13)5.源程序清单 (13)6.课程设计体会 (22)前言Java的前身是Oak,它一开始只是被应用于消费性电子产品中。

后来它的开发者们发现它还可以被用于更大范围的Internet上。

1995年,Java语言的名字从Oak编程了Java。

1997年J2SE1.1发布。

1998年J2SE1.2发布,标志Java2的诞生。

十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。

Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。

它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。

Java 支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。

Java 的平台标准有Java ME,Java SE和Java EE。

Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。

目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。

其中Java Development Kit 简称JDK是大多开发工具的基础。

以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。

1需求分析1.1需求分析本程序的要求为:1.使用图形用户界面;2.本程序能够实现日期与星期的查询。

1.2功能设计本程序要构建的万年历程序,其功能有以下几个方面:(1)通过网页形式运行,实现图形界面。

(2)能以月历形式显示日期与星期。

(3)支持用户自己输入年份,并提供月份的下拉形式菜单来选择月份。

java课程设计万年历报告

java课程设计万年历报告

java课程设计万年历报告一、课程目标知识目标:1. 掌握Java语言基础,包括数据类型、运算符、控制结构等;2. 学会使用Java中的类和对象,理解面向对象编程思想;3. 了解Java中日期时间处理类,如java.util.Calendar和java.time包的使用;4. 能够运用所学知识设计并实现一个简单的万年历程序。

技能目标:1. 培养学生运用Java语言解决实际问题的能力;2. 提高学生的编程实践能力,使其能够独立完成程序的设计、编码、测试和调试;3. 培养学生查阅资料、自学新知识的能力,为后续学习打下基础。

情感态度价值观目标:1. 培养学生热爱编程,对计算机科学产生浓厚兴趣;2. 培养学生积极思考、主动探究的学习态度,提高其解决问题的自信心;3. 培养学生良好的团队合作精神,学会在团队中沟通与协作。

分析课程性质、学生特点和教学要求:本课程为Java语言编程课程,旨在让学生掌握Java编程基础,并能运用所学知识解决实际问题。

学生处于初中年级,具备一定的逻辑思维能力,对新鲜事物充满好奇心,但编程实践经验不足。

因此,教学要求注重理论与实践相结合,以项目驱动教学,激发学生兴趣,培养其编程技能和解决问题的能力。

课程目标分解:1. 知识目标:通过讲解和练习,使学生掌握Java基础知识和日期时间处理类;2. 技能目标:通过项目实践,培养学生编程能力和解决问题的能力;3. 情感态度价值观目标:通过团队合作和互动交流,激发学生兴趣,培养其积极的学习态度和价值观。

二、教学内容1. Java基础知识回顾- 数据类型与变量- 运算符与表达式- 控制结构(顺序、分支、循环)2. 面向对象编程基础- 类与对象- 方法- 封装、继承、多态3. Java日期时间处理类- java.util.Calendar类- java.time包(LocalDate、LocalTime、LocalDateTime)4. 万年历项目实践- 项目需求分析- 程序设计(界面设计、功能模块划分)- 编码实现(关键代码:日期计算、界面展示)- 测试与调试5. 教学内容的安排和进度- Java基础知识回顾(1课时)- 面向对象编程基础(2课时)- Java日期时间处理类(1课时)- 万年历项目实践(3课时)6. 教材章节及内容列举- 《Java编程思想》第3章:控制结构- 《Java编程思想》第4章:面向对象编程- 《Java核心技术 卷I》第9章:日期时间处理教学内容确保科学性和系统性,结合课程目标,注重理论与实践相结合,以项目驱动教学,使学生在实践中掌握Java编程知识。

Java万年历课程设计任务书剖析

Java万年历课程设计任务书剖析

信息科学与工程学院课程设计题目: Java万年历设计姓名:学号: 20班级: 201 课程: Java项目实训任课教师2015年5月20日课程设计任务书及成绩评定目录前言 (3)一、系统模块设计 (4)1.1需求分析 (4)1.2 开发和运行环境 (4)二、详细设计 (5)2.2程序运行主界面 (6)2.3流程图 (7)三、部分功能实现及代码说明 (7)四、小结 (15)五、参考文献 (15)前言摘要:万年历是日常生活中不可或缺的小工具,用万年历我们可以准确地查到当前,以后或是过去的日期,极大地方便了我们的生活。

在万年历上添加了显示本地时间以后会更加准确地显示时间。

无论是对于我们学生还是上班族或是自由职业者需要经常查看和查找万年历来规划自己将要做得一些事情,或是回忆在过去的时间里已经做过的事情,使之更加有利于提升我们的学习或是工作进度。

系统功能结构图:主要描述系统要实现的各个模块的功能。

一、系统模块设计1.1需求分析本程序的要求为:1.使用图形用户界面2.能够实现日期与星期的查询3.能够显示农历4.能够查看世界时间5.能够添加闹钟1.2 开发和运行环境开发工具:Myeclipse运行环境: windows 71.3功能设计本程序要构建的万年历程序,其功能有以下几个方面:(1)通过(2)提供年份、月份的下拉形式菜单来选择年份和月份。

(3)通过Lunar类实现农历日期。

(4)通过national类实现世界时间。

(5)能以月历形式显示日期与星期。

(6)通过SetClock类来实现闹钟功能。

(7)通过点击世界时间按钮查询世界时间(8)通过点击闹钟按钮设置闹钟(9)显示系统当前时间和日期。

(10)显示作者信息。

二、详细设计2.1程序设计思路1. 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。

然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。

java课程设计报告-万年历

java课程设计报告-万年历

山西大学Java课程设计报告题目:万年历班级:14 班学号:姓名:2016年12月目录1 绪论 (1)1.1选题目的及意义 (1)1.2 系统概述 (1)1.3 人员组成及分工 (1)2 需求分析 (1)3 总体设计 (1)4 详细设计 (1)5 系统实现 (2)5.1 开发环境 (3)5.2 关键技术 (3)6.运行结果 (6)7.软件测试 (7)8.总结 (7)9 参考文献 (8)1.绪论1.1选题目的及意义选题目的:本次课程设计为课本后设计题目任选一题进行设计。

思考一段时间后,我们组决定做一个万年历的设计。

主要考虑到以前时间少课程内容多,JAVA课程基础内容掌握并不是很抓实,而对于设计一个万年历程序,由于其功能简单设计也相对较易,对于我们每个人的学习情况比较合适,并且通过设计这样的一个日历小组件,也能使自己对JAVA 的一些基础知识掌握的更加牢固。

1.2 系统概述随着电子技术的不断发展,人们的不断创新,万年历已经不再局限于书本形式,而是以电脑软件或者电子产品的形式出现。

让其更加便捷。

在学习了JAVA课程后,将以JAVA 形式编译出一个简易的万年历。

1.3 人员组成及分工:负责搜集查找资料:调试程序最后进行程序的编写与修改2.需求分析本程序的要求为:1.使用图形用户界面;2.本程序能够实现日期与星期的查询。

3.可以添加或者删除日志3.总体设计(1)可以通过图形界面显示日历。

(2)能以月历形式显示日期与星期。

(3)支持用户自己输入年份,可以通过上一年,下一年等按钮来选择年份和月份。

(4)可以添加或者删除并且点击对应日期显示日志。

4.详细设计1. 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。

然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。

java课程设计万年历程序设计报告

java课程设计万年历程序设计报告

信息科学与工程学院山东科技大学信息学院JAVA程序设计学院:信息科学与工程学院班级:计算机11-3学号:201101050230姓名:赵乐目录目录 (1)前言 (1)1 需求分析 (2)2.概要设计 (3)3.各模块的功能及程序说明 (5)4.测试分析 (13)5.源程序清单 (13)6.课程设计体会 (22)前言Java 的前身是 Oak,它一开始只是被应用于消费性电子产品中。

后来它的开发者们发现它还可以被用于更大范围的Internet上。

1995年,Java语言的名字从Oak编程了 Java。

1997 年 J2SE1.1 发布。

1998 年 J2SE1.2 发布,标志 Java2 的诞生。

十多年来, Java 编程语言及平台成功地运用在网络计算及移动等各个领域。

Java 的体系结构由Java 语言、 Java class 、Java API 、 Java 虚拟机组成。

它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。

Java 支持多线程编程,Java 运行时系统在多线程同步方面具有成熟的解决方案。

Java 的平台标准有 Java ME, Java SE 和 Java EE。

Java 发展到今天,它的卓越成就及在业界的地位毋庸置疑。

目前在众多的支持Java 的开发工具中主要的7 有 Java Development Kit ,NetBeans,Jcreator ,JBuilder , JDeveloper 和 Eclipse等。

其中 Java Development Kit简称JDK是大多开发工具的基础。

以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。

1需求分析1.1 需求分析本程序的要求为: 1. 使用图形用户界面;2. 本程序能够实现日期与星期的查询。

1.2 功能设计本程序要构建的万年历程序,其功能有以下几个方面:(1)通过网页形式运行,实现图形界面。

java万年历课程设计报告2010

java万年历课程设计报告2010

JA V A课程设计报告模拟时钟系别:计算机系班级:计本1119班姓名:高鹏飞学号:1162041928指导教师:白茹意一、课程设计任务及要求(1)设计任务:编写一个Java 万年历程序,实现日期和星期的查询。

(2)设计要求:1、主界面采用边界布局,北面是一个设置年月的控制面板,中间是日历绘制区;2、单击“月份”的下拉式菜单,可以显示当前月的上一月/下一月的日历;3、单击“年份”的下拉式菜单,可以显示上一年/下一年的当前日历;二、需求分析对于万年历系统,其主要功能是:查看当日日期(年、月、日)、查看当时时间、查看其他年月的月历。

主要使用流程是:查看万年历系统,查看其他月份或年份日历,选中其他日期查看,查看当日日期。

主要功能的用例描述如下:(1)查看万年历1、进入万年历系统;2、系统获取当日日期并设置日历为当月,红框选中当日日期;(2)查询当月其他年份改变年份的方法是选择年份。

下拉菜单选择年份:1、点击选择年份的下拉菜单,选择年份;2、系统获取已选择的年份;3、系统设置为已选年份当月的月历并显示在界面显示。

(3)查询当年的其他月份改变月份的方法是选择月份。

下拉菜单选择月份:1、点击选择月份的下拉菜单,选择年份;2、系统获取已选择的月份;3、系统设置已选月份为当年的月历并在界面显示。

(4)选择其他日期查看1、点击其他日期;2、系统对所有日期的label进行监听,判断点击的那个label;3、返回被点击的label的数组下标;4、对该下标的label设置蓝色边框,表示选中。

三、设计思路本课设界面由边界布局构成,主要有北方部件和中央部件两部分。

(1)北方部件上有查询输入部分和时间显示部分:1、两个下拉列表用于选择的年份和月份,如改变年份后系统用getShowYear()获得组合框中的中文年份,getCombYear()转换成英文格式,得到用户选择的年份,同时用getMonthDays()和getInitWeek()得到界面的设定,最终,用setDays()设置出用户所要求的月历,改变月份同理;2、四个button按钮用于实现年—、年+、月—、月+,如摁了“年+”后,系统用getShowYear()和getCombYear()获得组合框中的年份,在其年份上加1,将改变的年份显示在组合框里,计算出该年月日历的安排,并用setDays()设置出用户所要求得月历,其他按钮同理;3、一个button按钮用于实现对今日日期的查找,当用户摁了“今日”后,系统用getNowYear()和getNowMonth()得到当日年月,并调用setNowDay()将系统组合框内年月设为当日年月,显示当月月历,同时系统用getNowDay()获得当日日期,用labelDay[i].setBorder(border1)语句将当日的日期用蓝色的边框框住表示选定;4、创建一个标签用于显示时间,监听系统时间并显示。

JAVA万年历系统课程设计报告附源码

JAVA万年历系统课程设计报告附源码

2013-2014学年第二学期《面向对象程序设计》课程设计报告题目:万年历系统专业:计算机科学与技术班级:姓名:学号:指导教师:成绩:计算机与信息工程系2014年6月6日目录1设计内容及要求设计内容万年历,实际上就是记录一定时间范围内(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用。

在我设计的万年历中主要有:(1)使用图形用户界面来查询用用户所需的日期信息,符合日常软件使用规范。

(2)按月份查询,实现了显示查询1901~2100年某月所有日期的阴阳历对照。

(3)并且添加了重大节日与星座等信息,界面采用日常的星期与月份结合的格式,方便查看与使用。

(4)编写万年历的课程设计,是为了使同学们更加了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。

为后续各门计算机课程的学习和毕业设计打下坚实基础。

设计任务及具体要求利用JAVA语言编写的万年历系统采用了多种JAVA语句来实现多种功能。

用户可以通过本程序的applet运行界面来查找一整年某月的农历和阳历,可以查找用户所想了解的某一天具体为星期几,并且可以看到一些重大节日的具体时间。

要求:满足设计万年历系统的目的,即当用户查询年份与月份时,系统就要将这一年的某一月份的阴历与阳历全部显示出来,并且附带这一月份的重大节日。

当用户随意改动年份或月份时系统自动显示与星期对应的日期。

用户点击日期时系统会显示具体星座信息。

2概要设计程序设计思路(1)总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。

然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。

Java超级万年历课程设计

Java超级万年历课程设计

图3 选择年份、月份
按照要求输入相应的查询条件后,界面上即可显示所要查询的日期以及对应显示当前的详细时间。

这样,便可以对任何日期进行查询了,为使用者提供了很大的帮助。

如图4所示。

图4显示所选日期
4.设计体会
Java 语言是解释执行的高级编程语言,是面向对象的程序设计语言,功能强大,它是解释执行的,能跨平台使用。

具有较高的性能和高度的安全性,Java程序的三级代码安全检查机制可以有效的防止非法代码的入侵,阻止对内存的越权访问,能够避免病毒的侵害,成为Internet上最安全的技术之一。

并且支技多线程,可使用户程序并行执行,即有内存垃圾自动收集机制。

Java语言是一种“直。

万年历java课程设计报告

万年历java课程设计报告

万年历java课程设计报告一、课程目标知识目标:1. 让学生掌握Java语言中日期处理的基本知识,理解万年历的原理和实现方式;2. 使学生了解并运用面向对象编程思想,设计合理的类和对象,实现万年历功能;3. 帮助学生理解数组、循环、条件判断等基础语法在万年历项目中的应用。

技能目标:1. 培养学生运用Java语言编写程序解决实际问题的能力,特别是日期计算和处理;2. 培养学生运用面向对象编程思想,进行模块化设计和编程;3. 培养学生运用调试工具和技巧,找出并解决程序中的错误。

情感态度价值观目标:1. 培养学生积极探究、合作学习的态度,增强团队协作能力;2. 培养学生面对编程困难时,勇于挑战、持续改进的精神;3. 增强学生的创新意识,激发对计算机编程的兴趣和热情。

课程性质:本课程为计算机科学与技术专业的Java语言程序设计课程的一部分,旨在通过实际项目万年历的设计与实现,使学生掌握Java编程的基本知识和技能。

学生特点:学生处于高中年级,已经具备一定的编程基础,对Java语言有一定的了解,但对于面向对象编程和实际项目开发的经验较少。

教学要求:结合学生特点,本课程要求教师采用任务驱动的教学方法,将万年历项目拆解为多个小任务,引导学生逐步完成。

在教学过程中,注重理论与实践相结合,强调学生的实际操作和团队协作。

通过课程学习,使学生在掌握知识技能的同时,培养良好的情感态度和价值观。

最终将课程目标分解为具体的学习成果,以便进行教学设计和评估。

二、教学内容1. Java语言基础复习:回顾变量、数据类型、运算符、数组等基本概念,为编写万年历程序打下基础。

教材章节:第一章至第三章。

2. Java控制结构:介绍循环结构(for、while)、条件判断(if、switch)等,用于实现日期计算。

教材章节:第四章。

3. 面向对象编程基础:讲解类、对象、构造方法、封装等概念,指导学生设计万年历类。

教材章节:第五章。

4. Java异常处理:学习异常处理机制,提高程序的稳定性和可靠性。

java程序设计报告2万年历

java程序设计报告2万年历

程序设计报告JA V A设计报告2:万年历姓名:王颖学号:001学习中心:延安富县学习中心专业:计算机科学与技术层次:专升本身份证号:联系电话:万年历程序设计一、设计分析万年历有很多作用,顾名思义它是一种很方便得计时计年工具,随着科技得发展,我们已经可以通过计算机制作出精美的万年历,通过计算机制作得万年历不但外观美观,而且功能强大。

通过万年历,我们可以实现很多功能,随意看某年得年份,某年得月份,随意调整某年得某天,并将其显示出来,而且有判断闰年闰月得功能,十分方便。

二、程序流程框图主程序流程图三、具体设计1、变量设计2、程序源代码import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.border.*;import java.util.Calendar;import java.util.*;import java.io.*;import java.io.IOException;public class calendar extends JFrame implements ActionListener,MouseListener {int year,month,day;int yearafterquery,monthafterquery;int startday;String SwitchMonth;String key;int changeyearmessage;int changemonthmessage;int priormonth;int prioryear;boolean ischange=false;boolean ischange_priornext=false; private JPanel LeftPane,RightPane;//Left subprivate JLabel YearLabel;private JComboBox MonthCombobox;private JTextField ShowDays[]= new JTextField[42];private JTextField YearText;private JLabel Ask;private JLabel ShowDate;private JLabel Blank;private JLabel TopBarTitle[]=new JLabel[7];private JButton ToToday;private JButton Query;privateString week[]={"SUN","MON","TUE","WED","THU","FRI","SAT"};//right subprivate JLabel NorthMonthDayYear;private JTextArea CenterText;private JButton SouthSave,SouthDelete;private JButton PriorMonth;private JButton NextMonth;public calendar(int year,int month,int day){setTitle("My Calendar&Textbook");//the layout about left of jpaneLeftPane = new JPanel();JPanel LeftCenter = new JPanel();JPanel LeftNorth = new JPanel();//JPanel LeftSouth = new JPanel();LeftPane.setLayout(new BorderLayout());LeftPane.add(LeftNorth,BorderLayout.NORTH);LeftPane.add(LeftCenter,BorderLayout.CENTER);LeftPane.add(ToToday = new JButton("Go to today",new ImageIcon("../images/Handle.gif")),BorderLayout.SOUTH);ToToday.setBackground(Color.cyan);ToToday.addActionListener(this);LeftPane.validate();//the layout of LeftPane//LeftPane_NorthLeftNorth.setLayout(new GridLayout(3,1,0,-2));LeftNorth.add(Ask = new JLabel(" Plese input the informations which you want query:"));JPanel North = new JPanel(new FlowLayout(0,8,0));LeftNorth.add(North);North.add(YearLabel=new JLabel("Year:"));North.add(YearText = new JTextField(4));YearText.setBackground(Color.getHSBColor(30,20,50));YearText.setForeground(Color.blue);YearText.setFont(new Font("TimesRoman",Font.BOLD,17));YearText.setFocusable(true);North.add(Blank=new JLabel(" "));North.add(MonthLabel = new JLabel("Month:"));North.add(MonthCombobox = new JComboBox());//add month to monthcomboboxfor(int i=1;i<=12;i++){MonthCombobox.addItem(new Integer(i));}//Switch the monthMonthCombobox.setForeground(Color.blue);MonthCombobox.setFont(new Font("TimesRoman",Font.BOLD,12));North.add(Blank=new JLabel(" "));North.add(Query=new JButton("Query"));Query.setForeground(Color.blue);Query.addActionListener(this);JPanel North2=new JPanel(new FlowLayout());LeftNorth.add(North2);North2.add(PriorMonth=new JButton(new ImageIcon("../images/prior.gif")));PriorMonth.addActionListener(this);PriorMonth.setActionCommand("prior");priormonth=month;prioryear=year;SwitchMonth(month);North2.add(ShowDate = new JLabel(SwitchMonth+" "+","+" "+String.valueOf(year),SwingConstants.CENTER));ShowDate.setForeground(Color.blue);ShowDate.setFont(new Font("TimesRoman",Font.BOLD,14));North2.add(NextMonth=new JButton(new ImageIcon("../images/next.gif")));NextMonth.addActionListener(this);NextMonth.setActionCommand("next");//LeftPane_CenterLeftCenter.setLayout(new GridLayout(7,7));//print titlefor(int i=0;i<7;i++){TopBarTitle[i]=new JLabel();TopBarTitle[i].setText(week[i]);TopBarTitle[i].setForeground(Color.darkGray);TopBarTitle[i].setHorizontalAlignment(0);TopBarTitle[i].setBackground(Color.MAGENTA );TopBarTitle[i].setBorder(BorderFactory.createRaisedBevelBorder());LeftCenter.add(TopBarTitle[i]);}for(int i=0;i<42;i++){ShowDays[i]=new JTextField();ShowDays[i].addMouseListener(this);ShowDays[i].setEditable(false);LeftCenter.add(ShowDays[i]);}//print the body of monthPrintMonth(year,month,day);//the layout about right of jpaneRightPane = new JPanel(new BorderLayout());JPanel RightCenter = new JPanel();JPanel RightNorth = new JPanel();JPanel RightSouth = new JPanel(new FlowLayout());RightPane.add(RightNorth,BorderLayout.NORTH);RightPane.add(RightCenter,BorderLayout.CENTER);RightPane.add(RightSouth,BorderLayout.SOUTH);RightNorth.add(NorthMonthDayYear=new JLabel(">>"+year+","+SwitchMonth+","+day+"<<")); key=year+"_"+SwitchMonth+"_"+day;NorthMonthDayYear.setForeground(Color.blue);NorthMonthDayYear.setFont(new Font("TimesRoman",Font.BOLD,17));RightCenter.add(CenterText=new JTextArea("please write today's things."));CenterText.setLineWrap(true);CenterText.setSelectedTextColor(Color.blue);//CenterText.addActionListener(this);RightSouth.add(SouthSave=new JButton(" Save "));SouthSave.setBackground(Color.cyan);SouthSave.addActionListener(this);SouthSave.setActionCommand("Save");RightSouth.add(SouthDelete=new JButton(" Delete "));SouthDelete.setBackground(Color.cyan);SouthDelete.addActionListener(this);SouthDelete.setActionCommand("Delete");this.year = year;this.month = month;this.day = day;///add container to put LeftPane and RightPaneContainer con=getContentPane();JSplitPane split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,RightPane,LeftPane);//gai bian con.add(split,BorderLayout.CENTER);con.validate();//add CenterPane to notepad//CenterPane initializesetFont(new Font("Times New Roman",Font.PLAIN,12));JScrollPane scrollpane = new JScrollPane(CenterText); scrollpane.setPreferredSize(new Dimension(220,250)); RightCenter.add(scrollpane);//init randomaccessfile}//switch the month in englishpublic void SwitchMonth(int month){switch(month){case 1:SwitchMonth="Jan";break;case 2:SwitchMonth="Feb";break;case 3:SwitchMonth="Mar";break;case 4:SwitchMonth="Apr";break;case 5:SwitchMonth="May";break;case 6:SwitchMonth="Jun";break;case 7:SwitchMonth="Jul";break;case 8:SwitchMonth="Aug";break;case 9:SwitchMonth="Sep";break;case 10:SwitchMonth="Qct";break;case 11:SwitchMonth="Nov";break;case 12:SwitchMonth="Dec";break;}}//print the body of the monthpublic void PrintMonth(int year,int month,int day){//Get start day of the week for the first date in the month int startday = GetStartDay(year,month);//Get number of days in the monthint dayinmonth = GetNumOfDaysInMonth(year,month); //Print header//Print bodyPrintMonthBody(startday,dayinmonth,day);}//PrintMonth(int year,int month,int day)'s burdenpublic void PrintMonth(int year,int month){//Get start day of the week for the first date in the monthint startday = GetStartDay(year,month);//Get number of days in the monthint dayinmonth = GetNumOfDaysInMonth(year,month);//Print header//Print bodyPrintMonthBody(startday,dayinmonth);}//PrintMonthBody(int startday,int dayinmonth,int day)'s burden public void PrintMonthBody(int startday,int dayinmonth){for(int i=startday,n=1;i<startday+dayinmonth;i++){ShowDays[i].setText(""+n);ShowDays[i].setHorizontalAlignment(0);//let centerif(n==day){ShowDays[i].setForeground(Color.green);ShowDays[i].setFont(new Font("TimesRoman",Font.BOLD,20)); ShowDays[i].setBackground(Color.DARK_GRAY);}else{ShowDays[i].setFont(new Font("TimesRoman",Font.BOLD,12)); ShowDays[i].setForeground(Color.white);ShowDays[i].setBackground(Color.DARK_GRAY);}n++;}for(int i=0;i<startday;i++){ShowDays[i].setText("");ShowDays[i].setBackground(Color.DARK_GRAY);}for(int i=startday+dayinmonth;i<42;i++){ShowDays[i].setText("");ShowDays[i].setBackground(Color.DARK_GRAY);}//judge leapyear is or notpublic boolean IsLeapYear(int year){if((year%400==0)||(year%4==0&&year%100!=0))return true;elsereturn false;}//judge the start day of a monthpublic int GetStartDay(int year,int month){//get total number of day since1/1/0000int startday0001=-32768;long totalnumofdays=GetTotalNumOfDays(year,month);//return the start dayreturn (int)((totalnumofdays+startday0001)%7);}//judge the days of a yearpublic long GetTotalNumOfDays(int year,int month){long total=0;//get the total days from -32767 to yearfor(int i=-32767;i<year;i++){if(IsLeapYear(i))total=total+366;elsetotal=total+365;}//Add days from jan to the month prior to the calendar monthfor(int i=1;i<month;i++)total=total+GetNumOfDaysInMonth(year,i);return total;}//judge the days of a monthpublic int GetNumOfDaysInMonth(int year,int month){if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 ||month==12) return 31;if(month==4 || month==6 || month==9 || month==11)return 30;if(month==2)if(IsLeapYear(year))return 29;elsereturn 28;}return 0;}public void WriteRecord(){String content;content=CenterText.getText();int n=content.length();char[] contentarr=new char[n];try{int i=0;for(i=0;i<n;i++){contentarr[i]=content.charAt(i);}File Diary = new File("Diary");Diary.mkdir();File myfile=new File("Diary\\"+key+".txt"); FileWriter Record=new FileWriter(myfile);for(i=0;i<contentarr.length;i++){Record.write(contentarr[i]);}Record.close();JOptionPane.showMessageDialog(this,"Save success!");}catch(IOException ex){}}public void ReadRecord(){try{String content="";File myfile=new File("Diary\\"+key+".txt"); FileReader Record=new FileReader(myfile);if(myfile.exists())long b=myfile.length();//char[] contentarr=new char[b];int n=JOptionPane.showConfirmDialog(this,"Today has logs,are you read?","Confirm",JOptionPane.YES_NO_CANCEL_OPTION);if(n==JOptionPane.YES_OPTION){while((b=Record.read())!=-1){content=content+(char)b;}CenterText.setText(content);}}Record.close();}catch(IOException ex){CenterText.setText("Today has not logs.");}}public void DeleteFile(){String filepath="Diary\\"+key+".txt";File myfile=new File(filepath);int n=JOptionPane.showConfirmDialog(this,"Are you sure delete the file?","Confirm",JOptionPane.YES_NO_CANCEL_OPTION);if(n==JOptionPane.YES_OPTION){if(myfile.exists()){Runtime rt = Runtime.getRuntime();try{rt.exec("cmd /c del "+filepath);}catch (IOException e){e.printStackTrace();}JOptionPane.showMessageDialog(this,"Delete successed!");CenterText.setText("Today has not logs.");}elseJOptionPane.showMessageDialog(this,"The file doesn't exist,delete failured!");}}}public void AboutActionListenerWay(){try{prioryear=Integer.parseInt(YearText.getText());priormonth=MonthCombobox.getSelectedIndex()+1;String StrYearText=YearText.getText();changeyearmessage=Integer.parseInt(StrYearText);changemonthmessage=MonthCombobox.getSelectedIndex()+1;monthafterquery=changemonthmessage;yearafterquery=changeyearmessage;SwitchMonth(changemonthmessage);ShowDate.setText(SwitchMonth+" "+","+" "+String.valueOf(changeyearmessage));PrintMonth(changeyearmessage,changemonthmessage);ischange=true;}catch(Exception ee){JOptionPane.showMessageDialog(this,"The input format doesn't match","Error",JOptionPane.ERROR_MESSAGE);}}//do actonlistener thingspublic void actionPerformed(ActionEvent eAction){String ActionCommand=eAction.getActionCommand();//Handle button eventsif(eAction.getSource() instanceof JButton){//Handle the queryif("Query".equals(ActionCommand)){try{AboutActionListenerWay();}catch(Exception ee){JOptionPane.showMessageDialog(this,"The input format doesn't}}//Handle prior monthif("prior".equals(ActionCommand)){if(priormonth>1){priormonth=priormonth-1;}else{priormonth=12;prioryear=prioryear-1;}PrintMonth(prioryear,priormonth,day);SwitchMonth(priormonth);ShowDate.setText(SwitchMonth+" , "+prioryear);NorthMonthDayYear.setText(">>"+SwitchMonth+","+day+","+prioryear+"<<"); key=prioryear+"_"+SwitchMonth+"_"+day;ischange_priornext=true;}//Handle next monthif("next".equals(ActionCommand)){if(priormonth<12){priormonth=priormonth+1;}else{priormonth=1;prioryear=prioryear+1;}PrintMonth(prioryear,priormonth,day);SwitchMonth(priormonth);ShowDate.setText(SwitchMonth+" , "+prioryear);NorthMonthDayYear.setText(">>"+SwitchMonth+","+day+","+prioryear+"<<"); key=prioryear+"_"+SwitchMonth+"_"+day;ischange_priornext=true;}//Handle the "Go to today"if("Go to today".equals(ActionCommand)){YearText.setText("");MonthCombobox.setSelectedIndex(0);SwitchMonth(month);ShowDate.setText(SwitchMonth+" "+","+" "+String.valueOf(year)); NorthMonthDayYear.setText(">>"+year+SwitchMonth+","+day+","+"<<"); key=year+"_"+SwitchMonth+"_"+day;priormonth=month;prioryear=year;ischange=false;}//Handle the "Save"if("Save".equals(ActionCommand)){WriteRecord();}if("Delete".equals(ActionCommand)){DeleteFile();}}//Handle JTextField eventsif(eAction.getSource() instanceof JTextField){//Handle the queryAboutActionListenerWay();}}public void mousePressed(MouseEvent eMouse){int day;try{//Handle ShowDays[] eventsif(ischange==false){JTextField source=(JTextField)eMouse.getSource();day=Integer.parseInt(source.getText());if(ischange_priornext==false){NorthMonthDayYear.setText(">>"+SwitchMonth+","+day+","+year+"<<"); key=year+"_"+SwitchMonth+"_"+day;}elseNorthMonthDayYear.setText(">>"+SwitchMonth+","+day+","+prioryear+"<<");key=prioryear+"_"+SwitchMonth+"_"+day;}}elseJTextField source=(JTextField)eMouse.getSource();day=Integer.parseInt(source.getText());if(ischange_priornext==false){SwitchMonth(changemonthmessage);NorthMonthDayYear.setText(">>"+SwitchMonth+","+day+","+changeyearmessage+"<<"); key=changeyearmessage+"_"+SwitchMonth+"_"+day;}else{SwitchMonth(priormonth);NorthMonthDayYear.setText(">>"+SwitchMonth+","+day+","+prioryear+"<<");key=prioryear+"_"+SwitchMonth+"_"+day;}}ReadRecord();}catch(Exception ee){}}public void mouseClicked(MouseEvent e){}public void mouseReleased(MouseEvent e){}public void mouseEntered(MouseEvent e){}public void mouseExited(MouseEvent e){}public void SaveLog(int year,int month,int day){}public static void main(String[] args) throws Exception{int y=calendar.get(Calendar.YEAR);int m=calendar.get(Calendar.MONTH)+1;int d=calendar.get(Calendar.DAY_OF_MONTH);calendar frame = new calendar(y,m,d);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(560,300);frame.setLocation(100,100);frame.setVisible(true);frame.setResizable(false);frame.ReadRecord();}}四、设计结果与分析4.1程序效果图程序打开时的效果,左边是记事本框,右边是万年历框。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河北科技大学课程设计报告号:学生姓名:学专业班级:程序设计课程设计Java课程名称:学期学年第 2 2 015 学年学期: 2 014 —指导教师:刘伟月年 2 0的?.................................................................. ................................1??2.需求分................................................................... .........析................................1?3.总体设计................................................................... ........................................1?4.详细设计................................................................... ........................................1?5.软件测试................................................................... . (10)6.课程设计总结................................................................... ................................11.一、课程设计目的(1)熟练使用java语言编写程序,解决实际问题。

?(2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;?(3)学会自己调试程序的方法并掌握一定的技巧。

二、需求分析本程序的要求为:1.使用图形用户界面;?2.本程序能够实现日期与星期的查询。

?三、总体设计(1)可以通过图形界面显示日历。

?(2)能以月历形式显示日期与星期。

?(3)支持用户自己输入年份,可以通过上一年,下一年等按钮来选择年份和月份。

??四、详细设计1.总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。

,0若是取余得几既为星期几,7使总天数除以输出月份第一天为星期几的算法:2.则为星期日。

?3.算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。

?4.查询年份必须为四位有效数字,否则不予显示。

程序源代码:importimportimportimportimportimport;importimportimport ;import;importimportimport java.awt.*;importimport java.text.*;import ;import java.util.*;import javax.swing.*;import .*;import javax.swing.*;importpublic class wannianli extends JFrame implementsActionListener{getInstance();cal Calendar = Calendar. private private String [] str = {星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期日};private DefaultTableModel dtm = new DefaultTableModel(null,str);private JTable table = new JTable(dtm); //装日期的表格private JScrollPane sp = new JScrollPane(table);private JButton bLastYear = new JButton(上一年);private JButton bNextYear = new JButton(下一年);private JButton bLastMonth = new JButton(上月);private JButton bNextMonth = new JButton(下月);private JTextField Year = new JTextField(4);//jtfYear年份显示和输入文本);年 JLabel(jla= new private JLabelJTextField(4);= newprivate JTextField month);JLabel(new月private JLabel jla1 =月份显//jtfMonth newJTextField(2); = private JTextField jtfMonth示文本框;JComboBox comb private //new JPanel();装入控制日期按钮的模块p1private JPanel =JPanel();= new JPanel private p2 GridLayout(2,1));new JPanel( new = JPanel private p3 JPanel();new = p4 JPanel privateprivate JPanel p5 = new JPanel();private JLabel l = new JLabel(文本框中可直接键入要查找的年份,以提高查询效率);private JLabel lt = new JLabel();private JLabel com = new JLabel(请选择月份尺);private int lastTime;privatewannianli(){super(万年历); //框架命名EXIT_ON_CLOSE);//窗口关闭函数this.setDefaultCloseOperation(JFrame. GRAY);//星期之间的网格线是灰色的.setGridColor(Color.tabletable.setColumnSelectionAllowed(true);BLACK);//.setSelectionBackground(Color.当选定某一天时这一天背景黑table色GREEN);//选定的日期字体是绿色的table.setSelectionForeground(Color. table.setBackground(new Color(184,207,229));//日期显示表格颜色浅蓝色BOLD日期数字字体格式//,24));,Font.黑体 Font(new.setFont(table table.setRowHeight(30);//表格的高度Year.addActionListener(this);//可输入年份的文本框//month.addActionListener(this);//可输入年份的文本框 //为各个按钮添加监听函数bLastYear.addActionListener(this);bNextYear.addActionListener(this);bLastMonth.addActionListener(this);bNextMonth.addActionListener(this); //将按钮添加到String[] str={?,?,?,?,?,?,?,?,?,?尰,?就,?尲};comb = new JComboBox(str);p1.add(bLastYear);p1.add(Year);//年份输入文本框p1.add(jla);p1.add(month);//年份输入文本框p1.add(jla1););bNextYear.add(p1.p1.add(bLastMonth);p1.add(jtfMonth);p1.add(bNextMonth);p1.add(com);p1.add(comb);p2.setLayout(new FlowLayout());EAST); p4,BorderLayout.p2.add(CENTER); ,BorderLayout..add(p2sp WEST); ,BorderLayout.p2.add(p5p3.add(l);p3.add(lt);SOUTH); p3, BorderLayout.this.add(CENTER); , BorderLayout.this.add(p2NORTH);p1, BorderLayout..add(this getDateInstance().format(new String [] strDate = DateFormat.?);parseIntparseInt(strDate[1])-1,(strDate[0]), Integer..set(Integer.cal0);parseInt(strDate[0]), showCalendar(Integer.parseInt(strDate[1]), cal Integer.);jtfMonth.setEditable(false);//设置月份的文本框为不可编辑Year.setText(strDate[0]);month.setText(strDate[1]);comb.setToolTipText(strDate[1]);comb.addItemListener(new ItemListener() {public void itemStateChanged(ItemEvent e) {jtfMonth.setText((String) comb.getSelectedItem());month.setText((String) comb.getSelectedItem()) ;int m, y;try//控制输入的年份正确,异常控制{if (Year.getText().length() != 4)NumberFormatException();new throw {}parseInt(Year y = Integer..getText()); parseInt(jtfMonth.getText());m = Integer.}catch (NumberFormatException ex){???灏楴湯慐敮献潨?獥慳敧楄污杯琨楨?尠请输入4位的数字!0-9?尠年份有误, JOptionPane.ERROR_MESSAGE);;return }+1; i++)for (int i = 0; i < lastTime{.removeRow(0);dtm}.set(y, m-1, 0);cal);cal showCalendar(y, m,}});jtfMonth.setText(?);month.setText(?);this.setBounds(200,200,700,320);this.setResizable(false);this.setVisible(true);}public static void main(String[] args){new wannianli();}public void showCalendar(int localYear, int localMonth, Calendar cld) {int Days = getDaysOfMonth(localYear, localMonth) +DAY_OF_WEEK) - 2;cld.get(Calendar. Object[7];new Object [] ai =lastTime = 0;DAY_OF_WEEK)-1; i <= Days; i++)i = cld.get(Calendar. (int for {valueOf DAY_OF_WEEK)-2));(i-(cld.get(Calendar. ai[i%7] = String. if (i%7 == 6){dtm.addRow(ai);ai = new Object[7];lastTime++;}}dtm.addRow(ai);}public int getDaysOfMonth(int year, int Month) //显示所选月份的天数{if(Month == 1 || Month == 3 || Month == 5 || Month == 7 || Month == 8|| Month == 10 || Month == 12){return 31;}if(Month == 4 || Month == 6 || Month == 9 || Month == 11){return 30;}if(year%4 == 0 && year_x0010_0 != 0 || year@0 == 0)//闰年{return 29;}else{28;return}}public void actionPerformed(ActionEvent e){if(e.getSource() == Year || e.getSource() == bLastYear ||e.getSource() == bNextYear|| e.getSource() == bLastMonth|| e.getSource()==bNextMonth){int m, y;try//控制输入的年份正确,异常控制{if (Year.getText().length() != 4){ throw new NumberFormatException(); }parseInt(Year.getText()); y = Integer. parseInt(jtfMonth.getText());m = Integer. (NumberFormatException ex) catch }{showMessageDialog(this, 请输入 JOptionPane.4位0-9的ERROR_MESSAGE);, JOptionPane.年份有误数字!, return;}for (int i = 0; i < lastTime+1; i++){dtm.removeRow(0);}if(e.getSource() == bLastYear){valueOf(--y));Year.setText(String.}if(e.getSource() == bNextYear){valueOf(++y));.setText(String.Year}if(e.getSource() == bLastMonth){if(m == 1){valueOf(--y));.setText(String.Yearm = 12;valueOf(m));.setText(String. jtfMonth}else{valueOf(--m));.setText(String. jtfMonth}}if(e.getSource() == bNextMonth){if(m == 12){valueOf(++y));Year.setText(String.m = 1;valueOf(m));jtfMonth.setText(String.}else{valueOf(++m));.setText(String. jtfMonth}}cal.set(y, m-1, 0);showCalendar(y, m, cal);valueOf(m));.setText(String. month//comb.setToolTipText(String.valueOf(m));}}五、软件测试图1 界面图图2 界面图下拉选择2月份六、课程设计总结本次Java课程设计我们这组做的课题是万年历,刚开始拿到题目我们组员都不知如何下手,经过小组成员一起查找资料,并且开会讨论,我们确定了设计的设计目标以及具体实现方式,包括如何将Java的思想运用到实际系统的详细设计之中。

相关文档
最新文档