题目C2:随机点名器

实现要点:通过开源项目jExcel提供的jxl.jar包,实现Excel文件的读写。

要求从Excel文件的某个Sheet中读出班级所有同学的名单,然后通过产生一个随机数选中其中一个同学回答问题,然后输入回答问题的得分,并将该得分存入Excel表的另外一个Sheet中。

软件开发工具和环境

环境:win10,jdk8

工具:eclipse,Adobe Photoshop CS6,火狐,谷歌

开发技术

使用的jar包: jxl.jar(对Excel解析)

GUI图形界面

IO流

功能分析

从文件中选中一个Excel(Excel97-2003)文件,再从Excel文件的某个Sheet中读出班级所有同学的名单,然后通过产生一个随机数函数选中其中一个同学回答来问题,然后在文本输入框里输入得分情况,并将该得分存入Excel表的另外一个Sheet中,如果Excel中不存在分数sheet表的话,系统将会自动创建一个,然后全部赋值分数为0,再进行分数的操作。

功能分析图如下:

界面设计

 

代码实现:

Fun.java
package function;import java.io.File;
import java.io.IOException;
import java.util.List;import jxl.read.biff.BiffException;
import jxl.write.WriteException;
import window.ErrorWindow;/**** 这个类主要处理JxExcel的异常*/
public class Fun {JxExcel jce;public Fun(File file) {try {jce = new JxExcel(file);} catch (BiffException | IOException e) {e.printStackTrace();}}public List<String> getRowName(String name){try {return jce.getRowName(name);} catch (BiffException | WriteException | IOException | InterruptedException e) {new ErrorWindow("文件发生错误");e.printStackTrace();}System.out.println("获取名单失败!");return null;}public void addScore(String studentName , int score) {try {jce.addScore(studentName, score);} catch (WriteException | BiffException | IOException e) {new ErrorWindow("文件发生错误");e.printStackTrace();}}public String findScore(String studentName) {try {return jce.findScore(studentName);} catch (WriteException | BiffException | IOException e) {new ErrorWindow("文件发生错误");e.printStackTrace();}return null;}}JxExcel.java
package function;import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;public class JxExcel {public Workbook wb;public File file;public JxExcel(File file) throws BiffException, IOException {this.file=file;}public List<String> getRowName(String name) throws BiffException, IOException, WriteException, InterruptedException {wb = Workbook.getWorkbook(file);
//      InputStream is = new FileInputStream(file);List<String> list = new ArrayList<String>();// 2、声明工作簿对象
//        Workbook rwb = Workbook.getWorkbook(is);Sheet oFirstSheet = wb.getSheet(0);int row = oFirstSheet.getRows();int col = oFirstSheet.getColumns();for (int i = 0; i < col; i++) {//找到名字为mame的这列if(oFirstSheet.getCell(i, 0).getContents().equals(name)) {col=i;break;}}for (int i = 1; i < row; i++) {list.add(oFirstSheet.getCell(col, i).getContents());}//获取名单时就创建得分的sheet Sheet sheet = wb.getSheet(1);if (sheet==null)createSheel(name);wb.close();return list;}public void createSheel(String name) throws BiffException, IOException, WriteException, InterruptedException{//以下是参考博客
//               //获得文件
//               Workbook wb = Workbook.getWorkbook(new File ("Test.xls"));
//               //打开一个文件的副本,并且指定数据写回到原文件
//               WritableWorkbook book = Workbook.createWorkbook(new File ("Test.xls"), wb);
//               WritableSheet sheet = book.createSheet("sheet_two", 1);
//               sheet.addCell(new Label(0,0,"Test data for sheet_two"));
//               //输出
//               System.out.println(sheet.getCell(0, 0).getContents());
//              book.write();
//              book.close();   //      Workbook wb = Workbook.getWorkbook(file);wb = Workbook.getWorkbook(file);WritableWorkbook ww = Workbook.createWorkbook(file,wb);//第一个sheelSheet sheet1 = wb.getSheet(0);int row = sheet1.getRows();//创建sheetWritableSheet sheet2=ww.createSheet("得分", 1);sheet2.addCell(new Label(1, 0, "分数"));int col = sheet1.getColumns();for (int i = 0; i < col; i++) {//找到名字为mame的这列if(sheet1.getCell(i, 0).getContents().equals(name)) {col=i;break;}}for (int i = 0; i < row; i++) {//第一个参数是列,第二个是行 ,第三个是valuesheet2.addCell(new Label(0, i, sheet1.getCell(col, i).getContents()));if(i!=0)sheet2.addCell(new Label(1, i, "0"));}ww.write();ww.close();wb.close();}public void addScore(String studentName , int score) throws IOException, RowsExceededException, WriteException, BiffException {wb = Workbook.getWorkbook(file);WritableWorkbook ww = Workbook.createWorkbook(file,wb);Sheet sheet0 = wb.getSheet(1);WritableSheet sheet = ww.getSheet(1);int row = sheet.getRows();for (int i = 1; i < row; i++) {if(sheet0.getCell(0, i).getContents().toString().equals(studentName)) {int n = Integer.parseInt(sheet0.getCell(1, i).getContents().toString());sheet.addCell(new Label(1, i, String.valueOf(n+score)));}}ww.write();ww.close();wb.close();}public String findScore(String studentName) throws IOException, RowsExceededException, WriteException, BiffException {wb = Workbook.getWorkbook(file);Sheet sheet0 = wb.getSheet(1);int row = sheet0.getRows();for (int i = 1; i < row; i++) {if(sheet0.getCell(0, i).getContents().toString().equals(studentName)) {return sheet0.getCell(1,i).getContents().toString();}}wb.close();return null;}
}RandomNumber.java
package function;public class RandomNumber {public int getRandomNumber(int len) {return (int) (Math.random()*len);}
}ErrorWindow.java
package window;import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JFrame;public class ErrorWindow {JFrame jf;Button bt;public ErrorWindow(String ss) {jf = new JFrame("error");bt = new Button(ss);bt.setBounds(20, 20, 40, 80);jf.setSize(320, 200);jf.setLayout(new BorderLayout());jf.add(bt,BorderLayout.CENTER);new MyTool().setJFrameLcotionCenter(jf);jf.setIconImage(Toolkit.getDefaultToolkit().getImage("img\\close.png"));bt.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {jf.dispose();}});jf.setVisible(true);}
}MyTool.java
package window;import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.File;import javax.swing.JFrame;
//给窗体设置图标
public class MyTool {public void setJFrameImage(JFrame jf) {Toolkit t1 = Toolkit.getDefaultToolkit();String ss = "img"+File.separator+"JFrameImage.jpg";Image image = t1.getImage(ss);jf.setIconImage(image);}//窗体位置自动居中public void setJFrameLcotionCenter(JFrame jf) {int jfw = jf.getWidth();int jfh = jf.getHeight();Toolkit t1 = Toolkit.getDefaultToolkit();Dimension screen = t1.getScreenSize();int winw = screen.width;int winh = screen.height;jf.setLocation((winw-jfw)/2,(winh-jfh)/2);}}Window.java
package window;import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.util.ArrayList;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextField;
import javax.swing.KeyStroke;import function.Fun;
import function.RandomNumber;public class Window implements ActionListener {JFrame jf;JMenuBar bar;JMenu fileMenu;JMenuItem  openItem,  closeItem;ImageIcon  openIcon,  closeIcon;JFileChooser chooser;JLabel jt1,jt2,jt3,jt4,jt5;JButton bt1,bt2;JTextField jtext;File file;ArrayList list;public Window() {newWindow();MyTool tool = new MyTool();tool.setJFrameImage(jf);jf.setSize(380, 250);tool.setJFrameLcotionCenter(jf);jf.setVisible(true);jf.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}public void newWindow() {jf = new JFrame("随机点名器");jf.setLayout(null);bar = new JMenuBar(); // new一个菜单条fileMenu = new JMenu("打开文件"); // 菜单栏里面的菜单openIcon = new ImageIcon("img\\open.png");closeIcon = new ImageIcon("img\\close.png");openItem = new JMenuItem("打开(O)", openIcon);closeItem = new JMenuItem("关闭(X)", closeIcon);jt1 = new JLabel("姓名:");jt2 = new JLabel("***");jt3 = new JLabel("当前分数:");jt4 = new JLabel("**");jt5 = new JLabel("请输入当前得分:");jtext = new JTextField();bt1 = new JButton("提交");bt2 = new JButton("开始抽取");jt1.setBounds(70, 15, 150, 20);jt2.setBounds(110, 15, 150, 20);jt3.setBounds(190, 15, 150, 20);jt4.setBounds(250, 15, 150, 20);jt5.setBounds(55, 50, 150, 20);jtext.setBounds(155, 50, 150, 20);bt1.setBounds(105, 90, 150, 20);bt2.setBounds(105, 120, 150, 20);bt1.addActionListener(new ActionListener() {//提交public void actionPerformed(ActionEvent e) {if(file==null) new ErrorWindow("请选取文件");else {String name = jt2.getText();String text = jtext.getText();int score = 0;try {score = Integer.parseInt(text);} catch (Exception e2) {new ErrorWindow("请输入正确的数字!");}if(!name.equals(null)) new Fun(file).addScore(name, score);jt4.setText(new Fun(file).findScore(name));jtext.setText("");}}});bt2.addActionListener(new ActionListener() {//开始抽取public void actionPerformed(ActionEvent e) {if(list==null) new ErrorWindow("请选取文件");else {RandomNumber ran = new RandomNumber();String name=(String) list.get(ran.getRandomNumber(list.size()));jt2.setText(name);jt4.setText(new Fun(file).findScore(name));}}});// 添加快捷键openItem.setMnemonic(KeyEvent.VK_O);openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, Event.CTRL_MASK));closeItem.setMnemonic(KeyEvent.VK_X);closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, Event.CTRL_MASK));// 添加监听器openItem.addActionListener(this);closeItem.addActionListener(this);chooser = new JFileChooser();// Chooser 选择器jf.setJMenuBar(bar);bar.add(fileMenu);jf.add(jt1);jf.add(jt2);jf.add(jt3);jf.add(jt4);jf.add(jt5);jf.add(jtext);jf.add(bt1);jf.add(bt2);fileMenu.add(openItem);fileMenu.add(closeItem);}// 按钮事件监听public void actionPerformed(ActionEvent e) {JMenuItem performed = (JMenuItem) e.getSource();if (performed == openItem) {chooser.showOpenDialog(null);// Dialog 会话file = chooser.getSelectedFile();   list = (ArrayList) new Fun(file).getRowName("姓名");  } else if (performed == closeItem) {System.exit(1);}}}Main.java
package index;import window.Window;public class Main {public static void main(String[] args) {new Window();}}

参考文献:

1 开发调研
1.1 需求描述
MS的电子表格(Excel)是Office的重要成员,是保存统计数据的一种常用格式。作为办公文档,势必要涉及到的电子文档的交换,Excel是一种在企业中非常通用的文件格式,打印和管理也比较方便。在一个Java应用中,将一部分数据生成Excel格式,是与其他系统无缝连接的重要手段。
1.2 Excel开发常用开源工具
在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。
1.3 比较开源工具的优缺点
1.3.1 Jxl优缺点
Jxl特征有如下描述: 
● 支持Excel 95-2000的所有版本 
● 生成Excel 2000标准格式 
● 支持字体、数字、日期操作 
● 能够修饰单元格属性 
● 支持图像和图表 
应该说以上功能已经能够大致满足我们的需要。最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。
1.3.2 Poi优缺点
Jakarta 的 POI Project 与 Java Excel API 在开源世界中可以说是并驾齐驱,但是也各有优劣,poi在某些细节有些小Bug并且不支持写入图片(poi其实可以写入图片,不过没有jxl来的方便,比较麻烦),其他方面都挺不错的;而JXL提供了对图片的支持(但是仅仅支持png格式的图片),问题就是对公式支持不是很好,但还是提供了简单的公式读取支持。因此你的项目中要选用什么样的第三方插件为完全由你的应用来决定。如果你的软件是跟财务有相当的关系的话,建议采用 POI Project,就我所在目前的项目来说由于用不到计算公式,而且很可能需要导出图片,因此,我的选择是 JXL 。

1.4 性能比较以及最终选择
1.4.1 内存消耗:(来自网络)
谈下JVM虚拟机内存消耗的情况.
数据量3000条数据,每条60列.JVM虚拟机内存大小64M.
使用POI:运行到2800条左右就报内存溢出.
使用JXL:3000条全部出来,并且内存还有21M的空间.
可想而知,在对内存的消耗方面差距还是挺大的.
也许是由于JXL在对资源回收利用方面做的还挺不错的。
1.4.2 速度效率(读取excel数据)(来自网络)
文件 POI加载耗时 POI总耗时 JXL加载耗时 Jxl总耗时 
文件大小57KB 1172 ms 1172 ms 1265 ms 2250 ms 
文件大小652KB 2297 ms 2313 ms 4406 ms 9750 ms 
文件大小2.24M 3109ms 3140ms 16313ms 37453ms

1.4.3 写excel速度效率
jxl插入数据比poi速度要快
1.4.4 功能对比
相比提供的功能的话,JXL相对弱了点.所以如果要实现的功能比较复杂的情况下可以考虑使用POI,但如果只想生成一些大数据量可以考虑使用JXL,或者CSV也是一个不错的选择,不过CSV并不是真正的excel,然而jxl插入数据比poi速度要快。

2 Jxl开发指南
2.1 介绍
jxl操作excel包括对象Workbook,Sheet ,Cell。
一个excel就对应一个Workbook对象,
一个Workbook可以有多个Sheet对象
一个Sheet对象可以有多个Cell对象
2.2 读取excel操作
通过Workbook,Sheet ,Cell这三个对象我们就可以实现Excel文件的读取工作。我们先想想一下读取步骤,不管是什么样的Excel操作框架必定都要经历
1、 选取Excel文件得到工作薄
2、 选择工作表
3、 选择Cell
4、 读取信息
2.2.1 读取工作薄
选取Excel文件得到工作薄Workbook
Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));
2.2.2 读取工作表
通过Workbook的getSheet方法选择第一个工作表(从0开始)
Sheet sheet = workbook.getSheet(0);
也可以通过工作的名称来得到Sheet
2.2.3 读取单元格
通过Sheet的getCell方法选择位置为C2的单元格(两个参数都从0开始)
Cell c2 = sheet.getCell(2,1);

2.2.3.1 读取单元格的值
2.2.3.2 通过Cell的getContents方法
把单元格中的信息以字符的形式读取出来String stringc2 = c2.getContents();
2.2.3.3 Cell提供了一个getType方法
能够返回单元格的类型信息,同时JXL提供了一个CellType类用来预设Excel中的类型信息,而且JXL提供了一些Cell类的子类用来分别用来表示各种类型的单元格,如LabelCell,NumberCell,DateCell分别表示字符、数值、日期类型的单元格
if (c2.getType() == CellType. LABEL) 

LabelCell nc = (LabelCell) c2; 
String number b2 = nc. getString();
}
if (c2.getType() == CellType. DATE) 

DateCell nc = (DateCell) c2; 
Date number b2 = nc. getDate();
}

if (c2.getType() == CellType.NUMBER) 

NumberCell nc = (NumberCell) c2; 
double number b2 = nc.getValue();
}
API提供了以下基本类型,与Excel的数据格式相对应,如下图所示

2.2.4 以释放资源:workbook.close()
当你完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象,以释放读取数据表的过程中所占用的内存空间,在读取大量数据时显得尤为重要
最后不要忘记关闭workbook以释放资源:workbook.close();
2.3 写excel操作
通过WritableWorkbook,WritableSheet,Label这三个对象我们就可以实现Excel文件的插入工作。我们先想想一下插入,不管是什么样的Excel操作框架必定都要经历
1、 创建Exce工作薄
2、 创建工作表
3、 创建单元格

2.3.1 创建工作薄
API提供了两种方式来处理可写入的输出流,一种是直接生成本地文件,如果文件名不带全路径的话,缺省的文件会定位在当前目录,如果文件名带有全路径的话,则生成的Excel文件则会定位在相应的目录;另外一种是将Excel对象直接写入到输出流,例如:用户通过浏览器来访问web服务器,如果HTTP头设置正确的话,浏览器自动调用客户端的Excel应用程序,来显示动态生成的Excel电子表格。
2.3.1.1 创建可写入的Excel工作薄
WritableWorkbook 
wwb = Workbook.createWorkbook(new File(targetfile));
2.3.1.2 将WritableWorkbook直接写入到输出流
OutputStream os = new FileOutputStream(targetfile);
WritableWorkbook wwb = Workbook.createWorkbook(os);
2.3.2 创建工作表
WritableSheet ws = wwb.createSheet("通讯录", 0);//创建sheet
2.3.3 创建单元格
2.3.3.1 添加文本类单元格
Label labelC = new Label(0, 0, "This is a Label cell");
2.3.3.2 添加带有字型Formatting的对象
WritableFont wf = new WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true);
WritableCellFormat wcfF = new WritableCellFormat(wf);
labelCF = new Label(1, 0, "This is a Label Cell", wcfF);
ws.addCell(labelCF);
2.3.3.3 添加带有字体颜色Formatting的对象
WritableFont wfc = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD, false,
UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.RED);
WritableCellFormat wcfFC = new WritableCellFormat(wfc);
Label labelCFC = new Label(1, 0, "This is a Label Cell", wcfFC);
ws.addCell(labelCF);
2.3.3.4 添加Number对象
Number labelN = new jxl.write.Number(0, 1, 3.1415926);
ws.addCell(labelN);
2.3.3.5 添加带有formatting的Number对象
NumberFormat nf = new NumberFormat("#.##");
WritableCellFormat wcfN = new WritableCellFormat(nf);
Number labelNF = new Number(1, 1, 3.1415926, wcfN);
ws.addCell(labelNF);
2.3.3.6 添加Boolean对象
Boolean labelB = new jxl.write.Boolean(0, 2, false);
ws.addCell(labelB);
2.3.3.7 添加DateTime对象
DateTime labelDT = new DateTime(0, 3, new java.util.Date());
ws.addCell(labelDT);
2.3.3.8 添加带有formatting的DateFormat对象
DateFormat df = new DateFormat("dd MM yyyy hh:mm:ss");
WritableCellFormat wcfDF = new WritableCellFormat(df);
DateTime labelDTF = new DateTime(1, 3, new Date(), wcfDF);
ws.addCell(labelDTF);
2.3.3.9 添加公式单元格
Fornual formual = new Formual(0,11,”Sum(A1:A9)”);
wrb.addCell(formual);
2.3.3.10 添加图像
WritableImage wrimage=new WritableImage(1,5,10,10,new File(imageFilepath));
wrb.addImage(wrimage); 
注意,API中注明只支持png文件。
2.3.4 合并单元格
通过writablesheet.mergeCells(int x,int y,int m,int n);来实现的。
表示将从第x+1列,y+1行到m+1列,n+1行合并 (四个点定义了两个坐标,左上角和右下角)结果是合并了m-x+1行,n-y+1列,两者乘积就是合并的单元格数量。
sheet.mergeCells(0, 6, 3, 8);
label = new Label(0, 6, "合并了12个单元格");
sheet.addCell(label);

2.3.5 添加单元格样式
主要是改变单元格背景、字体、颜色等等。
WritableCellFormat wc = new WritableCellFormat();
wc.setAlignment(Alignment.CENTRE); // 设置居中
wc.setBorder(Border.ALL, BorderLineStyle.THIN); // 设置边框线
wc.setBackground(jxl.format.Colour.RED); // 设置单元格的背景颜色
label = new Label(1, 5, "字体", wc);
sheet.addCell(label);
2.3.6 设置单元格字体
WritableFont wfont = 
new WritableFont(WritableFont.createFont("楷书"), 20);
WritableCellFormat font = new WritableCellFormat(wfont);
label = new Label(2, 6, "楷书", font);
sheet.addCell(label);
2.3.7 写入到文件
wwb.write();// 写入数据
wwb.close();// 关闭文件

2.4 拷贝、更新Excel工作薄
//创建只读的Excel工作薄的对象
jxl.Workbook rw = jxl.Workbook.getWorkbook(new File(sourcefile));
//创建可写入的Excel工作薄对象
WritableWorkbook wwb=Workbook.createWorkbook(new File(targetfile), rw);
//读取第一张工作表
jxl.write.WritableSheet ws = wwb.getSheet(0);
//获得第一个单元格对象
jxl.write.WritableCell wc = ws.getWritableCell(0, 0);
//判断单元格的类型, 做出相应的转化
if(wc.getType() == CellType.LABEL)
{
Label l = (Label)wc;
l.setString("The value has been modified.");
}
//写入Excel对象
wwb.write();
//关闭可写入的Excel对象
wwb.close();
//关闭只读的Excel对象
rw.close();
为了提高性能,在读取工作表时,与数据相关的一些输出信息,所有的格式信息,如:字体、颜色等等,是不被处理的,因为我们的目的是获得行数据的值,既使没有了修饰,也不会对行数据的值产生什么影响。唯一的不利之处就是,在内存中会同时保存两个同样的工作表,这样当工作表体积比较大时,会占用相当大的内存,但现在好像内存的大小并不是什么关键因素了。
一旦获得了可写入的工作表对象,我们就可以对单元格对象进行更新的操作了,在这里我们不必调用API提供的add()方法,因为单元格已经于工作表当中,所以我们只需要调用相应的setXXX()方法,就可以完成更新的操作了。
尽单元格原有的格式化修饰是不能去掉的,我们还是可以将新的单元格修饰加上去,以使单元格的内容以不同的形式表现。
新生成的工作表对象是可写入的,我们除了更新原有的单元格外,还可以添加新的单元格到工作表中。
最后,不要忘记调用write()方法,将更新的内容写入到文件中,然后关闭工作薄对象,这里有两个工作薄对象要关闭,一个是只读的,另外一个是可写入的。

4 jxl常用api
4.1.1 1、Workbook类提供的方法
int getNumberOfSheets() 获取工作表的总个数
Sheet[] getSheets() 获取数组型的工作表
Sheet getSheet(String name);//得到此对应名称的工作表
4.1.2 2、Sheet接口提供的方法
String getName() 获取工作表的名称
int getColumns() 获取Sheet表中所包含的总列数
Cell[] getColumn(int column) 获取某一列的所有单元格,
返回的是单元格对象数组
int getRows() 获取Sheet表中所包含的总行数
Cell[] getRow(int row) 获取某一行的所有单元格,返回的是单元格对象数组
Cell getCell(int column, int row)获取指定单元格的对象引用,需要注意的是它的两个参数,第一个是列数,第二个是行数,这与通常的行、列组合有些不同
WritableSheet.setRowView(int i,int height); 指定第i+1行的高度

WritableSheet.setColumnView(int i,int width); 指定第i+1列的

java实现随机点名器相关推荐

  1. Java程序设计——随机点名器

    Java程序设计--随机点名器 编写一个随机点名的程序,使其能够在全班同学中随机点中某一名同学的名字.要求随机点名器具备三个功能,包括存储全班同学姓名.总览 全班同学姓名和随机点取其中一人姓名. 运行 ...

  2. java关于“随机点名器“的案例

    随机点名器 1[任务描述]:编写一个随机点名的程序,使其能够在全班同学中随机点中某一名同学的名字.随机点名器具备3个功能,包括存储全班同学的姓名.总览全班同学姓名和随机点取一个同学姓名. 2[运行结果 ...

  3. java中随机点名器的简单程序

    用到的主要关键字 1.ArrayList <类型>  变量名 =new ArrayList<类型> 变量名(); 所处包 import java.util.ArrayList; ...

  4. java随机点名器的思路_Java实现简单的随机点名器

    实现思路 1.在存储同学姓名时,如果每一个同学都定义一个变量进行姓名存储,则会出现过多孤立的变量,很难一次性将全部数据持有.此时可以使用数组解决多个数据的存储问题.创建一个可以存储多个同学姓名的数组, ...

  5. java随机点名器(仅供娱乐)

    任务描述: 编写一个随机点名的程序,使其能够在618宿舍中随机点中某一名小倒霉蛋儿的名字,去给室友们带饭,哈哈哈哈哈. 任务要求: 随机点名器需要包含三个功能: 1.存储宿舍同学的名字 2.总览618 ...

  6. java随机点名器_Java实现简单随机点名器

    2-3随机点名器 /*随机点名器 *1.储存所有同学的名字 *2.总览全班同学的姓名 *3.随机点取一人的姓名 */ package Chap2Gramma.chooseperson; import ...

  7. Java 随机点名器

    随机点名器,即在全班同学中随机的打印出一名同学名字. 要做的随机点名器,它具备以下3个内容:  存储所有同学姓名  总览全班同学姓名  随机点名其中一人,打印到控制台 案例需求分析 在全班同学中 ...

  8. java 点名器_java随机点名器 课程设计.docx

    java随机点名器 课程设计 目 录1 课程设计内容11.1 课程设计目的11.2 课程设计要求11.3 课程设计背景12 概要设计22.1程序模块结构图22.2 使用外部包的确定22.3 主界面模块 ...

  9. 随机点名器——java

    随机点名器 任务描述: 编写一个随机点名的程序,随机点名器需具备3个基本功能: 1.存储所有人的姓名: 2.总览全部人的姓名: 3.随机点取一人姓名: 设计思路: 1.根据点名器功能的不同,将功能封装 ...

最新文章

  1. 送出orkut邀请,当然如果需要gmail邀请,还有很多
  2. 【转】ROWNUM与ORDER BY先后关系
  3. Web.sitemap网站导航
  4. 启动DevStack的各项服务
  5. PHP连接MySQL报错:Fatal error: Call to undefined function mysql_connect()之解决方法
  6. [0716] Jsoi B Rsss
  7. ajax php接收不到数据库,PHP更新MySQL数据库与AJAX调用没有做任何事情
  8. 小米10至尊纪念版现身Geekbench跑分:今晚一起见证历史
  9. jq鼠标隐藏显示的方法
  10. 【LeetCode】【数组】题号:*48,旋转图像
  11. Egg 2.20.0 发布,阿里开源的企业级 Node.js 框架
  12. leetcode_Restore IP Addresses
  13. tolower c语言,C语言 tolower()用法及代码示例
  14. java 使用poi将PPT转为图片,在线预览PPT
  15. 29. 尚融宝借款申请
  16. 【TcaplusDB君】 行业新闻汇编(5月25日)
  17. PHP解码JavaScript中的escape()方法
  18. 电路板故障测试仪GR4080软件,电路板维修测试仪是一种的电路板故障检测设备
  19. 工业控制领域电子元件国产化硬件设计替代解读
  20. 木马核心技术剖析读书笔记之木马驱动加载与启动

热门文章

  1. 【爬虫】应用Python爬虫爬取豆瓣租房上的帖子信息
  2. html5立体照片墙效果,HTML5特效可以 14种jQuery超酷3D网格照片墙动画特效源码
  3. 带着问题,再读ijkplayer源码
  4. autocad2022版安装提示提示“The feature you are trying to use is on a network resource ...”失败解决办法
  5. hivesql失败告警发送到企业微信
  6. 微信号码检测软件是什么?2016年全新升级的微信开通状态检测
  7. android+照相软件,韩国很火的照相app
  8. CSS属性设置鼠标为手型
  9. 备案域名服务器DNS修改,未备案域名也可以用高防CDN加速
  10. MTK开发之cpu核开关与频率调节