日历源程序带有需求分析及截图.doc_第1页
日历源程序带有需求分析及截图.doc_第2页
日历源程序带有需求分析及截图.doc_第3页
日历源程序带有需求分析及截图.doc_第4页
日历源程序带有需求分析及截图.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java实训报告课 程 名:java课程设计适用专业:软件工程班级:软件089姓名:曹火霞指导老师:王映龙江西农业大学软件学院 2010 年8 月需求分析【需求功能描述】用一种熟悉的语言编写一个日历程序,该日历要实现的功能有一下几个:、当程序运行时,显示的时间是系统当前时间;、可以手动输入时间,确定后系统要跳转到指定的时间,并显示出星期几.、提供一种点击功能,通过点击,可以实现月份的自增,自减,日期的自增,自减功能.、要求星期日显示的位置是在星期一前面.、系统要提供一种良好的工能扩展接口,以方便以后对本系统进行功能扩展.【需求界面描述】、最要紧的是界面要足够的清爽.、界面布局要合理、日历的界面初始大小不宜过大,以300*300为宜【性能需求】、要提供一种良好的异常处理机制。、要对发生了异常的事件进行精确的判断,并进行处理。、程序的可移植性要好,尽量消除对环境的依赖。【总体设计】、数据流图初始化标签新建label标签初始化年、月、日初始化时间显示面板初始化自增、自减按钮新建label标签初始化星期显示栏初始化画布、容器添加所有组件Main()函数实例化一个对象【测试计划说明书】测试用例的设计:针对此系统我们主要采用黑盒测试和白盒测试。下面是具体的测试计划:1、 黑盒测试:从系统界面入手,采用规则和不规则,合理与不合理的数据为输入,以观察输出结果是否与预期结果或者是需求分析描述的结果相符。并且详细的记录每一种测试用例,以备后续的回归测试和分析与总结测试结果用。2、 白盒测试:从系统的逻辑结构出发,针对结构的每一个分支进行测试。其次,再辅以单元测试、集成测试、回归测试、以及最终用户的确认测试。所谓单元测试,是针对程序的每一个功能模块进行测试,等到确认该功能模块正确无误在进行该模块的集成测试。单元测试保证了每一个功能模块的正确性。所谓集成测试,是将每一个功能模块以此地、逐步地集成在一起进行测试,以观察各个功能模块之间的相容性。如果测试到某一阶段时发现错误,此时我们就必须对源程序进行相应的修改,然后进行回归测试。在所有的测试完成且无异常,错误之后。我们把系统交给用户,让用户对本系统进行确认测试。确认测试是最后一道测试工序,它将决定用户是否接收本系统。【程序实现】以下是本系统的代码实现。package com.hhj;import java.awt.BorderLayout;/引入BorderLayout类,用以对窗口进行布局import java.awt.Color;/引入awt的颜色类import java.awt.Dimension;import java.awt.GridLayout;import java.awt.SystemColor;/引入系统颜色类import java.awt.event.ActionEvent;/引入动作事件类import java.awt.event.KeyEvent;import java.awt.event.MouseEvent;import java.util.Calendar; import java.util.GregorianCalendar;import java.util.Locale;import java.util.Date;import java.util.StringTokenizer;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.JToggleButton;import javax.swing.SwingConstants;import javax.swing.UIManager;/引入用户界面管理类,从而对用户界面进行相应的管理/* * Title: Swing日历 * Description: 操作日期 */class JCalendar extends JPanel/动态表示年月日 private int year=0; private int month=0; private int day=0;/主面板 private JPanel Main = new JPanel();/日面板 private JPanel jPanelDay = new JPanel();/月面板 private JPanel jPanelMonth = new JPanel();/年的输入位置 private JTextField Year = new JTextField();/月的输入位置 private JTextField Month = new JTextField();/减少月份 private JButton MonthDown = new JButton();/增加月份 private JButton MonthUp = new JButton(); private JPanel jPanelButton = new JPanel();/减少年份 private JButton YearDown = new JButton();/增加年份 private JButton YearUp = new JButton();/显示日期的位置 private JLabel Out = new JLabel();/中国时区,以后可以从这里扩展可以设置时区的功能 private Locale l=Locale.CHINESE;/主日历 private GregorianCalendar cal=new GregorianCalendar(l);/星期面板 private JPanel weekPanel=new JPanel();/天按钮组 private JToggleButton days=new JToggleButton42;/天面板 private JPanel Days = new JPanel();/标示 private JLabel jLabel1 = new JLabel(); private JLabel jLabel2 = new JLabel(); private JLabel jLabel3 = new JLabel(); private JLabel jLabel4 = new JLabel(); private JLabel jLabel5 = new JLabel(); private JLabel jLabel6 = new JLabel(); private JLabel jLabel7 = new JLabel();/当前选择的天数按钮 private JToggleButton cur=null;/月份天数数组,用来取得当月有多少天 / 1 2 3 4 5 6 7 8 9 10 11 12 private int mm=31,28,31,30,31,30,31,31,30,31,30,31;/空日期构造函数/并用trycatch语句捕获异常 public JCalendar() try jbInit(); catch(Exception e) e.printStackTrace(); /带日期设置的构造函数 public JCalendar(int year, int month, int day) cal.set(year, month, day); try jbInit();/初始化年月日 catch (Exception e) e.printStackTrace(); /带日历输入的构造函数 public JCalendar(GregorianCalendar calendar) cal=calendar; try jbInit(); catch (Exception e) e.printStackTrace(); /带日期输入的构造函数 public JCalendar(Date date) cal.setTime(date); try jbInit(); catch (Exception e) e.printStackTrace(); /初始化组件 private void jbInit() throws Exception /初始化年、月、日 iniCalender(); this.setLayout(new BorderLayout(); this.setBorder(BorderFactory.createRaisedBevelBorder(); this.setMaximumSize(new Dimension(200, 200); this.setMinimumSize(new Dimension(200, 200); this.setPreferredSize(new Dimension(200, 200); Main.setLayout(new BorderLayout(); Main.setBackground(SystemC); Main.setBorder(null); Out.setBackground(Color.lightGray); Out.setHorizontalAlignment(SwingConstants.CENTER); Out.setMaximumSize(new Dimension(100, 19); Out.setMinimumSize(new Dimension(100, 19); Out.setPreferredSize(new Dimension(100, 19); jLabel1.setForeground(Color.red); jLabel1.setHorizontalAlignment(SwingConstants.CENTER); jLabel1.setHorizontalTextPosition(SwingConstants.CENTER); jLabel1.setText(日); jLabel2.setForeground(Color.blue); jLabel2.setHorizontalAlignment(SwingConstants.CENTER); jLabel2.setHorizontalTextPosition(SwingConstants.CENTER); jLabel2.setText(六); jLabel3.setHorizontalAlignment(SwingConstants.CENTER); jLabel3.setHorizontalTextPosition(SwingConstants.CENTER); jLabel3.setText(五); jLabel4.setHorizontalAlignment(SwingConstants.CENTER); jLabel4.setHorizontalTextPosition(SwingConstants.CENTER); jLabel4.setText(四); jLabel5.setHorizontalAlignment(SwingConstants.CENTER); jLabel5.setHorizontalTextPosition(SwingConstants.CENTER); jLabel5.setText(三); jLabel6.setBorder(null); jLabel6.setHorizontalAlignment(SwingConstants.CENTER); jLabel6.setHorizontalTextPosition(SwingConstants.CENTER); jLabel6.setText(二); jLabel7.setBackground(Color.lightGray); jLabel7.setForeground(Color.black); jLabel7.setBorder(null); jLabel7.setHorizontalAlignment(SwingConstants.CENTER); jLabel7.setHorizontalTextPosition(SwingConstants.CENTER); jLabel7.setText(一); weekPanel.setBackground(UIManager.getColor(InternalFrame.activeTitleGradient); weekPanel.setBorder(BorderFactory.createEtchedBorder(); weekPanel.setLayout(new GridLayout(1,7); weekPanel.add(jLabel1, null); weekPanel.add(jLabel7, null); weekPanel.add(jLabel6, null); weekPanel.add(jLabel5, null); weekPanel.add(jLabel4, null); weekPanel.add(jLabel3, null); weekPanel.add(jLabel2, null); MonthUp.setAlignmentX(float) 0.0); MonthUp.setActionMap(null); jPanelMonth.setBackground(SystemC); jPanelMonth.setLayout(new BorderLayout(); jPanelMonth.setBorder(BorderFactory.createEtchedBorder(); Month.setBorder(null); Month.setHorizontalAlignment(SwingConstants.CENTER); Month.addMouseListener(new java.awt.event.MouseAdapter() public void mouseClicked(MouseEvent e) Month_mouseClicked(e); ); Month.addKeyListener(new java.awt.event.KeyAdapter() public void keyPressed(KeyEvent e) Month_keyPressed(e); ); MonthDown.setBorder(null); MonthDown.setText(u25C4); MonthDown.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(ActionEvent e) MonthDown_actionPerformed(e); ); MonthUp.setBorder(null); MonthUp.setText(u25BA); MonthUp.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(ActionEvent e) MonthUp_actionPerformed(e); ); jPanelButton.setLayout(null); jPanelButton.setBorder(null); jPanelButton.addComponentListener(new java.awt.event.ComponentAdapter() public void componentResized(java.awt.event.ComponentEvent evt) jPanelButtonComponentResized(evt); ); Year.setBorder(BorderFactory.createEtchedBorder(); Year.setMaximumSize(new Dimension(80, 25); Year.setMinimumSize(new Dimension(80, 25); Year.setPreferredSize(new Dimension(80, 25); Year.setHorizontalAlignment(SwingConstants.CENTER); Year.addMouseListener(new java.awt.event.MouseAdapter() public void mouseClicked(MouseEvent e) Year_mouseClicked(e); ); Year.addKeyListener(new java.awt.event.KeyAdapter() public void keyPressed(KeyEvent e) Year_keyPressed(e); ); YearDown.setBorder(null); YearDown.setMaximumSize(new Dimension(16, 16); YearDown.setMinimumSize(new Dimension(16, 16); YearDown.setPreferredSize(new Dimension(16, 16); YearDown.setSize(new Dimension(16, 16); YearDown.setText(); YearDown.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(ActionEvent e) YearDown_actionPerformed(e); ); YearUp.setBorder(null); YearUp.setMaximumSize(new Dimension(16, 16); YearUp.setMinimumSize(new Dimension(16, 16); YearUp.setPreferredSize(new Dimension(16, 16); YearUp.setSize(new Dimension(16, 16); YearUp.setText(); YearUp.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(ActionEvent e) YearUp_actionPerformed(e); ); jPanelDay.setLayout(new BorderLayout(); Days.setLayout(new GridLayout(6,7); Days.setBackground(SystemC); for(int i=0;i42;i+) daysi=new JToggleButton(); daysi.setBorder(null); daysi.setBackground(SystemC); daysi.setHorizontalAlignment(SwingConstants.CENTER); daysi.setHorizontalTextPosition(SwingConstants.CENTER); /daysi.setSize(l,l); daysi.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(ActionEvent e) day=Integer.parseInt(JToggleButton)e.getSource().getText(); showDate(); showDays(); ); Days.add(daysi); this.add(Main, BorderLayout.NORTH); this.add(jPanelDay, BorderLayout.CENTER); this.add(jPanelMonth, BorderLayout.SOUTH); Main.add(Year, BorderLayout.CENTER); Main.add(Out, BorderLayout.WEST); Main.add(jPanelButton, BorderLayout.EAST); jPanelButton.add(YearUp); jPanelButton.add(YearDown); jPanelDay.add(weekPanel,BorderLayout.NORTH); jPanelDay.add(Days, BorderLayout.CENTER); jPanelMonth.add(Month, BorderLayout.CENTER); jPanelMonth.add(MonthDown, BorderLayout.WEST); jPanelMonth.add(MonthUp, BorderLayout.EAST); showMonth(); showYear(); showDate(); showDays(); /自定义重画年选择面板 void jPanelButtonComponentResized(java.awt.event.ComponentEvent evt) YearUp.setLocation(0,0); YearDown.setLocation(0,YearUp.getHeight(); jPanelButton.setSize(YearUp.getWidth(),YearUp.getHeight()*2); jPanelButton.setPreferredSize(new Dimension(YearUp.getWidth(),YearUp.getHeight()*2); jPanelButton.updateUI(); /测试用 SuppressWarnings(deprecation)/申明一个过时方法的使用public static void main(String args) JFrame f=new JFrame(); f.setContentPane(new JCalendar(); f.pack(); /f.setResizable(false); f.show(); /增加年份 void YearUp_actionPerformed(ActionEvent e) year+; showYear(); showDate(); showDays(); /减少年份 void YearDown_actionPerformed(ActionEvent e) year-; showYear(); showDate(); showDays(); /减少月份 void MonthDown_actionPerformed(ActionEvent e) month-; if(month0) month = 11; year-; showYear(); showMonth(); showDate(); showDays(); /增加月份 void MonthUp_actionPerformed(ActionEvent e) month+; if(month=12) month=0; year+; showYear(); showMonth(); showDate(); showDays(); /初始化年月日 void iniCalender() year=cal.get(Calendar.YEAR); month=cal.get(Calendar.MONTH); day=cal.get(Calendar.DAY_OF_MONTH); /刷新月份 void showMonth() Month.setText(Integer.toString(month+1)+月); /刷新年份 void showYear() Year.setText(Integer.toString(year)+年); /刷新日期 void showDate() Out.setText(Integer.toString(year)+-+Integer.toString(month+1)+-+Integer.toString(day); /重画天数选择面板 void showDays() cal.set(year,month,1); int firstDayOfWeek = cal.get(Calendar.DAY_OF_WEEK); int n=mmmonth; if(cal.isLeapYear(year)&month=1) n+; int i=0; for(;ifirstDayOfWeek-1;i+) daysi.setEnabled(false); daysi.setSelected(false); daysi.setText(); int d=1; for(;d=n;d+) daysi.setText(Integer.toString(d); daysi.setEnabled(true); if(d=day) daysi.setSelected(true); else daysi.setSelected(false); i+; for(;i42;i+) daysi.setEnabled(false); daysi.setSelected(false); daysi.setText(); /单击年份面板选择整个年份字符串 void SelectionYear() Year.setSelectionStart(0); Year.setSelectionEnd(Year.getText().length(); /单击月份面板选择整个月份字符串 void SelectionMonth() Month.setSelectionStart(0); Month.setSelectionEnd(Month.getText().length(); /月份面板响应鼠标单击事件 void Month_mouseClicked(MouseEvent e) /SelectionMonth(); inputMonth(); /检验输入的月份 void inputMonth() String s; if(Month.getText().endsWith(月) s=Month.getText().substring(0,Month.getText().length()-1); else s=Month.getText(); month=Integer.parseInt(s)-1; this.showMe(); /月份面板键盘敲击事件响应 void Month_keyPressed(KeyEvent e) if(e.getKeyChar()=10) inputMonth(); /年份面板响应鼠标单击事件 void Year_mouseClicked(MouseEvent e) /SelectionYear(); inputYear(); /年份键盘敲击事件响应 void Year_keyPressed(KeyEvent e) /System.out.print(new Integer(e.getKeyChar().byteValue(); if(e.getKeyChar()=10) inputYear(); /检验输入的年份字符串 void inputYear() String s; if(Year.getText().endsWith(年) s=Year.getText().substring(0,Year.getText().length()-1); else s=Year.getText(); year=Integer.parseInt(s); this.showMe(); /以字符串形式返回日期,yyyy-mm-dd public String getDate()return Out.getText(); /以字符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论