ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:309.69KB ,
资源ID:12724218      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12724218.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(万年历设计报告.docx)为本站会员(b****0)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

万年历设计报告.docx

1、万年历设计报告JAVA程序设计报告题 目:万年历程序设计学习中心:批 次:层 次:专升本专 业:计算机科学与技术姓 名:摘要:Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。该报告中的程序是使用JAVA程序编写的,使用图形用户界面;实现日期与星期的查询。关键字:万年历程序;JAVA语言;Eclipse目 录前言41、设计分析62、程序结构73、各模块的功能及程序说明74、源程序85、操作方法256、试验结果277、设计体会29前言:1、Java语言是简单的。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习

2、和使用Java。另一方面,Java丢弃了C+ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。 2、Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。 3、Java语言是分布式的。Java语言支持Internet应用

3、的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 4、Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。 5、Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外

4、,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。 6、Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。 7、Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可

5、移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。 8、Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。 9、Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C+。 10、Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Th

6、read类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。 Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。 11、Java语言是动态的。Java语言的设计目标之一是适应于动态变化的环境。Ja

7、va程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。 Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。本程序设计

8、中,开发的是万年历程序,规模较小,内容也较单一,选择了Eclipse开发工具。1、设计分析 需求分析:现在网络上各种万年历程序特别多,功能也是应有尽有,可是这类软件存在的最大问题就是太占空间了,功能太过繁杂,对初学者来说不太容易掌握。从日常应用来说,一个万年历只需实现日期与星期的查询功能就可以了。本程序就是依照此理念设计。 功能设计本程序参照了WINDOWS操作系统的万年历工具,其功能有以下几个方面:(1)菜单中有“年份下拉”、“月份下拉”二个主菜单。(2)“年份下拉”有“2008”、“2009”、“2010”等年份。(3)“月份下拉”中有“一月”“二月”“三月”“四月”等月份。2、程序结构图

9、1 程序结构说明3、各模块的功能及程序说明 各模块的功能说明图2 各模块的功能 程序说明整个万年历分为2大块:菜单下拉框和内容显示区。(1)private String为程序菜单下拉框。(2)Integer getShow ()为内容显示区。4、源程序/* * (#)AidyCalender.java * * * author * version 1.00 2008/7/19 */import java.awt.*; import java.awt.event.*; import java.lang.StringBuffer;import javax.swing.*;import java.u

10、til.*;import javax.swing.Timer;import javax.swing.border.*;public class AidyCalender extends JFrame implements ActionListener,ItemListener Date date = new Date(); private GregorianCalendar gregorianCalendar = new GregorianCalendar(); /定义中英文字符数组存储星期信息,用于转换显示 private String stringWeekEn = new String S

11、UN, 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 = 一月,二月,三月,四月,五月,六月, 七月,八月,九月,十月,

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

13、 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.createLineBord

14、er(Color.cyan,3); public AidyCalender(String title) super(title); for (int y = 1900; y 2101; y+) combo1.addItem( + new Integer(y).toString()+年); for (int m = 0;m12;m+) combo2.addItem( +stringMonthCnm); buttonToday.setText(今 天); setLayout(new FlowLayout(); add(panel1); add(panel2); add(panel3); panel

15、1.setLayout(new GridLayout(1,3,10,0); 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.MAGENTA); panel1.add(lab

16、elTime); 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,0,10); panel2.setBackground(Color.white); for(int i=0;i7;i+) labelWeeki

17、= 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(st

18、ringWeekCni); panel2.add(labelWeeki); for(int i= 0;i42;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

19、, 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(Str

20、ing week) int i; for(i=0;i7;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;i12;i+) if(month.equalsIgnoreCase(stringMonthEni) bre

21、ak; return i; /* *setNowDate() *设置当前系统日期 */ public void setNowDate() setSysDate(getNowYear(),getNowMonth(); getSysRunDate(); setDateNull(); combo1.setSelectedIndex(getShowYear() - 1900); combo2.setSelectedIndex(getShowMonth(); setDays(getMonthDays(getNowYear(),getNowMonth(),getInitWeek(sysRunTime0),

22、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;i42;i+) labelDayi.setText(); public void setChangeDate()

23、 setSysDate(getComboYear(),getComboMonth(); getSysRunDate(); setDateNull(); setDays(getMonthDays(getComboYear(),getComboMonth(),getInitWeek(sysRunTime0),-1); public int getMonthDays(int year, int month) /* *返回所选年月的天数,因为数组中的数值从0开始,所以35810分别代表46911几个小月. *而1代表2月,经过是否为闰年判断,选择返回28或29天. *其余月份为大月,返回31天. */

24、 switch (month) case 3: case 5: case 8: case 10: return 30;/小月返回30天 case 1: if (gregorianCalendar.isLeapYear(year) /isLeapYear(year)确定当前纪元中的指定年份是否为闰年。 return 29; else return 28; /闰年的二月返回29天,平年返回28天 default: return 31; /大月返回31天 /* *int getComboYear() *获取组合框中的年份 */ public void getSysDate() date = greg

25、orianCalendar.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(

26、) return combo2.getSelectedIndex(); public int getInitWeek(String initWeek) /* *getWeekNow(String initWeek) *para nowWeek 系统日期中的星期 *返回当月中的1号是从星期几开始 */ int nowWeek = 0 ; for(int i = 0;i7;i+) if(initWeek.equalsIgnoreCase(stringWeekEni) nowWeek = i; break; return nowWeek; public int getNowYear() return

27、 Integer.parseInt(sysNowTime5); public int getNowMonth() int nowMonth=0; for(int i=0;i12;i+) if(sysNowTime1.equalsIgnoreCase(stringMonthEni); nowMonth=i; break; return nowMonth; public int getNowDay() return Integer.parseInt(sysNowTime2); public Integer getShowYear() return Integer.parseInt(sysNowTi

28、me5); 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;iinitWeek+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); label

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1