Java课程设计题目一:动物换位

1 设计要求
设计GUI界面的动物换位游戏,游戏结果是让左、右两组动物交换位置。具 体要求如下:
①在水平排列的7个位置上左、右各有3个类型相同的动物,中间的位置上没有动物。左边动物将其右侧视为自己的前进方向,右边动物将其左侧视为自己的前进方向。
②单击一个动物,如果该动物的前方位置上没有动物,该动物就跳跃到该位置上,如果该动物的前方位置上有其他动物,但相隔一位的位置上没有其他动物,该动物就越过自己前面的动物跳跃至该隔位上,其他情形下该动物不能跳跃(跳跃时不能越过两个位置)。
③左面的动物只能向右方跳跃,右面的动物只能向左方跳跃。
①单击“撒销”按钮撤销上一次移动的动物,单击“重新开始”按钮可重新开始游戏。
程序运行的参考效果图如图1.1所示。

注意 按照MVC-Model View Control(模型,视图,控制器)的设计思想展开程序的设计和代码的编写。数据模型部分相当于MVC 中的Model角色,视图设计部分给出的界面部分相当于MVC 中的View,视图设计部分给出的事件监视器相当于MVC 中的Control。
2 数据模型
根据系统设计要求在数据模型部分编写了以下类。
Animal类:封装了左、右动物共同的属性和行为。
LeftAnimal类:Animal的子类,封装了左边动物的独特行为。
RightAnimal类:Animal的子类,封装了右边动物的独特行为。
Point类:刻画动物可以到达的位置。
ViewForAnimal类:封装制作动物视图的方法。
数据模型部分涉及的类的UML图如图2所示。

动物相关类
1.Animal类
根据设计要求提出的动物的特点设计了以下Animal类用来刻画动物的数和行为。Animal类应当组合Point类的实例,以便知道自己的位置信息。Animal类的一个重要行为是move)行为,该行为体现动物运动的特点,move)的具体实现由Animal的LeftAnimal和RightAnimal子类去完成。

Animal.javapackage ch1.data;
public abstract class Animal {String name ;Point [] allCanAtPoint;    //全部点位置Point point;               //动物当前所在的点位置ViewForAnimal animalView;  //动物的外观视图public void setAtPoint(Point p) {if(p!=null){point = p;point.setIsHaveAnimal(true);point.setAtPointAnimal(this);} }public Point getAtPoint() {return point;}public void setAllCanAtPoint(Point [] point){allCanAtPoint = point;}public void setAnimalView(ViewForAnimal animalView) {this.animalView = animalView;animalView.setAnimal(this);}public ViewForAnimal getAnimalView() {return animalView;}public void setName(String s) {name = s;}public String getName() {return name;}public abstract boolean move();
}
2)LeftAnimal和RightAnimal子类
Animal类的move()方法啊hiabstract方法,move()的具体实现由Animal的LeftAnimalhe RightAnimal子类按照设计要求去完成。代码分词如下。
LeftAnimal.java
package ch1.data;
public class LeftAnimal extends Animal{public boolean move(){int k = -1;boolean successMove = false;Point p = getAtPoint();for(int i=0;i<allCanAtPoint.length;i++){if(allCanAtPoint[i].equals(p)){ k = i; //找到动物当前所处的位置:allCanAtPoint[k]break;}} if(k==allCanAtPoint.length-1){//已经在最右面的点位置return false;}if(allCanAtPoint[k+1].isHaveAnimal()==false) { //前面位置上没有动物this.setAtPoint(allCanAtPoint[k+1]);successMove = true;p.setAtPointAnimal(null);return successMove ;}if((k+1)==allCanAtPoint.length-1){ //前面位置上是已经到达终点的动物return false;}if(allCanAtPoint[k+2].isHaveAnimal()==false) {//前方隔位上没有动物this.setAtPoint(allCanAtPoint[k+2]);successMove = true;p.setAtPointAnimal(null);return successMove ;}return successMove ;  }
}

位置相关类
根据设计要求提出的动物运动位置的特点设计了以下Point类,用来刻画和位置相关的数据和行为Point类的实例称为一个点,是动物可以到达的点。Point类的实例应当组合Animal的实例,以便告知在当前位置上的是Animal的哪个实例,即该点上是哪个动物。

Point.java
package ch1.data;
public class Point{int x,y; boolean haveAnimal; Animal animal=null; //在该点位置上的动物public void setX(int x){this.x=x;}public void setY(int y){this.y=y;}public boolean isHaveAnimal(){return haveAnimal;}public void setIsHaveAnimal(boolean boo){haveAnimal=boo;}public int getX(){return x;}public int getY(){return y;}public void setAtPointAnimal(Animal animal){this.animal=animal;if(animal!=null) {haveAnimal = true;}else {haveAnimal = false;}}public Animal getAtPointAnimal(){return animal;}
}

视图相关类
动物需要一个外观提供给游戏的玩家,以便玩家单击动物来运动当前动物。 ViewForAnimal 类是javax.swingJComponent 的子类,以便其子类有具体的外观。另外 ViewForAnimal类应当组合 Animal类的实例,以便确定为哪个 Aninmal实例提供视图,即该视图是哪个动物的视图。ViewForAnimal的子类将在视图(View)设计部分给出,见1A号中的AnimalView类。

ViewForAnimal.java
import javax.swing.JPanel;
public abstract class ViewForAnimal extends JPanel {public abstract void setAnimal(Animal animal);public abstract void setImage(String name);public abstract Animal getAnimal();public abstract void setAnimalViewLocation(int x,int y);public abstract void setAnimalViewSize(int w,int h);
}

3 简单测试
按照源文件中的包语句将相关的Java源文件保存到以下目录中:
D:\ ch1\data
编译各个源文件,例如:
D:>javac/ch1/data/Animal.java
或一次编译全部源文件:
D:>javac/ch1/data/*.java
把1.2节给出的类看作一个小框架,下面用框架中的类编写一个简单的应用程序,测试左、右动物运动换位,即在命令行表述对象的行为过程,如果表述成功(如果表述困难,说明数据模型不是很合理),那么就为以后的 GUI程序设计提供了很好的对象功能测试,在后续的 GUI 设计中,重要的工作仅仅是为某些对象提供视图界面,并处理相应的界面事件而已。
将AppTest.java源文件按照包名保存到以下目录中:
D:\chI\test
编译源文件:
D:>javac ch1/test/AppTest.java运行AppTest类(运行效果如图1.3所示):
D:>java ch1.test.AppTest

图1.3 简单测试

AppTest.java
import ch1.data.*;
public class AppTest {public static void main(String [] args) {Point [] point = new Point[7];for(int i=0;i<point.length;i++) {point[i] = new Point();point[i].setX(i);point[i].setY(10);} Animal [] left = new Animal[3];Animal [] right = new Animal[3];for(int i =0;i<left.length;i++ ){left[i] = new LeftAnimal();left[i].setName("猫"+i);left[i].setAtPoint(point[i]);left[i].setAllCanAtPoint(point);} for(int i =0;i<right.length;i++ ){right[i] = new RightAnimal();right[i].setName("狗"+i);right[i].setAtPoint(point[4+i]);right[i].setAllCanAtPoint(point);} input(point);if(right[0].move())input(point);if(left[2].move())input(point);if(left[1].move())input(point);if(right[0].move())input(point);if(right[1].move())input(point); if(right[2].move())input(point); if(left[2].move())input(point);if(left[1].move())input(point);if(left[0].move())input(point);if(right[0].move())input(point); if(right[1].move())input(point);if(right[2].move())input(point); if(left[1].move())input(point);if(left[0].move())input(point); if(right[2].move())input(point);  }static void input(Point [] point){for(int i=0;i<point.length;i++){Animal animal=point[i].getAtPointAnimal();if(animal!=null)System.out.print(animal.getName());elseSystem.out.print("   ");  } System.out.println();}
}

4 视图设计
设计GUI程用1.2节给出的类以外,需要使用javax.sing提供视图(也称Java Swing框架)以及处理视图上触发的界面事件。与1.3节中简单的测试相比,GUI程序可以提供更好的用户界面,完成1.1节提出的设计要求。
GUI部分设计的类如下(主要类的UML图如图1.4所示)
●AnimalView类:其实例为动物提供外观显示。
●GamePanel:其实例用于放置动物的外观,并组合负责处理界面事件的监视器。

●HandleAnimalMove类:其实例是一个监视器,该监视器负责处理AnimalView视图,即动物视图上触发的MouseEvent 事件。当用户在动物视图上按下鼠标时该监视器让动物执行move()方法,松开鼠标时该监视器检查用户是否成功地将左右动物互换完毕。
●HandleRedo类:其实例是一个监视器,该监视器负责监视按钮上触发的ActionEvent事件,当用户单击按钮触发ActionEvent事件时,该监视器负责撤销用户移动动物的操作。
●HandleReStart类:其实例是一个 监视器,该监视器负责监视按钮上触发的ActionEvent事件,当用户单击按钮触发ActionEvent事件时,该监视器负责将游戏还原成最初始的样子。
视图相关类

  1. AnimalView类 AnimalView类是ViewForAnimal类的子类,实现了ViewForAnimal 类中定义的abstract方法,其实例通过绘制一幅图像提供动物的外观显示,例如绘制小狗或小猫的图像(如图1.5所示)。
AnimalView.java
import java.awt.*;
import ch1.data.*;
public class AnimalView extends ViewForAnimal{Animal animal;Image image;Toolkit tool;public AnimalView() {tool = getToolkit();}public void setAnimal(Animal animal){this.animal = animal;}public void setImage(String name){image = tool.getImage(name);repaint();}public Animal getAnimal() {return animal;}public void setAnimalViewLocation(int x,int y){setLocation(x,y);}public void setAnimalViewSize(int w,int h){setSize(w,h);}public void paintComponent(Graphics g){super.paintComponent(g);int w=getBounds().width;int h=getBounds().height;g.drawImage(image,0,0,w,h,this);}
}

2)GamePanel类
GamePanel 类是javax.swing.JPanel类的子类,GamePanel类的实例将AnimalView类的实例(动物视图)放置其中(如图1.6所示)。

GamePanel.java
import javax.swing.*;
import java.awt.*;
import ch1.data.Animal;
import ch1.data.Point;
import ch1.data.ViewForAnimal;
import ch1.data.LeftAnimal;
import ch1.data.RightAnimal;
import java.util.*;
import java.awt.geom.*;
public class GamePanel extends JPanel {public int animalCount = -1;public Point [] point ;Animal []  leftAnimal,rightAnimal; public ViewForAnimal [] leftAnimalView,rightAnimalView;//动物视图public int width =90,height=70;  //动物视图的大小public int gap = 2;              //动物之间的间隙           public JButton buttonRedo;//撤销按钮public JButton buttonReStart;//重新开始游戏public Stack<Point> saveAnimalStep; //存放动物走动的位置,以便恢复HandleAnimalMove handleAnimalMove;//负责处理MouseEvent的监视器HandleRedo handleRedo;           //负责ActionEvent的监视器 HandleReStart handleReStart;    //负责ActionEvent的监视器public GamePanel(){setLayout(null);buttonRedo = new JButton("撤销");buttonReStart = new JButton("重新开始");saveAnimalStep = new Stack<Point>();}public void setAnimalCount(int n){if(n%2 != 0 ||n<=1) {System.out.println(n+"的个数不合理");System.exit(0);} removeAll();  //首先移出曾添加到该容器中的全部组件animalCount = n;initPoitAndAnimal();  //初始化动物和位置对象initLeftAnimalView(); //初始化左边的动物视图initRightAnimalView();registerListener();   //注册监视器}private void initPoitAndAnimal(){//初始化动物和位置对象point = new Point[animalCount+1];int posionX = width; //点的位置的x坐标int posionY = height;for(int i=0;i<point.length;i++) {point[i] = new Point();point[i].setX(posionX);point[i].setY(posionY);posionX = posionX+width+gap;} int m = animalCount/2;leftAnimal = new LeftAnimal[m];rightAnimal = new RightAnimal[m];for(int i =0;i<leftAnimal.length;i++ ){leftAnimal[i] = new LeftAnimal();leftAnimal[i].setAtPoint(point[i]);leftAnimal[i].setAllCanAtPoint(point);} for(int i =0;i<rightAnimal.length;i++ ){rightAnimal[i] = new RightAnimal();rightAnimal[i].setAtPoint(point[m+1+i]);rightAnimal[i].setAllCanAtPoint(point);}  }private void initLeftAnimalView(){//初始化左边的动物视图int m = animalCount/2;leftAnimalView = new ViewForAnimal[m];for(int i =0;i<leftAnimalView.length;i++ ){leftAnimalView[i] = new AnimalView();leftAnimal[i].setAnimalView(leftAnimalView[i]);Point p = leftAnimal[i].getAtPoint();int x = p.getX();int y = p.getY();add(leftAnimalView[i]);//动物视图所在位置和动物所在点相同:leftAnimalView[i].setAnimalViewLocation(x,y);leftAnimalView[i].setAnimalViewSize(width,height);} }private void initRightAnimalView(){//初始化右边的动物视图int m = animalCount/2;rightAnimalView = new ViewForAnimal[m];for(int i =0;i<rightAnimalView.length;i++ ){rightAnimalView[i] = new AnimalView();rightAnimal[i].setAnimalView(rightAnimalView[i]);Point p = rightAnimal[i].getAtPoint();int x = p.getX();int y = p.getY();add(rightAnimalView[i]);rightAnimalView[i].setAnimalViewLocation(x,y);rightAnimalView[i].setAnimalViewSize(width,height);} }private void registerListener(){handleAnimalMove = new HandleAnimalMove(this);//监视用户在动物视图上触发的MouseEvent事件:for(int i =0;i<rightAnimalView.length;i++ ){rightAnimalView[i].addMouseListener(handleAnimalMove);}for(int i =0;i<leftAnimalView.length;i++ ){leftAnimalView[i].addMouseListener(handleAnimalMove);}handleRedo = new HandleRedo(this);handleReStart = new HandleReStart(this);//监视用户在按钮上触发的ActionEvent事件:buttonRedo.addActionListener(handleRedo);buttonReStart.addActionListener(handleReStart);}public void setLeftAnimalImage(String pic){if(animalCount==-1)return;for(int i =0;i<leftAnimalView.length;i++ ){leftAnimalView[i].setImage(pic);} }public void setRightAnimalImage(String pic){if(animalCount==-1)return;for(int i =0;i<rightAnimalView.length;i++ ){rightAnimalView[i].setImage(pic);} }public void paintComponent(Graphics g){int penHeight =12;  //画笔的高度super.paintComponent(g);int xStart =width+gap;int yStart =2*height+penHeight/2;int xEnd =(animalCount+2)*width+(animalCount+1)*2;int yEnd =2*height+penHeight/2;Line2D line=new Line2D.Double(xStart,yStart,xEnd,yEnd);Graphics2D g_2d=(Graphics2D)g;g_2d.setColor(Color.blue);BasicStroke bs=new BasicStroke(penHeight,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER);g_2d.setStroke(bs);g_2d.draw(line);}
}

事件监视器
事件监视器负责处理视图上触发的用户界面事件,以便完成相应的任务。
1)HandleAnimalMove 类
HandleAnimalMove 类是 MouseAdapter 类的子类,重写了MouseAdapter 类的 mousePressed(MouseEvent e)和mouseReleased(MouseEvent e)方法. 在 mousePressed(MouseEvent e)方法中移动动物, 在mouseReleased(MouseEvent e)方法中判断用户是否成功完成动物的全部换位 。

HandleAnimalMove.java
import java.awt.event.*;
import javax.swing.JOptionPane;
import ch1.data.Point;
import ch1.data.Animal;
import ch1.data.ViewForAnimal;
import ch1.data.LeftAnimal;
import ch1.data.RightAnimal;
public class HandleAnimalMove extends MouseAdapter {GamePanel panel;HandleAnimalMove(GamePanel panel){this.panel = panel;} public void mousePressed(MouseEvent e){ViewForAnimal animalView = (ViewForAnimal)e.getSource();Animal animal = animalView.getAnimal();Point pStart = animal.getAtPoint(); //得到动物移动前所在点if(animal.move()) {Point pEnd = animal.getAtPoint();//得到动物移动后所在点int x = pEnd.getX();int y = pEnd.getY();animalView.setAnimalViewLocation(x,y);//让动物视图所在位置和动物所在点相同panel.saveAnimalStep.push(pStart);panel.saveAnimalStep.push(pEnd);}} public void mouseReleased(MouseEvent e){boolean success = true;int n =panel.animalCount/2;for(int i=0;i<n;i++){Animal animal=panel.point[i].getAtPointAnimal();success = success&&(animal instanceof RightAnimal);animal=panel.point[n+1+i].getAtPointAnimal();success = success&&(animal instanceof LeftAnimal);if(success == false)break;}if(success) {JOptionPane.showMessageDialog(null,"您成功了","消息框",JOptionPane.INFORMATION_MESSAGE); }}
}

2) HandleRedo类
HandleRedo类实现了ActionListener接口,重写了接口中的actionPerformed(ActionEvent e)方法,在cwoeromed(ActionEvent e)方法中撤销用户移动动物的操作。

HandleRedo.java
import ch1.data.Point;
import ch1.data.Animal;
import ch1.data.ViewForAnimal;
import java.awt.event.*;
public class HandleRedo implements ActionListener {GamePanel panel;HandleRedo(GamePanel panel){this.panel = panel;} public void actionPerformed(ActionEvent e){ //撤销移动动物的操作if(panel.saveAnimalStep.empty())return;Point pEnd = panel.saveAnimalStep.pop();Point pStart = panel.saveAnimalStep.pop();Animal animal = pEnd.getAtPointAnimal(); pEnd.setIsHaveAnimal(false);pEnd.setAtPointAnimal(null);animal.setAtPoint(pStart);ViewForAnimal animalView =animal.getAnimalView();int x = pStart.getX();int y = pStart.getY();animalView.setAnimalViewLocation(x,y);//让动物视图所在位置和动物所在点相同}
}

3)HandleReStart类
HandleReStart类实现了ActionListener接口,重写了接口中的actionPerformed(ActionEvent
e)方法,在actionPerformed(ActionEvent e)方法中将游戏还原成最初始的样子。

HandleReStart.java
import ch1.data.ViewForAnimal;
import java.awt.event.*;
public class HandleReStart implements ActionListener {GamePanel panel;HandleReStart(GamePanel panel){this.panel = panel;} public void actionPerformed(ActionEvent e){ //处理重新开始panel.saveAnimalStep.clear();for(int i=0;i<panel.point.length;i++) {panel.point[i].setIsHaveAnimal(false);} for(int i =0;i<panel.leftAnimal.length;i++ ){panel.leftAnimal[i].setAtPoint(panel.point[i]);int x = panel.point[i].getX();int y = panel.point[i].getY();//让动物视图所在位置和动物所在点相同ViewForAnimal animalView =panel.leftAnimal[i].getAnimalView();animalView.setAnimalViewLocation(x,y);} for(int i =0;i<panel.rightAnimal.length;i++ ){int m = panel.animalCount/2;panel.rightAnimal[i].setAtPoint(panel.point[m+1+i]);int x = panel.point[m+1+i].getX();int y = panel.point[m+1+i].getY();//让动物视图所在位置和动物所在点相同ViewForAnimal animalView =panel.rightAnimal[i].getAnimalView();animalView.setAnimalViewLocation(x,y);}  }
}

5 GUI程序设计
按照源文件中的包语句将1.4节中的相关源文件保存到以下目录中
D:\ch1\view
编译各个源文件,例如
D:>javac ch1/view/AnimalView.java
把1.2和1.4节给出的类看作一个小框架,下面用框架中的类编写GUI应用程序成1.1节给出的设计要求
将AppWindow.java源文件按照包名保存在以下目录中
D:\ch1\gui
编译源文件
D:>javac ch1/gui/AppWindow.java
或一次编译全部源文件
D:>javac ch1/view/*.java
建立名字是image和ch1同级别的文件夹(这里需要在D盘下建立并将名字是cat.jpg)和dog.jpg的图像文件保存到该image中。
AppWindow是JFrame的子类,其实例将Gamepanel类的实例集成到窗体中,即提供游戏的主界面外观。
运行AppWindow类(运行效果如本章开始给出的图1.1):

D:l>java ch1. gui. AppWindow

AppWindow.java
import javax.swing.*;
import java.awt.*;
import ch1.view.GamePanel;
public class AppWindow extends JFrame {GamePanel gamePanel;public AppWindow(){setTitle("动物换位游戏");gamePanel = new GamePanel();gamePanel.setAnimalCount(6);gamePanel.setLeftAnimalImage("image/cat.jpg");gamePanel.setRightAnimalImage("image/dog.jpg");add(gamePanel,BorderLayout.CENTER);gamePanel.setBackground(Color.white);JPanel northP = new JPanel();northP.add(gamePanel.buttonReStart);northP.add(gamePanel.buttonRedo);add(northP,BorderLayout.NORTH);        setBounds(60,60,9*gamePanel.width+9*gamePanel.gap,300);  validate();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true); }public static void main(String args[] ){AppWindow win = new AppWindow();  }
}

6 程序发布
用户可以使用jar.exe命令制作JAR文件来发布软件。
➊清单文件
编写以下清单文件(用记事本保存时需要将保存类型选择为“所有文件(.)”):
ch1.mf

Mani fest-Version: 1 .0
Main-class: ch1.gui.AppWindow

Created-By: 1.8
将ch1.mf保存到D:,即保存在包名所代表的目录的上一层目录中。
注意 清单中的 Manifest-Version 和1.0之间、Main-Class 和主类ch1.gui.AppWindow
之间以及Created-By和1.8之间必须有且只有一个空格。
用批处理文件发布程序
在命令行中使用jar命令得到JAR文件:
D:>jar cfm AnimalGame.jar ch1.mf ch1/data/.class ch1/view/.class ch1/gui/ *.class

其中,参数c表示要生成一个新的JAR文件,f表示要生成的JAR文件的名字,m表示
清单文件的名字。如果没有任何错误提示,在D:\下将产生一个名字是AnimalGame.jar的文件。
编写以下 animalGame.bot,用记事本保存该文件时需要将保存类型选择为“所有文件(.)”。
animalGame.bat
path.\jre\bin
pause
javaw -jar AnimalGame.jar

将animalGame.bat文件、AnimalGame.jar文件和image 文件夹(软件需要其他非class文件)复制到某个文件夹中,例如名字是2000的文件夹中。然后将调试程序使用的JDK安装目录下的JRE也复制到2000文件夹中。
可以将2000文件夹作为软件发布,也可以用压缩工具将2000文件夹下的所有文件压维成.zip或.jar文件发布。用户解压后双击animalGame.bat即可运行程序。
如果客户的计算机上有JRE,可以不把JRE复制到2000文件夹中,同时去除.bat文件中的“path.\jre\bin”内容。
7 课设题目
①动物换位游戏
在学习本章代码的基础上改进动物换位游戏,可以为程序增加任何合理的并有能力完成的功能,但至少要增加下列所要求的功能。
1 在AppWindow类中增加菜单,该菜单下有3个菜单项,分别是初级、中级和高级。
初级时,游戏中的动物是6个,中级时是8个,高级时是10个。
2 在AppWindow类中增加菜单,该菜单下有两个菜单项,分别是“更改左动物图像”和
“更改右动物图像”。用户单击菜单项弹出文件对话框,例如单击“更改左动物图像”菜单项,用户可以使用弹出的文件对话框为左边动物选择图像文件。
3增加音乐效果,让动物运动时程序能播放简短的声音,并且左、右动物运动时程序播
放的声音不同(可参见第8章中的ch8.view.PlayMusic类)。用Java可以编写播放.au、.aiff、.wav、midi、 .rfm 格式的音频19。假设音频文件hello au位于应用程序当前的目录中(包目录的父目录中),对有关播放音乐的知识总结如下:
➢创建FILE 对象(FILE 类属于JAVA.IO包)
File musicFile=new File(“hello.au”);
➢获取URI 对象(URI类属于JAVA.NET包)
URI uri=musicFile. toURI() ;
➢获取URL对象(URL类属于JAVA.NET 包)
URI url=uri. toURI () ;
➢创建音频对象(AUDIOCLIP和APPLET类属于JAVA.APPLET包)
AudioClip clip=Applet . newAudioClip(url);
➢播放、循环与停止
clip.play()开始播放;
clip. loop()循环播放;
clip.stop()停止播放。
④使用javax.swing.Timer类增加计时功能
⑤如果完成了④,可为各个级别增加相应的“英雄榜”(建议看第8章的"英雄榜”一-ch8.data.RecordOrShowRecord、 ch8.view.Record 和ch8.view.ShowRecord 类)。用户成功完成动物换位后,如果成绩能排进前3名就弹出一个对话框, 将用户的成绩保存到"英雄榜”。⑥为每个级别的菜单项增加一一个子菜单项,负责查看该级别的“英雄榜”。
❷自定义题目
通过老师指导或自己查找资料自创个题目。

Java课程设计题目一:动物换位相关推荐

  1. Java课程设计题目二:保存计算过程的计算器

    Java课程设计题目二:保存计算过程的计算器 1 设计要求 参考Windows 操作系统提供的计算器设计一个实用的计算器,要求除了具有普通的计算功能外,还具有保存计算过程的功能. ①单击计算器上的数字 ...

  2. java课程设计题目及代码中国象棋,写的太详细了

    在这里分享一份 [mybatis从入门到精通] 的强力教程,定能够助你一臂之力. Mybatis基本介绍 ORM和MyBatis 对象/关系数据库映射(ORM) 基本映射方式 流行的ORM框架简介 目 ...

  3. 课程设计题目答案java,java课程设计题目及源代码

    目前, 很多发达国家都已经开始关注动漫对基础教育领域所产生的影响, 并且意识到它是传统教育手段所难以实现的, 现在已经有一部分国家将动漫作为基础教育的一部分,在中小学设立了动漫课程.就国外动漫基础教育 ...

  4. Java课设对对碰_JAVA课程设计题目

    序号题目要求 1简单的计算器程序1.该程序加.减.乘.除等运算 2.界面实现 2文件加密.解密软件通过软件界面选择打开一个文本文件,使用移位密码对文件内容进行加密并保存,或者针对移位密码加密的文本文件 ...

  5. 用java做小学数学系统_小学生数学练习题目自动生成系统——java课程设计

    <小学生数学练习题目自动生成系统--java课程设计>由会员分享,可在线阅读,更多相关<小学生数学练习题目自动生成系统--java课程设计(37页珍藏版)>请在金锄头文库上搜索 ...

  6. java 题目设计_JAVA的一些课程设计题目

    本人学校里JAVA课程设计的一些题目,分享给大家,大家可以拿来练练手! 1,课题:算术运算测试 功能要求:该程序用字符界面实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题 ...

  7. java课程设计 考试系统,java课程设计考试系统.

    java课程设计考试系统.Tag内容描述: 1.目 录 第一章第一章 引言引言 3 1 1目的 3 1 2名词解释 3 1 3参考资料 3 1 4文档结构 3 第第 2 章章远景远景 4 2 1项目概 ...

  8. Java课程设计报告--绩效考核信息管理系统

     Java课程设计报告 题目      绩效考核信息管理系统    学生姓名         学    号                   院    系        年级专业计算机科学与技术 班 ...

  9. java课程设计打字训练测试软件_打字训练测试软件-Java课程设计

    打字训练测试软件-Java课程设计 <程序设计实践>题目: 打字训练测试软件 学校:陕西工业学院 学院:信息学院 班级:信管 12-2 学号: 201213156619 姓名:刘克豪 20 ...

最新文章

  1. C#深入解析Json格式内容
  2. svn在linux下的使用(svn命令行)ubuntu 删除 新增 添加 提交 状态查询 恢复
  3. IOS工作笔记001---windows下安装通过VmWare来安装IOS系统_并连接上网_来吧超级详细
  4. 服务器控件的 ID, ClientID 和 UniqueID 属性
  5. 团队开发之个人博客五
  6. python入门之排序,文件操作
  7. linux cd 命令详解,Linux命令详解之–cd命令
  8. google四件套之Dagger2。从入门到爱不释手,之:Dagger2基础知识及在Java中使用(1)
  9. 零售的哲学前三章读后感
  10. 晶闸管相控交流调压的详细计算
  11. 服务器阵列卡装系统蓝屏,电脑开raid做系统蓝屏-电脑开机就蓝屏怎么解决?
  12. SCLK时钟信号可以高电平有效也可以低电平有效
  13. Smartbi大数据分析工具有哪些功能?
  14. 内网渗透系列:隐匿攻击方法
  15. POJ 【1088】 滑雪
  16. 复大华韬会基因博物馆项目论证会在北京大学举行
  17. mt管理器主题修改教程_微信皮肤主题怎么弄 微信设置更换修改气泡和主题教程...
  18. C++11标准模板(STL)- 算法 - 数值运算 (std::accumulate)
  19. 饥荒linux服务器搭建
  20. 碾压Dota2世界冠军的AI,被一小撮人持续干翻了

热门文章

  1. Verilog使用 $sformatf实现字符串拼接
  2. 苏州市市区中低收入家庭住房供应管理实施细则
  3. 使用windows身份验证登录sqlserver问题记录
  4. Python运用openpyxl计算excel表格中的欧氏距离
  5. 校验、AJAX与过滤器
  6. 校招----神策数据服务器面经
  7. PHP Smarty 模板,php中Smarty模板初体验
  8. a bytes-like object is required, not 'str'
  9. Golang GUI编程-图形化界面库简介
  10. 春漫乌海湖!【无标题】