欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    【JAVA课程设计】基于JAVA的万年历设计与实现(附源代码).doc

    • 资源ID:11082159       资源大小:73.50KB        全文页数:10页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【JAVA课程设计】基于JAVA的万年历设计与实现(附源代码).doc

    Java课程设计报告课程设计题目:万 年 历指 导 老 师:*学 生 姓 名:*专 业:*学 号:*Java课程设计-万年历1、课程设计目的:这学期我们学习了Java语言,Java语言是面向对象的开发方法是当今世界最流行的开发方法,是当今流行的网络编程语言。它具有面向对象、跨平台、分布应用等特点。它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。很多程序开发人员得第一选择。为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。让学生自己动手动脑,将书本上得知识运用到实践当中去,使知识能更好得融会贯通。为了达到这个目的,我们需要自己动手做一个Java的课程设计,在这个课程设计里我们需要根据我们手中现有得软件与知识基础,独立得将它完成,只有这样,我们才能把理论变成实践,将知识真正得做到学以致用。这次课程设计我主要研究了利用已学的Java知识编辑一个电子万年历。通过此次课程设计,来巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。并通过自己动手,自主得学习,对Java这门课程有更深得了解与认识。2、需求分析:2.1、本程序要求:1、使用图形用户界面;2、本程序能够实现日期与星期查询,同时显示此时的时间。2.2、功能设计:本程序要构建万年历程序,其功能如下:(1)通过窗口形式运行,实现界面功能;(2)以月历的形式来显示日期与星期;(3)为用户提供年份与月份的下拉形式菜选择年份与月份;(4)同时显示查看时的时刻。3、课程设计的基本算法public class wnl extends JFrame implements ActionListener,ItemListener Date date = new Date(); private GregorianCalendar gregorianCalendar = new GregorianCalendar(); /定义中英文字符数组存储星期信息,用于转换显示 private String stringWeekEn = new String "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" ; private String stringWeekCn = new String "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" ; /定义存储月份的信息数组,用于转换显示方式 private String stringMonthEn = new String "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec" ; private String stringMonthCn = "1月","2月","3月","4月","5月","6月", "7月","8月","9月","10月","11月","12月"private String sysNowTime = new String6;/sysNowTime 用于存储系统时间的变量 private String sysRunTime = new String6; private JLabel labelWeek = new JLabel7; private JLabel labelDay = new JLabel42; private JLabel labelTime = new JLabel(); private JPanel panel1 = new JPanel(); private JPanel panel2 = new JPanel(); private JPanel panel3 = new JPanel(); private JComboBox combo1 = new JComboBox(); private JComboBox combo2 = new JComboBox(); private JButton buttonToday = new JButton(); private Border border = BorderFactory.createRaisedBevelBorder(); private Border border1 = BorderFactory.createLineBorder(Color.cyan,3);public wnl (String title) super(title); for (int y = 1900; y < 2200; y+) combo1.addItem(" "+ new Integer(y).toString()+"年"); for (int m = 0;m<12;m+) combo2.addItem(" "+stringMonthCnm); buttonToday.setText("现在时刻"); setLayout(new FlowLayout(); add(panel1); add(panel2); add(panel3); panel1.setLayout(new GridLayout(2,3,10,2); panel1.add(combo1); combo1.addItemListener(this); panel1.add(combo2); combo2.addItemListener(this); panel1.add(buttonToday); / buttonToday.addActionListener(this); labelTime.setFont(new Font("宋体",Font.PLAIN,16); labelTime.setForeground(Color.red); panel1.add(labelTime); Timer time = new Timer(1000,new TimerListener(); time.addActionListener(new TimerListener(); /time.setRepeats(true); time.start(); /labelTime.addAncestorListener(new TimerListener(); panel2.setLayout(new GridLayout(7,7,10,10); panel2.setBackground(Color.white); for(int i=0;i<7;i+) labelWeeki = new JLabel(); labelWeeki.setHorizontalAlignment(0); if(i=0|i=6) labelWeeki.setBackground(Color.blue); labelWeeki.setForeground(Color.RED); labelWeeki.setFont(new Font("黑体",Font.BOLD,14); else labelWeeki.setForeground(Color.BLACK); labelWeeki.setFont(new Font("新宋体",Font.PLAIN,14); labelWeeki.setText(stringWeekCni); panel2.add(labelWeeki); for(int i= 0;i<42;i+) labelDayi = new JLabel(); labelDayi.setHorizontalAlignment(0); labelDayi.setText(""); panel2.add(labelDayi); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); setSize(300,300); setBounds(250, 200, 400, 360); setVisible(true); setResizable(false); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getSysDate(); setNowDate(); public void actionPerformed(ActionEvent ae) if(ae.getSource()=buttonToday) setNowDate(); public void itemStateChanged(ItemEvent aa) setChangeDate(); public int turnWeek(String week) int i; for(i=0;i<7;i+) if(week.equalsIgnoreCase(stringWeekEni) break; return i; public int turnMonth(String month) /* *int turnMonth(String month) *month 系统日期中的月,诸如JanFeb *return int *返回一个整数值,用于寻找stringMonthCn数组中对应的中文月份 */ int i; for(i=0;i<12;i+) if(month.equalsIgnoreCase(stringMonthEni) break; return i; /* *setNowDate() *设置当前系统日期 */ public void setNowDate() setSysDate(getNowYear(),getNowMonth(); getSysRunDate(); setDateNull(); combo1.setSelectedIndex(getShowYear() - 1900); combo2.setSelectedIndex(getShowMonth(); setDays(getMonthDays(getNowYear(),getNowMonth(),getInitWeek(sysRunTime0),getNowDay(); labelTime.setText(sysNowTime3); labelTime.setHorizontalAlignment(0); /*Integer getShowYear() *获取组合框中应该显示的年份 */ public void setSysDate(int year,int month) gregorianCalendar.set(year,month,1); public void setDateNull() for(int i=0;i<42;i+) labelDayi.setText(" "); public void setChangeDate() setSysDate(getComboYear(),getComboMonth(); getSysRunDate(); setDateNull(); setDays(getMonthDays(getComboYear()+1,getComboMonth()+1),getInitWeek(sysRunTime0),-1); /* *返回所选年月的天数,因为数组中的数值从0开始,所以各月必须加1. *而2月,经过是否为闰年判断,选择返回28或29天. *其余月份为大月,返回31天. */ public int getMonthDays(int year, int month) switch (month) case 4: case 6: case 9: case 11: return 30;/小月返回30天 case 2: if (gregorianCalendar.isLeapYear(year) /isLeapYear(year)确定当前纪元中的指定年份是否为闰年。 return 29; else return 28; /闰年的二月返回29天,平年返回28天 default: return 31; /大月返回31天 /* *int getComboYear() *获取组合框中的年份 */ public void getSysDate() date = gregorianCalendar.getTime(); sysNowTime = (date.toString().split(" "); public void getSysRunDate() date = gregorianCalendar.getTime(); sysRunTime = (date.toString().split(" "); public int getComboYear() return combo1.getSelectedIndex()+1900; /*int getComboMonth() *获取月组合框中的整数值, */ public int getComboMonth() return combo2.getSelectedIndex(); public int getInitWeek(String initWeek) /* *getWeekNow(String initWeek) *para nowWeek 系统日期中的星期 *返回当月中的1号是从星期几开始 */ int nowWeek = 0 ; for(int i = 0;i<7;i+) if(initWeek.equalsIgnoreCase(stringWeekEni) nowWeek = i; break; return nowWeek; public int getNowYear() return Integer.parseInt(sysNowTime5); public int getNowMonth() int nowMonth=0; for(int i=0;i<12;i+) if(sysNowTime1.equalsIgnoreCase(stringMonthEni); nowMonth=i; break; return nowMonth; public int getNowDay() return Integer.parseInt(sysNowTime2); public Integer getShowYear() return Integer.parseInt(sysNowTime5); public Integer getShowMonth() /* *Integer getShowMonth() *获取在组给框中显示的中文格式月份:如七月八月等 */ return turnMonth(sysNowTime1); public void setDays(int monthDays,int initWeek,int day) /* *void setDays(int monthDays,int initWeek,int day) *para monthDays 本月天数 *para initWeek 初始星期 *para day 今天日 *设置月历 */ setDateNull(); for(int i=initWeek;i<initWeek+monthDays+1;i+) if(i-initWeek+1)=day) labelDayi.setBorder(border1); labelDayi.setForeground(Color.BLUE); labelDayi.setFont(new Font("黑体",Font.BOLD,20); else 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.setText(""); class TimerListener implements ActionListener /AdapterDemo var=new AdapterDemo("万年历"); public void actionPerformed(ActionEvent e) GregorianCalendar g = new GregorianCalendar(); String clock = new String(g.getTime().toString().split(" ")3); labelTime.setText(clock); 4、运行结果:在安装有JRE平台的环境下,双击生成的万年历.jar运行: 说明:简洁而明晰的运行结果,足以证明实验的正确性 5、体会心得:经过短暂的一周的Java程序设计,使我又学到了很多的知识,尤其是运用Java知识去解决实际问题的能力又得到了很大的提高。尽管所设计的程序比较简单,但是程序中的每个功能的实现都经过了自己的一定认真的思考。由于把所学的知识做到很灵活的运用在实际中,对于现在的我还有一定的难度,故而,在设计的每个的环节中,都会多多少少的遇到一些问题,这就促使我去查阅各种资料,或者请教老师和同学,极大的提高我的专业素养,同时对在有些书上的理论知识在实际的运用,以及应该注意的问题有了比较深刻的认识。当然,仍然有些理论问题不是很好的去运用,或者是了解的不深刻。这就使的在实践中的所设计的程序有些功能不是自己所想的那样的完美。不过,既然发现了问题的所在,我就不会放弃的,直至问题得到解决。这些也同时反映出了平时运用知识去实践这方面做的太少。太缺乏经验。对所设计中将所面临的问题认识不够。是Java课程设计让我认识到了这些问题的存在。同时给我提供了去面对这些问题的平台。也使我充分的认识到在以后也应该怎样去实践,怎样去学习一门计算机语言,以及如何去运用这门语言去解决实际问题等等。总之,在经过这次Java的课程设计,使我认识到了自己很多的缺点,同时,也是我学到新知识和新方法的一个机会。这给我在以后继续学习好这门语言指明了方向。6、参考文献:1Java2从入门到精通,印旻编、许伟编著,清华大学出版社2Java编程思想,周文龙等著,青年出版社3Java学习指南,寒露、王梅等著,教育出版社4 Java2实用教程(第三版),耿祥义 张跃平 编著,清华大学出版社5Java语言与面向对象程序设计,印旻编著,清华大学出版社

    注意事项

    本文(【JAVA课程设计】基于JAVA的万年历设计与实现(附源代码).doc)为本站会员(啊飒飒)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开