java日历小程序

java日历小程序
java日历小程序

学生学号实验课成绩

武汉理工大学

学生实验报告书

实验课程名称软件开发工具

开课学院计算机科学与技术学院

指导老师姓名张能立

学生姓名

学生专业班级

2013 —2014 学年第 1 学期

JA V A日历小程序

摘要:

万年历是一个强大的日历系统,通过它可以实现对过去,现在以及将来日期的查询,通过在年份对话框中输入要查询的年份,再相应的在月份对应的下拉菜单选择要查询的月份,则可得到相应的日历。本实验是对图形用户界面,布局管理器的综合运用,理解JAVA的时间处理机制,编写独立运行的窗口。

关键词:

日历;swing;布局管理器;

引言:

Java是现在全球最为流行的开发工具之一,它拥有一套庞大且完善的类库,内置了其他语言需要靠库甚至是操作系统才能支持的功能。Java的产生与流行是Internet发展的客观要求。Java作为一门“一次编译,随处运行”的语言,其强大的兼容性给予程序员高效的开发,而是用eclipse作为IDE开发Java程序成了人们的首选因为作为一个开源的编辑环境,Eclipse其众多的插件支持给予了开发者很好的体验效果。现在就让我们用JA V A编写一个日历小程序来体验Eclipse 开发带来的高效性。

Eclipse简介:

Eclipse 是一个开放源代码的、基于Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java 开发工具(Java Development Tools,JDT)。

一、需求分析

1.1需求分析

本程序的要求为:

1.使用图形用户界面;

2.本程序能够实现日期与星期的查询。

1.2功能设计

本程序要构建的万年历程序,其功能有以下几个方面:

1.实现图形界面。

2.能以月历形式显示日期与星期。工作日、双休日、当天分别以黑色、红色和蓝色显示。

3.支持用户通过下拉形式菜单来选择月份。

4.通过点击“现在日期”来刷新日历。

二、概要设计

2.1开发环境

开发平台:Microsoft Windows XP Professional Service Pack 2

开发工具:Eclipse SDK 3.2.0 + JDK 1.6.0_02

2.2程序设计思路

1.月份总天数的算法:直接根据month_int,即月份序号判断该月的天数。当month_int等于2时,调用isLeapYear()方法判断是否为闰年。

2.网格内容算法:用dt.getDate()方法算出输出月份第一天为星期几,第一天的格子序号应该为7+第一天的星期序号。算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并从该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。

3.日期颜色的算法:格子数从0开始,第一行为星期序号,则日期从第7格开始。根据格子序号i进行判断,当i模7余数为0或者6时日期为周末,置为红色;当i等于第一天的格子序号加上当前日期减一时,置为蓝色;其余日期为黑色。

4.如果年份小于2001年大于2031年则程序不予判断。

2.3具体功能设计

数据选择列表:年份选择列表、月份选择列表。

点击日期跳转按钮,即在日历中显示用户选择日期数据;

点击现在日期按钮,即在日历中显示当前日期数据。

2.4程序运行界面

(图2.4.1:程序运行界面截图)

2.5程序流程图

(图2.5.1:程序流程图)

三、详细设计

3.1初始化组件

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.*;

3.2初始化程序数据,绘制程序面板

在初始化模块中,首先定义一个公共类 CalenderTrain ,它继承自JFrame 。ActionListener 是一个接口,在实现此接口的类CalenderTrain 中,给需要关注其动作的组件跳转按钮button_jump 和现在日期按钮button_today 添加监听器(addActionListener(this),之后在事件处理方法public void actionPerformed (ActionEvent e) 中,对每个事件进行不同处理。在这个类中,定义用到的标签、下拉列表框、按钮,放置面板。

是 否 计算,绘制屏幕 是否选择日期 提交年月变更数据 程序初始化 结束

获取当前系统时间年份等数据 开始

public class CalenderTrain extends JFrame implements ActionListener { JComboBox Month = new JComboBox();

JComboBox Year = new JComboBox();

JLabel Year_l = new JLabel("年份:");

JLabel Month_l = new JLabel("月份:");

Date now_date = new Date();

JButton[] button_day = new JButton[49];

JButton button_jump = new JButton("日期跳转");

JButton button_today = new JButton("现在日期");

int now_year = now_date.getYear() + 1900;

int now_month = now_date.getMonth();

boolean bool = false;

String year_int = null;

int month_int;

JPanel pane_ym = new JPanel();

JPanel pane_day = new JPanel();

JPanel pane_parent = new JPanel();

调用CalenderTrain,设定面板标题为"JAVA日历程序"。只给窗口设置frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)的话,点击关闭按钮,执行的其实只有把窗口隐藏动作,在任务管理器中可以看到进程仍在运行。于是加上后面的代码,确保点击关闭,程序直接退出system。面板的大小设置为不能变化。

public CalenderTrain() {

super("JAVA日历程序");

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

addWindowListener(new WindowAdapter() {

public void windowClose(WindowEvent e) {

System.exit(0);

}

});

setResizable(false);

设定年月时,规定年份的区间是当前年份的过去10年到当前年份的未来20年,月份区间为正常1-12月。由于在年份区间中,今年是所有年份中的第十一个,所以Year.setSelectedIndex()的参数为10时,年份刚好是2011。Pane_ym 即放置年月下拉列表框以及两个控制按钮的面板。给“跳转按钮”和“现在日期”按钮添加监听事件。

for (int i = now_year - 10; i <= now_year + 20; i++) {

Year.addItem(i + "");

}

for (int i = 1; i < 13; i++) {

Month.addItem(i + "");

}

Year.setSelectedIndex(10);

button_jump.addActionListener(this);

button_today.addActionListener(this);

初始化日期按钮并绘制。由于每一月第一天不能确定,即所在列的位置(星期)不能确定,加上第一行的星期序号,画一个7*7网格布局管理器GridLayout。GridLayout把容器分成指定行和列的若干个网格,每个组件占一个网格,从左

向右、从上到下依次把组件添加进来。所有的网格都是同样大小的。GridLayout(7, 7)设置行列数为7*7。

pane_day.setLayout(new GridLayout(7, 7));

for (int i = 0; i < 49; i++) {

button_day[i] = new JButton(" ");

pane_day.add(button_day[i]);

}

本程序中,对组件的布置、整形和定位授权给一个布局管理器,由布局管理器来负责。利用布局管理器可以做到:(1)计算一个容器的所选尺寸和最小尺寸(2)布置一个容器的组件。这里采用的是BorderLayout,按东南西北和中心将组件布置在容器的四周和中心。用se tContentPane()方法把容器置为JFrame

的内容面板。用pack()方法调整此窗口的大小,以适合其子组件的首选大小和

布局实现全部显示,然后用show()方法显示出来。

pane_parent.setLayout(new BorderLayout());

setContentPane(pane_day);

setContentPane(pane_ym);

pane_parent.add(pane_day, BorderLayout.SOUTH);

pane_parent.add(pane_ym, BorderLayout.NORTH);

setContentPane(pane_parent);

pack();

show();

}

3.3显示日期的方法

根据bool的值,由if语句进行判断执行哪一显示日期的语句块,为true 时,显示现在的时间;为false时,显示用户选定的时间。网格第一行,即0

至6号格子,内容固定为星期序号,即“星期日”到“星期六”。

void setDay() {

if (bool) {

year_int = now_year + "";

month_int = now_month;

} else {

year_int = Year.getSelectedItem().toString();

month_int = Month.getSelectedIndex();

}

int year_sel = Integer.parseInt(year_int) - 1900;

Date dt = new Date(year_sel, month_int, 1);

GregorianCalendar cal = new GregorianCalendar(); cal.setTime(dt); String week[] = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };

int day = 0;

int day_week = 0;

for (int i = 0; i < 7; i++) {

button_day[i].setText(week[i]);

}

判断当前月份的天数,根据它来设定day的值,其中二月份要判断是否是闰年。因为第一行的星期序号已经占用了7个格子,所以day_week的值要加上7,即day_week = 7 + dt.getDay()。

if (month_int == 0

|| month_int == 2

|| month_int == 4

|| month_int == 6

|| month_int == 7

|| month_int == 9

|| month_int == 11) {

day = 31;

} else if (

month_int == 3

|| month_int == 5

|| month_int == 8

|| month_int == 10) {

day = 30;

} else {

if (cal.isLeapYear(year_sel)) {

day = 29;

} else {

day = 28;

}

}

day_week = 7 + dt.getDay();

绘制GridLayout网格的内容。首先要根据选定的月份的第一天是星期几来确定我们绘制按钮的起始位置。前段代码中的day_week就是我们要绘制的起始位置。对于那些没有数值可以显示的按钮要置空。星期六和星期日以红色字体显示,工作日以黑色字体显示,当天以蓝色字体显示。对于没有日期数值显示的按钮进行置空处理。Count的值即网格的内容,值从1一直到day(当月的总天数)。

int count = 1;

for (int i = day_week; i < day_week + day; count++, i++) {

if (i % 7 == 0

|| i == 13

|| i == 20

|| i == 27

|| i == 48

|| i == 34

|| i == 41)

{

if (i == day_week + now_date.getDate() - 1)

{

button_day[i].setForeground(Color.blue);

button_day[i].setText(count + "");

} else {

button_day[i].setForeground(Color.red);

button_day[i].setText(count + "");

}

}

else

{

if (i == day_week + now_date.getDate() - 1)

{

button_day[i].setForeground(Color.blue);

button_day[i].setText(count + "");

} else {

button_day[i].setForeground(Color.black);

button_day[i].setText(count + "");

}

}

}

3.4点击按钮产生的效果

对监听器关注的按钮动作进行处理,点击“日期跳转”按钮时,将bool置为false,并调用setDay()方法重新绘制网格内容;点击“现在日期”按钮时,将bool置为true,得到今天的日期,将月份置为当前月份,将年份置为当前年份。

public void actionPerformed(ActionEvent e) {

if (e.getSource() == button_jump) {

bool = false;

this.setDay();

} else if (e.getSource() == button_today) {

bool = true;

this.setDay();

Month.setSelectedIndex(now_month);

Year.setSelectedIndex(10);

}

}

四、程序测试

4.1程序不能完全退出

点击窗口右上角的关闭按钮,程序窗口消失,但是,查看任务管理器,可以发现进程仍然在运行。

(图4.1.1:程序不能完全退出)

解决方法:将关闭部分的代码修改为下段代码后,程序能够完全退出。

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

addWindowListener(new WindowAdapter() {

public void windowClose(WindowEvent e) {

System.exit(0);

4.2下拉列表数据不能返回

运行程序,跳转日期后,再点击“当前日期”按钮,日期面板显示的是当前的日期数据,年份、月份下拉列表的值还是停留在跳转时所选定的值,不能正常返回。

(图4.2.1:下拉列表数据不能返回)

解决方法:把button_day的处理事件,修改为下段代码

else if (e.getSource() == button_today) {

bool = true;

this.setDay();

Month.setSelectedIndex(now_month);

Year.setSelectedIndex(10);

}

五、心得体会

经过短暂的Java程序设计学习,使我又学到了很多的知识,尤其是运用Java 知识去解决实际问题的能力又得到了很大的提高。尽管所设计的程序比较简单,但是程序中的每个功能的实现都经过了自己的一定认真的思考。由于把所学的知识做到很灵活的运用在实际中,对于现在的我还有一定的难度,故而,在设计的每个的环节中,都会多多少少的遇到一些问题,这就促使我去查阅各种资料,或者请教同学,极大的提高我的专业素养,同时对在有些书上的理论知识在实际的运用,以及应该注意的问题有了比较深刻的认识。当然,仍然有些理论问题不是很好的去运用,或者是了解的不深刻。这就使的在实践中的所设计的程序有些功能不是自己所想的那样的完美。不过,既然发现了问题的所在,我就不会放弃的,直至问题得到解决。这些也同时反映出了平时运用知识去实践这方面做的太少。太缺乏经验。对所设计中将所面临的问题认识不够。是Java课程设计让我认识到了这些问题的存在。同时给我提供了去面对这些问题的平台。也使我充分的认识到在以后也应该怎样去实践,怎样去学习一门计算机语言,以及如何去运用这门语言去解决实际问题等等。

总之,在经过这次Java的课程设计,使我认识到了自己很多的缺点,同时,也是我更好的了解JAVA和Eclipse平台的一个机会。

6参考文献

[1].曾令明索望甘刚宋波,Java程序设计教程,西安电子科技大学出版社,2007.8

[2].孙全党王吴迪赵枫朝,Java程序设计应用教程,电子工业出版社,2006.2

[3].赵玉阳,Java从入门到精通,清华大学出版社,2006.8

源代码:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.*;

public class CalenderTrain extends JFrame implements ActionListener {

JComboBox Month = new JComboBox(); //月份下拉列表框JComboBox Year = new JComboBox(); //年份下拉列表框

JLabel Year_l = new JLabel("年份:"); //定义标签

JLabel Month_l = new JLabel("月份:"); //定义标签

Date now_date = new Date(); //获取今天的日期

JButton[] button_day = new JButton[49]; //定义一个数组用来存放日期

JButton button_jump = new JButton("日期跳转"); //现实选择日期

JButton button_today = new JButton("现在日期"); //显示今天日期按钮

int now_year = now_date.getYear() + 1900; //获取年份值

int now_month = now_date.getMonth(); //获取月份值(当前月份-1)

boolean bool = false;

String year_int = null; //存放年份

int month_int; //存放月份

JPanel pane_ym = new JPanel(); //放置下拉列表框和控制按钮面板

JPanel pane_day = new JPanel(); //放置日期面板

JPanel pane_parent = new JPanel(); //放置以上两个面板

//定义方法绘制面板

public CalenderTrain() {

super("JAVA日历程序"); //设定面板标题

//---以下几行使得关闭面板时退出程序setDefaultCloseOperation(DISPOSE_ON_CLOSE); addWindowListener(new WindowAdapter() {

public void windowClose(WindowEvent e) {

//System.out.print("CLOSING THE WIN");

System.exit(0);

}

});

setResizable(false); //面板的大小不能变化

//设定年月

/*年份的区间是当前年份的过去10年到当前年份的未来20年

* 月份正常1-12月

*/

for (int i = now_year - 10; i <= now_year + 20; i++) { Year.addItem(i + "");

}

for (int i = 1; i < 13; i++) {

Month.addItem(i + "");

}

Year.setSelectedIndex(10); //设定年份下拉列表为当前年份

//Year.setText()

pane_ym.add(Year_l); //添加年份标签

pane_ym.add(Year); //添加年份下拉列表框

Month.setSelectedIndex(now_month); //设定月份下拉列表为当前月份

pane_ym.add(Month_l); //添加月份标签

pane_ym.add(Month); //添加月份下拉列表框

pane_ym.add(button_jump); //添加跳转按钮

pane_ym.add(button_today); //添加“现在日期”按钮

button_jump.addActionListener(this); //跳转按钮添加监听事件

button_today.addActionListener(this); //“现在日期”按钮添加监听事件

//年月设定结束

//初始化日期按钮并绘制

pane_day.setLayout(new GridLayout(7, 7));

for (int i = 0; i < 49; i++) {

button_day[i] = new JButton(" ");

pane_day.add(button_day[i]);

}

this.setDay(); //调用setDay()方法

pane_parent.setLayout(new BorderLayout()); //设定布局管理器setContentPane(pane_day);

setContentPane(pane_ym);

pane_parent.add(pane_day, BorderLayout.SOUTH);

pane_parent.add(pane_ym, BorderLayout.NORTH); setContentPane(pane_parent);

pack();

show();

}

//SET DAY 方法,显示日期

void setDay() {

if (bool) {

year_int = now_year + "";

month_int = now_month;

} else {

year_int = Year.getSelectedItem().toString();

month_int = Month.getSelectedIndex();

//year_int=Year.getText();

//month_int=Integer.parseInt(Month.getText());

}

int year_sel = Integer.parseInt(year_int) - 1900; //获得年份值

Date dt = new Date(year_sel, month_int, 1); //构造一个日期GregorianCalendar cal = new GregorianCalendar(); //创建一个Calendar实例

cal.setTime(dt);

String week[] = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };

int day = 0; //day中存放某个月份的天数

int day_week = 0; //用来存放某个月的第一天是星期几的数值

//--将星期添加到前7个按钮中

for (int i = 0; i < 7; i++) {

button_day[i].setText(week[i]);

}

//--

/*判断是几月份,根据它来设定day的值* 其中二月份要判断是否是闰年

*/

if (month_int == 0

|| month_int == 2

|| month_int == 4

|| month_int == 6

|| month_int == 7

|| month_int == 9

|| month_int == 11) {

day = 31;

} else if (

month_int == 3

|| month_int == 5

|| month_int == 8

|| month_int == 10) {

day = 30;

} else {

if (cal.isLeapYear(year_sel)) {

day = 29;

} else {

day = 28;

}

}

day_week = 7 + dt.getDay();

int count = 1;

/*绘制按钮

*首先要根据选定的月份的第一天是星期几来确定我们绘制按钮的起始位置

* 其中day_week就是我们要绘制的起始位置

* 对于那些没有数值可以显示的按钮要置空

*/

for (int i = day_week; i < day_week + day; count++, i++) { if (i % 7 == 0

|| i == 13

|| i == 20

|| i == 27

|| i == 48

|| i == 34

|| i == 41) {

if (i == day_week + now_date.getDate() - 1) {

Java课程设计实验报告及全部源码流程图

课程设计 一、实验目的 1.加深对课堂讲授内容的理解,掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及软件编程、调试等能力,掌握面向对象的编程思想及Java语言程序设计的规律与技巧,为进一步学习web应用开发及今后从事专业工作打下基础。 2. 使用本学期学习的Java SE技术(也可以使用课堂教学中没有学习过的Java技术,但是应当以Java SE技术为主)完成多功能日历GUI程序的设计,使之具有如下基本功能:一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。 3.在完成基本功能的基础上发挥自己的想象力与创造力,使程序凸显出与众不同的特点与功能,形成本小组的特性色。 二、实验要求 1.问题描述准确、规范。 2.程序结构合理,调试数据准确、有代表性.。 3.界面布局整齐,人机交互方便。 4.输出结果正确。 5.正确撰写实验报告。 三、实验内容 编写一个GUI程序实现日历的功能。一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期以及当前农历,可以为每页日历选择背景图片。可以实现显示时钟,时钟能进行整点报

时。可以实现备忘记事功能,能在每天添加、修改、删除记事等操作。 四、实验步骤 1.在上机实验前,小组成员进行选题讨论,确定小组感兴趣而又伸缩性强的题目多功能日历。 2.在第一次上机实验时讨论分工,分工明确之后,分头合作进行。 3.各成员完成自己的任务后,最后进行统筹合并,以及程序最后的优化。 4. 根据实验结果,写出合肥工业大学实验报告。实验报告应当包括:实验内容,程序流程图,类结构,程序清单,运行结果,以及通过上机取得的经验。 5.详细的上机实验步骤见任务分工及程序设计进度表。 五、实验结果 经过小组成员的共同努力,最终我们小组设计的多功能日历程序能够实现实验的基本要求——一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。另外,在完成基本要求的基础上,我们增添了显示农历、显示时钟、添加备忘录、修改备忘录等功能。整体程序运行流畅、功能齐全、符合操作习惯。 下面是程序运行效果截图: 日历主界面(可以实现每个月的日历,可以按年或按月前后翻动,能够显示当前日期,并能够选择背景图片):

日历小程序解读

目录 一、摘要 (1) 二、程序分析 (1) 2.1需求分析 (1) 2.2功能设计 (1) 2.3概要设计....................2-3 2.3.1程序设计思路. (2) 2.3.2具体功能设计 (2) 2.3.3程序流程图 (3) 三、详细设计·····················4-12 3.1初始化组件 (4) 3.2初始化程序数据,绘制程序面板··········4-7 3.3显示日期的方法·················8-11 3.4点击按钮产生的效果···············11-12 四、运行结果 (13) 五、心得体会 (14) 六、参考文献 (15)

一、摘要: 万年历是一个强大的日历系统,通过它可以实现对过去,现在以及将来日期的查询,通过在年份对话框中输入要查询的年份,再相应的在月份对应的下拉菜单选择要查询的月份,则可得到相应的日历。本实验是对图形用户界面,布局管理器的综合运用,理解JAVA的时间处理机制,编写独立运行的窗口。 二、程序分析 2.1需求分析 本程序的要求为: 1.使用图形用户界面; 2.本程序能够实现日期与星期的查询。 2.2功能设计 本程序要构建的万年历程序,其功能有以下几个方面: 1.实现图形界面。 2.能以月历形式显示日期与星期。工作日、双休日、当天分别以黑色、红色和蓝色显示。 3.支持用户通过下拉形式菜单来选择月份。 4.通过点击“现在日期”来刷新日历。

2.3概要设计 2.3.1程序设计思路 1.月份总天数的算法:直接根据month_int,即月份序号判断该月的天数。当month_int等于2时,调用isLeapYear()方法判断是否为闰年。 2.网格内容算法:用dt.getDate()方法算出输出月份第一天为星期几,第一天的格子序号应该为7+第一天的星期序号。算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并从该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。 3.日期颜色的算法:格子数从0开始,第一行为星期序号,则日期从第7格开始。根据格子序号i进行判断,当i模7余数为0或者6时日期为周末,置为红色;当i等于第一天的格子序号加上当前日期减一时,置为蓝色;其余日期为黑色。 4.如果年份小于2001年大于2031年则程序不予判断。 2.3.2具体功能设计 数据选择列表:年份选择列表、月份选择列表。 点击日期跳转按钮,即在日历中显示用户选择日期数据; 点击现在日期按钮,即在日历中显示当前日期数据。

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

课程设计说明书 课程: Java程序设计 院系:计算机科学学院 专业班级:计算机科学与技术(2)班 组员:张少华、张天阳 2010年6月 26 日

《Java程序设计》课程设计 ——日历记事本 我们开发了一个实现有日历标记的记事本软件,日历记事本面板由日历和和记事本两部分组成。日历部分可以调节年份,月份,日期,星期。记事本可以实行查看,保存,删除等操作,并且每一步操作都有相应提示。本软件是一个实用性很强,简洁,方便的功能软件。 引言 Java是一种纯面向对象的、网络编程首选的语言。Java技术作为软件开的一种革命性技术,已被列为当今世界信息技术的主流之一。为了适应时代潮流,我们应该加强对Java的学习,更好的掌握这门课程。为此,我们成了一个课程小组,经过小组成的商讨之后,我们决定以“日历记事本”为设题材,借此巩固加深我们对Java 的了解。 本次课程设计的实例虽然比较简单,程序设计也不是很复杂,但在此程序的设计过程也是一个学习过程,更是对复杂程序的一个学习过程,还能培养我们的数抽象能力。因此,我们觉得这次课程设计是非常有意义的,能为我们今后学习面向过程的程序设计作一些铺垫。 1、设计的目的与要求; (1)为用户提供一个简便的日历记事本; (2)对java技术的进一步了解和简单的运用; (3)初步的接触软件工程; 2.设计目的与任务 本课程设计所要求达到的目的和任务:通过Java程序设计的一些重要理论基础来实现“日历记事本”的“日历”和“记事本”的双重功能。并通过此次课程设计的训练,使学生巩固和加深对Java这门课程的理解,通过利用所学到的计算科学的理论知识,提高解决实际问题的能力,增强运算、编程和使用技术资料的技能,通过实际问题的分析设计、编程和调试,掌握应用软件的分析方法和工程设计方法,能正确阐述设计和实验结果。通过这次课程设计,培养实事求是、认真、严谨的科学态度和刻苦钻研不断创新的精神,逐步建立正确的全局观念。 3.设计方案 3.1 总体设计

万年历应用小程序设计报告

题目:万年历应用小程序 一、题目陈述: 设计一个万年历,要求具有显示年份、月份、日期的功能,与windowsXP 系统的日期与时间的界面和功能类似。 二、问题分析: 万年历的界面可由内容面板类panel 和spinner 、textArea 、comboBox 等容器构成;布局可以由BorderLayout 、FlowLayout 、GridLayout 使其达到美观整齐的效果。万年历功能的实现是通过添加相应的监听器和事件处理函数来完成的。 三、题目设计: (一)、类设计: 1、 面板类CalendarDemo :嵌入显示月份的comboBox 和显示年份的spinner ,以及显 示日期的textArea 。 2、 窗口类CalendarTest :镶入面板,设计窗口大小等属性,并包含主函数。运行后显 示该窗口。 3、 类与类之间的关系: (二)、界面设计: 根据windows 的日期界面,利用JPanel 提供的BorderLayout 、FlowLayout ,将包含comboBox 和spinner 的panel1放在NORTH 区,包含textArea 的panel2放在CENTER 区。CalendarDemo 类的对象panel 的titledBorder 设置为“日期”

(三)、事件处理: 匿名内部类事件监听器做事件处理:用comboBox实现月份变换改变日期变换的PopupMenuListener()、用spinner实现年份变换改变日期变换的ChangeListener()。 具体处理方式: (四)、主要的成员变量和成员函数: 1、面板类CalculatorDemo:JComboBox comboBox;JSpinner spinner;JTextArea textArea; JPanel panel1,panel2;String[] monthsString[] date;int thisYear, thisMonth;Public void typeset() ; 2、窗口类CalculatorTest:CalendarDemo panel;public static void main; 四、源代码: import javax.swing.*; import java.awt.*; import javax.swing.event.*; public class CalendarDemo extends JPanel { JComboBox comboBox; JSpinner spinner;

java课程设计 万年历 源代码

华北科技学院 课程设计报告 面向对象程序设计(Java) 班级: 电商B09-3 姓名: 周婷玉 设计题目:__________万年历________________ 设计时间: 2011-12-28 至2012-01-06 指导教师:_______ 郭慧____________ _____ 评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:___________评阅教师:_____________

课程设计说明书 1、课程设计的目的 a)掌握面向对象程序设计基本要素(封装、继承、多态) b)掌握JA VA语言常用类包及其常用方法和JA VA语言基本语法 c)掌握基于AWT的图形用户界面设计 i.常用标准控件的使用,如标签、按钮、菜单、文本框、单选按钮、 滚动条等。 ii.事件处理机制 d)掌握布局、对话框的使用 e)掌握发布JA VA应用程序 2、功能模块简介和系统结构图 需求分析:本程序的要求为: 1.使用图形用户界面 2.能够实现日期与星期的查询 3.实现当日的时间备忘 功能设计: 1.能以月历形式显示日期与星期 2.支持用户自己输入年份,并提供月份的下拉形式来选择查询 3.添加当日行事历,储存与清除功能

Java编写的扫雷小程序

J a v a编写的扫雷小程序Prepared on 21 November 2021

整个程序使用了4个类: Game 用于启动程序, 界面的布置,各种行列的算法。 ExtendButton 继承了Jbutton 用于新建button的各种属性 ShowNum 监听到某个button后,计算出此button周围有几个雷,不同的雷对应不通的图片,类得到button上应加载的图片地址 ViewReSet 此类用于新建一个窗口,用户输入自己想要的行、列、雷数,然后用新的行列雷数new 一个新的Game biaose dise1 dise2 dise3 dise4 dise5 dise6 dise7 dise8 dise lei biaoji

/**************************************************************** 运行类创建游戏主窗体 */ package class Game extends JFrame implements ActionListener{ private Container myContainer; private GridLayout myLayout; private JPanel myPanelMain; private JPanel myPanel; private JToolBar myTool; private JLabel time; private JLabel labelTime; private JLabel bombNum; private JLabel labelBombNum; private JMenuBar menuBar; private JMenu menuE, menuH; private JMenuItem menuItemCZ, menuItemSZ; private int numBomb, countTime, leaveBomb, numEnd; private int myRows, myColumns; private int xis, yis; private Timer timer; private ExtendButton[] myButton = null; etPostion(i); [i].setIcon((new ShowNum(10)).getImageIcon()); [i].setButton_num(0); [i].SetVisited(false); [i].SetStatus(false); ddMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { if (() == ) {

小程序

第一页面框架功能简介 1、第一页预览图 2、绿色框架第三处详解: B、活动日历(如下图):按日历时间,则下面会显示当天的活动 C、商务合作(这里可以说明我们在做什么,并且我们有其他什么业务可以合作,如何联系我的一些信息)

3、黄色第4的活动栏版面如图一致,点击链接进去的界面如下图所示: (备注:此处的地址如果是会员则可以显示地址并可以报名,如不是会员则地址栏处显示:某某区,成为会员后可查看具体位置) 4、紫色报名处点开如下: (备注:这里是会员则可以报名领取免费票,不是会员则会转跳到充值会员的页面)

2、第二页预览图 方案一:手工沙龙教程 点击手工课程这一栏,进去的内容画面如下:

这里只需要有每条DIY手工教程链接,点进去链接页面如下: 可以发图片以及文字进行教程。(这里可以让老师发她自己的一些简单教程,并且可以约线下教学,运营社群) 方案二: 视频教程

这里的链接变成一个个视频,点进去如果非会员则只能试看5分钟,5分钟后会弹出弹幕,弹幕内容有二,第一显示二维码,扫二维码则可以进去相应的社群,第二显示如需继续观看,则付费如1元继续观看。 3、第三页预览图

我的这里需要有的信息如下: 1、 会员到期时间 2、 会员充值(显示是会员的权利) 3、 会员余额 4、 收藏 5、 我的票券 6、 参加过的活动 备注:看是否能做四页,第四页是专门 约咖啡,里面是上所有食品饮品,客人如果是会员则可以直接平台购买,出具二维码吧台认证,则完成结算。这里可以食品饮品与门店价格一致,但是客人充值100元时我们可以送例如10元。这样首先可以让更多熟客关注我们这个小程序,同时也增加客人粘性

java日历制作源代码

import java.util.Scanner; public class rili{ public static void main(String[] args){ Scanner in=new Scanner(System.in); System.out.println("请输入年份,并回车:"); int year=in.nextInt(); System.out.println("请输入月份,并回车:"); int month=in.nextInt(); int sum=0; for(int i=1900;i

java小程序设计

课程设计报告 设计题目:用Java编的计算器 院系 班级 设计者 学号 指导教师 设计时间

前言: 通过上课学习了java程序设计的基本原理和模式,这次又以java语言为基本结合其图形应用界面来设计一个包括加、减、乘、除。还有带括号以及带负号、小数运算的计算程序。 系统功能和使用说明: 一.硬件环境: 本系统适用于现应用各种类型的计算机,内存容量为128MB以上,不必配备的外部附加设备。二.软件环境: 本系统的设计采用的是JAVA语言,应在JDK 5.0或者其更高版软件环境下本使用。 三.系统流程图: 1.下图是本程序的运行后的界面,其标注是此组件在程序中的名字 2.系统流程图中各个模块的功能说明: 本程序一共包括:构造方法A5i13w(),setup(), windowClosing(), actionPerformed(), appendchar(), countall(), counting(), Iscountnum()和一个windowcloser类。 (1). A5i13w()是构造方法,在程序创建其对象时就调用,初始化次程序的事件的监听机制。 (2). setup()是我定义的方法,是用来初始化程序的图形应用界面,由A5i13w()来调用。 (3). windowClosing()是用来响应用户的关闭功能。 (4). actionPerformed()是用来处理每个事件的响应的方法 (5). appendchar()方法的作用是在用户产生事件后向Textshow追加产生此事件的字符串 (6).countall()的意义是在用户按“=”号后,从最里层括号向最外层逐层把括号里的内容传递给counting()方法,并负责对括号本身是否符合数学语法要求进行检验。 (7).counting()方法的作用是首先对无括号的数学表达式有关的数学计算符号进行调整,并检验所有的数学符号,如发现错误的数学符号立即在Labelnow中显示出来。

日历备忘录小程序部分文档

[项目名称] 可行性研究报告 拟制人________________ 审核人______________________ 批准人______________________ [二零一一年九月二十五日]

可行性研究报告 1. 引言 1.1 编写目的 随着社会发展的日新月异,商业来往日渐广泛,人们之间的交往也日益频繁,于是,人们手中便出现了名目繁多的交友,工作旅游访友等事件,为了更好的准时的参与这些事,因此开发一个既可以存储备忘,查询备忘等功能,同时价格又能为广大消费者接受的多功能日历备忘录就显得十分必要。 本实验的读者对象为研发中心领导和主管技术人员以及项目设计和开发人员。 1.2 背景 a.软件工程名称:日历备忘录; 分为四个子功能模块:增、删、改和查。 b.本项目的任务提出者:黄凯强; c.开发者:黄凯强; d.用户:不同年龄层次人员; e.软件系统同其他系统或其他机构的基本的相互来往关系。 1.3 定义 OA:办公室自动化 MIS:管理信息系统 Data processing:数据处理 Transaction processing:事务处理 Data processing cycle:数据处理流程 Data acquisition:数据采集 Data processing system security:数据处理系统安全性 1.4 参考资料 《软件工程》----张海藩编著 清华大学出版社 《数据库系统概论》----萨师煊王珊编著 高等教育出版社 2. 可行性研究的前提 日历备忘录应便于对事件进行备忘管理,提高工作效率,合理的对时间日期进行规划2.1 要求 需至少有四个模块,增、删、改、查;增,添加备忘内容;删,删除备忘录内容;改,修改备忘内容与时间;查,查询任意未完成备忘。 2.2 目标 完善整个软件使其功能完整且能够使用。

Java图形用户界面编程练习

实验八Java图形用户界面编程练习 实验目的 1、掌握 Java 的 GUI 设计技术 2、掌握 AWT 和 Swing 的应用技巧 实验要求 1、编写一个程序学习使用处理ActiongEvent事件 2、编写一个程序学习使用布局类 实验内容 1.猜数字游戏 实验目的:练习图形用户界面编程,学习处理ActionEvent事件。 实用要求: 要求程序中要有2个按钮buttonGetNumber和buttonNumber,用户单击buttonGetNumber 按钮可以得到一个随机数,然后在文本框中输入猜测数字,再单击buttonNumber按钮,程序根据用户的猜测给出提示信息。 运行效果示例: 程序模板:按模板要求,将【代码】替换为Java程序代码。 GuessExample.java import java.awt.*;

import java.awt.event.*; import java.applet.*; public class GuessExample extends Applet implements ActionListener { int number; TextField inputNumber; Label feedBack; Button buttonGetNumber,buttonEnter; public void init() { buttonGetNumber=new Button("得到一个随机数"); feedBack=new Label ("无反馈信息",Label.CENTER); feedBack.setBackground(Color.green); inputNumber=new TextField("0",5); buttonEnter=new Button("确定"); 【代码1】//按钮buttonEnter增加ActionEvent事件监视器,监视器为当前Java Applet。 【代码2】//按钮buttonGetNumber增加ActionEvent事件监视器,监视器为当前Java Applet。 add(new Label("获取1-100之间的随机数:")); add(buttonGetNumber); add(new Label("输入您的猜测:")); add(inputNumber); add(new Label("单击确定按钮:")); add(buttonEnter); add(new Label("反馈信息:")); add(feedBack); } public void actionPerformed(ActionEvent e) { if(【代码3】) //判断事件源是否是buttonGetNumber。 { number=(int)(Math.random()*100)+1; } else if(【代码4】) //判断事件源是否是buttonEnter。 { int guess=0; try { guess=Integer.parseInt(【代码5】); //返回inputNumber中的文本。 if(guess==number) { 【代码6】//feedBack设置提示文本:"猜对了!"。 }

JAVA小日历软件设计报告

佛山科学技术学院 《可视化编程技术》课程设计报告 小日历软件设计 学生姓名:冯倩冰 学号:2012914204 年级专业:12级教育技术学 指导老师:容汝佳 学院:教育科学学院 广东★佛山 提交日期:2014年6月

目录 1. 前言 (2) 2.概要设计 (3) 2.1 开发环境 (3) 2.2 设计目标 (3) 2.3 小日历功能 (3) 2.4 界面设计 (3) 3. 详细设计 (4) 3.1 使用的JAVA类的说明 (4) 3.2 类的主要方法 (5) 3.2.1 设计的方法分析 (5) 3.2.2 程序大纲 (5) 3.2.3 设计总体认识 (6) 3.2.4 程序流程图 (6) 4. 运行结果 (7) 5. 测试分析 (7) 5.1 程序操作 (7) 5.2 退出程序 (7) 6. 源程序 (8) 参考文献 (13) 设计总结 (13)

摘要:该程序是一个图形界面的简单的Java小日历,具有美观舒适的界面,使用者能快捷简单地进行操作。即时点击就能准确地获得需要的日期信息,充分降低了日期查找的难度和节约了时间,对人们的生活有重要的作用。点击年份上下箭头可以选取所查年份,通过月份下拉箭头可以选择月份,然后页面就会出现你选择的那月进行每一天日期和星期的查询。界面以红色系为主,给人舒适的感觉。 关键字:java小日历软件,日历类,查询,事件 1 前言 Java技术在1995年被互联网所接受,通过不断的发展和完善,已由单一的编程语言演变成为具有广泛实用性的开发大平台。Java技术已被IT业内的主要公司所接受并加以运用。Java技术的高效性、通用性、平台移植性和安全性等使之成为网络应用的首选技术。从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java无处不在! Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。还有Java 2企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。 Java语言是由C++语言发展起而来的,是一种彻底的面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。Java 语言去掉了C++语言的一些容易引起错误的特性。Java语言的特点有:面向对象、跨平台、安全性、多线程和图形功能强。 Java应用小程序(JavaApplets)是需要Web浏览器(这种Web浏览器必须具有Java虚拟机和Java类库。例如Netseave的Navigator、Mlerosoft的Explorer 和Sun的Hotjava等)支持运行的Java应用程序。利用Java应用小程序,就可以由Java应用小程序直接与应用服务软件进行交互。这样,首先可以减轻HTTP 协议的传输负荷,使其专用于HTML文件和Java应用小程序的传输;其次,Java

JAVA日历记事本课程设计报告

Java日历记事本课程设计报告 在设计日历记事本时,需要编写6个JA V A源文件:CalendarWindow.java、CalendarPad.java、NotePad.java、CalendarImage.java、Clock.java和CalendarMesssage.java 效果图如下 . CalendarWindow类 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; import java.io.*; public class CalendarWindow extends JFrame implements ActionListener,MouseListener,FocusListener{ int year,month,day; CalendarMessage calendarMessage; CalendarPad calendarPad; NotePad notePad; JTextField showYear,showMonth; JTextField[] showDay; CalendarImage calendarImage; String picturename; Clock clock; JButton nextYear,previousYear,nextMonth,previousMonth; JButton saveDailyRecord,deleteDailyRecord,readDailyRecord;

JButton getPicture; File dir; Color backColor=Color.white ; public CalendarWindow(){ dir=new File("./dailyRecord"); dir.mkdir(); showDay=new JTextField[42]; for(int i=0;i

java简单图形用户界面代码

package dsr; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import https://www.360docs.net/doc/9015322252.html,.Socket; public class Login extends JFrame implements ActionListener{ //定义组件 JPanel northPanel,southPanel,centerPanel,centerPanel1,centerPanel11,centerPanel12; JButton loginBtn,registerBtn,cancalBtn; JLabel userLbl,passwordLbl,titleLbl; JTextField userTxt; JPasswordField passwordPwd; static String name; public Login () { super("用户登录"); northPanel=new JPanel(); southPanel=new JPanel(); centerPanel1=new JPanel(); centerPanel11=new JPanel(); centerPanel12=new JPanel(); //标题 titleLbl=new JLabel("欢迎进入考试系统"); titleLbl.setFont(new Font("隶书",Font.BOLD,24)); northPanel.add(titleLbl); this.add(northPanel,BorderLayout.NORTH); //中间部分 centerPanel1.setLayout(new BorderLayout()); userLbl=new JLabel("用户名"); userTxt=new JTextField(12); centerPanel11.add(userLbl); centerPanel11.add(userTxt); centerPanel1.add(centerPanel11,BorderLayout.NORTH); passwordLbl=new JLabel("密码"); passwordPwd=new JPasswordField(12); centerPanel12.add(passwordLbl); centerPanel12.add(passwordPwd);

万年历系统(c++实现)

C++实现简单万年历的编程代码(本人是在vs2010运行)供参考 /****************************************************************************** ****************************************** * Name : Date.h * Author: 彭天越 * Description: date类的设计,日期的相关信息,如备忘录等 * Date:2012-06-18--2012-06-20 * Copyright: HNS University ******************************************************************************* ******************************************/ #pragma once #include"P_Calendar.h" #include"Time.h" #include #include class Date:public P_Calendar { private: Time starttime; Time endtime; string theme; string place; public: Date(int y,int m,int d,Time tstart,Time tover,string th,string pl); string gettheme()const; string getplace()const; Time getstarttime()const; Time getendtime()const; void display()const; ~Date(void); }; /****************************************************************************** ****************************************** * Name : Date.cpp * Author: 彭天越 * Description: Date类的设计,日期的相关信息,如备忘录等 * Date:2012-06-17 * Copyright: HNS University ******************************************************************************* ******************************************/

毕业设计 论文 多功能电子日历的设计和开发

云南大学 毕业设计 多功能电子日历的设计和开发 学院: 专业:计算机科学与技术 班级:2009届 姓名: 指导教师:

目录 摘要 关键字 前言 第一章 VB语言概述 1.1、VB简介 1.2、VB语言的基本特点及VB应用程序的基本持点1.3、为何我选择VB作为开发语言 1.4、VB6.0应用的基本开发方法 第二章用VB开发多功能日历程序 2.1、本程序运行界面简介 2.2、本程序部分控件的设置 2.3、主程序部分代码 第三章毕业设计总结 第四章主要参考文献 附录

摘要: 在日常生活和工作中经常有人用到农历和公历的查询问题。因此,我借这次毕业设计之机,在辅导老师的指导下,编写了一个可以在VB6下正常运行的日历、计算器多功能应用程序,编程的思路是:先把公、农历的数据用数组查询设置好,再通过算法转换成具体应用。程序应用了不规则窗体技术,使得窗体比较美观。单击属相标志可以退出程序。单击时钟数字将返回到今天。单击查询控制面板开关将向下拉出查询控制面板。 . 关键字:农历公历转换及计算器、查询控制面板、VB6。

多功能电子日历的开发 前言 电脑已经成为挂在我们嘴角的一句口头禅,它已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。Windows 系统的推出使电脑从高雅的学术殿堂走入了寻常百姓家,各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了多如牛毛的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。以前开发Windows下软件是专业人员的工作,需要掌握许多专业知识和经过特殊的培训才能胜任。现在不同了,即使你没有接受过严格的程序设计训练,使用Visual Basic 也一样能够开发出功能强大、适合自己特殊需求的应用程序了。Visual Basic继承了Basic 语言易学易用的特点,特别适合于初学者学习Windows系统编程。 我作为一名中央电大的学生,对从事计算机操作和编程工作有着特殊的爱好,在工作和学习之余,我时常钻研专业课基础理论,经常用VB搞一些小程序,在工作中经常有人问到农历和公历的查询问题。网页上有一些这方面的介绍,但是关于VB方面的编程资料却比较少。因此,借这次毕业设计之机,我编写了一个可以在VB6下正常运行的日历、计算器多功能应用程序,欢迎各位老师提出批评改进意见。 第一章VB语言概述 一、VB简介 VB是微软公司出品的一个快速可视化程序开发工具软件,借助微软在操作系统和办公软件的垄断地位,VB在短短的几年内风靡全球。VB是极有和功能强大的软件,主要表现在:所见即所得的界面设计,基于对象的设计方法,极短的软件开发周期,较易维护的生成代码。 美国微软公司在1991年推出VB1.0至今已经经历了6个版本,VB6.0运行在win9x或winme,win2000,winxp,windowsNT等操作系统下,是一个32位的应用程序开发工具。二、VB语言的基本特点及VB应用程序的基本持点 VB程序语言具有许多优秀的特性,用其设计应用程序时有两个基本特点:可视化设计和事件驱动编程. 1、可视化设计 同其他的一些可视化程序开发工具一样,VB具有可视化设计的特点,微软的Word在刚刚进入市场时,同WPS竞争的一个重要的功能砝码就是"所见即所得"的字处理功能,VB在设计应用程序界面时也可以说是"所见即所得".在设计时,头脑中所想象的应用程序界面,完全可以通过键盘鼠标以及徒手画出来,而不是编制大量的代码然后再编译生成,如果需要修改,也是利用键盘鼠标和手画,而底层的一些程序代码由VB自动生成或修改。

日历源代码——java

日历源代码——java //import java.sql.Date; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Locale; public class GregorianCalendar日历 { public static void main(String[] args) { //设置不同地区 Locale.setDefault(https://www.360docs.net/doc/9015322252.html,); //创建当前日历对象 GregorianCalendar now = new GregorianCalendar(); //从当前时期对象是取出时间日期对象 //编辑错误:Type mismatch: cannot convert from java.util.Date to java.sql.Date Date date = now.getTime(); //将时间日期对象按字符形式打印 System.out.println(date.toString()); //重新将时间对象设置到日期对象中 now.setTime(date); //从当前日期对象是取出当前月份、日期 int today = now.get(Calendar.DAY_OF_MONTH); int month = now.get(Calendar.MONTH); //获取本月开始日期 now.set(Calendar.DAY_OF_MONTH, 1); //获取本月开始日期在一周中的编号 int week = now.get(Calendar.DAY_OF_WEEK); //打印日历头并换行设置当前月中第一天的开始位置

相关文档
最新文档