万年历Java课程设计

合集下载

JAVA课程设计 万年历 源代码

JAVA课程设计 万年历 源代码

测试用例设计:根据 需求文档和功能描述, 设计出能够覆盖所有 功能的测试用例
测试工具:使用JUnit 等测试框架进行单元 测试,使用Selenium 等工具进行UI测试
测试结果分析:根 据测试结果,分析 代码存在的问题, 并进行修改和优化
集成测试:验证各个模块之间的接口是否正确,数据传输是否正常 性能测试:测试系统的响应时间、吞吐量、资源利用率等性能指标
提醒功能:用户可以设置提醒功能,在节日或假期到来之前,系统会自动提醒用户。
删除事件:用户可以删除不 再需要的事件
编辑事件:用户可以对已添加 的事件进行编辑,如修改事件 名称、时间等
添加事件:用户可以在万年历 中添加新的事件,如生日、纪 念日等
查询事件:用户可以查询特定 日期或时间段内的事件,如查
界面显示:万年历界面将显示年、 月、日、星期等信息,用户可以通 过点击相应的按钮来切换日期。
添加标题
添加标题
添加标题
添加标题
系统响应:当用户输入日期后,系统 将根据输入的日期显示相应的万年历 信息,包括年、月、日、星期等信息。
用户操作:用户可以通过点击相应 的按钮来切换日期,系统将根据用 户的操作显示相应的万年历信息。
添加标题
界面设计:简洁明了,易于阅读
添加标题
添加标题
交互性:用户可以选择查看不同日 期的日历信息
功能描述:在万年历中,用户可以选择标注节日和假期,以便于查看和提醒。
节日标注:用户可以在万年历中设置自己喜欢的节日,如春节、中秋节等,系统会自动 标注这些节日。
假期标注:用户可以在万年历中设置自己的假期,如年假、病假等,系统会自动标注这 些假期。
,a click to unlimited possibilities

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

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

接口技术课程设计(VHDL/JAVA)万年历院(系)别信息科学与电气工程学院目录前言 (7)1需求分析 (7)1.1需求分析 (7)1.2功能设计 (7)2.概要设计 (7)2.1程序设计思路 (7)2.2程序运行界面 (8)2.3流程图 (9)3.各模块的功能及程序说明 (9)3.1.初始化组件 (9)3.2.初始化数据 (10)3.3.绘制程序界面 (11)4.测试分析 (14)5.源程序清单 (14)6.课程设计体会 (23)参考文献 (24)摘要我们的实践的能力,为提高知识,可以运用了再创造,学校在2周安排,我们发出java课程设计进行实习。

此文件的详细说明java的环境下,一个软件设计的过程,本软体是各种数据的个数统计。

这种软件的功能,用户可一段文字输入后,软件是文字中的各类的数据的成绩为英语和数据的数量和数字数据的数量、空白的数据的数量和它的类型的数据的数量,然后,他将显示出来。

以下,课程设计通过解释数据是软件的统计,计划于解释了调整,并将负责等方面,还详细介绍了此项技术的制作过程说明了作用,以及各种无法实行操作。

关键字:万年历,java,头文件前言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课程设计--基于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程序编写万年历程序的设计报告一、引言本文档是针对使用Java程序编写万年历程序的设计报告,旨在详细介绍该程序的设计思路和实现细节。

二、需求分析1.背景介绍在现代社会中,人们经常需要查看特定日期的日历信息。

为了方便用户直观地查看任意年月的日历信息,设计一个万年历程序,可以满足用户的需求。

2.功能需求万年历程序具备以下功能:●显示指定年月的日历信息●支持用户输入任意年月●能够高亮当前日期●具备简洁易读的界面设计3.性能需求●用户界面响应迅速,无明显卡顿●日历信息准确无误,支持闰年判断三、概要设计1.系统架构万年历程序采用MVC(Model.View.Controller)架构,将数据模型、用户界面和控制逻辑分离。

模型层:负责处理日期计算和数据存储视图层:负责展示日历信息,接收用户输入控制器层:负责协调模型层和视图层的交互2.关键模块●日历模块:负责日期计算,并提供接口给视图层调用●用户界面模块:提供用户交互界面,并接收用户输入●控制器模块:负责协调日历模块和用户界面模块四、详细设计1.日历模块设计●定义日期对象:包括年、月、日等属性●实现日期计算功能:如计算指定年月的第一天是星期几,判断某年是否为闰年等●提供接口给其他模块调用:如获取指定年月的日历信息2.用户界面设计●设计主界面:包括输入年月的文本框和显示日历信息的面板●设计按钮事件:响应用户输入的年月,调用日历模块计算并显示日历信息3.控制器设计●建立模型与视图之间的联系:将用户输入传递给日历模块,并将计算后的日历信息传递给视图层进行显示五、测试计划1.单元测试●对日历模块进行单元测试,测试日期计算功能的准确性●对用户界面模块进行单元测试,测试界面的交互和显示是否正常2.集成测试●测试控制器模块与日历模块、用户界面模块之间的功能协调是否正常六、附录1.附件●无2.法律名词及注释●无。

万年历Java课程设计

万年历Java课程设计

2.2.2程序流程框图
开始
初始化
读、写日期、时间和温度
分离日期\时间\温度显示值
显示子程序
定时闹铃子程序
日期、时间修改子程序
农历自动更新子程序
闰月子程
返回
图1 主程序流程图
图2计算阳历程序流程图
图3时间调整程序流程图
课程设计说明书N O.19
课程设计说明书N O.20 3、设计结果与分析
3.1程序效果图
3.1.1程序打开时的效果,左边是记事本框,右边是万年历框。

图4程序效果图
3.1.2月份下拉列表的视图,选择某月很方便的。

图5程序效果图
3.1.3任选一个日期,在此日期中输入日记的信息。

效果如下图:
图6程序效果图
课程设计说明书N O.21 3.1.4保存日历成功对话框,选择“save”按键后自动弹出此对话框。

图7程序效果图
3.1.5当想删除所写日记时此确认对话框可有效防止误删。

图8程序效果图
3.1.6删除成功后会显示此对话框,提示删除成功。

图9程序效果图
3.2程序分析
该程序能够很好得实现万年历得功能,包括选择年份,月份,天份。

而且从外观上看不但简洁实用而且很美观。

程序打开的时候,能看到。

左边显示得是记事本框,右边显示是万年历框,简洁明了。

具有月份下拉功能,需要月份下拉得时候,可以随意调到自己需要得月份进行查看,十分方便。

可以任选一个日期,并在此日期中输入日记的信
课程设计说明书N O.22。

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 课程设计报告1. 引言本文档是关于一个用 Java 编写的万年历应用程序的课程设计报告。

该应用程序可以通过输入年份和月份来打印出对应的日历。

2. 设计目的本次课程设计的主要目的是让学生运用所学的 Java 编程知识,熟悉并掌握面向对象编程的基本概念,并且能够将这些知识应用到实际的项目中。

3. 设计思路3.1 输入验证用户输入的年份和月份需要进行验证,确保其合法性。

在程序中,我们使用Scanner类来获取用户输入,并通过一系列的条件判断语句来验证输入的年份和月份是否在合理范围内。

3.2 闰年判断万年历中,2 月有时为 28 天,有时为 29 天,这取决于年份是否为闰年。

我们可以通过以下规则判断某一年是否为闰年:•若该年份能被 4 整除但不能被 100 整除,或者能被 400 整除,则该年份是闰年;•否则,该年份不是闰年。

根据这个规则,我们可以在程序中编写一个方法来判断某一年是否为闰年。

3.3 日历打印通过输入的年份和月份,我们可以计算出该月份的第一天是星期几,并据此来确定日历的布局。

在程序中,我们可以使用java.util.Calendar类来获取日期相关信息。

接下来,我们可以按照日历的布局,使用循环语句逐行打印出日历。

对于非当前月份的日期,我们可以用空格来进行占位处理。

4. 程序实现下面是一个简化版的代码示例,用于展示万年历应用程序的实现:import java.util.Calendar;import java.util.Scanner;public class CalendarApp {public static void main(String[] args) {// 获取用户输入的年份和月份Scanner scanner = new Scanner(System.in);System.out.print("请输入年份:");int year = scanner.nextInt();System.out.print("请输入月份:");int month = scanner.nextInt();// 验证输入的年份和月份是否合法if (year < 0 || month < 1 || month > 12) {System.out.println("输入的年份或月份不合法!");return;}// 创建 Calendar 对象并设置日期Calendar calendar = Calendar.getInstance();calendar.set(year, month - 1, 1);// 获取该月份的天数int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MON TH);// 获取该月份的第一天是星期几int firstDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);// 打印日历System.out.println("日\t一\t二\t三\t四\t五\t六");for (int i = 1; i < firstDayOfWeek - 1; i++) {System.out.print(" \t");}for (int day = 1; day <= daysInMonth; day++) {System.out.print(day + "\t");if ((firstDayOfWeek + day - 1) % 7 == 0) {System.out.println();}}}}5. 测试与运行使用以上代码,我们可以编译并运行该 Java 应用程序。

java日历课程设计详细设计

java日历课程设计详细设计

java日历课程设计详细设计一、教学目标本课程旨在通过Java编程语言实现一个简单的日历功能,让学生掌握Java基本语法、面向对象编程思想以及常用数据结构。

同时,培养学生的编程兴趣,提高解决实际问题的能力。

1.掌握Java基本语法和关键字。

2.理解面向对象编程的基本概念,如类、对象、封装、继承和多态。

3.熟悉常用数据结构,如数组、链表、栈和队列。

4.能够运用Java语法和面向对象编程思想编写简单的程序。

5.能够运用常用数据结构解决实际问题。

6.学会使用Java开发工具和调试技巧。

情感态度价值观目标:1.培养学生的编程兴趣,提高自主学习能力。

2.培养学生团队合作精神,学会与他人分享和交流。

3.培养学生解决问题的能力,培养创新思维。

二、教学内容本课程的教学内容主要包括Java基本语法、面向对象编程思想和常用数据结构。

具体安排如下:1.Java基本语法:介绍Java编程语言的基本语法,包括数据类型、运算符、控制语句等。

2.面向对象编程:讲解面向对象编程的基本概念,如类、对象、封装、继承和多态。

通过实例让学生理解并掌握这些概念。

3.常用数据结构:介绍数组、链表、栈和队列等常用数据结构,并通过实例让学生学会运用这些数据结构解决实际问题。

4.日历实现:利用所学知识,让学生动手实现一个简单的日历功能,巩固所学知识,提高解决实际问题的能力。

三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:通过讲解Java基本语法、面向对象编程思想和常用数据结构,让学生掌握理论知识。

2.案例分析法:通过分析实际案例,让学生学会运用所学知识解决实际问题。

3.实验法:让学生动手实践,实现日历功能,提高学生的实际编程能力。

四、教学资源1.教材:选用权威、实用的Java编程教材,为学生提供理论知识的学习材料。

2.参考书:提供相关领域的参考书籍,丰富学生的知识体系。

3.多媒体资料:制作精美的PPT,直观展示知识点,帮助学生更好地理解。

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程序设计》课程设计——万年历院系:电子与信息工程学院班级:计算机科学与技术2009-2姓名:马荣学号:0908*******时间:2012-6-20一、实验目标(1)使用图形用户界面:文本域,一个下拉框;一个更新按钮;表格;(2)显示某年某月日历、当前日期;(3)可查寻任意月以及任意年的日历;二、开发工具与平台jdk1.7 + Eclipse 3.2三、设计思路:1.界面设计(程序界面效果图)2.逻辑设计对于此万年历程序,首先要设计小应用程序查看器的界面,总体界面有文本域,一个更新按钮,表格显示万年历。

文本域和下拉框放置在NORTH,然后后面是更新按钮。

然后是下方是表格,界面设计完成。

首先明确该实验设计的要求实现的基本功能,其次设计布局,将空间划分为由行和列组成的表格,表格大小相同,便于观看。

3. 逻辑流程图如下:程序主要完成日期查询功能,流程图展示的是万年历的日期查询过程,并不是程序设计的过程。

图1 万年历设计逻辑流程图4. 类层次结构● CalendarApplet 用于界面布局设计,继承Applet ; ● 使用事件Action 得到查询的年、月份;四、代码展示 1. 主要代码段1)这段代码主要是对程序的主框架进行相应的设置。

public class CalendarApplet extends Applet{ static final int TOP = 70; //顶端距离static final int CELLWIDTH =50,CELLHEIGHT = 30; //单元格尺寸 static final int MARGIN = 3; //边界距离 static final int FEBRUARY = 1;TextField tfYear = new TextField("2004", 5); //显示年份的文本域 Choice monthChoice = new Choice(); //月份选择下拉框 Button btUpdate = new Button("更新"); //更新按钮GregorianCalendar calendar=new GregorianCalendar(); //日历对象 Font smallFont = new Font("TimesRoman", Font.PLAIN , 15); //显示小字体Font bigFont = new Font("TimesRoman", Font.BOLD , 50); //显示大字体开始进入主界面输入年份输入月份更新 显示结果String days[] = {"星期日", "星期一", "星期二", "星期三","星期四", "星期五", "星期六"};String months[] = {"一月", "二月", "三月", "四月","五月", "六月", "七月", "八月", "九月","十月", "十一月", "十二月"};int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //每个月的天数int searchMonth,searchYear; //查询的年份及月份public void init(){setBackground(Color.white); //设置背景颜色searchMonth = calendar.get(Calendar.MONTH); //得到系统年份searchYear = calendar.get(Calendar.YEAR); //得到系统月份add(new Label(" 年:")); //增加组件到ApplettfYear.setText(String.valueOf(searchYear)); //设置文本域文字add(tfYear);add(new Label(" 月:"));monthChoice.setFont(smallFont); //设置月份选择下拉框的显示字体for (int i = 0; i < 12; i++) {m onthChoice.addItem(months[i]); //增加下拉框选项}monthChoice.select(searchMonth); //设置下拉框当前选择项add(monthChoice);add(btUpdate);int componentCount=this.getComponentCount(); //得到Applet中的组件数量for (int i=0;i<componentCount;i++){g etComponent(i).setFont(smallFont); //设置所有组件的显示字体}}2)这段代码是程序如何进行年份、月份的查询private int getNumberRows(int year, int month) { //得到行数量int firstDay;int numCells;if (year < 1582) { //年份小于1582年,则返回-1return (-1);}if ((month < 0) || (month > 11)) {return (-1);}firstDay = getFirstDayOfMonth(year, month); //计算月份的第一天if ((month == FEBRUARY) && (firstDay == 0)&& !calendar.isLeapYear(year)) {return 4;}numCells = firstDay + daysInMonth[month];if ((month == FEBRUARY) && (calendar.isLeapYear(year))) { numCells++;}return ((numCells <= 35) ? 5 : 6); //返回行数}private int getFirstDayOfMonth(int year, int month) { //得到每月的第一天int firstDay;int i;if (year < 1582) { //年份小于1582年,返回-1return (-1);}if ((month < 0) || (month > 11)) { //月份数错误,返回-1return (-1);}firstDay = getFirstDayOfYear(year); //得到每年的第一天for (i = 0; i < month; i++) {firstDay += daysInMonth[i]; //计算每月的第一天}if ((month > FEBRUARY) && calendar.isLeapYear(year)) {firstDay++;}return (firstDay % 7);}private int getFirstDayOfYear(int year){ //计算每年的第一天int leapYears;int hundreds;int fourHundreds;int first;if (year < 1582) { //如果年份小于1582年return (-1); //返回-1}leapYears = (year - 1581) / 4;hundreds = (year - 1501) / 100;leapYears -= hundreds;fourHundreds = (year - 1201) / 400;leapYears += fourHundreds;first=5 + (year - 1582) + leapYears % 7; //得到每年第一天return first;}}3)得到结果并同步更新public boolean action(Event e, Object o){int searchYearInt;if (e.target==btUpdate){searchMonth = monthChoice.getSelectedIndex(); //得到查询月份searchYearInt = Integer.parseInt(tfYear.getText(), 10); //得到查询年份if (searchYearInt > 1581) {searchYear = searchYearInt;}repaint(); //重绘屏幕return true;}return false;}五、课程设计总结在做本作业的时候,遇到了很多问题,比如如何使日期保持同步一致。

用Java程序编写万年历程序的设计报告

用Java程序编写万年历程序的设计报告

用Java程序编写万年历程序的设计报告一、引言万年历是一种常见的工具,用于显示特定日期的星期几、农历日期、节气等信息。

本设计报告旨在介绍使用Java编写万年历程序的设计过程和实现细节。

二、需求分析1. 显示当前日期的星期几和农历日期;2. 支持用户输入指定日期,显示该日期的星期几和农历日期;3. 显示当月的日历,并标记当天;4. 支持用户选择不同年份和月份,显示相应的日历;5. 显示当天的节气。

三、设计思路1. 日期计算:使用Java提供的日期和时间类,如`java.util.Calendar`,来进行日期计算和格式化;2. 农历计算:根据农历算法,计算指定日期的农历日期和节气;3. 用户界面:使用Java图形用户界面(GUI)库,如`javax.swing`,来实现用户界面;4. 数据展示:使用文本框、标签等组件来展示日期、星期几、农历日期和节气。

四、程序实现1. 创建Java项目,并导入所需的库;2. 创建主界面窗口,设置布局和组件;3. 添加日期选择器,用于选择年份和月份;4. 添加按钮,用于触发日期查询和切换月份;5. 根据用户选择的日期,计算并显示星期几、农历日期和节气;6. 根据用户选择的年份和月份,计算并显示当月的日历;7. 标记当天的日期;8. 添加事件监听器,处理用户的操作。

五、代码示例```java// 导入所需的库import java.util.Calendar;import java.util.Date;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public class CalendarProgram extends JFrame {private JLabel dateLabel;private JLabel weekdayLabel;private JLabel lunarLabel;private JLabel festivalLabel;private JPanel calendarPanel;public CalendarProgram() {// 设置窗口标题和大小setTitle("万年历程序");setSize(800, 600);// 创建主界面布局和组件JPanel mainPanel = new JPanel(); dateLabel = new JLabel();weekdayLabel = new JLabel(); lunarLabel = new JLabel();festivalLabel = new JLabel();calendarPanel = new JPanel();// 将组件添加到主界面布局中 mainPanel.add(dateLabel);mainPanel.add(weekdayLabel); mainPanel.add(lunarLabel);mainPanel.add(festivalLabel);mainPanel.add(calendarPanel); // 设置主界面布局和显示setContentPane(mainPanel);setVisible(true);}public void updateCalendar(Date selectedDate) {// 根据选择的日期更新界面显示Calendar calendar = Calendar.getInstance();calendar.setTime(selectedDate);// 计算并显示星期几、农历日期和节气int weekday = calendar.get(Calendar.DAY_OF_WEEK); String lunarDate = calculateLunarDate(calendar);String festival = calculateFestival(calendar);dateLabel.setText("日期:" + selectedDate.toString()); weekdayLabel.setText("星期几:" + weekday);lunarLabel.setText("农历日期:" + lunarDate);festivalLabel.setText("节气:" + festival);// 计算并显示当月的日历int year = calendar.get(Calendar.YEAR);int month = calendar.get(Calendar.MONTH);int daysInMonth = calculateDaysInMonth(year, month); displayCalendar(year, month, daysInMonth);}private String calculateLunarDate(Calendar calendar) {// 根据农历算法计算农历日期// 实现略}private String calculateFestival(Calendar calendar) {// 根据日期计算节气// 实现略}private int calculateDaysInMonth(int year, int month) {// 计算指定年份和月份的天数// 实现略}private void displayCalendar(int year, int month, int daysInMonth) { // 显示当月的日历// 实现略}public static void main(String[] args) {CalendarProgram program = new CalendarProgram();program.updateCalendar(new Date());}}```六、总结通过使用Java编写万年历程序,我们可以实现日期计算、农历计算和节气计算等功能,并通过图形界面展示给用户。

用Java程序编写万年历程序的设计报告

用Java程序编写万年历程序的设计报告

用Java程序编写万年历程序的设计报告用Java程序编写万年历程序的设计报告1. 引言本文档是关于设计和实现使用Java编写的万年历程序的报告。

万年历是一种常见的日历工具,可以显示指定年份和月份的日历信息。

本报告将介绍所使用的开发工具和环境、程序设计的架构和实现细节,以及可能的改进和扩展方向。

2. 开发工具和环境本项目的开发工具和环境如下:- 开发工具:使用Java开发的集成开发环境(IDE)Eclipse 进行代码编写和调试;- 编程语言:使用Java编程语言进行程序设计和开发;- 版本控制:使用Git进行版本控制和团队协作;- 协作工具:使用GitHub进行代码托管和团队协作。

3. 程序设计架构万年历程序的设计采用了MVC(模型-视图-控制器)架构。

MVC 架构的目的是解耦程序的数据逻辑(模型)、用户界面(视图)和用户输入与反馈(控制器),实现更可扩展和可维护的代码结构。

3.1 模型(Model)在万年历程序中,模型负责处理日历数据的计算和逻辑。

它包括以下几个关键组件:- Calendar类:封装了表示日历的数据结构和相关操作方法。

提供了获取指定年份和月份的日历数据的方法,如获取日期、星期几等信息;- DateUtil类:提供了一些与日期计算和格式化有关的工具方法,如计算某月总共有多少天、计算某天是星期几等。

3.2 视图(View)视图负责用户界面的展示和交互。

在万年历程序中,视图由一个图形用户界面(GUI)组成,用户可以通过界面输入需要显示的年份和月份来获取日历数据。

GUI的设计可以使用Swing或JavaFX等工具。

3.3 控制器(Controller)控制器负责处理用户界面与模型之间的交互。

在万年历程序中,控制器包括以下几个组件:- MnWindow类:负责创建和管理主窗口界面,以及用户交互事件的处理;- CalendarController类:作为控制器的核心,负责调用模型的方法获取日历数据,并更新视图。

java万年历课程报告

java万年历课程报告

Java程序设计课程设计报告设计题目:电子日历设计班级:学号:姓名:--目录--一需求分析 (3)二概要设计 (4)三详细设计 (4)四程序代码 (10)五运行结果 (17)六设计总结 (18)一需求分析对于万年历系统,其主要功能是:查看当日日期(年、月、日)、查看当时时间、查看其他年月的月历。

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

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

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

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

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

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

二概要设计(1)可以通过图形界面显示日历。

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

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

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

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

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

java课程设计万年历

java课程设计万年历

JAVA软件项目设计.................................................................. 错误!未定义书签。

项目报告............................................................................. 错误!未定义书签。

1.设计分析: (2)1.1需求分析 (2)1.2功能设计 (2)2.程序结构: (3)3.各模块功能及程序说明: (4)3.1 各种包的导入: (4)3.2控件的初始化 (4)3.3绘制万年历的界面 (5)3.4 增加控件 (6)3.5增加监听 (6)3.6封装操作 (7)4.源程序 (7)5.操作方法(流程) (22)6.实验结果 (22)7.心得体会: (24)1.设计分析:1.1需求分析对于万年历系统,其主要功能是:查看当日日期(年、月、日)、查看当时时间、查看其他年月的月历、对选中的日期进行标识。

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

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

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

(3)支持用户自己用下拉形式来选择年份和月份。

(4)通过点击“更新时间”按钮来刷新当前时间。

2.程序结构:3.各模块功能及程序说明:3.1 各种包的导入:import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.GridLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Calendar;import java.util.GregorianCalendar;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;3.2控件的初始化contentPane = new JPanel(new BorderLayout());// 主面板northPane = new JPanel(new BorderLayout()); // 放按钮面板的面板centerPane = new JPanel(new GridLayout(7, 7)); // 中间的日期(七行七列)面板buttonPane = new JPanel(); // 按钮面板labelYear = new JButton("年份:"); // 显示年份文字labelMonth = new JButton("月份:"); // 显示月份文字buttonPreYear = new JButton("<<"); // 上一年按钮buttonNextYear = new JButton(">>"); // 下一年的按钮buttonPreMonth = new JButton("<<"); // 上一月按钮buttonNextMonth = new JButton(">>");// 下一月按钮newTime = new JButton("更新时间");boxYear = new JComboBox(); // 年的下拉列表boxMonth = new JComboBox(); // 月的下拉列表ca = new GregorianCalendar();Jhour = new JTextField(2);Jminute = new JTextField(2);Jsecond = new JTextField(2);date = new JPanel();dateTime1 = new JLabel("时");dateTime2 = new JLabel("分");dateTime3 = new JLabel("秒");3.3绘制万年历的界面public WanNianLi() {this.setTitle("万年历");this.setSize(500, 400);// 将面板居中处理Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); int screenWidth = d.width;int screenHeight = d.height;this.setLocation((screenWidth - this.getWidth()) / 2,(screenHeight - this.getHeight()) / 2);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setResizable(true);}3.4 增加控件// 把按钮放到了按钮面板里buttonPane.add(labelYear);buttonPane.add(buttonPreYear);buttonPane.add(boxYear);buttonPane.add(buttonNextYear);buttonPane.add(labelMonth);buttonPane.add(buttonPreMonth);buttonPane.add(boxMonth);buttonPane.add(buttonNextMonth);// 把按钮面板放到了northPane中northPane.add(buttonPane, BorderLayout.CENTER); // 把northPane和centerPane放到主面板中contentPane.add(northPane, BorderLayout.NORTH); contentPane.add(centerPane, BorderLayout.CENTER); contentPane.add(date,BorderLayout.SOUTH);3.5增加监听//给年份下拉列表添加事件监听器boxYear.addActionListener(new ActionListener())//给月份下拉列表添加事件监听器boxMonth.addActionListener(new ActionListener())//上一年的按钮监听buttonPreYear.addActionListener(new ActionListener())//下一年的按钮监听buttonNextYear.addActionListener(new ActionListener() //上一月的监听buttonPreMonth.addActionListener(new ActionListener() //下一月的监听buttonNextMonth.addActionListener(new ActionListener() //更新时间按钮的监听newTime.addActionListener(new ActionListener() )3.6封装操作// 封装给年份下拉列表赋值的操作private void initBoxYear()//封装给月份下拉列表赋值的操作private void initBoxMonth()4.源程序package 万年历;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.GridLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Calendar;import java.util.GregorianCalendar;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;public class WanNianLi extends JFrame{private int temp0 = 0;private int year = 0;private int month = 0;private int hour = 0;private int minute = 0;private int second = 0;Calendar ca = null;private JTextField Jhour = null;private JTextField Jminute = null;private JTextField Jsecond = null;private JPanel contentPane = null;// 主面板private JPanel northPane = null; // 放按钮面板的面板private JPanel centerPane = null; // 中间的日期面板private JPanel buttonPane = null; // 按钮面板private JPanel time = null; //时钟面板private JPanel date = null;private JButton labelYear = null; // 显示年份文字private JButton labelMonth = null; // 显示月份文字private JButton buttonPreYear = null; // 上一年按钮private JButton buttonNextYear = null; // 下一年的按钮private JButton buttonPreMonth = null; // 上一月按钮private JButton buttonNextMonth = null;// 下一月按钮private JButton newTime = null;private JComboBox boxYear = null; // 年的下拉列表private JComboBox boxMonth = null; // 月的下拉列表private JLabel[] labelDays = null; // 存储天private JLabel dateTime1 = null;private JLabel dateTime2 = null;private JLabel dateTime3 = null;public WanNianLi() {this.setTitle("万年历");this.setSize(500, 400);// 将面板居中处理Dimension d = Toolkit.getDefaultToolkit().getScreenSize();int screenWidth = d.width;int screenHeight = d.height;this.setLocation((screenWidth - this.getWidth()) / 2,(screenHeight - this.getHeight()) / 2);init(); // 封装初始化主控件的操作this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setResizable(true);}// 初始化主控件private void init() {contentPane = new JPanel(new BorderLayout());// 主面板northPane = new JPanel(new BorderLayout()); // 放按钮面板的面板centerPane = new JPanel(new GridLayout(7, 7)); // 中间的日期(七行七列)面板buttonPane = new JPanel(); // 按钮面板labelYear = new JButton("年份:"); // 显示年份文字labelMonth = new JButton("月份:"); // 显示月份文字buttonPreYear = new JButton("<<"); // 上一年按钮buttonNextYear = new JButton(">>"); // 下一年的按钮buttonPreMonth = new JButton("<<"); // 上一月按钮buttonNextMonth = new JButton(">>");// 下一月按钮newTime = new JButton("更新时间");boxYear = new JComboBox(); // 年的下拉列表initBoxYear();boxMonth = new JComboBox(); // 月的下拉列表initBoxMonth();ca = new GregorianCalendar();hour = ca.get(Calendar.HOUR_OF_DAY); minute = ca.get(Calendar.MINUTE);second = ca.get(Calendar.SECOND);Jhour = new JTextField(2);Jhour.setText(hour+"");Jminute = new JTextField(2);Jminute.setText(minute+"");Jsecond = new JTextField(2);Jsecond.setText(second+"");date = new JPanel();dateTime1 = new JLabel("时");dateTime2 = new JLabel("分");dateTime3 = new JLabel("秒");date.add(Jhour);date.add(dateTime1);date.add(Jminute);date.add(dateTime2);date.add(Jsecond);date.add(dateTime3);date.add(newTime);// 把按钮放到了按钮面板里buttonPane.add(labelYear);buttonPane.add(buttonPreYear);buttonPane.add(boxYear);buttonPane.add(buttonNextYear);buttonPane.add(labelMonth);buttonPane.add(buttonPreMonth);buttonPane.add(boxMonth);buttonPane.add(buttonNextMonth);// 把按钮面板放到了northPane中northPane.add(buttonPane, BorderLayout.CENTER);// 初始化放日期的labellabelDays = new JLabel[49]; // 存储天for (int i = 0; i < labelDays.length; i++){labelDays[i] = new JLabel("", JLabel.CENTER);centerPane.add(labelDays[i]);}boxYear.setSelectedItem(2013);boxMonth.setSelectedItem(12);YMD();//将第一界面设为系统当前事件setDate();// 把northPane和centerPane放到主面板中contentPane.add(northPane, BorderLayout.NORTH); contentPane.add(centerPane, BorderLayout.CENTER); contentPane.add(date,BorderLayout.SOUTH);this.add(contentPane);//更新时分秒newTime.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {Calendar ca = null;ca = new GregorianCalendar();int a = ca.get(Calendar.HOUR_OF_DAY);int b = ca.get(Calendar.MINUTE);int c = ca.get(Calendar.SECOND);Jhour.setText(a+"");Jminute.setText(b+"");Jsecond.setText(c+"");}});//给年份下拉列表添加事件监听器boxYear.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){year = (Integer)boxYear.getSelectedItem();setDate();});//给月份下拉列表添加事件监听器boxMonth.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e){month = (Integer)boxMonth.getSelectedItem();setDate();}});//上一年的按钮监听buttonPreYear.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {int resertYear = (Integer) boxYear.getSelectedItem();boxYear.setSelectedItem(resertYear-1);}});//下一年的按钮监听buttonNextYear.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e)int resertYear = (Integer) boxYear.getSelectedItem();boxYear.setSelectedItem(resertYear+1);}});//上一月的监听buttonPreMonth.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e){int resertMonth =(Integer)boxMonth.getSelectedItem();int resertYear = (Integer) boxYear.getSelectedItem();if(resertMonth == 1){if(resertYear == 1901){boxMonth.setSelectedItem(resertMonth);boxYear.setSelectedItem(resertYear);}else{resertMonth = 12;boxMonth.setSelectedItem(resertMonth);boxYear.setSelectedItem(resertYear-1);}}else{boxMonth.setSelectedItem(resertMonth-1);}}});//下一月的监听buttonNextMonth.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e){int resertMonth =(Integer)boxMonth.getSelectedItem();if(resertMonth == 12){resertMonth = 1;boxMonth.setSelectedItem(resertMonth);int resertYear = (Integer)boxYear.getSelectedItem();boxYear.setSelectedItem(resertYear+1);}else{boxMonth.setSelectedItem(resertMonth+1);}}});}// 封装给年份下拉列表赋值的操作private void initBoxYear(){for (int i = 0; i < 1000; i++){boxYear.addItem(1901 + i);}}//封装给月份下拉列表赋值的操作private void initBoxMonth(){for (int i = 1; i <= 12; i++){boxMonth.addItem(i);}}public void setDate() {String[] tempDate = new String[42];tempDate = initDate();// 给前七个label赋属性String[] logs = new String[] { "日", "一", "二", "三", "四", "五", "六" };//将logs数组中的值放到label中for (int i = 0; i < 7; i++){labelDays[i].setText(logs[i]);}//初始化label的颜色for (int i = 0; i < labelDays.length; i++) {labelDays[i].setForeground(Color.BLACK);}// 设置星期日的颜色为红色for (int i = 0; i < labelDays.length; i += 7){labelDays[i].setForeground(Color.red);}// 设置星期六的颜色为蓝色for (int i = 6; i < labelDays.length; i += 7){labelDays[i].setForeground(Color.blue);}//将日期放到label中,并把系统当天的时间设为绿色for (int i = 7; i < 49; i++){int t = 0;t = day();labelDays[i].setText(tempDate[i-7]);if(i == Calendar.getInstance().get(Calendar.DAY_OF_MONTH)){labelDays[i+t+6].setForeground(Color.GREEN);}}}//设置面板第一次显示的内容void YMD(){year=0;month=0;Calendar c=Calendar.getInstance();//获得系统当前日期year=c.get(Calendar.YEAR);month=c.get(Calendar.MONTH)+1;//系统日期从0开始算起boxYear.setSelectedItem((Integer)year);boxMonth.setSelectedItem((Integer)month);}//将某年某月中的日期放到一个数组中返回,包括前面的空余部分public String[] initDate(){String[] date = new String[42];int sum = 0;int m = 0;for (int i = 1900; i < year; i++) {if (((i % 4 == 0) && (i % 100 != 0)) || (i % 400 == 0)) {sum = sum + 366;} else {sum = sum + 365;}}for (int nomonth = 1; nomonth <= month; nomonth++) { if (nomonth == 1 || nomonth == 3 || nomonth == 5 || nomonth == 7|| nomonth == 8 || nomonth == 10 || nomonth == 12) {m = 31;} else if (nomonth == 2) {if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) {m = 29;} else {m = 28;}} else {m = 30;}if (nomonth < month) {sum = sum + m;}}sum += 1;temp0 = (sum % 7);for (int p = 0; p < temp0; p++) {date[p] = "";}for (int w = 1; w <= m; w++) {date[temp0++] = w + "";}return date;}//获取系统当前月第一天离星期天有几天public int day(){int temp = 0;int sum = 0;int m = 0;for (int i = 1900; i < year; i++) {if (((i % 4 == 0) && (i % 100 != 0)) || (i % 400 == 0)) {sum = sum + 366;} else {sum = sum + 365;}}for (int nomonth = 1; nomonth <= month; nomonth++) { if (nomonth == 1 || nomonth == 3 || nomonth == 5 || nomonth == 7|| nomonth == 8 || nomonth == 10 || nomonth == 12) {m = 31;} else if (nomonth == 2) {if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) {m = 29;} else {m = 28;}} else {m = 30;}if (nomonth < month) {sum = sum + m;}}sum += 1;temp = (sum % 7);return temp;}public static void main(String[] args){new WanNianLi();}}5.操作方法(流程)5.1 制作万年历的界面5.2 在界面上增加控件5.3 给事件增加监听5.4给事件增加命令符5.5运行调试6.实验结果6.1 获取当前时间6.2 获取闰年2月的时间6.3获取平年2月的时间6.4选择2010年2月的时间7.心得体会:通过这次的项目设计,我们学到了很多东西,下面就是这次项目设计的心得体会:在这次的项目设计中,主要是运用Java语言来编写,并可运用其他的技术。

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万年历系统课程设计报告附源码

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课程设计报告

万年历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异常处理:学习异常处理机制,提高程序的稳定性和可靠性。

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

2.2.2程序流程框图
开始
初始化
读、写日期、时间和温度
分离日期\时间\温度显示值
显示子程序
定时闹铃子程序
日期、时间修改子程序
农历自动更新子程序
闰月子程
返回
图1 主程序流程图
图2计算阳历程序流程图
图3时间调整程序流程图
课程设计说明书N O.19
课程设计说明书N O.20 3、设计结果与分析
3.1程序效果图
3.1.1程序打开时的效果,左边是记事本框,右边是万年历框。

图4程序效果图
3.1.2月份下拉列表的视图,选择某月很方便的。

图5程序效果图
3.1.3任选一个日期,在此日期中输入日记的信息。

效果如下图:
图6程序效果图
课程设计说明书N O.21 3.1.4保存日历成功对话框,选择“save”按键后自动弹出此对话框。

图7程序效果图
3.1.5当想删除所写日记时此确认对话框可有效防止误删。

图8程序效果图
3.1.6删除成功后会显示此对话框,提示删除成功。

图9程序效果图
3.2程序分析
该程序能够很好得实现万年历得功能,包括选择年份,月份,天份。

而且从外观上看不但简洁实用而且很美观。

程序打开的时候,能看到。

左边显示得是记事本框,右边显示是万年历框,简洁明了。

具有月份下拉功能,需要月份下拉得时候,可以随意调到自己需要得月份进行查看,十分方便。

可以任选一个日期,并在此日期中输入日记的信
课程设计说明书N O.22。

相关文档
最新文档