毕业设计动态网站基础程序设计课程设计日历记事本Java课程设计毕业论文.doc_第1页
毕业设计动态网站基础程序设计课程设计日历记事本Java课程设计毕业论文.doc_第2页
毕业设计动态网站基础程序设计课程设计日历记事本Java课程设计毕业论文.doc_第3页
毕业设计动态网站基础程序设计课程设计日历记事本Java课程设计毕业论文.doc_第4页
毕业设计动态网站基础程序设计课程设计日历记事本Java课程设计毕业论文.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

九江职业技术学院 动态网站基础程序设计课程设计动态网站基础程序设计课程设计班 级: 学 号:姓 名: 课 题:日历记事本指导教师:答辩日期:2019年12月31日一、 任务描述阐述老师布置的课题、要求、最终实现结果。(要紧密和老师沟通)设计题目:日历记事本设计要求: 1类之间的关系如图1-1所示。(添加类图)CalendarPad(主类)NotePadYearMonth图1-1 类之间的关系2java源文件及其功能如表1-1所示。表1-1 java源文件及其功能序号文件名主要功能备注1CalendarPad.java创建实用万年历记事本程序的主窗口含有main方法2NotePad.java该文件负责创建记事本3Year.java该文件负责创建管理年份的对象4Month.java该文件负责创建管理月份的类对象系统详细设计 主类CalendarPad 1成员变量成员变量描述变量类型名称年、月、日intYear,month,day保存日志的散列表Hashtablehashtable存放散列表的文件Filefile显示日期JTextFieldshowDay日历对象Calendar日历记事本对象NotePadnotepad月Month负责改变月年Year负责改变年2方法名称功能备注CalendarPad创建程序主窗口构造方法设置日历牌设置日历的年份、月份排列号码排列月份中的号码mousePressed处理MouseEvent事件接口方法mian程序开始运行记事本NotePad1成员变量描述变量类型名称文本输入区JTextAreatext保存、删除日志的按钮Button保存日志、删除日志保存日志的散列表Hashtabletable保存散列表的文件Filefile记录日志的年、月、日intyear,month,day2方法名称功能备注NotePad创建记事本对象构造方法setYear设置年份getYear获取年份setMonth设置月份getMonth获取月份setDay设置日期getDay获取日期获取日志内容获取日志内容保存日志保存日志删除日志删除日志actionPerformed处理ActionEvent事件接口方法年Year1成员变量描述变量类型名称表示年份的整数(负数表示公元前)intyear显示年份的文本条JTextFieldshowYear负责增减年份的按钮JButton明年,去年2方法名称功能备注Year创建“年”对象构造方法setYear设置年份getYear获取年份actionPerformed处理ActionEvent事件接口方法月Month1成员变量描述变量类型名称表示月份的整数(负数表示公元前)intmonth显示月份的文本条JTextFieldShowMonth负责增减月份的按钮JButton上月,下月2方法名称功能备注 Month创建“月”对象构造方法set Month 设置月份get Month 获取月份actionPerformed处理ActionEvent事件接口方法二、 任务分析针对老师的课题,谈谈为了实现课题内容,进行的分析。:日历记事本的主类(Calendar;swing;awt;awt.event;io;Hashtable):记事本 (Calendar;swing;awt;awt.event;io;swing.event;):年(javax.swing;java.awt.java.awt.event):月 (javax.swing;java.awt.java.awt.event) 三、 任务解决过程及方法源程序清单主类 CalendarPad:CalendarPad.Javaimport java.util.Calendar;import javax.swing.*;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; Month 负责改变月; 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; 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.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); 日历=Calendar.getInstance(); Box box=Box.createHorizontalBox(); box.add(负责改变年); box.add(负责改变月); 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=new JSplitPane(JSplitPane.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.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 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) 排列号码(星期几,29); 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(new Font(TimesRoman,Font.BOLD,20); else showDayi.setFont(new Font(TimesRoman,Font.BOLD,12); showDayi.setForeground(Color.black); if(i%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=星期几+月天数;i42;i+) showDayi.setText(); public int getYear() return year; public void setYear(int y) year=y; notepad.setYear(year); public int getMonth() 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) 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 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); 记事本 NotePad:NotePad.javaimport java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import javax.swing.event.*;import java.io.*;public class NotePad 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(); 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); 删除日志.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()=保存日志) 保存日志(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=day; 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; try FileInputStream inOne=new FileInputStream(file); ObjectInputStream 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=JOptionPane.showConfirmDialog(this,m,询问,JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION) text.setText(String)table.get(key); else text.setText(); else text.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,询问,JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION) try FileInputStream inOne=new FileInputStream(file); ObjectInputStream inTwo=new ObjectInputStream(inOne); table=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); table.put(key,日志内容); FileOutputStream out=new FileOutputStream(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=JOptionPane.showConfirmDialog(this,m,询问,JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(ok=JOptionPane.YES_OPTION) try FileInputStream 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=new ObjectOutputStream(out); objectOut.writeObject(table); objectOut.close(); out.close(); text.setText(null); catch(Exception ee) else String m=+year+年+month+月+day+无日志记录; JOptionPane.showMessageDialog(this,m,提示,JOptionPane.WARNING_MESSAGE); 年 Year:Year.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class Year extends Box implements ActionListener int year; JTextField showYear=null; JButton 明年,去年; CalendarPad 日历; public Year(CalendarPad 日历) super(BoxLayout.X_AXIS); showYear=new JTextField(4); showYear.setForeground(Color.blue); showYear.setFont(new Font(TimesRomn,Font.BOLD,14); this.日历=日历; year=日历.getYear(); 明年=new JButton(下年); 去年=new JButton(上年); add(去年); add(showYear); add(明年); showYear.addActionListener(this); 去年.addActionListener(this); 明年.addActionListener(this); public void setYear(int year) this.year=year; showYear.setText(+year); public int getYear() return year; public void actionPerformed(ActionEvent e) if(e.getSource()=去年) year=year-1; showYear.setText(+year); 日历.setYear(year); 日历.设置日历牌(year,日历.getMonth(); else if(e.getSource()=明年) year=year+1; showYear.setText(+year); 日历.setYear(year); 日历.设置日历牌(year,日历.getMonth(); else if(e.getSource()=showYear) try year=Integer.parseInt(showYear.getText(); showYear.setText(+year); 日历.setYear(year); 日历.设置日历牌(year,日历.getMonth(); catch(NumberFormatException ee) showYear.setText(+year); 日历.setYear(year); 日历.设置日历牌(year,日历.getMonth(); 月 Month:Month.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;public class Month extends Box implements ActionListener int month; JTextField showMonth=null; JButton 下月,上月; CalendarPad 日历; public Month(CalendarPad 日历) super(BoxLayout.X_AXIS); this.日历=日历; showMonth=new JTextField(2); month=日历.getMonth(); showMonth.setEditable(false); showMonth.setForeground(Color.blue); showMonth.setFont(new Font(TimesRomn,Font.BOLD,16); 下月=new JButton(下月); 上月=new JButton(上月); add(上月); add(showMonth); add(下月); 上月.addActionListener(this); 下月.addActionListener(this); showMonth.setText(+month); public void setMonth(int month) if(month=1) this.month=month; else this.month=1; showMonth.setText(+month); public int getMonth() return month; public void actionPerformed(ActionEvent e) if(e.getSource()=上月) if(month=2) month=month-1; 日历.setMonth(month); 日历.设置日历牌(日历.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); 日历.设置日历牌(日历.getYear(),month); else if(month=12) month=1; 日历.setMonth(month); 日历.设置日历牌(日历.getYear(),month); showMonth.setText(+month); 测试运行结果如下: 四、 总结课程设计的总结,心得,主要谈谈遇到关键问题是如何解决的,采用了什么方法,查阅了什么资料。:在这为期一周的课程设计中,我们组的课题项目为日历记事本(CalendarPad.java)作为组长的我亲自请缨担任CalendarPad.java代码的编写,我们通过netbeans软件进行项目的编写。在编写的代码的过程中我们遇到了这样那样的问题,我问询问老师,共同探讨,虽然大家java的学习并不是想象中的那么好,但是大家都在尽心尽力的来完成,特别是在最后的合并起来之后,我们发现在可视窗口的底部的文字显示部分存在很大的漏洞,我们对了几遍源代码,发现并没有出现错误,我们没有放弃。我们发现问题可能出现在了编码上,于是我们尝试着使用font.java类包进行编写改动,发现还是不行,然后我们开始考虑边框的大小问题,但是还是以失败而告终;最后我们请教了老师,发现只是netbeans这个软件不支持这个编码,问题迎刃而解。这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,而且团队之间的合作,成员之间的默契,也很重要,这将对我以后的工作形成良好的习惯。:通过一周对CalendarPad.Java的编写,该文件创建记事本,包括对记事本的输入,保存删除日志的按钮,保存日志散列表和文件,以及记录日志的年,月,日。利用java.awt类的使用。使用类创建记事本,输入文字和保存日志,对日志的年月日进行编辑,设置代码,进一步加深了对java类的认识和使用,编写java的困难,一定要认真仔细,先思考后编写,要想到使用的成员变量和使用的方法,要对编写java进行规范的编写,在编写CalendarPad.java时,充分认识到对java编写重要性,对类的如何使用。:通过一个星期对日历记事本NotePad.java部分的编写,让我了解了编写一个程序真的是很不容易,我负责的部分主要是文本输入区、保存、删除日志的按钮、保存日志的散列表、保存散列表的文件以及记录日志年、月、日这部分的实现(变量类型主要有:JTextArea、Button、Hashtable、File、int;主要方法:NotePad、setYear、getYear、setMonth、getMonth、setDay、getDay、获取日志内容、保存日志、删除日志、actionPerformed)通过java.awt;java.io等类的运用让我进一步加深了对java类的认识和使用。:通过这次的java课程设计是我对java有了更深的了解,同时也意识到自己有很多很多的不足之处,在编写程序时多次出现错误,对于java语言基础的理解还不够透彻不够仔细。不过所幸最后通过同学的指点和资料的补充最终共完成了这次的课程设计。通过这次的课程设计我深刻意识到要在以后的而学习中认真努力,多做程序,多进行

温馨提示

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

评论

0/150

提交评论