1、java小球碰撞学生信息管理系统实训报告北京联合大学实 训 报 告课程(项目)名称:Java程序设计实训(双语) 学院:师范学院 专 业: 计算机 班级: 学号: 2010 姓名: 成绩: 2013年6月17实训一 小球的碰撞试验一、实训任务与目的实训任务:使用多线程编程和图形界面的画图,编写一个或多个在长方形盒子中反弹的小球。要求:界面设计、颜色选取等可能美观。 有能力的同学可以设计图形界面的操作按钮,用于改变球的颜色、反弹速度,开始和结束按钮等。本任务要求4节课完成。实训目的:1、掌握Swing图形用户界面编程以及事件处理等,掌握java绘图技术。2、掌握多线程编程的基本原理,能使用Run
2、nable、ExecutorService等接口进行线程的创建、启动等工作。3、培养独立查找资料,并解决问题的能力。二、原理 通过Ball类来进行对球的设计,有对于增加球的速度,返回球的当前速度,球球移动到边界事的处理球颜色的随机处理,球速度的随机处理等,使得运行时的界面和球的各种运动状态都能良好。每一个球都是通过一个线程来进行控制,其中还对球的碰撞进行了分析和处理,通过对线程中小球的之间距离和半径和的比较对碰撞情况做了比较好的处理,Balliards还设定了各个全局常量,设置了小球的最小最大速度,最小最大尺寸,球的数目,窗体的宽度和长度等。三、实训内容与步骤代码如下:package shix
3、un1;import java.awt.Color;import java.awt.Graphics;import java.util.Random;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import javax.swing.JFrame;import javax.swing.JPanel;public class Ball extends JPanel implements Runnable int y = 200,x=70,a; Color l0=Color.YEL
4、LOW; Color l1=Color.BLACK; Color l2=Color.RED; Color l3=Color.BLUE; Color l4=Color.GREEN; public void paint(Graphics g) super.paintComponent(g); g.setColor(l0); g.drawRect(20, 20, 360, 360); g.setColor(l1); g.fillOval(y, x, 20, 20); g.setColor(l2); g.fillOval(40, y, 20, 20); g.setColor(l3); g.fillOv
5、al(x, y, 20, 20); g.setColor(l4); g.fillOval(x, 90, 20, 20); public void run() while (true) try if( a=0) l0=Color.GREEN; l1=Color.CYAN; l2=Color.YELLOW; l3=Color.ORANGE; l4=Color.GRAY; Random ll= new Random(); int ld=ll.nextInt(15)+1; x-=1; y += 1; Thread.sleep(ld); if(x=20) a=1; else if(a=1) l0=Col
6、or.RED; l1=Color.BLUE; l2=Color.RED; l3=Color.BLACK; l4=Color.PINK; Random ll= new Random(); int lmb=ll.nextInt(4)+1; x+=1; y += 1; Thread.sleep(lmb); if(y=360) a=2; else if(a=2) l0=Color.BLUE; l1=Color.darkGray; l2=Color.WHITE; l3=Color.GREEN; l4=Color.MAGENTA; Random ll= new Random(); int ld=ll.ne
7、xtInt(10)+1; x+=1; y -= 1; Thread.sleep(ld); if(x=360) a=3; else if(a=3) l0=Color.YELLOW; l1=Color.GREEN; l2=Color.BLUE; l3=Color.RED; l4=Color.ORANGE; Random ll= new Random(); int lmb=ll.nextInt(6)+1; x-=1; y -= 1; Thread.sleep(ld); if(y=20) a=0; catch (InterruptedException e) e.printStackTrace();
8、repaint(); public static void main(String args) Ball panel = new Ball(); ExecutorService threadExecutor = Executors.newCachedThreadPool(); threadExecutor.execute(panel); / create a new frame to hold the panel JFrame application = new JFrame(); / set the frame to exit when it is closed application.se
9、tDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); application.add(panel); / add the panel to the frame application.setSize(400, 420); / set the size of the frame application.setVisible(true); / end main下面为运行时的图形界面:按钮设计代码:package shixun1;import java.awt.BorderLayout;import java.awt.event.ActionEvent;impo
10、rt java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;public class BallButton extends JFrame JButton start, stop; Thread threadExecutor; BallButton() super(碰撞的小球-liudan29); final Ball ld = new Ball(); this.add(ld, BorderLayout.CENTER); JPanel
11、 btn = new JPanel(); start = new JButton(开始); stop = new JButton(停止); btn.add(start); btn.add(stop); ActionListener handler1 = null; ActionListener handler = null; start.addActionListener(handler1); stop.addActionListener(handler); start.addActionListener(new ActionListener() public void actionPerfo
12、rmed(ActionEvent event) start.setEnabled(false); threadExecutor = new Thread(ld); threadExecutor.start(); stop.setEnabled(true); ); stop.addActionListener(new ActionListener() SuppressWarnings(deprecation) public void actionPerformed(ActionEvent event) start.setEnabled(true); threadExecutor.stop();
13、stop.setEnabled(false); ); add(btn, BorderLayout.NORTH); this.setSize(450, 500); this.setVisible(true); public static void main(String args) new BallButton(); 开始状态下运行的界面:停止状态下运行的界面:实训中的问题和解决方法(1)停止按钮不能控制小球(2)小球碰壁后颜色没有变化 在遇到问题时,我首先会先向班上基础知识扎实的同学请教,如果在同学的帮助下还不能解决的问题我就会向老师求助,最终在大家的共同努力下程序加以完善总结在几天的实训中我
14、真正体会到这几点。首先兴趣是关键,我的学习完全是兴趣导向的,所以压力并不大。因为有兴趣,所以我会很想充分理解一切细节。又因为理解,所以许多原本片片断断的知识都可以渐渐互相融会贯通,累积技术能量、理论和实务之间的玻璃被打破了,学习效率才能倍增。 其次态度要端正,摆正自己的心态,不要以为什么东西上网搜搜就可以了,一定要有自己的东西。只有自己付出过,当程序运行成功时的那种喜悦才会令自己有一种莫名的自豪感。态度决定一切!然后还要有敢于挑战不安于现成的程序,要敢于用多种方法实现一个目的。这次的实训也让我明白了要做好一个系统,团队合作永远是最重要的,一个人的力量永远是渺小的,团队分工、合作会使得问题更加的
15、简单、解决的迅速。实训二 基于java的学生信息管理系统一、实训任务与目的实训任务: 编写图形界面的应用程序,实现对Mysql数据库的添、删、改、查等操作,实现易于操作的信息管理系统。本任务要求16节课(4个时间单元)完成。另外,1个要求:一、 确定所做的信息管理系统,进行数据库和表的设计(Mysql下),创建库和表,要求至少要有2张表。二、 进行软件系统的总体设计和模块的设计。三、 实现各个模块的功能设计和编码:具体包括:1. 编写数据库连接类,实现数据库连接并测试。2. 编写对应于数据库表的的各个javabean类并测试。每个数据库表对应一个bean类。3. 编写实现数据库表的添、删、改、
16、查等操作的数据库操作类,每个数据库表对应一个数据库操作类。根据系统应用的需求定义实现各个功能的方法、根据需求重载方法,使得软件功能尽可能完善且易于使用。4. 系统图形界面设计与实现、测试。要求有登陆验证、菜单和相关图形组件,使软件系统易于使用和维护等。四、 对系统进行进行整体测试。五、 撰写实训报告(要求见附件文档)。实训目的:学生信息管理系统,是对学生的个人信息,课程信息,成绩信息以信息化的方式进行管理,最大限度地减少各个环节可能出现的错误,有效减少因人力资源局限性导致的存储信息量大,信息存储错误,混淆等问题,合理进行信息存储,使学校能够合理录入学生的个人资料,学期成绩情况,以及课程安排,为
17、学校师生的工作提供后方面。二、原理数据库是一种存储结构,它允许使用各种格式的输入、输出、调用、不用反复输入,它具有实现资源共享的功能。JCBC制定了统一的访问各类关系数据库的标准接口,但他不能直接访问数据库。需要加载驱动才可以使用。三、实训内容与步骤1 建立数据库、并在数据库中添加students表以及users表单机开始程序MySQLMySQL Server 5.5MySQL 5.5 Command Line Client 打开数据库如下图所示:Password:111111输入create database liudan;use liudan;create table users(id i
18、nt(11) not null auto_increment primary key,name varchar(10) not null,password varchar(10) not null,level int(1) not null);insert into users(id,name,password,level) values(1,teacher,123456,1);update users set name=mm,password=123456,level=0 where id=2;create table students(id int(11) not null auto_in
19、crement primary key,name varchar(10) not null,tall int(1) not null);insert into students(id,name,tall) values(1,liudan,173);2、创建Students的java bean将如下代码保存为Students.java文件package bean;public class Students private int id; private String name; private int tall; private Students() super(); public Studen
20、ts(int id, String name, int tall) super(); this.id = id; this.name = name; this.tall = tall; public int getId() return id; public void setId(int id) this.id = id; public String getName() return name; public void setName(String name) this.name = name; public int getTall() return tall; public void set
21、Tall(int tall) this.tall = tall; 3、创建users的java bean 将如下代码保存为Users.java文件package bean;public class Users private int id; private String name; private String password; private int level; public Users() super(); public Users(int id, String name, String password, int level) super(); this.id = id; this.
22、name = name; this.password = password; this.level = level; public int getId() return id; public void setId(int id) this.id = id; public String getName() return name; public void setName(String name) this.name = name; public String getPassword() return password; public void setPassword(String passwor
23、d) this.password = password; public int getLevel() return level; public void setLevel(int level) this.level = level; 4、实现数据库连接:将如下代码保存为MySqlConnection.java文件package db;import java.sql.*;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import bean.Users;public class DBUsers
24、/* * param args */ private DBUsers() / TODO Auto-generated constructor stub public static void addUsers(Users a) Connection conn = null; try conn = MySqlConnnection.getConnection(); /获得数据连接 PreparedStatement ps = conn.prepareStatement(insert into users(id,name,password,level) values(?,?,?,?); ps.set
25、Long(1, a.getId(); ps.setString(2, a.getName(); ps.setString(3, a.getPassword();/设置第2个占位符的内容 ps.setInt(4, a.getLevel(); ps.executeUpdate(); / 执行更新操作 ps.close(); catch (Exception ex) ex.printStackTrace(); finally MySqlConnnection.closeConnection(conn); public static void deleteUsers(int id) Connectio
26、n conn = null; try conn = MySqlConnnection.getConnection(); /获得数据连接 PreparedStatement ps = conn .prepareStatement(DELETE FROM users WHERE id=?); ps.setInt(1, id); / 设置第1个占位符的内容 ps.executeUpdate();/ 执行更新操作 ps.close(); catch (Exception ex) ex.printStackTrace(); finally MySqlConnnection.closeConnection
27、(conn); public static void updateUsers(Users a) Connection conn = null; try conn = MySqlConnnection.getConnection(); String Sql = UPDATE users SET name=?,password =? ,level=? WHERE id =?; PreparedStatement ps = conn.prepareStatement(Sql); ps.setString(1, a.getName(); ps.setString(2, a.getPassword(); ps.setInt(3, a.getLevel(); ps.setInt(4, a.getId();/设置第4个占位符的内容 ps.executeUpdate(); / 执行更新操作 ps.close(); catch (Exception ex) ex.printSta
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1