2020年度Java课程设计万年历_第1页
2020年度Java课程设计万年历_第2页
2020年度Java课程设计万年历_第3页
2020年度Java课程设计万年历_第4页
2020年度Java课程设计万年历_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java课程设计万年

文档仅供参考

河北科技大学

课程设计报告

学生姓名:学号:

专业班级:

课程名称:Java程序设计课程设计

年学期:2014—2015年第2学期

指导教师:刘伟

20年月

课程设计成绩评定表

文档仅供参考

学生姓名学号成绩

专业班级起止时间

设计题目

学习态度:端正口较端正口一般口较差口

学习纪律:好口较好口一般口较差口

出勤情况:好口较好口一般口较差口

程序设计:好口较好口一般口较差口

动手能力:强口较强口一般口较差口

团队精神:好口较好口一般口较差口

创新意识:强口较强口一般口较差口

指课程设计完成情况:优秀口好口一般口较差口

导课程设计报告完成情况:优秀口好口一般口较差口

指导教师:

年月日

文档仅供参考

目录

1.课程设计目

的..................................................1

2.需求分

析.......................................................1

3.总体设

计.......................................................1

4.详细设

计.......................................................1

5.软件测

试.......................................................10

6.课程设计总

结...................................................11

文档仅供参考

文档仅供参考

一、课程设计目的

(1)熟练使用java语言编写程序,解决实际问题。

(2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试

等基本方法和技能;

(3)学会自己调试程序的方法并掌握一定的技巧。

二、需求分析

本程序的要求为:

L使用图形用户界面;

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

三、总体设计

(1)能够经过图形界面显示日历。

(2)能以月历形式显示日期与星期。

(3)支持用户自己输入年份,能够经过上一年,下一年等按钮来

选择年份和月份。

四、详细设计

1.总天数的算法:首先用if语句判断定义年到输入年之间每一年是

否为闰年,是闰年,该年的总天数为366,否则,为365。

2.输出月份第一天为星期几的算法:使总天数除以7取余得几既为

星期几,若是0,则为星期日。

3.算出输出月份第一天为星期几的算法:算出输出月份第一天为星

文档仅供参考

期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直

到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换

行,即可完整的输出该月的日历。

4.查询年份必须为四位有效数字,否则不予显示。

程序源代码:

importjava.awt.BorderLayout;

importjava.awt.Color;

importjava.awt.FlowLayout;

importjava.awt.Font;

importjava.awt.GridLayout;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.ItemEvent;

importjava.sql.Date;

importjava.text.DateFormat;

importjava.text.SimpleDateFormat;

importjava.util.Calendar;

importjava.awt.*;

importjava.awt.event.*;

importjava.text.*;

importjava.time.Clock;

importjava.util.*;

文档仅供参考

importjavax.swing.*;

importjavax.swing.table.*;

importjavax,swing.*;

importjavax.swing.table.DefaultTableModel;

publicclasswannianliextendsJFrameimplementsActionListener{

privateCalendarcal=Calendar.getlnstanceO;

privateString[]str={“星期一","星期二",“星期三","星期四"

星期五","星期六","星期日"};

privateDefaultTableModeldtm=newDefaultTableModel(nuII,str);

privateJTabletable=newJTable(dtm);〃装日期的表格

privateJScrollPanesp=newJScrollPane(table);

privateJButtonbLastYear=newJButton("上一年");

privateJButtonbNextYear=newJButton("下一年");

privateJButtonbLastMonth=newJButton("上月");

privateJButtonbNextMonth=newJButton("下月");

privateJTextFieldYear=newJTextField(4);//jtfYear年份显示和输

入文本

privateJLabeljla=newJLabel("年");

privateJTextFieldmonth=newJTextField(4);

privateJLabeljlal=newJLabel("月");

privateJTextFieldjtfMonth=newJTextField(2);//jtfMonth月份显

示文本框

文档仅供参考

privateJComboBoxcomb;

privateJPanelpl=newJPanel();〃装入控制日期按钮的模块

privateJPanelp2=newJPanel();

privateJPanelp3=newJPanel(newGridLayout(2,l));

privateJPanelp4=newJPanel();

privateJPanelp5=newJPanel();

privateJLabel1=newJLabel("文本框中可直接键入要查找的年

份,以提高查询效率)

privateJLabelIt=newJLabel();

privateJLabelcom=newJLabel("请选择月份:");

privateintlastTime;

private

wannianli(){

super("万年历)//框架命名

this.setDefaultCloseOperation(JFrame.EX/7LON_CLOSE);〃窗I1关

闭函数

table.setGridColor(Color.G/MK);//星期之间的网格线是灰色的

table.setColumnSelectionAllowed(true);

table.setSelectionBackground(Color.HLACK);〃当选定某­■天时这一天

背景黑色

table.setSelectionForeground(Color.GREEN);〃选定的Fl期字体是绿色

文档仅供参考

table.setBackground(newColor(184,207,229));〃日期显示表格颜色浅

蓝色

table.setFont(newFont("黑体”,Font.BQLQ,24));〃日期数字字体格式

table.setRowHeight(30);〃表格的高度

Year.addActionListener(this);//可输入年份的文本框

//month.addActionListener(this);//可输入年份的文本框〃为各个

按钮添加监听函数

bLastYear.addActionListener(this);

bNextYear.addActionListener(this);

bLastMonth.addActionListener(this);

bNextMonth.addActionListener(this);〃将按钮添加到

String[]str={"l","2","3","4","5","6","7","8","9","10","11","12"};

comb=newJComboBox(str);

pl.add(bLastYear);

pl.add(Year);//年份输入文本框

pl.add(jla);

pl.add(month);//年份输入文本框

pl.add(jlal);

pl.add(bNextYear);

p1.add(bLastMonth);

文档仅供参考

pl.add(jtfMonth);

pl.add(bNextMonth);

pl.add(com);

pl.add(comb);

p2.setLayout(newFlowLayout());

p2.add(p4,BorderLayout.E4S7);

p2.add(sp,BorderLayout.CENTER);

p2.add(p5,BorderLayout.WEST);

p3.add(l);

p3.add(lt);

this.add(p3,BorderLayout.SOUTT/);

this.add(p2,BorderLayout.CENTER);

this.add(pl,BorderLayout.NORTH);

String[]strDate=DateFormat.ge/£)a,e/〃s/4〃ce().format(new

java.util.Date()).split("-");

cal.set(Integer.parse/痴(strDate[0]),Integer.parse/痴(strDate[1])-1,0);

showCaIendar(Integer.parse/m(strDate[0]),

Integer.parse历,(strDate[l]),cal);

jtfMonth.setEditable(false);//设置月份的文本框为不可编辑

Year.setText(strDate[0]);

month.setText(strDate[1]);

文档仅供参考

comb.setToolTipText(strDate[1]);

comb.addItemListener(newItemListener(){

publicvoiditemStateChanged(ItemEvente){

jtfMonth.setText((String)comb.getSelectedItem());

month.setText((String)comb.getSelectedItem());

intm,y;

try//控制输入的年份正确,异常控制

(

if(Year.getText().length()!=4)

{thrownewNumberFormatException();

)

y=Integer.pa%e/〃《Year.getText());

m=Integer.parse/〃/(jtfMonth.getText());

)

catch(NumberFormatExceptionex)

(

//JOptionPane.showMessageDialog(this,”请输入4

位0-9的数字!“年份有误”,JOptionPane.ERROR_MESSAGE);

return;

)

for(inti=0;i<lastTime+1;i++)

文档仅供参考

dtm.removeRow(O);

)

cal.set(y,m-1,0);

showCalendar(y,m,cal);

)

});

jtfMonth.setText("1");

month.setText("1");

this.setBounds(200,200,700,320);

this.setResizable(false);

this.setVisible(true);

)

publicstaticvoidmain(String[]args)

(

newwannianli();

}

publicvoidshowCalendar(intlocalYear,intlocalMonth,Calendarcld)

(

intDays=getDaysOfMonth(localYear,localMonth)+

cld.get(Calendar.OALOFLW£EK)-2;

Object[]ai=newObject[7];

lastTime=0;

文档仅供参考

for(inti=cld.g)et(Ca\end,ir.DAY_OF_WEEK)-1;i<=Days;i++)

(

ai[i%7]=String.ua/〃eCy(i-(cld.get(Calendar.WEE*-

2));

if(i%7==6)

(

dtm.addRow(ai);

ai=newObject[7];

lastTime++;

}

}

dtm.addRow(ai);

)

publicintgetDaysOfMonth(intyear,intMonth)〃显示所选月份的

天数

(

if(Month==1||Month==3||Month==5||Month==7||Month

==8||Month==1()||Month==12)

return31;

)

文档仅供参考

if(Month==4||Month==6||Month==9||Month==11)

(

return30;

}

if(year%4==0&&year%100!=0||year%400==0)〃闰年

(

return29;

)

else

(

return28;

}

)

publicvoidactionPerformed(ActionEvente)

(

if(e.getSource()==Year||e.getSource()==bLastYear||

e.getSource()==bNextYear||e.getSource()==bLastMonth||e.getSource()

==bNextMonth)

(

intm,y;

try//控制输入的年份正确,异常控制

文档仅供参考

if(Year.getText().length()!=4)

{thrownewNumberFormatException();

)

y=Integer.parse历/(Year.getText。);

m=Integer.parse/痴(jtfMonth.getText。);

}catch(NumberFormatExceptionex)

(

JOptionPane.s〃owA/essage£)h/og(this,”请输入4位0-9

的数字!"年份有误",JOptionPane.ERROR_MESSAGE);

return;

)

for(inti=0;i<lastTime+1;i++)

(

dtm.removeRow(O);

)

if(e.getSource()==bLastYear)

(

Year.setText(String.vtzZM^O/(—y));

)

if(e.getSource()==bNextYear)

Year.setText(String.va/“e(2A++y));

文档仅供参考

)

if(e.getSource()==bLastMonth)

(

if(m==1)

(

Year.setText(String.va/M^Cy(—y));

m=12;

jtfMonth.setText(String.v6r/weCy(m));

)

else

(

jtfMonth.setText(String.V6zZ«^(?/(—m));

)

)

if(e.getSource()==bNextMonth)

(

if(m==12)

(

Year.setText(String.va/〃eQ/(++y));

m=1;

jtfMonth.setText(String.va/«eC>Xin));

}

文档仅供参考

else

(

jtfMonth.setText(String.v«/«^(9/(++m));

)

)

cal.set(y,m-1,0);

showCalendar(y,m,cal);

month.setText(String.valueOfim)),,

〃comb.setToolTipText(String.valueOf(m));

)

)

五、软件测试

文档仅供参考

图1界面图

巴,万年历I=I,

|年|月|下一年坛

上一年J|2015|211|2下月清选择月份:2▼

星期一星期二星期三星期四星期五星期六星期日

1

2345678

9101112131415

16171819202122

232425262728

文本框中可直接键入1任查找的年份以提高查询效率

图2界面图下拉选择2月份

六、课程设计总结

本次Java课程设计我们这组做的课题是万年历,刚开始拿到题目我

们组员都不知如何下手,经过小组成员一起查找资料,而且开会讨论,

我们确定了设计的设计目标以及具体实现方式,包括如何将Java的思想

运用到实际系统的详细设计之中。

实验过程中,首先要将系统要实现的功能分为几大

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论