




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南第一师范学院信息科学与工程系课程设计报告题 目 java简易时间日历程序 2009 年 12 月 18 日目 录1. 课程设计任务书第 2页2. 题目说明第 4页3. 系统设计第 4页4. 类及接口描述第 5页5. 运行结果第 7页6. 程序源代码第 8页7. 总 结第17页8. 参考文献第18页2007级计算机应用专业java课程设计安排计划书指导老师:伍智平 指导方式:集体辅导、分组讨论研究一、 课程设计教学目的及基本要求1、 培养独立的java语言与算法设计方法,具备初步的独立分析和设计能力;2、 学习软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3、 训练综合运用所学的理论知识和方法进行独立分析和解决问题的能力;4、 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。5、 设计的题目要求达到一定工作量,程序能够运行,并对标准的测试数据有正确的输出结果。6、 按湖南第一师范学院信息科学与工程系课程设计报告写作规范要求的书写格式编写出课程设计报告书,报告书不少于8页(代码不算)。二、 计划安排1、 任务书下达时间:第15周2、 任务讲解与动员:第15周3、 任务设计与辅导:辅导教师:伍智平辅导形式:以学生自行设计为主,教师现场解答学生疑难问题。纪律要求:上课前学生签到,课后学习委员交名单给老师。4、完成时间:第16周星期四三、课程设计课题与安排每位学生在下面列出的设计题目中选择其中的一个独立完成:课题详细要求:参见教材13.2节课程设计的要求和选题(p408413)五、提交成果1、课程设计报告(电子版和打印版,格式参照湖南第一师范学院信息科学与工程系课程设计报告写作规范)(注意:报告中一定要包括课程设计任务书,课程设计任务书的格式参加本文档的附件1)2、源代码(电子版和打印版)六、成绩评定1、根据平时上机考勤(考勤20分);注重平时上机成绩,教师要不定期检查学生进度,学生不得以自己有私人电脑为借口而不来上机。2、根据程序运行结果(上机演示30分);3、 根据java课程设计报告,学生能对自己的程序面对教师提问并能熟练地解释清楚(报告50分)4、无报告书者或者答辩不通过者,课程设计记0分。 指导教师:伍智平 2009年12月10日课程设计题目2. 题目说明通过编写一个基于java的应用系统综合实例,自定义一个日历组件显示日期和时间并进行适当的功能扩充,实践java语言编程技术。3. 系统设计2.1 设计目标一个完整的程序应具有以下功能:1)显示当月日历、当前日期、当前时间;2)可查寻任意月以及任意年的日历;3)使用图形化界面能够弹出对话框;5)正常退出程序。 2.2 设计思想设计一个类用来构成日历系统的主窗口,然后编写一个框架类显示时间和提示信息。在设计中应用了多种容器和控件。2.3 系统模块划分public static class calendartable(日历类)public static void main(string args)public static class rollbyjframe(滚动时间类)public class mycalendar extends japplet(主日历框架类)图1:简易日历的程序结构图2.3.1 初始化: public void init()完成界面初始化,形成一个以挂历形式显示当前日期的窗口。2.3.2 日历描述: (1)public void updateview()改变日期后完成更新界面; (2)抽象类java.util.calendar获取系统日期并传递日期数据而且在人工改变日期后得出当天是周几; (3)public static void main(string args)主函数完成系统各算法的调用并对主窗口的一些属性进行设置;2.3.3 滚动时间: 将时间以文本的形式在文本框中滚动播出,并能改变滚动的速度。4. 使用类及接口仅仅简单说明类的功能,详细资料请参看 javatm2platform standarded. 6的电子文档,常规的接口与包则省略不屑。/以下是日历程序块中使用的类package fancy; import java.awt.*; import java.awt.event.*; import java.util.*; /主要用此包中的日期和时间类import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*;/以下是对滚动时间程序块所使用的类和接口,用到定时器类timerimport java.awt.color;import java.awt.flowlayout;import java.awt.event.actionlistener;import java.awt.event.actionevent;import java.awt.event.focuslistener;、/用于监听鼠标单击(焦点改变)事件import java.awt.event.focusevent;/用于响应鼠标单击(焦点改变)事件、import javax.swing.jframe;import javax.swing.jtextfield;import javax.swing.jspinner;/让用户从一个有序序列中选择一个数字或者一个对象值的单行输入字段。import javax.swing.jpanel;import javax.swing.timer;/在指定时间间隔触发一个或多个 actionevent, 创建一个 timer 对象,在该对象上注册一个或多个动作侦听器,以及使用 start 方法启动该计时器。并配合事件监听器支持时间的滚动播放。import javax.swing.event.changelistener;import javax.swing.event.changeevent;5. 运行结果与分析图2:初始界面显示日历。图3:点击查看时间按钮, 弹出时间消息对话框。图4:滚动显示当前时间。6. 程序源代码/* * (#) mycalendar.java * author fancy */日历使用的类 import java.awt.borderlayout;import java.awt.color;import java.awt.component;import java.awt.container;import java.awt.flowlayout;import java.awt.event.actionevent;import java.awt.event.actionlistener;import java.awt.event.focusevent;import java.awt.event.focuslistener;import java.util.calendar;import javax.swing.japplet;import javax.swing.jbutton;import javax.swing.jcombobox;import javax.swing.jframe;import javax.swing.jlabel;import javax.swing.joptionpane;import javax.swing.jpanel;import javax.swing.jspinner;import javax.swing.jtable;import javax.swing.jtextfield;import javax.swing.listselectionmodel;import javax.swing.timer;import javax.swing.event.changeevent;import javax.swing.event.changelistener;import javax.swing.table.abstracttablemodel;import javax.swing.table.tablecellrenderer;import javax.swing.table.tablemodel;/日历 public class mycalendar extends japplet public static final string week_sun = sun; public static final string week_mon = mon; public static final string week_tue = tue; public static final string week_wed = wed; public static final string week_thu = thu; public static final string week_fri = fri; public static final string week_sat = sat; public static final color background = color.yellow; public static final color foreground = color.black; public static final color headerbackground = color.blue; public static final color headerforeground = color.white; public static final color selectedbackground = color.blue; public static final color selectedforeground = color.white; private jpanel cpane; private jlabel yearslabel; private jspinner yearsspinner; private jlabel monthslabel; private jcombobox monthscombobox; private jtable daystable; private abstracttablemodel daysmodel; private calendar calendar; private jbutton button1; public mycalendar() cpane = (jpanel) getcontentpane(); public void init() cpane.setlayout(new borderlayout(); calendar = calendar.getinstance(); calendar = calendar.getinstance(); jbutton button1=new jbutton( 单击此处 查看时间 ); button1.setbounds(10,10,10,10); cpane.add(button1,borderlayout.south); button1.addactionlistener( new java.awt.event.actionlistener() public void actionperformed(actionevent e) rollbyjframe myrili=new rollbyjframe(); joptionpane.showmessagedialog(null, 您点击了+e.getactioncommand().tostring()+按钮); ); yearslabel = new jlabel(year: ); yearsspinner = new jspinner(); yearsspinner.seteditor(new jspinner.numbereditor(yearsspinner, 0000); yearsspinner.setvalue(new integer(calendar.get(calendar.year); yearsspinner.addchangelistener(new changelistener() public void statechanged(changeevent changeevent) int day = calendar.get(calendar.day_of_month); calendar.set(calendar.day_of_month, 1); calendar.set(calendar.year, (integer) yearsspinner.getvalue().intvalue(); int maxday = calendar.getactualmaximum(calendar.day_of_month); calendar.set(calendar.day_of_month, day maxday ? maxday : day); updateview(); ); jpanel yearmonthpanel = new jpanel(); cpane.add(yearmonthpanel, borderlayout.north); yearmonthpanel.setlayout(new borderlayout(); yearmonthpanel.add(new jpanel(), borderlayout.center); jpanel yearpanel = new jpanel(); yearmonthpanel.add(yearpanel, borderlayout.west); yearpanel.setlayout(new borderlayout(); yearpanel.add(yearslabel, borderlayout.west); yearpanel.add(yearsspinner, borderlayout.center); monthslabel = new jlabel(month: ); monthscombobox = new jcombobox(); for (int i = 1; i maxday ? maxday : day); updateview(); ); jpanel monthpanel = new jpanel(); yearmonthpanel.add(monthpanel, borderlayout.east); monthpanel.setlayout(new borderlayout(); monthpanel.add(monthslabel, borderlayout.west); monthpanel.add(monthscombobox, borderlayout.center); daysmodel = new abstracttablemodel() public int getrowcount() return 9; public int getcolumncount() return 7; public object getvalueat(int row, int column) if (row = 0) return getheader(column); row-; calendar calendar = (calendar) mycalendar.this.calendar.clone(); calendar.set(calendar.day_of_month, 1); int daycount = calendar.getactualmaximum(calendar.day_of_month); int moredaycount = calendar.get(calendar.day_of_week) - 1; int index = row * 7 + column; int dayindex = index - moredaycount + 1; if (index daycount) return null; else return new integer(dayindex); ; daystable = new calendartable(daysmodel, calendar); daystable.setcellselectionenabled(true); daystable.setselectionmode(listselectionmodel.single_selection); daystable.setdefaultrenderer(daystable.getcolumnclass(0), new tablecellrenderer() public component gettablecellrenderercomponent(jtable table, object value, boolean isselected, boolean hasfocus, int row, int column) string text = (value = null) ? : value.tostring(); jlabel cell = new jlabel(text); cell.setopaque(true); if (row = 0) cell.setforeground(headerforeground); cell.setbackground(headerbackground); else if (isselected) cell.setforeground(selectedforeground); cell.setbackground(selectedbackground); else cell.setforeground(foreground); cell.setbackground(background); return cell; ); updateview(); cpane.add(daystable, borderlayout.center); public static string getheader(int index) switch (index) case 0: return week_sun; case 1: return week_mon; case 2: return week_tue; case 3: return week_wed; case 4: return week_thu; case 5: return week_fri; case 6: return week_sat; default: return null; public void updateview() daysmodel.firetabledatachanged(); daystable.setrowselectioninterval(calendar.get(calendar.week_of_month), calendar.get(calendar.week_of_month); daystable.setcolumnselectioninterval(calendar.get(calendar.day_of_week) - 1, calendar.get(calendar.day_of_week) - 1); public static class calendartable extends jtable private calendar calendar; public calendartable(tablemodel model, calendar calendar) super(model); this.calendar = calendar; public void changeselection(int row, int column, boolean toggle, boolean extend) super.changeselection(row, column, toggle, extend); if (row = 0) return; object obj = getvalueat(row, column); if (obj != null) calendar.set(calendar.day_of_month, (integer)obj).intvalue(); public static void main(string args) jframe frame = new jframe(简易时间日历); frame.setdefaultcloseoperation(jframe.exit_on_close); mycalendar mycalendar = new mycalendar(); mycalendar.init(); frame.getcontentpane().add(mycalendar); frame.setlocation(330,80); frame.setsize(360, 212); frame.setvisible(true); /滚动字public static class rollbyjframe extends jframe implements actionlistener, focuslistener, javax.swing.event.changelistener private jtextfield text; private jspinner spinner; private timer timer; private jbutton button; public rollbyjframe() super(滚动时间); this.setsize(360,100); this.setbackground(java.awt.color.lightgray); this.setlocation(700,120); container c=getcontentpane(); jbutton button=new jbutton(修改速度); this.add(button,east); button.addactionlistener(this); calendar now = calendar.getinstance();int hour=now.get(calendar.hour);int minute=now.get(calendar.minute);int year=now.get(calendar.year);int month=now.get(calendar.month);int day=now.get(calendar.day_of_month); text = new jtextfield( hello 当前时间是: +hour+:+minute+ +year+/+month+/+day); this.add(text,center); text.addfocuslistener(this); /注册焦点事件监听器 timer = new timer(136,this); timer.start(); jpanel panel = new jpanel(new flowlayout(flowlayout.right); this.add(panel,south); spinner = new jspinner(); spinner.setvalue(timer.getdelay(); panel.add(spinner); spinner.addchangelistener(this); this.setvisible(true); public void focusgained(focusevent e) /获得焦点时 if (e.getsource()=text) timer.stop(); public void focuslost(focuse
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 可视对讲合同范本5篇
- 湖南省常德市2016年秋赛课说课稿人教版九年级上册第六单元课题2 二氧化碳制取的研究 鼎城
- 2025YY房屋租赁合同终止协议书
- 乌海事业单位笔试真题2025
- 2025基因技术服务合同书
- 任务三 了解水温控制说课稿-2025-2026学年小学信息技术(信息科技)六年级下册桂科版(信息科技)
- 2025中介借款合同范本
- 第十五课 网站的测试、发布与评价说课稿-2025-2026学年初中信息技术教科版八年级上册-教科版
- 2025买卖见证合同示范文本
- 德州事业单位笔试真题2025
- T/CI 311-2024风力发电机组高强钢塔架焊接附属件结构疲劳性能评价方法
- 公安计算机试题及答案
- 《肠道菌群》课件
- 《中医药信息学》课件
- 铁路旅客运输服务普速列车设备设施规范课件
- 大型活动标准化执行手册
- 做账实操-桌球俱乐部账务处理流程
- 高级起重工(三级)技能认定理论考试题(附答案)
- 高效团队合作与沟通技巧事务文书
- 管理信息系统Management Information System课件
- 2024年秋季学期新人教版数学一年级上册课件 第2单元 6~10的认识和家、减法 1 6~9的认识 第5课时 练一练
评论
0/150
提交评论