最新版java毕业课程设计报告书.docx
- 文档编号:25151350
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:37
- 大小:38.68KB
最新版java毕业课程设计报告书.docx
《最新版java毕业课程设计报告书.docx》由会员分享,可在线阅读,更多相关《最新版java毕业课程设计报告书.docx(37页珍藏版)》请在冰豆网上搜索。
最新版java毕业课程设计报告书
本科生课程设计
课程名称
Java程序设计课程设计
课程编号
j
题目
日历记事本
学号
学生姓名
李祖宏
所在专业
信息管理与信息系统
所在班级
信管1082
指导教师
陈亮
成绩
教师签字
评语:
课程设计时间:
2010年12月20日--2010年12月24日
摘要················································2
1.引言················································2
2.设计的目的与任务····································2
3.设计方案············································3
3.1总体设计·········································3
3.2设计要求·········································3
3.3系统的主要功能···································3
3.4各个类的组合结构图·······························4
3.5各个类说明·······································4
3.5.1CalendarWindow类····························4
3.5.2CalendarMessage类·························11
3.5.3CalendarPad类·····························13
3.5.4NotePad类································14
3.5.5CalendarImage类···························19
3.5.6Clock类··································20
4.各种功能截图·······································24
5.课程设计总结·······································26
《Java程序设计》课程设计
——日历记事本
摘要
本课程设计通过代码实现将理论知识和具体实践相结合,巩固提高了对JAVA的相关方法与概念的理解,使学生的发散思维及动手能力进一步加强,加强对计算机及软件工程的进一步了解。
在这个课程设计中,我们做成了一个有日历标记的记事本软件,日历记事本面板由日历、记事本、图片、时钟四部分组成。
日历部分可以选择不同的年份、月份、日期和星期;记事本模块可以实现查看,保存,删除日志等操作;并且每一步操作都有相应提示;图片模块可以显示预设的图片;时钟模块可以用时钟来显示当前时间。
本软件是一个实用性较强,简洁,美观,方便的功能软件。
1.引言
Java是一种纯面向对象的、网络编程首选的语言。
Java技术作为软件开的一种革命性技术,已被列为当今世界信息技术的主流之一。
为了适应时代潮流,我们应该加强对Java的学习,更好的掌握这门课程。
为此,我们成了一个课程小组,经过小组成的商讨之后,我们决定以“日历记事本”为设题材,借此巩固加深我们对Java的了解。
本次课程设计的实例虽然比较简单,程序设计也不是很复杂,但在此程序的设计过程也是一个学习过程,更是对复杂程序的一个学习过程,还能培养我们的数抽象能力。
因此,我们觉得这次课程设计是非常有意义的,能为我们今后学习面向过程的程序设计作一些铺垫。
2.设计目的与任务
本课程设计所要求达到的目的和任务:
通过Java程序设计的一些重要理论基础来实现“日历记事本”的“日历”和“记事本”的双重功能。
并通过此次课程设计的训练,使学生巩固和加深对Java这门课程的理解,通过利用所学到的计算科学的理论知识,提高解决实际问题的能力,增强运算、编程和使用技术资料的技能,通过实际问题的分析设计、编程和调试,掌握应用软件的分析方法和工程设计方法,能正确阐述设计和实验结果。
通过这次课程设计,培养实事求是、认真、严谨的科学态度和刻苦钻研不断创新的精神,逐步建立正确的全局观念。
3.设计方案
3.1总体设计
(1)问题定义:
创建日历记事本,实现对某日期的事情进行记录这主要功能,并能显示设置的图片和时钟,增加美观。
(2)问题分析:
通过对“日历记事本”这一题材的分析,我需要四个类来实现其“日历”和“记事本”这两大功能。
通过主类CalendWindow创建动日历记事本软件的主窗口,该类含有main方法,程序从该类开始执行。
再用余下CalendarPad、CalendarMessage、NotePad类来显示并改变日期和实现记事本的功能。
而CalendarImage和Clock这两个类用来显示图片和时钟。
(3)研究意义:
通过本次课程设计,我们掌握了Java语言的基本运用,提高了理论结合实际的能力。
3.2设计要求
(1)界面的左侧是日历和一幅图。
该日历可以按年前后翻动,用鼠标鼠标单击“上年”按钮时,当前日历的年份将减一;当鼠标左键单击“下年”按钮,当前日历的年份将加一。
该日历还可以在某年内按月前月后翻动,当鼠标左键单击“上月”按钮时,当前日历的月份将减一;当鼠标左键单击“下月”当前日历表的月份将加一。
图片是为了增加美观而加进去的。
(2)系统界面的右侧是记事本和一个闹钟。
用鼠标单击日历上的日期,就可以通过该记事本编辑有关日志,并将日志保存到一个文件,该文件的名字由该日期组成的字符序列命名。
用户可以查看,删除某个日期的日志,也可以继续向某个日志添加新内容。
时钟能够实时显示当前的时间。
(3)当某个日期有日志时,在日历表该日期的外观上就会出现“yes”标记,表明这个日期有日志,当用户删除某个日期的日志后,该日期的外观上“yes”标志就会消失。
3.3系统的主要功能
(1)可以对个人日志进行添加、查阅、删除;
(2)可以方便地在任何日期记载个人日志以及查看某个日期记载的日志;
(3)可以显示当前日期与时间。
3.4各个类的组合结构图
3.5各个类说明
(1)主函数CalendarWindow类
该类是整个程序的主框架,是javax.swing包中Jframe的一个子类。
并实现了ActionListener、MouseListener和FocusListener接口。
以下是该类的有关数据说明!
1)成员变量
●year,month和day是int型变量。
它们的值分别确定年份、月份和日期。
●calendarMessage是CalnedarMessage对象,该对象用来处理与日期有关的数据。
●calendarPad是CalendarPad对象,该对象可以显示与日期有关的数据。
●notPad是NotPad的对象。
具有编辑、读取、保存和删除日志的功能。
●showYear和showMonth是JtextField类创建的文本框,用来显示年月。
●showDay数组的每个单元是JtextField类创建的用来显示日期的文本框。
●calendarImage是CalendarImage创建的对象,用来显示图像。
●clock是Clock创建的对象,用来显示时钟。
●nextYear,PreviousYear,nextMonth和PreviousMonth是JButton创建的按钮对象,名字依次为“下年、上年、下月、上月”。
这些按钮都将当前窗口注册为自己的ActionEvent事件监视器。
●savaDailyRecord,deleteDailyRecord和readDailyRecord是JButton创建的按钮对象,名字依次为“保存日志、删除日志、读取日志”。
这些按钮都将当前窗口注册为自己的ActionEvent事件监视器。
2)方法
●CalendarWindow()是构造方法,负责完成窗口初始化。
●actionPerformed(ActionEvent)方法是CalendarWindow类实现的ActionListener接口中的方法。
CalendarWindow创建的窗口是nextYear,previousYear,nextMonth,previousMonth,saveDailyRecord,deleteDailyRecord和readDailyRecord按钮的ActionEvent事件监视器,当用户单击其中按钮时,窗口将执行actionPerformed(ActionEvent)方法进行相应的操作。
●mousePressed(MouseEvent)方法是CalendarWindow类实现的MouseListener接口中的方法。
CalendarWindow创建的窗口时showDay数组中的JtextField文本框的MouseEvent事件监视器,当用户在某个显示日期的文本框上按下鼠标左键时,窗口将执行mousePress(MouseEvent)方法进行相应操作。
●focusGained(FocusEvent)和focusLost(FocusEvent)方法是CalendarWindow类实现的FocusListener接口中的方法。
CalendarWindow创建窗口是showDay数组中的JtextField文本框的FocusEvent事件监视器,当用户的操作导致某个显示日期的文本框的焦点发生变化时,窗口将执行focusGained(FocusEvent)或focusLost(FocusEvent)方法进行相应的操作。
●doMark()方法负责对有日志的日期作出标志。
●main方法是程序运行的入口方法。
详细代码:
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
importjava.io.*;
publicclassCalendarWindowextendsJFrameimplementsActionListener,
MouseListener,FocusListener
{
intyear,month,day;
CalendarMessagecalendarMessage;
CalendarPadcalendarPad;
NotePadnotePad;
JTextFieldshowYear,showMonth;
JTextFieldshowDay[];
CalendarImagecalendarImage;
Clockclock;
JButtonnextYear,previousYear,nextMonth,previousMonth;
JButtonsaveDailyRecord,deleteDailyRecord,readDailyRecord;
Filedir;
ColorbackColor=Color.white;
publicCalendarWindow()
{
dir=newFile("./dailyRecord");
dir.mkdir();
showDay=newJTextField[42];
for(inti=0;i { showDay[i]=newJTextField(); showDay[i].setBackground(backColor); showDay[i].setLayout(newGridLayout(3,3)); showDay[i].addMouseListener(this); showDay[i].addFocusListener(this); } calendarMessage=newCalendarMessage(); calendarPad=newCalendarPad(); notePad=newNotePad(); Calendarcalendar=Calendar.getInstance(); calendar.setTime(newDate()); year=calendar.get(Calendar.YEAR); month=calendar.get(Calendar.MONTH)+1; day=calendar.get(Calendar.DAY_OF_MONTH); calendarMessage.setYear(year); calendarMessage.setMonth(month); calendarMessage.setDay(day); calendarPad.setCalendarMessage(calendarMessage); calendarPad.setShowDayTextField(showDay); notePad.setShowMessage(year,month,day); calendarPad.showMonthCalendar(); doMark(); calendarImage=newCalendarImage(); calendarImage.setImageFile(newFile("flower.jpg")); clock=newClock(); JSplitPanesplitV1=newJSplitPane(JSplitPane.VERTICAL_SPLIT,calendarPad,calendarImage); JSplitPanesplitV2=newJSplitPane(JSplitPane.VERTICAL_SPLIT,notePad,clock); JSplitPanesplitH=newJSplitPane(JSplitPane.HORIZONTAL_SPLIT,splitV1,splitV2); add(splitH,BorderLayout.CENTER); showYear=newJTextField(""+year,6); showYear.setFont(newFont("TimesRoman",Font.BOLD,12)); showYear.setHorizontalAlignment(JTextField.CENTER); showMonth=newJTextField(""+month,4); showMonth.setFont(newFont("TimesRoman",Font.BOLD,12)); showMonth.setHorizontalAlignment(JTextField.CENTER); nextYear=newJButton("下年"); previousYear=newJButton("上年"); nextMonth=newJButton("下月"); previousMonth=newJButton("上月"); nextYear.addActionListener(this); previousYear.addActionListener(this); nextMonth.addActionListener(this); previousMonth.addActionListener(this); showYear.addActionListener(this); JPanelnorth=newJPanel(); north.add(previousYear); north.add(showYear); north.add(nextYear); north.add(previousMonth); north.add(showMonth); north.add(nextMonth); add(north,BorderLayout.NORTH); saveDailyRecord=newJButton("保存日志"); deleteDailyRecord=newJButton("删除日志"); readDailyRecord=newJButton("读取日志"); saveDailyRecord.addActionListener(this); deleteDailyRecord.addActionListener(this); readDailyRecord.addActionListener(this); JPanelpSouth=newJPanel(); pSouth.add(saveDailyRecord); pSouth.add(deleteDailyRecord); pSouth.add(readDailyRecord); add(pSouth,BorderLayout.SOUTH); setVisible(true); setBounds(0); validate(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } publicvoidactionPerformed(ActionEvente) { if(e.getSource()==nextYear) { year++; showYear.setText(""+year); calendarMessage.setYear(year); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setShowMessage(year,month,day); doMark(); } elseif(e.getSource()==previousYear) { year--; showYear.setText(""+year); calendarMessage.setYear(year); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setShowMessage(year,month,day); doMark(); } elseif(e.getSource()==nextMonth) { month++; if(month>12)month=1; showMonth.setText(""+month); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setShowMessage(year,month,day); doMark(); } elseif(e.getSource()==previousMonth) { month--; if(month<1)month=12; showMonth.setText(""+month); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setShowMessage(year,month,day); doMark(); } elseif(e.getSource()==showYear) { Strings=showYear.getText().trim(); chara[]=s.toCharArray(); booleanboo=false; for(inti=0;i { if(! (Character.isDigit(a[i]))) boo=true; } if(boo==true) JOptionPane.showMessageDialog(this,"你输入了非法年份","警告! ", JOptionPane.WARNING_MESSAGE); elseif(boo==false) year=Integer.parseInt(s); showYear.setText(""+year); calendarMessage.setYear(year); calendarPad.setCalendarMessage(calendarMessage); calendarPad.showMonthCalendar(); notePad.setShowMessage(year,month,day); doMark(); } elseif(e.getSource()==saveDailyRecord) { notePad.save(dir,year,month,day); doMark(); } elseif(e.getSource()==deleteDailyRecord) { notePad.delete(dir,year,month,day); doMark(); } elseif(e.getSource()==readDailyRecord) { notePad.read(dir,year,month,day); doMark(); } } publicvoidmousePressed(MouseEvente) { JTextFieldtext=(JTextField)e.getSource(); Stringstr=text.getText().trim(); try { day=Integer.parseInt(str); } catch(NumberFormatExceptionexp) {} calendarMessage.setDay(day); notePad.setShowMessage(year,month,day); } publi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新版 java 毕业 课程设计 报告书
![提示](https://static.bdocx.com/images/bang_tan.gif)