java课程设计报告2.docx
- 文档编号:4542373
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:17
- 大小:21.24KB
java课程设计报告2.docx
《java课程设计报告2.docx》由会员分享,可在线阅读,更多相关《java课程设计报告2.docx(17页珍藏版)》请在冰点文库上搜索。
java课程设计报告2
明达职业技术学院
实训(实践)报告
2010-2011学年度第一学期
信息工程 系计算机应用技术专业
班级09计算机应用技术学号41083103
课题名称Java课程设计
学生姓名范钰钰
指导教师徐山
2010年6月11日
Java课程设计任务书
专业班级
09计算机姓名
范钰钰学号
03指导老师徐山
实训(实践)题目万年历表
设计实训(实践)的主要内容:
1、利用Java语言编写一个万年历表的程序
2、利用Frame设计出万年历表的外框架并且加上swing、awt控件
3、实现100年以内日期的查询
4、实现所查当天的星期几的查询
5、输出月份表
要求完成的主要任务:
1、完成设计内容
2、设计出万年历的外框
3、安插基本的查询控件
4、设计说明书,字数为2000字以上
作业提交方式:
java设计程序原代码及其字节码文件
指导老师签名:
Java课程设计任务书
1、可行方案的筛选方法及设计思路
2、注意已学过的相关知识提要以及与本课题有关的新知识
3、进度安排
①明确设计内容,完成相关资料素材的搜索;(4学时)
②完成Frame设计万年历表的外框架并且加上swing、awt控件;(4学时)
③实现100年以内日期的查询;(2学时)
④完成所查当天的星期几的查询;(3学时)
⑤输出每月的月份表,完成界面绘制;(4学时)
⑥完善代码文件,实现个性小功能;(3学时)
⑦完成实验说明书;(2学时)
4、设计说明书撰写时注意随时注意保留在设计过程中的思路、计算过程及文字草稿。
Java课程设计任务书(设计说明)
一、万年历程序设计报告
1.1需求分析
本程序的要求为:
1.使用图形用户界面;2.本程序能够实现日期与星期的查询。
1.2功能设计
本程序要构建的万年历程序,其功能有以下几个方面:
(1)通过网页形式运行,实现图形界面。
(2)能以月历形式显示日期与星期。
(3)支持用户自己输入年份,并提供月份的下拉形式菜单来选择月份。
(4)通过点击“更新”来刷新日历。
2.概要设计
2.1程序设计思路
1.总天数的算法:
首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。
然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。
2.输出月份第一天为星期几的算法:
使总天数除以7取余加2得几既为星期几,若是7,则为星期日。
3.算出输出月份第一天为星期几的算法:
算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。
4.如果年份小于1582年则程序不予判断。
3.各模块的功能及程序说明
3.1.初始化组件
importjava.awt.*;
importjava.awt.event.*;
3.2.绘制程序界面
classaa4extendsFrameimplementsActionListener{
publicintx,y,z,r;
staticaa4fra=newaa4();
staticTextFieldtxt1=newTextField(10);
staticTextFieldtxt2=newTextField(10);
staticLabellb;
Stringdays[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
Stringww[];
Stringee[];
publicstaticvoidmain(Stringargs[]){
fra.setTitle("万年历");
fra.setBounds(0,0,320,400);
fra.setLayout(newFlowLayout());//页面设置
txt1.setBounds(50,50,20,20);//设置文本框的大小
//txt1.addTextListener(fra);
txt2.setBounds(60,60,20,20);//设置文本框的大小
//txt2.addTextListener(fra);
Buttonb=newButton("查询");
b.setBounds(200,40,60,40);
b.addActionListener(fra);
lb=newLabel("0000",Label.CENTER);
lb.setBounds(75,70,130,25);
lb.setForeground(Color.blue);
fra.add(txt1);//将文本框添加到窗口中
fra.add(txt2);
txt1.setText("2011");
txt2.setText("6");
fra.add(b);
fra.add(lb);
fra.setVisible(true);//显示窗口
3.3.监听器的方法
publicvoidactionPerformed(ActionEvente)
{
x=Integer.parseInt(txt1.getText());
y=Integer.parseInt(txt2.getText());
z=getyear(x,y);
lb.setText(String.valueOf(days[z]));
repaint();
}
intgetyear(intyear,intmonth){
ints=0,i,j=0,u,w;
intv[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
u=year;
w=month;
for(i=0;i if(u%4==0&&u%100! =0||u%400==0){ v[2]=29; } j=j+v[i]; } s=u-1+(u-1)/4-(u-1)/100+(u-1)/400+(j+1); s=s%7; returns; } 4.直线绘图的方法 publicvoidpaint(Graphicsg){ for(inti=100;i<300;i+=30) g.drawLine(20,i,300,i); Fontfnt=newFont("楷体Gb_2312",Font.PLAIN,12); g.setFont(fnt); intj=20; for(inti=0;i<7;i++){ g.drawString(days[i],j,120); j=j+40;} intday,month=Integer.parseInt(txt2.getText()); intyear=Integer.parseInt(txt1.getText()); if(month==2){ if(year%4==0&&year%100! =0||year%400==0) day=29; else day=28; } elseif((month==4)||(month==6)||(month==9)||(month==11)) day=30; else day=31; ee=newString[day]; for(inti=0;i for(inti=day;i ww=newString[z+day]; for(inti=0;i<=z;i++){ww[i]="";} for(inti=z;i intw=0,p=0; for(intk=0;k if(w>6){ w=0;p=p+30;} g.drawString(ww[k],20+w*40,150+p); w++;} } } 二、连连看课程设计 1、课题设计的目的: 1)进一步加深对Java语言的理解和掌握;将所学的JAVA知识运用于实践中。 2)课程设计将理论与实践相结合,提供了一个既动手又动脑,独立实践的机会,锻炼我们的分析解决实际问题的能力,提高学生适应实际,实践编程的能力; 3)熟练掌握JAVA语言中图形用户界面程序的编写; 4)大体了解怎样用JAVA来编写小游戏的,增强我们实践能力和创新精神的综合培养。 2、可行性论证: “连连看“游戏是一个经典的游戏,它因操作简单、娱乐性强而广受欢迎。 我通过所学的JAVA,设计了一个操作简单、界面美观、功能较齐全的“连连看”游戏。 通过本游戏的开发,达到学习Java技术和熟悉软件开发流程的目的。 这个游戏是用图形界面实现的,通过编译解释后,出现一个图开界面。 界面是由若干个小方格组成的,每一个小方格里有一个数值,如果在一个边上有相同的数值,连续点击它们就会消失,同时界面上正上方的分数就会自动加分。 游戏还设有退出、重列、再来一局的功能,方便游戏操作。 3.1源程序: 3.1.1初始化 packagecmdjava.lianliankan; importjavax.swing.*; importjava.awt.*; importjava.awt.event.*; importjava.io.File; importjava.io.FilenameFilter; publicclasslianliankanimplementsActionListener{ JFramemainFrame;//主面板 ContainerthisContainer; JPanelcenterPanel,southPanel,northPanel;//子面板 JButtondiamondsButton[][]=newJButton[6][5];//游戏按钮数组 JButtonexitButton,resetButton,newlyButton;//退出,重列,重新开始按钮 JLabelfractionLable=newJLabel("0");//分数标签 JButtonfirstButton,secondButton;//分别记录两次被选中的按钮 publicvoidxiao() {//相同的情况下能不能消去。 仔细分析,不一条条注释 if((x0==x&&(y0==y+1||y0==y-1))||((x0==x+1||x0==x-1)&&(y0==y))) {//判断是否相邻 remove(); } else { for(j=0;j<7;j++) { if(grid[x0][j]==0) {//判断第一个按钮同行哪个按钮为空 if(y>j) {//如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边 for(i=y-1;i>=j;i--) {//判断第二按钮左侧直到第一按钮中间有没有按钮 if(grid[x][i]! =0) {k=0; break; } else{k=1;}//K=1说明通过了第一次验证 } if(k==1) { linePassOne(); } } if(y {//如果第二个按钮的Y坐标小于空按钮的Y坐标说明第一按钮在第二按钮右边 for(i=y+1;i<=j;i++) {//判断第二按钮左侧直到第一按钮中间有没有按钮 if(grid[x][i]! =0) {k=0; break; } else{k=1;} } if(k==1) {linePassOne();} } if(y==j) {linePassOne();} } if(k==2) { if(x0==x) {remove();} if(x0 { for(n=x0;n<=x-1;n++) { if(grid[n][j]! =0) {k=0; break; } if(grid[n][j]==0&&n==x-1) {remove();} } } if(x0>x) { for(n=x0;n>=x+1;n--) { if(grid[n][j]! =0) {k=0; break; } if(grid[n][j]==0&&n==x+1) {remove();} } } } } for(i=0;i<8;i++) {//列 if(grid[i][y0]==0) { if(x>i) { for(j=x-1;j>=i;j--) { if(grid[j][y]! =0) {k=0; break; } else{k=1;} } if(k==1) {rowPassOne();} } if(x { for(j=x+1;j<=i;j++) { if(grid[j][y]! =0) {k=0; break; } else{k=1;} } if(k==1) {rowPassOne();} } if(x==i) {rowPassOne();} } if(k==2) { if(y0==y) {remove();} if(y0 { for(n=y0;n<=y-1;n++) { if(grid[i][n]! =0) {k=0; break; } if(grid[i][n]==0&&n==y-1) {remove();} } } if(y0>y) { for(n=y0;n>=y+1;n--) { if(grid[i][n]! =0) {k=0; break; } if(grid[i][n]==0&&n==y+1) {remove();} } } } } } } publicvoidlinePassOne() { if(y0>j) {//第一按钮同行空按钮在左边 for(i=y0-1;i>=j;i--) {//判断第一按钮同左侧空按钮之间有没按钮 if(grid[x0][i]! =0) {k=0; break; } else{k=2;}//K=2说明通过了第二次验证 } } if(y0 {//第一按钮同行空按钮在与第二按钮之间 for(i=y0+1;i<=j;i++) { if(grid[x0][i]! =0) {k=0; break; } else{k=2;} } } } publicvoidrowPassOne() { if(x0>i) { for(j=x0-1;j>=i;j--) { if(grid[j][y0]! =0) {k=0; break; } else{k=2;} } } if(x0 { for(j=x0+1;j<=i;j++) { if(grid[j][y0]! =0) {k=0; break; } else{k=2;} } }} 5.课程设计体会 (1)选题目的: 本次课程设计为课本后设计题目任选一题进行设计。 思考一段时间后,我们组决定做一个万年历的设计。 主要考虑到以前时间少课程内容多,JAVA课程基础内容掌握并不是很抓实,而对于设计一个万年历程序,由于其功能简单设计也相对较易,对于我们组每个人的学习情况比较合适,并且通过设计这样的一个日历小组件,也能使自己对JAVA的一些基础知识掌握的更加牢固。 (2)对于本程序的设计,首先考虑其功能有哪些,需要显示什么,如何进行窗体构建布局,需要用哪些知识点,如相关的类和对象等。 最后,就是根据初步设计的功能和布局构架,考虑用源代码进行实现了。 通过这次课程设计,我明白了编写程序,不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。 还要熟悉常用的编程技巧和编程思想,不能只关心程序的运行结果,更要注重程序代码的结构,编程者更要有严谨地态度。 还有通过设计过程中大量地查阅网络文章,对一些关键知识点逐个地了解并解决相关问题。 所以网络这个强大的工具,确实是我们学习之中可以借助的一个很好的帮手。 网络是我们学习的最好的老师之一。 有问题,问网络,是一个很好的习惯。 参考文献 [1].曾令明索望甘刚宋波,Java程序设计教程,西安电子科技大学出版社,2007.8 [2].孙全党王吴迪赵枫朝,Java程序设计应用教程,电子工业出版社,2006.2 [3].玉阳,Java从入门到精通,清华大学出版社,2006.8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 报告