《万年历设计3.docx》由会员分享,可在线阅读,更多相关《万年历设计3.docx(13页珍藏版)》请在第一文库网上搜索。
1、陕西师范大学远程教育学院题目:java万年历设计学习中心,陕西省咸阳教苜科技培训学院学号:层次:一高一中起点专科姓名王遥俊一、设计内容2二、设计过程22.1 需求分析22.2 概要设计22.3 详细设计32.4 程序运行与发布5三、总结7四、参考文献7一、设计内容万年历是一个强大的日历系统,通过它可以实现对过去,现在以及将来日期的查找,通过在年份对话框中输入要查询的年份,再相应的在月份对应的下拉菜单选择要查询的月份,则可得到相应的日历。本实验是对图形用户界面,布局管理器的综合运用,理解JAVA的时间处理机制,编写独立运行的窗口。二、设计过程2.1 需求分析本程序的要求为:1.使用图形用户界面本
2、程序能够实现日期与星期的查询。3.随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用JaVa语言编写一个简单的万年历,可以实现查询日期和显示时间的功能,满足日常基本的工作学习和娱乐需要。2.2 概要设计1 .总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。然后判断输入的年是否为定义年,若是,令总天数S=1否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且
3、该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。2 .输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期几,若是7,则为星期日。3 .算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得O换行,即可完整的输出该月的日历。4 .如果年份小于1582年则程序不予判断。2.3详细设计1 .流程图23 .初始化组件:importjava.app1et.App1et;importjava.awt.*;importjava.u
4、ti1.*;4 .初始化数据:pub1icc1assCa1endarApp1etextendsApp1etstaticfina1intTOP=70;顶端距离staticfina1intCE11WIDTH=50,CE11HEIGHT=30;单元格尺寸staticfina1intMARGIN=3;边界距离staticfina1intFEBRUARY=1;TextFie1dIfYear=newTextFie1d(,2004,5);/显示年份的文本域ChoicemonthChoice=newChoice();月份选择下拉框ButtonbtUpdate=newBUtton(“更新”);更新按钮Grego
5、rianCa1endarca1endar=newGregorianCa1endar();日历对象FontSma11Font=newFont(,TimesRoman,Font.P1A1N,15);显示小字体FontbigFont=newFont(TimesRoman,Font.BO1D,50);显示大字体Stringdays=星期日星期一”,”星期二星期三”,”星期四星期五一星期六”);Stringmonths=一月二“二月“,“三月“,“四月五月“,“六月“,“七月“,“八月”,“九月”,“十月:H月”,“十二月”;intdaysInMonthU=31,28,31,30,31,30,31,31
6、,30,31,30,31;每个月的天数intSearchMonth,searchYear;查询的年份及月份5 .绘制程序界面:pub1icvoidinit()SetBackground(Co1oEwhite);设置背景颜色SearchMonth=ca1endar.get(Ca1endar.MONTH);得至IJ系统年份SearchYear=ca1endar.get(Ca1endar.YEAR);得至IJ系统月份add(new1abe1(年:);增加组件到App1ettfYear.setText(String.va1ueOf(searchYear);设置文本域文字add(tfYear);add(
7、new1abe1(月monthChoice.setFont(sma11Font);设置月份选择下拉框的显示字体for(inti=0;i12;i+)monthChoice.add1tem(monthsi);增加下拉框选项)monthChoice.se1ect(SearchMonth);设置下拉框当前选择项add(monthChoice);add(btUpdate);intComPOnentCoUnt=this.getComponentCount();得至IJApp1et中的组件数for(inti=0;icomponentCount;i+)getComponeHi).SetFont(Sma11Fo
8、nt);/设置所有组件的显示字体)6 .4程序运行与发布在年份输入框内输入2012后点击查看后的情况:月份下拉列表框:小程序已启动.选择月份后的情况:点击查看按钮后显示的结果:B小程序查看器:Ca1endarApp1et.c1assApp1et年:2018月:I七月T1查登|星期日星期一星期二星期三星期四星期五星期六12345678910111213141516171819202122232425262728293031小程序已启动.三、总结(1)选题目的:本次课程设计为课本后设计题目任选一题进行设计。思考一段时间后,我决定做一个万年历的设计。主要考虑到本学期时间少课程内容多,JAVA课程基础
9、内容掌握并不是很抓实,而对于设计一个万年历程序,由于其功能简单设计也相对较易,对于我个人的学习情况比较合适,并且通过设计这样的一个日历小组件,也能使自己对JAVA的一些基础知识掌握的更加牢固。(2)对于本程序的设计,首先考虑其功能有哪些,需要显示什么,如何进行窗体构建布局,需要用哪些知识点,如相关的类和对象等。最后,就是根据初步设计的功能和布局构架,考虑用源代码进行实现了。经过了长时间的反复编写调试,课本和网上查阅相关资料相关文章,终于完成了整个课程设计。在这个过程中,在把书本上的知识给系统的复习了一下的同时,同时也发现了自己的太多不足,对JAVA语言整体知识构架不够熟悉,不能灵活地运用所学的
10、知识点。自己的编程方式也不是太标准,经常出现代码写错而调试很久的低级错误情况出现。通过这次课程设计,我明白了编写程序,不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。还要熟悉常用的编程技巧和编程思想,不能只关心程序的运行结果,更要注重程序代码的结构,编程者更要有严谨地态度。还有通过设计过程中大量地查阅网络文章,对一些关键知识点逐个地了解并解决相关问题。所以网络这个强大的工具,确实是我们学习之中可以借助的一个很好的帮手。网络是我们学习的最好的老师之一。有问题,问网络,是一个很好的习惯。四、参考文献代码实现importjava.app1et.App1et;importj
11、ava.awt.*;importjava.uti1.*;pub1icc1assCa1endarApp1etextendsApp1etstaticfina1intTOP=70;顶端距离staticfina1intCE11WIDTH=50,CE11HEIGHT=30;单元格尺寸staticfina1intMARGIN=5;边界距离staticfina1intFEBRUARY=1;TextFie1dtfYear=newTextFie1d(2004,5);显示年份的文本域ChoicemonthChoice=newChoice();月份选择下拉框ButtonbtUpdate=newBUtton(查看);
12、更新按钮GregorianCa1endarca1endar=newGregOrianCa1endar();日历对象FontSma11Font=newFOntCTimeSROman,Font.P1AIN,15);显示小字体FontbigFont=newFont(TimesRoman,Font.BO1D,50);显示大字体Stringdays=星期日星期一:星期二,“星期三”J星期四星期五7星期六”;Stringmonths=“一月“,“二月“,三月四月”,”五月六月七月”,八月:九月十月:H一月”,“十二月”;intdaysInMonth=31,28,31,30,31,30,31,31,30,3
13、1,30,31;每个月的天数intSearchMonthiSearchYear;查询的年份及月份pub1icvoidinit()SetBackground(Co1o1ye11ow);/设置背景颜色SearchMonth=ca1endar.get(Ca1endar.MONTH);得至U系统年份SearchYear=ca1endar.get(Ca1endar.YEAR);得到系统月份add(new1abe1(年:);/增加组件到App1ettfYear.setText(String.Va1ueOf(SearchYear);设置文本域文字add(tfYear);add(new1abe1(u月mont
14、hChoice.setFont(sma!IFont);设置月份选择下拉框的显示字体for(inti=0;i12;i+)monthChoice.addItem(monthsi);增加下拉框选项)monthChoice.se1ect(searchMonth);设置下拉框当前选择项add(monthChoice);add(btUpdate);intcomponentCount=this.getComponentCount();得至IJApp1et中的组件数量for(inti=0;icomponentCount;i+)getComponenp).SetFont(Sma11Font);/设置所有组件的显
15、示字体)1pub1icvoidpaint(Graphicsg)FontMetricsfontMetric;/显示字体的FontMetrics对象intfontAscent;intdayPos;inttota1Width,tota1Height;总的宽度,高度intnumRows;行数intxNum,yNum;水平和垂直方向单元格数量intnumDays;StringdayStr;显示天数字符串intmargin;g.setCo1or(Co1or.IightGray);设置当前颜色g.setFont(bigFont);设置当前使用字体g.drawString(searchYear+年,60,TOP+70);绘制字符串g