java日历小程序课程设计
- 格式:docx
- 大小:24.62 KB
- 文档页数:3
华东交通大学理工学院课程设计报告书所属课程名称 java语言程序设计课程设计题目利用java完成日历的制作分院电信分院专业班级电商二班学号 20120410210129学生姓名方槐指导教师葛菁20 13 年12 月29 日课程设计(论文)评阅意见评阅人职称20 年月日目录第1章课程设计内容及要求. (4)第2章编写程序及结果 (5)第3章课程设计心得 (11)第4章参考文献 (12)第一章课程设计内容及要求内容一设计内容利用java程序编写我们生活中的经常使用的日历,当你想看哪个月的具体情况时,只需运行我们的程序就可以达到目的。
二要求内容利用我们所学的编写一个简单的日历表三设计原理运用课堂所学知识和上机课的练习的基础上在Java运行环境JCreaor中编写程序,还有在课外自己学的扫描仪。
四设计目的1.运用我们自学的扫描仪实现我们的操作。
2.该日历可以实现与生活中的日历一样。
3.先随机输入几年,随机输入几月,就能显示当月的天数,每一天的星期第二章编写程序及结果一程序编程Import java.util.Scanner;public class Qsr_2013{public static void main(String[] args){Scanner in=new Scanner(System.in);System.out.println("请输入月份:");int month=in.nextInt();int sum=0;for(int i=1;i<month;i++){if(i==2){if(year%4==0&&year%100!=0||year%400==0){sum+=29;}else{sum+=28;}}else{if(i==4||i==6||i==9||i==11){sum+=30;}else{sum+=31;}}}sum+=1;int wekday=sum%7;System.out.println("日\t一\t二\t三\t四\t五\t六"); for(int i=1;i<=wekday;i++){System.out.print("\t");}for(int i=1;i<=30;i++){if(sum%7==6){System.out.print(i+"\n");}else{System.out.print(i+"\t");}sum++;}}}二运行结果来两张程序截图先确定下没有错误的2013年输入月份然后运行 1月哦4月来张第三章心得通过这次课程设计,使我灵活应用所学java知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。
《动态基础程序设计》课程设计班级:学生卡:姓名:主题:日历记事本导师:答复日期:一、任务详情解释老师布置的题目、要求和最终结果。
(需与老师密切沟通)设计主题:日历记事本设计要求:1.类之间的关系如图1-1所示。
(添加类图)图 1-1 类之间的关系2、java源文件及其功能如表1-1所示。
表 1-1 java 源文件及其功能系统详细设计主类CalendarPad1.成员变量成员变量说明变量类型姓名年月日整数年、月、日用于保存日志的哈希表哈希表哈希表存储哈希表的文件文件文件演出日期JTextField[] 表演日日历对象日历日历记事本对象记事本记事本月亮月负责任的变革月年年负责改年2.方法姓名功能评论日历垫创建程序的主窗口施工方法设置日历卡设置日历的年月安排按月排序鼠标按下处理 MouseEvent 事件接口方法面程序开始运行记事本记事本1.成员变量描述变量类型姓名文字输入区文本区域文本保存和删除日志的按钮按钮保存日志,删除日志用于保存日志的哈希表哈希表桌子保存哈希表的文件文件文件日志的年月日整数年、月、日_2.方法姓名功能评论记事本创建记事本对象施工方法设置年设定年份获取年份获得年份设置月设置月份获取月份获得月份设置日设置日期获取日获取日期获取日志内容获取日志内容保存日志保存日志删除日志删除日志执行的动作处理 ActionEvent 事件接口方法年1.成员变量描述变量类型姓名整数年表示年份的整数(负数表示BC)显示年份的文本栏JTextField 演出年负责加减年份的按钮乌顿明年,去年2.方法姓名功能评论年创建一个“年份”对象施工方法设置年设定年份获取年份获得年份执行的动作处理 ActionEvent 事件接口方法月1.成员变量描述变量类型姓名整数月代表月份的整数(负数代表BC)显示月份的文本栏JTextField 秀月负责加减月份的按钮乌顿上个月,下个月2.方法姓名功能评论月创建一个“月”对象施工方法设置月份设置月份获取月份获得月份执行的动作处理 ActionEvent 事件接口方法二、任务分析针对老师的题目,说说为实现题目内容而进行的分析。
东华理工大学信息工程学院《JAVA技术应用开发》课程设计报告日历记事本******学号:************同组成员:无完成日期:2015.7.3目录1.项目概述 (2)2.需求分析 (2)3.概要设计 (3)3.1功能结构 (3)3.2布局 (3)4.详细设计及功能实现 (4)4.1结构 (4)4.2主界面 (5)4.3日历模块 (8)4.4记事本模块 (9)4.5记事列表模块 (12)4.6提醒功能 (13)5.运行测试 (15)6.总结 (19)1.项目概述日历记事本是将日历和记事本结合在一起,用户可以任意选择某一天,保存这一天需要记录的记事,或者任意查看某一天已经记录的记事。
同时还应具备提醒功能,当到达提醒时间时会自动弹出提醒。
2.需求分析日历记事本大致分为日历和记事两个部分。
①日历部分首先,需要选择日期,用户可以通过点击按钮选择前一年或后一年,同样也可以选择前一个月或后一个月,当月份为1月时,用户点击前一个月,会自动跳转到前一年的12月,同理,在12月时点击后一个月,会自动跳转到下一年的1月。
另外,当选择跨度比较大时,需要多次点击按钮,很不方便,所以需要一个下拉框,可以直接选择某一年或某一个月。
当用户改变选择日期时,日历会自动显示出这一个月的日历,并且可以通过点击某一天,来进行添加记事的操作,鼠标经过日历或点击日历时,会有不同的效果以提示用户这是可以点击的。
②记事部分首先,需要一个文本域给用户编辑记事内容,记事和日历部分所选择的日期是相关的,当用户点击日历选择某一天,则记事本上端会显示出选择的日期信息。
同时,记事应该还具有设置提醒的功能,用户点击设置提醒按钮后,会弹出一个新的对话框,用来选择提醒时间。
为保存记事,应将记事以文件的形式存储在计算机上。
另外,当用户想查看所有记事,或者想搜索某一则记事时,可以将日历部分换成一个表格,列出所有的记事,或者符合搜索结果的记事。
3.概要设计3.1功能结构日历记事本以功能划分,大致分为日历、记事列表及记事本三个部分:3.2布局软件界面的大致布局如下图,可以通过点击按钮将日历切换为记事列表4.详细设计及功能实现4.1结构①类结构②文件存储结构程序第一次运行时,会在设定的位置自动创建路径:“.../日历记事本/data/”。
Java语言与面向对象技术课程设计报告( 2013 -- 2014年度第1 学期)日历记事本专业软件工程学生姓名班级学号指导教师完成日期目录1 概述 (1)1.1 课程设计目的 (1)1.2 课程设计内容 (1)2 系统需求分析 (1)2.1 系统目标 (1)2.2 主体功能 (1)2.3 开发环境 (1)3 系统概要设计 (1)3.1 系统的功能模块划分 (1)3.2 系统流程图 (2)4系统详细设计 (2)5 测试 (5)5.1 测试方案 (11)5.2 测试结果 (12)6 小结 (14)参考文献 (15)附录 (16)附录1 源程序清单 (16)日历记事本1 概述1.1 课程设计目的1.学习Java程序开发的环境搭建与配置,并且在实际运用中学习和和掌握Java 程序开发的过程2.通过课程设计进一步掌握Java程序设计语言的基础内容,如用户图形界面设计等3.通过亲自设计,编写,调试程序来扩展知识面和动手操作能力4.加强研发、调试程序的能力;增强分析、解决问题的能力;提高科技论文写作能力1.2 课程设计内容设计GUI界面的日历记事本。
系统将日历、记事本功能结合在一起,用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。
2 系统需求分析2.1 系统目标1.系统界面的左侧是日历。
该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前的日历的年份减一;当鼠标左键单击“下年”按钮,当前日历年份加一。
2.该日历也可以在某年内按月前后翻动,鼠标单击“上月”按钮时,当前的日历的月份减一;当鼠标左键单击“下月”按钮,当前日历月份加一。
3.使用鼠标左键单击选定的日期,如已有记录内容,系统将弹出对话框提示该日已有记录内容,并询问用户是否用记事本显示该内容。
2.2 主体功能1.用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。
2.通过按按钮“上年”和“下年”对年份进行翻页;通过按按钮“上月”和“下月”对月份进行翻页。
java日历小程序简介:Java日历小程序是一个基于Java语言开发的工具,用于显示和管理日期和时间。
它提供了一种简单而直观的方式来查看、创建和编辑日历事件,并提供了一些额外的功能,如提醒、重复事件和时间段的计算等。
本文将详细介绍Java日历小程序的功能、使用方法和设计原理。
功能:1. 显示日历:Java日历小程序可以显示当前月份的日历,并以日、周或月的形式展示。
用户可以通过界面上的上下翻页按钮切换月份,方便查看不同日期的日历。
2. 创建和编辑事件:用户可以通过Java日历小程序创建新的日历事件,并为每个事件指定标题、日期、时间和地点等详细信息。
程序还提供了事件编辑功能,允许用户修改已有事件的信息。
3. 提醒功能:Java日历小程序可以设置事件的提醒功能,提醒用户在指定的时间前提醒。
用户可以选择在事件开始前几分钟、几小时或几天提醒,并可以自定义提醒方式,如弹窗、声音或邮件通知等。
4. 重复事件:用户可以为事件设置重复功能,使事件在指定的日期间隔内重复发生。
可以选择每天、每周、每月或每年重复,并可以设置重复的结束日期。
5. 时间段计算:Java日历小程序可以计算两个日期之间的时间段,如计算两个事件之间的天数、小时数或分钟数等。
用户可以选择计算方式,并获取精确的时间段结果。
使用方法:1. 下载和安装:用户可以从官方网站上下载Java日历小程序的安装包,然后按照安装向导进行安装。
安装完成后,用户可以在桌面或开始菜单中找到程序的快捷方式。
2. 打开程序:双击程序的快捷方式,Java日历小程序将启动并显示当前月份的日历。
用户可以通过界面上的按钮和菜单来使用各种功能。
3. 创建事件:用户可以点击界面上的“添加事件”按钮,弹出一个对话框,输入事件的详细信息,如标题、日期、时间和地点等。
点击“确定”按钮后,事件将被创建并显示在日历上。
4. 编辑事件:用户可以在日历上点击已有的事件,弹出一个对话框,允许用户修改事件的信息。
Java程序设计课程设计报告XXX日历记事本专业XXX学生XXX班级XXX学号XXX指导教师XXX完成日期XXX目录1概述 (1)1.1 课程设计目的 (1)1.2 课程设计容 (1)2 系统需求分析 (1)2.1 系统目标 (1)2.2 主体功能 (1)2.3开发环境 (1)3系统概要设计 (2)3.1 系统的功能模块划分与系统流程图 (2)4 系统详细设计 (2)5 测试 (4)5.1 测试方案 (4)5.2 测试结果 (4)6 小结 (6)参考文献 (7)附录 (8)附录1 源程序清单 (8)日历记事本1 概述1.1 课程设计目的1) 巩固和提高java编程技术。
2)培养掌握成学设计的基本思路和方法。
3)加强研发、调试程序的能力。
4)增强分析、解决问题的能力。
5)提高科技论文写作能力。
1.2 课程设计容设计GUI界面的日历记事本。
系统将日历、记事本功能结合在一起,用户可以方便地在任何日期记录下有关容或查看某个日期的记录容。
2 系统需求分析2.1 系统目标1.系统界面的左侧是日历。
该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前日历的年份减一;当鼠标左键单击“下年”按钮,当前日历的年份加一。
2.该日历也可以在某年按月前后翻动。
当鼠标左键单击“上月”按钮时,当前日历的月份减一;当鼠标左键单击“下月”按钮时,当前日历的月份加一。
3.使用鼠标左键单击选定的日期,如已有记录容,系统将弹出对话框提示该日已有记录容,并询问用户是否用记事本显示该容。
4.用户选择具体日期后,可以将记事本的当前容保存起来,形成日志。
2.2 主体功能用户可以方便地在任何日期记录下有关容或查看某个日期的记录容。
通过按按钮“上年”和“下年”对年份进行翻页。
通过按按钮“上月”和“下月”对月份进行翻页。
用户可以通过输入年份来查看自己的日志。
2.3 开发环境Windows XP;jdk1.5.0-0-05;ultraedit开发工具3 系统概要设计3.1 系统的功能模块划分与系统流程图本日历记事本共有4个java源文件。
Java 日历记事本课程设计报告在设计日历记事本时,需要编写6个JAVA源文件:、、、、和效果图如下. CalendarWindow 类import .*;import .*;import .*;import .*;public class CalendarWindow extends JFrameimplements ActionListener,MouseListener,FocusListener{int year,month,day;CalendarMessage calendarMessage;CalendarPad calendarPad;NotePad notePad;JTextField showYear,showMonth;JTextField[] showDay;CalendarImage calendarImage;String picturename;Clock clock;JButton nextYear,previousYear,nextMonth,previousMonth;JButton saveDailyRecord,deleteDailyRecord,readDailyRecord;JButton getPicture;File dir;Color backColor= ;public CalendarWindow(){dir=new File("./dailyRecord");();showDay=new JTextField[42];for(int i=0;i<;i++){showDay[i]=new JTextField();showDay[i].setBackground(backColor);showDay[i].setLayout(new GridLayout(3,3));showDay[i].addMouseListener(this);showDay[i].addFocusListener(this);}calendarMessage=new CalendarMessage();calendarPad=new CalendarPad();notePad=new NotePad();Calendar calendar=();(new Date());year=;month=+1; day=;(year);(month);(day);(calendarMessage);(showDay); (year,month,day);();doMark(); calendarImage=new CalendarImage();(new File(""));clock=new Clock();JSplitPane splitV1=new JSplitPane,calendarPad,calendarImage); JSplitPane splitV2=new JSplitPane,notePad,clock);JSplitPane splitH=new JSplitPane,splitV1,splitV2); add(splitH,; showYear=new JTextField(""+year,6);(new Font("TimesRoman",,12));JshowMonth=new JTextField(""+month,4); (newFont("TimesRoman",,12));JnextYear=new JButton(" 下年"); previousYear=new JButton(" 上年"); nextMonth=new JButton(" 下月"); previousMonth=new JButton(" 上月");(this);(this);(this);(this);JPanel north=new JPanel();(previousYear);(showYear);(nextYear);(previousMonth);(showMonth);(nextMonth);add(north,;saveDailyRecord=new JButton("deleteDailyRecord=new JButton("readDailyRecord=new JButton("(this);(this);(this); JPanel pSouth=new JPanel();(saveDailyRecord);(deleteDailyRecord);(readDailyRecord); add(pSouth,;getPicture=new JButton(" 选择日历图像 "); (this);(getPicture); add(pSouth,;setVisible(true); setBounds(60,60,660,480);保存日志 "); 删除日志 "); 读取日志 ");validate();setDefaultCloseOperation;}public void actionPerformed(ActionEvent e){ if()==nextYear){ year++;(""+year);(year);(calendarMessage);();(year,month,day);doMark();}else if()==previousYear){year--;(""+year);(year);(calendarMessage);();(year,month,day);doMark();}else if()==nextMonth){month++;if(month<1) month=12; (""+month);(month);(calendarMessage);();(year,month,day); doMark();}else if()==previousMonth){month--;if(month<1) month=12; (""+month);(month);(calendarMessage);();(year,month,day); doMark();}else if()==showYear){String s=().trim();char a[]=(); boolean boo=false;for(int i=0;i<;i++) if(!(a[i])))boo=true;if(boo==true)(this, " 您输入了非法年份"," 警告",;else if(boo==false) year=(s);(""+year);(year);(calendarMessage);();(year,month,day);doMark();}else if()==saveDailyRecord){(dir,year,month,day);doMark();}else if()==deleteDailyRecord){(dir,year,month,day);doMark();}else if()==readDailyRecord){(dir,year,month,day);}else if () ==getPicture ) {FileDialog fd=new FileDialog(this," 打开文件对话框");(true);String fileopen = null, filename = null;fileopen = ();filename = ();(new File(fileopen,filename));}}public void mousePressed(MouseEvent e){JTextField text=(JTextField)();String str=().trim();try{ day=(str);}catch(NumberFormatException exp){}(day);(year,month,day);}public void mouseReleased(MouseEvent e){}public void mouseEntered(MouseEvent e){}public void mouseExited(MouseEvent e){}public void mouseClicked(MouseEvent e){}public void focusGained(FocusEvent e){ Component com=(Component)();J}public void focusLost(FocusEvente){ Component com=(Component)();(backColor);}public void doMark(){for(int i=0;i<;i++){showDay[i].removeAll();String str=showDay[i].getText().trim();try{int n=(str);if(isHaveDailyRecord(n)==true){JLabel mess=new JLabel(" 有");(new Font("TimesRoman",,11));JshowDay[i].add(mess);}}catch(Exception exp){}}();();}public boolean isHaveDailyRecord(int n){String key=""+year+""+month+""+n;String [] dayFile=();boolean boo=false;for(int k=0;k<;k++){if(dayFile[k].equals(key+".txt")){ boo=true;break;}} return boo;}public String getPicture_address() {String address = null;try {InputStream outOne = new FileInputStream("");ObjectInputStream outTwo = new ObjectInputStream(outOne); try { address = (String) ();} catch (Exception ex) {}();} catch (IOException eee) {}if (address != null) {return address;} else {return "";}}public void actionPerformed1(ActionEvent e) {if ().equals(" 更改图片背景")) {FileDialog dia = new FileDialog(this, "选择图片", ;(true);(true);if (() != null) && () != null)) {try {FileOutputStream inOne = new FileOutputStream( "");ObjectOutputStream inTwo =new ObjectOutputStream(inOne);() + ());();} catch (IOException ee) {}String picturename = getPicture_address();(new File(picturename));}}}public static void main(String args[]){new CalendarWindow();}}CalendarPad 类import .*; import .*;import .*;import class CalendarPad extends JPanel{int year,month,day;CalendarMessage calendarMessage;JTextField[] showDay;JLabel title[];String[] 星期={"SUN 日","MON —","TUE 二","WED 三","THU 四","FRI 四","SAT 六"};JPanel north,center;public CalendarPad(){setLayout(new BorderLayout());north=new JPanel();(new GridLayout(1,7)); center=new JPanel();(new GridLayout(6,7)); add(center , );add(north, );title=new JLabel[7];for(int j=0;j<7;j++){title[j]=new JLabel();title[j].setFont(new Font("TimesRoman", ,12)); title[j].setText( 星期[j]);title[j].setHorizontalAlignment;title[j].setBorder());(title[j]);}title[0].setForeground;title[6].setForeground;}public void setShowDayTextField(JTextField[]text){ showDay=text;for(int i=0;i<;i++){showDay[i].setFont(new Font("TimesRoman", ,15));showDay[i].setHorizontalAlignment;showDay[i].setEditable(false);(showDay[i]);}}public void setCalendarMessage(CalendarMessage calendarMessage){=calendarMessage;}public void showMonthCalendar(){String[] a=();for(int i=0;i<42;i++)showDay[i].setText(a[i]);validate();}}CalendarMesssage 类import class CalendarMessage {int year=-1,month=-1,day=-1;public int getYear(){return year;}public void setMonth(int month){if(month<=12&&month>=1)=month;else=1;}public int getMonth(){return month;}public void setDay(int day){=day;}public int getDay(){return day ;}public String []getMonthCalendar(){String[] day=new String[42];Calendar rili =();(year, month-1,1);int 星期几= )-1;int dayAmount=0;if(month==1||month==3||month==5||month==7||month==8||month==10||m onth==12)dayAmount=31;if(month==4||month==6||month==9||month==11) dayAmount=30;if(month==2)if(((year%4==0)&&(year%100!=0)||year%400==0)) dayAmount=29;elsedayAmount=28;for(int i=0;i< 星期几;i++)day[i]="";for(int i= 星期几,n=1;i< 星期几+dayAmount;i++){day[i]=(n);n++;}for(int i= 星期几+dayAmount;i<42;i++)day[i]="";return day;}public void setYear(int year) {= year;}}NotePad 类import .*;import .*;import .*;import class NotePad extends JPanel implements ActionListener { JTextArea text;JTextField showMessage;JPopupMenu menu;JMenuItem itemCopy, itemCut, itemPaste, itemClear, btn;public NotePad() {showMessage = new JTextField();J(new Font("TimesRoman", , 16));());(false);menu = new JPopupMenu(); itemCopy = new JMenuItem(" 复制"); itemCut = new JMenuItem(" 剪切"); itemPaste = new JMenuItem(" 粘贴"); itemClear = new JMenuItem(" 清空");btn = new JMenuItem(" 字体");(this);(this);(this);(this);(this);(itemCopy);(itemCut);(itemPaste);(itemClear);(btn);text = new JTextArea(10, 10);(new MouseAdapter() {public void mousePressed(MouseEvent e) { if () ==(text, (), ());}});setLayout(new BorderLayout());add(showMessage, ;add(new JScrollPane(text), ;}public void setShowMessage(int year, int month, int day) { ("" + year + " 年" + month + " 月" + day + " 日");J(new Font(" 宋体", , 15));}public void save(File dir, int year, int month, int day) { String dailyContent = ();String fileName = "" + year + "" + month + "" + day + ".txt";String key = "" + year + "" + month + "" + day;String[] dayFile = (); boolean boo = false;for (int k = 0; k < ; k++) {if (dayFile[k].startsWith(key)) { boo = true; break;}} if (boo) {String m = "" + year + " 年" + month + " 月" + day+ " 已有日志,将新的内容添加到日志吗";int ok = (this, m, "", if (ok == {try {File f = new File(dir, fileName);RandomAccessFile out = new RandomAccessFile(f,"rw");long fileEnd = ();byte[] bb = ();(fileEnd);(bb);();} catch (IOException exp) {}}} else {String m = "" + year + "年" + month + " 月 " + day + " 日志,保存日志吗 ";int ok = (this, m, " 询问 ", if (ok == {try {File f = new File(dir, fileName);RandomAccessFile out = new RandomAccessFile(f,long fileEnd = ();byte[] bb = ();(fileEnd);(bb);();} catch (IOException exp) {} }}}public void delete(File dir, int year, int month, int day) { String key = "" + year +"" + month + "" + day; String[] dayFile = ();boolean boo = false;for (int k = 0; k < ; k++) {if (dayFile[k].startsWith(key)) {boo = true;break;}} if (boo) {String m = " 删除 " + year + " 年 " + month + " 月 " + day + " 日 的日志还没有 "rw");吗";int ok = (this, m, " 询问", if (ok == {String fileName = "" + year + "" + month + "" + day + ".txt";File deleteFile = new File(dir, fileName);();}}else {String m = "" + year + "" + month + "" + day + "";(this, m, " 提示",public void read(File dir, int year, int month, int day) {String fileName = "" + year + "" + month + "" + day + ".txt";String key = "" + year + "" + month + "" + day;String[] dayFile = ();boolean boo = false;for (int k = 0; k < ; k++) {if (dayFile[k].startsWith(key)) { boo = true;break;}} if (boo) {String m = "" + year + "" + month + "" + day + "" int ok = (this, m, " 询问", if (ok == {(null);try {File f = new File(dir, fileName);FileReader inOne = new FileReader(f);BufferedReader inTwo = new BufferedReader(inOne);String s = null;while ((s = ()) != null)(s + "\n");();();} catch (IOException exp) {}}} else {String m = "" + year + "" + month + "" + day + "";public void actionPerformed(ActionEvent e) { if () ==itemCopy)();else if () == itemCut)();else if () == itemPaste)();else if () == itemClear)(null);if () == btn) {JFontDialog nFD = new JFontDialog("(true);(true);}}}class JFontDialog extends JDialog {private static final long serialVersionUID = 1L;JList fontpolics, fontstyle, fontsize;(this, m, "提示 ",选择字体 ");JTextField fontpolict, fontstylet, fontsizet;String example;JLabel FontResolvent;JButton buttonok, buttoncancel;Font myFont;public JFontDialog(String title) {Container container = getContentPane();(new BorderLayout());JPanel panel = new JPanel();(new GridLayout(2, 1));JPanel FontSet, FontView;FontSet = new JPanel(new GridLayout(1, 4));FontView = new JPanel(new GridLayout(1, 2));example = "AaBbCcDdEe";FontResolvent = new JLabel(example, ;ListSelectionListener selectionListenernew ListSelectionListener() {public void valueChanged(ListSelectionEvent e){ if (((JList) ()).getName().equals("polic")){ ((String) ());(new Font(),().getStyle(), FontResolvent.getFont().getSize()));} }; }if (((JList) ()).getName().equals("style")) { ((String) ());(new Font().getFontName(), (),().getSize()));}if (((JList) ()).getName().equals("size")) { ((String) ());try {());} catch (Exception excepInt) {().getSize()+ "");}(new Font().getFontName(), ().getStyle(),())));}KeyListener keyListener = new KeyListener() {public void keyPressed(KeyEvent e) {if () == 10) {if (((JTextField) ()).getName().equals("polic")) {(new Font(),().getStyle(),().getSize()));}if (((JTextField) ()).getName().equals("style")) { ((String) fontstyle.getSelectedValue());(new Font().getFontName(), (),().getSize()));}if (((JTextField) ()).getName().equals("size")) { try {());} catch (Exception excepInt) {().getSize()Illi );}(new Font().getFontName(), () .getStyle(),(fontsizet .getText())));}}}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}};etLocalGraphicsEnvironment().getAllFonts();int taille = ;String[] policnames = new String[taille];for (int i = 0; i < taille; i++) {policnames[i] = fonts[i].getName();}fontpolics = new JList(policnames);("polic");(selectionListener);(6);fontpolict = new JTextField(policnames[0]);("polic");(keyListener);JScrollPane jspfontpolic = new JScrollPane(fontpolics);(new BoxLayout(Fontpolic, );(fontpolict);(jspfontpolic);import .*; import .*;public class CalendarImage extends JPanel{File imageFile;Image image;Toolkit tool;CalendarImage(){tool=getToolkit();}public void setImageFile(File f){imageFile=f;try{ image=().toURL());}catch(Exception exp){}repaint();}public void paintComponent(Graphics g){(g);int w=getBounds().width;int h=getBounds().height;(image, 0, 0, w, h, this);}}Clock 类import class Clock extends JPanelimplements ActionListener {Date date;secondTime;int hour,munite,second;Line2D secondLine,muniteLine,hourLine;Line2D m=new (0,0,0,0);Line2D s=new (0,0,0,0);int a,b,c,width,height;double pointSX[]=new double[60],pointSY[]=new double[60],pointMX[]=new double[60],pointMY[]=new double[60],pointHX[]=new double[60],pointHY[]=new double[60];Clock(){setBackground;initPoint();secondTime=new secondLine=new (0,0,0,0);muniteLine=new (0,0,0,0);hourLine=new (0,0,0,0);();}private void initPoint(){width=getBounds().width;height=getBounds().height;pointSX[0]=0;pointSY[0]=-height/2*5/6;pointMX[0]=0; pointMY[0]=-(height/2*4/5);pointHX[0]=0;pointHY[0]=-(height/2*2/3);double angle=6*180;for(int i=0;i<59;i++){pointSX[i+1]=pointSX[i]*(angle)(angle)*pointSY[i];pointSY[i+1]=pointSY[i]*(angle)+pointSX[i]*(angle);pointMX[i+1]=pointMX[i]*(angle)(angle)*pointMY[i];pointMY[i+1]=pointMY[i]*(angle)+pointMX[i]*(angle);pointHX[i+1]=pointHX[i]*(angle)(angle)*pointHY[i];pointHY[i+1]=pointHY[i]*(angle)+pointHX[i]*(angle);}for(int i=0;i<60;i++){pointSX[i]=pointSX[i]+width/2;pointSY[i]=pointSY[i]+height/2;pointMX[i]=pointMX[i]+width/2;pointMY[i]=pointMY[i]+height/2;pointHX[i]=pointHX[i]+width/2; pointHY[i]=pointHY[i]+height/2;}}public void paintComponent(Graphics g){(g);initPoint();for(int i=0;i<60;i++){int m=(int)pointSX[i];int n=(int)pointSY[i];if(i%5==0){ if(i==0||i==15||i==30||i==45){ int k=10;J(m-k/2, n-k/2, k, k);}else{int k=7;);(m-k/2, n-k/2, k, k);}}else{int k=2;J(m-k/2, n-k/2, k, k);}}(width/2-5, height/2-5, 10, 10);Graphics2D g_2d=(Graphics2D)g;J(secondLine);BasicStroke bs=new BasicStroke(2f,,;(bs);(muniteLine); bs=new BasicStroke(2f,,;(bs);J(hourLine); bs=new BasicStroke(4f,,;(bs);}public void actionPerformed(ActionEvent e){ if()==secondTime){ date=new Date();String s=(); hour=(11, 13));munite=(14, 16)); second=(17, 19));int h=hour%12; a=second; b=munite;c=h*5+munite/12;(width/2,height/2,(int)pointSX[a],(int)pointSY[a]);(width/2,height/2,(int)pointMX[b],(int)pointMY[b]);(width/2,height/2,(int)pointHX[c],(int)pointHY[c]); repaint(); if ((munite==0)&&(second==0)){} }try{File f=new File("");URI uri=();URL url=();AudioClip aau;aau=(url);();}catch(MalformedURLException ex){();}}}。
JAVA程序设计目录目录 (1)前言 (1)1需求分析 (2)2.概要设计 (3)3.各模块的功能及程序说明 (5)4.测试分析 (13)5.源程序清单 (13)6.课程设计体会 (22)前言Java的前身是Oak,它一开场只是被应用于消费性电子产品中。
后来它的开发者们发现它还可以被用于更大*围的Internet上。
1995年,Java语言的名字从Oak编程了Java。
1997年J2SE1.1发布。
1998年J2SE1.2发布,标志Java2的诞生。
十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。
Java的体系构造由Java语言、Java class、Java API、Java虚拟机组成。
它具有简单、面向对象、强健、平安、构造中立、可移植和高效能等众多优点。
Java 支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。
Java 的平台标准有Java ME,Java SE和Java EE。
Java开展到今天,它的卓越成就及在业界的地位毋庸置疑。
目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,uilder,JDeveloper和Eclipse等。
其中Java Development Kit 简称JDK是大多开发工具的根底。
以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种适宜的开发工具。
1需求分析1.1需求分析本程序的要求为:1.使用图形用户界面;2.本程序能够实现日期与星期的查询。
1.2功能设计本程序要构建的万年历程序,其功能有以下几个方面:(1)通过网页形式运行,实现图形界面。
〔2〕能以月历形式显示日期与星期。
〔3〕支持用户自己输入年份,并提供月份的下拉形式菜单来选择月份。
〔4〕通过点击“更新〞来刷新日历。
2.概要设计2.1程序设计思路1. 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。
用Java程序编写万年历程序的设计报告一、引言本文档是针对使用Java程序编写万年历程序的设计报告,旨在详细介绍该程序的设计思路和实现细节。
二、需求分析1.背景介绍在现代社会中,人们经常需要查看特定日期的日历信息。
为了方便用户直观地查看任意年月的日历信息,设计一个万年历程序,可以满足用户的需求。
2.功能需求万年历程序具备以下功能:●显示指定年月的日历信息●支持用户输入任意年月●能够高亮当前日期●具备简洁易读的界面设计3.性能需求●用户界面响应迅速,无明显卡顿●日历信息准确无误,支持闰年判断三、概要设计1.系统架构万年历程序采用MVC(Model.View.Controller)架构,将数据模型、用户界面和控制逻辑分离。
模型层:负责处理日期计算和数据存储视图层:负责展示日历信息,接收用户输入控制器层:负责协调模型层和视图层的交互2.关键模块●日历模块:负责日期计算,并提供接口给视图层调用●用户界面模块:提供用户交互界面,并接收用户输入●控制器模块:负责协调日历模块和用户界面模块四、详细设计1.日历模块设计●定义日期对象:包括年、月、日等属性●实现日期计算功能:如计算指定年月的第一天是星期几,判断某年是否为闰年等●提供接口给其他模块调用:如获取指定年月的日历信息2.用户界面设计●设计主界面:包括输入年月的文本框和显示日历信息的面板●设计按钮事件:响应用户输入的年月,调用日历模块计算并显示日历信息3.控制器设计●建立模型与视图之间的联系:将用户输入传递给日历模块,并将计算后的日历信息传递给视图层进行显示五、测试计划1.单元测试●对日历模块进行单元测试,测试日期计算功能的准确性●对用户界面模块进行单元测试,测试界面的交互和显示是否正常2.集成测试●测试控制器模块与日历模块、用户界面模块之间的功能协调是否正常六、附录1.附件●无2.法律名词及注释●无。
Java语言与面向对象技术课程设计报告( 2013 -- 2014年度第1 学期)日历记事本专业软件工程学生姓名班级学号指导教师完成日期目录1 概述 (1)1.1 课程设计目的 (1)1.2 课程设计内容 (1)2 系统需求分析 (1)2.1 系统目标 (1)2.2 主体功能 (1)2.3 开发环境 (1)3 系统概要设计 (1)3.1 系统的功能模块划分 (1)3.2 系统流程图 (2)4系统详细设计 (2)5 测试 (5)5.1 测试方案 (11)5.2 测试结果 (12)6 小结 (14)参考文献 (15)附录 (16)附录1 源程序清单 (16)日历记事本1 概述1.1 课程设计目的1.学习Java程序开发的环境搭建与配置,并且在实际运用中学习和和掌握Java 程序开发的过程2.通过课程设计进一步掌握Java程序设计语言的基础内容,如用户图形界面设计等3.通过亲自设计,编写,调试程序来扩展知识面和动手操作能力4.加强研发、调试程序的能力;增强分析、解决问题的能力;提高科技论文写作能力1.2 课程设计内容设计GUI界面的日历记事本。
系统将日历、记事本功能结合在一起,用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。
2 系统需求分析2.1 系统目标1.系统界面的左侧是日历。
该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前的日历的年份减一;当鼠标左键单击“下年”按钮,当前日历年份加一。
2.该日历也可以在某年内按月前后翻动,鼠标单击“上月”按钮时,当前的日历的月份减一;当鼠标左键单击“下月”按钮,当前日历月份加一。
3.使用鼠标左键单击选定的日期,如已有记录内容,系统将弹出对话框提示该日已有记录内容,并询问用户是否用记事本显示该内容。
2.2 主体功能1.用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。
2.通过按按钮“上年”和“下年”对年份进行翻页;通过按按钮“上月”和“下月”对月份进行翻页。
java课程设计日历记事本湖南人文科技学院计算机系2009年6月19日- 1 -::1;(1)为用户提供一个简便的日历记事本;(2)对java技术的进一步了解和简单的运用;(3)初步的接触软件工程;26月8日分析课题、分配任务;对题目进行初步分析 6月9日建立模型,完成整体设计以及功能模块分析 6月10日确立每个类的功能,完成对算法的分析 6月11日完成CalendarPad类的设计6月12日完成对Year类的设计6月13日完成对Month类的设计6月14日完成对NotePad类的设计6月15日紧系程序测试与修改6月16日完成设计,整理说明书6月19日打包发布程序设计成绩:(教师填写)指导老师:(签字)2009年月日- 2 -摘要 ..................................................................... ................................................................... - 4 - 1. 引言 ..................................................................... ...................................................................... - 5 - 2.设计目的与任务 ..................................................................... ................................................... - 5 - 3.设计方案...................................................................... ............................................................... - 6 -3.1 总体设计 ..................................................................... ................................................... - 6 -3.2设计要求 ..................................................................... .................................................... - 6 -3.3系统的主要功能...................................................................... ....................................... - 6 -3.4系统功能结构图...................................................................... ....................................... - 6 -3.5运行功能(截图) ................................................................... ..................................... - 7 -4.结束语 ..................................................................... .................................................................... - 9 - 5.致谢 ..................................................................... .................................................................... - 9 - 6.参考文献...................................................................... ............................................................. - 10 - 7.附录A:源程序 ..................................................................... .................................................... - 11 - 8附录B:编码规范 ..................................................................... ............................................. - 24 -- 3 -本课程设计通过代码实现将理论知识和具体实践相结合,巩固提高了对JAVA的相关方法与概念的理解,使学生的发散思维及动手能力进一步加强,加强对计算机及软件工程的进一步了解。
万年历 Java 课程设计报告1. 引言本文档是关于一个用 Java 编写的万年历应用程序的课程设计报告。
该应用程序可以通过输入年份和月份来打印出对应的日历。
2. 设计目的本次课程设计的主要目的是让学生运用所学的 Java 编程知识,熟悉并掌握面向对象编程的基本概念,并且能够将这些知识应用到实际的项目中。
3. 设计思路3.1 输入验证用户输入的年份和月份需要进行验证,确保其合法性。
在程序中,我们使用Scanner类来获取用户输入,并通过一系列的条件判断语句来验证输入的年份和月份是否在合理范围内。
3.2 闰年判断万年历中,2 月有时为 28 天,有时为 29 天,这取决于年份是否为闰年。
我们可以通过以下规则判断某一年是否为闰年:•若该年份能被 4 整除但不能被 100 整除,或者能被 400 整除,则该年份是闰年;•否则,该年份不是闰年。
根据这个规则,我们可以在程序中编写一个方法来判断某一年是否为闰年。
3.3 日历打印通过输入的年份和月份,我们可以计算出该月份的第一天是星期几,并据此来确定日历的布局。
在程序中,我们可以使用java.util.Calendar类来获取日期相关信息。
接下来,我们可以按照日历的布局,使用循环语句逐行打印出日历。
对于非当前月份的日期,我们可以用空格来进行占位处理。
4. 程序实现下面是一个简化版的代码示例,用于展示万年历应用程序的实现:import java.util.Calendar;import java.util.Scanner;public class CalendarApp {public static void main(String[] args) {// 获取用户输入的年份和月份Scanner scanner = new Scanner(System.in);System.out.print("请输入年份:");int year = scanner.nextInt();System.out.print("请输入月份:");int month = scanner.nextInt();// 验证输入的年份和月份是否合法if (year < 0 || month < 1 || month > 12) {System.out.println("输入的年份或月份不合法!");return;}// 创建 Calendar 对象并设置日期Calendar calendar = Calendar.getInstance();calendar.set(year, month - 1, 1);// 获取该月份的天数int daysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MON TH);// 获取该月份的第一天是星期几int firstDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);// 打印日历System.out.println("日\t一\t二\t三\t四\t五\t六");for (int i = 1; i < firstDayOfWeek - 1; i++) {System.out.print(" \t");}for (int day = 1; day <= daysInMonth; day++) {System.out.print(day + "\t");if ((firstDayOfWeek + day - 1) % 7 == 0) {System.out.println();}}}}5. 测试与运行使用以上代码,我们可以编译并运行该 Java 应用程序。
使用Java创建简单的日历应用程序-一个实战教程日历应用程序是一个有用的工具,它允许用户记录和管理事件、约会和提醒。
在这个实战博客中,我们将创建一个Java日历应用程序,演示如何使用Java编程语言和图形用户界面(GUI)库来实现事件管理和日期选择功能。
以下是本实战博客的主要内容:项目概述准备工作创建Java项目设计GUI界面实现日历视图添加事件管理功能总结让我们开始吧!1. 项目概述在本项目中,我们将创建一个简单的Java日历应用程序,它包括以下主要功能:显示日历界面,允许用户选择日期。
在日历中标记已经安排的事件和约会。
允许用户添加、编辑和删除事件。
提供事件的日期和时间提醒功能。
我们将使用Java编程语言和Swing GUI库来构建这个日历应用程序。
2. 准备工作在开始之前,确保您的开发环境已设置好。
我们将使用Java编程语言和Swing库来构建日历应用程序,不需要额外的工具或库。
3. 创建Java项目首先,创建一个新的Java项目,您可以使用任何Java集成开发环境(IDE)来完成此操作。
在项目中,我们将创建Java类来实现日历应用程序。
4. 设计GUI界面我们将创建一个简单的Swing GUI界面,用于显示日历界面和事件列表。
创建一个Java类,例如CalendarApp,并在其中创建GUI界面。
javaCopy codeimport javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Calendar;import java.util.Date;public class CalendarApp {private JFrame frame;private JPanel calendarPanel;private JPanel eventPanel;private JTextArea eventList;private JButton addButton;private JButton editButton;private JButton deleteButton;public CalendarApp() {frame = new JFrame("日历应用程序");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setSize(800, 600);frame.setLayout(new BorderLayout());calendarPanel = new JPanel(new BorderLayout());eventPanel = new JPanel(new BorderLayout());eventList = new JTextArea();eventList.setEditable(false);JScrollPane eventScrollPane = new JScrollPane(eventList);addButton = new JButton("添加事件");editButton = new JButton("编辑事件");deleteButton = new JButton("删除事件");eventPanel.add(eventScrollPane, BorderLayout.CENTER);eventPanel.add(addButton, BorderLayout.NORTH);eventPanel.add(editButton, BorderLayout.WEST);eventPanel.add(deleteButton, BorderLayout.EAST);frame.add(calendarPanel, BorderLayout.WEST);frame.add(eventPanel, BorderLayout.CENTER);addButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {addEvent();}});editButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {editEvent();}});deleteButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {deleteEvent();}});frame.setVisible(true);}public static void main(String[] args) {SwingUtilities.invokeLater(() -> new CalendarApp());}private void addEvent() {// 实现添加事件的代码,略...}private void editEvent() {// 实现编辑事件的代码,略...}private void deleteEvent() {// 实现删除事件的代码,略...}}在上述代码中,我们创建了一个CalendarApp类,包括一个Swing窗口、日历界面和事件列表。
电子与信息工程学院计算机科学与技术《JAVA程序设计》课程设计——万年历院系:电子与信息工程学院班级:计算机科学与技术2009-2姓名:马荣学号:0908*******时间:2012-6-20一、实验目标(1)使用图形用户界面:文本域,一个下拉框;一个更新按钮;表格;(2)显示某年某月日历、当前日期;(3)可查寻任意月以及任意年的日历;二、开发工具与平台jdk1.7 + Eclipse 3.2三、设计思路:1.界面设计(程序界面效果图)2.逻辑设计对于此万年历程序,首先要设计小应用程序查看器的界面,总体界面有文本域,一个更新按钮,表格显示万年历。
文本域和下拉框放置在NORTH,然后后面是更新按钮。
然后是下方是表格,界面设计完成。
首先明确该实验设计的要求实现的基本功能,其次设计布局,将空间划分为由行和列组成的表格,表格大小相同,便于观看。
3. 逻辑流程图如下:程序主要完成日期查询功能,流程图展示的是万年历的日期查询过程,并不是程序设计的过程。
图1 万年历设计逻辑流程图4. 类层次结构● CalendarApplet 用于界面布局设计,继承Applet ; ● 使用事件Action 得到查询的年、月份;四、代码展示 1. 主要代码段1)这段代码主要是对程序的主框架进行相应的设置。
public class CalendarApplet extends Applet{ static final int TOP = 70; //顶端距离static final int CELLWIDTH =50,CELLHEIGHT = 30; //单元格尺寸 static final int MARGIN = 3; //边界距离 static final int FEBRUARY = 1;TextField tfYear = new TextField("2004", 5); //显示年份的文本域 Choice monthChoice = new Choice(); //月份选择下拉框 Button btUpdate = new Button("更新"); //更新按钮GregorianCalendar calendar=new GregorianCalendar(); //日历对象 Font smallFont = new Font("TimesRoman", Font.PLAIN , 15); //显示小字体Font bigFont = new Font("TimesRoman", Font.BOLD , 50); //显示大字体开始进入主界面输入年份输入月份更新 显示结果String days[] = {"星期日", "星期一", "星期二", "星期三","星期四", "星期五", "星期六"};String months[] = {"一月", "二月", "三月", "四月","五月", "六月", "七月", "八月", "九月","十月", "十一月", "十二月"};int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //每个月的天数int searchMonth,searchYear; //查询的年份及月份public void init(){setBackground(Color.white); //设置背景颜色searchMonth = calendar.get(Calendar.MONTH); //得到系统年份searchYear = calendar.get(Calendar.YEAR); //得到系统月份add(new Label(" 年:")); //增加组件到ApplettfYear.setText(String.valueOf(searchYear)); //设置文本域文字add(tfYear);add(new Label(" 月:"));monthChoice.setFont(smallFont); //设置月份选择下拉框的显示字体for (int i = 0; i < 12; i++) {m onthChoice.addItem(months[i]); //增加下拉框选项}monthChoice.select(searchMonth); //设置下拉框当前选择项add(monthChoice);add(btUpdate);int componentCount=this.getComponentCount(); //得到Applet中的组件数量for (int i=0;i<componentCount;i++){g etComponent(i).setFont(smallFont); //设置所有组件的显示字体}}2)这段代码是程序如何进行年份、月份的查询private int getNumberRows(int year, int month) { //得到行数量int firstDay;int numCells;if (year < 1582) { //年份小于1582年,则返回-1return (-1);}if ((month < 0) || (month > 11)) {return (-1);}firstDay = getFirstDayOfMonth(year, month); //计算月份的第一天if ((month == FEBRUARY) && (firstDay == 0)&& !calendar.isLeapYear(year)) {return 4;}numCells = firstDay + daysInMonth[month];if ((month == FEBRUARY) && (calendar.isLeapYear(year))) { numCells++;}return ((numCells <= 35) ? 5 : 6); //返回行数}private int getFirstDayOfMonth(int year, int month) { //得到每月的第一天int firstDay;int i;if (year < 1582) { //年份小于1582年,返回-1return (-1);}if ((month < 0) || (month > 11)) { //月份数错误,返回-1return (-1);}firstDay = getFirstDayOfYear(year); //得到每年的第一天for (i = 0; i < month; i++) {firstDay += daysInMonth[i]; //计算每月的第一天}if ((month > FEBRUARY) && calendar.isLeapYear(year)) {firstDay++;}return (firstDay % 7);}private int getFirstDayOfYear(int year){ //计算每年的第一天int leapYears;int hundreds;int fourHundreds;int first;if (year < 1582) { //如果年份小于1582年return (-1); //返回-1}leapYears = (year - 1581) / 4;hundreds = (year - 1501) / 100;leapYears -= hundreds;fourHundreds = (year - 1201) / 400;leapYears += fourHundreds;first=5 + (year - 1582) + leapYears % 7; //得到每年第一天return first;}}3)得到结果并同步更新public boolean action(Event e, Object o){int searchYearInt;if (e.target==btUpdate){searchMonth = monthChoice.getSelectedIndex(); //得到查询月份searchYearInt = Integer.parseInt(tfYear.getText(), 10); //得到查询年份if (searchYearInt > 1581) {searchYear = searchYearInt;}repaint(); //重绘屏幕return true;}return false;}五、课程设计总结在做本作业的时候,遇到了很多问题,比如如何使日期保持同步一致。
兰州商学院陇桥学院工学系课程设计报告课程名称:JAVA课程设计设计题目:日历记事本系别:工学系专业 (方向):计算机科学与技术(网络工程方向)年级班:2012级学生姓名:XXX学生学号:*********XX*******2014年6月25日目录一、系统开发的背景 (1)二、系统分析与设计 (1)(一)系统功能要求 (1)(二)系统模块结构设计 (1)三、系统的设计与实现 (3)(一)主类C ALENDAR P AD (3)(二)记事本N OTE P AD (3)(三)年Y EAR (4)(四)月M ONTH (4)四、系统测试 (5)(一)系统主窗口 (5)(二)查看日历功能 (5)(三)添加文本界面 (6)(四)查看日志界面 (7)(五)删除日志界面 (8)五、总结 (9)六、附件(代码、部分图表) (10)日历记事本一、系统开发的背景随着社会的发展,越来越多的人依靠电子产品生活,而他们的日常工作也是离不开这些电子产品的,所以开发出一款日历备忘录就显得必不可少了。
日历记事本可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。
通过按按钮“上年”和“下年”对年份进行翻页。
通过按按钮“上月”和“下月”对月份进行翻页。
用户可以通过输入年份来查看自己的日志,用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。
二、系统分析与设计(一)系统功能要求要求:带有日程提醒功能的日历。
1、显示信息:用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月的日期。
2、定时提醒:用户可以针对某一天来添加,删除和编辑这一天的日程提醒信息,当系统时间和提醒时间相吻合时,给出具有提示信息的对话框。
3、查询信息:用户可以查询到某个月的所有的提示信息。
(二)系统模块结构设计通过对该题目功能的分析,日历记事本类之间的关系及流程图如图1、图2所示。
CalendarPad(主类)NotePad Year Month图1 类之间的关系图2 程序流程图Java源文件及其功能如下:1.CalendarPad.java 创建实用日历记事本程序的主窗口,含有main方法;2.NotePad.java 该文件负责创建记事本;3.Year.Java 该文件负责管理创建年份的对象;4.Month.Java 该文件负责管理创建月份的对象三、系统的设计与实现(一)主类CalendarPad 1.成员变量2.成员方法(二)记事本NotePad 1.成员变量2.成员方法(三)年Year 1.成员变量2.成员方法(四)月Month 1.成员变量2.成员方法四、系统测试(一)系统主窗口使用eclipse软件运行该系统后,即可进入日历记事本程序的主窗口,绿色较大号的字体为当日日期。
万年历java课程设计报告一、课程目标知识目标:1. 让学生掌握Java语言中日期处理的基本知识,理解万年历的原理和实现方式;2. 使学生了解并运用面向对象编程思想,设计合理的类和对象,实现万年历功能;3. 帮助学生理解数组、循环、条件判断等基础语法在万年历项目中的应用。
技能目标:1. 培养学生运用Java语言编写程序解决实际问题的能力,特别是日期计算和处理;2. 培养学生运用面向对象编程思想,进行模块化设计和编程;3. 培养学生运用调试工具和技巧,找出并解决程序中的错误。
情感态度价值观目标:1. 培养学生积极探究、合作学习的态度,增强团队协作能力;2. 培养学生面对编程困难时,勇于挑战、持续改进的精神;3. 增强学生的创新意识,激发对计算机编程的兴趣和热情。
课程性质:本课程为计算机科学与技术专业的Java语言程序设计课程的一部分,旨在通过实际项目万年历的设计与实现,使学生掌握Java编程的基本知识和技能。
学生特点:学生处于高中年级,已经具备一定的编程基础,对Java语言有一定的了解,但对于面向对象编程和实际项目开发的经验较少。
教学要求:结合学生特点,本课程要求教师采用任务驱动的教学方法,将万年历项目拆解为多个小任务,引导学生逐步完成。
在教学过程中,注重理论与实践相结合,强调学生的实际操作和团队协作。
通过课程学习,使学生在掌握知识技能的同时,培养良好的情感态度和价值观。
最终将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. Java语言基础复习:回顾变量、数据类型、运算符、数组等基本概念,为编写万年历程序打下基础。
教材章节:第一章至第三章。
2. Java控制结构:介绍循环结构(for、while)、条件判断(if、switch)等,用于实现日期计算。
教材章节:第四章。
3. 面向对象编程基础:讲解类、对象、构造方法、封装等概念,指导学生设计万年历类。
教材章节:第五章。
4. Java异常处理:学习异常处理机制,提高程序的稳定性和可靠性。
电子日历记事本--Java课程设计(总26页)
--本页仅作为文档封面,使用时请直接删除即可-- --内页可以根据需求调整合适字体及大小-- 《 面向对象程序设计》 课程设计报告
题 目: 电子日历记事本的设计 院 (系): 信息科学与工程学院 专业班级: 计算机科学与技术1201班 学生姓名: 程伟 学 号: 011 指导教师: 吴奕
20 14 年 12 月 29 日至20 15 年 1 月 9 日 华中科技大学武昌分校制 面向对象程序设计 课程设计任务书 一、设计(调查报告/论文)题目 电子日历记事本的设计
二、设计(调查报告/论文)主要内容 内容: 设计GUI界面的日历记事本,系统将记事本与日历相结合,可在任何时间记载编辑或查看相关内容日志,系统可实现基本的辅助办公与行政管理。
基本功能与要求: ①设计记事本编辑器程序,所有编辑功能可以在菜单栏中选择,包括编辑、保存、打开、剪切、复制等操作,能打开和显示已存在的文本文件,界面设计要求采用类组件实现。 ②设计日历系统,要求用图形用户界面实现,用户可以方便地在任何日期编辑有关内容以及查看某个日期记载的内容。日历可以按年/月前后翻动,当鼠标单击“上一年/上一月”按钮时,当前日历的年份/月份将减一;当鼠标左键单击“下一年/下一月”按钮,当前日历的年份/月份将加一。 ③使用鼠标左键在要选择的日期上单击,如有记事内容,程序将弹出对话框提示用户是否用记事本显示该内容或编辑新内容,同时可将记事本的新内容保存起来,形成一个日志供用户日后使用。 ④设计用户密码功能或对信息内容加密,提高系统的安全性。
三、原始资料 1.《面向对象程序设计课程设计》指导书 2. 耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.
四、要求的设计(调查/论文)成果 1.课程设计报告 2.课程设计软件 五、进程安排 布置任务,查找资料、需求分析1天 总体设计1天 详细设计天 编制源程序实现天 测试与修改1天 撰写课设报告2天
软件学院课程设计报告书课程名称《面向对象程序设计》课程设计设计题目 java日历专业班级学号姓名指导教师徐娇月2011 年12 月目录1 设计时间 (3)2 设计目的 (3)3设计任务 (3)4 设计内容 (3)4.1概念设计 (3)4.1.1 系统功能图 (3)4.1.2 需求分析 (4)4.1.3设计思路 (6)4.2详细设计 (7)4.2.1类设计 (7)4.2.2界面设计 (7)4.2.3功能实现 (9)4.3运行调试与分析讨论 (12)4.3.1运行结果和分析 (12)4.3.2改进想法 (13)5 总结与展望 (14)参考文献 (15)成绩评定 (15)1 设计时间2011年12月19日—2011年12月22日2 设计目的面向对象程序设计是学习完《Java 6 程序设计》课程之后,进行的一次全面的综合性练习,是学习完理论课程之后的必要的集中实践环节。
面向对象程序设计的课程设计的目的在于是提高学生对所学知识综合应用能力的一种方式,要求我们对理论课中所学习到的知识综合运用,实现有一定规模的Java 应用。
此次课程设计也为我们将来的毕业设计和具体工作实践奠定了坚实的基础。
3设计任务Java 日历设计一个java 日历,要求用java 编写简单日历,只需要输入年、月就可打印出对应月的日历。
要求有简单的用户界面。
4 设计内容4.1概念设计4.1.1 系统功能图该系统主要实现的功能如图一所示:图一万年历系统查询指定年份日历查询指定月份日历查询相邻年份日历选择其他日期查看今日查询相邻月份日历显示日期1、当用户需要查询指定年月的日历时,用户将选择框内年月改变,系统获取信息并设置月历,具体流程如图二所示:图二2、用户用鼠标点击选择一个日期后,系统可用蓝色方框框住该日期,表示系统已选择该日,具体流程如图三所示:图三4.1.2 需求分析对于万年历系统,其主要功能是:查看当日日期(年、月、日)、查看当时时间、查看其他年月的月历、对选中的日期进行标识。
Java课程设计报告——桌面日历目录一、需求分析 (2)二、概要设计 (3)三、详细设计 (4)四、调试分析 (9)五、用户说明 (9)六、运行结果 (10)七、附录 (10)一、需求分析选题意义:自上世纪以来,随着电脑的逐渐普及,人们的工作和生活越来越方便和快捷,也使越来越多的人依赖于电脑办公。
而传统的日历记事本显现出在当今时代的不足和局限性,比如不便携带、不便查找、不能自动提醒等等,电脑桌面日历由此孕育而生。
本设计就是针对当前网络上众多的桌面日历,综合其各项基本功能来开发一套属于自己的个性化日历系统。
本设计主要采用NetBeans开发平台,通过java语言来实现记事,日期查询以及日志提醒等工作。
为客户带来方便,同时系统的阐述开发采用的过程及方法。
功能实现:1、通过标签类jLabel显示日、月,程序主体框架。
2、通过按钮类jPanelButton,▲和▼调整年份通过代码“\u25C4”和“"\u25BA"”调整月份。
3、添加鼠标事件,键盘事件,分别可以通过按钮和键盘输入调整显示日期。
4、程序通过读取计算机当前日期,显示当前日期二、概要设计1、取得月份天数private JToggleButton cur=null;//月份天数数组,用来取得当月有多少天// 1 2 3 4 5 6 7 8 9 10 11 12private int[] mm={31,28,31,30,31,30,31,31,30,31,30,31}; //空日期构造函数2、带日期设置的构造函数public JCalendar() {try {jbInit();}catch(Exception e) {e.printStackTrace();}}//带日期设置的构造函数3、带日历输入的构造函数public JCalendar(int year, int month, int day) {cal.set(year, month, day);try {jbInit();}catch (Exception e) {e.printStackTrace();}}//带日历输入的构造函数4、带日期输入的构造函数public JCalendar(GregorianCalendar calendar) {cal=calendar;try {jbInit();}catch (Exception e) {e.printStackTrace();}}//带日期输入的构造函数5、初始化组件public JCalendar(Date date) {cal.setTime(date);try {jbInit();}catch (Exception e) {e.printStackTrace();}}//初始化组件三、详细设计部分代码void jPanelButtonComponentResized(ponentEvent evt){ YearUp.setLocation(0,0);YearDown.setLocation(0,YearUp.getHeight());jPanelButton.setSize(YearUp.getWidth(),YearUp.getHeight()*2); jPanelButton.setPreferredSize(newDimension(YearUp.getWidth(),YearUp.getHeight()*2));jPanelButton.updateUI();}//测试用public static void main(String[] args){JFrame f=new JFrame();f.setContentPane(new JCalendar());f.pack();//f.setResizable(false);f.show();}//增加年份void YearUp_actionPerformed(ActionEvent e) {year++;showYear();showDate();showDays();}//减少年份void YearDown_actionPerformed(ActionEvent e) {year--;showYear();showDate();showDays();}//减少月份void MonthDown_actionPerformed(ActionEvent e) {month--;if(month<0) {month = 11;year--;showYear();}showMonth();showDate();showDays();}//增加月份void MonthUp_actionPerformed(ActionEvent e) {month++;if(month==12) {month=0;year++;showYear();}showMonth();showDate();showDays();}//初始化年月日void iniCalender(){year=cal.get(Calendar.YEAR);month=cal.get(Calendar.MONTH);day=cal.get(Calendar.DAY_OF_MONTH);}//刷新月份void showMonth(){Month.setText(Integer.toString(month+1)+"月");}//刷新年份void showYear(){Year.setText(Integer.toString(year)+"年");}//刷新日期void showDate(){Out.setText(Integer.toString(year)+"-"+Integer.toString(month+1)+"-"+In teger.toString(day));}//重画天数选择面板void showDays() {cal.set(year,month,1);int firstDayOfWeek = cal.get(Calendar.DAY_OF_WEEK); int n=mm[month];if(cal.isLeapYear(year)&&month==1) n++;int i=0;for(;i<firstDayOfWeek-1;i++){days[i].setEnabled(false);days[i].setSelected(false);days[i].setText("");}int d=1;for(;d<=n;d++){days[i].setText(Integer.toString(d));days[i].setEnabled(true);if(d==day) days[i].setSelected(true);else days[i].setSelected(false);;i++;}for(;i<42;i++){days[i].setEnabled(false);days[i].setSelected(false);days[i].setText("");}}//单击年份面板选择整个年份字符串void SelectionYear(){Year.setSelectionStart(0);Year.setSelectionEnd(Year.getText().length());}//单击月份面板选择整个月份字符串void SelectionMonth(){Month.setSelectionStart(0);Month.setSelectionEnd(Month.getText().length());}//月份面板响应鼠标单击事件void Month_mouseClicked(MouseEvent e) {//SelectionMonth();inputMonth();}//检验输入的月份void inputMonth(){String s;if(Month.getText().endsWith("月")){s=Month.getText().substring(0,Month.getText().length()-1); }else s=Month.getText();month=Integer.parseInt(s)-1;this.showMe();}//月份面板键盘敲击事件响应void Month_keyPressed(KeyEvent e) {if(e.getKeyChar()==10)inputMonth();}//年份面板响应鼠标单击事件void Year_mouseClicked(MouseEvent e) {//SelectionYear();inputYear();}//年份键盘敲击事件响应void Year_keyPressed(KeyEvent e) {//System.out.print(new Integer(e.getKeyChar()).byteValue()); if(e.getKeyChar()==10)inputYear();}//检验输入的年份字符串void inputYear() {String s;if(Year.getText().endsWith("年")){s=Year.getText().substring(0,Year.getText().length()-1);}else s=Year.getText();year=Integer.parseInt(s);this.showMe();}//以字符串形式返回日期,yyyy-mm-ddpublic String getDate(){return Out.getText();}//以字符串形式输入日期,yyyy-mm-ddpublic void setDate(String date){if(date!=null){StringTokenizer f = new StringTokenizer(date, "-");if(f.hasMoreTokens())year = Integer.parseInt(f.nextToken());if(f.hasMoreTokens())month = Integer.parseInt(f.nextToken());if(f.hasMoreTokens())day = Integer.parseInt(f.nextToken());cal.set(year,month,day);}this.showMe();}//以日期对象形式输入日期public void setTime(Date date){cal.setTime(date);this.iniCalender();this.showMe();}//返回日期对象public Date getTime(){return cal.getTime();} //返回当前的日public int getDay() {return day;}//设置当前的日public void setDay(int day) {this.day = day;cal.set(this.year,this.month,this.day); this.showMe();}//设置当前的年public void setYear(int year) {this.year = year;cal.set(this.year,this.month,this.day); this.showMe();}//返回当前的年public int getYear() {return year;}//返回当前的月public int getMonth() {return month;}//设置当前的月public void setMonth(int month) {this.month = month;cal.set(this.year,this.month,this.day); this.showMe();}//刷新public void showMe(){this.showDays();this.showMonth();this.showYear();this.showDate();}}public class TestJCalendar {public static void main(String[] args) {JFrame f=new JFrame();f.setContentPane(new JCalendar());f.pack();//f.setResizable(false);f.show();}}四、调试分析1、程序调试初期,按钮无法调整程序日期,后重写Year_mouseClicked(MouseEvent e)添加void showYear()使得功能得以完善。
java日历小程序课程设计
【标题】Java日历小程序课程设计
【摘要】本文将详细介绍一种基于Java编程语言的日历小程序的设计和实现。
通过该小程序,用户可以方便地查看日期、周数和节假日,并进行简单的日程安排。
本文将分为以下几个部份进行介绍:需求分析、系统设计、界面设计、功能实现和测试。
通过阅读本文,读者将了解到如何使用Java编写一个简单实用的日历小程序。
【关键词】Java编程语言、日历小程序、需求分析、系统设计、界面设计、功
能实现、测试
【正文】
一、需求分析
日历小程序的主要功能是显示当前日期、周数和节假日,并提供简单的日程安
排功能。
用户可以通过界面直观地查看日历信息,并添加、编辑和删除日程。
具体需求如下:
1. 显示当前日期:程序启动时,显示当前日期,包括年、月、日。
2. 显示当前周数:程序启动时,显示当前所在周数。
3. 显示节假日信息:根据国家或者地区的节假日规定,显示当天是否为节假日。
4. 查看日历:用户可以通过界面查看指定年份和月份的日历信息。
5. 添加日程:用户可以添加新的日程安排,包括日期、时间和内容。
6. 编辑日程:用户可以编辑已有的日程安排,修改日期、时间和内容。
7. 删除日程:用户可以删除已有的日程安排。
二、系统设计
1. 技术选型:本系统采用Java编程语言进行开辟。
使用Java的面向对象特性,实现日历小程序的各项功能。
2. 架构设计:采用MVC(Model-View-Controller)架构模式,将数据、界面和
逻辑分离,提高代码的可维护性和可扩展性。
3. 数据存储:使用SQLite数据库存储日程信息,包括日期、时间和内容。
4. 外部接口:通过调用第三方API获取节假日信息,并根据返回的数据判断当
天是否为节假日。
三、界面设计
1. 主界面:显示当前日期、周数和节假日信息。
提供查看日历、添加日程、编
辑日程和删除日程的入口。
2. 日历界面:根据用户选择的年份和月份,显示对应的日历信息。
用户可以通
过摆布滑动切换月份。
3. 添加/编辑日程界面:提供日期、时间和内容的输入框,用户可以填写相关
信息并保存。
四、功能实现
1. 显示当前日期和周数:通过Java的日期和时间类库,获取当前日期和周数,并在主界面显示。
2. 显示节假日信息:调用第三方API,根据返回的数据判断当天是否为节假日,并在主界面显示。
3. 查看日历:根据用户选择的年份和月份,生成对应的日历信息,并在日历界
面显示。
4. 添加日程:用户在添加日程界面填写相关信息后,将日程信息存储到SQLite 数据库中。
5. 编辑日程:用户在编辑日程界面修改相关信息后,更新对应的日程信息。
6. 删除日程:用户在主界面选择要删除的日程后,从SQLite数据库中删除对应的日程信息。
五、测试
1. 单元测试:对每一个功能模块进行单元测试,确保其功能正常。
2. 集成测试:将各个功能模块进行集成测试,确保它们之间的协作正常。
3. 用户测试:邀请一些用户进行测试,并采集反馈意见,根据反馈意见进行优化和改进。
【结论】
本文详细介绍了一种基于Java编程语言的日历小程序的设计和实现。
通过该小程序,用户可以方便地查看日期、周数和节假日,并进行简单的日程安排。
通过需求分析、系统设计、界面设计、功能实现和测试等环节,我们成功地完成为了日历小程序的开辟。
希翼本文对读者在学习和使用Java编程语言开辟日历小程序时有所匡助。