当前位置:文档之家› 重庆科技学院_java程序课程设计__日历记事本

重庆科技学院_java程序课程设计__日历记事本

Java程序设计课程设计报告日历记事本目录目录 (2)1 概述 (1)1.1 课程设计目的 (1)1.2 课程设计内容 (1)2 系统需求分析 (1)2.1 系统目标 (1)2.2 主体功能 (1)2.3 开发环境 (1)3系统概要设计 (1)3.1 系统的功能模块划分与系统流程图 (1)4系统详细设计 (2)5 测试 (4)5.1 测试方案 (4)5.2 测试结果 (4)6 小结 (6)参考文献 (8)附录 (9)附录1 源程序清单 (9)Java程序设计课程设计报告(2011)学生成绩管理系统的设计1 概述1.1 课程设计目的1)巩固和提高java编程技术。

2)培养掌握成学设计的基本思路和方法。

3)加强研发、调试程序的能力。

4)增强分析、解决问题的能力。

5)提高科技论文写作能力。

1.2 课程设计内容设计GUI界面的日历记事本。

系统将日历、记事本功能结合在一起,用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。

2 系统需求分析2.1 系统目标1. 系统界面的左侧是日历。

该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前的日历的年份减一;当鼠标左键单击“下年”按钮,当前日历年份加一。

2. 该日历也可以在某年内按月前后翻动,鼠标单击“上月”按钮时,当前的日历的月份减一;当鼠标左键单击“下月”按钮,当前日历月份加一。

3. 使用鼠标左键单击选定的日期,如已有记录内容,系统将弹出对话框提示该日已有记录内容,并询问用户是否用记事本显示该内容。

2.2 主体功能用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。

通过按按钮“上年”和“下年”对年份进行翻页。

通过按按钮“上月”和“下月”对月份进行翻页。

用户可以通过输入年份来查看自己的日志。

2.3 开发环境Windows XP;jdk1.5.0-0-05;ultraedit开发工具3系统概要设计3.1 系统的功能模块划分与系统流程图本日历记事本共有4个java源文件。

日历记事本CalendarPad.java该java文件生成的类负责创建本日历记事本程序主窗口。

该类含有main方法,程序从该类开始执行。

Year.java该文件负责创建管理年份的对象。

Month.java该文件负责创建管理月份的类对象。

NotePad.java该文件负责创建记事本。

4系统详细设计主类CanlendarPad1.成员变量成员变量描述变量类型名称年、月、日 int year,month,day保存日志的散列表 Hanshtable hanshtable存放散列表的文件 File file显示日期 JtextFile[] showDay日历对象 Calendar 日历记事本对象 NotePad notepad月 Month 负责改变月年 Year 负责改变年2.方法名称功能备注CalendarPad 创建窗口主程序构造方法设置日历牌设置日立的年份、月份排列号码排列月份中的号码mousePressed 处理MouseEvent事件接口方法main 程序开始运行Java程序设计课程设计报告(2011)记事本Note1、成员变量描述变量类型名称文本输入区 JTextArea text保存、删除日志的按钮 Button 保存日志、删除日志保存日志的散列表 Hashtable table保存散列表的文件 File file记录日志的人年、月、日 int year,month,day2、方法名称功能备注N otaPad 创建记事本对象构造方法setYear 设置年份getYear 获取年份setMonth 设置月份getMonth 获取月份setDay 设置日期getDay 获取日期获取日志内容获取日志内容保存日志保存日志删除日志删除日志actionPerformed 处理ActionEvent事件接口方法年Year1.成员变量描述变量类型名称表示年份的整数 int year显示年份的文本条 JtextFiled showYear 负责增减年份的按钮 Jbutton 明年、去年2.方法名称功能备注Year 创建年对象构造方法setYear 设置年份getYear 获取年份actionPerformed 处理ActionEvent事件接口方法日历记事本月Month1.成员变量描述变量类型名称表示月份的整数 int month显示月份的文本条 JtextFiled showMonth 负责增减月份的按钮 Jbutton 下月,上月2.方法名称功能备注Month 创建“月”对象构造方法SetMonth 设置月份getMonth 获取月份actionPerformed 处理ActionEvent 接口方法5 测试5.1 测试方案1.打开主界面,鼠标左键点击,查看日历界面。

2.选定一个日期写日志。

3.对日历添加,删除日志。

4.修改年份,查看一些日志。

5.2 测试结果1.打开主界面,鼠标左键点击,查看日历界面。

如图Java程序设计课程设计报告(2011)2.下图为选择的在2011年1月1日写的日志:3.添加删除日志,如图:添加日志:日历记事本删除日志:4.修改年份,查看日志:6 小结经过几天的努力,基本上完成了我的java课程设计,也基本上实现了我在需求分析时所预料的功能。

通过这次的课程设计,将我从课本上学到的理论知识用到了实践上,从而进一步巩固和丰富了我所学过的知识,也让我更深层次的认识了java及其功能的强大。

同时做这门课程设计也进一步加强了我的动手能力。

为了完成好这次课程设计,做了较多的准备,上网查阅了好多的相关资料,也翻阅了许多Java程序设计课程设计报告(2011)的相关的书籍。

在这些过程中也无形的锻炼了我的思维分析、遇到问题及想方设法通过各种偶那个途径解决问题的能力。

从理论到实践,在整整几天的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,所以我们一定要好好学习理论知识,为以后的实践打下良好的基础。

通过这次课程设计,我收获的不仅仅是课本上的知识的实际应用,还有编程的基本习惯和开发系统是应注意的流程。

日历记事本参考文献[1]耿祥义,张跃平. Java2实用教程(第三版)[M] . 北京:清华大学出版社, 2006[2]耿祥义. Java课程设计(第三版)[M] . 北京:清华大学出版社, 2004[3]张跃平.Java2实用教程实验指导与习题解答(第三版)[M]. 北京:清华大学出版社, 2004……附录附录1 源程序清单日历记事本的源程序代码主类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 JLabel[7];showDay=new JTextField[42];for(int j=0;j<7;j++){title[j]=new JLabel();title[j].setText(星期[j]);title[j].setBorder(BorderFactory.createRaisedBevelBorder());leftCenter.add(title[j]);}title[0].setForeground(Color.red);title[6].setForeground(Color.blue);for(int i=0;i<42;i++){showDay[i]=new JTextField();showDay[i].addMouseListener(this);showDay[i].setEditable(false);leftCenter.add(showDay[i]);}日历=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++){ showDay[i].setText(""+n);if(n==day){ showDay[i].setForeground(Color.green);showDay[i].setFont(new Font("TimesRoman",Font.BOLD,20));}else{ showDay[i].setFont(new Font("TimesRoman",Font.BOLD,12));showDay[i].setForeground(Color.black);}if(i%7==6){ showDay[i].setForeground(Color.blue);}if(i%7==0){ showDay[i].setForeground(Color.red);}n++;}for(int i=0;i<星期几;i++){ showDay[i].setText("");}for(int i=星期几+月天数;i<42;i++){ showDay[i].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<=12&&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(month<12){ month=month+1;日历.setMonth(month);日历.设置日历牌(日历.getYear(),month);}else if(month==12){ month=1;日历.setMonth(month);日历.设置日历牌(日历.getYear(),month);}showMonth.setText(""+month);}}}。

相关主题