万年历java课程设计说明书.docx
- 文档编号:12275703
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:17
- 大小:38.38KB
万年历java课程设计说明书.docx
《万年历java课程设计说明书.docx》由会员分享,可在线阅读,更多相关《万年历java课程设计说明书.docx(17页珍藏版)》请在冰点文库上搜索。
万年历java课程设计说明书
JAVA程序设计课程设计(论文)
题目:
万年历
院(系):
软件学院
专业班级:
计算机信息管理051班
学号:
学生姓名:
指导教师:
教师职称:
起止时间:
程序设计专题(报告)任务及评语
院(系):
软件学院教研室:
软件教研室
学号
学生姓名
专业班级
程序设计(报告)题目
万年历
程序设计(报告)任务
程序设计专题的任务与要求:
(1)掌握Java编程、面向对象的基础知识。
(2)较熟练地编写Java应用程序Application。
(3)了解Java的常用标准类库、编程技巧、异常处理。
(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。
(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。
正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。
指导教师评语及成绩
成绩:
指导教师签字:
2007年6月13日
目录
第1章课程设计的目的与要求1
1.1课程设计目的1
1.2课程设计的实验环境1
1.3课程设计的预备知识1
1.4课程设计要求1
第2章课程设计内容2
2.1课程设计题目2
2.2课程设计整体设计说明2
2.2.1课程设计内容2
2.2.2程序中所用类说明3
2.2.3程序中使用方法的说明3
2.2.4异常处理说明4
2.2.5程序运行效果及存在的问题4
2.3程序部分源代码及注释5
第3章课程设计总结12
参考资料13
第1章课程设计的目的与要求
1.1课程设计目的
《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
本课程的程序设计专题实际是计算机信息管理专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
1.2课程设计的实验环境
硬件要求能运行Windows9.X操作系统的微机系统。
JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。
1.3课程设计的预备知识
熟悉JAVA语言及ECLIPSE开发工具。
1.4课程设计要求
按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。
要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握JAVA程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。
同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。
第2章课程设计内容
2.1课程设计题目
万年历
2.2课程设计整体设计说明
这次课程设计是制作一个万年历能显示出当前时间和当月月历,并且可以查看1-9999年每个月的月历。
选择年月查看每月日历。
并且能显示当前系统时间和某天是星期几。
可以点击年份后的▼选择年,月份后的▼选择月,点查看按钮查看该月的日历。
这次我使用的编程语言是JAVA语言。
我采用的编译环境是Windows2003中文版+J2SDK1.6.0中文版+Eclipse3.2.1+Eclipse3.2.1中文语言包+SWTdesigner5.1.0
使用JAVA语言及SWT进行可视编辑完成该功能。
2.2.1课程设计内容
(一)安装编译环境
(1)安装Java开发包:
jdk1.6.0:
运行j2sdk1.6.0.exe程序。
(2)安装Eclipse:
将下载的Eclipse压缩包eclipse-SDK-3.2.1-win32.zip解压到指定目录下。
(3)汉化Eclipse:
将下载的汉化压缩包NLpack1-eclipse-SDK-3.2.1-win32.zip按原路径解压即可,也就是直接覆盖eclipse文件下的features、plugins两个文件夹。
(4)安装SWTdesigner:
将下载的压缩包按原路径解压即可,也就是直接覆盖eclipse文件夹下的features、plugins两个文件夹。
(二)进入Eclipse:
双击Eclipse图标,进入Eclipse。
(三)打开Eclipse,首先选择工作空间,点击“浏览”选择路径:
“我的文档\课程设计\”。
(四)新建SWT项目:
Eclipse中选择菜单项:
文件>新建>项目>Designer>
SWT/JFaceJavaProject在弹出的对话框中输入项目名称:
“Kechengsheji”并设置各项参数。
(五)新建包:
选择菜单项:
文件>新建>包,包的名称为“lizhiyong”,按“确定”按钮,新建包。
(六)在“包资源管理器”视图中,选择lizhiyong项目。
单击菜单项:
文件>新建>文件在弹出的对话框中输入文件名MainFrame.java同样再建立Clock.java。
(七)打开MainFrame.java新建并设计主窗体类MainFrame。
(八)打开Clock.java新建并设计当前时钟类Clock。
(九)调试:
选择菜单项:
运行>调试>调试方式>SWT应用程序,找出错误并改正,直到调试成功。
(十)运行程序看结果:
菜单项:
运行>运行>运行方式>SWT应用程序,运行程序看结果,验证是否与期待结果相同。
2.2.2程序中所用类说明
MainFrame主窗体类:
设计显示月历和时间及年份和月份选择按钮及查看按钮。
Clock当前时间类:
从系统中提取当前时间并以yyyy年MM月dd日hh:
mm:
ss显示。
2.2.3程序中使用方法的说明
MainFrame类中方法:
MainFrame():
MainFrame类的构造函数,设置窗体属性
Init()显示月历方法
use():
取查询月份第一天星期的方法
Resetday():
运算是否闰年及各个月天数的方法
main():
主方法程序在此开始执行
Clock类中方法:
Clock():
Clock类的构造函数
run():
每秒取一次系统时间
paint():
在主窗体上显示当前时间的方法
getTime():
提取系统时间的方法
2.2.4异常处理说明
异常是异常事件的简称,它定义为在执行程序过程中出现了不正常的事件,破坏了正常的指令流。
Java语言如果出现异常就要进行异常处理。
Clock类中有段代码含有异常处理。
try{
t.sleep(1000);//休眠1秒钟
}catch(InterruptedExceptione){
System.out.println("异常");
}
很多Java™语言方法,如Thread.sleep()可以抛出InterruptedException异常。
程序需要暂停一段时间,于是调用t.sleep(1000)休眠一秒。
(t.sleep(1000)是Thread.sleep()的一个实例。
)所以我在使用这个方法时先try捕获异常,然后catch处理异常(如果出现异常显示提示信息:
“异常”)。
2.2.5程序运行效果及存在的问题
在ECLIPSE下编译运行的效果如图。
可以选择年月查看每月日历。
并且能显示当前系统时间和某天是星期几。
可以点击年份后的▼选择年,月份后的▼选择月,点查看按钮查看该月的日历。
存在的问题:
在进行代码的调试的时候,代码有的地方少了输入有误,有的少了标点,有的方法引用不当,最重要的是版本不正确而导致不能运行程序中的部分包。
但经过细心的调试,认真的解读有了很好的改观,错误从十几处,减到无错误,便已成功,最后被圆满的完成课设。
功能上存在的问题就是不能显示出农历效果,当然农历的算法比较复杂,就连MicrosoftWindows系统的时间/日期功能也没有提供农历的效果。
2.3程序部分源代码及注释
MainFrame.java源代码
packagelizhiyong;//包:
lizhiyong
importjavax.swing.*;//引入包
importjava.awt.*;//引入包
importjava.awt.event.*;//引入包
importjava.text.*;//引入包
importjava.util.*;//引入包
classMainFrameextendsJFrame{//建立MainFrame类
JPanelpanel=newJPanel(newBorderLayout());//设置窗体属性
JPanelpanel1=newJPanel();//设置窗体属性
JPanelpanel2=newJPanel(newGridLayout(7,7));//设置窗体属性
JPanelpanel3=newJPanel();//设置窗体属性
JLabel[]label=newJLabel[49];//设置窗体属性
JLabely_label=newJLabel("年份");//设置窗体属性
JLabelm_label=newJLabel("月份");//设置窗体属性
JComboBoxcom1=newJComboBox();//设置窗体属性
JComboBoxcom2=newJComboBox();//设置窗体属性
JButtonbutton=newJButton("查看");//设置窗体属性
intre_year,re_month;//定义变量:
年,月
intx_size,y_size;//定义变量:
位置x坐标,y坐标
Stringyear_num;//定义字符串类型变量year_num
Calendarnow=Calendar.getInstance();//实例化Calendar
MainFrame(){//编写构造函数,设置窗体属性
super("万年历");//标题:
万年历
setSize(300,350);//大小:
300*350
x_size=(int)(Toolkit.getDefaultToolkit().getScreenSize().getWidth());
//设置x坐标位置
y_size=(int)(Toolkit.getDefaultToolkit().getScreenSize().getHeight());
//设置y坐标位置
setLocation((x_size-300)/2,(y_size-350)/2);//设置位置
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭按钮
panel1.add(y_label);//设置标签及按钮
panel1.add(com1);//设置标签及按钮
panel1.add(m_label);//设置标签及按钮
panel1.add(com2);//设置标签及按钮
panel1.add(button);//设置标签及按钮
for(inti=0;i<49;i++){
label[i]=newJLabel("",JLabel.CENTER);//将显示的字符设置为居中
panel2.add(label[i]);
}
panel3.add(newClock(this));
panel.add(panel1,BorderLayout.NORTH);
panel.add(panel2,BorderLayout.CENTER);
panel.add(panel3,BorderLayout.SOUTH);
panel.setBackground(Color.white);//设置背景颜色:
白色
panel1.setBackground(Color.white);//设置背景颜色:
白色
panel2.setBackground(Color.white);//设置背景颜色:
白色
panel3.setBackground(Color.white);//设置背景颜色:
白色
Init();//调用Init方法显示日历
button.addActionListener(newActionListener(){//设置按钮代码
publicvoidactionPerformed(ActionEvente){
intc_year,c_month,c_week;
c_year=Integer.parseInt(com1.getSelectedItem().toString());//得到当前所选年份
c_month=Integer.parseInt(com2.getSelectedItem().toString())-1;
c_week=use(c_year,c_month);//调用函数use,得到星期几
Resetday(c_week,c_year,c_month);//调用函数Resetday
}
}
);
setContentPane(panel);//设置按钮属性
setVisible(true);//设置按钮属性
setResizable(false);//设置按钮属性
}
publicvoidInit(){//建立Init方法显示日历
intyear,month_num,first_day_num;
Stringlog[]={"日","一","二","三","四","五","六"};
for(inti=0;i<7;i++){
label[i].setText(log[i]);//显示"日","一","二","三","四","五","六"
}
for(inti=0;i<49;i=i+7){
label[i].setForeground(Color.red);//将星期日的日期设置为红色
}
for(inti=6;i<49;i=i+7){
label[i].setForeground(Color.green);//将星期六的日期设置为绿色
}
for(inti=1;i<10000;i++){
com1.addItem(""+i);
}
for(inti=1;i<13;i++){
com2.addItem(""+i);
}
month_num=(int)(now.get(Calendar.MONTH));//得到当前时间的月份
year=(int)(now.get(Calendar.YEAR));//得到当前时间的年份
com1.setSelectedIndex(year-1);//设置下拉列表显示为当前年
com2.setSelectedIndex(month_num);//设置下拉列表显示为当前月
first_day_num=use(year,month_num);//计算第一天是星期几
Resetday(first_day_num,year,month_num);//计算是否闰年
}
publicintuse(intreyear,intremonth){//建立use方法
intweek_num;
now.set(reyear,remonth,1);//设置时间为所要查询的年月的第一天
week_num=(int)(now.get(Calendar.DAY_OF_WEEK));//得到第一天的星期
returnweek_num;//返回星期数
}
publicvoidResetday(intweek_log,intyear_log,intmonth_log){
intmonth_score_log;//判断是否是闰年的标记
intmonth_day_score;//存储月份的天数
intcount;
month_score_log=0;
month_day_score=0;
count=1;
if(year_log%4==0&&year_log%100!
=0||year_log%400==0){//判断是否为闰年
month_score_log=1;//标记为闰年
}
month_log=month_log+1;//将传来的月份数加1
switch(month_log){//判断该月天数
case1:
case3:
case5:
case7:
case8:
case10:
case12:
month_day_score=31;//1、3、5、7、8、10、12月天数设置为31天
break;
case4:
case6:
case9:
case11:
month_day_score=30;//4、6、9、11月天数设置为30天
break;
case2:
if(month_score_log==1){
month_day_score=29;//闰年2月天数设置为29天
}
else{
month_day_score=28;//平年2月天数设置为28天
}
break;
}
for(inti=7;i<49;i++){//初始化标签
label[i].setText("");
}
week_log=week_log+6;//将星期数加6,使显示正确
month_day_score=month_day_score+week_log;
for(inti=week_log;i label[i].setText(count+""); } } publicstaticvoidmain(String[]args){//主方法 JFrame.setDefaultLookAndFeelDecorated(true); MainFramestart=newMainFrame(); } } Clock.java源代码 packagelizhiyong;//包: lizhiyong importjavax.swing.*;//引入包 importjava.awt.*;//引入包 importjava.awt.event.*;//引入包 importjava.text.*;//引入包 importjava.util.*;//引入包 classClockextendsCanvasimplementsRunnable{//建立Clock类显示当前时间 MainFramemf; Threadt; Stringtime; Clock(MainFramemf){ this.mf=mf; setSize(400,40);//设置窗体大小400*40 setBackground(Color.white);//设置背景颜色: 白色 t=newThread(this);//实例化线程 t.start();//调用线程 } publicvoidrun(){//建立run方法每秒更新时间 while(true){ try{//捕获异常 t.sleep(1000);//休眠1秒钟 }catch(InterruptedExceptione){//处理异常 System.out.println("异常"); } this.repaint(100); } } publicvoidpaint(Graphicsg){//建立paint方法显示当前时间 Fontf=newFont("宋体",Font.BOLD,16);//设置字体 SimpleDateFormatSDF=newSimpleDateFormat("yyyy'年'MM'月'dd'日'HH: mm: ss");//格式化时间显示类型 Calendarnow=Calendar.getInstance(); time=SDF.format(now.getTime());//得到当前日期和时间 g.setFont(f); g.setColor(Color.orange);//设置背景颜色: 橙色 g.drawString(time,100,25); } } 第3章课程设计总结 通过这次课程设计,加强了我对JAVA语言的理解,使课堂上的理论在实践中得到运用。 我对《JAVA程序设计》这门程序设计语言进行了一次完整的学习与实践。 对JAVA的常量、变量、运算、类、流程、SWT、窗体和Applet进行了复习与实践,综合运用所学知识,系统的进行了一次软件工程开发,完成了课程设计的任务,并在实践应用方面打下一定基础。 这次课程设计,使我对本门课程有了更深一步的理解,《JAVA程序设计》并不是简单的计算机语言,它能够延伸到更宽更广的领域。 学好这些知识也能为自己在以后学习动态网页制作打下坚实的基础。 在掌握JAVA语言程序设计的理论知识的基础上,我能够结合实际,设计编程,调试运行JAVA语言程序,完成课程设计论文。 为了能够较好地完成本次课程设计,我进行了阅读教材,网上搜索,到图书馆查找相关资料等准备工作,在做课程设计的过程中,我在利用所学知识的同时,又学到了很多实例化的理论知识和软件工程的一些实践。 总结了一些经验和方法。 强化了我的实际动手能力。 同时也找到自己的不足。 我一定会继续学习增加自己的编程能力和调试能力,在今后的学习中我会更加的努力,增加自己的知识储备。 拓宽了知识面,锻炼了能力,综合素质得到较大提高。 最后感谢老师给予的耐心指导与帮助,使我能顺利完成这次课程设计。 参考资料 [1]宋振会.《JAVA语言编程基础教程》.北京: 清华大学出版社,2005-5 [2]耿祥义.《JAVA大学实用教程》.北京: 电子工业出版社,2005-3 [3]耿祥义.《JAVA大学实用教程实验指导》.北京: 电子工业出版社,2005-3 [4][美]CayS.Horstmann,程峰.《JAVA2核心技术》.北京: 机械工业出版社,2003-3 [5]魏永继.《JAVA应用程序开发》.北京: 机械工业出版社,2007-2 [6]王雪轻.《JAVA入门与提高》.北京: 人民邮电出版社,2004-2 [7]孟繁新.《Eclipse实例开发与应用》.沈阳: 东北大学出版社,2005-1 [8]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 万年历 java 课程设计 说明书