java课程说明书.docx
- 文档编号:25354710
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:29
- 大小:95.12KB
java课程说明书.docx
《java课程说明书.docx》由会员分享,可在线阅读,更多相关《java课程说明书.docx(29页珍藏版)》请在冰豆网上搜索。
java课程说明书
1前言
1.1设计背景和意义
1.1.1Java简介
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。
Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
Java编程语言的风格十分接近C、C++语言。
Java是一个纯的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心。
Java舍弃了C++语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。
在JavaSE1.5版本中,Java又引入了泛型编程(GenericProgramming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
Java不同于一般的编译执行计算机语言和解释执行计算机语言。
它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。
从而实现了“一次编译、到处执行”的跨平台特性。
1.2设计的原理和内容
本设计是一个JAVA日历选择器的设计,利用Frame框架类,面板类进行图形化界面设计,实现日历选择器的功力显示功能。
在本设计中,使用者通过点击界面按钮,选择需要的日期,最终将选择的日期显示在另一个界面中。
2工程概况
2.1项目所用的时间
从这个项目开始到结束总共历时14天。
完成于2012年6月24日。
2.2项目负责人
Xxx机科学与技术,学生;
2.3项目指导人
Xxx信息工程学院教师,讲师。
3正文
Java具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。
支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。
3.1设计的目的和意义
Java语言的出现迎合了人们对应用程序跨平台运行的需求,已成为软件设计开发者应当掌握的一门基础语言,很多新的技术领域都涉及到了java语言。
为了巩固学习的面向对象程序设计语言的知识,通过编写Java的应用系统综合实例,总结、回顾和实践面向对象的编程思想以及编程方法,并通过编写程序来掌握Java语言编程技巧,将学习到的知识融会贯通,同时提高调试程序的能力,养成良好的编程习惯,并增强对程序设计整体思路的把握。
3.2总体方案
本次设计的目标在于利用Frame框架类,面板类进行图形化界面设计,实现日历选择器的功力显示功能。
于是特制订了一个总体的方案。
由于时间只有十天,故做了如下的计划安排,将这项工程分为两大部分:
程序的设计和程序的调试。
首先在程序的设计部分由分为几个步骤:
第一步:
查阅有关的资料,用一天的时间。
第二步:
设计这个项目的整体架构和算法。
用一到两天的时间。
第三步:
选择进行算法的描述。
两天的时间。
其次,进行程序的调试。
用一天。
3.3设计内容
万年历是一个强大的日历系统,通过它可以实现对过去,现在以及将来日期的查找,通过在年份对话框中输入要查询的年份,再相应的在月份对应的下拉菜单选择要查询的月份,则可得到相应的日历。
本实验是对图形用户界面,布局管理器的综合运用,理解JAVA的时间处理机制,编写独立运行的窗口。
3.3.1硬件环境
微型计算机:
联想台式品牌机
中央处理器:
Pentuim4主频:
3.0GHz
主存容量:
512M
硬盘容量:
80G
3.3.2软件环境
WindowsXP操作系统
MicrosoftNotePad记事本程序
MyEclipseSDK编译器
3.4程序的设计思想和内容
3.4.1需求分析
本程序的要求为:
1.使用图形用户界面;2.本程序能够实现日期与星期的查询。
3.随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。
为了巩固学习的面向对象程序设计语言的知识,通过编写Java的应用系统综合实例,总结、回顾和实践面向对象的编程思想以及编程方法,并通过编写程序来掌握Java语言编程技巧,将学习到的知识融会贯通,同时提高调试程序的能力,养成良好的编程习惯,并增强对程序设计整体思路的把握。
3.4.2功能设计
在选择日期的日历界面里,应该可以
(1)显示当月日历、当前日期、当前时间
(2)可以按任意月来查询日历
(3)可以用文字显示今天的日期
(4)可以任意选择日期,并可显示选择的痕迹
(5)可以将所选择的日期显示在主文本框里,以显示日历选择器的主要功能,即可选择日期。
(6)选择完毕后可以隐藏日历
(7)可以正常退出程序
3.4.3概要设计
1.总天数的算法:
首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。
然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。
2.输出月份第一天为星期几的算法:
使总天数除以7取余加2得几既为星期几,若是7,则为星期日。
3.算出输出月份第一天为星期几的算法:
算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。
3.4.4详细设计
3.4.4.1流程图
3.4.4.2初始化组件
importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.GridLayout;
importjava.awt.Toolkit;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.sql.Date;
importjava.util.Calendar;
importjavax.swing.JComboBox;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JButton;
3.4.4.3源程序代码
packagemaya;
importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.GridLayout;
importjava.awt.Toolkit;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.sql.Date;
importjava.util.Calendar;
importjavax.swing.JComboBox;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JButton;
classMainFrameextendsJFrame{
privatestaticfinallongserialVersionUID=1L;
JPanelpanel=newJPanel(newBorderLayout());
JPanelpanel1=newJPanel();
JPanelpanel2=newJPanel(newGridLayout(7,7));
JPanelpanel3=newJPanel();
JLabel[]label=newJLabel[49];
JLabely_label=newJLabel("年份");
JLabelm_label=newJLabel("月份");
JComboBoxcom1=newJComboBox();
JComboBoxcom2=newJComboBox();
JButtonbut1=newJButton("上个月");
JButtonbut2=newJButton("下个月");
intre_year,re_month;
intx_size,y_size;
Stringyear_num;
Calendarnow=Calendar.getInstance();//实例化Calendar
MainFrame(){
super("万年历");
setSize(600,700);
x_size=(int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth());
y_size=(int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight());
setLocation((x_size-300)/2,(y_size-350)/2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1.add(but1);
panel1.add(y_label);
panel1.add(com1);
panel1.add(m_label);
panel1.add(com2);
panel1.add(but2);
for(inti=0;i<49;i++){
label[i]=newJLabel("",JLabel.CENTER);//将显示的字符设置为居中
panel2.add(label[i]);
}
panel3.add(newClock(this));
panel.add(panel1,BorderLayout.NORTH);
panel.add(panel2,BorderLayout.CENTER);
panel.add(panel3,BorderLayout.SOUTH);
panel.setBackground(Color.white);
panel1.setBackground(Color.white);
panel2.setBackground(Color.white);
panel3.setBackground(Color.gray);
Init();
but1.addActionListener(newAnAction());
but2.addActionListener(newAnAction());
com1.addActionListener(newClockAction());
com2.addActionListener(newClockAction());
setContentPane(panel);
setVisible(true);
setResizable(false);
}
classAnActionimplementsActionListener
{
publicvoidactionPerformed(ActionEvente)
{
intc_year,c_month,c_week;
c_month=Integer.parseInt(com2.getSelectedItem().toString())-1;//得到当前月份,并减1,计算机中的月为0-11
c_year=Integer.parseInt(com1.getSelectedItem().toString())-1;//得到当前所选年份
if(e.getSource()==but1)
{
if(c_month==0)
{
c_year=c_year-1;
c_month=11;
}
else
c_month=c_month-1;
}
if(e.getSource()==but2)
{
if(c_month==11)
{
c_year=c_year+1;
c_month=0;
}
else
c_month=c_month+1;
}
com1.setSelectedIndex(c_year);
com2.setSelectedIndex(c_month);
c_year=Integer.parseInt(com1.getSelectedItem().toString());//当前所选年份
c_month=Integer.parseInt(com2.getSelectedItem().toString())-1;//得到当前月份,并减1,计算机中的月为0-11
c_week=use(c_year,c_month);//调用函数use,得到星期几
Resetday(c_week,c_year,c_month);//调用函数Resetday
}
}
classClockActionimplementsActionListener{
publicvoidactionPerformed(ActionEventarg0){
intc_year,c_month,c_week;
c_year=Integer.parseInt(com1.getSelectedItem().toString());//得到当前所选年份
c_month=Integer.parseInt(com2.getSelectedItem().toString())-1;//得到当前月份,并减1,计算机中的月为0-11
c_week=use(c_year,c_month);//调用函数use,得到星期几
Resetday(c_week,c_year,c_month);//调用函数Resetday
}
}
publicvoidInit(){
intyear,month_num,first_day_num;
Stringlog[]={"日","一","二","三","四","五","六"};
for(inti=0;i<7;i++){
label[i].setText(log[i]);
}
for(inti=0;i<49;i=i+7){
label[i].setForeground(Color.blue);//将星期日的日期设置为红色
}
for(inti=6;i<49;i=i+7){
label[i].setForeground(Color.blue);//将星期六的日期设置为hong色
}
for(inti=1;i<10000;i++){
com1.addItem(""+i);
}
for(inti=1;i<13;i++){
com2.addItem(""+i);
}
month_num=(int)(now.get(Calendar.MONTH));//得到当前时间的月份
year=(int)(now.get(Calendar.YEAR));//得到当前时间的年份
com1.setSelectedIndex(year-1);//设置下拉列表显示为当前年?
?
?
?
?
?
?
?
?
?
?
com2.setSelectedIndex(month_num);//设置下拉列表显示为当前月
first_day_num=use(year,month_num);
Resetday(first_day_num,year,month_num);
}
publicintuse(intreyear,intremonth){
intweek_num;
now.set(reyear,remonth,1);//设置时间为所要查询的年月的第一天
week_num=(int)(now.get(Calendar.DAY_OF_WEEK));//得到第一天的星期
returnweek_num;
}
//@SuppressWarnings("deprecation")
publicvoidResetday(intweek_log,intyear_log,intmonth_log){
intmonth_day_score;//存储月份的天数
intcount;
Lunarlunar;
intmonth_day;
String[]LunarDate=newString[49];
month_day_score=0;
count=1;
for(inti=1;i<49;i++){
for(intj=0;j<49;j=j+7)
{
if(i!
=j&&i!
=j+6)
label[i].setForeground(Color.black);
}
}
Datedate=newDate(year_log,month_log+1,1);//nowMONTH是从0开始的,对于一月第几天来说,DAY_OF_MONTH第一天就是1.对于一年第几个月来说,MONTH一月份是0,二月份是1...
Calendarcal=Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.MONTH,-1);//前个月
month_day_score=cal.getActualMaximum(Calendar.DAY_OF_MONTH);//最后一天
month_day=month_day_score;
for(inti=7;i<49;i++){//初始化标签
label[i].setText("");
}
week_log=week_log+6;//将星期数加6,使显示正确
month_day_score=month_day_score+week_log;
lunar=newLunar();
for(inti=0;i { LunarDate[i]=lunar.getLunarDate(year_log,month_log+1,i+1); } for(inti=week_log;i if(month_log==9&&count==1){ label[i].setText(count+"国庆"); label[i].setForeground(Color.red); } elseif(month_log==0&&count==1){ label[i].setText(count+"元旦"); label[i].setForeground(Color.red); } elseif(month_log==11&&count==24){ label[i].setText(count+"平安夜"); label[i].setForeground(Color.red); } elseif(month_log==11&&count==25){ label[i].setText(count+"圣诞"); label[i].setForeground(Color.red); } elseif(month_log==5&&count==1) { label[i].setText(count+"儿童节"); label[i].setForeground(Color.red); } elseif(month_log==1&&count==14){ label[i].setText(count+"情人节"); label[i].setForeground(Color.red); } elseif(month_log==4&&count==1){ label[i].setText(count+"劳动节"); label[i].setForeground(Color.red); } elseif(LunarDate[i-week_log].equals("春节")||LunarDate[i-week_log].equals("元宵")||LunarDate[i-week_log].equals("端午")||LunarDate[i-week_log].equals("中秋")) { label[i].setText(count+LunarDate[i-week_log]); label[i].setForeground(Color.red); } else label[i].setText(count+LunarDate[i-week_log]); } } publicstaticvoidmain(String[]args){ JFrame.setDefaultLookAndFeelDecorated(true); newMainFrame(); } } packagemaya; importjava.awt.Color; importjava.text.ParseException; importjava.text.SimpleDateFormat; importjava.util.Calendar; importjava.util.Date; publicclassLunar{ privateintyear; private
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程 说明书