您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > java万年历课程设计报告
...JAVA课程设计报告系别:计算机系班级:计本1119班姓名:高鹏飞学号:1162041928指导教师:白茹意模模拟拟时时钟钟...一、课程设计任务及要求(1)设计任务:编写一个Java万年历程序,实现日期和星期的查询。(2)设计要求:1、主界面采用边界布局,北面是一个设置年月的控制面板,中间是日历绘制区;2、单击“月份”的下拉式菜单,可以显示当前月的上一月/下一月的日历;3、单击“年份”的下拉式菜单,可以显示上一年/下一年的当前日历;二、需求分析对于万年历系统,其主要功能是:查看当日日期(年、月、日)、查看当时时间、查看其他年月的月历。主要使用流程是:查看万年历系统,查看其他月份或年份日历,选中其他日期查看,查看当日日期。主要功能的用例描述如下:(1)查看万年历1、进入万年历系统;2、系统获取当日日期并设置日历为当月,红框选中当日日期;(2)查询当月其他年份改变年份的方法是选择年份。下拉菜单选择年份:1、点击选择年份的下拉菜单,选择年份;2、系统获取已选择的年份;3、系统设置为已选年份当月的月历并显示在界面显示。(3)查询当年的其他月份改变月份的方法是选择月份。下拉菜单选择月份:1、点击选择月份的下拉菜单,选择年份;2、系统获取已选择的月份;3、系统设置已选月份为当年的月历并在界面显示。...(4)选择其他日期查看1、点击其他日期;2、系统对所有日期的label进行监听,判断点击的那个label;3、返回被点击的label的数组下标;4、对该下标的label设置蓝色边框,表示选中。三、设计思路本课设界面由边界布局构成,主要有北方部件和中央部件两部分。(1)北方部件上有查询输入部分和时间显示部分:1、两个下拉列表用于选择的年份和月份,如改变年份后系统用getShowYear()获得组合框中的中文年份,getCombYear()转换成英文格式,得到用户选择的年份,同时用getMonthDays()和getInitWeek()得到界面的设定,最终,用setDays()设置出用户所要求的月历,改变月份同理;2、四个button按钮用于实现年—、年+、月—、月+,如摁了“年+”后,系统用getShowYear()和getCombYear()获得组合框中的年份,在其年份上加1,将改变的年份显示在组合框里,计算出该年月日历的安排,并用setDays()设置出用户所要求得月历,其他按钮同理;3、一个button按钮用于实现对今日日期的查找,当用户摁了“今日”后,系统用getNowYear()和getNowMonth()得到当日年月,并调用setNowDay()将系统组合框内年月设为当日年月,显示当月月历,同时系统用getNowDay()获得当日日期,用labelDay[i].setBorder(border1)语句将当日的日期用蓝色的边框框住表示选定;4、创建一个标签用于显示时间,监听系统时间并显示。(2)中央部件上添加系统的结果显示部分:1、该部分最初显示为当日年月的月历,改变年月后,获得需要显示的月份天数m和当月1号是从labelDay[n]开始后按顺序从添加到labelDay[m+n],遇到周末用setForeground(Color.red)设定字体显示为红色;2、对labelDay标签进行监听,如果鼠标点击某个label,判断该标签的的序号,用setBorder()为该label设置蓝色边框并用setBordr(null)将上一个边框清除。...四、详细设计(1)类设计本程序创建了一个MainFrame类,该类包括了改变年月对月历界面显示的改变和时间的显示,主要包括函数如表1所示:MainFrame表1表1(2)界面设计界面如图1所示该界面由上北面的输入选择部分和中央的结果显示部分组成。输入部分创建两个下拉列表选择年月及5个功能按键用于实现日历的基本操作;结果显示部分根据该月1号所属星期和该月的天数设置出该月月历界面。for(inti=0;i7;i++){labelWeek[i]=newJLabel();labelWeek[i].setHorizontalAlignment(0);if(i==0||i==6)publicMainFrame(Stringtitle)界面设计publicvoidClockAction(ActionEventae)判断button摁键publicintgetNowDay()获得现在的日期publicIntegergetShowYear()获取组合框中显示的中文格式年份publicintgetComboYear()获取组合框中的年份publicintgetInitWeek(StringinitWeek)返回当月中的1号是从星期几开始publicintgetMonthDays(intyear,intmonth)返回所选年月的天数publicvoidsetSysDate(intyear,intmonth)设置系统日期publicvoidsetChangeDate()改变显示日期publicvoidsetDays(intmonthDays,intinitWeek,intday)设置月历...{labelWeek[i].setForeground(Color.red);//设置周末为红色labelWeek[i].setFont(newFont(新宋体,Font.BOLD,18));}else{labelWeek[i].setForeground(Color.BLACK);labelWeek[i].setFont(newFont(新宋体,Font.PLAIN,18));}labelWeek[i].setText(stringWeekCn[i]);panel2.add(labelWeek[i]);}————————————加上日期的label—————————————for(inti=0;i42;i++){labelDay[i]=newJLabel();labelDay[i].setHorizontalAlignment(0);//设置文本的水平对齐方式labelDay[i].setText();panel2.add(labelDay[i]);labelDay[i].addMouseListener(listener);//对label进行监听}————————————设置月历————————————————publicvoidsetDays(intmonthDays,intinitWeek,intday){setDateNull();for(inti=initWeek;iinitWeek+monthDays+1;i++)//initWeek初始星期{labelDay[i].setFont(newFont(黑体,Font.BOLD,18));//设置日期的字体if((i-initWeek+1)==day)//如果日期为今天{for(intj=0;j42;j++)...labelDay[j].setBorder(null);labelDay[i].setBorder(border1);//选中当日日期}if((i%7==0)||(i%7==6))labelDay[i].setForeground(Color.red);elselabelDay[i].setForeground(Color.BLACK);labelDay[i].setText(String.valueOf(i-initWeek+1));}for(inti=initWeek+monthDays;i42;i++)labelDay[i].setText();}(3)功能实现该系统主要实现的功能如图2所示图2万年历系统查询指定年份日历查询指定月份日历查询相邻年份日历查询相邻月份日历查看今日选择其他日期显示时间...1、当用户需要查询指定年月的日历时,用户将选择框内年月改变,系统获取信息并设置月历,具体流程如图3所示图32、用户用鼠标点击选择一个日期后,系统可用蓝色方框框住该日期,表示系统已选择该日,具体流程如图5所示图4五、运行调试与分析讨论(1)运行结果和分析图5为系统初始界面,系统自动设置为当日年月的月历,并且用红色框住当日日期。选择年份月份获取年月份并转化为英文格式获得该月1号所在位置和该月天数设置系统为该年月生成日历界面用户点击某一日期系统判断用户已点击标签的下标清除上一个方框对被点击的标签设一个蓝色方框...图5(2)改进想法该万年历程序只能显示阳历,可在其基础上加上阴历的显示,当鼠标点击了某一日的日期时,该日期被框住并且显示出其阴历日期;每年一些固定的节日如“五一”、“十一”可在日历上用红色数字显示出来;月历上其他未填日期的空白label可用加上上个月和下个月的部分日期,用灰色表示方便区。六、设计体会与小结Java语言是解释执行的高级编程语言,是面向对象的程序设计语言,功能强大,它是解释执行的,能跨平台使用。具有较高的性能和高度的安全性,Java程序的三级代码安全检查机制可以有效的防止非法代码的入侵,阻止对内存的越权访问,能够避免病毒的侵害,成为Internet上最安全的技术之一。并且支技多线程,可使用户程序并行执行,即有内存垃圾自动收集机制。Java语言是一种“直译”式语言,即用Java编写的程序首先被编译成字节码,再通过JVM解释成机器码,字节码是Java专有的一种中间码,必须通过JVM来解释才能运行。经过了一个学期对《Java程序设计》的学习,我们学习了理论知识,了解了Java语言程序设计的思想,这些知识都...为我们的下一步学习打下了坚实的基础。经过这次课程设计使我对JAVA图形用户界面的有关知识有了更深入了解,如几种布局管理器的使用方法,事件的处理机制,SWING的基本体系结构,SWING组件的使用方法,多媒体的实现手段等知识。完成了简单的万年历功能,本次课程设计的主要内容就是设计一个可以查询日期的程序,通过选择下拉列表中的年份以及月份来实现日期的查询,及按键改变年月通过它可以查询到日期的一些具体信息,可以查询所选日期是星期几,还对星期六与星期日有特殊颜色的标记,方便查看。此外,还可以实现显示数字时间的功能,简单实用。通过课程设计,能够达到全面、深入理解和掌握所学内容,能够进行简单的分析和判断。这次课程设计,虽说在设计过程中遇到了很多的困难,但是在老师的细心指导下,很多不会的问题都迎刃而解了。此次课程设计一方面是为了检查我们一个学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。是对自己学习的一次很好的检验。能完成这次的课程设计,和身边的同学和老师的帮助分不开的。在此对指导老师表示感谢,还有帮助过我的一些同学,在此也表示谢意。在今后的学习中我也会更加努力的。......
本文标题:java万年历课程设计报告
链接地址:https://www.777doc.com/doc-1900891 .html