java实现课堂随机点名小程序
通过jdbc连接数据库实现读取学生花名册进行随机点名!
~jdbc连接mysql数据库 || 注释部分代码可通过读取.txt文档实现显示学生信息
~通过点击开始按钮实现界面中间标签不断更新学生信息,当按下停止时显示唯一学生信息,并调用random对象函数实现随机抽取数据库学生信息
~界面功能简单,主要实现事件监听和线程实现与销毁。


//Menu.java
package a1;
import javax.swing.JFrame;
public class Menu {
public static void main(String[] args) { //主程序
randoms n = new randoms();
FromEx f=new FromEx();
n.AListener(f);
n.setResizable(false);
n.setTitle("学号点名小程序");
n.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
n.setBounds(700, 200, 100, 200);
n.setSize(400, 300);
n.setVisible(true);
}
}
//randoms.java
package a1;
import java.awt.*;
import javax.swing.*;
import javax.swing.JFrame;
public class randoms extends JFrame{
JLabel num;//显示标题
JButton start,stop; // 开始、停止按钮
JLabel rs; //显示结果
JPanel jp1,jp2;
ExListener listener;
static boolean isSotp = true; //判断当前状态
public randoms() {
init();
}
void init(){
num = new JLabel("<<玩的就是心跳>>");
num.setFont(new Font("黑体", 2, 40));
start = new JButton("开始");
stop = new JButton("停止");
rs = new JLabel("0");
jp1 = new JPanel();
jp2 = new JPanel();
this.add(num,BorderLayout.NORTH);
jp1.add(rs);
this.add(jp1,BorderLayout.CENTER);
FlowLayout layout = new FlowLayout();//面板布局
layout.setAlignment(FlowLayout.CENTER);
jp1.setLayout(layout);
jp2.setLayout(layout);
jp2.add(start);
jp2.add(stop);
rs.setFont(new Font("宋体", 1, 30));//设置结果样式
rs.setForeground(Color.RED);
this.add(jp2,BorderLayout.SOUTH);
}
void AListener(ExListener listener){
this.listener=listener;
listener.set(start, stop, rs, isSotp);
start.addActionListener(listener); //添加监听
stop.addActionListener(listener);//添加监听
}
}
//Exlistener.java
package a1;
import java.awt.event.ActionListener;
import javax.swing.*;
public interface ExListener extends ActionListener{
public void set(JButton J1,JButton J2,JLabel rs,boolean isSotp);
}
//ExThead.java 线程的实现
package a1;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Random;
import java.util.Vector;
import javax.swing.*;
public class ExThread extends Thread{
private JLabel rs;
boolean isSotp;
int n;
String a="";
//ArrayList<String> array=new ArrayList<String>();
Vector vector=new Vector();
int getn;
/*ExThread(JLabel rs,int n,boolean a){
this.rs = rs;
this.n = n;
isSotp=a;
}*/
void setbool(boolean a){isSotp=a;};
void setint(int a){n=a;};
ExThread(JLabel rs) throws IOException{
this.rs = rs;
v(vector);
//m(array);
/* //注释部分读取.txt文档获取花名册信息
BufferedReader m=new BufferedReader(new FileReader("a.txt"));
while ((a = m.readLine()) != null) {
array.add(a);
}
getn=array.size();*/
}
public void v(Vector a){
a=vector;
try{
Class.forName("com.mysql.jdbc.Driver");//加载 MySQL 驱动程序
//建立与数据库的连接
String url = "jdbc:mysql://localhost:3306/conarry";
Connection cn = DriverManager.getConnection(url,"root","guoxiaotong");
Statement cmd = cn.createStatement();//创建 Statement 对象
System.out.println("123");
String sql="select * from student";
ResultSet r=cmd.executeQuery(sql);
while(r.next()){
String n1=r.getString(1);//获取数据库 第一行第一列
String n2=r.getString(2); //获取数据库 第一行第二列
String n3=n1+" "+n2; //连接学号和姓名
a.add(n3);
}
getn=a.size();
} catch (Exception e) {
e.printStackTrace();
}
}
/*public void m(ArrayList<String> array){
this.array=array;
try{
Class.forName("com.mysql.jdbc.Driver");//加载 MySQL 驱动程序
//建立与数据库的连接
String url = "jdbc:mysql://localhost:3306/conarry";
Connection cn = DriverManager.getConnection(url,"root","guoxiaotong");
Statement cmd = cn.createStatement();//创建 Statement 对象
System.out.println("123");
String sql="select * from student";
ResultSet r=cmd.executeQuery(sql);
while(r.next()){
String n1=r.getString(1);
String n2=r.getString(2);
String n3=n1+" "+n2;
array.add(n3);
}
getn=array.size();
} catch (Exception e) {
e.printStackTrace();
}
}*/
@Override
public void run() {
while(isSotp){
try {
Thread.sleep(500);
rs.setText((String) vector.get(getnumber(getn)));
System.out.println("1232");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static int getnumber(int n){ //根据你输入的总人数返回随机在人数范围内的一个学号
Random r = new Random();
int r1 = r.nextInt(n);
return r1;
}
}
//FromEx.java 事件监听接口实现 重写两个方法
package a1;
import java.awt.event.ActionEvent;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class FromEx implements ExListener {
JButton start,stop;
JLabel rs;
static boolean isSotp;
ExThread t;
public void set(JButton J1,JButton J2,JLabel rs,boolean isSotp){
start=J1;
stop=J2;
this.rs=rs;
this.isSotp=isSotp;
try {
t= new ExThread(rs);
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent e){
Object o = e.getSource();//获取触发事件对象实现监听映射。
if(o == start)
{
//String number = num.getText();
try {
t= new ExThread(rs);
} catch (IOException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
try{
//int n = Integer.parseInt(number);
isSotp = true;
//t.setint(n);
t.setbool(isSotp);
t.start();
}catch(NumberFormatException e2){
System.err.println("格式错误");
}
}else if(o == stop){
isSotp = false;
t.setbool(isSotp);
t.start();
System.out.println("this is stop");
}
}
}
java实现课堂随机点名小程序的更多相关文章
- 随机点名小程序--- -JAVA版本
话不多少,直接上代码 一个能够直接运行的随机点名的小程序,一个界面化的小程序.望广大网友多多支持! 1.创建一个随机点名的类 public class ProcessRandomName { JFra ...
- 300道随机四则运算小程序(java编写)
这是由Java编写的300道随机四则运算小程序, 运算数范围为0~100(不包括100),运算结果保留两位小数. 程序代码: import java.util.*; class Yunsuan{ pu ...
- Java生鲜电商平台-小程序或者APP优惠券的设计与源码实战
Java生鲜电商平台-小程序或者APP优惠券的设计与源码实战 说明:Java生鲜电商平台-小程序或者APP优惠券的设计与源码实战,优惠券是一种常见的促销方式,在规定的周期内购买对应商品类型和额度的商品 ...
- Java生鲜电商平台-小程序或者APP拼团功能设计与架构实战
Java生鲜电商平台-小程序或者APP拼团功能设计与架构实战 说明:Java生鲜电商平台拼团是拉新引流的利器,将拼团运用到极致的就是拼多多,前期通过选取性价比高.实用性强的商品进行拼团,在社交圈(主要 ...
- java多线程实现卖票小程序
package shb.java.demo; /** * 多线程测试卖票小程序. * @Package:shb.java.demo * @Description: * @author shaobn * ...
- 基于JAVA网络编程的聊天小程序
package com.neusoft.edu.socket; import java.io.BufferedReader; import java.io.IOException; import ja ...
- appium+java(五)微信小程序自动化测试实践
前言: 上一篇<appium+java(四)微信公众号自动化测试实践>中,尝试使用appium实现微信公众号自动化测试,接着尝试小程序自动化,以学院小程序为例 准备工作 1.java-cl ...
- java服务端实现微信小程序内容安全
请参考微信官方文档:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/sec-check/security.i ...
- Winform 随机抽奖小程序
效果图: 主要代码: Form1.cs using System; using System.Drawing; using System.IO; using System.Runtime.Intero ...
随机推荐
- (linux)SD卡初始化-mmc_sd_init_card函数
为了学习SD/SDIO协议,看了一下linux中初始化SD卡的流程,结合代码更容易SD初始化是怎么做的. 下面图截自:"SD Specifications Part 1 Physical ...
- vue文档重读有感
vue 官方文档,每次读都有不一样的感受.项目已经做过一个了,遇到了不少问题,下面总结下这次看到的注意点: 一.指令方面 1. v-once 一次性绑定,只渲染元素和组件一次.随后的重新渲染,元素/ ...
- POJ1228:Grandpa's Estate(给定一些点,问是否可以确定一个凸包)
Being the only living descendant of his grandfather, Kamran the Believer inherited all of the grandp ...
- liunx下的权限详解
用户组 在linux中的每个用户必须属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念 - 所有者 - 所在组 - 其它组 - 改变用户所在的组 所有者 一般为文件的创建 ...
- git stash和git stash pop(转载)
转自:http://www.cnblogs.com/highriver/archive/2012/01/05/2313808.html zz: http://blog.csdn.net/herbert ...
- Educational Codeforces Round 21E selling souvenirs (dp)
传送门 题意 给出n个体积为wi,价值为ci的物品,现在有一个m大的背包 问如何装使得最后背包内的物品价值最大,输出价值 分析 一般的思路是01背包,但n*v不可做 题解的思路 We can iter ...
- Cg(C for Graphic)语言关键字(转)
摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人” 第三章从 GPU 运行原理和数据流程的角 ...
- loj #6302. 「CodePlus 2018 3 月赛」寻找车位【线段树+单调队列】
考虑静态怎么做:枚举右边界,然后枚举上边界,对应的下边界一定单调不降,单调栈维护每一列从当前枚举的右边界向左最长空位的长度,这样是O(nm)的 注意到n>=m,所以m<=2000,可以枚举 ...
- bzoj 1207: [HNOI2004]打鼹鼠【dp】
跟简单的dp,设f[i]表示前i只最多打几只,因为起点不确定,所以f[i]可以从任意abs(x[i]-x[j])+abs(y[i]-y[j])<=abs(time[i]-time[j])的j&l ...
- loj#2541. 「PKUWC2018」猎人杀
传送门 思路太清奇了-- 考虑容斥,即枚举至少有哪几个是在\(1\)号之后被杀的.设\(A=\sum_{i=1}^nw_i\),\(S\)为那几个在\(1\)号之后被杀的人的\(w\)之和.关于杀了人 ...