1、浙江科技学院Java程序课程设计日历记事本 2010级Java程序课程设计报告报告题目:基于Java的日历记事本的设计与开发学 院 : 信息与电子工程学院 专 业 : 计算机科学与技术 班 级 : 计算机102班 学 号 : 110021051 11002104、110021052 学生姓名 : 傅攀攀(组长)、 陆建浩、 刘凌阳 指导教师 : 许加兵 二一二年 一 月Java程序课程设计任务书一、主要任务与目标:1.掌握Java语言,能熟练使用Javascript,Jcreator等开发工具,2.熟悉软件分析和设计方法。3.使用所学知识开发一个基于Java的日历记事本。二、主要内容与基本要求
2、:设计GUI界面的日历记事本。系统将日历、记事本功能结合在一起,用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。1. 系统界面的左侧是日历。该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前的日历的年份减一;当鼠标左键单击“下年”按钮,当前日历年份加一。2. 该日历也可以在某年内按月前后翻动,鼠标单击“上月”按钮时,当前的日历的月份减一;当鼠标左键单击“下月”按钮,当前日历月份加一。3. 使用鼠标左键单击选定的日期,如已有记录内容,系统将弹出对话框提示该日已有记录内容,并询问用户是否用记事本显示该内容。三、开发工具:JCreator Pro、JDK、MyEclipse、UM
3、L、SQLServer2008等。四、计划进度:1 12月27日:分组确定组员,搜集资料、查阅文献,确定选题。2 12月28日-12月31日:日历记事本的需求分析,设计,功能模块完善3. 1月1日- 1月2日:基于日历记事本信息存储的数据库分析与设计4 1月3日-1月5日:主要模块程序流程图、编程实现游戏功能5 1月3日-1月5日:日历记事本调试、测试、修改与完善6 1月6日:日历记事本课程设计报告撰写7 1月6日:日历记事本课程设计报告答辩五、主要参考文献01耿祥义,张跃平.Java课程设计(第二版)M.清华大学出版社.2008年11月02 耿祥义,张跃平.Java2实用教程(第三版)M.清
4、华大学出版社.2006年8月六、小组分工傅攀攀(组长):资料汇总,撰写任务书,撰写课程设计报告,部分代码编写注释,添加部分功能,总体设计。详细设计:负责Block类,HandleImage类,HandleMove类,VerifySuccess类等代码的编写。程序运行界面与结果。陆建浩:查找资料,需求分析,部分代码编写注释,添加部分功能 详细设计:负责PuzzleGame类,Point类的代码编写。程序测试与运行界面。刘凌阳:查找资料,需求分析,部分代码编写注释,添加部分功能, 详细设计:负责PuzzlePad类的代码编写。代码检查与调试。学生(签字) 傅攀攀 陆建浩 刘凌阳 2011年12月
5、26日 指导教师 许加兵 2011年 12 月26日系统的功能模块划分与系统流程图:本日历记事本共有4个java源文件。CalendarPad.java该java文件生成的类负责创建本日历记事本程序主窗口。该类含有main方法,程序从该类开始执行。Year.java该文件负责创建管理年份的对象。Month.java该文件负责创建管理月份的类对象。NotePad.java该文件负责创建记事本。系统详细设计:主类CanlendarPad1.成员变量成员变量描述变量类型 名称年、月、日intyear,month,day保存日志的散列表Hanshtablehanshtable存放散列表的文件Filef
6、ile显示日期JtextFileshowDay日历对象Calendar日历记事本对象NotePadnotepad月Month负责改变月年Year负责改变年2.方法名称功能备注 CalendarPad创建窗口主程序构造方法设置日历牌设置日立的年份、月份排列号码排列月份中的号码mousePressed处理MouseEvent事件接口方法main程序开始运行记事本Note1、成员变量描述变量类型名称 文本输入区JTextAreatext 保存、删除日志的按钮Button保存日志、删除日志保存日志的散列表Hashtabletable保存散列表的文件Filefile记录日志的人年、月、日intyear,
7、month,day2、方法名称功能备注 NotaPad创建记事本对象构造方法 setYear设置年份getYear获取年份 setMonth设置月份 getMonth获取月份setDay设置日期getDay获取日期 获取日志内容获取日志内容 保存日志保存日志 删除日志删除日志actionPerformed处理ActionEvent事件接口方法 年Year1.成员变量描述变量类型名称表示年份的整数intyear 显示年份的文本条JtextFiledshowYear负责增减年份的按钮Jbutton明年、去年 2.方法名称功能备注Year创建年对象构造方法 setYear设置年份 getYear获取
8、年份actionPerformed处理ActionEvent事件接口方法月Month1.成员变量描述变量类型名称表示月份的整数intmonth显示月份的文本条JtextFiledshowMonth负责增减月份的按钮Jbutton下月,上月2.方法名称功能备注Month创建“月”对象构造方法SetMonth设置月份 getMonth获取月份actionPerformed处理ActionEvent接口方法程序截图:日历记事本程序代码:import java.io.*;import java.awt.*;import java.util.*;import javax.swing.*;import j
9、ava.awt.event.*;import javax.swing.event.*;import java.util.Hashtable;import java.util.Calendar; public class CalendarPad extends JFrame implements MouseListener int year,month,day; Hashtable hashtable; File file; JTextField showDay; JLabel title; Calendar 日历; int 星期几; NotePad notepad=null; Month 改变
10、月; Year 改变年; String 星期=星期日,星期一,星期二,星期三,星期四,星期五,星期六; JPanel leftPanel,rightPanel; public CalendarPad(int year,int month,int day) leftPanel=new JPanel(); JPanel leftCenter=new JPanel(); JPanel leftNorth=new JPanel(); leftCenter.setLayout(new GridLayout(7,7); rightPanel=new JPanel(); this.year=year; th
11、is.month=month; this.day=day; 改变年=new Year(this); 改变年.setYear(year); 改变月=new Month(this); 改变月.setMonth(month); title=new JLabel7; showDay=new JTextField42; for(int j=0;j7;j+) titlej=new JLabel(); titlej.setText(星期j); titlej.setBorder(BorderFactory.createRaisedBevelBorder(); leftCenter.add(titlej); t
12、itle0.setForeground(Color.red); title6.setForeground(Color.red); for(int i=0;i42;i+) showDayi=new JTextField(); showDayi.addMouseListener(this); showDayi.setEditable(false); leftCenter.add(showDayi); 日历=Calendar.getInstance(); Box box=Box.createHorizontalBox(); box.add(改变年); box.add(改变月); leftNorth.
13、add(box); leftPanel.setLayout(new BorderLayout(); leftPanel.add(leftNorth,BorderLayout.NORTH); leftPanel.add(leftCenter,BorderLayout.CENTER); leftPanel.add(new Label(请在年份输入框输入所查年份.并回车确定.), BorderLayout.SOUTH) ; leftPanel.validate(); Container con=getContentPane(); JSplitPane split=new JSplitPane(JSp
14、litPane.HORIZONTAL_SPLIT, leftPanel,rightPanel); con.add(split,BorderLayout.CENTER); con.validate(); hashtable=new Hashtable(); file=new File(日历记事本.txt); if(!file.exists() try FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeOb
15、ject(hashtable); objectOut.close(); out.close(); catch(IOException e) notepad=new NotePad(this); rightPanel.add(notepad); 设置日历牌(year,month); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); setVisible(true); setBounds(100,50,700,285); validate(); publ
16、ic void 设置日历牌(int year,int month)/设置日历牌 日历.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); else if(month=4|month=6|month=9|month=11) 排列号码(星期几,30); else if(month=2) if(year%4=0&year%100!=0)|(year%400=0) 排列号码
17、(星期几,29); else 排列号码(星期几,28); public void 排列号码(int 星期几,int 月天数)/排列号码 for(int i=星期几,n=1;i星期几+月天数;i+) showDayi.setText(+n); if(n=day) showDayi.setForeground(Color.blue); showDayi.setFont(new Font(TimesRoman,Font.BOLD,20); else showDayi.setFont(new Font(TimesRoman,Font.BOLD,12); showDayi.setForeground(C
18、olor.black); if(i%7=6) showDayi.setForeground(Color.red); if(i%7=0) showDayi.setForeground(Color.red); n+; for(int i=0;i星期几;i+) showDayi.setText(); for(int i=星期几+月天数;i42;i+) showDayi.setText(); public int getYear() return year; public void setYear(int y) year=y; notepad.setYear(year); public int get
19、Month() return month; public void setMonth(int m) month=m; notepad.setMonth(month); public int getDay() return day; public void setDay(int d) day=d; notepad.setDay(day); public Hashtable getHashtable() return hashtable; public File getFile() return file; public void mousePressed(MouseEvent e)/鼠标点击活动
20、 JTextField source=(JTextField)e.getSource(); try day=Integer.parseInt(source.getText(); notepad.setDay(day); notepad.设置信息条(year,month,day); notepad.设置文本区(null); notepad.获取日志内容(year,month,day); catch(Exception ee) public void mouseClicked(MouseEvent e) public void mouseReleased(MouseEvent e) public
21、void mouseEntered(MouseEvent e) public void mouseExited(MouseEvent e) public static void main(String args) Calendar calendar=Calendar.getInstance(); int y=calendar.get(Calendar.YEAR); int m=calendar.get(Calendar.MONTH)+1; int d=calendar.get(Calendar.DAY_OF_MONTH); new CalendarPad(y,m,d); class NoteP
22、ad extends JPanel implements ActionListener/记事本 JTextArea text; JButton 保存日志,删除日志; Hashtable table; JLabel 信息条; int year,month,day; File file; CalendarPad calendar; public NotePad(CalendarPad calendar) this.calendar=calendar; year=calendar.getYear(); month=calendar.getMonth(); day=calendar.getDay();
23、 table=calendar.getHashtable(); file=calendar.getFile(); 信息条=new JLabel(+year+年+month+月+day+日,JLabel.CENTER); 信息条.setFont(new Font(TimesRoman,Font.BOLD,16); 信息条.setForeground(Color.blue); text=new JTextArea(10,10); 保存日志=new JButton(保存日志) ; 删除日志=new JButton(删除日志) ; 保存日志.addActionListener(this); 删除日志.
24、addActionListener(this); setLayout(new BorderLayout(); JPanel pSouth=new JPanel(); add(信息条,BorderLayout.NORTH); pSouth.add(保存日志); pSouth.add(删除日志); add(pSouth,BorderLayout.SOUTH); add(new JScrollPane(text),BorderLayout.CENTER); public void actionPerformed(ActionEvent e) if(e.getSource()=保存日志) 保存日志(y
25、ear,month,day); else if(e.getSource()=删除日志) 删除日志(year,month,day); public void setYear(int year) this.year=year; public int getYear() return year; public void setMonth(int month) this.month=month; public int getMonth() return month; public void setDay(int day) this.day=day; public int getDay() return
26、 day; public void 设置信息条(int year,int month,int day) 信息条.setText(+year+年+month+月+day+日); public void 设置文本区(String s) text.setText(s); public void 获取日志内容(int year,int month,int day) String key=+year+month+day; try FileInputStream inOne=new FileInputStream(file); ObjectInputStream inTwo=new ObjectInput
27、Stream(inOne); table=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); catch(Exception ee) if(table.containsKey(key) String m=+year+年+month+月+day+有记事.确认查看?; int ok=JOptionPane.showConfirmDialog(this,m,询问,JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION) text.setText(String)table.get
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1