



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java 程序设计课程设计报告XXX日历记事本专业XXX学生XXX班级XXX学号XXX指导教师XXX完成日期XXX目录1.11.1课程设计目的11.2课程设计容12系统需求分析.12.1系统目标.12.2主体功能.12.3开发环境13系统概要设计23.1系统的功能模块划分与系统流程图.24系统详细设计.25 测 试45.1测试方案.45.2测试结果.46小结.6参考文献.7附录.8附录 1 源程序清单.8日历记事本1 概述1.1 课程设计目的1) 巩固和提高 java 编程技术。2)培养掌握成学设计的基本思路和方法。3)加强研发、调试程序的能力。4)增强分析、解决问题的能力。5)提高科技论文写
2、作能力。1.2 课程设计容设计 GUI 界面的日历记事本。系统将日历、记事本功能结合在一起,用户可以方便地在任何日期记录下有关容或查看某个日期的记录容。2 系统需求分析2.1 系统目标1 系统界面的左侧是日历。该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前日历的年份减一;当鼠标左键单击“下年”按钮,当前日历的年份加一。2该日历也可以在某年按月前后翻动。当鼠标左键单击“上月”按钮时,当前日历的月份减一;当鼠标左键单击“下月”按钮时,当前日历的月份加一。3使用鼠标左键单击选定的日期,如已有记录容,系统将弹出对话框提示该日已有记录容,并询问用户是否用记事本显示该容。4用户选择具体日期后,可以
3、将记事本的当前容保存起来,形成日志。2.2 主体功能用户可以方便地在任何日期记录下有关容或查看某个日期的记录容。通过按按钮“上年”和“下年”对年份进行翻页。通过按按钮“上月”和“下月”对月份进行翻页。用户可以通过输入年份来查看自己的日志。2.3 开发环境Windows XP; ultraedit开发工具3 系统概要设计3.1 系统的功能模块划分与系统流程图本日历记事本共有4 个 java 源文件。CalendarPad.java该 java 文件生成的类负责创建本日历记事本程序主窗口。 该类含有 main 方法,程序从该类开始执行。Year.java该文件负责创建管理年份的对象。Month.j
4、ava该文件负责创建管理月份对象。NotePad.java该文件负责创建记事本。CalendarPad(主类)NotePadYearMonth4 系统详细设计主类 CalendarPad1 成员变量成员变量描述变量类型名称年、月、日intYear,month,day保存日志的散列表Hashtablehashtable存放散列表的文件Filefile显示日期JTextFieldshowDay日历对象Calendar日历记事本对象NotePadnotepad月Month负责改变月年Year负责改变年2方法名称功能备注CalendarPad创建程序主窗口构造方法设置日历牌设置日历的年份、月份排列排列
5、月份中的mousePressed处理 MouseEvent 事件接口方法mian程序开始运行记事本 NotePad1成员变量描述变量类型名称文本输入区JTextAreatext保存、删除日志的按钮Button保存日志、删除日志保存日志的散列表Hashtabletable保存散列表的文件Filefile记录日志的年、月、日intyear , month, day2方法名称功能备注NotePad创建记事本对象构造方法setYear设置年份getYear获取年份setMonth设置月份getMonth获取月份setDay设置日期getDay获取日期获取日志容获取日志容保存日志保存日志删除日志删除日志
6、actionPerformed处理 ActionEvent事件接口方法年 Year1成员变量描述变量类型名称表示年份的整数(负数表示intyear公元前)显示年份的文本条JTextFieldshowYear负责增减年份的按钮JButton明年,去年2方法名称功能备注Year创建“年”对象构造方法setYear设置年份getYear获取年份actionPerformed处理 ActionEvent事件接口方法月 Month1成员变量描述变量类型名称表示月份的整数(负数表示intmonth公元前)显示月份的文本条JTextFieldShowMonth负责增减月份的按钮JButton上月,下月2方法
7、名称功能备注Month创建“月”对象构造方法set Month设置月份get Month获取月份actionPerformed处理 ActionEvent事件接口方法5 测试5.1 测试方案1 打开主界面,鼠标左键右击,查看日历界面。2 选定一个日期写日志。3 对日历添加、删除日志。4 修改年份,查看一些日志。5.2 测试结果1 打开主界面,鼠标左键点击,查看日历界面。如图:2下图为选择在2012 年 1 月 5 日写的日志:3 添加、删除日志,如图:添加日志删除日志4 修改年份,查看日志,如图:6 小结经过几天的努力,基本上完成了我的java课程设计。通过这次的课程设计,基本上将书本上的知识
8、运用到实践上,从而进一步巩固和丰富所学知识,也让我更加深层次的认识了 java 及其功能的强大。为了更好地完成这次课程设计,我做了很多准备,上网查阅资料,到图书馆翻阅书籍。这个过程中也锻炼了我的思维分析、遇到问题及想法设法通过各种途径解决问题的能力。从理论到实践,在整整几天的时间里,可以说,是苦大于甜,但确实学到很多东西,同时不仅巩固了以前的知识,而且学到了许多书上学不到的知识。通过这次课程设计使我懂得了理论与实践相结合是很重要的,只有理论知识是不够的,只有把所学的理论知识和实践结合起来,从理论中得出结论,才能真正服务社会,从而提高自己的实际动手能力和独立思考能力。通过这次课程设计,了解到了自
9、己的不足之处,对以前的知识没有掌握到位,所以我们一定要学好理论知识,为以后的实践打下基础。总而言之,这次课程设计我学到了很多。参考文献1 耿祥义 , 跃平 . Java2 实用教程 ( 第三版 )M . :清华大学, 20062 耿祥义 . Java 课程设计 ( 第三版 )M . :清华大学, 20043 跃平 .Java2 实用教程实验指导与习题解答(第三版) M. :清华大学, 20044Jacquie Barker,Java 面向对象编程指南,电子工业,2001附录 1源程序清单主类 CalendarPad :CalendarPad 。 Javapublic class Calenda
10、rPad extends JFrame implements MouseListenerint year,month,day;Hashtable hashtable;File file;JTextField showDay;JLabel title;Calendar日历 ;int星期几 ;NotePad notepad=null;Month负责改变月 ;Year负责改变年 ;String 星期 =" 星期日 "," 星期一 "," 星期二 "," 星期三 "," 星期四 "," 星期五
11、 "," 星期六 " 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;负责改变年
12、=new Year(this);负责改变年 .setYear(year);负责改变月 =new Month(this);负责改变月 .setMonth(month);title=new JLabel7;showDay=new JTextField42;for(int j=0;j<7;j+)titlej=new JLabel();titlej.setText(星期 j);titlej.setBorder(BorderFactory.createRaisedBevelBorder();leftCenter.add(titlej);title0.setForeground(Color.red)
13、;title6.setForeground(Color.blue);for(int i=0;i<42;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(
14、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.HORIZONT
15、AL_SPLIT,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=new ObjectOutputStream(out);objectOut.writeObject(hashtabl
16、e);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,in
17、t 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)
18、;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.setForegr
19、ound(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=星期几 +月天数 ;i<42;i+) showDayi.setText("");public int getYear() return year;public void setYear(int y) year=y; no
20、tepad.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 mouse
21、Pressed(MouseEvent e) JTextField source=(JTextField)e.getSource(); tryday=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(MouseE
22、vent 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);记事本
23、 NotePad :NotePad.javapublic 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.
24、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 JTextA
25、rea(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
26、.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
27、) 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)
28、;public void获取日志容 (int year,int month,int day) String key=""+year+""+month+""+day; tryFileInputStream inOne=new FileInputStream(file); ObjectInputStream inTwo=new ObjectInputStream(inOne); table=(Hashtable)inTwo.readObject();inOne.close();inTwo.close();catch(Exception e
29、e)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(ke
30、y);else text.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=J
31、OptionPane.showConfirmDialog(this,m,"询问 ",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);if(ok=JOptionPane.YES_OPTION)tryFileInputStreaminOne=new FileInputStream(file);ObjectInputStream inTwo=new ObjectInputStream(inOne);table=(Hashtable)inTwo.readObject();inOne.close();inTwo.clos
32、e();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+
33、""+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)tryFileInputStreami
34、nOne=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);
35、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.javapublic class Year extends Box implements Ac
36、tionListener 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 JBu
37、tton(" 下年 "); 去年 =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;p
38、ublic 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);日历 .set
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论