面向对象程序设计课程设计java日历_第1页
面向对象程序设计课程设计java日历_第2页
面向对象程序设计课程设计java日历_第3页
面向对象程序设计课程设计java日历_第4页
面向对象程序设计课程设计java日历_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、软 件 学 院课程设计报告书课程名称 面向对象程序设计课程设计 设计题目 java日历 专业班级 学 号 姓 名 指导教师 徐娇月 2011 年 12 月目录1 设计时间32 设计目的33设计任务34 设计内容34.1概念设计34.1.1 系统功能图34.1.2 需求分析44.1.3设计思路64.2详细设计74.2.1类设计74.2.2界面设计74.2.3功能实现94.3运行调试与分析讨论124.3.1运行结果和分析124.3.2改进想法135 总结与展望14参考文献15成绩评定151 设计时间2011年12月19日2011年12月22日2 设计目的面向对象程序设计是学习完Java 6 程序设

2、计课程之后,进行的一次全面的综合性练习,是学习完理论课程之后的必要的集中实践环节。面向对象程序设计的课程设计的目的在于是提高学生对所学知识综合应用能力的一种方式,要求我们对理论课中所学习到的知识综合运用,实现有一定规模的Java应用。此次课程设计也为我们将来的毕业设计和具体工作实践奠定了坚实的基础。3设计任务Java日历设计一个java日历,要求用java编写简单日历,只需要输入年、月就可打印出对应月的日历。要求有简单的用户界面。4 设计内容 4.1概念设计4.1.1 系统功能图该系统主要实现的功能如图一所示:查询指定年份日历查询相邻年份日历查询相邻月份日历查看今日万年历系统显示日期选择其他日

3、期查询指定月份日历图一1、 当用户需要查询指定年月的日历时,用户将选择框内年月改变,系统获取信息并设置月历,具体流程如图二所示:选择年份月份获取年月份并转化为英文格式获得该月1号所在位置和该月天数设置系统为该年月生成日历界面图二2、用户用鼠标点击选择一个日期后,系统可用蓝色方框框住该日期,表示系统已选择该日,具体流程如图三所示:用户点击某一日期系统判断用户已点击标签的下标清除上一个方框对被点击的标签设一个蓝色方框图三4.1.2 需求分析对于万年历系统,其主要功能是:查看当日日期(年、月、日)、查看当时时间、查看其他年月的月历、对选中的日期进行标识。主要使用流程是:查看万年历系统,查看其他月份或

4、年份日历,选中其他日期查看,查看当日日期。主要功能的用例描述如下:(1)查看万年历1、进入万年历系统;2、系统获取当日日期并设置日历为当月,蓝框选中当日日期;(2)查询当月其他年份改变年份有两张方法,一种是选择年份,一种是摁按键选择上一年或下一年。下拉菜单选择年份:1、点击选择年份的下拉菜单,选择年份;2、系统获取已选择的年份;3、系统设置为已选年份当月的月历并显示在界面显示。 按键选择上一年(或下一年):1、点击选择“年”(或“年+”)的按键;2、系统获取选择框内的年份;3、将系统获取年份的数字减去1(或加上1);4、将选择框内的年份设为已更改的年份;5、系统设置为已更改年份当月的月历并显示

5、在界面显示。(3)查询当年的其他月份改变月份有两张方法,一种是选择月份,一种是摁按键选择上一月或下一月。下拉菜单选择月份:1、点击选择月份的下拉菜单,选择年份;2、系统获取已选择的月份;3、系统设置已选月份为当年的月历并在界面显示。按键选择上一月(或下一月):1、点击选择“月”(或“月+”)的按键,;2、系统获取选择框内的月份;3、将系统获取月份的数字减去1(或加上1);4、将选择框内的月份设为已更改的月份;5、系统设置为已更改月份当年的月历并在界面显示。(4)选择其他日期查看1、点击其他日期;2、系统对所有日期的label进行监听,判断点击的那个label;3、返回被点击的label的数组下

6、标;4、对该下标的label设置蓝色边框,表示选中。(5)查看当日日期1、点击“今日”按键;2、系统获取今日日期;3、设置年份和月份选择框为当日年月;4、系统设置为当日年月的月历并在界面显示;5、判断当日日期在哪个label上;6、返回被点击的label的数组下标;7、对该下标的label设置蓝色边框,表示选中。4.1.3设计思路本课程设界面由两个模块构成,主要有表头模块和日历模块两部分。(1) 表头模块上有查询输入部分和时间显示部分:1、两个下拉列表用于选择的年份和月份,如改变年份后系统用getShowYear()获得组合框中的中文年份,getCombYear()转换成英文格式,得到用户选择

7、的年份,同时用getMonthDays()和getInitWeek()得到界面的设定,最终,用setDays()设置出用户所要求的月历,改变月份同理;2、四个button按钮用于实现年、年+、月、月+,如选择了“年+”后,系统用getShowYear()和getCombYear()获得组合框中的年份,在其年份上加1,将改变的年份显示在组合框里,计算出该年月日历的安排,并用setDays()设置出用户所要求得月历,其他按钮同理;3、一个button按钮用于实现对今日日期的查找,当用户选择了“今日”后,系统用getNowYear()和getNowMonth()得到当日年月,并调用setNowDay

8、()将系统组合框内年月设为当日年月,显示当月月历,同时系统用getNowDay()获得当日日期,用labelDayi.setBorder(border1)语句将当日的日期用蓝色的边框框住表示选定;4、创建一个标签用于显示时间,监听系统时间并显示。(2)日历模块上添加系统的结果显示部分:1、该部分最初显示为当日年月的月历,改变年月后,获得需要显示的月份天数m和当月1号是从labelDayn开始后按顺序从添加到labelDaym+n,遇到周末用setForeground(Color.red)设定字体显示为红色;2、对labelDay标签进行监听,如果鼠标点击某个label,判断该标签的的序号,用s

9、etBorder()为该label设置蓝色边框并用setBordr(null)将上一个边框清除。4.2详细设计4.2.1类设计本程序创建了一个AidyCalender类,该类包括了改变年月对月历界面显示的改变和时间的显示,主要包括函数如表1所示:表-1 AidyCalenderpublic AidyCalender(String title) 界面设计public void actionPerformed(ActionEvent ae) 判断button按键public int turnWeek(String week) 将系统中的英文周转化成中文周public int getNowDay(

10、) 获得现在的日期public Integer getShowYear( ) 获取组合框中显示的中文格式年份public int getComboYear( ) 获取组合框中的年份public int getInitWeek(String initWeek) 返回当月中的1号是从星期几开始public int getMonthDays(int year, int month) 返回所选年月的天数public void setSysDate(int year,int month) 设置系统日期public void setChangeDate( ) 改变显示日期public void setDa

11、ys(int monthDays,int initWeek,int day) 设置月历 4.2.2界面设计界面该界面由上表头模块输入选择部分和中央的结果显示部分组成。输入部分创建两个下拉列表选择年月及5个功能按键用于实现日历的基本操作;结果显示部分根据该月1号所属星期和该月的天数设置出该月月历界面。主要的界面设置代码如下:加上星期日到六for(int i=0;i<7;i+) labelWeeki = new JLabel();labelWeeki.setHorizontalAlignment(0);if(i=0|i=6)labelWeeki.setForeground(Color.red

12、); /设置周末为红色labelWeeki.setFont(new Font("新宋体",Font.BOLD,18);elselabelWeeki.setForeground(Color.BLACK);labelWeeki.setFont(new Font("新宋体",Font.PLAIN,18);labelWeeki.setText(stringWeekCni); panel2.add(labelWeeki);加上日期的labelfor(int i= 0;i<42;i+) labelDayi = new JLabel();labelDayi.se

13、tHorizontalAlignment(0); /设置文本的水平对齐方式labelDayi.setText("");panel2.add(labelDayi);labelDayi.addMouseListener(listener); /对label进行监听设置月历public void setDays(int monthDays,int initWeek,int day) setDateNull();for(int i=initWeek;i<initWeek+monthDays+1;i+) /initWeek 初始星期labelDayi.setFont(new F

14、ont("黑体",Font.BOLD,18); /设置日期的字体 if(i-initWeek+1)=day) /如果日期为今天for(int j=0;j<42;j+)labelDayj.setBorder(null);labelDayi.setBorder(border1); /选中当日日期if(i%7=0)|(i%7=6)labelDayi.setForeground(Color.red);else labelDayi.setForeground(Color.BLACK);labelDayi.setText(String.valueOf(i-initWeek+1);

15、for(int i=initWeek+monthDays;i<42;i+)labelDayi.setText("");4.2.3功能实现1、实现指定年月查询的主要代码如下:获取组合框中的年份和月份public int getComboYear() return combo1.getSelectedIndex()+1;public int getComboMonth() return combo2.getSelectedIndex();返回当月中的1号是从星期几开始public int getInitWeek(String initWeek) int nowWeek =

16、 0 ; /nowWeek系统日期中的星期for(int i = 0;i<7;i+)if(initWeek.equalsIgnoreCase(stringWeekEni)nowWeek = i; break;return nowWeek;返回所选年月的天数public int getMonthDays(int year, int month) switch (month)case 3:case 5:case 8:case 10:return 30;/小月返回30天case 1:if (gregorianCalendar.isLeapYear(year) /isLeapYear(year)

17、确定当前纪元中的指定年份是否为闰年。return 29;else return 28; /闰年的二月返回29天,平年返回28天default:return 31; /大月返回31天设置月历public void setDays(int monthDays,int initWeek,int day)setDateNull();for(int i=initWeek;i<initWeek+monthDays+1;i+) /initWeek 初始星期labelDayi.setFont(new Font("黑体",Font.BOLD,18); /设置日期的字体if(i-init

18、Week+1)=day) /如果日期为今天for(int j=0;j<42;j+);labelDayj.setBorder(null);labelDayi.setBorder(border1); /选中当日日期if(i%7=0)|(i%7=6)labelDayi.setForeground(Color.red);else labelDayi.setForeground(Color.BLACK);labelDayi.setText(String.valueOf(i-initWeek+1);for(int i=initWeek+monthDays;i<42;i+)labelDayi.s

19、etText("");2、实现选择日期功能的主要代码如下:设置蓝色边框private Border border = BorderFactory.createRaisedBevelBorder();private Border border1 = BorderFactory.createLineBorder(Color.cyan,8); /蓝色选择边框判断点击了哪个label,然后做相应的响应MouseListener listener = new MouseAdapter() public void mouseClicked(MouseEvent e)for(int j=

20、0;j<42;j+)labelDayj.setBorder(null);if(JLabel)e.getSource()=labelDayj)labelDayj.setBorder(border1); ;4.3运行调试与分析讨论4.3.1运行结果和分析图四为系统初始界面,系统自动设置为当日年月的月历,并且用蓝框框住当日日期。图四图五为用户选择查看日历,用户通过下拉列表选择自己需要的年月查看月历,如图用下拉菜单选择查看2011年7月份月历。图五 图六为摁“年”按钮改变年月,用户可以通过按键改变用户所查看的年份,如图用按钮“年”查看2009年12月份的月历。图六4.3.2改进想法该万年历程序只

21、能显示阳历,可在其基础上加上阴历的显示,当鼠标点击了某一日的日期时,该日期被框住并且显示出其阴历日期;每年一些固定的节日如“五一”、“十一”可在日历上用红色数字显示出来;月历上其他未填日期的空白label可用加上上个月和下个月的部分日期,用灰色表示方便区别。5 总结与展望面向对象课程设计的主要目标就是利用将课堂上学到的Java理论知识和实践操作方法应用于实际的Java应用软件中,去制作各种小程序。通过这次面向对象课程设计,可以加深我们对面向对象程序设计理论知识的理解,掌握面向对象应用程序设计和开发的基本方法,以提高我们运用理论知识的能力。最初确定课程设计任务时,先考虑其功能有哪些,需要显示什么,如何进行窗口布局,需要用哪些知识点,如相关的类和对象等,最后就是根据初步设计的功能和布局构架,考虑用源代码进行实现了。本小日历程序。在设计过程中遇到障碍时,老师的指导,和同学的

温馨提示

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

评论

0/150

提交评论