




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java程序设计课程设计报告设计题目:电子日历设计班级:学号:姓名:-目录-一 需求分析2二 概要设计3三 详细设计3四 程序代码9五 运行结果16六 设计总结17一 需求分析对于万年历系统,其主要功能是:查看当日日期(年、月、日)、查看当时时间、查看其他年月的月历。主要使用流程是:查看万年历系统,查看其他月份或年份日历,选中其他日期查看,查看当日日期。主要功能的用例描述如下:1.查看万年历(1)、进入万年历系统;(2)、系统获取当日日期并设置日历为当月,黑框选中当日日期;2.查询当月其他年份改变年份的方法是选择年份。(1)、点击选择年份的下拉菜单,选择年份;(2)、系统获取已选择的年份;(3)、系统设置为已选年份当月的月历并显示在界面显示。3.查询当年的其他月份改变月份的方法是选择月份。(1)、点击选择月份的下拉菜单,选择年份;(2)、系统获取已选择的月份;(3)、系统设置已选月份为当年的月历并在界面显示。4.选择其他日期查看(1)、点击其他日期;(2)、系统对所有日期的label进行监听,判断点击的那个label;(3)、返回被点击的label的数组下标;(4)、对该下标的label设置蓝色边框,表示选中。二 概要设计(1)可以通过图形界面显示日历。 (2)能以月历形式显示日期与星期。 (3)支持用户自己输入年份,可以通过上一年,下一年等按钮来选择年份和月份。 三 详细设计1.总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天为366,否则,为365。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。 2.输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期几,若是7,则为星期日。 3.算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。 4.输出年份介于1970-21005.显示系统时间。6.功能实现万年历系统查询指定年份日历查询指定月份日历查询相邻年份日历查询相邻月份日历查看今日显示时间7.关键技术(1)界面的绘制与显示public class CalendarSample extends JFrame implementsActionListener,ItemListenerint width,height;static int year=1990, month=1;JButton jl1,jl2;JLabel endfield;JPanel jp;Choice chyear;JTable table;Object tab;CalendarBean ca;String a;Object name=日,一,二,三,四,五,六;public static void main(String args) new CalendarSample();public CalendarSample()jp=new JPanel();ca= new CalendarBean();year=ca.getYear();month=ca.getMonth();jl1=new JButton(上月);jl2=new JButton(下月);chyear=new Choice();for(int i=1970;i2100;i+)chyear.add(String.valueOf(i);tab=new Object67;jl1.addActionListener(this);jl1.setActionCommand(left);jl2.addActionListener(this);jl2.setActionCommand(right);chyear.addItemListener(this);chyear.setName(c1);endfield= new JLabel(+year+年 +month+月,JLabel.CENTER);update();jp.add(jl1);jp.add(jl2);jp.add(new JScrollPane(table),BorderLayout.CENTER);this.add(chyear,BorderLayout.NORTH);this.add(jp,BorderLayout.CENTER);this.add(endfield,BorderLayout.SOUTH);width=500;height=210;this.setTitle(日历);this.setResizable(false);this.setSize(width, height);Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();this.setLocation(screenSize.width-width)/2, (screenSize.height-height)/2);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);validate();public void actionPerformed(ActionEvent e) if(e.getActionCommand().equals(left)if(month=1)year-=1;month=12;elsemonth-;else if(e.getActionCommand().equals(right)if(month=12)year+=1;month=1;elsemonth+;update();validate();public void itemStateChanged(ItemEvent e) Choice tmp = (Choice) e.getSource();if(tmp.getName().equals(c1)year= Integer.parseInt(String) e.getItem();update();validate();public void update()ca.setYear(year);ca.setMonth(month);endfield.setText(+year+年 +month+月);chyear.select(String.valueOf(year);int n=0;a = ca.getCalendar();for(int i=0;i6;i+)for(int j=0;j7;j+)if(!(+an).equals(+null)tabij=+an;elsetabij=;n+;table=new JTable(tab,name);getContentPane().removeAll();this.add(chyear,BorderLayout.NORTH);this.add(jp,BorderLayout.CENTER);this.add(endfield,BorderLayout.SOUTH);validate();(2)根据月份判断每个月的天数以及判断是否为闰年来判断2月的天数public int getDaysOfMonth(int year, int Month) /显示所选月份的天数 if(Month = 1 | Month = 3 | Month = 5 | Month = 7 | Month = 8 | Month = 10 | Month = 12) return 31; if(Month = 4 | Month = 6 | Month = 9 | Month = 11) return 30; if(year%4 = 0 & year%100 != 0 | year%400 = 0)/闰年 return 29; else return 28; 四 程序代码import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.Calendar;import java.util.Date;public class CalendarSample extends JFrame implements ActionListener,ItemListenerint width,height;static int year=1990, month=1;JButton jl1,jl2;JLabel endfield;JPanel jp;Choice chyear;JTable table;Object tab;CalendarBean ca;String a;Object name=日,一,二,三,四,五,六;public static void main(String args) new CalendarSample();public CalendarSample()jp=new JPanel();ca= new CalendarBean();year=ca.getYear();month=ca.getMonth();jl1=new JButton(上月);jl2=new JButton(下月);chyear=new Choice();for(int i=1970;i2100;i+)chyear.add(String.valueOf(i);tab=new Object67;jl1.addActionListener(this);jl1.setActionCommand(left);jl2.addActionListener(this);jl2.setActionCommand(right);chyear.addItemListener(this);chyear.setName(c1);endfield= new JLabel(+year+年 +month+月,JLabel.CENTER);update();jp.add(jl1);jp.add(jl2);jp.add(new JScrollPane(table),BorderLayout.CENTER);this.add(chyear,BorderLayout.NORTH);this.add(jp,BorderLayout.CENTER);this.add(endfield,BorderLayout.SOUTH);width=500;height=210;this.setTitle(日历);this.setResizable(false);this.setSize(width, height);Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();this.setLocation(screenSize.width-width)/2, (screenSize.height-height)/2);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);validate();public void actionPerformed(ActionEvent e) if(e.getActionCommand().equals(left)if(month=1)year-=1;month=12;elsemonth-;else if(e.getActionCommand().equals(right)if(month=12)year+=1;month=1;elsemonth+;update();validate();public void itemStateChanged(ItemEvent e) Choice tmp = (Choice) e.getSource();if(tmp.getName().equals(c1)year= Integer.parseInt(String) e.getItem();update();validate();public void update()ca.setYear(year);ca.setMonth(month);endfield.setText(+year+年 +month+月);chyear.select(String.valueOf(year);int n=0;a = ca.getCalendar();for(int i=0;i6;i+)for(int j=0;j7;j+)if(!(+an).equals(+null)tabij=+an;elsetabij=;n+;table=new JTable(tab,name);getContentPane().removeAll();this.add(chyear,BorderLayout.NORTH);this.add(jp,BorderLayout.CENTER);this.add(endfield,BorderLayout.SOUTH);validate();class CalendarBean String day; Calendar kalendar; int year = 1990, month = 1; kalendar = Calendar.getInstance(); kalendar.setTime(new Date(); month = kalendar.get(Calendar.MONTH)+1; year = kalendar.get(Calendar.YEAR); public void setYear(int year) this.year = year; public int getYear() return year; public void setMonth(int month) this.month = month; public int getMonth() return month; public String getCalendar() String a = new String42; kalendar.set(year, month - 1, 1); int week = kalendar.get(Calendar.DAY_OF_WEEK) - 1; int day = 0; if (month = 1 | month = 3 | month = 5 | month = 7 | month = 8 | month = 10 | month = 12) day = 31; if (month = 4 | month = 6 | month = 9 | month = 11) day = 30; if (month = 2) if (year % 4 = 0) & (year % 100 != 0) | (year % 400 = 0) day = 29; else day = 28; for (int i = week, n = 1; i week + day; i+) ai = String.valueOf(n); n+; return a; class Look extends JDialog implements ItemListenerChoice skin;public Look()skin=new Choice();skin.add();skin.add();skin.add();skin.addItemListener(this);this.add(skin);this.setSize(200, 150);Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();this.setLocation(screenSize.width-200)/2, (screenSize.height-150)/2);this.setVisible(true);this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);validate();public
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电力生产质量培训
- 文化遗产保护项目2025年资金申请政策解读报告
- 高压安全技术操作考试题及答案
- 文化旅游产业与创意产业融合的2025年资金申请报告
- 工商银行2025绍兴市数据分析师笔试题及答案
- 邮储银行2025三沙市笔试英文行测高频题含答案
- 2025年3D打印技术的快速成型制造研究
- 邮储银行2025淮北市秋招群面案例总结模板
- 2025年3D打印技术的创新应用领域
- 建设银行2025来宾市秋招笔试英语题专练及答案
- 卡拉瓦乔课件
- 李东垣《脾胃论》【译文】
- 东方财富通的函数修订版
- 第17册中药成方制剂 卫生部颁药品标准
- 《医院员工激励问题研究11000字(论文)》
- 品管圈计划书(模板)
- GB/T 26559-2011机械式停车设备分类
- GB/T 2423.22-2012环境试验第2部分:试验方法试验N:温度变化
- 水土保持工程质量评定表
- 人像摄影:户外人像摄影课件
- 纸张消耗统计表
评论
0/150
提交评论