万年历课程设计报告任务书_第1页
万年历课程设计报告任务书_第2页
万年历课程设计报告任务书_第3页
万年历课程设计报告任务书_第4页
万年历课程设计报告任务书_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

-.z?高级语言程序设计〔2〕?课程设计任务书专业数学与应用数学班级数学0901**7**〔签名〕完成日期指导教师〔签名〕程序设计说明书【设计题目】万能日历程序程序【问题描述】万能日历是查询日期的工具,它适合于上班族,以便他们准确地把握时间。【软件功能】1以月历形式显示日期与星期。2支持用户自己输入年份以及年份下拉形式选择年份,并提供月份的下拉形式菜单来选择月份。3通过点击面板任意处可以刷新日历。【算法思想】将一个星期面板和一个月份面板同时添加到一个主面板,再在相应的面板内添加对应的组件,从而形成日历的界面;然后继承java本身的日历类中得成员方法来实现日历功能;继而构造成员方法实现日历界面的刷新【类的设计】 直接继承的是java中已有的类,然后构造成员方法来实现界面的刷新【用户界面】【程序技巧】直接继承java日历的类,就没必要构造太多的方法以及其他类【模块划分及调用关系】〔用word的绘图工具绘出图形,不能省略!〕【模块流程图】程序初始化程序初始化获取当前系统时间年份等数据提交年月变更数据是否输入年份或选择月份开场计算,绘制屏幕完毕【运行说明】〔1〕将eclipse软件翻开〔2〕在eclipse中建立一个包,接着在包内建一个空白的java程序文档〔3〕将现有的程序复制,粘贴到空白文档,运行即可。〔4〕运行之后即可出现用户界面,你只需按照自己的要求选择相应的年份,月份。如此你便可以看到对应的月历查看星期,月份。程序上机调试报告【语法错误及其排除】程序测试结果【测试数据】测试数据:1.2011年12月份2.2023年2月【输出结果】初始界面〔月份含有下拉框〕年份的改变月份的改变界面可以改变大小【收获及体会】第一次,对于每个人来说,都是难以忘怀的,同样也是给人以体会最深的,收获也是最大的从这次java课程设计中,我获益匪浅。为了完成这个任务,可谓是煞费苦心,绞尽脑汁。我经过了长时间的反复编写调试,课本和网上查阅相关资料相关文章。经过这一次,自我的检验,我发现自己在学习这门课上还是有很多缺乏的,比方说,对JAVA语言整体知识构架不够熟悉;不能灵活地运用所学的知识点;自己的编程方式也不是太标准,经常出现代码写错而调试很久的低级错误情况出现。同时我也懂得了一个很浅显的道理,条条道路通罗马。学习的途径很多,上网,看书,问同学等。以后我会利用可以利用的学习工具,好好学习,将自己在学习方面的缺乏予以弥补。让我体会最深的是,我觉察自己的java学习有所进步。为了完成任务,我一遍又一遍的看书,查资料,不知不觉中,感觉书在心中,对课本知识有了一个更深的认识。从这一点,我似乎明白,实践是最好的教师。实践让我们进一步的和理论接触,更深的认识它。人们常说,实践是检验真理的唯一标准。确实如此,与此同时,实践也是检验我们学习成效的最好标尺。所以说,我们的学以致用,多多留心生活,关注身边,尽可能的利用我们所掌握的知识进展解答,分析。这样,对我们学习很重要。不光如此,我们还可以用理论创造事物。实现所学知识的用处,同样也是实现自我价值的最好方法。另外值得一提的是,我认为合作也是很有价值的一件事,这也是我感悟的。大家都知道术业有专攻之说。确实如此,不同的人对不同的领域有不同的领悟能力。要完成一件综合性的任务,并非则简单,不单指这任务内容多么难,而是指它所涉及的知识点很广。这次任务书,不仅仅是要求我们写一个程序,打几个字,还要求我们画流程图。对于计算机,我是个们外汉。流程图,前所未闻,更别提画了。面对这个难题,我开场很疑惑,很郁闷。天无绝人之路,我碰到一计算机高手,在他的帮助之下,我现在不光画出了所需流程图,还懂的流程图的根本作图方法。合作是一种学习方法,更是一种处世方法。自从这次的合作,我和他关系也升温了。我感谢合作,我喜欢合作。【源程序代码】importjava.awt.BorderLayout;importjava.awt.Color;importjava.awt.Dimension;importjava.awt.GridLayout;importjava.awt.SystemColor;importjava.awt.event.ActionEvent;importjava.awt.event.KeyEvent;importjava.awt.event.MouseEvent;importjava.util.Calendar;importjava.util.GregorianCalendar;importjava.util.Locale;importjava.util.Date;importjava.util.StringTokenizer;importjava*.swing.BorderFactory;importjava*.swing.utton;importjava*.swing.JFrame;importjava*.swing.JLabel;importjava*.swing.JPanel;importjava*.swing.JTe*tField;importjava*.swing.JToggleButton;importjava*.swing.SwingConstants;importjava*.swing.UIManager;classJCalendare*tendsJPanel{//动态表示年月日privateintyear=0;privateintmonth=0;privateintday=0;//主面板privateJPanelMain=newJPanel();//日面板privateJPaneljPanelDay=newJPanel();//月份面板privateJPaneljPanelMonth=newJPanel();//年份输入位置privateJTe*tFieldYear=newJTe*tField();//月份输入位置privateJTe*tFieldMonth=newJTe*tField();//减少月份privateuttonMonthDown=newutton();//增加月份privateuttonMonthUp=newutton();privateJPaneljPanelButton=newJPanel();//减少年份privateuttonYearDown=newutton();//增加年份privateuttonYearUp=newutton();//显示日期的位置privateJLabelOut=newJLabel();//设置时区privateLocalel=Locale.CHINESE;//主日历privateGregorianCalendarcal=newGregorianCalendar(l);//星期面板privateJPanelweekPanel=newJPanel();//日期按钮组privateJToggleButton[]days=newJToggleButton[42];//日期面板privateJPanelDays=newJPanel();//标示privateJLabeljLabel1=newJLabel();privateJLabeljLabel2=newJLabel();privateJLabeljLabel3=newJLabel();privateJLabeljLabel4=newJLabel();privateJLabeljLabel5=newJLabel();privateJLabeljLabel6=newJLabel();privateJLabeljLabel7=newJLabel();//当前选择的天数按钮privateJToggleButtoncur=null;//月份天数数组,用来取得当月有多少天//123456789101112privateint[]mm={31,28,31,30,31,30,31,31,30,31,30,31};//空日期构造函数publicJCalendar(){try{Init();}catch(E*ceptione){e.printStackTrace();}//异常抛出}//带日期设置的构造函数publicJCalendar(intyear,intmonth,intday){cal.set(year,month,day);try{Init();}catch(E*ceptione){e.printStackTrace();}}//带日历输入的构造函数publicJCalendar(GregorianCalendarcalendar){cal=calendar;try{Init();}catch(E*ceptione){e.printStackTrace();}}//带日期输入的构造函数publicJCalendar(Datedate){cal.setTime(date);try{Init();}catch(E*ceptione){e.printStackTrace();}}//初始化组件privatevoidInit()throwsE*ception{//初始化年、月、日iniCalender();this.setLayout(newBorderLayout());this.setBorder(BorderFactory.createRaisedBevelBorder());this.setMa*imumSize(newDimension(200,200));this.setMinimumSize(newDimension(200,200));this.setPreferredSize(newDimension(200,200));Main.setLayout(newBorderLayout());Main.setBackground(SystemC);Main.setBorder(null);Out.setBackground(Color.lightGray);Out.setHorizontalAlignment(SwingConstants.CENTER);Out.setMa*imumSize(newDimension(100,19));Out.setMinimumSize(newDimension(100,19));Out.setPreferredSize(newDimension(100,19));jLabel1.setForeground(Color.red);jLabel1.setHorizontalAlignment(SwingConstants.CENTER);jLabel1.setHorizontalTe*tPosition(SwingConstants.CENTER);jLabel1.setTe*t("日");jLabel2.setForeground(Color.blue);jLabel2.setHorizontalAlignment(SwingConstants.CENTER);jLabel2.setHorizontalTe*tPosition(SwingConstants.CENTER);jLabel2.setTe*t("六");jLabel3.setHorizontalAlignment(SwingConstants.CENTER);jLabel3.setHorizontalTe*tPosition(SwingConstants.CENTER);jLabel3.setTe*t("五");jLabel4.setHorizontalAlignment(SwingConstants.CENTER);jLabel4.setHorizontalTe*tPosition(SwingConstants.CENTER);jLabel4.setTe*t("四");jLabel5.setHorizontalAlignment(SwingConstants.CENTER);jLabel5.setHorizontalTe*tPosition(SwingConstants.CENTER);jLabel5.setTe*t("三");jLabel6.setBorder(null);jLabel6.setHorizontalAlignment(SwingConstants.CENTER);jLabel6.setHorizontalTe*tPosition(SwingConstants.CENTER);jLabel6.setTe*t("二");jLabel7.setBackground(Color.lightGray);jLabel7.setForeground(Color.black);jLabel7.setBorder(null);jLabel7.setHorizontalAlignment(SwingConstants.CENTER);jLabel7.setHorizontalTe*tPosition(SwingConstants.CENTER);jLabel7.setTe*t("一");weekPanel.setBackground(UIManager.getColor("InternalFrame.activeTitleGradient"));weekPanel.setBorder(BorderFactory.createEtchedBorder());weekPanel.setLayout(newGridLayout(1,7));weekPanel.add(jLabel1,null);weekPanel.add(jLabel7,null);weekPanel.add(jLabel6,null);weekPanel.add(jLabel5,null);weekPanel.add(jLabel4,null);weekPanel.add(jLabel3,null);weekPanel.add(jLabel2,null);MonthUp.setAlignment*((float)0.0);MonthUp.setActionMap(null);jPanelMonth.setBackground(SystemC);jPanelMonth.setLayout(newBorderLayout());jPanelMonth.setBorder(BorderFactory.createEtchedBorder());Month.setBorder(null);Month.setHorizontalAlignment(SwingConstants.CENTER);Month.addMouseListener(newjava.awt.event.MouseAdapter(){publicvoidmouseClicked(MouseEvente){Month_mouseClicked(e);}});Month.addKeyListener(newjava.awt.event.KeyAdapter(){publicvoidkeyPressed(KeyEvente){Month_keyPressed(e);//响应键盘事件}});MonthDown.setBorder(null);MonthDown.setTe*t("\u25C4");MonthDown.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(ActionEvente){MonthDown_actionPerformed(e);}});MonthUp.setBorder(null);MonthUp.setTe*t("\u25BA");MonthUp.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(ActionEvente){MonthUp_actionPerformed(e);}});jPanelButton.setLayout(null);jPanelButton.setBorder(null);jPanelButton.addponentListener(newjava.awt.event.ponentAdapter(){publicvoidponentResized(java.awt.event.ponentEventevt){jPanelButtonponentResized(evt);}});Year.setBorder(BorderFactory.createEtchedBorder());Year.setMa*imumSize(newDimension(80,25));Year.setMinimumSize(newDimension(80,25));Year.setPreferredSize(newDimension(80,25));Year.setHorizontalAlignment(SwingConstants.CENTER);Year.addMouseListener(newjava.awt.event.MouseAdapter(){publicvoidmouseClicked(MouseEvente){Year_mouseClicked(e);}});Year.addKeyListener(newjava.awt.event.KeyAdapter(){publicvoidkeyPressed(KeyEvente){Year_keyPressed(e);}});YearDown.setBorder(null);YearDown.setMa*imumSize(newDimension(16,16));YearDown.setMinimumSize(newDimension(16,16));YearDown.setPreferredSize(newDimension(16,16));YearDown.setSize(newDimension(16,16));//按键的规格YearDown.setTe*t("▼");//YearDown.addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(ActionEvente){YearDown_actionPerformed(e);}});YearUp.setBorder(null);YearUp.setMa*imumSize(newDimension(16,16));YearUp.setMinimumSize(newDimension(16,16));YearUp.setPreferredSize(newDimension(16,16));YearUp.setSize(newDimension(16,16));//设置按钮大小YearUp.setTe*t("▲");//设置按钮上得标志YearUp.addActionListener(newjava.awt.event.ActionListener(){//监听事件publicvoidactionPerformed(ActionEvente){YearUp_actionPerformed(e);}});jPanelDay.setLayout(newBorderLayout());Days.setLayout(newGridLayout(6,7));Days.setBackground(SystemC);for(inti=0;i<42;i++){days[i]=newJToggleButton();days[i].setBorder(null);days[i].setBackground(SystemC);days[i].setHorizontalAlignment(SwingConstants.CENTER);days[i].setHorizontalTe*tPosition(SwingConstants.CENTER);//days[i].setSize(l,l);days[i].addActionListener(newjava.awt.event.ActionListener(){publicvoidactionPerformed(ActionEvente){day=Integer.parseInt(((JToggleButton)e.getSource()).getTe*t());showDate();showDays();}});Days.add(days[i]);}this.add(Main,BorderLayout.NORTH);this.add(jPanelDay,BorderLayout.CENTER);this.add(jPanelMonth,BorderLayout.SOUTH);Main.add(Year,BorderLayout.CENTER);Main.add(Out,BorderLayout.WEST);Main.add(jPanelButton,BorderLayout.EAST);jPanelButton.add(YearUp);jPanelButton.add(YearDown);jPanelDay.add(weekPanel,BorderLayout.NORTH);jPanelDay.add(Days,BorderLayout.CENTER);jPanelMonth.add(Month,BorderLayout.CENTER);jPanelMonth.add(MonthDown,BorderLayout.WEST);jPanelMonth.add(MonthUp,BorderLayout.EAST);//添加相应的组件showMonth();showYear();showDate();showDays();}//自定义重画年选择面板voidjPanelButtonponentResized(java.awt.event.ponentEventevt){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();}//测试用publicstaticvoidmain(String[]args){JFramef=newJFrame();f.setContentPane(newJCalendar());f.pack();//f.setResizable(false);f.show();}//增加年份voidYearUp_actionPerformed(ActionEvente){year++;showYear();showDate();showDays();}//减少年份voidYearDown_actionPerformed(ActionEvente){year--;showYear();showDate();showDays();}//减少月份voidMonthDown_actionPerformed(ActionEvente){month--;if(month<0){month=11;year--;showYear();}showMonth();showDate();showDays();}//增加月份voidMonthUp_actionPerformed(ActionEvente){month++;if(month==12){month=0;year++;showYear();}showMonth();showDate();showDays();}//初始化年月日voidiniCalender(){year=cal.get(Calendar.YEAR);month=cal.get(Calendar.MONTH);day=cal.get(Calendar.DAY_OF_MONTH);}//刷新月份voidshowMonth(){Month.setTe*t(Integer.toString(month+1)+"月");}//刷新年份voidshowYear(){Year.setTe*t(Integer.toString(year)+"年");}//刷新日期voidshowDate(){Out.setTe*t(Integer.toString(year)+"-"+Integer.toString(month+1)+"-"+Integer.toString(day));}//重画天数选择面板voidshowDays(){cal.set(year,month,1);intfirstDayOfWeek=cal.get(Calendar.DAY_OF_WEEK);intn=mm[month];if(cal.isLeapYear(year)&&month==1)n++;inti=0;for(;i<firstDayOfWeek-1;i++){days[i].setEnabled(false);//表示该键不能使用其对应的方法days[i].setSelected(false);days[i].setTe*t(");//表示在day键上不设置任何字}intd=1;for(;d<=n;d++){days[i].setTe*t(Integer.toString(d));days[i].setEnabled(true);if(d==day)days[i].setSelected(true);elsedays[i].setSelected(false);;i++;}for(;i<42;i++){days[i].setEnabled(false);days[i].setSelected(false);days[i].setTe*t(");}}//单击年份面板选择整个年份字符串voidSelectionYear(){Year.setSelectionStart(0);Year.setSelectionEnd(Year.getTe*t().length());}//单击月份面板选择整个月份字符串voidSelectionMonth(){Month.setSelectionStart(0);Month.setSelectionEnd(Month.getTe*t().length());}//月份面板响应鼠标单击事件voidMonth_mouseClicked(MouseEvente){//SelectionMonth();inputMonth();}//检验输入的月份voidinputMonth(){Strings;if(Month.getTe*t().endsWith("月")){s=Month.getTe*t().substring(0,Month.getTe*t().length()-1);}elses=Month.getTe*t();month=Integer.parseInt(s)-1;this.showMe();}//月份面板键盘敲击事件响应voidMonth_keyPressed(KeyEvente){if(e.getKeyChar()==10)inputMonth();}//年份面板响应鼠标单击事件voidYear_mouseClicked(MouseEvente){//SelectionYear();inputYear();}//年份键盘敲击事件响应voidYear_keyPressed(KeyEvente){//System.out.print(newInteger(e.getKeyChar()).byteValue());if(e.getKeyChar()==10)inputYear();}//检验输入的年份字符串voidinputYear(){Strings;if(Year.getTe*t().endsWith("年")){s=Year.getTe*t().substring(0,Year.getTe*t().length()-1);}elses=Year.getTe*t();year=Integer.parseInt(s);this.showMe();}//以字符串形式返回日期,yyyy-mm-ddpublicStringgetDate(){returnOut.getTe*t();}//以字符串形式输入日期,yyyy-mm-ddpub

温馨提示

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

最新文档

评论

0/150

提交评论