Java课程设计格式范例.docx

上传人:b****6 文档编号:6166725 上传时间:2023-01-04 格式:DOCX 页数:27 大小:44.44KB
下载 相关 举报
Java课程设计格式范例.docx_第1页
第1页 / 共27页
Java课程设计格式范例.docx_第2页
第2页 / 共27页
Java课程设计格式范例.docx_第3页
第3页 / 共27页
Java课程设计格式范例.docx_第4页
第4页 / 共27页
Java课程设计格式范例.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

Java课程设计格式范例.docx

《Java课程设计格式范例.docx》由会员分享,可在线阅读,更多相关《Java课程设计格式范例.docx(27页珍藏版)》请在冰豆网上搜索。

Java课程设计格式范例.docx

Java课程设计格式范例

 

东北石油大学

《JAVA程序设计》专业技能实训

课程《java程序设计》专业技能实训

题目万年历

学院数学与统计学院

专业班级信计14-2

学生姓名沈小伟

学生学号141001140228

指导教师

 

2017年6月15日

东北石油大学课程设计任务书

课程《java程序设计》专业技能实训

题目万年历

专业信息与计算科学姓名沈小伟学号141001140228

主要内容

XXXXXXXXXXXXXXXXXXX

专业技能实训的要求:

1.独立完成软件开发,并提交一篇论文和相应的软件。

2.论文的主要内容包括:

摘要,问题描述,计算机程序和运行结果。

3.文档格式:

参照《东北石油大学课程设计撰写规范》。

4.专业技能实训结束时参加答辩。

主要参考资料:

葛萌,张琳娜,陈伟。

Java多态性机制应用研究[J].攀枝花学院学报,2016,02:

25-28.

  贾羽,贾默然,郭宇。

基于JAVA的网络数控仿真系统研究[J].数字技术与应用,2015,11:

77.

  赵源。

使用JAVA语言编写计算器的设计研究[J].今日科苑,2015,11:

99.

  朱浩悦。

计算机软件JAVA编程特点分析[J].黑龙江科技信息,2015,36:

225.

  卞慧敏。

浅议Java网络聊天工具设计[J].科技展望,2015,36:

120.

  羿欣冉。

基于JavaEE的在线考试系统的设计与实现[J].科技风,

完成期限2017年月日-月日

指导教师

专业负责人

2017年月日

摘要

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

一、设计程序运行界面,具有显示各种功能的面板模块,并对各功能按钮就行时间监听;

二、程序需要显示1800年到2100年的日历,包括公历、农历、时间所对应的星期。

要求系

统能够从界面上的操作获取公历日期,计算其所对应的星期和相应的农历并显示到界面上;

三、程序要求显示系统时间,并能设置闹铃。

要求可以自己设置一个时间点,在这一时间点

做出相应的响应;

四、查询显示若干国际城市不同时区的时间,这里只需要调用Java的系统里就可以解决。

五、对时间的更新,日历显示要求关联系统时间,能在进入程序时显示系统时间对应的日历,

并能返回当天日历;

六、程序界面的美观设计和人性化结构,要求具有良好的人机交互,容易理解界面内容,易

操作;

七、就现在的水平来说,功能1、2、3、5是可以实现,功能4有待研究,可能遇到的问题是

按钮对时间的监听处理可能难度较大,还有就是在公历转农历中可能比较难获取相应的公历

变化日期。

关键字:

时间信息获取、程序界面构建和美化、

第1章基础知识

1.总天数的算法:

首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。

然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。

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

使总天数除以7取余加2得几既为星期几,若是7,则为星期日。

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

算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。

4.获取系统时间,计算当天农历日期并显示

1.课程设计的目的

通过课程设计的实践让同学们更加了解Java,更好的运用Java,熟悉和掌握目前所学到的知识并融合贯通。

同时也进一步了解体会Java语言具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。

Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。

Java的平台标准有JavaME,JavaSE和JavaEE。

Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。

本次课程设计开发平台使用Eclipse。

参照JDK帮助。

2.问题描述及要求

本程序的要求为:

(1)能够显示实现1800-2100年的日期,包括公历、农历、星期、二十四节气。

(2)能够按照月份格式显示,或按照星期格式显示。

(3)能够显示系统时间。

(4)能够设置闹钟。

(5)能够查询若干国际大城市(分布在不同时区)的时间。

第二章程序框架

整体程序:

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjavax.swing.table.DefaultTableModel;

importjava.text.DateFormat;

importjava.text.SimpleDateFormat;

importjava.util.Calendar;

importjava.util.Date;

importjava.util.GregorianCalendar;

importjava.util.Locale;

importjava.util.TimeZone;

publicclasswannianliextendsJframe//窗体类implementsActionListener,//事件处理接口MouseListener{

privateCalendarcld=Calendar.getInstance();//获取一个Calendar类的实例对象,Calendar类用于获取某个时间或日期

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

privateDefaultTableModeldtm=newDefaultTableModel(null,astr);//创建了一个表格模型

privateJTabletable=newJTable(dtm);

//JTable 用来显示和编辑常规二维单元表

privateJScrollPanesp=newJScrollPane(table);//JScrollPane类可提供轻量级组件的scrollable视图。

JScrollPane管理视口、可选的垂直和水平滚动条以及可选的行和列标题视口。

privateJButtonbLastYear=newJButton("上一年");//建立一个“上一年“的按钮

privateJButtonbNextYear=newJButton("下一年");

privateJButtonbLastMonth=newJButton("上月");

privateJButtonbNextMonth=newJButton("下月");

//JPanel是Java图形用户界面(GUI)工具包swing中的面板容器类,包含在javax.swing包中,是一种轻量级容器,可以加入到JFrame窗体中。

JPanel默认的布局管理器是FlowLayout,其自身可以嵌套组合,在不同子容器中可包含其他组件(component),如JButton、JTextArea、JTextField等

privateJPanelp1=newJPanel();//设立八个中间容器,装入布局控制日期的按钮模块

privateJPanelp2=newJPanel(newGridLayout(3,2));//网格布局

privateJPanelp3=newJPanel(newBorderLayout());//边界布局

privateJPanelp4=newJPanel(newGridLayout(2,1));//创建具有指定行数和列数的网格布局

privateJPanelp5=newJPanel(newBorderLayout());//边界布局管理器,构造一个组件之间没有间距(默认间距为0像素)的新边框布局。

privateJPanelp6=newJPanel(newGridLayout(2,2));

privateJPanelp7=newJPanel(newGridLayout(2,1));

privateJPanelp8=newJPanel(newBorderLayout());

privateJComboBoxtimeBox=newJComboBox(TimeZone.getAvailableIDs());//对所有支持时区进行迭代,获取所有的id;JComboBox组件可以实现在组合框内编辑。

//JTextField(intcolumns)

//构造一个具有指定列数的新的空TextField。

//JTextField是一个轻量级组件,它允许编辑单行文本。

privateJTextFieldjtfYear=newJTextField(5);//jtfYeaar年份显示输入框

privateJTextFieldjtfMonth=newJTextField

(2);//jtfMouth月份显示输入框

privateJTextFieldtimeField=newJTextField();//各城市时间显示框

privatestaticJTextAreajta=newJTextArea(10,5);//农历显示区

privateJScrollPanejsp=newJScrollPane(jta);

//JScrollPane(Componentview);

  建立一个新的JScrollPane对象,当组件内容大于显示区域时会自动产生滚动轴。

privateJLabell=newJLabel("梦落痴狂:

亲!

你可以直接输入年月查询.");//JLabel(Stringtext) 创建具有指定文本的JLabel实例。

privateJLabellt=newJLabel();

privateJLabelld=newJLabel();

//JLabel() 创建无图像并且其标题为空字符串的JLabel。

privateJLabellu=newJLabel("农历和节气");

privateJLabelnull1=newJLabel();

privateintlastTime;

//privateStringlocalTime=null;

privateStrings=null;

privateSimpleDateFormatdateFormat=newSimpleDateFormat("yyyy年MM月dd日hh时mm分ss秒");

//SimpleDateFormat 允许以为日期-时间格式化选择任何用户指定的方式启动。

例:

SimpleDateFormatmyFmt=newSimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");

       SimpleDateFormatmyFmt1=newSimpleDateFormat("yy/MM/ddHH:

mm"); 

       SimpleDateFormatmyFmt2=newSimpleDateFormat("yyyy-MM-ddHH:

mm:

ss");

得到:

2004年12月16日17时24分27秒

04/12/1617:

24

2004-12-1617:

24:

27

publicwannianli(){

super("万年历一生痴狂一世繁华BY梦落痴狂");//框架命名

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗口关闭函数

this.getContentPane().setLayout(newBorderLayout(9,10));

//设置用户界面上的屏幕组件的格式布局,是java图形界面编程的常用方法

jta.setLineWrap(true);//长度大于分配长度时候则换行

jta.setFont(newFont("黑体",Font.BOLD,16));

table.setBackground(Color.white);

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

table.setBackground(Color.white);

table.setColumnSelectionAllowed(true);//将table中的列设置为可选择的

table.setSelectionBackground(Color.pink);//当选定某一天时背景颜色为黑色

table.setSelectionForeground(Color.GREEN);

table.setBackground(newColor(184,207,229));//日期显示表格为浅蓝色

table.setFont(newFont("黑体",Font.BOLD,24));//日期数字字体格式

table.setRowHeight(26);//表格的高度

table.addMouseListener(this);//鼠标监听器、

lu.setFont(newFont("黑体",Font.BOLD,22));//农历标签格氏

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

//为各个按钮添加监听函数

bLastYear.addActionListener(this);

bNextYear.addActionListener(this);

bLastMonth.addActionListener(this);

bNextMonth.addActionListener(this);

timeBox.addItemListener(newTimeSelectedChangedListener());//根据运行结果,可以设置类实现ActionListener接口和ItemListener接口以进行动作事件处理和选项变化事件处理。

//将按钮添加到Jpane上

p1.add(bLastYear);

p1.add(jtfYear);//年份输入文本框

p1.add(bNextYear);

p1.add(bLastMonth);

p1.add(jtfMonth);

p1.add(bNextMonth);

p3.add(jsp,BorderLayout.SOUTH);

p3.add(lu,BorderLayout.CENTER);

p3.add(ld,BorderLayout.NORTH);

p4.add(lt);

p4.add(l);

p5.add(p4,BorderLayout.SOUTH);

p5.add(sp,BorderLayout.CENTER);

p5.add(p1,BorderLayout.NORTH);

p6.add(timeBox);

p6.add(null1);

p6.add(timeField);

p8.add(p2,BorderLayout.CENTER);

p8.add(p7,BorderLayout.SOUTH);

this.getContentPane().add(p3,BorderLayout.EAST);

this.getContentPane().add(p5,BorderLayout.CENTER);

this.getContentPane().add(p6,BorderLayout.SOUTH);

this.getContentPane().add(p8,BorderLayout.WEST);

String[]strDate=DateFormat.getDateInstance().format(newDate()).split("-");//获取日期"2017-6-1"----->"2017""6""1"

cld.set(Integer.parseInt(strDate[0]),Integer.parseInt(strDate[1])-1,0);

//paresInt强转成int类型,Integer就是整数型,//月份从0开始,存到数组里0123----11

showCalendar(Integer.parseInt(strDate[0]),Integer.parseInt(strDate[1]),cld);

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

jtfYear.setText(strDate[0]);

jtfMonth.setText(strDate[1]);

this.showTextArea(strDate[2]);

ld.setFont(newFont("新宋体",Font.BOLD//风格,24//字号));

newTimer(lt).start();

newTimeThread().start();

this.setBounds(200,200,700,350);//显示窗口在屏幕的位置以及窗口自身的大小

this.setResizable(false);

//resizeable值为true时,表示在生成的窗体可以自由改变大小;

this.setVisible(true);//窗体可见

}

publicvoidshowCalendar(intlocalYear,intlocalMonth,Calendarcld)

{

intDays=getDaysOfMonth(localYear,localMonth)+cld.get(Calendar.DAY_OF_WEEK)-2;

Object[]ai=newObject[7];

lastTime=0;

for(inti=cld.get(Calendar.DAY_OF_WEEK)-1;i<=Days;i++)

{

ai[i%7]=String.valueOf(i-(cld.get(Calendar.DAY_OF_WEEK)-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==10||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()==jtfYear||e.getSource()==bLastYear||e.getSource()==bNextYear||

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

{

intm,y;

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

{

if(jtfYear.getText().length()!

=4)

{

thrownewNumberFormatException();//数字格式错误

}

y=Integer.parseInt(jtfYear.getText());

m=Integer.parseInt(jtfMonth.getText());

}

catch(NumberFormatExceptionex)

{

JOptionPane.showMessageDialog(this,"请输入4位0-9的数字!

","年份有误",JOptionPane.ERROR_MESSAGE);

return;

}

ld.setText("没有选择日期");

for(inti=0;i

if(e.getSource()==bLastYear){jtfYear.setText(String.valueOf(--y));}

if(e.getSource()==bNextYear){jtfYear.setText(String.valueOf(++y));}

if(e.getSource()==bLastMonth)

{

if(m==1)

{

jtfYear.setText(String.valueOf(--y));

m=12;

jtfMonth.setText(String.valueOf(m));

}

else

{

jtfMonth.setText(String.valueOf(--m));

}

}

if(e.getSource()==bNextMonth)

{

if(m==12)

{

jtfYear.setText(String.valueOf(++y));

m=1;

jtfMonth.setText(String.valueOf(m));

}

else

{

jtfMonth.setText(String.valueOf(++m));

}

}

cld.set

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1