Java课程设计格式范例Word文件下载.docx
- 文档编号:19168925
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:27
- 大小:44.44KB
Java课程设计格式范例Word文件下载.docx
《Java课程设计格式范例Word文件下载.docx》由会员分享,可在线阅读,更多相关《Java课程设计格式范例Word文件下载.docx(27页珍藏版)》请在冰豆网上搜索。
朱浩悦。
计算机软件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.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++;
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;
lastTime+1;
i++){dtm.removeRow(0);
}
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));
cld.set
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课程设计 格式 范例