记忆测试系统_ JAVA实现
Java程序设计实例与操作答案

Java程序设计实例与操作答案第⼀章认识Java⼀.选择题1.D2.B3.D4.D⼆.简答题1.Java语⾔有三个技术分⽀,并且产⽣了三个版本的Java运⾏平台,分别是J2SE 标准版,主要⽤于开发桌⾯应⽤程序、低端服务器应⽤程序和Java Applet程序;J2EE 企业版,主要⽤于开发分布式⽹络程序,如电⼦商务⽹站和ERP系统等;J2ME 精简版,主要⽤于嵌⼊式系统开发,如移动电话、掌上电脑(PDA)以及其他⽆线设备。
2.Java应⽤程序和Java Applet程序。
Java应⽤程序要依赖JRE或JDK中的解释器来运⾏,⽽Java Applet程序的调⽤命令嵌⼊在⽹页的HTML代码⽂件中,显⽰⽹页时由Web 浏览器内置的Java解释器解释执⾏,并将其内容显⽰⽹页中。
3.Java虚拟机JVM是Java V irtual Machine的缩写。
JVM是⼀个虚构出来的计算机,它有⾃⼰完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。
Java字节码⽂件包括的代码就是基于JVM的。
4.Java语⾔主要有简单、⾯向对象、分布式、健壮、安全、跨平台、解释执⾏、多线程和动态执⾏的特点。
5.开发Java应⽤程序时,⾸先使⽤任何⽂本编辑器创建和编辑Java源程序,保存源程序⽂件时,⽂件的扩展名为“*.java”。
然后使⽤“javac 程序名.java”命令把源程序编译为字节码⽂件,最后使⽤“java 程序名”将字节码⽂件翻译为计算机可以理解的指令并运⾏。
开发Java⼩程序时,⾸先使⽤任意纯⽂本编辑器编写Java源程序和HTML⽂件,并分别以扩展名“.java”和“.html”保存。
其中,HTML⽂件中应包含调⽤Java字节码⽂件的指令。
HTML⽂件可以使⽤IE浏览器浏览,也可以使⽤JDK提供的Appletviewer⼯具浏览。
三.编程题1.解答//Test.javaclass Person {String name;String address;String telephone;Person(String name1, String address1, String telephone1) {name = name1; address = address1; telephone = telephone1;}String getName() {return name; }String getAddress() {return address; }String getTelephone() {return telephone; }}public class Test {public static void main(String[] args) {Person lily = new Person("lily", "⾦企鹅18号", "158********");System.out.println("姓名:" + lily.getName());System.out.println("地址:" + lily.getAddress());System.out.println("电话号码:" + lily.getTelephone());}}2.解答⽂件TestApplet.java与TestApplet.html都放在d盘根⽬录下。
基于Android平台的英语单词记忆软件系统的设计

引言
基于 Android 平台的英语单词记忆软件将人们日常生活 中用到的手机和学习英语单词结合起来,使用户能够方便高 效的学习和记背英语单词。用户可以根据软件设置好的多个 章节逐个学习,也可以进行测试再把自己不熟悉的单词加入 单词本进行查看。具有很高的实用性。从而提高了记单词的 效率。 Android 是一个开放的平台, 不用支付费用, 很灵活自由, 也因此开发者可以自由的开发软件。“开源”是 Android 的 一个重要的特点,即源代码是面向用户开放的,可以遵循开 源协议(GNU)进行使用、编译和再发布。在遵守 GNU 协 议的前提下,任何人都可以免费使用,随意控制软件的运行 方式 [1-2],能让厂商和客户轻松的定制各样的 ROM,定制各 种桌面部件和主题风格,刷机也是很多 Android 用户乐于去 做的能够自定义自己手机的事。不足之处也在于 Android 手 机版本的多样性,由于更新很快,光是同一时间段内市面上 售卖和使用的安卓手机就有很多版本和外观,这对开发者往 往造成了一定的困难,因为要时刻考虑不同版本以及不同屏 幕尺寸的手机之间的兼容问题。开发方面 Android 应用可以 直接在 windows 电脑系统中开发,运用 Java 编程语言,开发 环境免费,进行真机测试对手机也没有很高的要求,由于多 种多样的安卓手机不断更新,其价格相对于其他系统的手机 而言也便宜 。
的功能,同时可以编辑或删除生词本中的单词,也可在单词 本界面直接添加用户想要添加的单词。 显示生词本中的所有单词,在数据库中查找数据,返 回 一 个 list 集 合 供 适 配 器 使 用, 要 用 到 数 据 库 操 作 类 中 的 QueryAttention() 方法来实现。首先获取 cursor;新建一个集 合类的对象 list,用来保存找到的结果集中的内容,再对获 取的 cursor 进行遍历,一直取数值直到取完所有内容为止。 编辑单词功能首先需要用 QueryAttention() 方法获取到 要编辑的单词,再用 getText() 方法获取用户输入的新的解释, 最后调用单词的封装类中的 set() 方法把获取到的界面上的单 词信息存入表中,通过 UpdateAttention() 方法更新数据库中 的表。
基于javaweb学生考勤管理系统设计与实现

基于javaweb学生考勤管理系统设计与实现一、引言随着现代教育的不断发展,学生考勤管理已经成为了学校教育管理中不可或缺的一部分。
传统的考勤方式需要大量的人力物力,而且容易出现记录错误等问题,因此开发一款基于JavaWeb技术的学生考勤管理系统是非常有必要和重要的。
二、需求分析1.功能需求(1)管理员登录:管理员可以通过用户名和密码登录系统。
(2)班级管理:管理员可以添加、删除、修改班级信息。
(3)学生管理:管理员可以添加、删除、修改学生信息。
(4)课程管理:管理员可以添加、删除、修改课程信息。
(5)考勤记录:管理员可以查看每个班级每个学生每节课的考勤情况。
2.非功能需求(1)安全性:系统需要保证数据安全,防止恶意攻击和非法访问。
(2)稳定性:系统需要保证稳定运行,避免因为程序错误或者其他原因导致系统崩溃或者数据丢失等问题。
(3)易用性:系统需要简单易用,用户可以快速上手使用。
三、设计与实现1.技术选型本系统采用JavaWeb技术进行开发,具体包括以下内容:(1)前端框架:Bootstrap、jQuery(2)后端框架:Spring、SpringMVC、Mybatis(3)数据库:MySQL2.系统架构设计本系统采用B/S架构,由前端页面、控制器和后台服务组成。
其中前端页面采用Bootstrap和jQuery进行开发,控制器采用SpringMVC 框架进行开发,后台服务采用Spring和Mybatis框架进行开发。
3.数据库设计本系统需要设计三张表:班级表、学生表和课程表。
具体字段如下:班级表:字段名类型说明id int 班级ID,主键自增长name varchar(20) 班级名称学生表:字段名类型说明id int 学生ID,主键自增长name varchar(20) 学生姓名class_id int 所属班级ID课程表:字段名类型说明id int 课程ID,主键自增长name varchar(20) 课程名称4.模块设计与实现(1)登录模块:管理员通过用户名和密码登录系统。
会议签到系统实验报告

一、实验目的1. 了解会议签到系统的基本原理和实现方法。
2. 熟悉Java编程语言和数据库技术。
3. 培养团队协作能力和项目管理能力。
二、实验环境1. 操作系统:Windows 102. 开发工具:Eclipse3. 数据库:MySQL4. 编程语言:Java三、实验内容1. 系统需求分析2. 系统设计3. 系统实现4. 系统测试5. 系统总结四、实验步骤1. 系统需求分析(1)功能需求会议签到系统应具备以下功能:1)用户管理:管理员可以添加、删除、修改用户信息。
2)会议管理:管理员可以添加、删除、修改会议信息。
3)签到管理:参会人员可以查看会议信息,进行签到。
4)数据统计:管理员可以查看参会人员签到数据,进行统计和分析。
(2)性能需求1)响应时间:系统响应时间应小于2秒。
2)并发用户数:系统可支持1000个并发用户同时在线。
2. 系统设计(1)系统架构会议签到系统采用B/S(Browser/Server)架构,分为前端和后端两部分。
前端:使用HTML、CSS、JavaScript等技术实现用户界面。
后端:使用Java编程语言和MySQL数据库实现业务逻辑和数据存储。
(2)系统模块1)用户模块:负责用户信息的添加、删除、修改和查询。
2)会议模块:负责会议信息的添加、删除、修改和查询。
3)签到模块:负责参会人员签到、查询签到记录和统计签到数据。
4)数据统计模块:负责查看参会人员签到数据,进行统计和分析。
3. 系统实现(1)前端实现1)使用HTML、CSS、JavaScript等技术实现用户界面,包括用户登录、会议列表、签到界面等。
2)使用Ajax技术实现前后端数据交互。
(2)后端实现1)使用Java编程语言实现业务逻辑,包括用户管理、会议管理、签到管理、数据统计等。
2)使用MySQL数据库实现数据存储,包括用户表、会议表、签到表、统计表等。
4. 系统测试(1)功能测试1)测试用户管理功能,包括添加、删除、修改和查询用户信息。
基于微信小程序的考研智能刷题系统的设计与实现

Science and Technology &Innovation ┃科技与创新2021年第14期·143·文章编号:2095-6835(2021)14-0143-02基于微信小程序的考研智能刷题系统的设计与实现季波,杨艳婷,李司航,朱开心,刘海涛(南京工业大学浦江学院,江苏南京211200)摘要:在对现有在线试题库练习平台的优缺点进行研究分析的基础上,对考研智能刷题系统功能进行设计。
基于微信小程序技术,通过知识点练习,掌握学生知识的盲点,在不同阶段推荐不同的知识点试题,以便使考生考试前一天的记忆效果达到最佳。
系统主要功能包括知识点练习、知识点视频、真题模考、番茄计时等。
系统采用微信小程序框架、Servlet 技术、MYSQL 数据库等主流的开发工具,技术界面简洁友好,性能良好。
关键词:在线学习;智能刷题;知识点;Servlet 中图分类号:TP311文献标志码:A DOI :10.15913/ki.kjycx.2021.14.0571概述近些年来,国内兴起了如猿题库、智学网、松鼠AI 等一些在线试题库练习平台。
利用刷题系统进行碎片化学习的研究非常多。
2012年,高祥翀发表了《基于碎片化学习的远程开放教育移动学习模式探讨》,该篇文章提出采用碎片化学习方式能达到非常好的学习效果,移动学习必将成为未来学习过程中不可或缺的学习方式[1]。
2015年,王承博等深刻研究了在大数据时代下如何进行碎片化学习,并发表了《大数据时代碎片化学习研究》,该文章提出大数据时代从知识碎片化到知识体系嬗变过程的有关理论[2]。
2016年,王竹立等将“互联网+”课堂模式带入碎片化学习的研究当中,并发表了《移动互联时代的碎片化学习及应对之策—从零存整取到“互联网+”课堂》,该文章提出未来个人导向的系统学习将取代学科导向的系统学习,成为主流的学习模式[3]。
2018年,王家辉等针对各类做题软件中做题模式单一导致学生复习效率低下的问题,发表了《基于知识图谱的微信智能刷题系统》,该篇利用了推荐系统、协同过滤等方式,构建学生知识图谱,有效地提升了学生的复习效率[4]。
TestStand与其他测试工具的集成实现全面的测试解决方案

TestStand与其他测试工具的集成实现全面的测试解决方案测试是软件开发过程中至关重要的一环。
为了确保软件质量、验证功能和性能,许多软件开发者依赖于测试工具来自动化测试过程。
TestStand作为一种通用测试自动化框架,帮助用户轻松设计、执行和报告测试过程。
然而,在实际应用中,TestStand往往需要与其他测试工具集成使用,以实现全面的测试解决方案。
一、为什么需要集成测试工具?在实际的软件测试过程中,往往需要使用多个测试工具来满足不同的测试需求。
例如,某些测试工具可能专注于功能测试,而其他工具可能更适合用于性能测试或安全测试。
为了全面测试软件的各个方面,需要将多个测试工具有效地集成到一个测试框架中。
其次,测试工具间的集成可以提高测试效率和准确性。
通过集成,测试人员可以更好地管理测试过程,自动化执行测试任务,避免繁杂的手动操作。
此外,集成测试工具还可以实现测试数据的共享和交流,便于团队协作,提高工作效率。
二、TestStand与其他测试工具的集成方式1. 数据交换集成数据交换集成是最常见的TestStand与其他测试工具集成的方式之一。
通过该方式,TestStand可以与其他测试工具共享测试数据,实现数据在不同工具间的传递和同步。
例如,可以将TestStand和JUnit集成,从而实现Java代码的单元测试。
通过JUnit的测试用例,可以将测试结果传递给TestStand进行结果分析和报告生成。
这样,开发和测试部门可以更好地合作,快速发现和修复代码缺陷。
2. API接口集成API接口集成是TestStand与其他测试工具集成的另一种常见方式。
通过API接口,TestStand可以与其他测试工具进行通信和交互,实现资源共享和测试流程协同。
例如,TestStand可以通过LabVIEW的API接口,与LabVIEW进行集成。
在测试过程中,LabVIEW可以提供实时的数据采集和仪器控制功能,而TestStand则负责管理测试任务和生成测试报告。
java utils uuid原理

java utils uuid原理Java中的UUID(Universally Unique Identifier,通用唯一标识符)是一个标准的32位16进制数字,以一种唯一的方式标识信息。
UUID可以用于识别计算机、应用程序、本地文件、数据库记录以及其他需要唯一标识符的场景。
UUID的生成是基于时间戳、计算机的MAC地址以及随机数等因素。
具体而言,UUID的生成主要有以下几个步骤:1.从系统中获取当前时间戳。
2.将当前时间戳转换成16进制的字符串,通常为13位,如果不足13位则在前面补0。
3.从系统中获取计算机的MAC地址。
4.将MAC地址去除冒号,并将其转换成16进制的字符串。
5.获取一个随机数并将其转换成16进制的字符串。
6.将步骤2、3和5生成的字符串进行拼接,得到一个48位的字符串。
7.将48位字符串分成8-4-4-4-12的形式,使用"-"分隔,得到最终的UUID。
需要注意的是,UUID的生成可能因为系统环境或者其他因素而有所不同。
例如,在某些操作系统上无法获取到MAC地址,那么在步骤3中就不能获取到MAC地址,而需要换成其他的唯一标识符。
Java中提供了UUID类来生成UUID。
可以通过调用`UUID.randomUUID()`方法来获得一个随机的UUID。
具体实现细节会由Java虚拟机实现,开发人员并不需要关注。
UUID的主要作用是在分布式系统中唯一标识对象。
在分布式系统中,由于多个节点同时生成UUID的概率非常低,因此可以保证UUID的全局唯一性。
开发人员可以将UUID作为数据库表中的主键来使用,或者用于标识分布式系统中的各个节点。
UUID的优点是非常简单、高效且唯一性较高。
由于UUID可以在无需网络通信的情况下生成,因此生成效率较高。
而且UUID不依赖于任何中央注册机构,可以在任何地方生成,并且由于UUID的长度足够长,冲突的概率非常低。
另外,UUID还可以通过不同的版本来满足不同的需求,例如时间戳版本、随机数版本等。
基于艾宾浩斯记忆曲线的单词记忆系统的设计与实现毕业论文

毕业设计中文题目基于艾宾浩斯记忆曲线的单词记忆系统的设计与实现英文题目Design and Implementation ofthe Word-Memory System Based onEbbinghaus Curve摘要摘要当前英语地位日趋重要,词汇量成为制约大部分人英语能力的障碍。
为帮助人们更加轻松、高效的完成单词记忆过程,本次项目将结合心理学原理设计开发一个基于B/S架构的单词记忆系统。
系统主要实现记忆单词的基本功能,如:基于艾宾浩斯记忆曲线的任务进程初始化、进程参数动态更新、记忆曲线每日修正、任务列表动态初始化、动态调整任务推送次序等核心功能。
与其他同类系统不同的是,该系统采用了心理学的研究成果,更符合人类的记忆活动,并能够根据用户的操作不断地更新用户的记忆曲线使之更符合用户个性化的记忆能力。
系统采用java编程,核心技术涉及:数据库编程、Strut2框架、轻量级数据交换格式JSON、ExtJS的Ajax数据代理模式及界面显示技术。
关键词:艾宾浩斯;单词记忆系统;记忆曲线更新ABSTRACTABSTRACTEnglish has being become more and more important, Limited vocabulary is a barrier to so many people. To help people remember words comfortable and more efficient. This project applied the psychological principles, design and implementation of system base-on B/S architecture. The system achieve basic function of remember words.The core business includes the following functions. Initialize a user forgetting curve base-on Ebbinghaus Curve.C urve’s parameters update dynamically by user operation. Refresh user curve. Generate a review plan by user forgetting curve.Unlike other wordmemory system, This system is base-on Ebbinghaus Curve so it can update C urve’s parameters dynamically.It means that it becomes more in accordance with human’s memory level. This system code in Java and it applied technique like: SQL programming, Struts2, JSON, Ajax, ExtJS.Key Words: Ebbinghaus Forgetting Curve;WordMemory system; Refresh user curve目录第1章开发背景 (1)1.1 目的和意义 (1)1.2 设计思想 (1)1.3 开发目标 (2)第2章使用技术说明 (3)2.1 Struts2 (3)2.2 SQL编程 (3)2.3 AJAX与ExtJS (3)2.4 JSON轻量级数据格式简介 (4)第3章系统需求分析 (5)3.1 引言 (5)3.1.1 项目背景 (5)3.1.2 假定和约束 (5)3.2 系统总体结构图 (5)3.3 系统功能模块分解 (6)3.3.1 用户模块 (6)3.3.2 词库模块 (6)3.3.3 记忆曲线模块 (7)3.3.4 复习计划模块 (7)3.3.5 复习模块及浏览模块 (8)第4章系统概要设计 (9)4.1 系统设计思想 (9)4.2 系统总体设计 (9)4.3 系统工程分离 (9)4.4 系统类结构设计 (10)4.4.1 数据模型 (10)4.4.2 DAO层 (10)4.4.3 业务逻辑层 (11)4.4.4 控制层 (11)4.5 数据库设计 (12)4.5.1 E-R模型 (12)4.5.2 物理模型 (14)第5章核心业务逻辑介绍 (17)5.1 核心业务逻辑层简述 (17)5.2 记忆曲线的相关业务逻辑详解 (20)5.2.1 记忆曲线初始化 (20)5.2.2 记忆曲线参数更新 (20)5.2.3 记忆曲线更新 (21)5.3单词复习的业务逻辑详解 (23)5.3.1 任务列表初始化 (23)5.3.2 复习单词的过程 (24)5.4 单词卡片式浏览时的业务逻辑详解 (26)5.4.1 文字说明 (26)5.4.2 选择这种方式的原因 (27)5.4.3方法的优点 (27)第6章系统实现 (28)6.1 核心模块实现效果及说明 (28)6.1.1 首页 (28)6.1.2 复习模块页面 (28)6.1.3 单词浏览页面 (29)6.1.4 数据分析 (30)6.2 新技术应用 (31)6.2.1 Extjs、Ajax、JSON (31)第7章系统测试 (34)7.1 测试对象和要点 (34)7.2 测试环境 (34)7.3 测试用例 (34)第8章结论与展望 (37)8.1 结论 (37)8.2 展望 (38)结束语 (39)致谢 (40)参考文献 (1)第1章开发背景1.1 目的和意义目前英语地位日趋重要,单词的词汇量是一个人英语能力及水平极大的重要体现, 而背单词依旧是困扰许多人的地方,原因如下:英语单词多而繁杂,面对整整一本的单词词典人们总是望而却步,不从何入手。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//主类MemoryGameimport javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.LinkedList;public class MemoryGame extends JFrame implements ActionListener{ JMenuBar bar;JMenu menuGrade,menuResult,menuIcon;JMenuItem oneGradeItem,twoGradeItem,threeGradeItem;JMenuItem oneGradeResult,twoGradeResult,threeGradeResult;JMenuItem carImageIcon,animalImageIcon;File fileOneGrade,fileTwoGrade,fileThreeGrade,gradeFile;String imageName[];MemoryTestArea memoryArea;ShowRecordDialog showDiolag=null;int m=5,n=6;final int imageNumber=7;MemoryGame(){fileOneGrade=new File("初级记忆排行榜.txt");fileTwoGrade=new File("中级记忆排行榜.txt");fileThreeGrade=new File("高级记忆排行榜.txt");menuGrade=new JMenu("选择级别"); oneGradeItem=new JMenuItem("初级"); twoGradeItem=new JMenuItem("中级"); threeGradeItem=new JMenuItem("高级"); menuGrade.add(oneGradeItem); menuGrade.add(twoGradeItem); menuGrade.add(threeGradeItem); menuResult=new JMenu("查看排行榜"); oneGradeResult=new JMenuItem("初级排行榜"); twoGradeResult=new JMenuItem("中级排行榜"); threeGradeResult=new JMenuItem("高级排行榜"); menuResult.add(oneGradeResult); menuResult.add(twoGradeResult); menuResult.add(threeGradeResult);menuIcon=new JMenu("选择图标"); carImageIcon=new JMenuItem("汽车图标"); animalImageIcon=new JMenuItem("动物图标"); animalImageIcon.addActionListener(this); carImageIcon.addActionListener(this); menuIcon.add(carImageIcon);menuIcon.add(animalImageIcon);bar.add(menuResult);bar.add(menuIcon);setJMenuBar(bar); oneGradeItem.addActionListener(this); twoGradeItem.addActionListener(this); threeGradeItem.addActionListener(this); oneGradeResult.addActionListener(this); twoGradeResult.addActionListener(this); threeGradeResult.addActionListener(this); if(!fileOneGrade.exists()){try { fileOneGrade.createNewFile();}catch(IOException exp){}}if(!fileTwoGrade.exists()){try { fileTwoGrade.createNewFile();}catch(IOException exp){}}if(!fileThreeGrade.exists()){try { fileThreeGrade.createNewFile();}catch(IOException exp){}}setBounds(100,100,400,360);setVisible(true);memoryArea=new MemoryTestArea(); imageName=new String[imageNumber];for(int i=0;i<imageName.length;i++){imageName[i]=new String("car"+i+".jpg");}m=5;n=6;gradeFile=fileOneGrade;memoryArea.initBlock(m,n,imageName,gradeFile); add(memoryArea,BorderLayout.CENTER); showDiolag=new ShowRecordDialog();validate();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }public void actionPerformed(ActionEvent event){if(event.getSource()==oneGradeItem){m=5;n=6;gradeFile=fileOneGrade;memoryArea.initBlock(m,n,imageName,gradeFile); }if(event.getSource()==twoGradeItem){m=6;n=7;gradeFile=fileTwoGrade;memoryArea.initBlock(m,n,imageName,gradeFile); }if(event.getSource()==threeGradeItem){m=7;n=8;gradeFile=fileThreeGrade;memoryArea.initBlock(m,n,imageName,gradeFile); }if(event.getSource()==carImageIcon){for(int i=0;i<imageName.length;i++){imageName[i]=new String("car"+i+".jpg");}memoryArea.setImageName(imageName);memoryArea.initBlock(m,n,imageName,gradeFile);if(event.getSource()==animalImageIcon){for(int i=0;i<imageName.length;i++){imageName[i]=new String("ani"+i+".jpg");}memoryArea.setImageName(imageName);memoryArea.initBlock(m,n,imageName,gradeFile); }if(event.getSource()==oneGradeResult){showDiolag.setGradeFile(fileOneGrade);showDiolag.showRecord();showDiolag.setVisible(true);}if(event.getSource()==twoGradeResult){showDiolag.setGradeFile(fileTwoGrade);showDiolag.showRecord();showDiolag.setVisible(true);}if(event.getSource()==threeGradeResult){showDiolag.setGradeFile(fileThreeGrade);showDiolag.showRecord();showDiolag.setVisible(true);}public static void main(String args[]){new MemoryGame();}}//MemoryTestArea类import javax.swing.*;import java.awt.event.*;import java.awt.*;import java.util.*;import java.io.*;public class MemoryTestArea extends JPanel implements ActionListener,Runnable { int row,col;File gradeFile;ArrayList<Block> allBlockList;String imageFileName[];LinkedList<ImageIcon> openIconList;LinkedList<Block> openBlockList;int success=0;Thread hintThead;JButton hintButton;int usedTime=0;JTextField showUsedTime,hintMessage;javax.swing.Timer timer;Record record;JPanel center,south;MemoryTestArea(){setLayout(new BorderLayout());allBlockList=new ArrayList<Block>();openIconList=new LinkedList<ImageIcon>();openBlockList=new LinkedList<Block>();hintThead=new Thread(this);hintMessage=new JTextField();hintMessage.setHorizontalAlignment(JTextField.CENTER);hintMessage.setEditable(false);hintMessage.setFont(new Font("宋体",Font.BOLD,18));center=new JPanel();south=new JPanel();hintButton=new JButton("提示");hintButton.addActionListener(this);showUsedTime=new JT extField(8);showUsedTime.setEditable(false);showUsedTime.setHorizontalAlignment(JTextField.CENTER);south.add(new JLabel("用时:")) ;south.add(showUsedTime);south.add(new JLabel("提示图标位置(导致用时增加):")) ;south.add(hintButton);add(south,BorderLayout.SOUTH);add(hintMessage,BorderLayout.NORTH);timer=new javax.swing.Timer(1000,this);record=new Record();}public void initBlock(int m,int n,String name[],File f){ row=m;col=n;gradeFile=f;center.removeAll();imageFileName=name;ImageIcon icon[]=new ImageIcon[imageFileName.length];for(int i=0;i<icon.length;i++){icon[i]=new ImageIcon(imageFileName[i]);}if(allBlockList.isEmpty()){for(int i=0;i<row*col;i++){allBlockList.add(new Block());}}else{allBlockList.clear();for(int i=0;i<row*col;i++){allBlockList.add(new Block());}}for(int i=0;i<allBlockList.size();i++){allBlockList.get(i).addActionListener(this);allBlockList.get(i).setOpenStateIcon(icon[i%row]); }Collections.shuffle(allBlockList);center.setLayout(new GridLayout(row,col));for(int i=0;i<allBlockList.size();i++){center.add(allBlockList.get(i));}add(center,BorderLayout.CENTER);if(timer.isRunning()){timer.stop();}hintMessage.setText("您需要用鼠标单击出"+col+"个同样图标的方块");usedTime=0;showUsedTime.setT ext(null);validate();}public void setImageName(String name[]){imageFileName=name;}public void actionPerformed(ActionEvent e){if(e.getSource() instanceof Block){if(!timer.isRunning())timer.start();Block block=(Block)e.getSource();ImageIcon openStateIcon=block.getOpenStateIcon();block.setIcon(openStateIcon);if(openIconList.size()==0) {openIconList.add(openStateIcon);openBlockList.add(block);success=1;}else{ImageIcon temp=openIconList.getLast();if(temp==openStateIcon&&!(openBlockList.contains(block))){ success=success+1;openIconList.add(openStateIcon);openBlockList.add(block);if(success==col){for(int i=0;i<allBlockList.size();i++){allBlockList.get(i).setEnabled(false);}for(int j=0;j<openBlockList.size();j++){Block b=openBlockList.get(j);b.setDisabledIcon(b.getOpenStateIcon());}timer.stop();record.setTime(usedTime);record.setGradeFile(gradeFile);record.setVisible(true);}}else if((temp!=openStateIcon)&&(!(openBlockList.contains(block)))){ openIconList.clear();openBlockList.clear();openIconList.add(openStateIcon);openBlockList.add(block);success=1;for(int i=0;i<allBlockList.size();i++){if(allBlockList.get(i)!=block)allBlockList.get(i).setIcon(null);}}}}if(e.getSource()==hintButton){if(!hintThead.isAlive())hintThead=new Thread(this);for(int i=0;i<allBlockList.size();i++)allBlockList.get(i).removeActionListener(this);usedTime=usedTime+10;try{hintThead.start();}catch(IllegalThreadStateException ex){}}if(e.getSource()==timer){usedTime++;showUsedTime.setText("您的用时:"+usedTime+"秒");}}public void run(){for(int i=0;i<allBlockList.size();i++)allBlockList.get(i).setIcon(allBlockList.get(i).getOpenStateIcon());try{ Thread.sleep(1200);}catch(InterruptedException exp){}for(int i=0;i<allBlockList.size();i++)allBlockList.get(i).addActionListener(this);for(int i=0;i<allBlockList.size();i++)if(!openBlockList.contains(allBlockList.get(i)))allBlockList.get(i).setIcon(null);}}//Block 类import javax.swing.*;import java.awt.event.*;public class Block extends JButton {ImageIcon openStateIcon;public ImageIcon getOpenStateIcon(){return openStateIcon;}public void setOpenStateIcon(ImageIcon icon){openStateIcon=icon;}}//Record类import java.io.*;import java.util.*;import javax.swing.*;import java.awt.event.*;import java.awt.*;public class Record extends JDialog implements ActionListener{ int time=0;JTextField yourName;JLabel label;JButton enter,cancel;File gradeFile=null;public Record(){setBounds(100,100,330,160);setResizable(false);setModal(true);setVisible(false);enter=new JButton("确定");cancel=new JButton("取消");yourName=new JT extField(8);yourName.setText("匿名");enter.addActionListener(this);cancel.addActionListener(this);setLayout(new GridLayout(2,1));label=new JLabel();add(label);JPanel p=new JPanel();p.add(yourName);p.add(enter);p.add(cancel);add(p);}public void setGradeFile(File f){gradeFile=f;setTitle("保存成绩到"+gradeFile.getName());label.setText("保存成绩到"+gradeFile.getName());validate();}public void setTime(int time){this.time=time;}public void actionPerformed(ActionEvent e){if(e.getSource()==enter){LinkedList<People> list=new LinkedList<People>();try{RandomAccessFile out=new RandomAccessFile(gradeFile,"rw");out.seek(out.length());out.writeUTF(yourName.getText());out.writeInt(time);out.close();}catch(Exception event) {}setVisible(false);}if(e.getSource()==cancel){setVisible(false);}}}//ShowRecordDialog 类import java.io.*;import java.util.*;import javax.swing.*;import java.awt.event.*;import java.awt.*;public class ShowRecordDialog extends JDialog implements ActionListener{ File gradeFile;JButton clear;JTextArea showArea=null;TreeSet<People> treeSet;public ShowRecordDialog(){treeSet=new TreeSet<People>();showArea=new JTextArea(6,4);showArea.setFont(new Font("楷体",Font.BOLD,20));clear=new JButton("清空排行榜");clear.addActionListener(this);add(new JScrollPane(showArea),BorderLayout.CENTER);add(clear,BorderLayout.SOUTH);setBounds(100,100,320,185);setModal(true);addWindowListener(new WindowAdapter(){public void windwoClosing(WindowEvent e){setVisible(false);}});}public void setGradeFile(File f){gradeFile=f;setTitle(f.getName());}public void showRecord(){showArea.setText(null);treeSet.clear();try{RandomAccessFile in=new RandomAccessFile(gradeFile,"rw");long fileLength=in.length();long readPosition=0;while(readPosition<fileLength){String name=in.readUTF();int time=in.readInt();readPosition=in.getFilePointer();People people=new People(name,time);treeSet.add(people);}in.close();Iterator<People> iter=treeSet.iterator();while(iter.hasNext()){People p=iter.next();showArea.append("姓名:"+p.getName()+",成绩: "+p.getTime()+"秒");showArea.append("\n");}}catch(IOException exp){System.out.println(exp);}}public void actionPerformed(ActionEvent e){if(e.getSource()==clear){try{File f=gradeFile.getAbsoluteFile();gradeFile.delete();f.createNewFile();showArea.setText("排行榜被清空");}catch(Exception ee){}}}}//ShowRecord类import java.io.*;import java.util.*;import javax.swing.*;import java.awt.event.*;import java.awt.*;public class ShowRecord extends JDialog implements ActionListener {File gradeFile;JButton clear;JTextArea showArea=null;People people;TreeSet<People> treeSet;public ShowRecord(File f){treeSet=new TreeSet<People>();showArea=new JTextArea(6,4);clear=new JButton("清空排行榜");clear.addActionListener(this);add(new JScrollPane(showArea),BorderLayout.CENTER);add(clear,BorderLayout.SOUTH);setBounds(100,100,320,185);setModal(true);addWindowListener(new WindowAdapter(){public void windwoClosing(WindowEvent e){setVisible(false);}});}public void setGradeFile(File f){gradeFile=f;setTitle(f.getName());}public void showRecord(){try{RandomAccessFile in=new RandomAccessFile(gradeFile,"rw");String name=null;while((name=in.readUTF())!=null){int time=in.readInt();people =new People(name,time);treeSet.add(people);}Iterator<People> iter=treeSet.iterator();while(iter.hasNext()){People p=iter.next();showArea.append("姓名:"+p.getName()+"成绩: "+p.getTime());showArea.append("\n");}}catch(IOException exp){}}public void actionPerformed(ActionEvent e){if(e.getSource()==clear){try{File f=gradeFile.getAbsoluteFile();gradeFile.delete();f.createNewFile();showArea.setText("排行榜被清空");}catch(Exception ee){}}}}//People类import java.io.*;public class People implements Serializable,Comparable{ String name=null;int time=0;public People(String name,int t){=name;time=t;}public int getTime(){return time;}public String getName(){return name;}public int compareTo(Object b){People p=(People)b;if((this.time-p.time)==0)return 1;elsereturn (this.time-p.time);}}PS:以上各类的代码要放在不同的java格式的文档中。