java风景日历

合集下载

java日历设计报告参考模板

java日历设计报告参考模板

华东交通大学理工学院课程设计报告书所属课程名称 java语言程序设计课程设计题目利用java完成日历的制作分院电信分院专业班级电商二班学号 20120410210129学生姓名方槐指导教师葛菁20 13 年12 月29 日课程设计(论文)评阅意见评阅人职称20 年月日目录第1章课程设计内容及要求. (4)第2章编写程序及结果 (5)第3章课程设计心得 (11)第4章参考文献 (12)第一章课程设计内容及要求内容一设计内容利用java程序编写我们生活中的经常使用的日历,当你想看哪个月的具体情况时,只需运行我们的程序就可以达到目的。

二要求内容利用我们所学的编写一个简单的日历表三设计原理运用课堂所学知识和上机课的练习的基础上在Java运行环境JCreaor中编写程序,还有在课外自己学的扫描仪。

四设计目的1.运用我们自学的扫描仪实现我们的操作。

2.该日历可以实现与生活中的日历一样。

3.先随机输入几年,随机输入几月,就能显示当月的天数,每一天的星期第二章编写程序及结果一程序编程Import java.util.Scanner;public class Qsr_2013{public static void main(String[] args){Scanner in=new Scanner(System.in);System.out.println("请输入月份:");int month=in.nextInt();int sum=0;for(int i=1;i<month;i++){if(i==2){if(year%4==0&&year%100!=0||year%400==0){sum+=29;}else{sum+=28;}}else{if(i==4||i==6||i==9||i==11){sum+=30;}else{sum+=31;}}}sum+=1;int wekday=sum%7;System.out.println("日\t一\t二\t三\t四\t五\t六"); for(int i=1;i<=wekday;i++){System.out.print("\t");}for(int i=1;i<=30;i++){if(sum%7==6){System.out.print(i+"\n");}else{System.out.print(i+"\t");}sum++;}}}二运行结果来两张程序截图先确定下没有错误的2013年输入月份然后运行 1月哦4月来张第三章心得通过这次课程设计,使我灵活应用所学java知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。

java课程设计策画日历记事本

java课程设计策画日历记事本

课程设计说明书课程: Java程序设计院系:计算机科学学院专业班级:计算机科学与技术(2)班组员:张少华、张天阳2010年6月 26 日《Java程序设计》课程设计——日历记事本我们开发了一个实现有日历标记的记事本软件,日历记事本面板由日历和和记事本两部分组成。

日历部分可以调节年份,月份,日期,星期。

记事本可以实行查看,保存,删除等操作,并且每一步操作都有相应提示。

本软件是一个实用性很强,简洁,方便的功能软件。

引言Java是一种纯面向对象的、网络编程首选的语言。

Java技术作为软件开的一种革命性技术,已被列为当今世界信息技术的主流之一。

为了适应时代潮流,我们应该加强对Java的学习,更好的掌握这门课程。

为此,我们成了一个课程小组,经过小组成的商讨之后,我们决定以“日历记事本”为设题材,借此巩固加深我们对Java 的了解。

本次课程设计的实例虽然比较简单,程序设计也不是很复杂,但在此程序的设计过程也是一个学习过程,更是对复杂程序的一个学习过程,还能培养我们的数抽象能力。

因此,我们觉得这次课程设计是非常有意义的,能为我们今后学习面向过程的程序设计作一些铺垫。

1、设计的目的与要求;(1)为用户提供一个简便的日历记事本;(2)对java技术的进一步了解和简单的运用;(3)初步的接触软件工程;2.设计目的与任务本课程设计所要求达到的目的和任务:通过Java程序设计的一些重要理论基础来实现“日历记事本”的“日历”和“记事本”的双重功能。

并通过此次课程设计的训练,使学生巩固和加深对Java这门课程的理解,通过利用所学到的计算科学的理论知识,提高解决实际问题的能力,增强运算、编程和使用技术资料的技能,通过实际问题的分析设计、编程和调试,掌握应用软件的分析方法和工程设计方法,能正确阐述设计和实验结果。

通过这次课程设计,培养实事求是、认真、严谨的科学态度和刻苦钻研不断创新的精神,逐步建立正确的全局观念。

3.设计方案3.1 总体设计(1)问题定义:创建日历记事本,实现对某日期的事情进行记录等功能。

精美日历的程序设计及代码示例

精美日历的程序设计及代码示例

精美日历的程序设计及代码示例一、引言日历是我们日常生活中重要的时间管理工具。

一个精美美观的日历设计可以提升用户的使用体验。

本文将介绍精美日历的程序设计方法以及相应的代码示例。

二、设计思路1. 日历显示界面设计精美日历应该具备以下设计要素:- 界面简洁明了,突出重要信息;- 适配不同设备屏幕尺寸,保证用户在不同设备上都能良好显示;- 使用合适的字体、颜色和布局,营造舒适的阅读体验;- 支持用户自定义主题,以满足不同用户的个性化需求。

2. 日历功能设计精美日历的功能设计要考虑以下几点:- 显示当前日期以及所在月份,方便用户快速查看;- 支持切换月份,以便查看过去或未来的日期;- 标记重要日期,例如节假日、生日等,以便用户一目了然;- 提供日程管理功能,允许用户添加、编辑和删除日程安排;- 支持农历显示,满足中国用户的需求。

三、代码示例下面是一个简单的精美日历的代码示例,代码使用HTML、CSS和JavaScript编写。

```<!DOCTYPE html><html><head><title>精美日历</title><style>/* CSS样式 *//* 省略部分样式代码,包括字体、颜色和布局等 */</style></head><body><div id="calendar"><div id="header"><button id="prevBtn">上个月</button><div id="title"></div><button id="nextBtn">下个月</button> </div><table id="days"><tr><th>周一</th><th>周二</th><th>周三</th><th>周四</th><th>周五</th><th>周六</th><th>周日</th></tr><!-- 日期格子动态生成 --></table></div><script>// JavaScript代码// 获取当前日期var date = new Date();var currentYear = date.getFullYear();var currentMonth = date.getMonth() + 1;// 标记重要日期var importantDates = [5, 10, 15];// 更新日历显示function updateCalendar(year, month) {// 更新标题document.getElementById("title").innerHTML = year + "年" + month + "月";// 清空日期格子var table = document.getElementById("days");table.getElementsByTagName("tbody")[0].innerHTML = "";// 获取本月第一天的日期对象var firstDay = new Date(year, month - 1, 1);var startDay = firstDay.getDay(); // 本月第一天是星期几// 动态生成日期格子var dateIndex = 1;var tr = document.createElement("tr");for (var i = 0; i < startDay; i++) {tr.innerHTML += "<td></td>";}while (firstDay.getMonth() === month - 1) {if (startDay === 0) {table.getElementsByTagName("tbody")[0].appendChild(tr); tr = document.createElement("tr");}var td = document.createElement("td");td.innerHTML = dateIndex;if (importantDates.includes(dateIndex)) {td.classList.add("important"); // 添加重要日期样式}tr.appendChild(td);dateIndex++;firstDay.setDate(firstDay.getDate() + 1);startDay = firstDay.getDay();}table.getElementsByTagName("tbody")[0].appendChild(tr);}// 切换月份document.getElementById("prevBtn").addEventListener("click", function() {if (currentMonth === 1) {currentYear--;currentMonth = 12;} else {currentMonth--;}updateCalendar(currentYear, currentMonth);});document.getElementById("nextBtn").addEventListener("click", function() {if (currentMonth === 12) {currentYear++;currentMonth = 1;} else {currentMonth++;}updateCalendar(currentYear, currentMonth);});// 初始化日历updateCalendar(currentYear, currentMonth);</script></body></html>```四、总结本文介绍了精美日历的程序设计方法及相应的代码示例。

JavaFX实现简单日历效果

JavaFX实现简单日历效果

JavaFX实现简单⽇历效果本⽂实例为⼤家分享了JavaFX实现简单⽇历效果的具体代码,供⼤家参考,具体内容如下1.先看效果:2.代码:1)ClockEdge.java类这个类(Pane)主要是⽤来设置时钟边缘(为了美观对直了半天,其实想想也没必要~。

~)package com.javaBasic.javaFX;import yout.Pane;import javafx.scene.paint.Color;import javafx.scene.shape.Circle;import javafx.scene.shape.Line;import javafx.scene.text.Text;/*** @version 1.00 2016-10-15* @author Administrator* 功能:显⽰时钟边缘*/public class ClockEdge extends Pane{private double w , h;public ClockEdge(){this(200, 200);paint();}public ClockEdge(double w, double h){this.w = w;this.h = h;paint();}public double getW() {return w;}public void setW(double w) {this.w = w;paint();}public double getH() {return h;}public void setH(double h) {this.h = h;paint();}public void paint(){double clockRadius = Math.min(w, h) * 0.8 * 0.5;double centerX = w / 2;double centerY = h / 2;Circle circle = new Circle(centerX, centerY, clockRadius);circle.setFill(Color.WHITE);circle.setStroke(Color.BLACK);//假设⼀个字符宽7.6个像素,⾼8.8个像素Text text1 = new Text(centerX + clockRadius * Math.sin(1 * Math.PI / 6) - 7.6 + 1.7 * (1 + Math.cos(2 * Math.PI / 6)) - 2.2 * Math.sin(2 * Math.PI / 6), centerY - clockRadius * Math.cos(1 * Math.PI / 6) + 8.8 + 1.7 * Math.sin(2 * Math.PI / 6) - 2.2 * (1 - Math.cos(2 * Math.PI / 6)), "1");Text text2 = new Text(centerX + clockRadius * Math.sin(2 * Math.PI / 6) - 7.6 + 1.7 * (1 + Math.cos(4 * Math.PI / 6)) - 2.2 * Math.sin(4 * Math.PI / 6), centerY - clockRadius * Math.cos(2 * Math.PI / 6) + 8.8 + 1.7 * Math.sin(4 * Math.PI / 6) - 2.2 * (1 - Math.cos(4 * Math.PI / 6)), "2");centerY - clockRadius * Math.cos(3 * Math.PI / 6) + 8.8 + 1.7 * Math.sin(6 * Math.PI / 6) - 2.2 * (1 - Math.cos(6 * Math.PI / 6)), "3");Text text4 = new Text(centerX + clockRadius * Math.sin(4 * Math.PI / 6) - 7.6 + 1.7 * (1 + Math.cos(8 * Math.PI / 6)) + 2.2 * Math.sin(8 * Math.PI / 6), centerY - clockRadius * Math.cos(4 * Math.PI / 6) + 1.7 * Math.sin(8 * Math.PI / 6) + 2.2 * (1 - Math.cos(8 * Math.PI / 6)), "4");Text text5 = new Text(centerX + clockRadius * Math.sin(5 * Math.PI / 6) - 7.6 + 1.7 * (1 + Math.cos(10 * Math.PI / 6)) + 2.2 * Math.sin(10 * Math.PI / 6), centerY - clockRadius * Math.cos(5 * Math.PI / 6) + 1.7 * Math.sin(10 * Math.PI / 6) + 2.2 * (1 - Math.cos(10 * Math.PI / 6)), "5");Text text6 = new Text(centerX + clockRadius * Math.sin(6 * Math.PI / 6) - 7.6 + 1.7 * (1 + Math.cos(12 * Math.PI / 6)) + 2.2 * Math.sin(12 * Math.PI / 6), centerY - clockRadius * Math.cos(6 * Math.PI / 6) + 1.7 * Math.sin(12 * Math.PI / 6) + 2.2 * (1 - Math.cos(12 * Math.PI / 6)), "6");Text text7 = new Text(centerX + clockRadius * Math.sin(7 * Math.PI / 6) - 1.7 * (1 + Math.cos(14 * Math.PI / 6)) + 2.2 * Math.sin(14 * Math.PI / 6),centerY - clockRadius * Math.cos(7 * Math.PI / 6) - 1.7 * Math.sin(14 * Math.PI / 6) + 2.2 * (1 - Math.cos(14 * Math.PI / 6)), "7");Text text8 = new Text(centerX + clockRadius * Math.sin(8 * Math.PI / 6) - 1.7 * (1 + Math.cos(16 * Math.PI / 6)) + 2.2 * Math.sin(16 * Math.PI / 6),centerY - clockRadius * Math.cos(8 * Math.PI / 6) - 1.7 * Math.sin(16 * Math.PI / 6) + 2.2 * (1 - Math.cos(16 * Math.PI / 6)), "8");Text text9 = new Text(centerX + clockRadius * Math.sin(9 * Math.PI / 6) - 1.7 * (1 + Math.cos(18 * Math.PI / 6)) + 2.2 * Math.sin(18 * Math.PI / 6),centerY - clockRadius * Math.cos(9 * Math.PI / 6) - 1.7 * Math.sin(18 * Math.PI / 6) + 2.2 * (1 - Math.cos(18 * Math.PI / 6)), "9");Text text10 = new Text(centerX + clockRadius * Math.sin(10 * Math.PI / 6) - 3.8 * (1 + Math.cos(20 * Math.PI / 6)) - 2.2 * Math.sin(20 * Math.PI / 6),centerY - clockRadius * Math.cos(10 * Math.PI / 6) + 8.8 - 3.8 * Math.sin(20 * Math.PI / 6) - 2.2 * (1 - Math.cos(20 * Math.PI / 6)), "10");Text text11 = new Text(centerX + clockRadius * Math.sin(11 * Math.PI / 6) - 3.8 * (1 + Math.cos(22 * Math.PI / 6)) - 2.2 * Math.sin(22 * Math.PI / 6),centerY - clockRadius * Math.cos(11 * Math.PI / 6) + 8.8 - 3.8 * Math.sin(22 * Math.PI / 6) - 2.2 * (1 - Math.cos(22 * Math.PI / 6)), "11");Text text12 = new Text(centerX + clockRadius * Math.sin(12 * Math.PI / 6) - 3.8 * (1 + Math.cos(24 * Math.PI / 6)) - 2.2 * Math.sin(24 * Math.PI / 6),centerY - clockRadius * Math.cos(12 * Math.PI / 6) + 8.8 - 3.8 * Math.sin(24 * Math.PI / 6) - 2.2 * (1 - Math.cos(24 * Math.PI / 6)), "12");getChildren().addAll(circle, text1, text2, text3, text4, text5, text6, text7, text8, text9, text10, text11, text12);for(int i =1; i<= 60; i++){double pointX1 = centerX + clockRadius * 0.95 * Math.sin(i * (2 * Math.PI) / 60);double pointY1 = centerY - clockRadius * 0.95 * Math.cos(i * (2 * Math.PI) / 60);double pointX2 = centerX + clockRadius * 1.0 * Math.sin(i * (2 * Math.PI) / 60);double pointY2 = centerY - clockRadius * 1.0 * Math.cos(i * (2 * Math.PI) / 60);if(i % 5 == 0) continue;else{Line point = new Line(pointX1, pointY1, pointX2, pointY2);getChildren().add(point);}}}}2)ClockPointer.java类这个类(Pane)主要⽤来显⽰时钟的三个指针(时、分、秒);package com.javaBasic.javaFX;import java.util.Calendar;import java.util.GregorianCalendar;import yout.Pane;import javafx.scene.paint.Color;import javafx.scene.shape.Line;/*** @version 1.00 2016-10-15* @author Administrator* 功能:显⽰时钟指针*/public class ClockPointer extends Pane{private int hour;private int minute;private int second;private double w = 200, h = 200;public ClockPointer(){setCurrentTime();}public ClockPointer(int hour, int minute, int second){this.hour = hour;this.minute = minute;this.second = second;paint();}public int getHour(){return hour;}public void setHour(int hour){this.hour = hour;paint();}public int getMinute(){return minute;}public void setMinute(int minute){paint();}public int getSecond(){return second;}public void setSecond(int second){this.second = second;paint();}public double getW() {return w;}public void setW(double w) {this.w = w;paint();}public double getH() {return h;}public void setH(double h) {this.h = h;paint();}public String setCurrentTime(){String str1, str2, str3;Calendar calendar = new GregorianCalendar();this.hour = calendar.get(Calendar.HOUR_OF_DAY);this.minute = calendar.get(Calendar.MINUTE);this.second = calendar.get(Calendar.SECOND);str1 = String.valueOf(hour);str2 = String.valueOf(minute);str3 = String.valueOf(second);if (hour < 10) {str1 = "0" + hour;}if (minute < 10) {str2 = "0" + minute;}if (second < 10) {str3 = "0" + second;}paint();return str1 + " : " + str2 + " : " + str3;}protected void paint(){getChildren().clear();double clockRadius = Math.min(w, h) * 0.8 * 0.5;double centerX = w / 2;double centerY = h / 2;double sLength = clockRadius * 0.8;double secondX = centerX + sLength * Math.sin(second * (2 * Math.PI) / 60);double secondY = centerY - sLength * Math.cos(second * (2 * Math.PI) / 60);Line sLine = new Line(centerX, centerY, secondX, secondY);sLine.setStroke(Color.RED);double mLength = clockRadius * 0.65;double minuteX = centerX + mLength * Math.sin(minute * (2 * Math.PI) / 60);double minuteY = centerY - mLength * Math.cos(minute * (2 * Math.PI) / 60);Line mLine = new Line(centerX, centerY, minuteX, minuteY);mLine.setStroke(Color.BLUE);double hLength = clockRadius * 0.5;double hourX = centerX + hLength * Math.sin(hour * (2 * Math.PI) / 12);double hourY = centerY - hLength * Math.cos(hour * (2 * Math.PI) / 12);Line hLine = new Line(centerX, centerY, hourX, hourY);mLine.setStroke(Color.GREEN);getChildren().addAll(sLine, mLine, hLine);}}3)CalendarPanel.java类这个类(Pane)⽤来显⽰⽇历(这⾥⽤到了⼀个字体Cooper Black⼀般系统应该都有,没有就得添加)package com.javaBasic.javaFX;import yout.Pane;import yout.ColumnConstraints;import bel;import javafx.scene.paint.Color;import javafx.geometry.HPos;import javafx.geometry.Insets;import javafx.geometry.Pos;import javafx.scene.text.Font;import javafx.scene.text.FontWeight;import javafx.scene.text.Text;import java.util.Calendar;/*** @version 1.00 2016-10-17* @author Administrator* 功能:显⽰⽇历*/public class CalendarPanel extends Pane{private int year;private int month;private int day;private int firstDayOfWeek;private int totalDayOfMonth;public CalendarPanel(){Calendar calendar = Calendar.getInstance();year = calendar.get(Calendar.YEAR);month = calendar.get(Calendar.MONTH) + 1;day = calendar.get(Calendar.DAY_OF_MONTH);totalDayOfMonth = calendar.getActualMaximum(Calendar.DATE);calendar.set(Calendar.DAY_OF_MONTH, 1);firstDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;paint();}public void paint(){GridPane cp = new GridPane();String[] week = new String[]{"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}; cp.setPadding(new Insets(30, 30, 10, 10));Text text1 = new Text(year + "年" + month + "⽉");text1.setStroke(Color.GREEN);cp.setAlignment(Pos.CENTER);cp.add(text1, 0, 0);GridPane.setColumnSpan(text1, 7);GridPane.setHalignment(text1, HPos.CENTER);for(int i = 0; i < 7; i++){Label label = new Label(week[i]);if(i == 0 || i == 6) label.setTextFill(Color.RED);cp.add(label, i, 1);cp.getColumnConstraints().add(new ColumnConstraints(30));GridPane.setHalignment(label, HPos.CENTER);}for(int j = 0; j < totalDayOfMonth; j++){Label label = new Label(j + 1 +"");if (j + 1 == day) label.setFont(Font.font("Cooper Black", FontWeight.BOLD, 20)); int k = firstDayOfWeek + j;if((k % 7 == 0) || (k % 7 == 6)) label.setTextFill(Color.RED);cp.add(label, k % 7, 2 + k / 7);GridPane.setHalignment(label, HPos.RIGHT);}getChildren().add(cp);}}4)主⾯板ClockMainPanel.java这个类(Pane)是⽤于将上⾯三个⾯板合成主⾯板package com.javaBasic.javaFX;import javafx.animation.KeyFrame;import javafx.animation.Timeline;import javafx.application.Application;import javafx.event.ActionEvent;import javafx.event.EventHandler;import javafx.scene.Scene;import yout.BorderPane;import javafx.scene.text.Font;import javafx.scene.text.Text;import javafx.stage.Stage;import javafx.util.Duration;/*** @version 1.00 2016-10-17* @author Administrator* 功能:各个⾯板Pane合成⼀个时钟⾯板ClockMainPanel*/public class ClockMainPanel extends Application {String NowTime;public static void main(String[] args) {// TODO Auto-generated method stubunch(args);}public void start(Stage primaryStage){ClockEdge ce = new ClockEdge();ClockPointer cp = new ClockPointer();StackPane sp = new StackPane(ce, cp);StackPane nt = new StackPane();CalendarPanel caPa = new CalendarPanel();BorderPane bp = new BorderPane();bp.setLeft(sp);bp.setRight(caPa);bp.setBottom(nt);Scene scene = new Scene(bp, 420, 200);EventHandler<ActionEvent> eventHandler = e ->{nt.getChildren().clear();NowTime = (String) cp.setCurrentTime();Text tt= new Text(NowTime);tt.setFont(Font.font("Times New Roman", 20));nt.getChildren().add(tt);};Timeline animation = new Timeline(new KeyFrame(lis(1000), eventHandler));animation.setCycleCount(Timeline.INDEFINITE);animation.play();primaryStage.setTitle("Perpetual calendar");primaryStage.setScene(scene);primaryStage.show();}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

java课程设计简单日历(word文档良心出品)

java课程设计简单日历(word文档良心出品)

j a v a课程设计报告题目:JA V A简易时间日历程序****:***学号:**********专业班级:信101****:***课程设计题目题目说明通过编写一个基于JAVA的应用系统综合实例,自定义一个日历组件显示日期和时间并进行适当的功能扩充,实践Java语言编程技术。

系统设计1 设计目标一个完整的程序应具有以下功能:1)显示当月日历、当前日期、当前时间;2)可查寻任意月以及任意年的日历;3)使用图形化界面能够弹出对话框;5)正常退出程序。

2 设计思想设计一个类用来构成日历系统的主窗口,然后编写一个框架类显示时间和提示信息。

在设计中应用了多种容器和控件。

系统模块划分图1:简易日历的程序结构图初始化:public void init()完成界面初始化,形成一个以挂历形式显示当前日期的窗口。

日历描述:(1)public void updateView()改变日期后完成更新界面;(2)抽象类java.util.Calendar获取系统日期并传递日期数据而且在人工改变日期后得出当天是周几;(3)public static void main(String[] args)主函数完成系统各算法的调用并对主窗口的一些属性进行设置;滚动时间:将时间以文本的形式在文本框中滚动播出,并能改变滚动的速度。

4. 使用类及接口仅仅简单说明类的功能,详细资料请参看《JavaTM 2 Platform Standard Ed. 6》的电子文档,常规的接口与包则省略不屑。

//以下是日历程序块中使用的类package fancy;import java.awt.*;import java.awt.event.*;import java.util.*; //主要用此包中的日期和时间类import javax.swing.*;import javax.swing.event.*;import javax.swing.table.*;//以下是对滚动时间程序块所使用的类和接口,用到定时器类Timerimport java.awt.Color;import java.awt.FlowLayout;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.event.FocusListener;、//用于监听鼠标单击(焦点改变)事件import java.awt.event.FocusEvent;//用于响应鼠标单击(焦点改变)事件、import javax.swing.JFrame;import javax.swing.JTextField;import javax.swing.JSpinner;//让用户从一个有序序列中选择一个数字或者一个对象值的单行输入字段。

Java日历记事本

Java日历记事本

NIIT-2综合训练日历记事本专业计算机科学与技术学生姓名班级学号指导教师完成日期信息工程学院目录一、综合训练的目的 (1)二、综合训练的内容 (1)三、综合训练的具体实现 (1)四、综合训练的总结 (2)附录:源程序清单 (3)NIIT-2综合训练一、综合训练的目的(1) 进一步巩固所学的Java语言基础知识,达到熟练编写、运用的程度;(2) 锻炼自己的面向对象的程序设计思想,能够深刻认识面向过程与面向对象两种设计方法之间的区别;(3) 熟练掌握具体软件开发平台下(NetBeans)的动手能力,掌握Java应用程序设计的方法与技巧,实现从传统面向过程程序设计思维到面向对象程序设计思维的转型;(4) 初步了解MIS的概念与相关知识,具备独立设计、实现小型MIS系统的应用开发能力。

二、综合训练的内容题目:日历记事本三、综合训练的具体实现1.设计内容设计GUI界面的日历记事本。

系统将日历,记事本功能结合在一起,用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。

2.设计要求1.系统界面的左侧是日历。

该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前日历的年份减一;当鼠标左键单击“下年”按钮,当前日历的年份加一。

2.该日历也可以在某年内按月前后翻动。

鼠标单击“上月”按钮时,当前日历的月份减一;当鼠标左键单击“下月”按钮,当前日历表的月份加一。

3.使用鼠标左键单击选定的日期,如已有记录内容,系统将弹出对话框提示该日历已有记录内容,并询问用户是否用记事本显示该内容。

4.用户选择具体日期后,可以将记事本的当前内容保存起来,形成日志。

3.总体设计本日历记事本程序共有4个java源文件。

CalendarPad.java该java文件生成的类负责创建本日历记事本程序主窗口。

该类含有main方法,程序从该类开始执行。

Year.java该文件负责创建管理年份的对象。

Momth.java该文件负责创建管理月份的类对象。

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日历一、开发语言:java二、开发环境:MyEclipse8.6三、项目名称:java日历控件四、程序运行截图:1.通过单击更改年份:2.通过单击更改月份3.通过单击更改日期4.通过键盘方向键更改日期5.右击将快捷第显示当天的日历6.windows日历展示:7.通过双击可以关闭日历8.该日历的实质是一个去掉了修饰的JFrame9.通过右上角很小的关闭按钮也可以关闭日历10.该日历应用于其它应用程序进行日期输入,日期修改五、程序源文件文件一:package net.cqwu.control;/*_*=====使用已有类Calendar======*_*/import java.text.DateFormatSymbols;import java.util.*;/*** @version 1.4 2007-04-07* @author Cay Horstmann*/public class StandardCalendar{public static void main(String[] args) {GregorianCalendar d = new GregorianCalendar();StandardCalendar s= new StandardCalendar(d.get(Calendar.YEAR), d.get(Calendar.MONTH) - 1, d.get(Calendar.DAY_OF_MONTH));System.out.print(s.getCalendarString());String [][] b = s.getCalendarNumber2D(s.calendarString);int[][] a = s.getMinIndexOutOfMonth(b);for (int[] t: a){for (int p : t){System.out.print(p + " ");}}}public StandardCalendar(int ye, int mo, int da) {super();this.ye = ye;this.mo = mo;this.da = da;}public String getCalendarString(){calendarString = "";// construct d as current dateGregorianCalendar d = new GregorianCalendar(ye, mo, da);int today = d.get(Calendar.DAY_OF_MONTH);System.out.println("今天" + today + "号");int month = d.get(Calendar.MONTH);System.out.println("今天" + (month + 1) + "月");//set d to start date of the monthd.set(Calendar.DAY_OF_MONTH,1);// DAY_OF_WEEK表示一个周中的第几天int weekday = d.get(Calendar.DAY_OF_WEEK);System.out.println("日历当天是一周中的第"+weekday + "天");//get first day of week (Sunday in the U.S.)int firstDayOfWeek = d.getFirstDayOfWeek();// 如果一个月的第一天就是一个周的第一天,就输出上一个月的倒数七天String preMonthString = "";while (weekday == firstDayOfWeek){d.add(Calendar.DAY_OF_MONTH,-1);String temp = "" +d.get(Calendar.DAY_OF_MONTH);preMonthString = temp + " " + preMonthString;System.out.println(temp);weekday = d.get(Calendar.DAY_OF_WEEK);// GregorianCalendar temp1 = new GregorianCalendar(d.get(Calendar.YEAR), d.get(Calendar.MONTH)-1, 1);// do// {// preMonthDays++;// temp1.add(Calendar.DAY_OF_MONTH, 1);// }while(temp1.get(Calendar.MONTH)==month-1);// System.out.println("前一个月有:" + preMonthDays + "天");}//determine the required indentation for the first lineint indent = 0;while(weekday != firstDayOfWeek){indent ++;d.add(Calendar.DAY_OF_MONTH,-1);String temp = "" +d.get(Calendar.DAY_OF_MONTH);preMonthString = temp + " " + preMonthString;System.out.println(temp);weekday = d.get(Calendar.DAY_OF_WEEK);}System.out.println(preMonthString);//print weekday namesString[] weekdayNames = new DateFormatSymbols().getShortWeekdays();do{System.out.printf("%4s",weekdayNames[weekday]);d.add(Calendar.DAY_OF_MONTH,1);weekday = d.get(Calendar.DAY_OF_WEEK);}while(weekday != firstDayOfWeek);System.out.println();// for(int i = 1 ;i <= indent;i++)// {// System.out.print(" ");// }if (preMonthString.length()==21){System.out.print(preMonthString + "\n");calendarString += preMonthString + "\n";}else{System.out.print(preMonthString);calendarString += preMonthString;}d.set(Calendar.DAY_OF_MONTH,1);do{//print dayint day = d.get(Calendar.DAY_OF_MONTH);System.out.printf("%2d",day);if (day < 10){calendarString += " " + day;}else{calendarString += day;}// mark current day with *if(day == today){System.out.print("*");calendarString += "*";}else{System.out.print(" ");calendarString += " ";}//advance d to the next dayd.add(Calendar.DAY_OF_MONTH,1);weekday = d.get(Calendar.DAY_OF_WEEK);//start a new line at the start of the week if(weekday == firstDayOfWeek){System.out.println();calendarString += "\n";}}while(d.get(Calendar.MONTH) == month);//the loop exits when d is day 1 of the next month// 填充日历中的尾部do{//print dayint day = d.get(Calendar.DAY_OF_MONTH);System.out.printf("%2d",day);if (day < 10){calendarString += " " + day;}else{calendarString += day;}// mark current day with *if(day == today){System.out.print("*");calendarString += "*";}else{System.out.print(" ");calendarString += " ";}//advance d to the next dayd.add(Calendar.DAY_OF_MONTH,1);weekday = d.get(Calendar.DAY_OF_WEEK);//start a new line at the start of the weekif(weekday == firstDayOfWeek){System.out.println();calendarString += "\n";}}while(calendarString.length()<=131);// System.out.println("月份" + d.get(Calendar.MONTH));//print final end of line if necessary// if(weekday != firstDayOfWeek)// System.out.println();// System.out.println(calendarString);return calendarString;}// 获得一维日历字符串数组public String[] getCalendarNumber(String calendarString){String[] tempArray = calendarString.split("\n");String standardString = "";String[] standardStringArray = new String[42];for (int i = 0; i < tempArray.length; i ++){standardString += tempArray[i];}// System.out.println(standardString);int standardStringLength = standardString.length();for (int i = 0, j = 1, k =0 ; i < standardStringLength - 2 && j < standardStringLength - 1 && k < 49; i += 3, j += 3, k ++) {standardStringArray[k] = (standardString.charAt(i)==' '?"":standardString.charAt(i)) +""+ standardString.charAt(j);}// for (String temp : standardStringArray)// {// System.out.print(temp + " ");// }return standardStringArray;}// 获得二维日历字符串数组public String[][] getCalendarNumber2D(String calendarString){String[][] standardStringArray2D = new String[6][7];String[] temp = this.getCalendarNumber(this.calendarString);for (int i = 0; i < temp.length; i++) {standardStringArray2D[i/7][i%7] = temp[i];}System.out.println("输出二维数组");for (String [] temp1 : standardStringArray2D){for (String temp2 : temp1){System.out.print(temp2 + " ");}System.out.println();}return standardStringArray2D;}// 该方法用于获得本日历的两个1的索引public int[][] getMinIndexOutOfMonth(String[][] temp){int[][] index = {{0,0}, {0, 0}};for (int i = 0; i < 6; i++) {for (int j = 0; j < 7; j++) {if (Integer.parseInt(temp[i][j]) == 1 && i < 2){index[0][0] = i;index[0][1] = j;}if (Integer.parseInt(temp[i][j]) == 1 && i > 2){index[1][0] = i;index[1][1] = j;}}}return index;}public int getYe() {return ye;}public void setYe(int ye) {this.ye = ye;}public int getMo() {return mo;}public void setMo(int mo) {this.mo = mo;}public int getDa() {return da;}public void setDa(int da) {this.da = da;}private String calendarString = null;private int ye ;private int mo;private int da;};文件二:package net.cqwu.control;import java.awt.Toolkit;/*** 定义一个接口,获得显示器的大小* @version 2011-04-26* @author yelin*/public interface ScreenSize{public static final int DEFAULT_WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width;public static final int DEFAULT_HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height;};文件三:package net.cqwu.model;import java.awt.Color;import java.awt.Cursor;import java.awt.EventQueue;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.awt.event.MouseWheelEvent;import java.awt.event.MouseWheelListener;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import java.awt.font.FontRenderContext;import java.awt.font.LineMetrics;import java.awt.geom.Rectangle2D;import java.util.Calendar;import java.util.GregorianCalendar;import javax.swing.JFrame;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JPopupMenu;import javax.swing.event.MouseInputListener;import net.cqwu.control.ScreenSize;import net.cqwu.control.StandardCalendar;/*** 设计一个日历控件,可以在任何地方使用.* 使用说明:若作为控件使用请转至691行作用,在MainCalendar构造时注册* 你自己的类,进行对象之间的通讯,可以在691行处获取日历。

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

风景日历制作系统设计要求:系统界面的左侧是日历,该日历可以按年份前后翻动,在某年内按月可以前后翻动;使用鼠标左键单击选定的日期,系统界面的右侧显示风景图片。

在系统界面的右侧设计功能按钮使得用户可以自选其他风景图片。

import java.awt.*;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.util.*;import java.util.Timer;import javax.swing.*;import javax.swing.event.*;import javax.swing.table.*;//这是一个用JList和JTable完成的简单日历public class calender{public static void main(String[] args){EventQueue.invokeLater(new Runnable(){public void run(){JFrame frame = new CalendarFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}});}}class CalendarFrame extends JFrame{private static final long serialVersionUID = 8067844586793608064L;JPanel listPanel; // 显示月份的列表面板JPanel tablePanel; // 显示日期的表格面板JPanel textPanel; // 文本面板JMenuBar menuBar; // JMenuBar,JMenu定义的变量都没有实现功能JMenu fileMenu;JMenu editMenu;JMenu formatMenu;JMenu lookMenu;JMenu helpMenu;JEditorPane text; // 自带复制,剪切和删除快捷键功能的面板JScrollPane textscrollpane;JScrollPane tablescrollpane;JList list; // 显示月份的列表JTable table; // 显示日期的表格JPanel yearPanel; // 显示年份的面板JSpinner spinner; // JSpinner空间JLabel label = new JLabel();public static boolean flag = true;public CalendarFrame(){table = new JTable(new MyTableModel());tablescrollpane = new JScrollPane(table);for (int i = 0; i < 7; i++){TableColumn column = table.getColumnModel().getColumn(i);// 获取表格每一列column.setResizable(false);// 不允许改变列的大小}table.setBackground(Color.GREEN);table.setRowHeight(72); // 设定每列的大小table.setRowSelectionAllowed(false);// 设定行的选择模式table.setDefaultRenderer(String.class, new MyTableRenderer());list = new JList(new AbstractListModel() // 匿名的list模型类,提供list显示的月份数据{private static final long serialVersionUID = -3703164069291737586L;public Object getElementAt(int index){String obj = null;switch (index){case 0:obj = "Jan";break;case 1:obj = "Feb";break;case 2:obj = "Mar";break;case 3:obj = "Apr";break;case 4:obj = "May";break;case 5:obj = "Jun";break;case 6:obj = "Jul";break;case 7:obj = "Aug";break;case 8:obj = "Sep";break;case 9:obj = "Oct";break;case 10:obj = "Nov";break;case 11:obj = "Dec";break;}return obj;}@Overridepublic int getSize(){return 12;}});list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // 设定列表的选择模式list.setCellRenderer(new MyListCellRenderer()); // 列表元素的绘制类MyListCellRenderer list.setSelectedIndex(Calendar.getInstance().get(Calendar.MONTH));// JList默认的月份为现实的月份list.addListSelectionListener(new ListSelectionListener()// 当某个列表被选中时,更新日期table控件{@Overridepublic void valueChanged(ListSelectionEvent e){flag = true;table.updateUI();}});list.addMouseListener(new MouseAdapter(){public void mouseClicked(MouseEvent evt){if (evt.getClickCount() == 2){String s = (String) list.getSelectedValue();JOptionPane.showMessageDialog(list, s);}}});listPanel = new JPanel();listPanel.setLayout(new BorderLayout());listPanel.add(list);tablePanel = new JPanel();tablePanel.setBackground(Color.white);tablePanel.setLayout(new BorderLayout());tablePanel.add(tablescrollpane);// table.setBackground(Color.green);yearPanel = new JPanel();// 将label控件和JSpinner控件加入年份面板上yearPanel.setLayout(new GridLayout(0, 4));JLabel gongyuan = new JLabel("公元", JLabel.RIGHT);JLabel year = new JLabel("年");spinner = new JSpinner(new SpinnerNumberModel(Calendar.getInstance().get(Calendar.YEAR), null, null, 1));spinner.addChangeListener(new ChangeListener() // 为JSpinner空间添加事件监听器{@Overridepublic void stateChanged(ChangeEvent e){flag = true;table.updateUI();}});yearPanel.add(gongyuan);yearPanel.add(spinner);yearPanel.add(year);yearPanel.add(label);showTime();new Timer().schedule(new TimerTask(){@Overridepublic void run(){while (true){showTime();}}}, 1000);tablePanel.add(yearPanel, BorderLayout.NORTH);// 将年份面板加入到表格面板的北部textPanel = new JPanel();textPanel.setLayout(new BorderLayout());text = new JEditorPane();textscrollpane = new JScrollPane(text);textPanel.add(textscrollpane);text.setFont(new Font("SansSerif", Font.PLAIN, 40));tablePanel.add(textPanel, BorderLayout.SOUTH);menuBar = new JMenuBar();// JMenu定义的空间都没实现功能fileMenu = new JMenu("文件");editMenu = new JMenu("编辑");formatMenu = new JMenu("格式");lookMenu = new JMenu("查看");helpMenu = new JMenu("帮助");menuBar.add(fileMenu);menuBar.add(editMenu);menuBar.add(formatMenu);menuBar.add(lookMenu);menuBar.add(helpMenu);GridBagLayout layout = new GridBagLayout(); // 设成GridBagLayout布局GridBagConstraints constraints = new GridBagConstraints();this.setFont(new Font("SansSerif", Font.PLAIN, 14));this.setLayout(layout);this.setTitle("万年历"); // 设定标题this.setIconImage(new ImageIcon("res\\title.jpg").getImage()); // 设定图标constraints.fill = GridBagConstraints.BOTH;constraints.weightx = 0.5;constraints.weighty = 0.5;layout.setConstraints(listPanel, constraints);constraints.weightx = 8.0;constraints.weighty = 0.5;layout.setConstraints(tablePanel, constraints);this.setJMenuBar(menuBar);this.add(listPanel);this.add(tablePanel);this.setSize(this.getToolkit().getScreenSize().width * 3 / 4, this.getToolkit().getScreenSize().height * 3 / 4); // 设定窗体的大小}private void showTime(){int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);int minute = Calendar.getInstance().get(Calendar.MINUTE);int second = Calendar.getInstance().get(Calendar.SECOND);StringBuilder sb = new StringBuilder();if (hour < 10){sb.append("0" + hour);} else{sb.append(hour);}if (minute < 10){sb.append(":0" + minute);} else{sb.append(":" + minute);}if (second < 10){sb.append(":0" + second);} elsesb.append(":" + second);label.setFont(new Font("SansSerif", Font.BOLD, 12));label.setForeground(Color.BLACK);label.setText(sb.toString());}class MyTableModel extends AbstractTableModel // 表格模型类,提供表格数据{private static final long serialVersionUID = 1L;String[] columnName = new String[]// 表格列名{ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday","Saturday" };@Overridepublic int getColumnCount() // 返回表格列数{return columnName.length;}public int getRowCount() // 返回表格行数{return 6;}public String getColumnName(int col) // 获得表格列名{return columnName[col];}public Class<? extends Object> getColumnClass(int c){return getValueAt(0, c).getClass();}public Object getValueAt(int rowIndex, int columnIndex){int month = list.getSelectedIndex();// 获得列表的月份int year = (Integer) spinner.getValue();// 获得spinner显示的年份GregorianCalendar gc = new GregorianCalendar(year, month, 1);int dayOfWeek = gc.get(Calendar.DAY_OF_WEEK) - 1; // 获得这个月的第一天是星期几int countDayInMonth = 0;// 某月的总天数,这里的月是从0-11,表示1-12月if (month == 0 || month == 2 || month == 4 || month == 6|| month == 7 || month == 9 || month == 11){countDayInMonth = 31; // 是31天的月份} else if (month == 3 || month == 5 || month == 8 || month == 10){countDayInMonth = 30; // 是30天的月份} else if (gc.isLeapYear(year) && month == 1){countDayInMonth = 29; // 闰年2月} else if (!gc.isLeapYear(year) && month == 1){countDayInMonth = 28; // 非闰年2月}String value = ""; // 因为返回值是Object类型,所以不能直接返回int类型的数据,所以转换成String类型if (rowIndex == 0) // 第一列的数据{if (columnIndex < dayOfWeek){value = "";} else{value = "" + (columnIndex - dayOfWeek + 1);}} else// 其余列的数据{if (((rowIndex - 1) * 7) + (columnIndex + 1 + 7 - dayOfWeek) <= countDayInMonth)value = (((rowIndex - 1) * 7) + (columnIndex + 1 + 7 - dayOfWeek))+ "";}return value;}}class MyListCellRenderer extends JLabel implements ListCellRenderer // 列表元素绘制类继承自JLabel,实现ListCellRenderer接口{private static final long serialVersionUID = 1L;public Component getListCellRendererComponent(JList list, // the listObject value, // value to displayint index, // cell indexboolean isSelected, // is the cell selectedboolean cellHasFocus) // does the cell have focus{String s = value.toString().trim(); // 获取选中元素的字符内容setText(s); // 显示这个字符Dimension dimension = list.getSize(); // 设定这个每个元素的大小int height = dimension.height / 12;int width = dimension.width;setSize(width, height);if (isSelected) // 如果该元素被选中,则背景色为红色{setBackground(Color.red);setForeground(list.getSelectionBackground());} else// 未被选中的元素背景色显示为灰色,前景色为粉红色{setBackground(Color.gray);setForeground(Color.pink);}setIcon(new ImageIcon("res\\mon.jpg")); // 设定该元素的图标setEnabled(list.isEnabled());setFont(new Font("SansSerif", Font.PLAIN, 20)); // 设定字体大小setOpaque(true);return this;}}class MyTableRenderer extends JLabel implements TableCellRenderer{private static final long serialVersionUID = 1L;public Component getTableCellRendererComponent(JTable table,Object value, boolean isSelected, boolean hasFocus, int row,int column){if ((Calendar.getInstance().get(Calendar.DAY_OF_MONTH) + "") // 如果这个标签上的值等于该天的值.equals(value)&& flag == true // 标记为true&& list.getSelectedIndex() == Calendar.getInstance().get(Calendar.MONTH) // 列表显示的月份是该月的值&& (Integer) spinner.getValue() == Calendar.getInstance().get(Calendar.YEAR))// spinner显示的年份是该年{setFont(new Font("SansSerif", Font.PLAIN, 40)); // 设定字体大小setText((String) value); // 显示日期字符串setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));setForeground(Color.RED); // 设定字符串颜色flag = false;} else// 如果不是改日的标签上的值{setFont(new Font("SansSerif", Font.PLAIN, 40)); // 设定字体大小setText((String) value); // 显示标签上的日期字符串if (hasFocus) // 如果是被点中的表格的单元格{setBorder(UIManager.getBorder("Table.focusCellHighlightBorder")); // 设定边框setForeground(Color.RED);// 设定日期字符串颜色} else{setForeground(null);setBorder(null);}}return this;}}}。

相关文档
最新文档