陕西师范大学网络教育学院陕西师范大学网络教育学院课程名称JAVA程序设计学习中心:陕西省商洛市商州区教师进修学校批次:计算机科学与技术101层次:专科起点本科姓名:赵小辉陕西师范大学网络教育学院第1页目录前言......................................................................................................................................................21需求分析...........................................................................................................................................21.1需求分析.......................................................................................................................................21.2功能设计.......................................................................................................................................22.概要设计...........................................................................................................................................22.1程序设计思路...............................................................................................................................22.2程序运行界面...............................................................................................................................32.3流程图...........................................................................................................................................43.各模块的功能及程序说明..............................................................................................................43.1.初始化组件..................................................................................................................................43.2.初始化数据..................................................................................................................................53.3.绘制程序界面..............................................................................................................................54.测试分析........................................................................................................................................75.源程序清单....................................................................................................................................96.课程设计体会..............................................................................................................................17陕西师范大学网络教育学院第2页前言Java的前身是Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大范围的Internet上。1995年,Java语言的名字从Oak编程了Java。1997年J2SE1.1发布。1998年J2SE1.2发布,标志Java2的诞生。十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。Java的体系结构由Java语言、Javaclass、JavaAPI、Java虚拟机组成。它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。Java的平台标准有JavaME,JavaSE和JavaEE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有JavaDevelopmentKit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中JavaDevelopmentKit简称JDK是大多开发工具的基础。以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。1需求分析1.1需求分析本程序的要求为:1.使用图形用户界面;2.本程序能够实现日期与星期的查询。1.2功能设计本程序要构建的万年历程序,其功能有以下几个方面:(1)通过网页形式运行,实现图形界面。(2)能以月历形式显示日期与星期。(3)支持用户自己输入年份,并提供月份的下拉形式菜单来选择月份。(4)通过点击“更新”来刷新日历。2.概要设计2.1程序设计思路1.总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。陕西师范大学网络教育学院第3页2.输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期几,若是7,则为星期日。3.算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。4.如果年份小于1582年则程序不予判断。2.2程序运行界面陕西师范大学网络教育学院第4页2.3流程图3.各模块的功能及程序说明3.1.初始化组件importjava.applet.Applet;importjava.awt.*;程序初始化获取当前系统时间年份等数据提交年月变更数据是否输入年份或选择月份开始计算,绘制屏幕结束陕西师范大学网络教育学院第5页importjava.util.*;3.2.初始化数据publicclassCalendarAppletextendsApplet{staticfinalintTOP=70;//顶端距离staticfinalintCELLWIDTH=50,CELLHEIGHT=30;//单元格尺寸staticfinalintMARGIN=3;//边界距离staticfinalintFEBRUARY=1;TextFieldtfYear=newTextField(2004,5);//显示年份的文本域ChoicemonthChoice=newChoice();//月份选择下拉框ButtonbtUpdate=newButton(更新);//更新按钮GregorianCalendarcalendar=newGregorianCalendar();//日历对象FontsmallFont=newFont(TimesRoman,Font.PLAIN,15);//显示小字体FontbigFont=newFont(TimesRoman,Font.BOLD,50);//显示大字体Stringdays[]={星期日,星期一,星期二,星期三,星期四,星期五,星期六};Stringmonths[]={一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月};intdaysInMonth[]={31,28,31,30,31,30,31,31,30,31,30,31};//每个月的天数intsearchMonth,searchYear;//查询的年份及月份3.3.绘制程序界面publicvoidinit(){陕西师范大学网络教育学院第6页setBackground(Color.white);//设置背景颜色searchMonth=calendar.get(Calendar.MONTH);//得到系统年份searchYear=calendar.get(Calendar.YEAR);//得到系统月份add(newLabel(年:));//增加组件到ApplettfYear.setText(String.valueOf(searchYear));//设置文本域文字add(tfYear);add(newLabel(月:));monthChoice.setFont(smallFont);//设置月份选择下拉框的显示字体for(inti=0;i12;i++){monthChoice.addItem(months[i]);//增加下拉框选项}monthChoice.select(searchMonth);//设置下拉框当前选择项add(monthChoice);add(btUpdate);intcomponentCount=this.getComponentCount();//得到Applet中的组件数量for(inti=0;icomponentCount;i++){getComponent(i).setFont(smallFont);//设置所有组件的显示字体}}陕西师范大学网络教育学院第7页4.测试分析图2在年份输入框内输入1582后点击更新后的情况图3月份下拉列表框陕西师范大学网络教育学院第8页图4选择月份后的情况陕西师范大学网络教育学院第9页图5点击更新按钮后显示的结果5.源程序清单importjava.applet.Applet;importjava.awt.*;importjava.util.*;publicclassCalendarAppletextendsApplet{staticfinalintTOP=7