JAVA课程设计——记忆测试系统
JAVA课程设计记忆测试系统附源程序

响应时间:系统处理用户请求所需的时 间
吞吐量:系统在单位时间内处理的请求 数量
资源利用率:系统对硬件资源的使用情 况
可靠性:系统在运行过程中出现故障的 概率
可扩展性:系统在增加用户数量或请求 数量时的表现
安全性:系统对恶意攻击的防护能力
提高系统性能: 优化算法,减 少内存占用, 提高响应速度
增强用户体验: 优化界面设计, 提高用户操作
交互设计:易于理解和操作,提高 用户体验
采用K-means算法进行数据聚类
利用神经网络进行特征提取和分类
添加标题
添加标题
使用决策树进行分类预测
添加标题
添加标题
采用遗传算法进行参数优化和模型 选择
数据库类型:MySQL
数据库表结构:用户表、题目表、答案 表、成绩表等
数据库操作:增删改查等基本操作
03
数据库:使用MySQL或Oracle等数据库存储数据
05
安全性:采用加密技术、身份验证和访问控制等技术 保证系统安全
02
后端:使用Java语言实现业务逻辑和数据处理
04
架构模式:采用MVC(Model-View-Controller) 模式进行开发,实现代码解耦和模块化开发
06
可扩展性:采用模块化设计,便于系统功能的扩展和 升级
源程序查看:用户可以查看源 程序,了解系统的实现原理
用户需求:记 忆测试系统
功能需求:用 性能需求:系
户注册、登录、 统响应速度快,
测试、查看结
稳定性高
果、修改密码
等
安全性需求: 用户数据加密 存储,防止数
据泄露
可用性需求: 界面友好,操 作简单,易于
上手
扩展性需求: 支持多种测试 类型,如单词、 句子、段落等
(完整版)基于Java的在线考试系统课程设计说明书(含源程序)毕业论文

操作系统课程设计设计并实现在线考试系统学院:信息科学与工程学院专业:软件工程一、前台界面设计1、用户注册、登录界面图用户注册界面用户注册界面如上图所示,下面是各项需填写内容的功能:用户名:标示用户在线身份,可以为真实姓名,也可为化名,不同用户可以具有相同的用户名。
邮箱:用于用户接受系统消息,如用户忘记密码时,可以将密码通过邮件发送给用户。
每个用户的邮箱地址必须是特有的,如果一个用户想要有两个登录账号,必须用两个不同的邮箱地址。
如果某个邮箱地址再次被用来注册,给出提示。
设置密码:用户登录所用密码。
确认密码:用户需再次输入密码,以确认上次输入内容。
如果两次输入密码不相同,给出提示。
性别:针对部分用户需求而设定。
如:老师在对学生进行测试时,便于核对学生信息。
图用户登录界面用户登录界面如上图所示,下面是各项需填写内容的功能:邮箱:用户注册时所填写的邮箱,用于标识用户身份。
密码:用户最近一次所设置的密码,用于验证用户身份。
记住密码:用于记录用户登录状态,若选中此项,下次用户登录时系统会自动启动到用户登录状态。
忘记密码:若用户忘记登录密码,可点击此链接,跳转到用户注册邮箱接收邮件,邮件中包含用户最近一次设置密码。
2、欢迎界面欢迎界面分两种形式:一种为未注册用户欢迎界面,另一种为已注册用户欢迎界面,效果图如下所示:图未注册用户欢迎界面页面内容介绍如下:窗口名称为“XXX在线测试系统”。
用户点击“注册”或“登录”按钮可弹出注册窗口或登录窗口,供用户注册或登录。
窗口中间部分内容为关于系统的介绍性文字。
用户点击“立即进入”按钮后进入“题目列表”窗口(“题目列表”窗口设计见后面内容)。
图已注册用户欢迎界面页面内容介绍如下:已注册用户欢迎界面与未注册用户欢迎界面基本相同,不同之处在于没有“注册”、“登录”按钮,而添加了用户菜单,菜单起初仅显示用户名,当鼠标指向时,显示二级菜单,分别为“账户管理”、“个人资料”、“退出登录”。
基于java的学生综合测评系统的设计与实现

基于java的学生综合测评系统的设计与实现设计和实现一个基于Java的学生综合测评系统涉及多个方面,包括数据库设计、用户界面设计、业务逻辑实现等。
以下是一个简要的设计和实现步骤:1. 需求分析:明确系统的功能需求,包括但不限于学生信息管理、课程管理、成绩管理、综合评价等。
2. 数据库设计:设计数据库表,包括学生信息表、课程表、成绩表等,确保表结构能够满足系统功能需求。
3. 后端开发:使用Java技术(如Spring框架)进行后端业务逻辑的开发,实现学生信息管理、课程管理、成绩管理等功能。
这可能包括:学生信息管理:CRUD 操作,包括学生基本信息、班级信息等。
课程管理:增删改查课程信息。
成绩管理:记录学生的各科成绩,支持查询和统计。
4. 前端开发:使用Java相关的前端框架(如Spring MVC、Thymeleaf等),设计用户友好的界面,实现用户对学生信息、课程、成绩等的操作。
5. 用户认证和权限管理:确保系统安全,通过用户认证和权限管理来限制用户的访问和操作权限。
6. 综合测评模块:设计并实现综合测评模块,该模块可以根据一定的规则和权重对学生的各方面表现进行评估,生成综合评价结果。
7. 测试:进行系统测试,确保系统各功能正常运行,具备稳定性和安全性。
8. 部署:将系统部署到服务器上,确保用户能够通过浏览器等客户端访问系统。
9. 持续优化:根据用户反馈和实际使用情况,进行系统的持续优化和改进。
10. 文档撰写:撰写用户手册和开发文档,方便用户和其他开发人员了解系统的使用和开发细节。
这是一个简要的指南,实际的设计和实现过程会因项目的具体需求而有所不同。
在开发过程中,也可以考虑使用一些开源的Java框架和工具,以提高开发效率和系统的可维护性。
java学生考试系统课程设计

java学生考试系统课程设计一、课程目标知识目标:1. 理解Java语言面向对象编程的基本概念,掌握类的定义、属性和方法的创建与使用;2. 学会使用Java集合框架存储和管理数据,掌握泛型的应用;3. 掌握Java异常处理机制,提高程序的健壮性;4. 了解Java事件驱动编程,能够编写简单的图形用户界面(GUI)程序;5. 掌握文件输入/输出操作,实现数据的持久化存储。
技能目标:1. 能够独立设计和编写Java学生考试系统,实现题目展示、答案输入、成绩计算等功能;2. 学会运用Java集合框架优化数据存储结构,提高程序性能;3. 能够运用异常处理机制解决程序运行中可能出现的错误;4. 掌握使用Java GUI库(如Swing)设计友好、易用的用户界面;5. 学会使用文件操作实现数据的保存和读取。
情感态度价值观目标:1. 培养学生的编程兴趣和动手能力,提高解决问题的信心;2. 培养学生良好的编程习惯,注重代码规范和可读性;3. 培养学生团队协作精神,学会与他人共同分析和解决问题;4. 增强学生对信息技术的认识,提高信息安全意识。
本课程针对高年级学生,在教学过程中,将充分考虑学生的认知特点和实际需求,结合教材内容,设计具有挑战性和实用性的教学活动。
通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高编程能力和实践能力。
同时,注重培养学生的情感态度价值观,使其成为具备良好职业素养的计算机人才。
二、教学内容1. Java面向对象编程基础:类的定义,属性、方法、构造函数的使用,封装、继承和多态的概念及其应用。
教材章节:第1章 面向对象编程基础2. Java集合框架:List、Set、Map等集合的使用,泛型的概念及其在集合中的应用。
教材章节:第2章 集合框架3. Java异常处理:异常的分类,try-catch-finally结构,自定义异常。
教材章节:第3章 异常处理4. Java事件驱动编程与图形用户界面(GUI):事件监听器,Swing组件的应用,简单GUI界面设计。
记忆系统1

面向对象课程设计题目记忆测试软件学院专业班级学号姓名指导老师编写日期目录记忆测试软件 (3)第1章选题背景 (3)第2章需求分析 (3)2.1记忆测试系统设计内容、要求: (3)第3章概要设计 (4)3.1开发工具 (4)3.2运行环境 (4)3.3功能模块设计 (4)3.4工作原理 (5)3.4.1进入游戏 (5)3.4.2初级游戏 (5)3.4.3中级和高级 (5)3.4.4初级记忆榜 (5)3.4.5中级记忆榜和高级记忆榜 (5)第4章详细设计 (6)4.1类设计 (6)第5章系统效果测试 (7)第6章系统开发心得及参考文献 (9)参考文献 (11)附录:(源程序) (12)记忆测试软件摘要本次课程设计在JDK环境下应用Java编写一个记忆测试软件。
记忆测试软件主要通过逐级增加游戏方块来增加游戏难度,同时对测试者记忆能力的要求也越来越高。
本测试系统分为初级、中级和高级。
游戏中,测试者只有找到相应等级个数的相同方块才能过关,即连续选中相应个数的相同方块。
记忆测试系统利用容器和各个组件之间的嵌套完成系统的主要框架的设计,为各个容器添加相应的组件,并结合对各组件的事件的监听以及事件的处理,实现本系统的功能要求。
第1章选题背景本次课程设计的目的主要是为了将教学与实践相结合,使学生能够灵活的将课堂上的理论知识转化为实践动手能力。
此次课程设计的题目是设计一款记忆测试软件,用面向对象的编程语言Java编写设计。
记忆测试软件是通过回忆法测试记忆。
游戏分为初级、中级和高级,并通过记忆榜记录测试者的成绩。
小组成员及分工合作安排如下:小组成员:***、***、***合作部分:查阅资料,进行课程设计的需求分析,概要设计,软件的调试和测试,对此次课程设计的总结。
分工部分:***负责Memory(主类),ShowRecord(显示成绩类),Record(记录成绩类)编写。
***负责SetIcon(随机排列图标类),MemoryTestPane(测试版类)编写。
JAVA课程设计——记忆测试系统讲课稿

记忆测试系统所用到的一些重要的类以及之间的组合关系如图3.1所示。
图3.1类之间的组合关系
图3.1类之间的关系
3.2
图3.2系统流程图
4
4.1
系统主体部分是在底层容器上插入面板,并在面板上安排按钮阵列,当用户点击按钮,经过随机安排在按钮后面的图片显示出来。通过对比图片下标,如果所显示图片和前一个显示图片一样,则没变化;如果,不一样,则把以前所有显示的图片重新用按钮遮盖。当用户点开指定数量的图片时,就进入记录数据部分。在测试过程中,显示用户测试时间。记录数据部分。是把用户输入的姓名和系统记录用户测试时间写入指定文档中保存。查阅数据部分,是把指定文档的数据显示给用户,包括姓名和测试时间。用户此时可以清除文档中数据,即用户所选级别传参数计算后进行安排。随机分布图片需要随机函数随机产生指定数量的图片下标,并传给主窗口的按对应按钮通过对比所显示图片的下标,统计显示的相同图片的数量。用户测试开始后,记录测试时间,并保存。
4.3
a).成员变量
主要成员变量(属性):
成员变量描述
变量类型
名称
3.连续单击出该级别所要求的若干个图标形同的方块后,将显示保存成绩对话框,成绩按所用时间排序。用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。
2.2
本游戏是通过由用户点击图片显示出图片后,如果是相同的,便保持图形,如果用户点开的是不同的图片则先前点击的图片被清空。当用户同时点击出规定数目的图片后,弹出保存成绩框。
(2)东西全
夏日的街头,吊带装、露背装、一步裙、迷你裙五彩缤纷、争妍斗艳。爱美的女孩们不仅在服饰搭配上费尽心机,饰品的选择也十分讲究。可惜在商店里买的项链、手链、手机挂坠等往往样式平淡无奇,还容易出现雷同现象。
Java课程设计案例

《Java面向对象程序设计》课程设计案例 1、学生成绩管理系统 要求:利用Java编程实现一个学生成绩管理系统(单机版),采用Access数据库。
自行设计数据库结构,并实现以下基本功能:1)学生基本信息录入;2)学生成绩的录入; 3)学生成绩的修改;4)学生成绩的查询;5)学生成绩的统计;6)学生成绩的打印 2、货物销售管理系统 要求:利用Java编程实现一个货物销售管理系统(单机版),采用Access数据库。
自行设计数据库结构,并实现以下基本功能:1)货物信息录入;2)销售人员的录入;3)货物销售登录;4)货物查询; 5)货物销售查询;6)货物销售统计。
3、图书借阅管理系统 要求:编程实现图书的借阅管理功能(单机版),采用Access数据库。
主要提供以下功能:1) 图书的录入;2)人员信息的录入;3)图书的查询;4)借阅图书的录入;5)人员借阅信息的显示。
4、个人通讯录 要求:编程实现个人通讯录管理(用文件存储),个人信息记录的组成自行设定。
主要提供如下功能:1) 增加记录;2)删除记录;3)显示所有记录;4)查询记录;5)文件备份。
5、日历记事本 要求:利用Java设计日历记事本,系统界面的左侧是日历,该日历可以按年份前后翻动,在某年内按月可以前后翻动;系统界面右侧显示当日记事;使用鼠标左键单击选定的日期。
在系统界面的右侧设计功能按钮,完成记事的保存与删除。
6、风景日历制作 要求:利用Java设计风景日历制作系统,系统界面的左侧是日历,该日历可以按年份前后翻动,在某年内按月可以前后 翻动;使用鼠标左键单击选定的日期,系统界面的右侧显示风景图片。
在系统界面的右侧设计功能按钮使得用户可以自选其他风景图片。
7、MP3音频播放器 要求:利用Java设计Applet应用程序,实现MP3的播放控制,包括添加歌曲(单曲添加和浏览文件夹添加)、删除歌曲(单曲删除、多曲删除)、播放列表保存与导入、播放控制等。
java语言考试系统的设计与实现总结

java语言考试系统的设计与实现总结Java语言考试系统的设计与实现总结一、引言随着信息技术的快速发展,在线考试系统已成为教育领域中的重要工具。
其中,Java语言考试系统因其通用性和稳定性,得到了广泛的应用。
本文将对该系统的设计与实现进行总结。
二、系统设计1. 功能需求分析:系统需要具备试题管理、考生管理、在线考试、自动评分等功能。
2. 架构设计:采用B/S架构,前端使用HTML、CSS、JavaScript构建,后端使用Java语言开发,数据库采用MySQL。
3. 模块设计:系统分为用户管理、试题管理、考试管理、成绩查询等模块。
三、系统实现1. 数据库设计:根据需求分析,设计合理的数据库表结构,包括用户表、试题表、考试记录表等。
2. 用户管理模块:实现用户的注册、登录、信息修改等功能。
3. 试题管理模块:实现试题的添加、修改、删除等功能,支持多种题型。
4. 考试管理模块:实现考试的创建、开始、结束等功能,支持实时监控考试状态。
5. 自动评分模块:根据标准答案,自动对考生答案进行评分。
四、系统测试与优化1. 单元测试:对每个模块进行单元测试,确保功能正常。
2. 集成测试:对所有模块进行集成测试,确保模块之间的协调性。
3. 性能优化:对系统进行压力测试,并进行相应的性能优化。
4. 安全优化:加强系统的安全性,防止数据泄露和非法入侵。
五、总结Java语言考试系统的设计与实现是一项复杂的工程,需要综合考虑功能需求、架构设计、模块划分、数据库设计等多个方面。
在实现过程中,需要注重系统的稳定性、可扩展性和安全性。
同时,不断进行测试与优化,提高系统的性能和用户体验。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java 程序设计课程设计报告( 2011 -- 2012 年度第 1 学期)记忆测试系统专业 计算机科学与技术(网络技术)学生姓名 班级 学号指导教师完成日期2012年1月8 日目录目录目录 (2)1概述 (1)1.1 课程设计目的 (1)1.2 课程设计内容 (1)2需求分析 (1)2.1 设计目标 (1)2.2 主体功能 (1)2.3 开发环境 (2)3概要设计 (2)3.1 系统的功能模块划分 (2)3.2 系统流程图 (2)4详细设计 (4)5测试 (4)5.1 测试方案 (4)5.2 测试结果 (7)6小结 (9)参考文献 (10)附录 (11)附录1源程序清单 (11)Java程序设计课程设计报告记忆测试系统1 概述1.1 课程设计目的1)巩固和提高java编程技术。
2)培养掌握成学设计的基本思路和方法。
3)加强研发、调试程序的能力。
4)增强分析、解决问题的能力。
5)提高科技论文写作能力。
1.2 课程设计内容记忆测试系统是通过回忆法测试记忆能力,测试手段分为初级,中级和高级三个级别。
记忆测试系统设计要求如下:(1)单击“记忆测试”菜单可以选择初级、中级或高级三个级别。
(2)单击“记忆测试”菜单还可以查看初级记忆榜、中级记忆榜或高级记忆榜,通过记忆榜存储每个级别的成绩。
(3)选择级别后,将出现相应级别的测试区。
测试区由m*n个方块组成,程序通过设置m和n的值来确定相应的测试级别,例如,对于初级级别,m=5,n=6。
每个方块上都有一个图标,但该图标默认不可见。
用鼠标单击测试区中的任何一个方块,则计时器开始启动动,同时该方块上的图标将显示出来。
(4)m*n个方块组成的测试区中有m个图标,每个图标重复出现n次,并且随机分布在测试区中的m*n各方块上。
用户必须用鼠标连续单击出n个图表相同的方块,也就是说,如果用户已经用鼠标连续单击出p(p<n)个图标相同的方块,当再单击另一个方块时,如果该方块的图标和上一个的相同,那么该方块的图标和前p 次单击出的方块的图标仍然可见;否则前p次单击出来的方块的图标全都变得不可见,只有当前单击的方块的图标可现。
(5)测试区能显示用户的同时,并根据级别的不同,提示用户必须用鼠标连续单击出多个图标相同的方块。
(6)测试区有提示图标所在位置的功能。
用户单击测试区中的“提示”按钮后,测试区将持续1.2秒为用户显示全部方块上的图标。
用户没单击一次“提示”按钮,用户用时将增加10秒。
(7)连续单击出级别所要求的若干个相同的方块后,将弹出保存成绩对话框,用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。
2 需求分析2.1 设计目标1.单击“记忆测试”菜单可以选择初级、中级、高级三个级别,通过记忆榜可以查看初级记忆榜、中级记忆榜或高级记忆榜。
2.选择级别后,将显示相应级别的测试区域。
测试区域由若干个方块组成,每记忆测试系统个方块上都有一个图标,但该图标默认情况下不可见。
用鼠标单击测试区中的任何一个方块,则计时器开始启动,同时该方块上的图标将显示出来。
对于初级级别,用户必须用鼠标连续单击6个图标相同的方块,也就是说,如果用户已经用鼠标连续单击出n(n<6)个图标相同的方块,单击另一个方块时,如果该方块的图标和上一个相同,那么该方块的图标和前n次单击出的方块的图标仍然可见,否则,前n次单击出的方块的图标都变为不可见。
3.连续单击出该级别所要求的若干个图标形同的方块后,将显示保存成绩对话框,成绩按所用时间排序。
用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。
2.2 主体功能本游戏是通过由用户点击图片显示出图片后,如果是相同的,便保持图形,如果用户点开的是不同的图片则先前点击的图片被清空。
当用户同时点击出规定数目的图片后,弹出保存成绩框。
2.3 开发环境Win7;MyEclipse 8.5软件3 概要设计3.1系统的功能模块划分记忆测试系统共包含8个java源文件和若干个图像文件(用户可以增加)。
类之间的主要关系如下图所示。
图3.1 类之间的关系3.2 系统流程图Java程序设计课程设计报告图3.2 系统流程图记忆测试系统4 详细设计4.1工作原理系统主体部分是在底层容器上插入面板,并在面板上安排按钮阵列,当用户点击按钮,经过随机安排在按钮后面的图片显示出来。
通过对比图片下标,如果所显示图片和前一个显示图片一样,则没变化;如果,不一样,则把以前所有显示的图片重新用按钮遮盖。
当用户点开指定数量的图片时,就进入记录数据部分。
在测试过程中,显示用户测试时间。
记录数据部分。
是把用户输入的姓名和系统记录用户测试时间写入指定文档中保存。
查阅数据部分,是把指定文档的数据显示给用户,包括姓名和测试时间。
用户此时可以清除文档中数据,即可删除排行榜。
4.2 算法思路主窗口安排指定数量按钮,是通过用户所选级别传参数计算后进行安排。
随机分布图片需要随机函数随机产生指定数量的图片下标,并传给主窗口的按对应按钮通过对比所显示图片的下标,统计显示的相同图片的数量。
用户测试开始后,记录测试时间,并保存。
4.3主类Memorya).成员变量b).4.4类Blocka).成员变量主要成员变量(属性):4.5类MemoryTestPanea).成员变量b).方法记忆测试系统4.6类ShowRecorda). 成员变量主要成员变量(属性):4.7类Recorda).成员变量b).方法4.8类RandomSetIcona).成员变量(无)b).方法主要方法:4.9类Peoplea)成员变量5测试5.1 测试方案将7个java文件保存到一个文件夹中,例如,D:\jiyiceshi。
将7个文件分别编译成相应的字节码(.class)文件。
然后,用java解释器运行主类:C:\jiyiceshi\java Memory 程序运行后选择各菜单,分别进行功能测试。
5.2 测试结果(1)运行效果图5.2.1 运行效果记忆测试系统(2)当选择“记忆力测试”后,自己可以设置游戏的难度,效果如图图5.2.2 初级效果图图5.2.3 中级效果图图5.2.4 高级效果图(3)当游戏结束后,查看“初级排行榜”,将显示初级的成绩记录效果图5.2.5 初级成绩记录6 小结Java程序设计是本专业的一门重要的面向对象的程序语言。
在刚开始学习时,一直担心自己、也没把握自己能否学好,也曾担心过不了考试这一关。
经过近大半学期老师您不厌其烦的教导,引导我们去学习。
我对Java语言有了一定的了解,但那绝对是远远不够的,还是要不断地把它应用到实践中去,融会贯通。
经过为期一周的Java课程设计,亲身感受体验敲、改写Java程序代码的乐趣,我对Java编程有了较为深入的了解,不仅巩固了以前在课本上学到的知识,还学会了很多其他东西,比如Java程序不同调试平台的使用、错误的调试及数据库路径的配置等等。
一直以来,或许有不少人跟我一样,总是觉得编程是很枯燥乏味的,但是这次的体验下来,其实以前我们的想法错误的。
感觉到看着敲击的代码变为一个个可以自娱自乐小游戏程序,其实是一件非常有趣的事情。
并且在添加功能的过程中,不仅可以启发自己的想象力,还可以培养灵活运用知识的能力。
在此过程中,我们认识到编程的重要步骤是分析,分析问题的本身和现实要求。
分析过程中采用根据设置框架选择功能使我的思路特别清晰。
拿到一个题目不能只局限在一种思想一种方法上,要尽量的多尝试其他的做法,然后比较,集各家之所长,拿出最优秀的程序来。
其次也是最重要的就是我们应当打开我们的视野,我们应当从我们的生活的这个世界中去领悟解决问题的思想和方法通过这次课程设计,我收获的不仅仅是课程上的知识得到实际应用,还有编程的基本习惯和开发系统时应注意的流程。
作为一个程序编程人员,要保持清醒的头脑,以现实为依据,让自己的每一行代码都能实现自己的意义。
参考文献[1]耿祥义,张跃平. Java2实用教程(第三版)[M] . 北京:清华大学出版社, 2006[2]耿祥义. Java课程设计(第三版)[M] . 北京:清华大学出版社, 2004[3]张跃平.Java2实用教程实验指导与习题解答(第三版)[M]. 北京:清华大学出版社, 2004……附录附录1 源程序清单Memory.javaimport javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.LinkedList;public class Memory extends JFrame implements ActionListener{JMenuBar bar;JMenu fileMenu;JMenuItem 初级,中级,高级,初级排行榜,中级排行榜,高级排行榜; Block block[];ImageIcon icon[];MemoryTestPane 记忆测试板=null;File file初级=new File("初级记忆排行榜.txt"),file中级=new File("中级记忆排行榜.txt"),file高级=new File("高级记忆排行榜.txt");LinkedList 成绩表=null;ShowRecord 显示成绩表对话框=null;int m=5,n=6;int 图标个数=0;Container con=null;JTextField 提示条=null;File gradeFile=null;public Memory(){block=new Block[m*n];图标个数=m;icon=new ImageIcon[图标个数];for(int i=0;i<icon.length;i++){icon[i]=new ImageIcon("a"+i+".gif");}for(int i=0;i<block.length;i++){block[i]=new Block();block[i].设置关闭时的图标(new ImageIcon("关闭.gif"));}bar=new JMenuBar();fileMenu=new JMenu("记忆力测试");初级=new JMenuItem("初级");中级=new JMenuItem("中级");高级=new JMenuItem("高级");fileMenu.setMnemonic('G');初级.setMnemonic('B');中级.setMnemonic('I');高级.setMnemonic('E');高级排行榜=new JMenuItem("高级排行榜");中级排行榜=new JMenuItem("中级排行榜");初级排行榜=new JMenuItem("初级排行榜");初级.setMnemonic('T');fileMenu.add(初级);fileMenu.add(中级);fileMenu.add(高级);fileMenu.add(初级排行榜);fileMenu.add(中级排行榜);fileMenu.add(高级排行榜);bar.add(fileMenu);setJMenuBar(bar);初级.addActionListener(this);中级.addActionListener(this);高级.addActionListener(this);初级排行榜.addActionListener(this);中级排行榜.addActionListener(this);高级排行榜.addActionListener(this);成绩表=new LinkedList();if(!file初级.exists()){try{FileOutputStream out=new FileOutputStream("初级记忆排行榜.txt");ObjectOutputStream object_out=new ObjectOutputStream(out);object_out.writeObject(成绩表);object_out.close();out.close();}catch(IOException e){}}if(!file中级.exists()){try{FileOutputStream out=new FileOutputStream("中级记忆排行榜.txt");ObjectOutputStream object_out=new ObjectOutputStream(out);object_out.writeObject(成绩表);object_out.close();out.close();}catch(IOException e){}}if(!file高级.exists()){try{FileOutputStream out=new FileOutputStream("高级记忆排行榜.txt");ObjectOutputStream object_out=new ObjectOutputStream(out);object_out.writeObject(成绩表);object_out.close();out.close();}catch(IOException e){}}gradeFile=file初级;setBounds(100,100,300,260);setVisible(true);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});con=getContentPane();记忆测试板=new MemoryTestPane(block,icon,m,n,gradeFile);提示条=new JTextField("初级:您需要连续找出"+6+"个相同图标的方块");提示条.setEditable(false);提示条.setForeground(Color.red);con.add(记忆测试板,BorderLayout.CENTER);con.add(提示条,BorderLayout.SOUTH);con.validate();this.validate();}public void 给出级别测试(int 宽,int 高,File f){m=宽;n=高;图标个数=m;gradeFile=f;block=new Block[m*n];icon=new ImageIcon[图标个数];for(int i=0;i<icon.length;i++){icon[i]=new ImageIcon("a"+i+".gif");}for(int i=0;i<block.length;i++){block[i]=new Block();block[i].设置关闭时的图标(new ImageIcon("关闭.gif"));}记忆测试板=new MemoryTestPane(block,icon,m,n,gradeFile);con.removeAll();con.add(记忆测试板,BorderLayout.CENTER);con.add(提示条,BorderLayout.SOUTH);con.validate();this.validate();}public void actionPerformed(ActionEvent event){if(event.getSource()==初级){给出级别测试(5,6,file初级);setBounds(100,100,300,260);this.validate();提示条.setText("初级:您需要连续找出"+6+"个相同图标的方块");}if(event.getSource()==中级){给出级别测试(6,7,file中级);setBounds(100,100,340,280);this.validate();提示条.setText("中级:您需要连续找出"+7+"个相同图标的方块");}if(event.getSource()==高级){给出级别测试(7,8,file高级);setBounds(100,100,360,300);this.validate();提示条.setText("高级:您需要连续找出"+8+"个相同图标的方块");}if(event.getSource()==高级排行榜){显示成绩表对话框=new ShowRecord(this,file高级);显示成绩表对话框.setVisible(true);}if(event.getSource()==中级排行榜){显示成绩表对话框=new ShowRecord(this,file中级);显示成绩表对话框.setVisible(true);}if(event.getSource()==初级排行榜){显示成绩表对话框=new ShowRecord(this,file初级);显示成绩表对话框.setVisible(true);}}public static void main(String args[]){new Memory();}}Block.javaimport javax.swing.*;import java.awt.event.*;public class Block extends JButton implements ActionListener{ImageIcon 翻开时的图标=null,关闭时的图标=null;public Block(){addActionListener(this);}public ImageIcon 获取翻开时的图标(){return 翻开时的图标;}public ImageIcon 获取关闭时的图标(){return 关闭时的图标;}public void 设置翻开时的图标(ImageIcon icon){翻开时的图标=icon;}public void 设置关闭时的图标(ImageIcon icon){关闭时的图标=icon;}public void 设置图标(ImageIcon icon){setIcon(icon);}public void actionPerformed(ActionEvent e){this.setIcon(翻开时的图标);}}MemoryTestPane.javaimport javax.swing.*;import java.awt.event.*;import java.awt.*;import java.util.LinkedList;import java.io.*;public class MemoryTestPane extends JPanel implements ActionListener{RandomSetIcon 排列图标=null;Block block[];ImageIcon icon[];LinkedList listIocn=null,listBlock=null;int 行数=0,列数=0;int success=0;int time=0;javax.swing.Timer 计时器=null;JTextField 显示时间=null;File gradeFile=null;boolean 计时器是否启动=false;public MemoryTestPane(Block[] block,ImageIcon[] icon,int m,int n,File f) {排列图标=new RandomSetIcon();this.block=block;this.icon=icon;行数=m;列数=n;gradeFile=f;listIocn=new LinkedList();listBlock=new LinkedList();setLayout(new BorderLayout());JPanel center=new JPanel();center.setLayout(new GridLayout(行数,列数));for(int i=0;i<block.length;i++){center.add(block[i]);block[i].addActionListener(this);}JPanel south=new JPanel();显示时间=new JTextField(12);显示时间.setEditable(false);显示时间.setForeground(Color.red);south.add(显示时间);add(center,BorderLayout.CENTER);add(south,BorderLayout.SOUTH);排列图标.随机设置图标(block,icon);计时器=new Timer(1000,this);计时器是否启动=false;}public void actionPerformed(ActionEvent e){if(e.getSource() instanceof Block){Block 方块=(Block)e.getSource();ImageIcon 翻开时的图标=方块.获取翻开时的图标();方块.设置图标(翻开时的图标);if(listIocn.size()==0) {listIocn.add(翻开时的图标);listBlock.add(方块);success=1; }else{ImageIcon temp=(ImageIcon)listIocn.getLast(); if(temp==翻开时的图标&&!(listBlock.contains(方块))) {success=success+1; listIocn.add(翻开时的图标); listBlock.add(方块);if(success==列数){for(int i=0;i<block.length;i++) {block[i].setEnabled(false);}for(int j=0;j<listBlock.size();j++){Block b=(Block)listBlock.get(j);b.setDisabledIcon(b.获取翻开时的图标());}计时器.stop();Record record=new Record(gradeFile);record.setTime(time);record.setVisible(true);}}else if((temp!=翻开时的图标)&&(!(listBlock.contains(方块)))) {listIocn.clear();listBlock.clear();listIocn.add(翻开时的图标);listBlock.add(方块);success=1;for(int i=0;i<block.length;i++){if(方块!=block[i]){block[i].设置图标(block[i].获取关闭时的图标()); }}}}if(计时器是否启动==false){time=0;计时器.start();计时器是否启动=true;}}if(e.getSource()==计时器){time=time+1;显示时间.setText("您的用时:"+time+"秒");}}}ShowRecord.javaimport java.io.*;import java.util.*;import javax.swing.*;import java.awt.event.*;import java.awt.*;public class ShowRecord extends JDialog implements ActionListener{File gradeFile=null;JButton 确定,清除;JTextArea show=null;public ShowRecord(JFrame frame,File f){super(frame,"记忆测试排行榜:"+f.toString());gradeFile=f;show=new JTextArea(6,4);确定=new JButton("显示排行榜");确定.addActionListener(this);清除=new JButton("清空排行榜");清除.addActionListener(this);Container con=getContentPane();con.add(new JScrollPane(show),BorderLayout.CENTER);JPanel p=new JPanel();p.add(确定);p.add(清除);con.add(p,BorderLayout.SOUTH);setBounds(100,100,320,185);setVisible(false);setModal(true);addWindowListener(new WindowAdapter(){public void windwoClosing(WindowEvent e){setVisible(false);dispose();}});}public void actionPerformed(ActionEvent e){if(e.getSource()==确定){try{show.setText(null);FileInputStream in=new FileInputStream(gradeFile);ObjectInputStream object_in=new ObjectInputStream(in);LinkedList 成绩=(LinkedList)object_in.readObject();object_in.close();sort(成绩);for(int i=0;i<成绩.size();i++){People people=(People)成绩.get(i);show.append("\n"+people.getName()+"成绩:"+people.getTime());}}catch(Exception ee){}}if(e.getSource()==清除){try{FileInputStream in=new FileInputStream(gradeFile);ObjectInputStream object_in=new ObjectInputStream(in);LinkedList 成绩=(LinkedList)object_in.readObject();object_in.close();成绩.clear();FileOutputStream out=new FileOutputStream(gradeFile);ObjectOutputStream object_out=new ObjectOutputStream(out);object_out.writeObject(成绩);out.close();object_out.close();show.setText("排行榜被清空");}catch(Exception ee){}}}public void sort(LinkedList list){for(int i=0;i<list.size()-1;i++){for(int j=i+1;j<list.size();j++){if(((People)list.get(i)).getTime()>((People)list.get(j)).getTime()) {People temp=(People)list.get(j);list.set(j,(People)list.get(i));list.set(i,temp);}}}}}Record.javaimport java.io.*;import java.util.*;import javax.swing.*;import java.awt.event.*;import java.awt.*;public class Record extends JFrame implements ActionListener{int time=0;JTextField yourName,label;JButton 确定,取消;File gradeFile=null;public Record(File f){super("记录你的成绩到:"+f.toString());gradeFile=f;setBounds(100,100,330,160);setResizable(false);setVisible(false);确定=new JButton("确定");取消=new JButton("取消");yourName=new JTextField(8);yourName.setText("匿名");确定.addActionListener(this);取消.addActionListener(this);Container con=getContentPane();con.setLayout(new GridLayout(2,1));label=new JTextField("输入你的姓名,将成绩存放到排行榜:"+f.toString()); label.setEditable(false);con.add(label);JPanel p=new JPanel();p.add(yourName);p.add(确定);p.add(取消);con.add(p);addWindowListener(new WindowAdapter(){public void windwoClosing(WindowEvent e){setVisible(false);dispose();}});}public void setFile(File f){gradeFile=f;}public void setTime(int time){this.time=time;}public void actionPerformed(ActionEvent e){if(e.getSource()==确定)try{FileInputStream in=new FileInputStream(gradeFile);ObjectInputStream object_in=new ObjectInputStream(in);LinkedList list=(LinkedList)object_in.readObject();object_in.close();in.close();People people=new People(yourName.getText(),time);list.add(people);FileOutputStream out=new FileOutputStream(gradeFile);ObjectOutputStream object_out=new ObjectOutputStream(out); object_out.writeObject(list);out.close();object_out.close();}catch(Exception event){System.out.println(event);}setVisible(false);dispose();}if(e.getSource()==取消){setVisible(false);dispose();}}}RandomSetIcon.javaimport javax.swing.*;import java.util.Vector;class Point{int x;Point(int i){x=i;}public int getInt(){return x;}}public class RandomSetIcon{public RandomSetIcon(){public void 随机设置图标(Block[] block,ImageIcon icon[]) {Vector vector=new Vector();int n=icon.length;for(int i=0;i<block.length;i++){int x=i%n;Point p=new Point(x);vector.addElement(p);}for(int i=0;i<block.length;i++){int m=(int)(Math.random()*vector.size());Point p=(Point)vector.elementAt(m);int x=p.getInt();block[i].设置翻开时的图标(icon[x]);vector.remove(m);}}}People.javaimport java.awt.Point;public class People implements java.io.Serializable{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;}}。