学Java有哪些可以练手的项目

Python017

学Java有哪些可以练手的项目,第1张

1.各种管理系统

源码下载(实例一):

jsp开发完整的博研图书馆后台管理系统,不使用框架开发的,太完美了

源码下载(实例二):

javaWeb图书馆管理系统源码mysql版本

源码下载(实例三)

GitHub - uboger/LibraryManager: JAVA GUI 图书馆管理系统

源码下载(实例四):

java swing开发企业人事管理系统源代码下载

2.简易的聊天系统

源码下载(实例一):

java swing开发网络聊天室群聊系统,基于java多线程socket编程

源码下载(实例二):

java swing开发大猫聊天室源码,简单易懂,适合java swing初学者

源码下载(实例三):

java websocket开发简单聊天室系统,实现群聊与一对一单人聊天案例

源码下载(实例四):

jsp开发简单聊天室demo-分享

3.实现通讯录

java通讯录实现了添加删除和查找功能

源码下载(二):

JAVA版通讯录管理系统课程设计源码

源码下载(三):

Java Swing界面.完美设计通讯录..有需要的下

4.坦克大战

源码下载(一):

俄罗斯方块 JAVA版

源码下载(二):

GitHub - FieldSoft-HelloClyde/Tetris-Swing: Swing编写的俄罗斯方块

源码下载(三):

java swing开发的俄罗斯方块游戏,包含完整代码+详细注释

5.五子棋

源码下载(一):

Java实践(十一)——五子棋

源码下载(二):

java swing开发的五子棋小游戏源码

源码下载(三):

java swing开发单机版五子棋源代码下载

源码下载(四):

Java五子棋算法和代码

6.中国象棋

源码下载(一):Java实践(十二)——中国象棋

7.贪吃蛇

java贪吃蛇源代码 、 java贪吃蛇源代码

以上是总结出来的简单的练手项目,希望对你有帮助

import java.awt.*

import java.awt.event.*

import javax.swing.*

import java.util.*

public class GreedSnake implements KeyListener{

JFrame mainFrame

Canvas paintCanvas

JLabel labelScore

SnakeModel snakeModel = null

public static final int canvasWidth = 200

public static final int canvasHeight = 300

public static final int nodeWidth = 10

public static final int nodeHeight = 10

public GreedSnake() {

mainFrame = new JFrame("GreedSnake")

Container cp = mainFrame.getContentPane()

labelScore = new JLabel("Score:")

cp.add(labelScore, BorderLayout.NORTH)

paintCanvas = new Canvas()

paintCanvas.setSize(canvasWidth+1,canvasHeight+1)

paintCanvas.addKeyListener(this)

cp.add(paintCanvas, BorderLayout.CENTER)

JPanel panelButtom = new JPanel()

panelButtom.setLayout(new BorderLayout())

JLabel labelHelp

labelHelp = new JLabel("PageUp, PageDown for speed", JLabel.CENTER)

panelButtom.add(labelHelp, BorderLayout.NORTH)

labelHelp = new JLabel("ENTER or R or S for start", JLabel.CENTER)

panelButtom.add(labelHelp, BorderLayout.CENTER)

labelHelp = new JLabel("SPACE or P for pause",JLabel.CENTER)

panelButtom.add(labelHelp, BorderLayout.SOUTH)

cp.add(panelButtom,BorderLayout.SOUTH)

mainFrame.addKeyListener(this)

mainFrame.pack()

mainFrame.setResizable(false)

mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

mainFrame.setVisible(true)

begin()

}

public void keyPressed(KeyEvent e){

int keyCode = e.getKeyCode()

if (snakeModel.running)

switch(keyCode){

case KeyEvent.VK_UP:

snakeModel.changeDirection(SnakeModel.UP)

break

case KeyEvent.VK_DOWN:

snakeModel.changeDirection(SnakeModel.DOWN)

break

case KeyEvent.VK_LEFT:

snakeModel.changeDirection(SnakeModel.LEFT)

break

case KeyEvent.VK_RIGHT:

snakeModel.changeDirection(SnakeModel.RIGHT)

break

case KeyEvent.VK_ADD:

case KeyEvent.VK_PAGE_UP:

snakeModel.speedUp()

break

case KeyEvent.VK_SUBTRACT:

case KeyEvent.VK_PAGE_DOWN:

snakeModel.speedDown()

break

case KeyEvent.VK_SPACE:

case KeyEvent.VK_P:

snakeModel.changePauseState()

break

default:

}

if (keyCode == KeyEvent.VK_R ||

keyCode == KeyEvent.VK_S ||

keyCode == KeyEvent.VK_ENTER){

snakeModel.running = false

begin()

}

}

public void keyReleased(KeyEvent e){

}

public void keyTyped(KeyEvent e){

}

void repaint(){

Graphics g = paintCanvas.getGraphics()

//draw background

g.setColor(Color.WHITE)

g.fillRect(0,0,canvasWidth,canvasHeight)

// draw the snake

g.setColor(Color.BLACK)

LinkedList na = snakeModel.nodeArray

Iterator it = na.iterator()

while(it.hasNext()){

Node n = (Node)it.next()

drawNode(g,n)

}

// draw the food

g.setColor(Color.RED)

Node n = snakeModel.food

drawNode(g,n)

updateScore()

}

private void drawNode(Graphics g, Node n){

g.fillRect(n.x*nodeWidth,

n.y*nodeHeight,

nodeWidth-1,

nodeHeight-1)

}

public void updateScore(){

String s = "Score: " + snakeModel.score

labelScore.setText(s)

}

void begin(){

if (snakeModel == null || !snakeModel.running){

snakeModel = new SnakeModel(this,

canvasWidth/nodeWidth,

canvasHeight/nodeHeight)

(new Thread(snakeModel)).start()

}

}

public static void main(String[] args){

GreedSnake gs = new GreedSnake()

}

}

///////////////////////////////////////////////////

// 文件2

///////////////////////////////////////////////////

import java.util.*

import javax.swing.*

class SnakeModel implements Runnable{

GreedSnake gs

boolean[][] matrix

LinkedList nodeArray = new LinkedList()

Node food

int maxX

int maxY

int direction = 2

boolean running = false

int timeInterval = 200

double speedChangeRate = 0.75

boolean paused = false

int score = 0

int countMove = 0

// UP and DOWN should be even

// RIGHT and LEFT should be odd

public static final int UP = 2

public static final int DOWN = 4

public static final int LEFT = 1

public static final int RIGHT = 3

public SnakeModel(GreedSnake gs, int maxX, int maxY){

this.gs = gs

this.maxX = maxX

this.maxY = maxY

// initial matirx

matrix = new boolean[maxX][]

for(int i=0i<maxX++i){

matrix = new boolean[maxY]

Arrays.fill(matrix,false)

}

// initial the snake

int initArrayLength = maxX >20 ? 10 : maxX/2

for(int i = 0i <initArrayLength++i){

int x = maxX/2+i

int y = maxY/2

nodeArray.addLast(new Node(x, y))

matrix[x][y] = true

}

food = createFood()

matrix[food.x][food.y] = true

}

public void changeDirection(int newDirection){

if (direction % 2 != newDirection % 2){

direction = newDirection

}

}

public boolean moveOn(){

Node n = (Node)nodeArray.getFirst()

int x = n.x

int y = n.y

switch(direction){

case UP:

y--

break

case DOWN:

y++

break

case LEFT:

x--

break

case RIGHT:

x++

break

}

if ((0 <= x &&x <maxX) &&(0 <= y &&y <maxY)){

if (matrix[x][y]){

if(x == food.x &&y == food.y){

nodeArray.addFirst(food)

int scoreGet = (10000 - 200 * countMove) / timeInterval

score += scoreGet >0? scoreGet : 10

countMove = 0

food = createFood()

matrix[food.x][food.y] = true

return true

}

else

return false

}

else{

nodeArray.addFirst(new Node(x,y))

matrix[x][y] = true

n = (Node)nodeArray.removeLast()

matrix[n.x][n.y] = false

countMove++

return true

}

}

B/S 还是C/S的?

先给你个小的看看基础 能做出来再给你个难点的

十二、计算星期

要求:编写一个Applet小程序,使用Swing组件设计界面,通过下拉组合框选择日期的不同部分,计算设定日期是星期几,初始日期为系统当前日期

功能:

1、 编写一个Applet,使用Swing组件,继承Japplet类

2、 在Applet顶部显示标签和下拉组合框,分别选择年、月、日,年的范围从1990年到2050年

3、 用一个“计算星期”按钮,点击按钮计算星期,并在下方的标签上显信息:××××年××月××日是星期×

4、 创建一个HTML文档显示Applet

实现步骤:

1、 创建Applet

1) 继承javax.swing.JApplet

2) 定义组件和变量,如标签、组合框,保存日期的变量等。日期变量使用java.util.Calendar类

3) 在初始化方法中,初始化和布局组件:

用合适的容器和布局构造图示的界面,使用JcomboBox构造下拉组合框

读取系统当前日期,创建包含当前日期的Calendar类变量。参考代码是:

calendar=Calendar.getInstance()

初始化年、月、日下拉组合框的值,参考代码是:

for(int k=1990k<=2050k++)

cbxYear.addItem(new Integer(k))

将当前年月日设置为下拉框的当前值,如设置年下拉框的代码是:

cbxYear.setSelectedItem(new Integer(calendar.get(Calendar.YEAR)))

提示:

JcomboBox方法

setSelectedItem(Object anObject) 设置要选中的项

setSelectedIdex(int anIndex) 通过索引设置要选中的项,索引从0开始

Object getSelectedItem() 获得选中的项

int getSelectedIndex() 获得选中的索引位置

Calendar类的用法

int get(int field) 读取日期不同域的值

void set(int field,int value) 设置日期不同域的值

域可以是以下值:

Calendar.YEAR 年份

Calendar.MONTH 月份,月份从0开始,即0表示1月,11表示12月。

Calendar.DAY_OF_MONTH 日

Calendar.DAY_OF_WEEK 星期,注意从星期日到星期六对应整数是1到7

编写事件处理程序

从下拉框中读取年、月、日的值,并设置Calendar变量的对应域