*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2012 年秋季学期
JAVA 课程设计
目: 万年历课程设计
题
专业班级:计算机科学与技术 3 班
名:
姓
号:
学
指导教师:
绩:
成
魏向波
10240322
王旭阳
序 言
Java 的前身是 Oak,它一开始只是被应用于消费性电子产品中。后来它的开
发者们发现它还可以被用于更大范围的 Internet 上。1995 年,Java 语言的名字
从 Oak 编程了 Java。1997 年 J2SE1.1 发布。1998 年 J2SE1.2 发布,标志 Java2 的
诞生。十多年来,Java 编程语言及平台成功地运用在网络计算及移动等各个领域。
Java 的体系结构由 Java 语言、Java class、Java API、Java 虚拟机组成。它具
有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java
支持多线程编程,Java 运行时系统在多线程同步方面具有成熟的解决方案。Java
的平台标准有 Java ME,Java SE 和 Java EE。Java 发展到今天,它的卓越成就及
在业界的地位毋庸置疑。目前在众多的支持 Java 的开发工具中主要的 7 有 Java
Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper 和 Eclipse 等。
其中 Java Development Kit 简称 JDK 是大多开发工具的基础。以上的每种开发工
具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和
软硬件环境等因素来选择一种合适的开发工具。
我做的课程题目是万年历的设计,万年历在我们的手机,电脑,MP4 等电子产品
中随处可见,其功能也十分简单,最核心的是提供某年某月的日历,在我的设计中,
还增加了具体的时刻以及不同时区不同国家的时刻,简单的设计确是复杂的代码
实现,不过万年历确实给予我们生活的诸多方便!
1
目 录
摘 要.......................................................................................................................3
正 文.......................................................................................................................4
1. 系统分析与设计..........................................................................................4
(1) 需求分析...................................................................................................4
(2) 功能设计...................................................................................................4
2. 详细分析......................................................................................................5
3. 系统测试................................................................................................... 10
4. 软件使用说明书........................................................................................13
总 结.....................................................................................................................14
参考文献.................................................................................................................15
致 谢.....................................................................................................................16
附件Ⅰ源程序代码................................................................................................ 17
2
摘 要
这学期我们学习了Java语言,Java语言是面向对象的开发方法是当今世界最
流行的开发方法,是当今流行的网络编程语言。它具有面向对象、跨平台、分布
应用等特点。它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。很
多程序开发人员得第一选择。
为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面
向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的
能力,开设了Java程序设计课程设计。让学生自己动手动脑,将书本上得知识运
用到实践当中去,使知识能更好得融会贯通。
为了达到这个目的,我们需要自己动手做一个Java的课程设计,在这个课程
设计里我们需要根据我们手中现有得软件与知识基础,独立得将它完成,只有这
样,我们才能把理论变成实践,将知识真正得做到学以致用。
这次课程设计我主要研究了利用已学的Java知识编辑一个电子万年历。通过
此次课程设计,来巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握
JDK、JCreator等开发工具的运用,拓宽常用类库的应用。并通过自己动手,自主
得学习,对Java这门课程有更深得了解与认识。
关键词: 万年历 Java 语言 日历算法
3
正 文
1. 系统分析与设计
(1)需求分析
本程序的要求为:1.使用图形用户界面;
2.本程序能够实现日期与星期的查询;
3.可以显示不同时区的时刻;
4.模拟一个计时器,不断地输出下一秒;
(2)功能设计
(1)定义一个时间类Time,能提供时、分、秒组成的时间,并提供时间增加
的方法(按秒);
(2)定义一个日期类Date,记录年、月、日,并提供日期增加的方法(按天);
(3)由类Time和日期类Date,派生出DateTime类,除具有年、月、日、时、
分、秒外,还增加国名和与格林威治时间的差;
(4)输入年、月、日、时、分、秒,在屏幕上模拟显示一电子计时器,不断
输出下一秒的时间和日期,以及格林威治的日期和时间。
4
2. 详细分析
3. Windows 类中的成员函数:
Frame B = new Frame("万年历");
Panel a1 = new Panel();
Panel a2 = new Panel();
Panel a3 = new Panel();
Panel a4 = new Panel();
TextField T1, T2, P1, P2, P3, P4, P5, P6;
TextField p[] = new
Label R1, R2;
Button S1;// 查询按钮
TextField[7];// 时间输出框
TextField a[];//月份查询表按钮
int i, yy;
int k = 0, mouth1[];
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
int[] y1 = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30,
30, 31 };//平年的月份天数
int[] y2 = { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30,
31,
18.
31, 30, 31 };// 闰年的月份天数
19.
20.
21.
22.
23.
24.
25.
26.
Button S2 = new Button("北京");//启动北京时间按钮
Button S3 = new Button("夏威夷");//启动夏威夷时间按钮
Button S4 = new Button("伦敦");//启动伦敦时间按钮
Label R3, R4, R5, R6, R7, R8, R9, R10, R11, R12;
final TextField K1, K2, K3;
final TextField K4;
final TextField K5;
final TextField K6;
5
27.
28. Button S5 = new Button("开始计算");//计算格林威治时间所有按
钮和文本框
29.
30. Windows 成员方法:
31. void getmessage(int x, int y)// 获取年月并进行判断
32. public void go()
33.
34.
//运行主要程序
35. Time 类成员变量:
36. Boolean t = true;//模拟时钟必要成员变量
37.
int h = 0, m = 0, s = 0;//时分秒的成员变量
38. Time 类成员方法:
void gettime(int a, int b, int c)// 获得时分秒
39.
40. public void run()//时间增加方法
41.
42.
43. Date 类成员变量
44. DATE 拥有 TIME 中所有成员变量和方法
45. int[] y1 = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31,
30, 31 };//平年的月份天数
46.
int[] y2 = { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30,
31, 30, 31 };// 闰年的月份天数
int y = 0, mo = 0, d = 0;//年月日成员变量
47.
48.
6
49.
51.
52.
53.
54.
50. Date 类成员方法
void getdate(int a, int b, int c)// 获得年月日
55. DateTime 类成员变量
继承了 Date
56.
57. int gy, gmo, gd, gh, gm, gs;//格林威治时间的成员变量
58. String name;//城市名称
59. int ctime = 0;//时差
60.
int L = 0;//文本框组的下标
61. DateTime 类成员方法
62. public String returnname()//返回城市名
63. public int returnctmie()//返回时差
64. void Gtimechange()// 通过北京时间计算格林威治时间
65. public void countrytime()// 转换为国家时间
66. public void countrytoGL()// 通过国家时间计算格林威治时间
67. public void num(int i)//为 L 赋值
68. public void startswap()// 输出前的准备
69. public void run()//方法重写,用于输出时间
7