日历记事本系统课程设计_第1页
日历记事本系统课程设计_第2页
日历记事本系统课程设计_第3页
日历记事本系统课程设计_第4页
日历记事本系统课程设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 JAVA程序设计课程设计报告系另1:计算机与电子系专业班级:计算机科学与技术0801班学生姓名:杨扬指导教师:吴奕(课程设计时间:2011年6月13日2011年6月24日)华中科技大学武昌分校目录1 课程设计目的页码2 课程设计题目描述和要求 页码3课程设计报告内容 页码3.1总体设计 页码3.2详细设计 页码3.3编码实现 页码3.4系统测试 页码3.5系统运行 页码4.总结页码参考文献 页码1 课程设计目的1. 学习Java程序开发的环境搭建与配置,并且在实际运用中学习和和掌握 Java程序开发的过程2. 通过课程设计进一步掌握Java程序设计语言的基础内容,如用户图形界面 设计等3.

2、通过亲自设计,编写,调试程序来扩展知识面和动手操作能力2 课程设计题目描述和要求设计一个日历记事本.具体要求如下:1. 可以设置日历的日期2. 可以判断当前日期是否有日志记录3. 对有日志记录的日期,可以对该日期的日志记录进行修改和删除4. 对没有日志记录的日期,可以创建并保存新建的日志记录3 课程设计报告内容3.1总体设计1功能图2流程图3类图3.2详细设计表1日历记事本系统主面板与日历板模块(CalendarPad.java)类名Cale ndarPadpublic接口MouseListe nerpublic方法Cale ndarPad(i nt, in t, int) 设置日历牌(int

3、,int) 排列号码(int,int) mai n()publicpublic voidpublic voidpublic static void表2日历记事本系统年设置模块(Year.java)类名Yearpublic接口Actio nListe nerpublic方法setYear()getYear()actio nPeformed(Actio nEve nt e)public voidpublic intpublic void表3日历记事本系统月设置模块(Month.java)类名Mon thpublic接口Actio nListe nerpublic方法setM on th()getM

4、 on th()actio nPeformed(Actio nEve nt e)public voidpublic intpublic void表4日历记事本系统记事本模块(NotePad.java)类名NotePadpublic接口Actio nListe nerpublic设置信息条()public void设置文本区()public void方法获取日志内容()public void保存日志()public void删除日志()public void3.3编码实现1.日历记事本系统主面板与日历板模块(CalendarPad.java)该模块设计主要主要包含以下成员变量:年(year)月(

5、month)日(day)存放日期的表(Hashtable)存放日志的文件(File)主要方法有:创建程序主面板的构造方法(Cale ndarPad处理 ActionEvent 事件的接口方法(actionPeformed)程序开始运行的main ()方法。在具体设计过程中,首先,基本功能和组件的创建;然后,创建构造方法, 这一部分包括:为各个功能创建监听事件,创建程序主面板以及日历面板.添加关闭窗口方法;第三步分为创建监听方法,实现对各个功能模块的操作,以及鼠 标点击实现进入相应的功能面板;最后创建相应的mai n()方法。实现编码如下:import java.util.Cale ndar;i

6、mport javax.swi ng.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.Hashtable;public class CalendarPad extends JFrame implements MouseListener int year,month,day;Hashtable hashtable;File file;JTextField showDay;JLabel title; Calendar 日历 ; int 星期几 ;NotePad notepad=null;Mo

7、nth 负责改变月 ;Year 负责改变年 ;String 星期 =SUN,MON,TUE,WED,THU,FRI,SAT; 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.yea

8、r=year;this.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.

9、add(titlej);title0.setForeground(Color.red); title6.setForeground(Color.blue);for(int i=0;i42;i+)showDayi=new JTextField(); showDayi.addMouseListener(this); showDayi.setEditable(false); leftCenter.add(showDayi);日历=Cale ndar.getl nsta nce();Box box=Box.createHorizontalBox();box.add(负责改变年);box.add(负责改

10、变月);leftNorth.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=

11、new JSplitPane(JSplitPane.HORlZONTAL_SPLlT,leftPanel,rightPanel);con.add(split,BorderLayout.CENTER);con.validate();hashtable=new Hashtable();file=new File(日历记事本.txt);if(!file.exists()tryFileOutputStream out=new FileOutputStream(file);ObjectOutputStream objectOut=newObjectOutputStream(out);objectOut.

12、writeObject(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,524,285);validate();public v

13、oid 设置日历牌 (int year,int month)日历.set(year,m on th-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) 排列号码 (星期几 ,29)

14、;else排列号码 (星期几 ,28);public void 排列号码 (int 星期几 ,int 月天数 )for(int i=星期几,n=1;i星期几+月天数;i+)showDayi.setText(+n);if(n=day) showDayi.setForeground(Color.green); showDayi.setFont(newFont(TimesRoman,Font.BOLD,20);elseshowDayi.setFont(newFont(TimesRoman,Font.BOLD,12);showDayi.setForeground(Color.black); if(i%

15、7=6) showDayi.setForeground(Color.blue); if(i%7=0) showDayi.setForeground(Color.red);n+;for(int i=0;i 星期几 ;i+) showDayi.setText();for(int i= 星期几+月天数 ;ia)s E 口oe A+=)匕s .ei|s-L+eeAHeeA(a)s E 口oe A+=)匕s .ei|s(HH(onosa)6)七aUOIAIa)6Eme)sEm鋼怒 Emoe A)e a)s E 口oe A+=)lx匕s.e /volls( uold ox 山 lelluod qlunN)

16、lpleo 宀3UOIAIa)6Eme)sEm鋼怒 Emoe A)e a)s E 口oe A+=)lx匕s.e /volls-(ox匕&ee/volls)ca)sed . 62U - He A(e MollsHH(onosa)6)七 sa)3. 日历记事本系统月设置模块 (Month.java)该模块用于实现日历记事本系统中关于月的设置模块中包含的主要成员变量有用于改变月的按钮 (Jbutton 上月 下月 ),显示 月的文本框 (JTextField)模块中包含的主要方法有用于设置月的方法(setM on th),用于获取月的方法 (getMonth)和处理 ActionEvent 事件的接

17、口方法(actionPeformed等在具体设计过程中与年设置大体上相近,首先, 显示年的文本框 、按钮 ,文件 列表、区域的创建和初始化; 然后创建构造方法, 实现以上信息和组件的实体化, 下一 步实现接口监听,创建监听方法, 通过以 上方法可以 实现 年设置模块 的基本功 能实现。实现编码如下 :import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Month extends Box implements ActionListenerint month;JTextField showMonth

18、=null;JButton 下月 , 上月 ;CalendarPad 日历;public Month(CalendarPad 日历 )super(BoxLayout.X_AXIS);this. 日历 =日历;showMonth=new JTextField(2);mon th二日历.getM on th();showMonth.setEditable(false); showMonth.setForeground(Color.blue); showMonth.setFont(new Font(TimesRomn,Font.BOLD,16);下月=new JButton(” 下月); 上月 =n

19、ew JButton( 上月 );add( 上月 );add(showMonth);add( 下月 );上月 .addActionListener(this); 下月 .addActionListener(this);showMonth.setText(+month);public void setMonth(int month)if(month=1)this.month=month;elsethis.month=1;showMonth.setText(+month);public int getMonth()return month;public void actionPerformed(A

20、ctionEvent e) if(e.getSource()= 上月 ) if(month=2) month=month-1;日历.setM on th(mo nth);日历. 设置日历牌 (日历 .getYear(),month);else if(month=1)month=12;日历 .setMonth(month); 日历. 设置日历牌 (日历 .getYear(),month);showMonth.setText(+month);else if(e.getSource()=下月)if(month12)month=month+1; 日历 .setMonth(month);日历. 设置日历

21、牌 (日历 .getYear(),month);else if(month=12)month=1; 日历 .setMonth(month);日历. 设置日历牌 (日历 .getYear(),month);showMonth.setText(+month);4. 日历记事本系统记事本模块 (NotePad.java)该模块中包含的主要成员变量有文本框 (JTextArea), 按钮 (JButton 保存日 志 删除日志 ), 用于存放日志记录的文件 (File) 以及响应相关操作的信息提示 (JLabel)该模块中包含的主要方法有设置信息条 , 设置文本区 , 获取日志内容 , 保存日 志,

22、删除日志在具体设计过程中首先, 将记事本模块中的文本框、 按钮创建和初始化; 然 后创建构造方法, 实现以上信息和组件的实体化, 实现接口监听,创建监听方法, 选择日期时若记事本系统中已经存在记录,则弹出提示,询问是否查看;若不存在记录,则可以保存日志 ;对存在的日志使用删除日志功能时会弹出提示是否删 除日志 ,选是即删除日志 ,选否即可返回 .以上即实现学生基本信息模块的基本功 能实现。实现编码如下 :import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import javax.s

23、wing.event.*;import java.io.*;public class NotePad extends JPanel implements ActionListenerJTextArea text;JButton 保存日志 ,删除日志 ;Hashtable table;JLabel 信息条 ;int year,month,day;File file;CalendarPad calendar;public NotePad(CalendarPad calendar) this.calendar=calendar; year=calendar.getYear(); month=cale

24、ndar.getMonth(); day=calendar.getDay(); 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(”删除日

25、志); 保存日志 .addActionListener(this); 删除日志 .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(Actio

26、nEvent e)if(e.getSource()=保存日志)保存日志 (year,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=d

27、ay;public int getDay() return 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;tryFileInputStream inOne=new FileInputStream(file);ObjectInputStrea

28、m inTwo=new ObjectInputStream(inOne); table=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();catch(Exception ee)if(table.containsKey(key)String m=+year+年+month+月+day+这一天有日志记载,是 否查看?;int ok=JOptio nPan e.showC on firmDialog(this,m,询问,JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);i

29、f(ok=JOptionPane.YES_OPTION)text.setText(String)table.get(key);elsetext.setText();elsetext.setText( 无记录”);public void 保存日志 (int year,int month,int day)String 日志内容 =text.getText();String key=+year+month+day;String m=+year+ 年 +month+ 月 +day+ 保存日志吗 ?;int ok=JOptionPane.showConfirmDialog(this,m, 询问 ,JOp

30、tionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(ok=JOptionPane.YES_OPTION)tryFileInputStream inOne=new FileInputStream(file); ObjectInputStream inTwo=new ObjectInputStream(inOne); table=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();table.put(key,日志内容);FileOutputStream out=new Fil

31、eOutputStream(file);ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(table);objectOut.close(); out.close();catch(Exception ee)public void 删除日志 (int year,int month,int day)String key=+year+month+day;if(table.containsKey(key)String m=删除+year+年+month+月+day+日的日志吗?;int ok=J

32、Optio nPan e.showC on firmDialog(this,m,询问 ,JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION)tryFileInputStream inOne=new FileInputStream(file); ObjectInputStream inTwo=new ObjectInputStream(inOne); table=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); table.remove(key);FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=newObjectOutputStream(out);objectOut.writeObject(table);objectOut.close();out.close();text.se

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论