java课程设计日历记事本.docx
《java课程设计日历记事本.docx》由会员分享,可在线阅读,更多相关《java课程设计日历记事本.docx(36页珍藏版)》请在冰豆网上搜索。
java课程设计日历记事本
java课程设计说明书
课程名称
Java程序设计
课程代码
题目
日历记事本
年级/专业/班
学生姓名
学号
指导老师
开题时间
完成时间
课程设计任务书
课程名称
Java程序设计
学生姓名
1、设计的目的与要求;
1、)为用户提供一个带有日程提醒功能的日历记事本并具备以下功能:
(1)、显示信息:
用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月的日期。
(2)、定时提醒:
用户可以针对某一天来添加,删除和编辑这一天的日程提醒信息,当系统时间和提醒时间相吻合时,给出具有提示信息的对话框。
(3)、查询信息:
用户可以查询到某个月的所有的提示信息。
2、)对java技术的进一步了解和简单的运用;
3、)初步的接触软件工程;
设计进度及完成情况
日期
内容
5月25日
分析课题;对题目进行初步分析
5月26日
建立模型,完成整体设计以及功能模块分析
5月27日
确立每个类的功能,完成对算法的分析
5月28日
完成CalendarPad类的设计
5月28日
完成对Year类的设计
5月28日
完成对Month类的设计
5月28日
完成对NotePad类的设计
5月29日
紧系程序测试与修改
5月29日
完成设计,整理说明书
5月29日
打包发布程序
摘要
本课程设计通过代码实现将理论知识和具体实践相结合,巩固提高了对JAVA的相关方法与概念的理解,使学生的发散思维及动手能力进一步加强,加强对计算机及软件工程的进一步了解。
在本案例中,我们开发了一个实现有日历标记的记事本软件,日历记事本面板由日历和和记事本两部分组成。
日历部分可以调节年份,月份,日期,星期。
记事本可以实行查看,保存,删除等操作,并且每一步操作都有相应提示。
本软件是一个实用性很强,简洁,方便的功能软件。
关键词:
java;日历记事本
《Java程序设计》课程设计
——日历记事本
1.引言
Java是一种纯面向对象的、网络编程首选的语言。
Java技术作为软件开的一种革命性技术,已被列为当今世界信息技术的主流之一。
为了适应时代潮流,我们应该加强对Java的学习,更好的掌握这门课程。
为此,我们成了一个课程小组,经过小组成的商讨之后,我们决定以“日历记事本”为设题材,借此巩固加深我们对Java的了解。
本次课程设计的实例虽然比较简单,程序设计也不是很复杂,但在此程序的设计过程也是一个学习过程,更是对复杂程序的一个学习过程,还能培养我们的数抽象能力。
因此,我们觉得这次课程设计是非常有意义的,能为我们今后学习面向过程的程序设计作一些铺垫。
2.设计目的与任务
本课程设计所要求达到的目的和任务:
通过Java程序设计的一些重要理论基础来实现“日历记事本”的“日历”和“记事本”的双重功能。
并通过此次课程设计的训练,使学生巩固和加深对Java这门课程的理解,通过利用所学到的计算科学的理论知识,提高解决实际问题的能力,增强运算、编程和使用技术资料的技能,通过实际问题的分析设计、编程和调试,掌握应用软件的分析方法和工程设计方法,能正确阐述设计和实验结果。
通过这次课程设计,培养实事求是、认真、严谨的科学态度和刻苦钻研不断创新的精神,逐步建立正确的全局观念。
3.设计方案
3.1总体设计
(1)问题定
义:
创建日历记事本,实现对某日期的事情进行记录等功能。
(2)问题分析:
通过对“日历记事本”这一题材的分析,我需要四个类来实现其“日历”和“记事本”这俩大功能。
通过主类CalendPad创建主窗口,再用余下Year、Month、NotePad类来控制日期的变化和实现记事本的功能。
(3)研究意义:
通过本次课程设计,我们掌握了Java语言的基本运用,提高了理论结合实际的能力。
3.2设计要求
(1)界面的左侧是日历。
该日历可以按年前后翻动,当鼠标单击“上一年”按钮时,当前日历的年份将减一;当鼠标左键单击“下年”按钮,当前日历的年份将加一。
(2)也可以在某年内按月前后翻动。
当鼠标左键单击“上月”按钮时,当前日历的月份将减一;当鼠标左键单击“下月”当前日历表的月份将加一。
(3)使用鼠标左键在要选择的日期上单击,如有记事内容,程序将弹出对话框提示该日有记事内容,提示用户是否用记事本显示该内容。
(4)选择具体日期后,可以将记事本的内容保存起来,形成一个日志。
3.3系统的主要功能
(1)可以进行日期查询;
(2)可以方便地在任何日期记载有关内容以及查看某个日期记载的内容。
3.4系统功能结构图
(1)CalendarPad类:
负责创建日历记事本主窗口。
该文件含有main方法,程序从该类开始执行,实现代码中的方法。
(2)Year类:
负责创建管理年份的对象
(3)Month类:
负责创建管理月份的对象。
(4)NotePad类:
负责创建记事本。
图1系统功能结构图
3.5运行功能(截图)
图2日历记事本界面
图3保存记事
图4删除记事
图5修改年份
图6查看记事
4.结束语
从本次课程设计的完成中,我们了解了课程设计的要求与方法,学会了程序设计基本步骤。
进一步提高了团队合作的意识。
同时,使我们感觉到,一个优秀的程序,不仅仅是可以运行的,更应该具较高的效率,合理的结构,良好的可读性和一定的容错性。
同时,我们认为一个程序的成功完成需要严谨的务实态度,和团队的团结协作的精神.团结协作和认真的态度是我们课程设计取得成功的一项非常重要的保证。
但在完成过程中也发现了不足,由于知识的限制,没有设置日记查看密码功能.以后的学习中我们将虚心向学.
5.致谢
我们真心的感谢王逢州老师对我们精心的指导和不倦的教育,他在我们的课程设计过程中提出了指导性的方案和架构,并指引我们阅读相关的资料和书籍,使我们在不熟悉的领域中仍能迅速掌握新的技术.
感谢校领导给我们这次难得的锻炼机会,让我们能更好的理解和实践java编程,让我们对java编程有了深刻的认知,进一步的了解了所学知识。
6.参考文献
[1]张广彬,孟红蕊,张永宝.Java课程设计案例精编[M].北京:
清华大学出版社,2007,1.
[2]黄晓东.Java课程设计案例精编[M].北京:
中国水利水电出版社,2004,5.
[3]Java程序设计之网络编程[M].北京:
清华大学出版社,2006,3.
[4]Java并发编程—设计原则与模式[M].北京:
中国电力出版社,2004,2.
[5]印昊.java与面向对象程序设计.高等教育出版社.2004.4.
[6]耿祥义,《Java课程设计》,清华大学出版社,2004.02
7、附录A:
源程序
1、)CalendarPad类
importjava.util.Calendar;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjava.util.Hashtable;
publicclassCalendarPadextendsJFrameimplementsMouseListener
{
intyear,month,day;
Hashtablehashtable;
Filefile;
JTextFieldshowDay[];
JLabeltitle[];
Calendar日历;
int星期几;
NotePadnotepad=null;
Month负责改变月;
Year负责改变年;
String星期[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
JPanelleftPanel,rightPanel;
publicCalendarPad(intyear,intmonth,intday)
{
leftPanel=newJPanel();
JPanelleftCenter=newJPanel();
JPanelleftNorth=newJPanel();
leftCenter.setLayout(newGridLayout(7,7));
rightPanel=newJPanel();
this.year=year;
this.month=month;
this.day=day;
负责改变年=newYear(this);
负责改变年.setYear(year);
负责改变月=newMonth(this);
负责改变月.setMonth(month);
title=newJLabel[7];
showDay=newJTextField[42];
for(intj=0;j<7;j++)
{
title[j]=newJLabel();
title[j].setText(星期[j]);
title[j].setBorder(BorderFactory.createRaisedBevelBorder());
leftCenter.add(title[j]);
}
title[0].setForeground(Color.red);
title[6].setForeground(Color.blue);
for(inti=0;i<42;i++)
{
showDay[i]=newJTextField();
showDay[i].addMouseListener(this);
showDay[i].setEditable(false);
leftCenter.add(showDay[i]);
}
日历=Calendar.getInstance();
Boxbox=Box.createHorizontalBox();
box.add(负责改变年);
box.add(负责改变月);
leftNorth.add(box);
leftPanel.setLayout(newBorderLayout());
leftPanel.add(leftNorth,BorderLayout.NORTH);
leftPanel.add(leftCenter,BorderLayout.CENTER);
leftPanel.add(newLabel("请在年份输入框输入所查年份(负数表示公元前),并回车确定"),
BorderLayout.SOUTH);
leftPanel.validate();
Containercon=getContentPane();
JSplitPanesplit=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,
leftPanel,rightPanel);
con.add(split,BorderLayout.CENTER);
con.validate();
hashtable=newHashtable();
file=newFile("日历记事本.txt");
if(!
file.exists())
{
try{
FileOutputStreamout=newFileOutputStream(file);
ObjectOutputStreamobjectOut=newObjectOutputStream(out);
objectOut.writeObject(hashtable);
objectOut.close();
out.close();
}
catch(IOExceptione)
{
}
}
notepad=newNotePad(this);
rightPanel.add(notepad);
设置日历牌(year,month);
addWindowListener(newWindowAdapter()
{publicvoidwindowClosing(WindowEvente)
{
System.exit(0);
}
});
setVisible(true);
setBounds(100,50,524,285);
validate();
}
publicvoid设置日历牌(intyear,intmonth)
{
日历.set(year,month-1,1);
星期几=日历.get(Calendar.DAY_OF_WEEK)-1;
if(month==1||month==2||month==3||month==5||month==7
||month==8||month==10||month==12)
{
排列号码(星期几,31);
}
elseif(month==4||month==6||month==9||month==11)
{
排列号码(星期几,30);
}
elseif(month==2)
{
if((year%4==0&&year%100!
=0)||(year%400==0))
{
排列号码(星期几,29);
}
else
{
排列号码(星期几,28);
}
}
}
publicvoid排列号码(int星期几,int月天数)
{
for(inti=星期几,n=1;i<星期几+月天数;i++)
{
showDay[i].setText(""+n);
if(n==day)
{
showDay[i].setForeground(Color.green);
showDay[i].setFont(newFont("TimesRoman",Font.BOLD,20));
}
else
{
showDay[i].setFont(newFont("TimesRoman",Font.BOLD,12));
showDay[i].setForeground(Color.black);
}
if(i%7==6)
{
showDay[i].setForeground(Color.blue);
}
if(i%7==0)
{
showDay[i].setForeground(Color.red);
}
n++;
}
for(inti=0;i<星期几;i++)
{
showDay[i].setText("");
}
for(inti=星期几+月天数;i<42;i++)
{
showDay[i].setText("");
}
}
publicintgetYear()
{
returnyear;
}
publicvoidsetYear(inty)
{
year=y;
notepad.setYear(year);
}
publicintgetMonth()
{
returnmonth;
}
publicvoidsetMonth(intm)
{
month=m;
notepad.setMonth(month);
}
publicintgetDay()
{
returnday;
}
publicvoidsetDay(intd)
{
day=d;
notepad.setDay(day);
}
publicHashtablegetHashtable()
{
returnhashtable;
}
publicFilegetFile()
{
returnfile;
}
publicvoidmousePressed(MouseEvente)
{
JTextFieldsource=(JTextField)e.getSource();
try{
day=Integer.parseInt(source.getText());
notepad.setDay(day);
notepad.设置信息条(year,month,day);
notepad.设置文本区(null);
notepad.获取日志内容(year,month,day);
}
catch(Exceptionee)
{
}
}
publicvoidmouseClicked(MouseEvente)
{
}
publicvoidmouseReleased(MouseEvente)
{
}
publicvoidmouseEntered(MouseEvente)
{
}
publicvoidmouseExited(MouseEvente)
{
}
publicstaticvoidmain(Stringargs[])
{
Calendarcalendar=Calendar.getInstance();
inty=calendar.get(Calendar.YEAR);
intm=calendar.get(Calendar.MONTH)+1;
intd=calendar.get(Calendar.DAY_OF_MONTH);
newCalendarPad(y,m,d);
}
}
2、)Month类
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassMonthextendsBoximplementsActionListener
{
intmonth;
JTextFieldshowMonth=null;
JButton下月,上月;
CalendarPad日历;
publicMonth(CalendarPad日历)
{
super(BoxLayout.X_AXIS);
this.日历=日历;
showMonth=newJTextField
(2);
month=日历.getMonth();
showMonth.setEditable(false);
showMonth.setForeground(Color.blue);
showMonth.setFont(newFont("TimesRomn",Font.BOLD,16));
下月=newJButton("下月");
上月=newJButton("上月");
add(上月);
add(showMonth);
add(下月);
上月.addActionListener(this);
下月.addActionListener(this);
showMonth.setText(""+month);
}
publicvoidsetMonth(intmonth)
{
if(month<=12&&month>=1)
{
this.month=month;
}
else
{
this.month=1;
}
showMonth.setText(""+month);
}
publicintgetMonth()
{
returnmonth;
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==上月)
{
if(month>=2)
{
month=month-1;
日历.setMonth(month);
日历.设置日历牌(日历.getYear(),month);
}
elseif(month==1)
{
month=12;
日历.setMonth(month);
日历.设置日历牌(日历.getYear(),month);
}
showMonth.setText(""+month);
}
elseif(e.getSource()==下月)
{
if(month<12)
{
month=month+1;
日历.setMonth(month);
日历.设置日历牌(日历.getYear(),month);
}
elseif(month==12)
{
month=1;
日历.setMonth(month);
日历.设置日历牌(日历.getYear(),month);
}
showMonth.setText(""+month);
}
}
}
3、)NotePad类
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjava.io.*;
publicclassNotePadextendsJPanelimplementsActionListener
{
JTextAreatext;
JButton保存日志,删除日志;
Hashtabletable;
JLabel信息条;
intyear,month,day;
Filefile;
CalendarPadcalendar;
publicNotePad(CalendarPadcalendar)
{
this.calendar=calendar;
year=calendar.getYear();
month=calendar.getMonth();
day=calendar.getDay();;
table=calendar.getHashtable();
file=calendar.getFile();
信息条=newJLabel(""+year+"年"+month+"月"+day+"日",JLabel.CENTER);
信息条.setFont(newFont("TimesRoman",Font.BOLD,16));
信息条.setForeground(Color.blue);
text=newJTextArea(10,10);
保存日志=newJButton("保存日志");
删除日志=newJButton("删除日志");
保存日志.addActionListener(thi