基于JAVA的万年历设计与实现(附源代码)_第1页
基于JAVA的万年历设计与实现(附源代码)_第2页
基于JAVA的万年历设计与实现(附源代码)_第3页
基于JAVA的万年历设计与实现(附源代码)_第4页
基于JAVA的万年历设计与实现(附源代码)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

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、课程设计的基本算法publicclasswnlextendsJFrameimplementsActionListener,ItemListener{Datedate=newDate();privateGregorianCalendargregorianCalendar=newGregorianCalendar();//定义中英文字符数组存储星期信息,用于转换显示privateString[]stringWeekEn=newString[]{"SUN","MON","TUE","WED","THU","FRI","SAT"};privateString[]stringWeekCn=newString[]{"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};//定义存储月份的信息数组,用于转换显示方式privateString[]stringMonthEn=newString[]{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"};privateString[]stringMonthCn={"1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"};privateString[]sysNowTime=newString[6];//sysNowTime用于存储系统时间的变量privateString[]sysRunTime=newString[6];privateJLabel[]labelWeek=newJLabel[7];privateJLabel[]labelDay=newJLabel[42];privateJLabellabelTime=newJLabel();privateJPanelpanel1=newJPanel();privateJPanelpanel2=newJPanel();privateJPanelpanel3=newJPanel();privateJComboBoxcombo1=newJComboBox();privateJComboBoxcombo2=newJComboBox();privateJButtonbuttonToday=newJButton();privateBorderborder=BorderFactory.createRaisedBevelBorder();privateBorderborder1=BorderFactory.createLineBorder(Color.cyan,3);publicwnl(Stringtitle){super(title);for(inty=1900;y<2200;y++){combo1.addItem(""+newInteger(y).toString()+"年");}for(intm=0;m<12;m++){combo2.addItem(""+stringMonthCn[m]);}buttonToday.setText("现在时刻");setLayout(newFlowLayout());add(panel1);add(panel2);add(panel3);panel1.setLayout(newGridLayout(2,3,10,2));panel1.add(combo1);combo1.addItemListener(this);panel1.add(combo2);combo2.addItemListener(this);panel1.add(buttonToday);//buttonToday.addActionListener(this);labelTime.setFont(newFont("宋体",Font.PLAIN,16));labelTime.setForeground(Color.red);panel1.add(labelTime);Timertime=newTimer(1000,newTimerListener());time.addActionListener(newTimerListener());//time.setRepeats(true);time.start();//labelTime.addAncestorListener(newTimerListener());panel2.setLayout(newGridLayout(7,7,10,10));panel2.setBackground(Color.white);for(inti=0;i<7;i++){labelWeek[i]=newJLabel();labelWeek[i].setHorizontalAlignment(0);if(i==0||i==6){labelWeek[i].setBackground(Color.blue);labelWeek[i].setForeground(Color.RED);labelWeek[i].setFont(newFont("黑体",Font.BOLD,14));}else{labelWeek[i].setForeground(Color.BLACK);labelWeek[i].setFont(newFont("新宋体",Font.PLAIN,14));}labelWeek[i].setText(stringWeekCn[i]);panel2.add(labelWeek[i]);}for(inti=0;i<42;i++){labelDay[i]=newJLabel();labelDay[i].setHorizontalAlignment(0);labelDay[i].setText("");panel2.add(labelDay[i]);}addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){System.exit(0);}});setSize(300,300);setBounds(250,200,400,360);setVisible(true);setResizable(false);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);getSysDate();setNowDate();}publicvoidactionPerformed(ActionEventae){if(ae.getSource()==buttonToday){setNowDate();}}publicvoiditemStateChanged(ItemEventaa){setChangeDate();}publicintturnWeek(Stringweek){inti;for(i=0;i<7;i++)if(week.equalsIgnoreCase(stringWeekEn[i]))break;returni;}publicintturnMonth(Stringmonth){/***intturnMonth(Stringmonth)*@month系统日期中的月,诸如Jan\Feb*@returnint*返回一个整数值,用于寻找stringMonthCn[]数组中对应的中文月份*/inti;for(i=0;i<12;i++)if(month.equalsIgnoreCase(stringMonthEn[i]))break;returni;}/***setNowDate()*设置当前系统日期*/publicvoidsetNowDate(){setSysDate(getNowYear(),getNowMonth());getSysRunDate();setDateNull();combo1.setSelectedIndex(getShowYear()-1900);combo2.setSelectedIndex(getShowMonth());setDays(getMonthDays(getNowYear(),getNowMonth()),getInitWeek(sysRunTime[0]),getNowDay());labelTime.setText(sysNowTime[3]);labelTime.setHorizontalAlignment(0);}/**IntegergetShowYear()*获取组合框中应该显示的年份*/publicvoidsetSysDate(intyear,intmonth){gregorianCalendar.set(year,month,1);}publicvoidsetDateNull(){for(inti=0;i<42;i++){labelDay[i].setText("");}}publicvoidsetChangeDate(){setSysDate(getComboYear(),getComboMonth());getSysRunDate();setDateNull();setDays(getMonthDays(getComboYear()+1,getComboMonth()+1),getInitWeek(sysRunTime[0]),-1);/***返回所选年月的天数,因为数组中的数值从0开始,所以各月必须加1.*而2月,经过是否为闰年判断,选择返回28或29天.*其余月份为大月,返回31天.**/}publicintgetMonthDays(intyear,intmonth){switch(month){case4:case6:case9:case11:return30;//小月返回30天case2:if(gregorianCalendar.isLeapYear(year)){//isLeapYear(year)确定当前纪元中的指定年份是否为闰年。return29;}else{return28;}//闰年的二月返回29天,平年返回28天default:return31;//大月返回31天}}/***intgetComboYear()*获取组合框中的年份*/publicvoidgetSysDate(){date=gregorianCalendar.getTime();sysNowTime=(date.toString()).split("");}publicvoidgetSysRunDate(){date=gregorianCalendar.getTime();sysRunTime=(date.toString()).split("");}publicintgetComboYear(){returncombo1.getSelectedIndex()+1900;}/***intgetComboMonth()*获取月组合框中的整数值,*/publicintgetComboMonth(){returncombo2.getSelectedIndex();}publicintgetInitWeek(StringinitWeek){/***getWeekNow(StringinitWeek)*@paranowWeek系统日期中的星期*返回当月中的1号是从星期几开始*/intnowWeek=0;for(inti=0;i<7;i++){if(initWeek.equalsIgnoreCase(stringWeekEn[i])){nowWeek=i;break;}}returnnowWeek;}publicintgetNowYear(){returnInteger.parseInt(sysNowTime[5]);}publicintgetNowMonth(){intnowMonth=0;for(inti=0;i<12;i++){if(sysNowTime[1].equalsIgnoreCase(stringMonthEn[i]));nowMonth=i;break;}returnnowMonth;}publicintgetNowDay(){returnInteger.parseInt(sysNowTime[2]);}publicIntegergetShowYear(){returnInteger.parseInt(sysNowTime[5]);}publicIntegergetShowMonth(){/***IntegergetShowMonth()*获取在组给框中显示的中文格式月份:如七月\八月等*/returnturnMonth(sysNowTime[1]);}publicvoidsetDays(intmonthDays,intinitWeek,intday){/***voidsetDays(intmonthDays,intinitWeek,intday)*@paramonthDays本月天数*@parainitWeek初始星期*@paraday今天日*设置月历*/setDateNull();for(inti=initWeek;i<initWeek+monthDays+1;i++){if((i-initWeek+1)==day){labelDay[i].setBorder(border1);labelDay[i].setForeground(Color.BLUE);labelDay[i].setFont(newFont("黑体",Font.BOLD,20));}elseif((i%7==0)||(i%7==6))labelDay[i].setForeground(Color.RED);else{labelDay[i].setForeground(Color.BLACK);}labelDay[i].setText(String.valueOf(i-initWeek+1));}for(inti=initWeek+monthDays;i<42;i++)labelDay[i].setText("");}classTimerListenerimplementsActionListener{//AdapterDemovar=newAdapterDemo("万年历");publicvoidactionPerformed(ActionEvente){GregorianCalendarg=newGregorianCalendar();Stringclock=newString((g.getTime().toString().split(""))[3]);labelTime.setText(clock);}}4、运行结果:在安装有JRE平台的环境下,双击生成的万年历.jar运行:说明:简洁而明晰的运行结果,足以证明实验的正确性5、体会心得:经过短暂的一周的Java程序设计,使我又学到了很多的知识,尤其是运用Java知识去解决实际问题的能力又得到了很大的提高。尽管所设计的程序比较简单,但是程序中的每个功能的实现都经过了自己的一定认真的思考。由于把所学的知识做到很灵活的运用在实际中,对于现在的我还有一定的难度,故而,在设计的每个的环节中,都会多多少少的遇到一些问题,这就促使我去查阅各种资料,或者请教老师和同学,极大的提高我的专业素养,同时对在有些书上的理论知识在实际的运用,以及应该注意的问题有了比较深刻的认识。当然,仍然有些理论问题不是很好的去运用,或者是了解的不深刻。这就使的在实践中的所设计的程序有些功能不是自己所想的那样的完美。不过,既然发现了问题的所在,我就不会放弃的,直至问题得到解决。这些也同时反映出了平时运用知识去实践这方面做的太少。太缺乏经验。对所设计中将所面临的问题认识不够。是Java课程设计让我认识到了这些问题的存在。同时给我提供了去面对这些问题的平台。也使我充分的认识到在以后也应该怎样去实践,怎样去学习一门计算机语言,以及如何去运用这门语言去解决实际问题等等。总之,在经过这次Java的课程设计,使我认识到了自己很多的缺点,同时,也是我学到新知识和新方法的一个机会。这给我在以后继续学习好这门语言指明了方向。6、参考文献:[1]《Java2从入门到精通》,印旻编、许伟编著,清华大学出版社[2]《Java编程思想》,周文龙等著,青年出版社[3]《Java学习指南》,寒露、王梅等著,教育出版社[4]《Java2实用教程》(第三版),耿祥义张跃平编著,清华大学出版社[5]《Java语言与面向对象程序设计》,印旻编著,清华大学出版社

论大学生写作能力写作能力是对自己所积累的信息进行选择、提取、加工、改造并将之形成为书面文字的能力。积累是写作的基础,积累越厚实,写作就越有基础,文章就能根深叶茂开奇葩。没有积累,胸无点墨,怎么也不会写出作文来的。写作能力是每个大学生必须具备的能力。从目前高校整体情况上看,大学生的写作能力较为欠缺。一、大学生应用文写作能力的定义那么,大学生的写作能力究竟是指什么呢?叶圣陶先生曾经说过,“大学毕业生不一定能写小说诗歌,但是一定要写工作和生活中实用的文章,而且非写得既通顺又扎实不可。”对于大学生的写作能力应包含什么,可能有多种理解,但从叶圣陶先生的谈话中,我认为:大学生写作能力应包括应用写作能力和文学写作能力,而前者是必须的,后者是“不一定”要具备,能具备则更好。众所周知,对于大学生来说,是要写毕业论文的,我认为写作论文的能力可以包含在应用写作能力之中。大学生写作能力的体现,也往往是在撰写毕业论文中集中体现出来的。本科毕业论文无论是对于学生个人还是对于院系和学校来说,都是十分重要的。如何提高本科毕业论文的质量和水平,就成为教育行政部门和高校都很重视的一个重要课题。如何提高大学生的写作能力的问题必须得到社会的广泛关注,并且提出对策去实施解决。二、造成大学生应用文写作困境的原因:(一)大学写作课开设结构不合理。就目前中国多数高校的学科设置来看,除了中文专业会系统开设写作的系列课程外,其他专业的学生都只开设了普及性的《大学语文》课。学生写作能力的提高是一项艰巨复杂的任务,而我们的课程设置仅把这一任务交给了大学语文教师,可大学语文教师既要在有限课时时间内普及相关经典名著知识,又要适度提高学生的鉴赏能力,且要教会学生写作规律并提高写作能力,任务之重实难完成。(二)对实用写作的普遍性不重视。“大学语文”教育已经被严重地“边缘化”。目前对中国语文的态度淡漠,而是呈现出全民学英语的大好势头。中小学如此,大学更是如此。对我们的母语中国语文,在大学反而被漠视,没有相关的课程的设置,没有系统的学习实践训练。这其实是国人的一种偏见。应用写作有它自身的规律和方法。一个人学问很大,会写小说、诗歌、戏剧等,但如果不晓得应用文写作的特点和方法,他就写不好应用文。(三)部分大学生学习态度不端正。很多非中文专业的大学生对写作的学习和训练都只是集中在《大学语文》这一门课上,大部分学生只愿意被动地接受大学语文老师所讲授的文学经典故事,而对于需要学生动手动脑去写的作文,却是尽可能应付差事,这样势必不能让大学生的写作水平有所提高。(四)教师的实践性教学不强。学生写作能力的提高是一项艰巨复杂的任务,但在教学中有不少教师过多注重理论知识,实践性教学环节却往往被忽视。理论讲了一大堆,但是实践却几乎没有,训练也少得可怜。阅读与写作都需要很强的实践操作,学习理论固然必不可少,但是阅读方法和写作技巧的掌握才是最重要的。

温馨提示

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

评论

0/150

提交评论