JAVA课程设计报告_完整版

logo_h

《JAVA面向对象程序设计》

(20##-20##学年第2学期)


题目JAVA程序课程设计

任务一  手机号码检测器

(一)设计任务与目标

任务:

手机号码是由11位数字构成,用户在输入手机号码时经常混乱输入若干位数字或字母,要求你编写一个程序检测用户所输入的手机号码是否符合规则。

要求目标:

检测所输入的手机号码是否是11位

检测每一位是否都为数字。

分析论证:

本题目要求对用户输入的手机号码进行检测,判断输入的正确性。曾经有做过类似字符比较的题目,可以借鉴。将字符的比较运用进来,把用户的输入字符和正确的进行比较。但是必须满足多次输入和错误提醒。同时还可以添加提示错误的位置和错误字符是什么。

程序正确运行时可以满足以上功能,基本可以达到题目要求了。

(二)方案设计与论证

为了满足多次输入的要求,将提示和输入的操作放在一个循环体中,我采用了do_whiele()循环。每次输入结束后提示是否继续输入。

在循环中逐步对输入的号码位数和字符类型进行检测。位数可以分超出和不足,并均给出错误提示。如果位数满足要求后对手机号码类型进行检测。一般手机号在0~9之间,所以不满足的字符将报错。通过将输入的整个字符串调用charAt(int i)方法对字符串逐位比较。

本程序的特点在于可以满足了多次输入和错误字符的显示(内容和位置)。

在程序的调试过程中,有过多次输入正确的号码也会报错(还会报错0位错误),这是因为记录错误位子的变量放在错误条件下并且未在循环体中初始化为0。最终解决了此问题。

(三)程序框图或流程图,程序清单与调用关系

(四)程序运行的测试与分析

   实现了多次输入和错误提示,可以判断输入的号码的错误位置及字符,错误类型,满足了设计构思要求。最终结果如下图:

实验结果截图:

(五)结论心得

实验过程中对于判断条件的选择出现了问题,开始时觉得要对输入的字符一个一个的比较,这样增加了难度也不方便实现。后面改成了将用户输入完成后的全部字符串当做整体后再来逐位比较。如果能做成手机外形的面板并能一个一个的判断,只要输入错误字符马上提示,那功能将更加完善。

任务二  扑克牌

(一)设计任务与目标

  任务

    设计一个Card类代表扑克牌,每张牌都有自己的花色和大小。创建一个DeskOfCards类保存54张扑克牌,设计洗牌、发一张牌、报告剩余牌数的方法。创建main方法测试你的程序。

要求目标:

    实现洗牌和发牌。

    显示当前片面和剩余牌数。

  分析论证:

       本题目需要用到数组来存储一副纸牌,并需要用到随机数来代替随机发牌,曾经做过类似工作。现在需要将产生的随机数和字牌的大小和花色联系起来,可以通过数组来实现。同时还要达到可以循环发牌,并有发牌信息显示。

(二)方案设计与论证

根据题目要求,我准备在类Card中用数组存储一副牌(52张),考虑到扑克牌有花色和大小并都是固定的,所以用了两个字符串数组分别初始化花色和大小,再利用下标操作把花色和大小组合在一起,存放另在一个数组里(最终的纸牌组)。这样就有了一副完整纸牌了。

再创建另一个类DeskOfCard创建两个Card对象,通过在循环里的条件判断对对象进行操作:洗牌时就将纸牌数组和剩余牌数重新初始化(利用多余的那个对象)。发牌时用到随机数产生器,产生从0到51的整数和数组小标对应,每个元素代表一张牌。

测试过程中出现了无法显示牌面的问题,通过对象引用找不到具体的纸牌,后来在Card类中添加了getCard(int i)方法返回一张牌,实现了发牌和剩余牌数,并可以多次发牌。

(三)程序框图或流程图,程序清单与调用关系

(四)程序运行的测试与分析

    从测试过程中达到了分析时的目的要求,实现了洗牌和发牌(显示牌面和剩余数量)。最终结果如下图:

实验结果截图:

(五)结论心得

    实验过程中,开始没有将纸牌的大小和花色分开来定义,导致需要初始化52张牌,后俩采用了循环体将花色和大小进行组合达到了目的的同时又简化了代码,提高了可读性。本来希望最后的结果可以通过图片的方式显示纸牌,但纸牌的原图片两太大,实现过于繁琐,最终采用了简单的文字表示。希望今后有机会近一步完善,达到预期效果。

任务三  计算器

(一)设计任务与目标

任务:

    参考第六章的实验题Telephone Keypad界面设计一个计算器。

要求目标:

     实现输入数字和运算字符并输出结果

     结果由对应的运算得出,实现基本运算能力

分析论证:

    通过设计一个界面展示一个计算器的功能,包括输入数字和符号并进行准确的运算得出理想的结果。在第六章中的Telephone Keypad实验中做过类似的界面只是实现的功能不一样,可在这个基础上加入运算功能即可实现要求。

(二)方案设计与论证

  根据题目的具体要求,我设想通过之前的Telephone Keypad实验进行改进,除了需要加入一些按钮外,还要对具体的按钮功能进行设计。在Calculator类中进行了面板的设计,之间加入了需要的各个控件,并且加了ActionListener()类来做事件的触发类。

此类中通过event.getSource()方法与相应的按键进行对应,以此为判断条件来决定做什么操作。其中包括了被运算数、运算类型、运算数还有等号的事件。

为了可以输出信息还要加入JTextField控件来显示信息,信息通过一个字符串变量来存取。两个JTextField控件分上下,上面显示最后的运算式(包括每次输入时均要逐步显示输入内容),下面显示最后的结果并以一定的格式输出。最后还要满足多次输入,因此设计了清楚按键,每次清楚后可以进行下一次的运算。

在程序的调试的过程中出现了,输出内容的错误。不能逐一的输出输入的内容,最后也没有在上面显示框中显示完整的运算式。通过检查,发现是字符串的添加位置和没有将内容在原有基础上增加,而是每次更新字符串。最终通过修改解决了问题。其间,还出现了按键功能的一些的错乱,都是小问题,多次调试后基本达到了一个简单运算器的功能。

(三)程序框图或流程图,程序清单与调用关系

(四)程序运行的测试与分析

测试过程中进行了多次的运算,包括加、减、乘、除。每次都可以逐一输出输入的内容并能得出正确的结果并输出。清除后可以再次运算,基本达到了预期要求。最终结果如下图:

实验结果截图:

(五)结论心得

 本程序因为涉及的控件很多,所以排版和引用都要十分注意,不然容易引用错误,导致引用不到你所点击的那个按键等。还要注意在监听器里的条件判断时相应的操作要考虑清楚。为了界面美观和人性化,要将按键的顺序按一定的顺序排列不能随机添加。

 本程序不足的地方在于运算类型只有加减乘除,并且不能再完成一次运算后立即进行下一次运算,必须清楚后重新开始。这些不足还有待改善。相信如果改进过后,这个计算器会达到更加完善的功能和实用性。

任务四   愤怒的小鸟

(一)设计任务与目标

任务:

愤怒的小鸟是一款“亿人迷”的游戏,据说大家喜欢它的原因在于大家喜欢抛物线胜过直线。例题8.15-8.16是笑脸图片直线运动的例子,请修改它在X轴和Y轴的运动轨迹,将它改成抛物线运动。

要求目标:

   实现界面中小鸟打击目标

   有准确的抛物线

   可以多次并操作简单

分析论证:

   在例题笑脸的运动中实现了图片按照一定的像素进行平移,到达一个目标地。所以可以以此为基础进行改进。对运动中的函数进行改进,将直线运动改成抛物线。并有效开始时出现提示。用户可以对图片的出发位置进行控制。

(二)方案设计与论证

为了达到预期的目标,我将创建了一个BirdPanel类来存放各种组件,主要是存入多张图片和一个十分重要的也是这个程序的核心——定时器Timer。这个游戏最终可以看到的效果是图片的移动,所以需要通过控制图片在面板中的位置来实现移动。

所以定时器就十分重要了,有了定时器就可以在间隔一段时间中多次触发事件,看到的也就是图片在不停地移动,最终到达目标。

在编写程序过程中,发现需要实现客户对图片初始位置的控制比较困难。所以为了节省时间就将图片的触发地限制在了固定位置。每次都将从这一位置触发,并进行抛物运动后,打中目标。这虽然使程序简单了,可在一定程度上牺牲了部分的功能。今后还有需要改进。

(三)程序框图或流程图,程序清单与调用关系

(四)程序运行的测试与分析

实验测试过程完成了游戏开始提示和小鸟图片的抛物运动,目标被打击后会场上变化。只是不能多次操作和随意拖拽小鸟的起始位置,这是一段的局限。最终结果如下图:

实验结果截图:

(五)结论心得

   本题目中涉及的核心内容是定时器和图片坐标改变在(运动)的配合使用。通过对坐标的改变,并结合定时器功能达到动画效果。

  本程序的不足在于未能达到预期的人性化,没法随意开始游戏,和市场上的愤怒的小鸟存在巨大差距,这也是这个程序不成熟的地方,但是总算达到了能将图片以抛物线运动到目的地。基本上完成了目的要求。今后还需继续改进完善。

任务五   石头剪刀布

(一)设计任务与目标

任务:

参考第五章的实验题Rock, Paper, Scissors设计并实现一个和计算机交互的剪刀、石头、布游戏。人和计算机各选择一项,然后决出胜负。程序必须随机选取一项但不表示出来,然后提示用户选择。当用户选择后,程序同时显示出计算机和用户的选择并且输出游戏结果。游戏一直进行直到用户退出为止,并且输出双方输赢次数和总局数。

要求目标:

     能够直观显示用户和电脑的出拳

     可以多次进行游戏,知道用户确认退出

     每次都给出目前胜负情况

     游戏具有随机性和准确性

分析论证:

  由于第五章中已经编译过类似的程序,其是通过随机数模拟电脑出拳,在通过用户输入模拟自己出拳,最终来比较电脑和用户的胜负。只要将原程序改成界面形式并加入具体相应的图片和用户胜负情况的提示,其他的游戏比较与原来一致就行。

(二)方案设计与论证

      根据题目要求需要建立一个Panel’类Fight用于存储图片和组件。在类中申请了3个panel,第一个用于存放图片,第二个用于存放按键,最后将这两个放进panel3中。在panel1中的图片需要根据panel2中按键触发的事件进行相应的改变。电脑和用户都有石头、剪刀和布三张图片进行变化。每次在用户点击按键石头或剪刀或布后电脑会根据随机数产生器发出的随机数进行相应的“出拳”,然后和用户选择的“出拳”进行比较输赢。当用户选择后,两者的出拳图会显示在panel1中,并出现信息说明当前游戏总次数和用户和电脑各自的胜出次数。用户可以再一次游戏介绍后继续点击按键进行多次游戏,每次重复上面功能。

因为本程序是在原有基础上进行的改进,前面又做过小鸟的程序,所以问题不是很大,最不应该的是在图片引用过程中因为图片命名格式的原因耽误了大量时间,导致实验用时较长。最终完成的游戏还是比较完善的,几乎达到了预期的所有要求。

(三)程序框图或流程图,程序清单与调用关系

(四)程序运行的测试与分析

本程序运行正常,实现了用户点击按键尝试相应的图片,同时电脑也会产生相应的回应发出它的“猜拳”,每一次都会给出当前的游戏总局数和用户和电脑各自的胜利局数。并且可以随意进行多次,每次的随机性和准确性良好。界面也较清楚好看。最终结果如下图:

实验结果截图:

(五)结论心得

  本题经过较长时间的调试和完善,达到了预期要求和运行目标。这是本次设计用时最长的题目花了大量时间,最后总算有所回报,到达了一个比较满意的成果。

任务六  学生考勤管理系统

(一)设计任务与目标

任务:

考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课、课程名称、学生姓名、缺课类型(迟到、早退、请假及旷课)。试设计考勤管理系统,使之能提供以下功能:

要求目标:

(1)录入学生的缺课记录;

(2)修改某个学生的缺课记录;

(3)查询某个学生的缺课情况;

(4)统计某段时间内,旷课学生姓名及旷课次数;

(5)统计某段时间内,有学生旷课的课程及旷课人次;

分析论证:

   本题需要通过用户界面来直观的实现操作,操作尽量简单方便,可以实现上述基本功能。主要以之前的对话框等GUI组件来实现用户的交互。可以输入和查询相应的信息以及提示信息,并可以实现简单统计。

(二)方案设计与论证

      本题我设计了一个主面板来承载多个panel;其中最重要的是JTabbedPane组件,它先承载了主要的按键及菜单和各个文本输入框。其他的面板主要是安放在JTabbedPane上,并且要求面板中的组件按一定规律排列,用到了布局管理器。

     需要实现的功能主要是录入、修改、查询和统计信息。程序中我分块编写了各个功能的代码,每个功能都将用到相应监听器,通过按键实现功能。并且在panel类中用到了student类,用于保存基本的学生信息。

    在程序的编译和调试过程中出现了许多问题。开始时面板布局凌乱,输入信息没有反应,并且还会出现报错。在布局问题上后来用到了布局管理器,编程时将各个功能的版式按照一定的样式统一设计,达到界面简洁美观。输入信息没反应主要是事件反应器的逻辑错误,经过调整判断条件等改正了错误。最后,根据老师提出的要求最程序提出了完善,可以通过姓名和学号查询信息,以及不会重复输入同一个人的信息。基本达到实验目的。

(三)程序框图或流程图,程序清单与调用关系

(四)程序运行的测试与分析

     经过调试,程序可以正常运行。可以实现信息的输入和查询以及修改和统计信息数量。界面布局较合理,实验截图如下:

实验结果截图:

(五)结论心得

本题设计时涉及很多的组件和方法,需要将大量的组件安排到合适的位置,并且要实现相应的功能。工作量较大,在完善过程中问题也很多。不过通过自己的努力和思考,最终成功的完成了实验。实验收获众多,了解了一个较复杂和大段的代码编写时需要耗费很大精力。

参考资料

【1】   【美】John lewis,William Loftus 著《Java程序设计教程》(第六版)——电子工业出版社

【2】   【美】Y.Daniel Liang 著《Java语言程序设计》(基础篇)——机械工业出版社

【3】   百度知道——http://zhidao.baidu.com/question/33715635.html

【4】       百度文库——http://wenku.baidu.com/view/c1be6c19c281e53a5802fff1.html

致谢

本次可是设计能够完成的这样顺利需要感谢很多人,这其中就包括软件班的王浩同学,愤怒的小鸟这个程序借鉴了他的设计。还有就是本班的黄康杰的同学,他在我调试程序时给出一些好的建议,帮我解决了问题。特别需要感谢的事我们的崔剑锋老师,是您一个学期以来的严格要求和教导,给我传授知识,今天才能完成这个课程设计。在这里衷心的对这些给过帮助的人们表示感谢!

附录:全部源程序清单

源代码一:手机号码检测器

import java.util.Scanner;

//手机号码检测器

public class Phone

{

public static void main (String[] args)

{

    String phone,str;

    char y;

    int x,m,a;

    Scanner scan=new Scanner(System.in);

    do

    {

         m=0;

         a=0;

    System.out.println("请输入电话号码:");

    phone=scan.next();

    x=phone.length();

    if(x<11)

        System.out.println("输入错误,位数不足!");

    else

        if(x>11)

            System.out.println("输入错误,位数过多!");

      else

          if(x==11)

    {

        for(int i=0;i<11;i++)

        {

            y=phone.charAt(i);

            if(y>='0'&&y<='9')

            {

                a++;

            }

            else

                m=i+1;

               

        }

        if(a==11)

        System.out.println("输入完成!");

        else

        {

          System.out.println("输入错误!");

         System.out.println("第 "+m+" 位输入错误字符 "

                             +phone.charAt(m-1));

         }

    }  

    System.out.print("继续输入吗(Y/N): ");

    str = scan.next();

   }while(str.equals("Y"));

    System.out.println("退出输入!");

}

}

源代码二:扑克牌

//*************************************

// Card.java

// 主类定义纸牌的花色和大小

//*************************************

public class Card

{

   

   

    private String[] card,bao;

    private int a=0;

    public  Card()

    {

    String[] card1 = { "黑桃", "红桃", "梅花", "方块" }; //定义两个数组用于组

    String[] card2 = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10","J", "Q", "K" };

   

    card=new String[52];

    bao=new String[52];

    for (int i = 0; i < 4; i++)

    {

    for (int j = 0; j < 13; j++)

    {

     card[a]=card1[i].concat(card2[j]);

     bao[a]=card[a];

     a++;

    }

    }

  }

   

    public String getCard(int i)

    {

        return card[i];

    }

   

   

   

}

import java.util.Scanner;

public class DeskOfCard

{

    private static int count=52;

    public static void main(String[] args)

    {

        String string,string2;

        Card m=new Card();

        Card n=new Card();

         //这里设定52张牌

        Scanner scan =new Scanner(System.in);

        do

        {

          System.out.println("输入您要的操作(xipai or fapai):");

          string = scan.next();

        if(string.equals("xiapi"))

          {

               m=n;//初始化牌组

               count=52;//重新设定计数器

                   System.out.println("剩余牌数:"+count);    

          }

        else

          if(string.equals("fapai"))

            {

              if(count!=0)//判定牌是否发完

              {

                  count--;

                  int r = (int)(Math.random() * 52); // 获取随即数

                  System.out.println("抽取的牌为: "+m.getCard(r)+",剩余扑克牌数为: "+count);// 输出扑克牌

                     

              }  // 从ArrayList中去掉已抽到了扑克牌

               else

                   System.out.println("牌已经抽完");

            }

       

         System.out.println("Want to again(Y/N): ");

         string2=scan.next();

        }while(string2.equals("Y"));

   

   

   

    }

       

    }

源代码三:计算器

import java.awt.*;

import java.awt.event.*;

import java.text.DecimalFormat;

import javax.swing.*;

import javax.swing.border.BevelBorder;

//创建Calculator类,继承自JFrame,实现接口ActionListener

public class Calculator extends JPanel

{

    //声明相关变量、对象,具体作用下面再逐行讲解

    private DecimalFormat df;

    private JTextField jieguo,jieguo2;

    private JButton[] button;

    private JPanel panel1,panel2,panel3;

    private double result,num1,num2;

    private int yunsuan,kong1 = 0;

    private String s = "", s1 = "",s2= "";

    public Calculator()//构造方法

    {

       

        df = new DecimalFormat("0.0000");//设置结果小数点位数

        jieguo = new JTextField(20);

        jieguo.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

        jieguo.setBackground(new Color(240,245,254));

        jieguo.setEditable(false);

        jieguo2 = new JTextField(20);

        jieguo2.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

        jieguo2.setBackground(new Color(240,245,254));

        jieguo2.setEditable(false);

        panel1 = new JPanel();

        panel1.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

        panel1.setLayout(new BoxLayout(panel1,BoxLayout.Y_AXIS));

        panel1.setBackground(new Color(240,245,254));

        panel1.add(jieguo);

        panel1.add(jieguo2);

        panel2 = new JPanel();

        panel2.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

        panel2.setBackground(new Color(229,238,250));

        panel2.setLayout(new GridLayout(5,4,4,4));

        //各个按钮的名字

        String name[] ={"1","2","3","+","4","5","6","-","7","8","9","*","0",".","=","/","C"};

        button = new JButton[name.length];

        for(int i = 0;i < name.length;i++)//实例化各个按钮

        {

            button[i] = new JButton(name[i]);

            button[i].setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));

            button[i].setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));

            button[i].setPreferredSize(new Dimension(5,35));

            button[i].addActionListener(new ButtonListener());

            panel2.add(button[i]);

        }

        panel3 = new JPanel();

        panel3.setBackground(new Color(229,238,250));//设置布局管理

        panel3.setLayout(new BoxLayout(panel3,BoxLayout.Y_AXIS));

        panel3.add(panel1);

        panel3.add(Box.createRigidArea(new Dimension(0,30)));

        panel3.add(panel2);

        add(panel3);

       

       

    }

    private class ButtonListener implements ActionListener

    {

    public void actionPerformed(ActionEvent event)

    {

        //没有输入加减乘除时空=0,记录被运算数

        if(kong1 == 0)

        {

            if(event.getSource() == button[0])

                s1 += 1;

            if(event.getSource() == button[1])

                s1 += 2;

            if(event.getSource() == button[2])

                s1 += 3;

            if(event.getSource() == button[4])

                s1 += 4;

            if(event.getSource() == button[5])

                s1 += 5;

            if(event.getSource() == button[6])

                s1 += 6;

            if(event.getSource() == button[8])

                s1 += 7;

            if(event.getSource() == button[9])

                s1 += 8;

            if(event.getSource() == button[10])

                s1 += 9;

            if(event.getSource() == button[12])

                s1 += 0;

            if(event.getSource() == button[13])

                s1 += ".";

           

           

           

           

            //当键入加减乘除后,设置kong=1

            if(event.getSource() == button[7] || event.getSource() == button[3] ||event.getSource() == button[15] || event.getSource()== button[11])

            { 

               

                num1 = Double.parseDouble(jieguo.getText());

                //记录运算类型

                if(event.getSource() == button[3])

                {

                    yunsuan = 1;

                    s1 += "+";

                }

                if(event.getSource() == button[7])

                {

                    yunsuan = 2;

                    s1 += "-";

                }

                if(event.getSource() == button[11])

                {

                    yunsuan = 3;

                    s1 += "*";

                }

                if(event.getSource() == button[15])

                {

                    yunsuan = 4;

                    s1 += "/";

                }

                kong1 = 1;

            }

           

            s = s1;

            jieguo.setText(s);

        }

        //此时记录运算数

        if(kong1 ==1)

        {

            if(event.getSource() == button[0])

                s2 += 1;

            if(event.getSource() == button[1])

                s2 += 2;

            if(event.getSource() == button[2])

                s2 += 3;

            if(event.getSource() == button[4])

                s2 += 4;

            if(event.getSource() == button[5])

                s2 += 5;

            if(event.getSource() == button[6])

                s2 += 6;

            if(event.getSource() == button[8])

                s2 += 7;

            if(event.getSource() == button[9])

                s2 += 8;

            if(event.getSource() == button[10])

                s2 += 9;

            if(event.getSource() == button[12])

                s2 += 0;

            if(event.getSource() == button[13])

                s2 += ".";

            s =s1+ s2;                 

            jieguo.setText(s);  

             //重复出现运算数????

        }

        if(event.getSource() == button[14])//当按下等号时,设置结果label的内容

        {

            s += "=";

            jieguo.setText(s);

            num2 = Double.parseDouble(s2);

            switch(yunsuan)

            {

                case 1:

                result = num1 + num2;

                break;

                case 2:

                result = num1 - num2;

                break;

                case 3:

                result = num1 * num2;

                break;

                case 4:

                  if( s2.length() ==1 && s2.charAt(0)=='0' )//当初数为零时提示错误

                    jieguo2.setText("0不能做除数");

                  else

                    result = num1/num2;

                  break;

             }

           

            jieguo.setText(s);  //输出算式

            jieguo2.setText(df.format(result));  //格式化输出结果

        }

       

        if(event.getSource() == button[16])//将当前文本框内数据清除

        {

            jieguo.setText("");

            jieguo2.setText("");

            s = "";

            s1 = "";

            s2 = "";

            yunsuan = 0;

            kong1 = 0;

        }

   

    }

}

}

import javax.swing.JFrame;

public class TestCal

{

    public static void main(String[] args)

    {

        Calculator calculator = new Calculator();

        JFrame frame =new JFrame ("Calculator");

         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

         frame.getContentPane().add(calculator);

         frame.pack();

         frame.setVisible(true);

       

    }

}

源代码四: 愤怒的小鸟

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class BirdPanel extends JPanel

{

   private final int WIDTH = 1020, HEIGHT = 620;

   private final int DELAY = 90, IMAGE_SIZE = 40;

   private ImageIcon image,image2,image3;

   private Timer timer;

   private int x, y, moveX, moveY;

   //-----------------------------------------------------------------

   //  设置面板,包括为了动画引用计时器

   //-----------------------------------------------------------------

   public BirdPanel()

   {

      timer = new Timer(DELAY, new AListener());

      image = new ImageIcon ("鸟.png");

      image2 = new ImageIcon ("目标.gif");

      image3 = new ImageIcon ("birds1.jpg");

      x = 0;

      y = 500;

      moveX = 30;

      moveY = -30;  //竖直方向向上,做抛物线需要

      setPreferredSize (new Dimension(WIDTH, HEIGHT));

      setBackground (Color.WHITE);

        

      timer.start();

   }

  //-----------------------------------------------------------------

  //  面板中显示该有的图片

  //-----------------------------------------------------------------

public void paintComponent (Graphics page)

   {

      super.paintComponent (page);

      image3.paintIcon (this, page, 330, 0);

      image.paintIcon (this, page, x, y);

      image2.paintIcon (this, page, 900, 550);

   }

 //*****************************************************************

 //  定时器的操作监听程序

 //*****************************************************************

private class AListener implements ActionListener

{

   //--------------------------------------------------------------

   //  更新图像的位置和可能的运动方向每当计时器触发操作事件

   // 

   //--------------------------------------------------------------

   public void actionPerformed (ActionEvent event)

   {

      moveY +=2;   //为了做抛物线每次少提高2个像素,最终才会下落

      x += moveX;  //以设定好的像素移动

      y += moveY;

   

     //判断达到目标后停止,并产生相应的变化效果

     if (x >= WIDTH-IMAGE_SIZE)

     {

         x = WIDTH-IMAGE_SIZE; 

      }

      if (y >= HEIGHT-IMAGE_SIZE)

      {

         y= HEIGHT-IMAGE_SIZE;

           image2 = new ImageIcon ("变身.jpg");

          image = new ImageIcon("..."); //小鸟消失

      }

      repaint();

   }

}

}

//*************************************************************

//      Bird.java      

//

//      Angry birds!

//*************************************************************

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class Bird

{

   public static void main (String[] args)

   {  

    String x;

    x = "开始   愤怒的小鸟游戏?";

    JOptionPane.showMessageDialog(null,x);         

    JFrame frame = new JFrame ("Angry birds");

    frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

    frame.getContentPane().add(new BirdPanel());

    frame.pack();

    frame.setVisible(true);

   }

}

源代码五: 剪刀石头布

import java.awt.*;

import java.awt.event.*;

import java.util.Random;

import javax.swing.*;

import javax.swing.border.BevelBorder;

public class Fight extends JPanel

{

    private JPanel panel1,panel2,panel3;

    private JLabel computer,bi,person;

    private ImageIcon ShiTouP,JianZiP,BuP,kong;

    private JButton shitouB,jianziB,buB;

    private Random generator;

    private int total = 0,c=0,p=0;

    public Fight()

    {

       

        generator = new Random();

        //定义图片

        ShiTouP = new ImageIcon("石头.jpg");

        JianZiP = new ImageIcon("剪刀.jpg");

        BuP = new ImageIcon("布.jpg");

        kong = new ImageIcon("VS.jpg");

       

       

       //引用图片给电脑和用户

        person = new JLabel(new ImageIcon("客户.gif"));

        bi = new JLabel(kong);

        computer =new JLabel(new ImageIcon("电脑.jpg"));

   

     

       

        panel1 = new JPanel();

        panel1.setBackground( Color.BLUE);

        panel1.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

        panel1.setLayout(new BoxLayout(panel1,BoxLayout.X_AXIS));

        panel1.add(person);

        panel1.add(bi);

        panel1.add(computer);

        panel1.setPreferredSize(new Dimension(450,180));

        shitouB = new JButton("石头");

        shitouB.addActionListener(new Mouse());

        jianziB = new JButton("剪刀");

        jianziB.addActionListener(new Mouse());

        buB = new JButton("布");

        buB.addActionListener(new Mouse());

        panel2 = new JPanel();

        panel2.setLayout(new BoxLayout(panel2,BoxLayout.X_AXIS));

        panel2.add(jianziB);

        panel2.add(shitouB);

        panel2.add(buB);

        panel2.setPreferredSize(new Dimension(450,50));

        panel2.setBackground(new Color(200,218,235));

       

        panel3 = new JPanel();

        panel3.setBackground(new Color(200,218,235));

        panel3.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

        panel3.setLayout(new BoxLayout(panel3,BoxLayout.Y_AXIS));

        panel3.add(panel1);

        panel3.add(Box.createRigidArea(new Dimension(0,50)));

        panel3.add(panel2);

       

        add(panel3);

        panel3.setPreferredSize(new Dimension(500,350));

    }

   

   private class Mouse implements ActionListener

    {

          public void actionPerformed (ActionEvent event)

        {

       

        int ran = generator.nextInt(3);

        if(event.getSource()== jianziB)

        {

            person.setIcon(JianZiP);//当产生比较后根据结果变换图片

            if(ran == 0)

            {

                total += 1;

                bi.setIcon(kong);

                computer.setIcon(JianZiP);

            }

            if(ran == 1)

            {

                total += 1;

                c += 1;

                bi.setIcon(kong);

                computer.setIcon(ShiTouP);

            }

            if(ran == 2)

            {

                total += 1;

                p += 1;

                bi.setIcon(kong);

                computer.setIcon(BuP);

            }

        }

        if(event.getSource() == shitouB)

        {

            person.setIcon(ShiTouP);

            if(ran == 0)

            {

                total += 1;

                bi.setIcon(kong);

                p += 1;

               

                computer.setIcon(JianZiP);

            }

            if(ran == 1)

            {

                total += 1;

                bi.setIcon(kong);

                computer.setIcon(ShiTouP);

            }

            if(ran == 2)

            {

                total += 1;

                c += 1;

                bi.setIcon(kong);

                computer.setIcon(BuP);

            }

        }      

        if(event.getSource() == buB)

        {

            person.setIcon(BuP);

            if(ran == 0)

            {

                total += 1;

                bi.setIcon(kong);

                c += 1;

           

                computer.setIcon(JianZiP);

            }

            if(ran == 1)

            {

                total += 1;

                bi.setIcon(kong);

                p += 1;

           

                computer.setIcon(ShiTouP);

            }

            if(ran == 2)

            {

                total += 1;

                bi.setIcon(kong);

                computer.setIcon(BuP);

            }

        }

        if(event.getSource() == jianziB || event.getSource() == shitouB

                || event.getSource() == buB)

        {

            int again = JOptionPane.showConfirmDialog(panel2,"比赛进行了:"

                    +total+"次--您赢了"+p+"次--电脑赢了:"+c+"次   还要继续玩吗?"

                    ,"提示",JOptionPane.YES_NO_OPTION);

            if(again==JOptionPane.NO_OPTION)

                System.exit(0);

        }

    }

      

   

    }

   

}

//**********************************

//  TestFight.java

//

//**********************************

import javax.swing.JFrame;

public class TestFight

{

    public static void main(String[] args)

    {

        Fight fight = new Fight();

        JFrame frame =new JFrame ("石头剪刀布");

         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

         frame.getContentPane().add(fight);

         frame.pack();

         frame.setVisible(true);

    }

}   

源代码六:

//********************************************

// Student.java

// 学生类,包括了各种属性的设置和取值方法

//**********************************************

public class Student

{

    int xuehao,keshi;

    String xingming,kemu,leixing,riqi;

    public Student(String xingming,int xuehao,String riqi,int keshi,String kemu,String leixing)

    {  //构造函数

        this.xingming=xingming;

        this.xuehao=xuehao;

        this.riqi=riqi;

        this.kemu=kemu;

        this.keshi=keshi;

        this.leixing=leixing;

    }

    //各个属性的get和set方法

    public String getXingMing()

    {

       return xingming;

    }

    public void setXingMing(String xingming)

    {

        this.xingming=xingming;

    }

    public int getXueHao()

    {

       return xuehao;

    }

    public void setXueHao(int xuehao)

    {

        this.xuehao=xuehao;

    }

    public String getRiQi()

    {

        return riqi;

    }

    public void setRiQi(String riqi)

    {

        this.riqi=riqi;

    }

    public int getKeShi()

    {

        return keshi;

    }

    public void setKeShi(int keshi)

    {

        this.keshi=keshi;

    }

    public String getKeMu()

    {

        return kemu;

    }

    public void setKeMu(String kemu)

    {

        this.kemu=kemu;

    }

    public String getLeiXing()

    {

       return leixing;

    }

    public void setLeiXing(String leixing)

    {

        this.leixing=leixing;

    }

}

//************************************

//  运行类

//************************************

import java.awt.Dimension;

import javax.swing.JFrame;

public class TestKaoQing

{

    public static void main (String[] args)

    {

        JFrame frame = new JFrame();

        frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

       

        frame.getContentPane().add(new kaoqin());

        frame.pack();

        frame.setVisible(true);

       

    }

}

//******************************************

//  kaoqin.java

//  考勤类,定义了主要的面板和功能实现

//*******************************************

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.ArrayList;

import javax.swing.border.BevelBorder;

public class kaoqin extends JPanel

{

    JLabel jieguo; //统计功能的组件定义

    JButton xAt,kAr;

    JTextArea JieGuo;

    JPanel jieguoP,panelB,account;

   

    JLabel background1,background2,background3,background4;

    ArrayList<Student> student;

    JLabel xingming1,xuehao1,riqi1,keshi1,kemu1,leixing1;//录入功能组件定义

    JTextField xingming11,xuehao11,riqi11,keshi11,kemu11,leixing11;

    String xingming111,xuehao111,riqi111,keshi111,kemu111,leixing111;

    JPanel Input,panel11,panel12,panel13,panel14,panel15,panel16;

   

    JLabel xingming2,xuehao2,riqi2,keshi2,kemu2,leixing2;//修改功能组件的定义

    JTextField xingming22,xuehao22,riqi22,keshi22,kemu22,leixing22;

    String xingming222,xuehao222,riqi222,keshi222,kemu222,leixing222;

    JPanel Modify,panel21,panel22,panel23,panel24,panel25,panel26,panel27;

   

    JLabel xingming3,xuehao3,riqi3,keshi3,kemu3,leixing3;//查找功能组件的定义

    JTextField xingming33,xuehao33,riqi33,keshi33,kemu33,leixing33;

    String xingming333,xuehao333,riqi333,keshi333,kemu333,leixing333;

    JPanel Find,panel31,panel32,panel33,panel34,panel35,panel36;

   

   

   

    JButton tijiao1,xiugai2,chaxun2,chaxun3;//各个按钮的定义

    JTabbedPane tb;

    Integer cha1 = null,cha2 = null;

    public kaoqin()

    {

        background1 = new JLabel("请录入学生信息!");  //提示信息的初始化

        background2 = new JLabel("请使用学号和姓名查询!");

        background3 = new JLabel("请使用学号和姓名查询!");

       

        student = new ArrayList<Student>();

       

        xingming1=new JLabel("学生姓名:");//录入界面各个组件的安排

        xuehao1=new JLabel("学生学号:");

        riqi1=new JLabel("缺勤日期:");

        keshi1=new JLabel("缺勤课时:");

        kemu1=new JLabel("缺勤科目:");

        leixing1=new JLabel("缺勤类型:");

       

        xingming11=new JTextField(8);

        xingming11.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

       

        xuehao11=new JTextField(8);

        xuehao11.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

       

        riqi11=new JTextField(8);

        riqi11.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

       

        keshi11=new JTextField(8);

        keshi11.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

     

        kemu11=new JTextField(8);

        kemu11.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

     

        leixing11=new JTextField(8);

        leixing11.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

       

       

       

        panel11 = new JPanel();

        panel11.setBackground(new Color(230,239,255));

        panel11.setLayout(new BoxLayout(panel11,BoxLayout.X_AXIS));

        panel11.add(Box.createRigidArea(new Dimension(30,15)));

        panel11.add(xingming1);

        panel11.add(xingming11);

       

       

       

        panel12 = new JPanel();

        panel12.setBackground(new Color(230,239,255));

        panel12.setLayout(new BoxLayout(panel12,BoxLayout.X_AXIS));

        panel12.add(Box.createRigidArea(new Dimension(30,0)));

        panel12.add(xuehao1);

        panel12.add(xuehao11);

       

        panel13 = new JPanel();

        panel13.setBackground(new Color(230,239,255));

        panel13.setLayout(new BoxLayout(panel13,BoxLayout.X_AXIS));

        panel13.add(Box.createRigidArea(new Dimension(30,0)));

        panel13.add(riqi1);

        panel13.add(riqi11);

       

        panel14 = new JPanel();

        panel14.setBackground(new Color(230,239,255));

        panel14.setLayout(new BoxLayout(panel14,BoxLayout.X_AXIS));

        panel14.add(Box.createRigidArea(new Dimension(30,0)));

        panel14.add(keshi1);

        panel14.add(keshi11);

       

        panel15 = new JPanel();

        panel15.setBackground(new Color(230,239,255));

        panel15.setLayout(new BoxLayout(panel15,BoxLayout.X_AXIS));

        panel15.add(Box.createRigidArea(new Dimension(30,0)));

        panel15.add(kemu1);

        panel15.add(kemu11);

       

        panel16 = new JPanel();

        panel16.setBackground(new Color(230,239,255));

        panel16.setLayout(new BoxLayout(panel16,BoxLayout.X_AXIS));

        panel16.add(Box.createRigidArea(new Dimension(30,0)));

        panel16.add(leixing1);

        panel16.add(leixing11);

       

        tijiao1 =  new JButton("提交");

        tijiao1.setFont(new Font("幼圆", Font.BOLD, 18));

        tijiao1.setPreferredSize(new Dimension(50,20));

        tijiao1.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));

        tijiao1.addActionListener(new ButtonListener());

       

       

       

        Input=new JPanel();

        Input.setBackground(new Color(230,239,255));

        Input.setLayout(new BoxLayout(Input,BoxLayout.Y_AXIS));

        Input.add(Box.createRigidArea(new Dimension(30,0)));

        Input.add(background1);

        Input.add(Box.createRigidArea(new Dimension(0,10)));

        Input.add(panel11);  //将各个panel添加到Input中

        Input.add(panel12);

        Input.add(panel13);

        Input.add(panel14);

        Input.add(panel15);

        Input.add(panel16);

        Input.add(Box.createRigidArea(new Dimension(0,10)));

        Input.add(tijiao1); // 按键的添加

       

        xingming2=new JLabel("学生姓名:");//修改界面各个组件的安排

        xuehao2=new JLabel("学生学号:");

        riqi2=new JLabel("缺勤日期:");

        keshi2=new JLabel("缺勤课时:");

        kemu2=new JLabel("缺勤科目:");

        leixing2=new JLabel("缺勤类型:");

        xingming22=new JTextField(8);

        xingming22.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

       

        xuehao22=new JTextField(8);

        xuehao22.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

       

        riqi22=new JTextField(8);

        riqi22.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

       

        keshi22=new JTextField(8);

        keshi22.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

       

        kemu22=new JTextField(8);

        kemu22.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

       

        leixing22=new JTextField(8);

        leixing22.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

       

       

       

        panel21 = new JPanel();

        panel21.setBackground(new Color(230,239,255));

        panel21.setLayout(new BoxLayout(panel21,BoxLayout.X_AXIS));

        panel21.add(Box.createRigidArea(new Dimension(30,15)));

        panel21.add(xingming2);

        panel21.add(xingming22);

       

       

       

        panel22 = new JPanel();

        panel22.setBackground(new Color(230,239,255));

        panel22.setLayout(new BoxLayout(panel22,BoxLayout.X_AXIS));

        panel22.add(Box.createRigidArea(new Dimension(30,0)));

        panel22.add(xuehao2);

        panel22.add(xuehao22);

       

        panel23 = new JPanel();

        panel23.setBackground(new Color(230,239,255));

        panel23.setLayout(new BoxLayout(panel23,BoxLayout.X_AXIS));

        panel23.add(Box.createRigidArea(new Dimension(30,0)));

        panel23.add(riqi2);

        panel23.add(riqi22);

       

        panel24 = new JPanel();

        panel24.setBackground(new Color(230,239,255));

        panel24.setLayout(new BoxLayout(panel24,BoxLayout.X_AXIS));

        panel24.add(Box.createRigidArea(new Dimension(30,0)));

        panel24.add(keshi2);

        panel24.add(keshi22);

       

        panel25 = new JPanel();

        panel25.setBackground(new Color(230,239,255));

        panel25.setLayout(new BoxLayout(panel25,BoxLayout.X_AXIS));

        panel25.add(Box.createRigidArea(new Dimension(30,0)));

        panel25.add(kemu2);

        panel25.add(kemu22);

       

        panel26 = new JPanel();

        panel26.setBackground(new Color(230,239,255));

        panel26.setLayout(new BoxLayout(panel26,BoxLayout.X_AXIS));

        panel26.add(Box.createRigidArea(new Dimension(30,0)));

        panel26.add(leixing2);

        panel26.add(leixing22);

       

        xiugai2 = new JButton("修改");

        xiugai2.setFont(new Font("幼圆", Font.BOLD, 18));

        xiugai2.setPreferredSize(new Dimension(50,20));

        xiugai2.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));

        xiugai2.addActionListener(new ButtonListener());

       

        chaxun2 = new JButton("查询");

        chaxun2.setPreferredSize(new Dimension(50,20));

        chaxun2.setFont(new Font("幼圆", Font.BOLD, 18));

        chaxun2.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));

        chaxun2.addActionListener(new ButtonListener());

       

        panel27 = new JPanel();

        panel27.setLayout(new BoxLayout(panel27,BoxLayout.X_AXIS));

        panel27.add(xiugai2);

        panel27.add(chaxun2);

       

        Modify = new JPanel();

        Modify.setBackground(new Color(230,239,255));

        Modify.setLayout(new BoxLayout(Modify,BoxLayout.Y_AXIS));

        Modify.add(Box.createRigidArea(new Dimension(30,0)));

        Modify.add(background2);

        Modify.add(Box.createRigidArea(new Dimension(0,10)));

        Modify.add(panel21);

        Modify.add(panel22);

        Modify.add(panel23);

        Modify.add(panel24);

        Modify.add(panel25);

        Modify.add(panel26);

        Modify.add(Box.createRigidArea(new Dimension(0,10)));

        Modify.add(panel27);

       

       

       

       

       

        xingming3=new JLabel("学生姓名:");//查找界面各个组件的安排

        xuehao3=new JLabel("学生学号:");

        riqi3=new JLabel("缺勤日期:");

        keshi3=new JLabel("缺勤课时:");

        kemu3=new JLabel("缺勤科目:");

        leixing3=new JLabel("缺勤类型:");

       

        xingming33=new JTextField(8);

        xingming33.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

       

        xuehao33=new JTextField(8);

        xuehao33.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

   

        riqi33=new JTextField(8);

        riqi33.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

       

        keshi33=new JTextField(8);

        keshi33.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

       

        kemu33=new JTextField(8);

        kemu33.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

       

        leixing33=new JTextField(8);

        leixing33.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

       

       

        panel31 = new JPanel();

        panel31.setBackground(new Color(230,239,255));

        panel31.setLayout(new BoxLayout(panel31,BoxLayout.X_AXIS));

        panel31.add(Box.createRigidArea(new Dimension(30,10))); 

        panel31.add(xingming3);

        panel31.add(xingming33);

       

       

       

        panel32 = new JPanel();

        panel32.setBackground(new Color(230,239,255));

        panel32.setLayout(new BoxLayout(panel32,BoxLayout.X_AXIS));

        panel32.add(Box.createRigidArea(new Dimension(30,0)));

        panel32.add(xuehao3);

        panel32.add(xuehao33);

       

        panel33 = new JPanel();

        panel33.setBackground(new Color(230,239,255));

        panel33.setLayout(new BoxLayout(panel33,BoxLayout.X_AXIS));

        panel33.add(Box.createRigidArea(new Dimension(30,0)));

        panel33.add(riqi3);

        panel33.add(riqi33);

       

        panel34 = new JPanel();

        panel34.setBackground(new Color(230,239,255));

        panel34.setLayout(new BoxLayout(panel34,BoxLayout.X_AXIS));

        panel34.add(Box.createRigidArea(new Dimension(30,0)));

        panel34.add(keshi3);

        panel34.add(keshi33);

       

        panel35 = new JPanel();

        panel35.setBackground(new Color(230,239,255));

        panel35.setLayout(new BoxLayout(panel35,BoxLayout.X_AXIS));

        panel35.add(Box.createRigidArea(new Dimension(30,0)));

        panel35.add(kemu3);

        panel35.add(kemu33);

       

        panel36 = new JPanel();

        panel36.setBackground(new Color(230,239,255));

        panel36.setLayout(new BoxLayout(panel36,BoxLayout.X_AXIS));

        panel36.add(Box.createRigidArea(new Dimension(30,0)));

        panel36.add(leixing3);

        panel36.add(leixing33);

       

       

        chaxun3=new JButton("查询");

        chaxun3.setPreferredSize(new Dimension(50,20));

        chaxun3.setFont(new Font("幼圆", Font.BOLD, 18));

        chaxun3.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));

        chaxun3.addActionListener(new ButtonListener());

       

     

     

       

        Find = new JPanel();

        Find.setBackground(new Color(230,239,255));

        Find.setLayout(new BoxLayout(Find,BoxLayout.Y_AXIS));

        Find.add(Box.createRigidArea(new Dimension(30,5)));

        Find.add(background3);

        Find.add(Box.createRigidArea(new Dimension(0,10)));

        Find.add(panel31);

        Find.add(panel32);

        Find.add(panel33);

        Find.add(panel34);

        Find.add(panel35);

        Find.add(panel36);

        Find.add(Box.createRigidArea(new Dimension(0,10)));

        Find.add(chaxun3);

       

       

       

        jieguo = new JLabel("统计结果:");  //统计功能各个组件的安排

        background4 = new JLabel("统计");

         xAt= new JButton("学生和次数");

         xAt.setPreferredSize(new Dimension(50,20));

         xAt.setFont(new Font("幼圆", Font.BOLD, 10));

         xAt.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));

         xAt.addActionListener(new ButtonListener());

       

         kAr= new JButton("课程和人数");

         kAr.setPreferredSize(new Dimension(50,20));

         kAr.setFont(new Font("幼圆", Font.BOLD, 10));

         kAr.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));

         kAr.addActionListener(new ButtonListener());

         

     

        JieGuo=new JTextArea();

        JieGuo.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));

       

        jieguoP = new JPanel();

        jieguoP.setBackground(new Color(230,239,255));

        jieguoP.setLayout(new BoxLayout(jieguoP,BoxLayout.X_AXIS));

        jieguoP.add(Box.createRigidArea(new Dimension(10,0)));

        jieguoP.setPreferredSize(new Dimension(40,20));

        jieguoP.add(jieguo);

        jieguoP.add(JieGuo);

        panelB= new JPanel();

        panelB.setBackground(new Color(230,239,255));

        panelB.setLayout(new BoxLayout(panelB,BoxLayout.X_AXIS));

        panelB.add(Box.createRigidArea(new Dimension(30,0)));

        panelB.add(xAt);

        panelB.add(kAr);

        account=new JPanel();

        account.setBackground(new Color(230,239,255));

        account.setLayout(new BoxLayout(account,BoxLayout.Y_AXIS));

        account.add(Box.createRigidArea(new Dimension(30,5)));

        account.add(background4);

        account.add(Box.createRigidArea(new Dimension(0,10)));

     

        account.add(jieguoP);

        account.add(Box.createRigidArea(new Dimension(0,10)));

        account.add(panelB);

       

       

       

        tb = new JTabbedPane();

        tb.setBackground(new Color(230,239,255));

        tb.setBounds(0,0,400,400);

        tb.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));

      

        tb.addTab("录入",Input);  //将各个功能模块加到tb中

        tb.addTab("修改",Modify);

        tb.addTab("查询",Find);

        tb.addTab("统计",account);

        setLayout(new BorderLayout());

        add(tb,BorderLayout.CENTER);

       

        setSize(new Dimension(400,400));

       

    }

   

    private class ButtonListener implements ActionListener   //监听器类

    {

      public void actionPerformed(ActionEvent event)

     {

       

        xingming111=xingming11.getText();//录入功能监听

        xuehao111=xuehao11.getText();

        riqi111=riqi11.getText();

        keshi111=keshi11.getText();

        kemu111=kemu11.getText();

        leixing111=leixing11.getText();

        if( event.getSource() == tijiao1 )  //判断是否已经存在输入的学生信息

        {

            for(int j = 0;j<student.size();j++)

            {

               

                if(Integer.toString(student.get(j).getXueHao()).equals(xuehao111)

                        || student.get(j).getXingMing().equals(xingming111))

                {   

                    cha1=j;

                   

                }

            }

                if(cha1 == null)    //无此学生信息则录入信息

                {      

              student.add(new Student(xingming111,Integer.parseInt(xuehao111),riqi111,

                    Integer.parseInt(keshi111),kemu111,leixing111));

                    background1.setText("录入信息成功!");

                    xingming11.setText(null);

                    xuehao11.setText(null);

                    riqi11.setText(null);

                    keshi11.setText(null);

                    kemu11.setText(null);

                    leixing11.setText(null);

                }

               

                else

                    {

                    background1.setText("学生已有信息存在,有需要请修改!");

                    xingming11.setText(null);

                    xuehao11.setText(null);

                    riqi11.setText(null);

                    keshi11.setText(null);

                    kemu11.setText(null);

                    leixing11.setText(null);

                    }

        }

      

           

        if(event.getSource()==chaxun2)  //修改功能监听

        {

            if(student.size() == 0)

                background2.setText("暂无任何学生信息,请先录入!");

            else

            {

                for(int j = 0;j<student.size();j++)  //需要先查询到要修改学生的信息

                {

                    xuehao222=xuehao22.getText();

                    xingming222=xingming22.getText();

                    if(Integer.toString(student.get(j).getXueHao()).equals(xuehao222)

                            ||student.get(j).getXingMing().equals(xingming222))

                    {

                        cha1 = j;

                       

                    }

                }

                if(cha1==null)

                        {

                        background2.setText("无该学生信息,请重新查询!");

                        xingming22.setText("");

                        xuehao22.setText("");

                        riqi22.setText("");

                        keshi22.setText("");

                        kemu22.setText("");

                        leixing22.setText("");

                        }

                }

           

       

            xingming22.setText(student.get(cha1).getXingMing());

            xuehao22.setText(Integer.toString(student.get(cha1).getXueHao()));

            riqi22.setText(student.get(cha1).getRiQi());

            keshi22.setText(Integer.toString(student.get(cha1).getKeShi()));

            kemu22.setText(student.get(cha1).getKeMu());

            leixing22.setText(student.get(cha1).getLeiXing());

            }

       

        if(event.getSource()== xiugai2)  //当查到信息后开始修改

                {

                    student.remove(cha1);

                    student.get(cha1).setKeMu(kemu22.getText());

                    student.get(cha1).setKeShi(Integer.parseInt(keshi22.getText()));

                    student.get(cha1).setLeiXing(leixing22.getText());

                    student.get(cha1).setRiQi(riqi22.getText());

                    student.get(cha1).setXingMing(xingming22.getText());

                    student.get(cha1).setXueHao(Integer.parseInt(xuehao22.getText()));

                   

                   

                    cha1 = null;

                    xingming22.setText(null);  //改后将文本框信息置空

                    xuehao22.setText(null);

                    riqi22.setText(null);

                    keshi22.setText(null);

                    kemu22.setText(null);

                    leixing22.setText(null);

                    background2.setText("修改成功!");

                 }

       

       

        if(event.getSource()== chaxun3)//查询功能监听

        {  

            if(student.size() == 0)

                background3.setText("暂无任何学生信息,请先录入!");

            else

            {

                for(int j = 0;j<student.size();j++)

                {

                    xuehao333=xuehao33.getText();

                    xingming333=xingming33.getText();

// 通过比较输入的学号或是姓名进行查询

                    if(Integer.toString(student.get(j).getXueHao()).equals(xuehao333)

                            || student.get(j).getXingMing().equals(xingming333))

                    {

                        cha2 = j;

                       

                    }

                }

                    if(cha2==null)

                        {

                        background3.setText("无该学生信息,请重新查询!");

                        xingming33.setText("");

                        xuehao33.setText("");

                        riqi33.setText("");

                        keshi33.setText("");

                        kemu33.setText("");

                        leixing33.setText("");

                        }

              }

            xingming33.setText(student.get(cha2).getXingMing());

            xuehao33.setText(Integer.toString(student.get(cha2).getXueHao()));

            riqi33.setText(student.get(cha2).getRiQi());

            keshi33.setText(Integer.toString(student.get(cha2).getKeShi()));

            kemu33.setText(student.get(cha2).getKeMu());

            leixing33.setText(student.get(cha2).getLeiXing());

            background3.setText("查询成功!");

            cha2 = null;

          }

       

           

            if(event.getSource() == xAt ) //统计功能的监听,按学生名和课时统计

            {

                int sum=0;

                String str="";

                if(student.size()==0)

                    background4.setText("无任何学生信息!");

                else

                    for(int i=0;i<student.size();i++)

                    {

                        if(student.get(i).getKeShi()!=0)

                        {

                           

                            sum += student.get(i).getKeShi(); //统计学生缺勤总课时

                            str += student.get(i).xingming+">";//统计学生的名字

                         }

                        JieGuo.setText(" 缺勤人:\n"+str +"\n总共缺勤 "+ sum+"次!");

// 输出统计结果

                       

                    }

                   

               

             }

           

            if(event.getSource() == kAr) //按课程名和缺勤人数统计

            {

                int sum2=0;

                String str2="";

                if(student.size()==0)

                    background4.setText("无任何学生信息!");

                else

                for(int j=0;j<student.size();j++)

                {

                    if(student.get(j).getKeShi()!=0)

                    {

                       

                        sum2 ++;

                        str2 +=student.get(j).getKeMu()+">";

                       

                       

                    }

                    JieGuo.setText(" 有学生缺勤科目:\n"+str2+"\n缺勤人数为: "+sum2);

                }

            }

           

           

        }

      }

    }

   

相关推荐