为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

日历记事本

2017-09-25 50页 doc 104KB 53阅读

用户头像

is_601191

暂无简介

举报
日历记事本日历记事本 淮 海 工 学 院 计算机工程学院 课程设计报告 设计名称: 选题名称: 日历记事本的设计与实现 姓名: 学号: 专业班级: 系 (院): 设计时间: 2010.6.21~2010.7.2 设计地点: 软件实验室、教室 指导教师评语: 成绩: 签名: 年 月 日 面向对象课程设计报告 第 2 页,共 47 页 1(设计要求 系统用例图如图1所示 保存日志 ** 删除日志日历显示******** 用户读取日志** 图1 系统用例图 (1) 保存日志 用例名称: 保存日志 用例说...
日历记事本
日历记事本 淮 海 工 学 院 计算机学院 课程设计 设计名称: 选题名称: 日历记事本的设计与实现 姓名: 学号: 专业班级: 系 (院): 设计时间: 2010.6.21~2010.7.2 设计地点: 软件实验室、教室 指导教师评语: 成绩: 签名: 年 月 日 面向对象课程设计报告 第 2 页,共 47 页 1(设计要求 系统用例图如图1所示 保存日志 ** 删除日志日历显示******** 用户读取日志** 图1 系统用例图 (1) 保存日志 用例名称: 保存日志 用例说明: 用于用户进行日志的保存 先决条件: 用户有在文本中编写了日志 预期结果: 在dailyRecord文件夹中生成一个文本文档,且文本文档的名称是日志的时间,且在日历上当天出现一个 图标 基本过程: ?判断当天是否已有日志: ?若已有日志,是否添加日志:添加或者不添加 ?若无日志,则直接保存。 (2)读取日志 用例名称: 读取日志 面向对象课程设计报告 第 3 页,共 47 页 用例说明: 用于用户读取日志 先决条件: 当天已经有日志存在 预期结果: 在文本区域里显示当天的日志 基本过程: 若存在日志,则读取出来;若无日志,则不读取 (3)删除日志 用例名称: 删除日志 先决条件: 当天日志已有日志 预期结果: 在dailyRecord文件夹里名字为当天时间的文本文档删除掉,在日历上当天的图标图标消失 基本过程: 若有日志则删除;若无日志则不操作 (4)日历显示 用例名称: 日历显示 预期结果: 若当天有日志,责日历上会有个图标;若当天没有日志,则没图标。 若当天保存日志,则在当天日历上增加增加一个图标;若删除日志当天则图标消失。 面向对象课程设计报告 第 4 页,共 47 页 2(总体设计 在设计日历记事本时,总体编写了7个类,CalendarNotePad.class,rilijishi.class,Calendapad.class, Clock.class,Edit.class,Imagecanvas.class,GunDong.class。其关系如下: CalendarNotePad rilijishi CalendarpadEditClockImagecanvasGunDong 图2 整体类的关系 (1) CalendarNotePad类(主类) CalendarNotePad类主要负责创建主函数。 (2) rilijishi类 rilijishi类主要负责创建日历记事本主窗口。其中有5中重要类型的对象:Calendarpad、Edit、 Clock、Imagecanvas和GundDong对象。 (3) Calendarpad类 Calendarpad类是JPane的子类,是创建rilijishiben类的重要成员之一,主要刻画日历相关的 数据。 (4) Edit类 Edit是JPanel的子类,提供了编辑、读取、保存、删除日志的功能。 (5) Imagecanvas类 Imagecanvas类是Canvas的一个子类,是创建rilijishiben类的重要成员之一,负责绘画图片。 (6) Clock类 Clock类是Canvas的一个子类,是创建rilijishiben类的重要成员之一,负责时钟以及闹铃。 (7)GunDong类 GunDong类Canvas的一个子类,是创建rilijishiben类的重要成员之一,负责滚动字幕。 面向对象课程设计报告 第 5 页,共 47 页 3(详细设计 设计系统界面,对每个类的属性和方法进行详细设计,并通过主控类连结各个逻辑功能类。为便于在课 程设计过程中小组成员分工协作,将各个类用包(可用无名包)进行逻辑组织。 (1)CalendarPadNote类 创建了主函数main()。 CalendarNotepad +main() 图3 CalendarPadNote类图 代码: public class CalendarNotePad { public static void main(String[] args) { new rilijishi(); } } (2) Rilijishi类 Rilijishi类是javax.swing包中JFrame的一个子类,并实现了ActionListener,MouseListener 接口,表明该类的主要成员变量和方法的UML图如下。 rilijishi +year : int<<接口>>+month : int面向对象课程设计报告 第 6 页,共 47 页 ActionLisenter接口1+day : int +星期几 : int +calendar:Calendar +clock:Clock +calendarpad:CalendarPad<<接口>>+edit:EditMouseListener接口2+picture:Imagecanas +icon:ImageIcon +p1:JPanel +p2:JPanel +btn1:JButton +btn2:JButton +btn3:JButton +btn4:JButton +saveFile:JButton +deleteFile:JButton +readFile:JButton +tf1:JTextField +tf2:JTextField +date:JTextField[] +menubar:JMenuBar +dir:File +sstring : string +s:String[] +str:String[] +url1:URL +backgroundmusic:AudioClip+timer:Timer +rilijishi() +doMark() : void +isHaveDailyRecord() : bool+mousePressed() : void +actionPerformed() : void 图4 日历记事本类图 1) 成员变量 ?year,month,day和星期几是int型变量,他们的值分别确定年、月、日和月第一天是星 期几。 ?calendar是Calendar对象,创建日历时间。 ?calendarpad是Calendarpad的对象,该对象可处理和显示和时间相关的数据。 ?edit是Edit的对象,具有编辑、保存、读取和删除日志的功能。 ?clock是Clock创建的对象,用来显示时钟。 ?gundong是GunDong的对象,负责创建滚动字幕。 ?btn1,btn2,btn3,btn4,saveFile,deleteFile,readFile是 JButton创建的按钮对象,名字依次为“上 年”、“下年”、“上月”、“下月”、“保存日志”、“删除日志”、“读取日志”。这些按钮都将当 前按钮注册为自己的ActionEvent事件监听。 面向对象课程设计报告 第 7 页,共 47 页 ?p1,p2是 JPane创建的对象,用来添加按钮JButton。 ?tf1,tf2;是JTextField创建的文本框,用来显示年份和月份。 ?date 数组的每个单元是JTextField类创建的对象用来显示日期和文本框。 ?menubar是JMenuBar创建的对象,用来显示滚动字幕。 ?dir是File创建的文件,用于存放每天的日志。 ?timer是javax.swing包中的类创建的计时器 ?url1是URL的对象。 ?backgroundmusic是java.applet包中类创建AudioClip的对象。 2) 方法 ?rilijishi()是构造方法,用于初始化窗口。 ?doMark()方法负责对有日志的日期做标记。 ?isHaveDailyRecord(int )判断当前日期有没有日志。 ?actionPeformed(ActionEvent)是rilijishi类实现ActionListener接口的方法。是 btn1,btn2,btn3,btn4,saveFile,deleteFile,readFile,timer事件监听器,当用户单击其中按 钮时,窗口将执行actionPeformed(ActionEvent)方法的相应操作。 ?mousePressed(MouseEvent)方法是rilijishi类实现MouseListener接口的方法。是date 数组中JTextField文本框的事件监听器。但用户在日期文本框上面按下鼠标左键时,窗 口将执行mousePressed(MouseEvent)方法的相应操作。 代码: class rilijishi extends JFrame implements ActionListener,MouseListener { int year,month,day,星期几; //year,month,day表示年,月,日 Calendar calendar; CalendarPad calendarpad; //定义类CalendarPad对象 Clock clock; //定义类Clock对象 Edit edit; //定义类Edit对象 GunDong gundong; //定义类GunDong对象 Imagecanvas picture; ImageIcon icon; 面向对象课程设计报告 第 8 页,共 47 页 JPanel p1,p2; JButton btn1,btn2,btn3,btn4; JButton saveFile,deleteFile,readFile; JTextField tf1,tf2; JTextField[] date; JMenuBar menubar; File dir; String sstring; int slength; String[] s; String[] str; URL url1; AudioClip backgroundmusic; Timer timer; Date datem; String occourTime; rilijishi() { super("日历记事本"); str=new String[10]; occourTime=new String(); gundong=new GunDong(this); dir=new File("./dialyRecord"); dir.mkdir(); //创建一个文件夹用于存放日志 calendarpad=new CalendarPad(); 面向对象课程设计报告 第 9 页,共 47 页 clock=new Clock(); edit=new Edit(); picture=new Imagecanvas(); timer=new Timer(60000,this); icon=new ImageIcon("11.jpg"); //创建一个小图标 menubar=new JMenuBar(); btn1=new JButton("上年"); btn2=new JButton("下年"); btn3=new JButton("上月"); btn4=new JButton("下月"); tf1=new JTextField(5); tf2=new JTextField(5); saveFile=new JButton("保存日志"); deleteFile=new JButton("删除日志"); readFile=new JButton("读取日志"); date=new JTextField[42]; for(int i=0;i12) { month=1; } tf2.setText(""+month); calendar.set(year,month-1,1); 星期几=calendar.get(Calendar.DAY_OF_WEEK)-1; edit.setMessage(year,month,1); calendarpad.getTime(year,month,星期几); doMark(); } if(e.getSource()==tf1) //文本框事件,更换年份 { year=Integer.parseInt(tf1.getText()); month=Integer.parseInt(tf2.getText()); calendar.set(year,month-1,1); 面向对象课程设计报告 第 14 页,共 47 页 星期几=calendar.get(Calendar.DAY_OF_WEEK)-1; edit.setMessage(year,month,1); calendarpad.getTime(year,month,星期几); doMark(); } if(e.getSource()==tf2) //文本框事件,更换月份 { year=Integer.parseInt(tf1.getText()); month=Integer.parseInt(tf2.getText()); calendar.set(year,month-1,1); 星期几=calendar.get(Calendar.DAY_OF_WEEK)-1; edit.setMessage(year,month,1); calendarpad.getTime(year,month,星期几); doMark(); } if(e.getSource()==saveFile) //按钮事件,保存日志 { edit.savefile(dir,year,month,day); doMark(); } if(e.getSource()==readFile) //按钮事件,读取日志 { edit.readfile(dir,year,month,day); sstring=edit.ta.getText().trim(); slength=sstring.length()+2; s=gundong.getStr(sstring,slength); gundong.repaint(); } if(e.getSource()==deleteFile) //按钮事件,删除日志 { 面向对象课程设计报告 第 15 页,共 47 页 edit.deletefile(dir,year,month,day); doMark(); } if(e.getSource()==timer) { int i=0; String fileName=""+year+""+month+""+day+".txt"; if(isHaveDailyRecord(day)) { try { File file=new File(dir,fileName); FileReader inOne=new FileReader(file); BufferedReader inTwo=new BufferedReader(inOne); String s; while((s=inTwo.readLine())!=null) { StringTokenizer tokenizer=new StringTokenizer(s,"#"); while(tokenizer.hasMoreTokens()) { try { str[i]=tokenizer.nextToken(); i++; } catch(Exception eex){} } } inOne.close(); inTwo.close(); 面向对象课程设计报告 第 16 页,共 47 页 } catch(IOException ex){} datem=new Date(); //获取时间 String string=datem.toString(); occourTime=string.substring(11,16); url1=getClass().getResource("3.mid"); backgroundmusic=java.applet.Applet.newAudioClip(url1); for(i=0;i>Edit类是javax.swing包JPanel的一个子类,并实现了+popup:JPopupMenuActionListener接口1ActionListener ,MouseListener,ItemListener接口,表明该类的主要成员变量和方法的UML图+cut:JMenuItem +copy:JMenuItem如下。 +paste:JMenuItem <<接口>>+message:JTextField MouseListener接口2+time:JTextField +ta:JTextArea +p1:JPanel +p2:JPanel<<接口>>+p3:JPanelItemListener接口3+list1:Choice +list2:Choice +btn:JButton +lab1:JLabel +Size[]:String +Edit() +setMessage() : void +actionPerformed() : void+itemStateChanged() : void+mouseReleased() : void+cut() : void +copy() : void +paste() : void 图6 Edit类图 +savefile() : void +deletefile() : void +readfile() : void1)成员变量 ?popup是JPopupMenu创建的对象,用来创建弹出一个菜单项。 ?cut,copy,paste是JMenuItem创建的对象,用来对文本框进行剪切,复制,粘贴功能操作。 ?message,time是JTextField创建的对象,message用来显示年,月,日。time用来操作显示 面向对象课程设计报告 第 23 页,共 47 页 事件执行的时间。 ?ta是JTextArea创建的对象,创建文本区,设置大小。 ?p1,p2,p3是JPanel创建的对象,用于添加按钮和下拉菜单。 ?list1,list2是Choise创建的对象,用来创建下拉菜单。 ?btn是JButton创建的对象,用来创建按钮。 ?lab1是JLable创建的对象,用来存放事件发生的时间。 ?Size[]是String类型的数组,用来存放字体大小。 2)方法 ?Eidt()是构造函数,用于初始化Edit类的对象。 ?setMessage(int,int,int)方法用于设置JTextField对象message上显示的内容。 ?cut()方法用于JTextArea的对像ta上文字的剪切。 ?copy()方法用于JTextArea的对像ta上文字的复制。 ?paste()方法用于JTextArea的对像ta上文字的粘贴。 ?savefile(File,int,int,int)方法用于保存日志。 ?readfile(File,int,int,int)方法用于读取日志。 ?deletefile(File,int,int,int)方法用于删除日志。 ? actionPeformed(ActionEvent)是Edit类实现ActionListener接口的方法。是cut,copy,paste, saveFile,deleteFile,readFile事件监听器,当用户单击其中按钮时,窗口将执行 actionPeformed(ActionEvent)方法的相应操作。 ?mouseReleased(MouseEvent)方法是Edit类实现MouseListener接口的方法。是date数组中 JTextArea文本的事件监听器。当用户在日期文本框上面释放鼠标右键键时,窗口将执行 mousePressed(MouseEvent)方法的相应操作。 ?ItemChanged(ItemEvent)方法是Edit类实现ItemListener接口的方法。是list1,list2的的事 件监听器。当下拉菜单的状态转变时,窗口将执行ItemChanged(ItemEvent)方法的相应操作。 代码: /* *Edit类用于进行日志的编写和显示 */ class Edit extends JPanel implements ActionListener ,MouseListener,ItemListener 面向对象课程设计报告 第 24 页,共 47 页 { JPopupMenu popup; JMenuItem cut,copy,paste; JTextField message,time; JTextArea ta; JPanel p1,p2,p3; Choice list1,list2; JButton btn; JLabel lab1; String Size[]={"5","5","6","6","7","8","9","10","11","12","14","16","18","20","24","28","32","36"}; //存 放字体大小的一位数组 Edit() { popup=new JPopupMenu(); //创建一个弹出菜单项 message=new JTextField(); message.setEditable(false); ta=new JTextArea(5,20); p1=new JPanel(); p2=new JPanel(); p3=new JPanel(); btn=new JButton("颜色"); lab1=new JLabel("事件发生时间(hh:mm):"); time=new JTextField(10); list1=new Choice(); list2=new Choice(); 面向对象课程设计报告 第 25 页,共 47 页 GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment(); //获取计算机上所有字体名 String fontname[]=ge.getAvailableFontFamilyNames(); //存放字体名的一维数组 for(int i=0;i> +secondtime:TimerActionListener接口4 +hour : int +minute : int +second : intCanvas+b : int +c : int +hourline:Line2D +minuteline:Line2D -secondline:Line2D -thread:Thread -url:URL -clip:AudioClip -piontSX[] : double -piontSY[] : double -piontMX[] : double -piontMY[] : double -piontHX[] : double -piontHY[] : double +Clock() +paint() : void +actionPerformed() : bool 图7 Clock类图 1)成员变量 ?date是Date创建的一个对象,负责封装本地时间。 ?secondTime是javax.swing包中的类创建的计时器 ?hour,minute,second是int型数据,其值分别代表“小时”,“分钟”,“秒钟”。 ?hourLine,minuteLine,secondLine是Line2D对象,分别负责绘画“时钟”,“分钟”,“秒钟” ?piontSX,piontSY是double型数组,其单元值表示秒钟的端点坐标。 ?piontMX,piontMY是double型数组,其单元值表示分钟的端点坐标。 ?piontHX,piontHY是double型数组,其单元值表示时钟的端点坐标。 ?url是URLd的对象。 ?clip是java.applet包中类创建AudioClip的对象。 面向对象课程设计报告 第 35 页,共 47 页 2)方法 ?Clock()是构造函数,用来创建clock对象。 ?paint(Graphics)方法是负责在画布上画出时钟。 ?actionPeformed(ActionEvent)是Clock类实现ActionListener接口的方法。是secondTime事件 监听器,当用户单击其中按钮时,窗口将执行actionPeformed(ActionEvent)方法的相应操作。 代码: class Clock extends Canvas implements ActionListener //刻画时钟 { Date date; Timer secondtime; int hour,minute,second; int a,b,c; Line2D hourline,minuteline,secondline; URL url; AudioClip clip; double piontSX[]=new double[60]; //用来表示秒钟端点的坐标 double piontSY[]=new double[60]; double piontMX[]=new double[60]; //用来表示分钟端点的坐标 double piontMY[]=new double[60]; double piontHX[]=new double[60]; //用来表示时钟端点的坐标 double piontHY[]=new double[60]; Clock() { secondtime=new Timer(1000,this); piontSX[0]=0; //12点秒钟坐标 piontSY[0]=-100; piontMX[0]=0; //12点分钟坐标 piontMY[0]=-90; 面向对象课程设计报告 第 36 页,共 47 页 piontHX[0]=0; //12点时钟坐标 piontHY[0]=-70; double angle=6*Math.PI/180; for(int i=0;i<59;i++) //计算出各数组中的坐标 { piontSX[i+1]=piontSX[i]*Math.cos(angle)-Math.sin(angle)*piontSY[i]; piontSY[i+1]=piontSY[i]*Math.cos(angle)+piontSX[i]*Math.sin(angle); piontMX[i+1]=piontMX[i]*Math.cos(angle)-Math.sin(angle)*piontMY[i]; piontMY[i+1]=piontMY[i]*Math.cos(angle)+piontMX[i]*Math.sin(angle); piontHX[i+1]=piontHX[i]*Math.cos(angle)-Math.sin(angle)*piontHY[i]; piontHY[i+1]=piontHY[i]*Math.cos(angle)+piontHX[i]*Math.sin(angle); } for(int i=0;i<60;i++) //坐标平移 { piontSX[i]=piontSX[i]+120; piontSY[i]=piontSY[i]+120; piontMX[i]=piontMX[i]+120; piontMY[i]=piontMY[i]+120; piontHX[i]=piontHX[i]+120; piontHY[i]=piontHY[i]+120; } secondline=new Line2D.Double(0,0,0,0); minuteline=new Line2D.Double(0,0,0,0); hourline=new Line2D.Double(0,0,0,0); secondtime.start(); } public void paint(Graphics g) { 面向对象课程设计报告 第 37 页,共 47 页 for(int i=0;i<60;i++) { int m=(int)piontSX[i]; int n=(int)piontSY[i]; if(i%5==0) { g.setColor(Color.red); g.fillOval(m-4,n-4,8,8); } else { g.setColor(Color.cyan); g.fillOval(m-2,n-2,4,4); } } g.fillOval(115,115,10,10); Graphics2D g_2d=(Graphics2D)g; //刻画秒钟 g_2d.setColor(Color.red); g_2d.draw(secondline); BasicStroke bs=new BasicStroke(3f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER); // 刻画分钟 g_2d.setStroke(bs); g_2d.setColor(Color.blue); g_2d.draw(minuteline); bs=new BasicStroke(6f,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER); //刻画时钟 g_2d.setStroke(bs); g_2d.setColor(Color.green); 面向对象课程设计报告 第 38 页,共 47 页 g_2d.draw(hourline); } public void actionPerformed(ActionEvent e) { if(e.getSource()==secondtime) { date=new Date(); String s=date.toString(); hour=Integer.parseInt(s.substring(11,13)); //获取时间中的小时 minute=Integer.parseInt(s.substring(14,16)); //获取时间中的分钟 second=Integer.parseInt(s.substring(17,19)); //获取时间中的秒钟 int h=hour%12; a=second; b=minute; c=h*5+minute/12; secondline.setLine(120,120,(int)piontSX[a],(int)piontSY[a]); minuteline.setLine(120,120,(int)piontMX[b],(int)piontMY[b]); hourline.setLine(120,120,(int)piontHX[c],(int)piontHY[c]); repaint(); if(minute==0&&second==0) //在整点时报时,想起音乐 { url=getClass().getResource("天空之城.mid"); clip=java.applet.Applet.newAudioClip(url); clip.play(); } } } } 面向对象课程设计报告 第 39 页,共 47 页 (6)Imagecanvas类 Imagecanva类是Canvas的一个子类,表明该类的主要成员变量和方法的UML图如下。 Imagecanvas Canvas+tool:Toolkit +image:Image +paint() : void +Imagecanvas() : void 图8 Imagecanvas类图 1) 成员变量 ?tool是Toolkit创建的对象,负责创建image对象。 ?image是Image对象。 2) 方法 ?Imagecanvas()是构造函数,用于创建Imagecanvas对象。 ?paint(Graphics)方法用于在画布上画出图片。 代码: class Imagecanvas extends Canvas { Toolkit tool; Image image; Imagecanvas() { setSize(200,200); tool=getToolkit(); image=tool.getImage("夏天.jpg"); } 面向对象课程设计报告 第 40 页,共 47 页 public void paint(Graphics g) { g.drawImage(image,0,0,image.getWidth(this),image.getHeight(this),this); } } (7)GunDong类 GunDong类是Canvas的一个子类,并实现了Runnable接口,表明该类的主要成员变量和方法的UML图如 下。 DunDong<<接口>> Runnable接口1+i : int +mf:rilijishi +thread:ThreadCanvas+GunDong() +paint() : void +getStr() 图9 GunDong类图 1)成员变量 ?i是int型变量,用于计数。 ?mf是类rilijishi创建的对象。 ?thread是Thread创建的线程。 2)方法 ?GunDong(rilijishi)是构造函数,创建GunDong的对象。 ?paint(Graphics)方法是负责绘画滚动字幕。 ?getStr(String ,int )方法是用于创建字符串数组。 代码: /* *GunDongk类,显示一个滚动字幕 */ class GunDong extends Canvas implements Runnable 面向对象课程设计报告 第 41 页,共 47 页 { int i=0; rilijishi mf; Thread thread; GunDong(rilijishi mf) { this.mf=mf; setSize(30,28); thread=new Thread(this); thread.start(); } public void run() { while(true) { try { thread.sleep(500); } catch(InterruptedException e){} this.repaint(100); } } public void paint(Graphics g) { Font f=new Font("",Font.BOLD,16); g.setFont(f); g.setColor(Color.RED); if(mf.s == null) return; 面向对象课程设计报告 第 42 页,共 47 页 g.drawString(mf.s[i++],10,20); i%=mf.slength; } public static String[] getStr(String s,int length) { String newstr=s; String[] slist=new String[length]; if(length>s.length()) { for(int i=0;i>+day : int+popup:JPopupMenuActionListener接口1+星期几 : int接口1+cut:JMenuItem+calendar:Calendar+copy:JMenuItem+clock:Clock+paste:JMenuItem+calendarpad:CalendarPad<<接口>>Imagecanvas+message:JTextField+edit:EditCanvasMouseListener接口2接口2+time:JTextField+tool:Toolkit+picture:Imagecanas+ta:JTextArea+image:Image+icon:ImageIcon+p1:JPanel+paint() : void+p1:JPanel+p2:JPanel+Imagecanvas() : void<<接口>>+p2:JPanel+p3:JPanelItemListener接口3+btn1:JButton+list1:Choice+btn2:JButton+list2:Choice+btn3:JButton+btn:JButton+btn4:JButton+lab1:JLabel+saveFile:JButton+Size[]:String+deleteFile:JButton+Edit()+readFile:JButtonCalendarPad+setMessage() : void+tf1:JTextField +actionPerformed() : void+MonthDay : int+tf2:JTextField +itemStateChanged() : void+星期:StringJPanel+date:JTextField[]+mouseReleased() : void+title[]:JLabel+menubar:JMenuBar+cut() : void+date[]:JTextField+dir:File+copy() : void+sstring : string+CalendarPad()+paste() : void+s:String[]+setShowDay() : void+savefile() : void+str:String[]+getTime() : void+deletefile() : void+url1:URL+readfile() : void+backgroundmusic:AudioClipClock+timer:Timer +rilijishi()+date:Date+doMark() : void+a : int+isHaveDailyRecord() : bool+backgroundAudio:BackgroundAudio+mousePressed() : void+secondtime:Timer+actionPerformed() : void+hour : int+minute : int+second : int<<接口>>+b : int接口1RunnableDunDong+c : int+i : int+hourline:Line2DCanvas+mf:rilijishi+minuteline:Line2D+thread:Thread-secondline:Line2D-thread:Thread+GunDong()-url:URL+paint() : void-clip:AudioClip+getStr()-piontSX[] : double-piontSY[] : double<<接口>>-piontMX[] : doubleActionListener接口4-piontMY[] : double-piontHX[] : double-piontHY[] : double+Clock()+paint() : void+actionPerformed() : bool 图10 整体UML类图 用户手册 本程序名为日历记事本,主要用于用户进行记事。 面向对象课程设计报告 第 45 页,共 47 页 ? 首先是日历部分,有四个按钮“上年”,“下年”,“上月”,“下月”四个按钮,按下分别表示 时间加一年,减一年,加一月,减一月,或者在文本框中输入年、月,并按下enter键,则 日历也会显示相应日期。 另外在日期上左击某一天,右边的上方的文本框会显示出当天的日期。 ? 其次是文本编辑部分,点击日历某一天后,就可以在文本区进行日志编写,文本区上的文字 可以设置字体、大小、颜色;在事件发生时间中输入这个事件发生的时间,则在那天的那个 时间,日历记事本就会响起一段音乐,提示你有事件。 ? 日志保存好了之后,日历当天就会添加一个小图标;日志删除了后,当天日历上的图标就会 消失;读取日志后,窗口会以滚动字幕的形式显示日志的内容。 ? 至于时钟,会在整点的时候播放一段音乐。 4(代码调试 面向对象课程设计报告 第 46 页,共 47 页 5. 软件发布 面向对象课程设计报告 第 47 页,共 47 页 6(课程小结
/
本文档为【日历记事本】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索