java课程设计基于java的万年历设计与实现附源代码贯.docx
《java课程设计基于java的万年历设计与实现附源代码贯.docx》由会员分享,可在线阅读,更多相关《java课程设计基于java的万年历设计与实现附源代码贯.docx(13页珍藏版)》请在冰豆网上搜索。
![java课程设计基于java的万年历设计与实现附源代码贯.docx](https://file1.bdocx.com/fileroot1/2022-10/27/ed8cc746-2f0e-44a2-ba29-dc3aeb6024a2/ed8cc746-2f0e-44a2-ba29-dc3aeb6024a21.gif)
java课程设计基于java的万年历设计与实现附源代码贯
Java课程设计报告
课程设计题目:
万年历
指导老师:
**********
学生姓名:
*********
专业:
**********
学号:
*******
Java课程设计-万年历
1、课程设计目的:
这学期我们学习了Java语言,Java语言是面向对象的开发方法是当今世界最流行的开发方法,是当今流行的网络编程语言。
它具有面向对象、跨平台、分布应用等特点。
它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。
很多程序开发人员得第一选择。
为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。
让学生自己动手动脑,将书本上得知识运用到实践当中去,使知识能更好得融会贯通。
为了达到这个目的,我们需要自己动手做一个Java的课程设计,在这个课程设计里我们需要根据我们手中现有得软件与知识基础,独立得将它完成,只有这样,我们才能把理论变成实践,将知识真正得做到学以致用。
这次课程设计我主要研究了利用已学的Java知识编辑一个电子万年历。
通过此次课程设计,来巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。
并通过自己动手,自主得学习,对Java这门课程有更深得了解与认识。
2、需求分析:
2.1、本程序要求:
1、使用图形用户界面;
2、本程序能够实现日期与星期查询,同时显示此时的时间。
2.2、功能设计:
本程序要构建万年历程序,其功能如下:
(1)通过窗口形式运行,实现界面功能;
(2)以月历的形式来显示日期与星期;
(3)为用户提供年份与月份的下拉形式菜选择年份与月份;
(4)同时显示查看时的时刻。
3、课程设计的基本算法
publicclasswnlextendsJFrameimplementsActionListener,ItemListener{
Datedate=newDate();
privateGregorianCalendargregorianCalendar=newGregorianCalendar();
//定义中英文字符数组存储星期信息,用于转换显示
privateString[]stringWeekEn=newString[]{"SUN","MON","TUE","WED",
"THU","FRI","SAT"};
privateString[]stringWeekCn=newString[]{"星期日","星期一","星期二","星期三",
"星期四","星期五","星期六"};
//定义存储月份的信息数组,用于转换显示方式
privateString[]stringMonthEn=newString[]{"Jan","Feb","Mar","Apr",
"May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"};
privateString[]stringMonthCn={"1月","2月","3月","4月","5月","6月",
"7月","8月","9月","10月","11月","12月"};
privateString[]sysNowTime=newString[6];//sysNowTime用于存储系统时间的变量
privateString[]sysRunTime=newString[6];
privateJLabel[]labelWeek=newJLabel[7];
privateJLabel[]labelDay=newJLabel[42];
privateJLabellabelTime=newJLabel();
privateJPanelpanel1=newJPanel();
privateJPanelpanel2=newJPanel();
privateJPanelpanel3=newJPanel();
privateJComboBoxcombo1=newJComboBox();
privateJComboBoxcombo2=newJComboBox();
privateJButtonbuttonToday=newJButton();
privateBorderborder=BorderFactory.createRaisedBevelBorder();
privateBorderborder1=BorderFactory.createLineBorder(Color.cyan,3);
publicwnl(Stringtitle){
super(title);
for(inty=1900;y<2200;y++){
combo1.addItem(""+newInteger(y).toString()+"年");
}
for(intm=0;m<12;m++){
combo2.addItem(""+stringMonthCn[m]);
}
buttonToday.setText("现在时刻");
setLayout(newFlowLayout());
add(panel1);
add(panel2);
add(panel3);
panel1.setLayout(newGridLayout(2,3,10,2));
panel1.add(combo1);
combo1.addItemListener(this);
panel1.add(combo2);
combo2.addItemListener(this);
panel1.add(buttonToday);
//buttonToday.addActionListener(this);
labelTime.setFont(newFont("宋体",Font.PLAIN,16));
labelTime.setForeground(Color.red);
panel1.add(labelTime);
Timertime=newTimer(1000,newTimerListener());
time.addActionListener(newTimerListener());
//time.setRepeats(true);
time.start();
//labelTime.addAncestorListener(newTimerListener());
panel2.setLayout(newGridLayout(7,7,10,10));
panel2.setBackground(Color.white);
for(inti=0;i<7;i++){
labelWeek[i]=newJLabel();
labelWeek[i].setHorizontalAlignment(0);
if(i==0||i==6){
labelWeek[i].setBackground(Color.blue);
labelWeek[i].setForeground(Color.RED);
labelWeek[i].setFont(newFont("黑体",Font.BOLD,14));
}
else{
labelWeek[i].setForeground(Color.BLACK);
labelWeek[i].setFont(newFont("新宋体",Font.PLAIN,14));
}
labelWeek[i].setText(stringWeekCn[i]);
panel2.add(labelWeek[i]);
}
for(inti=0;i<42;i++){
labelDay[i]=newJLabel();
labelDay[i].setHorizontalAlignment(0);
labelDay[i].setText("");
panel2.add(labelDay[i]);
}
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
setSize(300,300);
setBounds(250,200,400,360);
setVisible(true);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getSysDate();
setNowDate();
}
publicvoidactionPerformed(ActionEventae){
if(ae.getSource()==buttonToday){
setNowDate();
}
}
publicvoiditemStateChanged(ItemEventaa){
setChangeDate();
}
publicintturnWeek(Stringweek){
inti;
for(i=0;i<7;i++)
if(week.equalsIgnoreCase(stringWeekEn[i]))
break;
returni;
}
publicintturnMonth(Stringmonth){
/**
*intturnMonth(Stringmonth)
*@month系统日期中的月,诸如Jan\Feb
*@returnint
*返回一个整数值,用于寻找stringMonthCn[]数组中对应的中文月份
*/
inti;
for(i=0;i<12;i++)
if(month.equalsIgnoreCase(stringMonthEn[i]))
break;
returni;
}
/**
*setNowDate()
*设置当前系统日期
*/
publicvoidsetNowDate(){
setSysDate(getNowYear(),getNowMonth());
getSysRunDate();
setDateNull();
combo1.setSelectedIndex(getShowYear()-1900);
combo2.setSelectedIndex(getShowMonth());
setDays(getMonthDays(getNowYear(),getNowMonth()),getInitWeek(sysRunTime[0]),getNowDay());
labelTime.setText(sysNowTime[3]);
labelTime