学习java的第一个实践练手项目---彩票预测系统

 

这个项目用了8个晚上(20:00-23:00)加上2个白天完成。

 

一、所用知识点

1、java语言基础

2、多线程

3、Swing控件

4、数据库技术(MySQL)

二、项目目标

1、通过登录窗体点击进入主窗体

2、查看号码的走向趋势

3、随机选号功能

4、显示进度条、统计标签中的数据

5、折线图显示号码趋势

6、选号有要求产生随机号码

三、Jar包介绍

        每个项目都要使用一些已经成熟的技术,它们通常是由一些专业组织或团队所提供的开源免费技术。在今后的学习过程中,我们会逐渐对这些专业组织有所了解。本项目中使用的技术如下:

      BackgroundImage.jar    //实现窗体背景面板的Jar包

      forms -1.3.0.jar    //设计号码走向趋势折线图的Jar包

      jcommom-1.0.16.jar    //设计号码走向趋势折线图的Jar包

      jfreechart-1.0.13.jar    //设计号码走向趋势折线图的Jar包

      linechartgraph.jar    //实现号码走向趋势图的Jar包

      mrcpdao.jar    //操作开奖信息的Jar包

      mysql-connector-java-5.1.10-bin.jar    //实现数据库连接的Jar包

四、代码实现

1、项目的登录窗体

package com.frame;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;

public class LoginMain extends JFrame {

	private JPanel contentPane;
	public static void main(String[] args) {
		try {
			//设置登录窗体风格
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAmdFeel");
		} catch (Throwable e) {
			e.printStackTrace();
		}
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try{
						//实例化登录窗口
						LoginMain frame = new LoginMain();
						//使登录窗体可见
						frame.setVisible(true);
			}catch(Exception e) {
							e.printStackTrace();
						}
				
			}
		});
	}

	public LoginMain() {  //登录窗体的构造方法
		setTitle("明日彩票预测系统");  //登录窗体的标题
		//登录窗体的标题图标
		setIconImage(Toolkit.getDefaultToolkit().getImage(LoginMain.class.getResource("/imgs/log.png")));
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //对登录窗体发起‘close’时,推出应用程序
		setBounds(200,100,1100,620);  //登录窗体的位置及宽高
		contentPane = new JPanel();  //内容看板
		setContentPane(contentPane);  //把内容面板放入登录窗体中
		contentPane.setLayout(new BorderLayout(0,0));  //设置内容面板的布局为边界布局
		JButton btnNewButton = new JButton("");  //实例化无文本内容的按钮
		//设置按钮的图片
		btnNewButton.setIcon(new ImageIcon(LoginMain.class.getResource("/imgs/login1.jpg")));
		contentPane.add(btnNewButton, BorderLayout.CENTER);  //按钮放置在内容面板的中间
	
		btnNewButton.addActionListener(new ActionListener() {// 为按钮添加动作事件的监听
			public void actionPerformed(ActionEvent e) {// 动作事件的监听的方法体
				do_btnNewButton_actionPerformed(e);// 按钮触发动作事件的监听时执行的方法
			}
		});

	}

	// 按钮触发动作事件的监听时执行的方法
	protected void do_btnNewButton_actionPerformed(ActionEvent e) {
		this.setVisible(false);// 登录窗体不可见
		MainFrame t = new MainFrame();// 创建主窗体
		t.setVisible(true);// 使主窗体可见
	}

}

2、项目的主窗体

package com.frame;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;

import com.db.ConnMySQL;

public class MainFrame extends JFrame {
	private JPanel jcontentPane;// 内容面板
	private JButton firstPageButton;// 首页
	private JButton latePageButton;// 尾页
	private JButton nextPageButton;// 下一页
	private JButton lastPageButton;// 上一页
	private JTable table;// 表格模型
	private int maxPageNumber;// 表格的总页数
	private int maxrows = 0;// 初始化最大行数为0
	private int currentPageNumber = 1;// 初始化表格的当前页数为1
	private double pageSize = 20;// 每页表格可容纳20条数据
	private DefaultTableModel defaultModel;// 表格模型的实例对象
	
	public static void main(String[] args) {
		try {
			// 设置主窗体风格
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
		} catch (Throwable e) {
			e.printStackTrace();
		}
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					// 实例化主窗体
					MainFrame frame = new MainFrame();
					frame.setVisible(true);// 使主窗体可见
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}
	public MainFrame() {// 主窗体的构造方法
		setForeground(Color.BLACK);// 设置前景色为黑色
		setTitle("明日彩票预测系统");// 主窗体的标题
		setResizable(false);// 主窗体不能改变大小
		// 主窗体的标题图标
		setIconImage(
		    Toolkit.getDefaultToolkit().getImage(MainFrame.class.getResource("/imgs/log.png"))
		    );
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 对登录窗体发起“close”时,退出应用程序
		setBounds(200, 100, 1100, 600);// 登录窗体的位置及宽高
		jcontentPane = new JPanel();// 实例化内容面板
		jcontentPane.setLayout(new BorderLayout(0, 0));// 设置内容面板的布局为边界布局
		setContentPane(jcontentPane);// 把内容面板放入主窗体中
		BackgroundPanel contentPane = new BackgroundPanel();// 创建自定义背景面板
		// 设置背景面板的图片
		contentPane.setImage(getToolkit().getImage(getClass().getResource("/imgs/main.png")));
		jcontentPane.add(contentPane, BorderLayout.CENTER);// 添加背景面板到内容面板
	
		JButton btnNewButton = new JButton("");// “添加开奖号码”按钮
		// 设置“添加开奖号码”按钮的图标
		btnNewButton.setIcon(
			new ImageIcon(MainFrame.class.getResource("/img_btn/10.png"))
			);
		btnNewButton.setBounds(6, 114, 184, 40);// “添加开奖号码”按钮的位置及宽高
		contentPane.add(btnNewButton);// 将“添加开奖号码”按钮添加到自定义背景面板中
		JButton button = new JButton("");// “查看历届开奖”按钮
		// 设置“查看历届开奖”按钮的图标
		button.setIcon(
			new ImageIcon(MainFrame.class.getResource("/img_btn/09.png"))
			);
		button.setBounds(6, 74, 184, 40);// “查看历届开奖”按钮的位置及宽高
		contentPane.add(button);// 将“查看历届开奖”按钮添加到自定义背景面板中
		JButton button_1 = new JButton("");// “批量添加号码”按钮
		// 设置“批量添加号码”按钮的图标
		button_1.setIcon(
			new ImageIcon(MainFrame.class.getResource("/img_btn/11.png"))
			);
		button_1.setBounds(6, 154, 184, 40);// “批量添加号码”按钮的位置及宽高
		contentPane.add(button_1);// 将“批量添加号码”按钮添加到自定义背景面板中
		JButton updatebutton = new JButton("");// “修改开奖号码”按钮
		// 设置“修改开奖号码”按钮的图标
		updatebutton.setIcon(
			new ImageIcon(MainFrame.class.getResource("/img_btn/12.png"))
			);
		updatebutton.setBounds(6, 194, 184, 40);// “修改开奖号码”按钮的位置及宽高
		contentPane.add(updatebutton);// 将“修改开奖号码”按钮添加到自定义背景面板中
		
		JButton button_3 = new JButton("");// “查看号码走势”按钮
		// 设置“查看号码走势”按钮的图标
		button_3.setIcon(
		    new ImageIcon(MainFrame.class.getResource("/img_btn/14.png"))
		    );
		button_3.setBounds(6, 234, 184, 40);// “查看号码走势”按钮的位置及宽高
		contentPane.add(button_3);// 将“查看号码走势”按钮添加到自定义背景面板中
		JButton button_4 = new JButton("");// “随机选号”按钮
		// 设置“随机选号”按钮的图标
		button_4.setIcon(
		    new ImageIcon(MainFrame.class.getResource("/img_btn/15.png"))
		    );
		button_4.setBounds(6, 274, 184, 40);// “随机选号”按钮的位置及宽高
		contentPane.add(button_4);// 将“随机选号”按钮添加到自定义背景面板中
		JButton button_5 = new JButton("");// “中奖查询”按钮
		// 设置“中奖查询”按钮的图标
		button_5.setIcon(
		    new ImageIcon(MainFrame.class.getResource("/img_btn/17.png"))
		    );
		button_5.setBounds(6, 314, 184, 40);// “中奖查询”按钮的位置及宽高
		contentPane.add(button_5);// 将“中奖查询”按钮添加到自定义背景面板中
		JButton button_6 = new JButton("");// “历史战绩”按钮
		// 设置“历史战绩”按钮的图标
		button_6.setIcon(
		    new ImageIcon(MainFrame.class.getResource("/img_btn/18.png"))
		    );
		button_6.setBounds(6, 354, 184, 40);// “历史战绩”按钮的位置及宽高
		contentPane.add(button_6);// 将“历史战绩”按钮添加到自定义背景面板中
		JButton button_2 = new JButton("");// “退出系统”按钮
		// 设置“退出系统”按钮的图标
		button_2.setIcon(
		    new ImageIcon(MainFrame.class.getResource("/img_btn/08.png"))
		    );
		button_2.setBounds(6, 394, 184, 40);// “退出系统”按钮的位置及宽高
		contentPane.add(button_2);// 将“退出系统”按钮添加到自定义背景面板中
	
		JScrollPane scrollPane = new JScrollPane(); // 滚动面板
		scrollPane.setBackground(new Color(0, 51, 204)); // 滚动面板背景色
		scrollPane.setBounds(217, 74, 848, 351); // 滚动面板在主窗体中的位置及宽高
		contentPane.add(scrollPane); // 将滚动面板添加到自定义背景面板中
		table = new JTable(); // 表格模型
		scrollPane.setViewportView(table); // 向滚动面板中添加表格
		firstPageButton = new JButton("首   页"); // “首页”按钮
		// 设置“首页”按钮的图标
		firstPageButton.setIcon(
			new ImageIcon(MainFrame.class.getResource("/img_btn/7_08.png")));
		firstPageButton.setBounds(416, 439, 84, 27); // “首页”按钮的位置及宽高
		contentPane.add(firstPageButton); // 将“首页”按钮添加到自定义背景面板中
		latePageButton = new JButton("上一页"); // “上一页”按钮
		// 设置“上一页”按钮的图标
		latePageButton.setIcon(
			new ImageIcon(MainFrame.class.getResource("/img_btn/7_10.png")));
		latePageButton.setBounds(550, 439, 84, 27); // “上一页”按钮的位置及宽高
		contentPane.add(latePageButton); // 将“上一页”按钮添加到自定义背景面板中
		nextPageButton = new JButton("下一页"); // “下一页”按钮
		// 设置“下一页”按钮的图标
		nextPageButton.setIcon(
			new ImageIcon(MainFrame.class.getResource("/img_btn/7_09.png")));
		nextPageButton.setBounds(686, 439, 84, 27); // “下一页”按钮的位置及宽高
		contentPane.add(nextPageButton); // 将“下一页”按钮添加到自定义背景面板中
		lastPageButton = new JButton("尾   页"); // “尾页”按钮
		// 设置“尾页”按钮的图标
		lastPageButton.setIcon(
			new ImageIcon(MainFrame.class.getResource("/img_btn/7_11.png")));
		lastPageButton.setBounds(819, 439, 84, 27); // “尾页”按钮的位置及宽高
		contentPane.add(lastPageButton); // 将“尾页”按钮添加到自定义背景面板中
	
		firstPageButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				do_firstPageButton_actionPerformed(e);// 为“首页”按钮添加动作事件的监听
			}
		});
		lastPageButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				do_lastPageButton_actionPerformed(e);// 为“尾页”按钮添加动作事件的监听
			}
		});
		
		latePageButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				do_latePageButton_actionPerformed(e);// 为“上一页”按钮添加动作事件的监听
			}
		});
		nextPageButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				do_nextPageButton_actionPerformed(e);// 为“下一页”按钮添加动作事件的监听
			}
		});
	
		button_3.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				do_button_3_actionPerformed(e);// 为“查看号码走势”按钮添加动作事件的监听
			}
		});
		
		button_4.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				do_button_4_actionPerformed(e);// 为“随机选号”按钮添加动作事件的监听
			}
		});
		
		selecttable();  //分页显示开奖号码的方法
	}

	// “随机选号”按钮添加动作事件的监听
	protected void do_button_4_actionPerformed(ActionEvent e) {
		ForecastAddframe forecastAddframe = new ForecastAddframe();// 随机选号对话框
		forecastAddframe.setVisible(true);// 使随机选号对话框可见
	}
	
	// “查看号码走势”按钮添加动作事件的监听
	protected void do_button_3_actionPerformed(ActionEvent e) {
		SparBuoy sparBuoy = new SparBuoy();// 号码走势对话框
		sparBuoy.setVisible(true);// 使号码走势对话框可见
	}
	
	// “上一页”按钮添加动作事件的监听
	protected void do_latePageButton_actionPerformed(ActionEvent e) {
		currentPageNumber--;// 将当前页面减一
		Vector dataVector = defaultModel.getDataVector();// 获得原表格模型中的数据
		DefaultTableModel newModel = new DefaultTableModel();// 创建新的表格模型
		// 定义表头
		newModel.setColumnIdentifiers(new Object[] 
		{ "期数", "第1位", "第2位", "第3位", "第4位", "第5位", "第6位", "第7位", "开奖时间" });
		for (int i = 0; i < pageSize; i++) {
			// 根据页面大小来获得数据
			newModel.addRow(
				(Vector) dataVector.elementAt((int) (pageSize * (currentPageNumber - 1) + i))
				);
		}
		table.getTableHeader().setReorderingAllowed(false);
		table.setModel(newModel);// 设置表格模型
		if (currentPageNumber == 1) {
			firstPageButton.setEnabled(false);// 禁用“首页”按钮
			latePageButton.setEnabled(false);// 禁用“上一页”按钮
		}
		nextPageButton.setEnabled(true);// 启用“下一页”按钮
		lastPageButton.setEnabled(true);// 启用“尾页”按钮
	}
	// “下一页”按钮添加动作事件的监听
	protected void do_nextPageButton_actionPerformed(ActionEvent e) {
		currentPageNumber++;// 将当前页面加一
		Vector dataVector = defaultModel.getDataVector();// 获得原表格模型中的数据
		DefaultTableModel newModel = new DefaultTableModel();// 创建新的表格模型
		// 定义表头
		newModel.setColumnIdentifiers(new Object[] 
		{ "期数", "第1位", "第2位", "第3位", "第4位", "第5位", "第6位", "第7位", "开奖时间" });
		if (currentPageNumber == maxPageNumber) {
			int lastPageSize = (int)
				 (defaultModel.getRowCount() - pageSize * (maxPageNumber - 1));
			for (int i = 0; i < lastPageSize; i++) {
				// 根据页面大小来获得数据
				newModel.addRow(
					(Vector) dataVector.elementAt((int) (pageSize * (maxPageNumber - 1) + i))
					);
			}
			nextPageButton.setEnabled(false);// 禁用“下一页”按钮
			lastPageButton.setEnabled(false);// 禁用“尾页”按钮
		} else {
			for (int i = 0; i < pageSize; i++) {
				// 根据页面大小来获得数据
				newModel.addRow(
					(Vector) dataVector.elementAt((int) (pageSize * (currentPageNumber - 1) + i))
					);
			}
		}
		table.getTableHeader().setReorderingAllowed(false);
		table.setModel(newModel);// 设置表格模型
		firstPageButton.setEnabled(true);// 启用“首页”按钮
		latePageButton.setEnabled(true);// 启用“上一页”按钮
	}

	// “首页”按钮添加动作事件的监听
	protected void do_firstPageButton_actionPerformed(ActionEvent e) {
		currentPageNumber = 1;// 将当前页码设置成1
		Vector dataVector = defaultModel.getDataVector();// 获得原表格模型中的数据
		DefaultTableModel newModel = new DefaultTableModel();// 创建新的表格模型
		// 定义表头
		newModel.setColumnIdentifiers(new Object[] 
		{ "期数", "第1位", "第2位", "第3位", "第4位"
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值