万年历课程设计任务书.docx
《万年历课程设计任务书.docx》由会员分享,可在线阅读,更多相关《万年历课程设计任务书.docx(23页珍藏版)》请在冰点文库上搜索。
万年历课程设计任务书
《高级语言程序设计
(2)》
课程设计任务书
专业数学与应用数学班级数学0901学号7姓名(签名)完成日期指导教师(签名)
1、程序设计说明书
【设计题目】万能日历程序程序
【问题描述】万能日历是查询日期的工具,它适合于上班族,以便他们准确地把握时间。
【软件功能】1以月历形式显示日期与星期。
2支持用户自己输入年份以及年份下拉形式选择年份,并提供月份的下拉形式菜单来选择月份。
3通过点击面板任意处可以刷新日历。
【算法思想】将一个星期面板和一个月份面板同时添加到一个主面板,再在相应的面板内添加对应的组件,从而形成日历的界面;然后继承java本身的日历类中得成员方法来实现日历功能;继而构造成员方法实现日历界面的刷新
【类的设计】
直接继承的是java中已有的类,然后构造成员方法来实现界面的刷新
【用户界面】
【程序技巧】
直接继承java日历的类,就没必要构造太多的方法以及其他类
【模块划分及调用关系】(用word的绘图工具绘出图形,不能省略!
)
【模块流程图】
【运行说明】
(1)将eclipse软件打开
(2)在eclipse中建立一个包,接着在包内建一个空白的java程序文档
(3)将现有的程序复制,粘贴到空白文档,运行即可。
(4)运行之后即可出现用户界面,你只需按照自己的要求选择相应的年份,月份。
如此你便可以看到对应的月历查看星期,月份。
程序上机调试报告
【语法错误及其排除】
2、程序测试结果
【测试数据】
测试数据:
1.2011年12月份
2.2023年2月
【输出结果】
初始界面(月份含有下拉框)
年份的改变
月份的改变
界面可以改变大小
【收获及体会】
第一次,对于每个人来说,都是难以忘怀的,同样也是给人以体会最深的,收获也是最大的
从这次java课程设计中,我获益匪浅。
为了完成这个任务,可谓是煞费苦心,绞尽脑汁。
我经过了长时间的反复编写调试,课本和网上查阅相关资料相关文章。
经过这一次,自我的检验,我发现自己在学习这门课上还是有很多不足的,比如说,对JAVA语言整体知识构架不够熟悉;不能灵活地运用所学的知识点;自己的编程方式也不是太标准,经常出现代码写错而调试很久的低级错误情况出现。
同时我也懂得了一个很浅显的道理,条条道路通罗马。
学习的途径很多,上网,看书,问同学等。
以后我会利用可以利用的学习工具,好好学习,将自己在学习方面的不足予以弥补。
让我体会最深的是,我发觉自己的java学习有所进步。
为了完成任务,我一遍又一遍的看书,查资料,不知不觉中,感觉书在心中,对课本知识有了一个更深的认识。
从这一点,我似乎明白,实践是最好的老师。
实践让我们进一步的和理论接触,更深的认识它。
人们常说,实践是检验真理的唯一标准。
确实如此,与此同时,实践也是检验我们学习成效的最好标尺。
所以说,我们的学以致用,多多留心生活,关注身边,尽可能的利用我们所掌握的知识进行解答,分析。
这样,对我们学习很重要。
不光如此,我们还可以用理论创造事物。
实现所学知识的用处,同样也是实现自我价值的最好方法。
另外值得一提的是,我认为合作也是很有价值的一件事,这也是我感悟的。
大家都知道术业有专攻之说。
确实如此,不同的人对不同的领域有不同的领悟能力。
要完成一件综合性的任务,并非那么简单,不单指这任务内容多么难,而是指它所涉及的知识点很广。
这次任务书,不仅仅是要求我们写一个程序,打几个字,还要求我们画流程图。
对于计算机,我是个们外汉。
流程图,前所未闻,更别提画了。
面对这个难题,我开始很疑惑,很郁闷。
天无绝人之路,我碰到一计算机高手,在他的帮助之下,我现在不光画出了所需流程图,还懂的流程图的基本作图方法。
合作是一种学习方法,更是一种处世方法。
自从这次的合作,我和他关系也升温了。
我感谢合作,我喜欢合作。
【源程序代码】
importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.Dimension;
importjava.awt.GridLayout;
importjava.awt.SystemColor;
importjava.awt.event.ActionEvent;
importjava.awt.event.KeyEvent;
importjava.awt.event.MouseEvent;
importjava.util.Calendar;
importjava.util.GregorianCalendar;
importjava.util.Locale;
importjava.util.Date;
importjava.util.StringTokenizer;
importjavax.swing.BorderFactory;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
importjavax.swing.JToggleButton;
importjavax.swing.SwingConstants;
importjavax.swing.UIManager;
classJCalendarextendsJPanel{
//动态表示年月日
privateintyear=0;
privateintmonth=0;
privateintday=0;
//主面板
privateJPanelMain=newJPanel();
//日面板
privateJPaneljPanelDay=newJPanel();
//月份面板
privateJPaneljPanelMonth=newJPanel();
//年份输入位置
privateJTextFieldYear=newJTextField();
//月份输入位置
privateJTextFieldMonth=newJTextField();
//减少月份
privateJButtonMonthDown=newJButton();
//增加月份
privateJButtonMonthUp=newJButton();
privateJPaneljPanelButton=newJPanel();
//减少年份
privateJButtonYearDown=newJButton();
//增加年份
privateJButtonYearUp=newJButton();
//显示日期的位置
privateJLabelOut=newJLabel();
//设置时区
privateLocalel=Locale.CHINESE;
//主日历
privateGregorianCalendarcal=newGregorianCalendar(l);
//星期面板
privateJPanelweekPanel=newJPanel();
//日期按钮组
privateJToggleButton[]days=newJToggleButton[42];
//日期面板
privateJPanelDays=newJPanel();
//标示
privateJLabeljLabel1=newJLabel();
privateJLabeljLabel2=newJLabel();
privateJLabeljLabel3=newJLabel();
privateJLabeljLabel4=newJLabel();
privateJLabeljLabel5=newJLabel();
privateJLabeljLabel6=newJLabel();
privateJLabeljLabel7=newJLabel();
//当前选择的天数按钮
privateJToggleButtoncur=null;
//月份天数数组,用来取得当月有多少天
//123456789101112
privateint[]mm={31,28,31,30,31,30,31,31,30,31,30,31};
//空日期构造函数
publicJCalendar(){
try{
jbInit();
}
catch(Exceptione){
e.printStackTrace();
}//异常抛出
}
//带日期设置的构造函数
publicJCalendar(intyear,intmonth,intday){
cal.set(year,month,day);
try{
jbInit();
}
catch(Exceptione){
e.printStackTrace();
}
}
//带日历输入的构造函数
publicJCalendar(GregorianCalendarcalendar){
cal=calendar;
try{
jbInit();
}
catch(Exceptione){
e.printStackTrace();
}
}
//带日期输入的构造函数
publicJCalendar(Datedate){
cal.setTime(date);
try{
jbInit();
}
catch(Exceptione){
e.printStackTrace();
}
}
//初始化组件
privatevoidjbInit()throwsException{
//初始化年、月、日
iniCalender();
this.setLayout(newBorderLayout());
this.setBorder(BorderFactory.createRaisedBevelBorder());
this.setMaximumSize(newDimension(200,200));
this.setMinimumSize(newDimension(200,200));
this.setPreferredSize(newDimension(200,200));
Main.setLayout(newBorderLayout());
Main.setBackground(SystemColor.info);
Main.setBorder(null);
Out.setBackground(Color.lightGray);
Out.setHorizontalAlignment(SwingConstants.CENTER);
Out.setMaximumSize(newDimension(100,19));
Out.setMinimumSize(newDimension(100,19));
Out.setPreferredSize(newDimension(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(newGridLayout(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(SystemColor.info);
jPanelMonth.setLayout(newBorderLayout());
jPanelMonth.setBorder(BorderFactory.createEtchedBorder());
Month.setBorder(null);
Month.setHorizontalAlignment(SwingConstants.CENTER);
Month.addMouseListener(newjava.awt.event.MouseAdapter(){
publicvoidmouseClicked(MouseEvente){
Month_mouseClicked(e);
}
});
Month.addKeyListener(newjava.awt.event.KeyAdapter(){
publicvoidkeyPressed(KeyEvente){
Month_keyPressed(e);//响应键盘事件
}
});
MonthDown.setBorder(null);
MonthDown.setText("\u25C4");
MonthDown.addActionListener(newjava.awt.event.ActionListener(){
publicvoidactionPerformed(ActionEvente){
MonthDown_actionPerformed(e);
}
});
MonthUp.setBorder(null);
MonthUp.setText("\u25BA");
MonthUp.addActionListener(newjava.awt.event.ActionListener(){
publicvoidactionPerformed(ActionEvente){
MonthUp_actionPerformed(e);
}
});
jPanelButton.setLayout(null);
jPanelButton.setBorder(null);
jPanelButton.addComponentListener(newjava.awt.event.ComponentAdapter(){
publicvoidcomponentResized(java.awt.event.ComponentEventevt){
jPanelButtonComponentResized(evt);
}
});
Year.setBorder(BorderFactory.createEtchedBorder());
Year.setMaximumSize(newDimension(80,25));
Year.setMinimumSize(newDimension(80,25));
Year.setPreferredSize(newDimension(80,25));
Year.setHorizontalAlignment(SwingConstants.CENTER);
Year.addMouseListener(newjava.awt.event.MouseAdapter(){
publicvoidmouseClicked(MouseEvente){
Year_mouseClicked(e);
}
});
Year.addKeyListener(newjava.awt.event.KeyAdapter(){
publicvoidkeyPressed(KeyEvente){
Year_keyPressed(e);
}
});
YearDown.setBorder(null);
YearDown.setMaximumSize(newDimension(16,16));
YearDown.setMinimumSize(newDimension(16,16));
YearDown.setPreferredSize(newDimension(16,16));
YearDown.setSize(newDimension(16,16));//按键的规格
YearDown.setText("▼");//
YearDown.addActionListener(newjava.awt.event.ActionListener(){
publicvoidactionPerformed(ActionEvente){
YearDown_actionPerformed(e);
}
});
YearUp.setBorder(null);
YearUp.setMaximumSize(newDimension(16,16));
YearUp.setMinimumSize(newDimension(16,16));
YearUp.setPreferredSize(newDimension(16,16));
YearUp.setSize(newDimension(16,16));//设置按钮大小
YearUp.setText("▲");//设置按钮上得标志
YearUp.addActionListener(newjava.awt.event.ActionListener(){//监听事件
publicvoidactionPerformed(ActionEvente){
YearUp_actionPerformed(e);
}
});
jPanelDay.setLayout(newBorderLayout());
Days.setLayout(newGridLayout(6,7));
Days.setBackground(SystemColor.info);
for(inti=0;i<42;i++){
days[i]=newJToggleButton();
days[i].setBorder(null);
days[i].setBackground(SystemColor.info);
days[i].setHorizontalAlignment(SwingConstants.CENTER);
days[i].setHorizontalTextPosition(SwingConstants.CENTER);
//days[i].setSize(l,l);
days[i].addActionListener(newjava.awt.event.ActionListener(){
publicvoidactionPerformed(ActionEvente){
day=Integer.parseInt(((JToggleButton)e.getSource()).getText());
showDate();
showDays();
}
});
Days.add(days[i]);
}
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);