logo资料库

基于Java的课堂_随机点名器.docx

第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
资料共18页,剩余部分请下载后查看
随机点名器
随机点名器 一、设计目的 随机点名器是一个能够从 Excel 文件的某个 Sheet 中读出班级所 有同学的名单,然后通过产生一个随机数选中其中一个同学回答问题, 然后输入回答问题的得分,并将该得分存入 Excel 表的另外一个 Sheet 中的简单程序。 实现要点:通过开源项目 jExcel 提供的 jxl.jar 包,实现 Excel 文件的读写。 二、设计思路 根据随机点名器的设计要求,总结出如下设计思路流程图: 开始 登录窗口 主窗口 退 出 重 新 登 录 选 择 班 级 随 机 点 名 输 入 分 数 新 建 班 级 创 建 班 级 窗 口 1
保 存 结果 结束 三、功能介绍(使用说明) 1 2 3 4 5 6 7 2
1. 点击选择班级,显示该班级的学生。 2. “随机点名”按钮,点击随机选择表中的一个学生。 3. 分数输入框。 4. “保存”按钮,点击可以保存学生的分数。 5. 重新登录,返回到登录窗口。 6. 退出程序。 7. 新建班级,打开一个文件选择窗口,选择文件并创建新班级。 四、程序清单 package com.gdupt.javabigjob; import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPasswordField; import javax.swing.JTextField; import com.mysql.jdbc.BlobFromLocator; //定义登录窗口类 public class LoginWin extends JFrame implements ActionListener { 3
//创建组件 private JLabel lblUserName; //标签 private JLabel lblUserPsw; private JTextField txfUserName; //文本框 private JPasswordField pwfUserPsw; //密码框 private JButton btnSubmit; //按钮 private JButton btnCencal; //构造方法 public LoginWin() { //实例化各组件对象 this.lblUserName = new JLabel("用户:"); this.lblUserPsw = new JLabel("密码:"); this.txfUserName =new JTextField(20); this.pwfUserPsw = new JPasswordField(20); this.btnSubmit = new JButton("确定"); this.btnCencal = new JButton("取消"); //为按钮设置名字 this.btnSubmit.setName("btnSubmit"); this.btnCencal.setName("btnCencal"); //注册监听者 this.btnSubmit.addActionListener(this); this.btnCencal.addActionListener(this); //取得窗口的内容面板 Container container = this.getContentPane(); //设置布局管理器 container.setLayout(new FlowLayout()); //将各组件添加到窗口 this.add(lblUserName); this.add(txfUserName); this.add(lblUserPsw); this.add(pwfUserPsw); this.add(btnSubmit); this.add(btnCencal); //设置窗口属性(标题,大小,位置,可视化...) this.setTitle("请登录"); 4
this.setSize(300, 250); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocation(400, 200); this.setVisible(true); } @Override //设置监听方式 public void actionPerformed(ActionEvent e) { //获得事件源 Object o = e.getSource(); //如果 o 是按钮 if(o instanceof JButton) { //将 o 转型为按钮 JButton button = (JButton) o; //获得名字 String name = button.getName(); //通过名字确定点击的按钮 if("btnSubmit".equals(name)) { //获得数据库连接 Connection cnt = this.getDatabaseCon(); try { Statement s = cnt.createStatement(); ResultSet rs = s.executeQuery("select* from ManagerialStaff where username='" + txfUserName.getText() + "' and userpsw='" + pwfUserPsw.getText() + "';"); if(rs.next()) { JOptionPane.showMessageDialog(null, "登录成功!"); this.dispose(); s.close(); cnt.close(); MainWindow mw = new MainWindow(); }else { JOptionPane.showMessageDialog(null, "登录失败,请重 试!"); } 5
} catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } if("btnCencal".equals(name)) { JOptionPane.showMessageDialog(null, "欢迎 " + this.txfUserName.getText() + " 再来!"); System.exit(0); } } } //连接数据库,该方法返回一个 Connection 连接 public Connection getDatabaseCon() { Connection cnt = null; try { //注册 MySQLJDBC 驱动程序 Class.forName("com.mysql.jdbc.Driver"); //创建数据库连接 cnt = DriverManager.getConnection("jdbc:mysql://localhost/mydb", "root", "123456"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { try { cnt = DriverManager.getConnection("jdbc:mysql://localhost/information_schema", "root", "123456"); Statement stat = cnt.createStatement(); //创建数据库 stat.executeUpdate("create database mydb;"); //打开创建的数据库 stat.close(); cnt.close(); 6
cnt = DriverManager.getConnection("jdbc:mysql://localhost/mydb", "root", "123456"); stat = cnt.createStatement(); //创建表 stat.executeUpdate("create table ManagerialStaff(username char(12), userpsw char(12));"); stat.executeUpdate("insert into ManagerialStaff values('0000', '0000');"); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } return cnt; } } package com.gdupt.javabigjob; import java.awt.FileDialog; import java.awt.Font; import java.awt.Frame; import java.awt.Label; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.IOException; import java.util.Random; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; 7
import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import jxl.*; import jxl.write.*; import jxl.write.biff.RowsExceededException; //主窗口 public class MainWindow extends JFrame implements ActionListener{ private JLabel studentName; //标签 private JLabel score; private JTextField txfStName; //文本框 private JTextField txfScore; private JButton callSN; //按钮 private JButton JSave; private JPanel pan1; private JPanel pan2; private JTable table; private JMenu jClass; private JScrollPane jsPane; private int tag = 0; private String filePath = null; private JMenuItem[] Jmi = new JMenuItem[10]; //定义一组菜单项 private String[] sName = new String[10]; //定义一组字符串,用于储存菜单项 的名字 private String[] fPaths = new String[10]; //储存对应菜单项的文件路径 private int tagJmi = 0; //构造函数,初始化该组件 public MainWindow() { studentName = new JLabel("学生姓名:"); score = new JLabel("分数:"); txfStName = new JTextField(5); txfScore = new JTextField(5); callSN = new JButton("随机点名"); callSN.setName("callSN"); 8
分享到:
收藏