java课程设计任务书万年历.docx

上传人:b****0 文档编号:9751860 上传时间:2023-05-21 格式:DOCX 页数:15 大小:144.61KB
下载 相关 举报
java课程设计任务书万年历.docx_第1页
第1页 / 共15页
java课程设计任务书万年历.docx_第2页
第2页 / 共15页
java课程设计任务书万年历.docx_第3页
第3页 / 共15页
java课程设计任务书万年历.docx_第4页
第4页 / 共15页
java课程设计任务书万年历.docx_第5页
第5页 / 共15页
java课程设计任务书万年历.docx_第6页
第6页 / 共15页
java课程设计任务书万年历.docx_第7页
第7页 / 共15页
java课程设计任务书万年历.docx_第8页
第8页 / 共15页
java课程设计任务书万年历.docx_第9页
第9页 / 共15页
java课程设计任务书万年历.docx_第10页
第10页 / 共15页
java课程设计任务书万年历.docx_第11页
第11页 / 共15页
java课程设计任务书万年历.docx_第12页
第12页 / 共15页
java课程设计任务书万年历.docx_第13页
第13页 / 共15页
java课程设计任务书万年历.docx_第14页
第14页 / 共15页
java课程设计任务书万年历.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

java课程设计任务书万年历.docx

《java课程设计任务书万年历.docx》由会员分享,可在线阅读,更多相关《java课程设计任务书万年历.docx(15页珍藏版)》请在冰点文库上搜索。

java课程设计任务书万年历.docx

java课程设计任务书万年历

课程设计(论文)任务书

软件学院学  院  专  业 班

一、课程设计(论文)题目 

二、课程设计(论文)工作自2012年12月24日起至2012年12月28日止。

三、课程设计(论文)地点:

软件学院实训中心

四、课程设计(论文)内容要求:

1.本课程设计的目的

(1)掌握Java语言的程序设计方法;

(2)理论联系实际,进一步提高学生的软件开发技术;

(3)培养学生分析、解决问题的能力;

(4)提高学生实践论文撰写能力。

2.课程设计的任务及要求

1)课程设计任务:

(1)设计一个万年历系统,能查看日期。

(2)能查任意一年任意一月的日期。

(3)背景显示当前年月。

2)创新要求:

(1)月份查看使用下拉菜单。

(2)查看框可随意拉大拉小,背景显示当前的年月。

3)课程设计论文编写要求

(1)课程设计任务及要求

(2)设计思路--工作原理、功能规划

(3)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代

码及注释)、界面等。

(4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。

(5)设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,

巩固了哪些知识,有哪些提高。

(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)

(7)报告按规定排版打印,要求装订平整,否则要求返工;

(8)课设报告的装订顺序如下:

封面---任务书---中文摘要---目录----正文---附录

(代码及相关图片)

(9)严禁抄袭,如有发现,按不及格处理。

4)课程设计评分标准:

(1)学习态度:

20分;

(2)程序检查:

20分;

(3)课设答辩:

20分;

(4)课设报告:

40分。

5)参考文献:

(1)《java语言实用教程》第二版丁凡振北京邮电大学出版社

(2)《java编程思想》第四版埃克尔机械工业出版社

6)课程设计进度安排

1.准备阶段(4学时):

选择设计题目、了解设计目的要求、查阅相关资料

2.程序模块设计分析阶段(4学时):

程序总体设计、详细设计

3.代码编写调试阶段(8学时):

程序模块代码编写、调试、测试

4.撰写论文阶段(4学时):

总结课程设计任务和设计内容,撰写课程设计论文

学生签名:

2012年12月24日

课程设计(论文)评审意见

(1)学习态度(20分):

优( )、良( )、中( )、一般( )、差( );

(2)程序检查(20分):

优( )、良( )、中( )、一般( )、差( );

(3)课设答辩(20分):

优( )、良( )、中( )、一般( )、差( );

(5)论文撰写(40分):

优( )、良( )、中( )、一般( )、差( );

评阅人:

   职称:

讲师

2012年12月日

中文摘要

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。

Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

Java平台由Java虚拟机(JavaVirtualMachine,简称JVM)和Java应用编程接口(ApplicationProgrammingInterface,简称API)构成。

Java应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。

在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。

现在Java平台已经嵌入了几乎所有的操作系统。

这样Java程序可以只编译一次,就可以在各种系统中运行。

Java应用编程接口已经从1.1x版发展到1.2版。

目前常用的Java平台基于Java1.4,最近版本为Java1.7。

Java优势,是适合团队开发,软件工程可以相对做到规范,这是一个很难比拟的优势。

java劣势,是j2ee的架构很完美,第一版软件可以做满意,但是很不适合互联网模式的持续不断修改。

互联网软件工程管理上的不足,持续的修修补补导致架构的破坏。

系统更新需要重启web服务,很难接受。

Java是一种应用前景很广的语言,应该好好学习,通过课程设计巩固学过的知识,为今后的学习打下坚实的基础。

目 录

一、课程设计任务及要求1

二、需求分析2

三、设计思路3

四、详细设计4

五、运行调试与分析讨论5

六、设计体会与小结6

七、参考文献7

1、课程设计任务及要求

1)任务:

1、万年历是一个强大的日历系统,通过它可以实现对过去,现在以及将来日期的查找,通过在年份对话框中输入要查询的年份,再相应的在月份对应的下拉菜单选择要查询的月份,则可得到相应的日历。

本实验是对图形用户界面,布局管理器的综合运用,理解JAVA的时间处理机制,编写独立运行的窗口。

2)要求:

1.使用图形用户界面。

2.本程序能够实现任意年份月份的查询。

2、需求分析

1).随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。

文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的万年历,可以实现查询日期和显示时间的功能,满足日常基本的工作学习和娱乐需要。

三、设计思路

1)总天数的算法:

首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。

然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。

2)输出月份第一天为星期几的算法:

使总天数除以7取余加2得几既为星期几,若是7,则为星期日。

3)算出输出月份第一天为星期几的算法:

算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。

4)如果年份小于1582年则程序不予判断。

四、详细设计

1)流程图:

2)代码:

importjava.applet.Applet;

importjava.awt.*;

importjava.util.*;

publicclassCalendarAppletextendsApplet{

staticfinalintTOP=70;//顶端距离

staticfinalintCELLWIDTH=50,CELLHEIGHT=30;//单元格尺寸

staticfinalintMARGIN=5;//边界距离

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;//查询的年份及月份

publicvoidinit(){

setBackground(Color.yellow);//设置背景颜色

searchMonth=calendar.get(Calendar.MONTH);//得到系统年份

searchYear=calendar.get(Calendar.YEAR);//得到系统月份

add(newLabel("年:

"));//增加组件到Applet

tfYear.setText(String.valueOf(searchYear));//设置文本域文字

add(tfYear);

add(newLabel("月:

"));

monthChoice.setFont(smallFont);//设置月份选择下拉框的显示字体

for(inti=0;i<12;i++){

monthChoice.addItem(months[i]);//增加下拉框选项

}

monthChoice.select(searchMonth);//设置下拉框当前选择项

add(monthChoice);

add(btUpdate);

intcomponentCount=this.getComponentCount();//得到Applet中的组件数量

for(inti=0;i

getComponent(i).setFont(smallFont);//设置所有组件的显示字体

}

}

publicvoidpaint(Graphicsg){

FontMetricsfontMetric;//显示字体的FontMetrics对象

intfontAscent;

intdayPos;

inttotalWidth,totalHeight;//总的宽度,高度

intnumRows;//行数

intxNum,yNum;//水平和垂直方向单元格数量

intnumDays;

StringdayStr;//显示天数字符串

intmargin;

g.setColor(Color.lightGray);//设置当前颜色

g.setFont(bigFont);//设置当前使用字体

g.drawString(searchYear+"年",60,TOP+70);//绘制字符串

g.drawString((searchMonth+1)+"月",200,TOP+130);

g.setColor(Color.black);

g.setFont(smallFont);

fontMetric=g.getFontMetrics();//获取变量初值

fontAscent=fontMetric.getAscent();

dayPos=TOP+fontAscent/2;

totalWidth=7*CELLWIDTH;//得到总的表格宽度

for(inti=0;i<7;i++){

g.drawString(days[i],(CELLWIDTH-fontMetric.stringWidth(days[i]))/2+i*CELLWIDTH,dayPos-20);//绘制表格标题栏

}

numRows=getNumberRows(searchYear,searchMonth);//计算需要的行的数量

totalHeight=numRows*CELLHEIGHT;//得到总的表格高度

for(inti=0;i<=totalWidth;i+=CELLWIDTH){

g.drawLine(i,TOP,i,TOP+totalHeight);//绘制表格线

}

for(inti=0,j=TOP;i<=numRows;i++,j+=CELLHEIGHT){

g.drawLine(0,j,totalWidth,j);//绘制表格线

}

xNum=(getFirstDayOfMonth(searchYear,searchMonth)+1)*CELLWIDTH-MARGIN;

yNum=TOP+MARGIN+fontAscent;

numDays=daysInMonth[searchMonth]+((calendar.isLeapYear(searchYear)&&(searchMonth==FEBRUARY))?

1:

0);

for(intday=1;day<=numDays;day++){

dayStr=Integer.toString(day);

g.drawString(dayStr,xNum-fontMetric.stringWidth(dayStr),yNum);//绘制字符串

xNum+=CELLWIDTH;

if(xNum>totalWidth){

xNum=CELLWIDTH-MARGIN;

yNum+=CELLHEIGHT;

}

}

}

publicbooleanaction(Evente,Objecto){

intsearchYearInt;

if(e.target==btUpdate){

searchMonth=monthChoice.getSelectedIndex();//得到查询月份

searchYearInt=Integer.parseInt(tfYear.getText(),10);//得到查询年份

if(searchYearInt>1581){

searchYear=searchYearInt;

}

repaint();//重绘屏幕

returntrue;

}

returnfalse;

}

privateintgetNumberRows(intyear,intmonth){//得到行数量

intfirstDay;

intnumCells;

if(year<1582){//年份小于1582年,则返回-1

return(-1);

}

if((month<0)||(month>11)){

return(-1);

}

firstDay=getFirstDayOfMonth(year,month);//计算月份的第一天

if((month==FEBRUARY)&&(firstDay==0)&&!

calendar.isLeapYear(year)){

return4;

}

numCells=firstDay+daysInMonth[month];

if((month==FEBRUARY)&&(calendar.isLeapYear(year))){

numCells++;

}

return((numCells<=35)?

5:

6);//返回行数

}

privateintgetFirstDayOfMonth(intyear,intmonth){//得到每月的第一天

intfirstDay;

inti;

if(year<1582){//年份小于1582年,返回-1

return(-1);

}

if((month<0)||(month>11)){//月份数错误,返回-1

return(-1);

}

firstDay=getFirstDayOfYear(year);//得到每年的第一天

for(i=0;i

firstDay+=daysInMonth[i];//计算每月的第一天

}

if((month>FEBRUARY)&&calendar.isLeapYear(year)){

firstDay++;

}

return(firstDay%7);

}

privateintgetFirstDayOfYear(intyear){//计算每年的第一天

intleapYears;

inthundreds;

intfourHundreds;

intfirst;

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;//得到每年第一天

returnfirst;

}

}

五、运行调试与分析讨论

1)背景显示当前日期:

2)月份下拉菜单:

3)年份框输入2015,月份选择3,点击查看:

6、设计体会与小结

JAVA课程基础内容掌握并不是很抓实,而对于设计一个万年历程序,由于其功能简单设计也相对较易,对于我个人的学习情况比较合适,并且通过设计这样的一个日历小组件,也能使自己对JAVA的一些基础知识掌握的更加牢固。

对于本程序的设计也有了新的看法,首先考虑其功能有哪些,需要显示什么,如何进行窗体构建布局,需要用哪些知识点,如相关的类和对象等。

最后,就是根据初步设计的功能和布局构架,考虑用源代码进行实现了。

通过这次课程设计,我明白了编写程序,不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。

还要熟悉常用的编程技巧和编程思想,不能只关心程序的运行结果,更要注重程序代码的结构,编程者更要有严谨地态度,不能马虎了事。

七、参考文献

(1)《java语言实用教程》第二版丁凡振北京邮电大学出版社

(2)《java编程思想》第四版埃克尔机械工业出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2