日历记事本课程设计报告.docx
- 文档编号:9092029
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:27
- 大小:112.72KB
日历记事本课程设计报告.docx
《日历记事本课程设计报告.docx》由会员分享,可在线阅读,更多相关《日历记事本课程设计报告.docx(27页珍藏版)》请在冰豆网上搜索。
日历记事本课程设计报告
Java程序设计课程设计报告
XXX
日历记事本
专业
XXX
学生
XXX
班级
XXX
学号
XXX
指导教师
XXX
完成日期
XXX
1概述………………………………………………………………….1
1.1课程设计目的……………………………………………………………1
1.2课程设计容……………………………………………………………1
2系统需求分析……………………………………………………………..1
2.1系统目标………………………………………………………………..1
2.2主体功能………………………………………………………………..1
2.3开发环境…………………………………………………………………1
3系统概要设计………………………………………………………………2
3.1系统的功能模块划分与系统流程图………………………………………….2
4系统详细设计……………………………………………………………..2
5测试……………………………………………………………………4
5.1测试方案……………………………………………………………….4
5.2测试结果……………………………………………………………….4
6小结…………………………………………………………………….6
参考文献…………………………………………………………………..7
附录…………………………………………………………………….8
附录1源程序清单…………………………………………………………..8
日历记事本
1概述
1.1课程设计目的
1)巩固和提高java编程技术。
2)培养掌握成学设计的基本思路和方法。
3)加强研发、调试程序的能力。
4)增强分析、解决问题的能力。
5)提高科技论文写作能力。
1.2课程设计容
设计GUI界面的日历记事本。
系统将日历、记事本功能结合在一起,用户可以方便地在任何日期记录下有关容或查看某个日期的记录容。
2系统需求分析
2.1系统目标
1.系统界面的左侧是日历。
该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前日历的年份减一;当鼠标左键单击“下年”按钮,当前日历的年份加一。
2.该日历也可以在某年按月前后翻动。
当鼠标左键单击“上月”按钮时,当前日历的月份减一;当鼠标左键单击“下月”按钮时,当前日历的月份加一。
3.使用鼠标左键单击选定的日期,如已有记录容,系统将弹出对话框提示该日已有记录容,并询问用户是否用记事本显示该容。
4.用户选择具体日期后,可以将记事本的当前容保存起来,形成日志。
2.2主体功能
用户可以方便地在任何日期记录下有关容或查看某个日期的记录容。
通过按按钮“上年”和“下年”对年份进行翻页。
通过按按钮“上月”和“下月”对月份进行翻页。
用户可以通过输入年份来查看自己的日志。
2.3开发环境
WindowsXP;jdk1.5.0-0-05;ultraedit开发工具
3系统概要设计
3.1系统的功能模块划分与系统流程图
本日历记事本共有4个java源文件。
CalendarPad.java
该java文件生成的类负责创建本日历记事本程序主窗口。
该类含有main方法,程序从该类开始执行。
Year.java
该文件负责创建管理年份的对象。
Month.java
该文件负责创建管理月份对象。
NotePad.java
该文件负责创建记事本。
4系统详细设计
主类CalendarPad
1.成员变量
成员变量描述
变量类型
名称
年、月、日
int
Year,month,day
保存日志的散列表
Hashtable
hashtable
存放散列表的文件
File
file
显示日期
JTextField[]
showDay
日历对象
Calendar
日历
记事本对象
NotePad
notepad
月
Month
负责改变月
年
Year
负责改变年
2.方法
名称
功能
备注
CalendarPad
创建程序主窗口
构造方法
设置日历牌
设置日历的年份、月份
排列
排列月份中的
mousePressed
处理MouseEvent事件
接口方法
mian
程序开始运行
记事本NotePad
1.成员变量
描述
变量类型
名称
文本输入区
JTextArea
text
保存、删除日志的按钮
Button
保存日志、删除日志
保存日志的散列表
Hashtable
table
保存散列表的文件
File
file
记录日志的年、月、日
int
year,month,day
2.方法
名称
功能
备注
NotePad
创建记事本对象
构造方法
setYear
设置年份
getYear
获取年份
setMonth
设置月份
getMonth
获取月份
setDay
设置日期
getDay
获取日期
获取日志容
获取日志容
保存日志
保存日志
删除日志
删除日志
actionPerformed
处理ActionEvent事件
接口方法
年Year
1.成员变量
描述
变量类型
名称
表示年份的整数(负数表示公元前)
int
year
显示年份的文本条
JTextField
showYear
负责增减年份的按钮
JButton
明年,去年
2.方法
名称
功能
备注
Year
创建“年”对象
构造方法
setYear
设置年份
getYear
获取年份
actionPerformed
处理ActionEvent事件
接口方法
月Month
1.成员变量
描述
变量类型
名称
表示月份的整数(负数表示公元前)
int
month
显示月份的文本条
JTextField
ShowMonth
负责增减月份的按钮
JButton
上月,下月
2.方法
名称
功能
备注
Month
创建“月”对象
构造方法
setMonth
设置月份
getMonth
获取月份
actionPerformed
处理ActionEvent事件
接口方法
5测试
5.1测试方案
1.打开主界面,鼠标左键右击,查看日历界面。
2.选定一个日期写日志。
3.对日历添加、删除日志。
4.修改年份,查看一些日志。
5.2测试结果
1.打开主界面,鼠标左键点击,查看日历界面。
如图:
2.下图为选择在2012年1月5日写的日志:
3.添加、删除日志,如图:
添加日志
删除日志
4.修改年份,查看日志,如图:
6小结
经过几天的努力,基本上完成了我的java课程设计。
通过这次的课程设计,基本上将书本上的知识运用到实践上,从而进一步巩固和丰富所学知识,也让我更加深层次的认识了java及其功能的强大。
为了更好地完成这次课程设计,我做了很多准备,上网查阅资料,到图书馆翻阅书籍。
这个过程中也锻炼了我的思维分析、遇到问题及想法设法通过各种途径解决问题的能力。
从理论到实践,在整整几天的时间里,可以说,是苦大于甜,但确实学到很多东西,同时不仅巩固了以前的知识,而且学到了许多书上学不到的知识。
通过这次课程设计使我懂得了理论与实践相结合是很重要的,只有理论知识是不够的,只有把所学的理论知识和实践结合起来,从理论中得出结论,才能真正服务社会,从而提高自己的实际动手能力和独立思考能力。
通过这次课程设计,了解到了自己的不足之处,对以前的知识没有掌握到位,所以我们一定要学好理论知识,为以后的实践打下基础。
总而言之,这次课程设计我学到了很多。
参考文献
[1]耿祥义,跃平. Java2实用教程(第三版)[M].:
清华大学,2006
[2]耿祥义. Java课程设计(第三版)[M].:
清华大学,2004
[3]跃平.Java2实用教程实验指导与习题解答(第三版)[M].:
清华大学,2004
[4]JacquieBarker,Java面向对象编程指南,电子工业,2001
附录1
源程序清单
主类CalendarPad:
CalendarPad。
Java
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);
}
}
记事本NotePad:
NotePad.java
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(this);
删除日志.addActionListener(this);
setLayout(newBorderLayout());
JPanelpSouth=newJPanel();
add(信息条,BorderLayout.NORTH);
pSouth.add(保存日志);
pSouth.add(删除日志);
add(pSouth,BorderLayout.SOUTH);
add(newJScrollPane(text),BorderLayout.CENTER);
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==保存日志)
{保存日志(year,month,day);
}
elseif(e.getSource()==删除日志)
{删除日志(year,month,day);
}
}
publicvoidsetYear(intyear)
{this.year=year;
}
publicintgetYear()
{returnyear;
}
publicvoidsetMonth(intmonth)
{this.month=month;
}
publicintgetMonth()
{returnmonth;
}
publicvoidsetDay(intday)
{this.day=day;
}
publicintgetDay()
{
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 日历 记事本 课程设计 报告