实训内容:模仿“百词斩”手机App,设计并用Java语言实现一个“百词斩”图形界面程序(根据自己的能力,可以适当地增加或删除部分功能)。

最低要求:

(1)事先将一定数量的英语单词、四个选项(英语单词的汉语解释)及正确答案存放在一个文本文件中(一个单词的信息占一行,各项之间用一个空格分隔)。

(2)从文件中取出所有单词的信息,存入数组中。

(3)从单词数组中,随机找出一个单词,以单项选择题的形式显示出来,供用户答题。答对时显示√,答错时显示×并显示正确结果。每答完一题,都要统计并显示目前答对的单词数量。

(4)对于已经回答正确的单词,以后不会再出现。回答错误的单词,以后还会随机出现。

提示:

假如总共有n个单词,存入数组WORDS。

抽题时:

a. 随机产生一个[0,n)之间的随机整数i。

b. 取出WORDS[i]中的单词,作为选择题供用户选择。

答题时:

如果用户答对了,将WORDS[i]与WORDS[n-1]互换,n的值减1。

(5)所有单词都回答正确时n=0,程序结束。也可以关闭窗口强行退出。

import javax.swing.*;
import java.awt.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import java.io.*;
import java.util.ArrayList;
import java.util.Random;public class BczApp   implements ActionListener{private JFrame frame;private ArrayList<String[]> wordslist;private String str[];//存放单词private  String list[];private  JRadioButton button1;private  JRadioButton button2;private  JRadioButton button3;private  JRadioButton button4;private JButton pre;    //显示上一题的按钮private JButton next;   //显示下一题的按钮private  int okNum=0;private  int totalNum=10;private JLabel wordLabel;//显示题目private  JLabel answer;//显示答案private  JLabel labScore;//显示答对题数private ImageIcon icon ;private int index ;private int num;//初始化public void init() {Myframe();//创建窗体 必须放在最前面Mylable();LoadWords();randomlist();MyButton();MyIcon();display();//关闭和显示窗体,必须放在最后面}private ArrayList LoadWords() {
//导入数据ArrayList<String[]> arrayList = new ArrayList<>();//初始化try {//设置存放单词的数组str = new String[100];String [] word1;String [] word2;String [] word3;String [] word4;String [] word5; String [] word6;String [] word7;  String [] word8;FileReader fileReader = new FileReader(new File("C:\\Users\\splendid\\Desktop\\百词斩.txt"));BufferedReader bufferedReader = new BufferedReader(fileReader);for (int i = 0; i < 8; i++) {str[i] = bufferedReader.readLine();//每次读取一行信息//创建几组数组 分别存放单词 四个选项 正确答案}word1 = str[0].split(" ");word2 = str[1].split(" ");word3 = str[2].split(" ");word4 = str[3].split(" ");word5 = str[4].split(" ");word6 = str[5].split(" ");word7 = str[6].split(" ");word8 = str[7].split(" ");//将几个单词数组存放在集合中arrayList.add(word1);arrayList.add(word2);arrayList.add(word3);arrayList.add(word4);arrayList.add(word5);arrayList.add(word6);arrayList.add(word7);arrayList.add(word8);fileReader.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return arrayList;}private void MyIcon() {icon =new ImageIcon("src\\bcz.jpg");frame.setIconImage(icon.getImage());}private void  loadsection(){button1.setText(list[1]);button2.setText(list[2]);button3.setText(list[3]);button4.setText(list[4]);}private void Mylable() {//显示题目的标签wordLabel =new JLabel();wordLabel.setFont(new Font("宋体",Font.PLAIN,32));wordLabel.setBounds(60, 60,300,30);//显示答对单词数的标签labScore=new JLabel( "答对单词数:"+okNum+"/"+totalNum);labScore.setForeground(new Color(225, 54, 54));//设置答对单词数的文字颜色labScore.setFont(new Font("黑体",Font.PLAIN,24)); //设置答对单词数的字体labScore.setBounds(180, 20,200,30);frame.add(labScore);//显示答案的标签answer=new JLabel();answer.setBounds(70,350,300,50);answer.setFont(new Font("黑体",Font.PLAIN,32));answer.setForeground(Color.red);//设置答案的文字颜色frame.add(answer);}private void randomlist(){//实现随机抽取动态数组中的元素Random r =new Random();index =r.nextInt(8);//随机生成1—8之间的整数num=index;wordslist = new ArrayList<>();wordslist=LoadWords();list =wordslist.get(num);
}public void MyButton() {pre = new JButton("上一题");pre.setFont(new Font("黑体", Font.PLAIN, 24));pre.setBounds(100, 450, 120, 30);frame.add(pre, BorderLayout.EAST);next = new JButton("下一题");next.setFont(new Font("黑体", Font.PLAIN, 24));next.setBounds(250, 450, 120, 30);frame.add(next, BorderLayout.WEST);//设置对答单词的标签名wordLabel.setText(list[0]);frame.add(wordLabel);ButtonGroup group = new ButtonGroup();//单选按钮组button1 = new JRadioButton(list[1]);button2 = new JRadioButton(list[2]);button3 = new JRadioButton(list[3]);button4 = new JRadioButton(list[4]);//将每个选项存放在 ButtonGroup中group.add(button1);group.add(button2);group.add(button3);group.add(button4);//给每个选项添加字体button1.setFont(new Font("黑体", Font.BOLD, 35));button2.setFont(new Font("黑体", Font.BOLD, 35));button3.setFont(new Font("黑体", Font.BOLD, 35));button4.setFont(new Font("黑体", Font.BOLD, 35));//设置边界button1.setBounds(60, 120, 220, 70);button2.setBounds(60, 170, 220, 70);button3.setBounds(60, 220, 220, 70);button4.setBounds(60, 270, 220, 70);frame.add(button1, BorderLayout.NORTH);frame.add(button2, BorderLayout.CENTER);frame.add(button3, BorderLayout.SOUTH);frame.add(button4, BorderLayout.AFTER_LAST_LINE);//添加监听事件button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this);button4.addActionListener(this);pre.addActionListener(this);next.addActionListener(this);}public void actionPerformed(ActionEvent e) {if (e.getActionCommand().equals(list[5])) {okNum++;labScore.setText("答对单词数:" + okNum + "/" + totalNum);answer.setText("√ ");}else if (e.getActionCommand().equals("上一题")) {if (num == 0) {num = wordslist.size() - 1;} else {num--;}list = wordslist.get(num);wordLabel.setText(list[0]);answer.setText("");loadsection();}else if (e.getActionCommand().equals("下一题")) {//如果是最后一个单词if(num ==wordslist.size()-1){num=0;}else {num++;}list = wordslist.get(num);wordLabel.setText(list[0]);answer.setText("");loadsection();}else {answer.setText("x  "+list[5]);JOptionPane.showMessageDialog(null, "再试一次");}}private void display() {frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);frame.setVisible(true);}private void Myframe() {frame = new JFrame("百词斩");frame.setBounds(400, 450, 500, 550);frame.setResizable(false);frame.setLayout(null);}public static void main(String[] args) {BczApp bczApp= new BczApp();bczApp.init();}}

Java暑期实训任务二——单词检测程序相关推荐

  1. java质数和合数的程序_《java项目实训》课程设计计算器.doc

    <java项目实训>课程设计计算器.doc 课程设计报告课程名称JAVA项目实训课程设计设计名称基于JAVA计算器的设计与实现学生学号学生姓名学生学号学生姓名学生学号学生姓名学生学号学生姓 ...

  2. 暑期实训总结_李小倩

    暑期实训总结 姓名:李小倩  学号:111307105 班级:CSDN-java班 年级:2011级 转眼间实训已经结束有些时间了,我想这个实训对于我们参与的每一个人来说都是一段美好快乐的记忆.记得距 ...

  3. 暑期实训心得及总结_史国旭

    暑期实训心得及总结                     姓名:史国旭  学号:111307168 班级:CSDN-java 年级:2011级 转眼间实训已经结束4天了,我想这个实训对于我们参与的每 ...

  4. 计算机暑期实训报告,计算机专业暑期实训报告总结范文

    <计算机专业暑期实训报告总结范文>由会员分享,可在线阅读,更多相关<计算机专业暑期实训报告总结范文(4页珍藏版)>请在人人文库网上搜索. 1.计算机专业暑期实训报告总结范文 计 ...

  5. 江西师范大学20届Java方向实训参考答案

    江西师范大学20届Java方向实训参考答案 送分题-A+B Problem 略 #1. A + B Problem 略 「HNOI2017」抛硬币 中国剩余定理+范德蒙德卷积+拓展Lucas+预处理伪 ...

  6. Java企业实训 - 01 - Java前奏

    前言: 虽然个人专攻.NET方向,不过由于个人是干教育行业的,方方面面的东西,不能说都必须精通,但肯定多少都会涉及到. 一个菜鸟学员,从啥都不会,经过一步步学习,最后到企业上手掌管一个模块甚至一个项目 ...

  7. 【百家稷学】深度学习计算机视觉生产实习(山西农业大学暑期实训)

    继续咱们百家稷学专题,本次是有三AI在山西农业大学开设的为期10天的正式暑期专业课程.百家稷学专题的目标,是走进100所高校和企业进行学习与分享. 本次主题 本次实训是在山西农业大学进行,主题是< ...

  8. 基于java 工单管理_实训任务工单1-2(编写规范Java代码) 实训任务工单1-2(编写规范Java代码).docx_学小易找答案...

    [其它]实训任务工单4-1(泛型类.泛型方法的应用) 实训任务工单4-1(泛型类.泛型方法的应用).docx [简答题]教学工单5-1Java序列化机制的使用 [填空题]The name of my ...

  9. java迷宫实训报告_Java综合实训报告-迷宫.doc

    Java综合实训报告-迷宫 目 录 1.需求分析2 2.概要设计2 2.1功能图3 2.2系统流程图4 3.详细设计4 3.1类关系图5 3.2类设计图5 类Maze5 类MazeGrid6 3.3主 ...

最新文章

  1. Nginx 搭建负载均衡
  2. 为什么“或命题真假的判断是有真则真?
  3. MaxCompute+ Geabase 大话健康知识图谱取经之路
  4. 深度学习的数学 (4)张量、矩阵、导数
  5. 科大星云诗社动态20210227
  6. prometheus python client
  7. python高阶函数filter_Python进阶系列连载(13)——Python内置高阶函数filter(上)...
  8. 大学只待成追忆,只是工作已半年,2016再见
  9. C# 连接SQL Server数据库的几种方式--server+data source等方式
  10. HTML 表格的样式属性
  11. html5的q标签,HTML 5 q 标签 - HTML 参考手册
  12. java 数据库 下载_数据库下载
  13. Android学习笔记(九)——更复杂的进度对话框
  14. PMBOK--项目整合管理
  15. Linux Shell脚本测试案例(一)
  16. 数控系统市场下行压力逐渐增大
  17. android m是什么单位,M代表什么单位?
  18. linux 3.11 虚拟摄像头 驱动,摄像头万能驱动-万能视频驱动-摄像头万能驱动下载 v2011.3官方版-完美下载...
  19. 免费外链资源列表汇总
  20. 部署静态网站的五种方法

热门文章

  1. 点在多边形内算法,JS判断一个点是否在一个复杂多边形的内部
  2. 如何查找视频文件 android,如何扫描出android手机中所有的视频文件
  3. Emlog程序纯黑色调CYP音乐模板源码
  4. 3D打印断电、断料续打,打印一半中断续打改代码,也适用于单喷头多色打印(用cura切片)
  5. chrome-实用技巧
  6. 【考研经验】2018跨考北京大学软件工程401分经验分享
  7. Keep悦动圈竞品分析报告(2)
  8. uni-app 中如何使用谷歌地图 !?
  9. python分析谷歌浏览器的历史记录
  10. android 适配红米,小米MIUI放出Android Q适配计划,11款手机参与,包括红米Note 7