JAVA课程设计——记忆测试系统(附源程序)
java课程设计
课程设计(论文)题目名称记事本程序课程名称java 程序设计课程设计学生姓名学号系、专业指导教师2010年1 月3 日摘要本次课程设计的题目是用JA V A语言编写记事本程序,要求是:用图形界面实现;含有简单的文字编辑功能,如:剪切、复制、粘贴、删除;还能实现保存、另存为、查找、替换等功能。
本程序主要用到了Java swing组件和事件监听器,还用到了文件的输入输出流。
记事本的界面参考了Windows中的记事本界面,并且根据课程设计要求做了适当的调整。
关键词:记事本程序;Java语言;swing组件目录1 问题描述 (3)2 需求分析 (3)3 概要设计 (3)3.1自定义类说明 (3)3.2 程序流程图 (7)4 详细设计 (7)4.1 jishiben类的实现 (7)4.2 GUI程序界面设计 (7)4.3 事件处理 (9)5 测试分析 (12)6 课程设计总结 (16)6.1设计体会 (16)6.2致谢 (16)参考文献 (17)附录(源程序清单) (18)1 问题描述设计一个具有GUI界面的记事本,含有简单的文字编辑功能,如:剪切、复制、粘贴、删除;还能实现保存、另存为、查找、替换等功能。
这次课程设计由卢炜、刘秀春、伍霜霜和我四个人合作完成。
卢炜负责概要设计,刘秀春负责4.1 jishiben类的实现和4.2 GUI程序界面设计,伍霜霜负责5测试分析。
由于4.3事件处理和撰写程序关系密切,这两项都由我负责。
并且根据伍霜霜的测试的结果重新调整程序。
2 需求分析本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:(1)、菜单中有“文件”、“编辑”、“帮助”三个主菜单;(2)、“文件”有“新建”、“打开”、“保存”、“另存为”、“退出”分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。
(3)、“编辑”中,有“剪切”、“复制”、“粘贴”、“删除”、“查找”、“替换”、“全选”七个子菜单:用于剪切文字,复制文字,粘贴文字,删除文字,查找文件中的指定的字符串,替换文件中的指定的字符串,选定整个文件。
《记忆测试系统》实验报告范例
(1)、选择两段不同的音频文件,初步考虑windows目录中的.\media\ringout.wav表示翻开错误;windows目录中的.\media\ringin.wav表示翻开正确。Copy这两个文件到项目文件夹中。
(2)、在上述两个程序段内插入教程中介绍代码,如下;
/*添加翻开正确声音效果*/
程序运行正确,要求声音效果实现,任务3完成。完成时间2010-9-2800:51
最终解决方案:
(1)、选择两段不同的音频文件,初步考虑windows目录中的.\media\ringout.wav表示翻开错误;windows目录中的.\media\ringin.wav表示翻开正确。Copy这两个文件到项目文件夹中。
代码中AudioClip、Applet下出现红线、提示出错,eclipse提出第一解决方案“import java.applet.AudioClip;”。
解决错误03:
按照eclipse提出第一解决方案“import java.applet.AudioClip;”执行。
处理结果:
代码中AudioClip下红线消失,此处提示出错信息消失。但代码Applet下红线仍在。
处理结果:
代码中URI下红线消失,此处提示出错信息消失。
出现错误02:
URL url = uri.toURL();
代码中URL下出现红线、提示出错,eclipse提出第一解决方案“import javax.print.DocFlavor.URL;”。
解决错误02:
按照eclipse提出第一解决方案“import javax.print.DocFlavor.URL;”执行。
处理结果:
代码中URI下红线消失,但代码“uri.toURL()”下出现红线,提示出错。
(完整版)基于Java的在线考试系统课程设计说明书(含源程序)毕业论文
操作系统课程设计设计并实现在线考试系统学院:信息科学与工程学院专业:软件工程一、前台界面设计1、用户注册、登录界面图用户注册界面用户注册界面如上图所示,下面是各项需填写内容的功能:用户名:标示用户在线身份,可以为真实姓名,也可为化名,不同用户可以具有相同的用户名。
邮箱:用于用户接受系统消息,如用户忘记密码时,可以将密码通过邮件发送给用户。
每个用户的邮箱地址必须是特有的,如果一个用户想要有两个登录账号,必须用两个不同的邮箱地址。
如果某个邮箱地址再次被用来注册,给出提示。
设置密码:用户登录所用密码。
确认密码:用户需再次输入密码,以确认上次输入内容。
如果两次输入密码不相同,给出提示。
性别:针对部分用户需求而设定。
如:老师在对学生进行测试时,便于核对学生信息。
图用户登录界面用户登录界面如上图所示,下面是各项需填写内容的功能:邮箱:用户注册时所填写的邮箱,用于标识用户身份。
密码:用户最近一次所设置的密码,用于验证用户身份。
记住密码:用于记录用户登录状态,若选中此项,下次用户登录时系统会自动启动到用户登录状态。
忘记密码:若用户忘记登录密码,可点击此链接,跳转到用户注册邮箱接收邮件,邮件中包含用户最近一次设置密码。
2、欢迎界面欢迎界面分两种形式:一种为未注册用户欢迎界面,另一种为已注册用户欢迎界面,效果图如下所示:图未注册用户欢迎界面页面内容介绍如下:窗口名称为“XXX在线测试系统”。
用户点击“注册”或“登录”按钮可弹出注册窗口或登录窗口,供用户注册或登录。
窗口中间部分内容为关于系统的介绍性文字。
用户点击“立即进入”按钮后进入“题目列表”窗口(“题目列表”窗口设计见后面内容)。
图已注册用户欢迎界面页面内容介绍如下:已注册用户欢迎界面与未注册用户欢迎界面基本相同,不同之处在于没有“注册”、“登录”按钮,而添加了用户菜单,菜单起初仅显示用户名,当鼠标指向时,显示二级菜单,分别为“账户管理”、“个人资料”、“退出登录”。
java在线考试系统课程设计
java在线考试系统课程设计一、课程目标知识目标:1. 理解Java语言面向对象编程的基本概念,掌握类的定义、属性和方法的创建与调用。
2. 学会使用Java集合框架处理数据,掌握异常处理机制。
3. 掌握Java在线考试系统的需求分析、功能模块划分和数据库设计。
技能目标:1. 能够运用所学知识独立设计并实现一个Java在线考试系统。
2. 通过实际操作,提高问题分析、系统设计和编程实现的能力。
3. 学会使用Java开发工具(如Eclipse)进行项目开发,培养良好的编程习惯。
情感态度价值观目标:1. 培养学生团队协作精神,提高沟通与协作能力。
2. 增强学生对Java编程的兴趣,激发主动学习的热情。
3. 培养学生面对问题时的积极态度,勇于克服困难,提高解决问题的能力。
课程性质:本课程为实践性较强的课程,旨在通过Java在线考试系统项目的设计与实现,让学生掌握Java编程的基本知识和技能,提高实际项目开发能力。
学生特点:学生已具备一定的Java基础,具有较强的学习能力和探究精神,但实际项目经验不足。
教学要求:注重理论与实践相结合,充分调动学生的主观能动性,培养其独立思考和解决问题的能力。
通过项目实践,使学生能够将所学知识应用于实际项目中,提高编程技能和团队协作能力。
同时,关注学生情感态度价值观的培养,激发学习兴趣,为其未来的学习和发展奠定基础。
二、教学内容1. Java面向对象编程基础:- 类与对象- 继承与多态- 抽象类与接口- 异常处理2. Java集合框架:- List、Set、Map接口及其实现类- 集合的遍历与操作3. 数据库设计:- 数据库基本概念- SQL语句编写- JDBC连接数据库4. Java在线考试系统设计与实现:- 系统需求分析- 功能模块划分- 数据库设计- 界面设计- 业务逻辑实现5. 项目实践:- 分组合作,明确分工- 项目进度安排与监控- 编码规范与代码审查- 系统测试与优化教学内容根据课程目标进行科学性和系统性的组织,涵盖Java面向对象编程、集合框架、数据库设计和项目实践等方面。
基于JAVA的综合测评系统设计与开发
基于JAVA的综合测评系统设计与开发综合测评系统是一种用于对学生进行综合评测的软件系统。
它能够帮助教师对学生的学习情况进行全面、客观的评估,并能够为学生提供个性化的学习建议。
在这篇文章中,我将介绍一个基于JAVA的综合测评系统的设计与开发过程。
首先,我们需要确定系统的需求和功能。
典型的综合测评系统包括学生管理、题库管理、考试管理、成绩管理等功能。
学生管理功能包括学生信息的录入和修改,题库管理功能包括题目的录入和分类,考试管理功能包括试卷的生成和考试的安排,成绩管理功能包括成绩的查询和统计。
接下来,我们将设计系统的数据库结构。
在这个系统中,我们需要设计学生表、题库表、试卷表和成绩表等相关表。
学生表存储学生的基本信息,题库表存储所有的题目信息,试卷表存储生成的试卷信息,成绩表存储学生的考试成绩信息。
这些表之间通过外键进行关联,以便于数据的管理和查询。
然后,我们将开始编写JAVA代码来实现系统的各项功能。
在学生管理功能中,我们可以编写代码来实现学生信息的录入和修改功能。
在题库管理功能中,我们可以编写代码来实现题目的录入和分类功能。
在考试管理功能中,我们可以编写代码来生成试卷和安排考试。
在成绩管理功能中,我们可以编写代码来实现成绩的查询和统计功能。
在开发过程中,我们需要注意系统的安全性和稳定性。
我们可以通过密码加密和权限管理等方式来保护学生和教师的信息安全,同时我们也需要考虑系统的容错性,确保系统在面对异常情况时能够正常运行。
最后,我们将进行系统的测试和优化。
在测试过程中,我们可以模拟不同的用户操作,确保系统的各项功能都能正常运行。
同时,我们也需要对系统进行性能优化,以提高系统的响应速度和稳定性。
总的来说,基于JAVA的综合测评系统设计与开发过程是一个复杂而又有挑战性的任务。
通过不断的努力和改进,我们可以开发出一个高效、安全、稳定的综合测评系统,为教师和学生提供更好的教学和学习体验。
基于java的学生综合测评系统的设计与实现
基于java的学生综合测评系统的设计与实现设计和实现一个基于Java的学生综合测评系统涉及多个方面,包括数据库设计、用户界面设计、业务逻辑实现等。
以下是一个简要的设计和实现步骤:1. 需求分析:明确系统的功能需求,包括但不限于学生信息管理、课程管理、成绩管理、综合评价等。
2. 数据库设计:设计数据库表,包括学生信息表、课程表、成绩表等,确保表结构能够满足系统功能需求。
3. 后端开发:使用Java技术(如Spring框架)进行后端业务逻辑的开发,实现学生信息管理、课程管理、成绩管理等功能。
这可能包括:学生信息管理:CRUD 操作,包括学生基本信息、班级信息等。
课程管理:增删改查课程信息。
成绩管理:记录学生的各科成绩,支持查询和统计。
4. 前端开发:使用Java相关的前端框架(如Spring MVC、Thymeleaf等),设计用户友好的界面,实现用户对学生信息、课程、成绩等的操作。
5. 用户认证和权限管理:确保系统安全,通过用户认证和权限管理来限制用户的访问和操作权限。
6. 综合测评模块:设计并实现综合测评模块,该模块可以根据一定的规则和权重对学生的各方面表现进行评估,生成综合评价结果。
7. 测试:进行系统测试,确保系统各功能正常运行,具备稳定性和安全性。
8. 部署:将系统部署到服务器上,确保用户能够通过浏览器等客户端访问系统。
9. 持续优化:根据用户反馈和实际使用情况,进行系统的持续优化和改进。
10. 文档撰写:撰写用户手册和开发文档,方便用户和其他开发人员了解系统的使用和开发细节。
这是一个简要的指南,实际的设计和实现过程会因项目的具体需求而有所不同。
在开发过程中,也可以考虑使用一些开源的Java框架和工具,以提高开发效率和系统的可维护性。
JAVA课程设计报告(小游戏)1
JAVA课程设计报告(小游戏)第一章总体设计1.1本系统的主要功能记忆测试游戏1.2系统包含的类及类之间的关系本系统共包括7个java源文件。
如图1-1所示。
图1-1 类之间的关系2.2 java源文件及其功能1.MemoryGame.java该文件负责创建记忆测试系统的主窗口,该类含有main方法,记忆测试系统从该类开始运行;2.MemoryTestArea.java该文件所包含的MemoryTestArea类是主类MemoryGame窗口的一个JPanel容器,所创建的对象成为测试区,这个测试区被添加到MemoryGame窗口的中心;3.Block.java该文件所包含的Block类是JButton的子类,负责为MemoryTestArea 类中的ArrayList数组表提供Block对象;4.Record.java该文件所包含的Record类是javax.swing包中JDialog对话框的子类,当用户成功单击出相应级别所要求的图标相同的方块后,Record创建的对象负责保存用户的名字和成绩到相应的级别文件中;5.ShowRecordDialog.java该文件所包含的ShowRecordDialog类是javax.swing包中JDialog 对话框的子类,当用户单击查看排行榜时,ShowRecordDialog创建的对象负责显示用户的成绩;6.People.java该文件所包含的People对象封装用户的名字和成绩,以便ShowRecordDialog 对象可以按成绩的高低排列用户。
第二章详细设计2.1主类MemoryGame.java(1)成员变量见表2-1表2-1 主要成员变量(属性)成员变量描述变量类型名称菜单条JMenuBar bar 字符串数组Sring imagename 测试区对象MemoryArea memoryarea 菜单JMenu menuGrade(2)方法见表2-2表2-2 主要方法成员变量描述功能备注MemoryGame() 完成窗口初始化构造函数actionPerformed(实现接口中的方法ActionEvent)Main(String[]) 软件运行的入口(3)源代码见文件×××.java2.2类×××××(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称测试区的行列数int Row,col用户的用时int usedtime 提供存储成绩的界面Record record(2)方法见表2-4表2-4 主要方法方法名功能备注MemoryTestArea() 创建memoryGame对象构造函数run() 显示图标1200毫秒2.3类Block(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称openStateIcon是方块上的图标ImageIcon openStateIcon (2)方法见表2-4表2-4 主要方法方法名功能备注setOpenStateIcon( ImageIcon)Block 对象调用setOpenStateIcon(ImageIcon)方法可也设置它上面的图标getOpenStateIcon()Block 对象调用getOpenStateIcon()方法可以获得它上面的图标2.4类ShowRecordDialog(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称gradeFile是对话框要读取的文件,该文件存储读取的成绩File gradeFile Clear是注册ActionEvent JButton clear事件的按钮showArea文本区显示对话从gradeFile文本中读出的成绩JTextArea showArea(2)方法见表2-4表2-4 主要方法方法名功能备注ShowRecorDialog()ShowRecorDialog()是构造方法,负责创建shoeDialog对象setGradeFile(File)ShowRecorDialog类创建的ShowRecorDialog对话框是主类MemoryGame窗口中的一个成员2.5 People类(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称用户的名字String name用户的用时int time(2)方法见表2-4表2-4 主要方法方法名功能备注getTime()返回timegetName()返回namecompareTo(Object)确定People对象的大小关系2.6 Record类(1)成员变量见表2-3表2-3 主要成员变量成员变量描述变量类型名称用户的用时int time 用来输入名字的文本框JTextField yourName保存成绩的按钮对象JButton enter 放弃保存成绩的按钮对象JButton cancel 级别文件File gradeFile(2)方法见表2-4表2-4 主要方法方法名功能备注Record()负责创建record对象的构造方法setGradeFile (File)Record类创建的Record对话框是测试区MemoryTextArea 中的一个成员。
单机版记忆游戏的设计与实现——Java 语言任务驱动教学法应用案例
Science and Technology &Innovation ┃科技与创新2021年第05期·21·文章编号:2095-6835(2021)05-0021-02单机版记忆游戏的设计与实现——Java 语言任务驱动教学法应用案例*田春婷(兰州石化职业技术学院信息处理与控制工程学院,甘肃兰州730060)摘要:Java 语言作为人工智能、云计算、计算机软件、网络等计算机类专业的重要专业基础课,主要培养学生面向对象程序设计的编程能力和应用软件实际工程的开发能力;人工智能、大数据、android 等应用领域的开发端大多采用java 来完成。
将记忆游戏单机版的设计与实现作为java 语言课程任务驱动教学法的一项教学案例,详细介绍了java 语言实现单机版记忆游戏的原理以及开发过程。
通过对此趣味性强游戏教学案例的实现,大大提高了学生对java 语言的学习兴趣。
关键词:java 语言;记忆游戏;任务驱动教学法;程序设计要求中图分类号:TP31文献标志码:ADOI :10.15913/ki.kjycx.2021.05.0071引言大数据时代,java 语言[1]作为一门老牌通用编程语言,有着成熟的社区生态,依然是互联网各个专业领域最热门的编程语言之一。
在行业领域内的人才占有率和使用率,以绝对优势稳居世界第一。
人工智能[2]、云计算[3]、大数据、物联网、移动开发等数字化新技术较常用的编程语言也是java 语言。
Java 语言作为一门纯面向对象编程语言,面向对象编程思想和算法是它的灵魂。
教学难点是如何提高学生的算法分析能力和编程能力。
将小游戏的设计与实现融入到java 语言课程的任务驱动教学法应用案例中,在提高学生对编程的兴趣方面尤为重要。
2java 语言任务驱动教学法在java 语言的整个教学过程中,主要采取任务驱动教学法[4]等多种教学方法,以更好树立学生面向对象程序设计思想,提高学生的算法分析能力和使用面向对象思想解决实际问题的能力。
java课程设计记忆系统报告.doc
java课程设计记忆系统报告软软件件学学院院课程设计报告书课程设计报告书课课程名称程名称面向面向对对象程序象程序设计设计设计题设计题目目记忆测试记忆测试系系统统专业专业班班级级软软件工程(件工程(财财升本)升本)11-1 班班学学号号姓姓名名指指导导教教师师2011 年年12 月月目录1 设计时间3 2 设计目的3 3 设计任务3 4 设计内容3 4.1 需求分析.3 4.1.1 设计目标3 4.1.2 主体功能3 4.1.3 开发环境4 4.2 系统设计.4 4.2.1 系统的功能模块划分4 4.2.2 系统流程图.23 4.2.3 系统详细设计.24 4.3 运行与测试30 4.3.1 测试方案.30 4.3.2 测试结果.30 5 总结与展望33 参考文献34 成绩评定34 1 1 设计时间设计时间2011 年12 月19~2011 年12 月25 日 2 2 设计目的设计目的此次设计课程的目的在于加深对Java 基础理论和基础知识的理解,而进行的一次全面的综合训练。
掌握使用java 进行软件设计的基本方法,提高运用java (MyEclipse 软件)解决实际问题的能力,课程设计是对所学面向对象课程的小结,是提高学对所学知识综合应用能力的一种方式,是集中实践性环节之一。
从而进一步掌握Java 语言程序设计方法,提高分析问题、解决问题的综合应用能力。
3 3 设计任务设计任务记忆测试系统通过回忆法测试记忆,分为初级、中级、高级、和自定义四个级别,并通过记忆榜存储每个级别的成绩。
4 4 设计内容设计内容 4.1 需求分析需求分析 4.1.1 设计目标设计目标(1)菜单栏包括“选择级别” 、“查看排行榜” 、“帮助”三项。
其中“选择级别” ,包括“初级” 、“中级” 、“高级” 、“自定义级别” ,可以分别开始初级中级高级和自定义测试。
“查看排行榜” 包括“初级排行榜” 、“中级排行榜” 、“高级排行榜” ,可以打开查看相应级别排行榜对话框;“帮助”又包括“新手入门” ,显示系统使用方式。
Java课程设计实验报告及全部源码流程图
课程设计一、实验目的1.加深对课堂讲授内容的理解,掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及软件编程、调试等能力,掌握面向对象的编程思想及Java语言程序设计的规律与技巧,为进一步学习web应用开发及今后从事专业工作打下基础。
2. 使用本学期学习的Java SE技术(也可以使用课堂教学中没有学习过的Java技术,但是应当以Java SE技术为主)完成多功能日历GUI程序的设计,使之具有如下基本功能:一年日历用12页显示,每页显示一个月的日历。
日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。
3.在完成基本功能的基础上发挥自己的想象力与创造力,使程序凸显出与众不同的特点与功能,形成本小组的特性色。
二、实验要求1.问题描述准确、规范。
2.程序结构合理,调试数据准确、有代表性.。
3.界面布局整齐,人机交互方便。
4.输出结果正确。
5.正确撰写实验报告。
三、实验内容编写一个GUI程序实现日历的功能。
一年日历用12页显示,每页显示一个月的日历。
日历可以按年或月前后翻动,能够显示当前的日期以及当前农历,可以为每页日历选择背景图片。
可以实现显示时钟,时钟能进行整点报时。
可以实现备忘记事功能,能在每天添加、修改、删除记事等操作。
四、实验步骤1.在上机实验前,小组成员进行选题讨论,确定小组感兴趣而又伸缩性强的题目多功能日历。
2.在第一次上机实验时讨论分工,分工明确之后,分头合作进行。
3.各成员完成自己的任务后,最后进行统筹合并,以及程序最后的优化。
4. 根据实验结果,写出合肥工业大学实验报告。
实验报告应当包括:实验内容,程序流程图,类结构,程序清单,运行结果,以及通过上机取得的经验。
5.详细的上机实验步骤见任务分工及程序设计进度表。
五、实验结果经过小组成员的共同努力,最终我们小组设计的多功能日历程序能够实现实验的基本要求——一年日历用12页显示,每页显示一个月的日历。
日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。
快速记忆小游戏使用Java开发Android应用
快速记忆小游戏使用Java开发Android应用在技术迅速发展的当下,移动应用已成为人们生活的一部分。
如今,Android平台上的小游戏越来越受欢迎,而快速记忆小游戏则是其中一种备受青睐的选择。
本文将介绍如何使用Java语言开发一款基于Android平台的快速记忆小游戏。
I. 游戏概述快速记忆小游戏旨在提高玩家的记忆力和反应速度。
游戏开始时,屏幕上会显示一组物体或数字,并在短时间内隐藏。
玩家需要在规定的时间内记住这些物体或数字,并尝试在记忆结束后重新选择正确的组合。
II. 开发环境准备在开始开发之前,我们需要准备以下环境:1. 安装并配置Java Development Kit(JDK)以及安装最新的Android Studio。
2. 在Android Studio中创建一个新的Android项目,并选择Java作为主要编程语言。
III. 游戏设计在我们开始编写代码之前,让我们先设计游戏的外观和功能:1. 游戏主界面设计:- 设置一个屏幕中央的表格布局,用于显示物体或数字。
- 添加一个计时器,用以记录玩家的反应时间和游戏进度。
- 显示玩家的得分和当前关卡。
2. 游戏逻辑设计:- 在每个关卡开始时,随机生成一组物体或数字并显示在屏幕上。
- 记录玩家选择的答案,并在记忆时间结束后进行比对。
- 根据玩家的选择和正确答案的比对结果,更新得分和关卡等级。
- 提供不同难度级别的游戏,如增加物体或数字的数量或减少记忆时间。
IV. 代码实现接下来,我们将使用Java语言来实现这一快速记忆小游戏。
1. 创建游戏布局:- 在XML文件中定义游戏主界面的布局。
- 使用GridLayout布局来显示物体或数字,计时器,得分和关卡。
2. 定义游戏逻辑:- 创建一个类来管理游戏逻辑和数据。
- 实现功能如生成随机数或物体、计时器控制、比对答案等。
3. 实现游戏交互逻辑:- 在主Activity中,处理玩家选择答案的事件。
- 调用游戏逻辑类的方法来进行比对、更新得分和关卡等操作。
JAVA课程设计——记忆测试系统讲课稿
记忆测试系统所用到的一些重要的类以及之间的组合关系如图3.1所示。
图3.1类之间的组合关系
图3.1类之间的关系
3.2
图3.2系统流程图
4
4.1
系统主体部分是在底层容器上插入面板,并在面板上安排按钮阵列,当用户点击按钮,经过随机安排在按钮后面的图片显示出来。通过对比图片下标,如果所显示图片和前一个显示图片一样,则没变化;如果,不一样,则把以前所有显示的图片重新用按钮遮盖。当用户点开指定数量的图片时,就进入记录数据部分。在测试过程中,显示用户测试时间。记录数据部分。是把用户输入的姓名和系统记录用户测试时间写入指定文档中保存。查阅数据部分,是把指定文档的数据显示给用户,包括姓名和测试时间。用户此时可以清除文档中数据,即用户所选级别传参数计算后进行安排。随机分布图片需要随机函数随机产生指定数量的图片下标,并传给主窗口的按对应按钮通过对比所显示图片的下标,统计显示的相同图片的数量。用户测试开始后,记录测试时间,并保存。
4.3
a).成员变量
主要成员变量(属性):
成员变量描述
变量类型
名称
3.连续单击出该级别所要求的若干个图标形同的方块后,将显示保存成绩对话框,成绩按所用时间排序。用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。
2.2
本游戏是通过由用户点击图片显示出图片后,如果是相同的,便保持图形,如果用户点开的是不同的图片则先前点击的图片被清空。当用户同时点击出规定数目的图片后,弹出保存成绩框。
(2)东西全
夏日的街头,吊带装、露背装、一步裙、迷你裙五彩缤纷、争妍斗艳。爱美的女孩们不仅在服饰搭配上费尽心机,饰品的选择也十分讲究。可惜在商店里买的项链、手链、手机挂坠等往往样式平淡无奇,还容易出现雷同现象。
单词记忆测试器程序设计课程设计
单词记忆测试器程序设计课程设计
本次课程设计项目为单词记忆测试器程序设计,旨在设计一个可以帮
助人们更好地掌握英语单词的程序。
本程序主要包含以下几个模块:用户
信息管理模块、单词库管理模块、测试模块、统计分析模块等。
用户信息管理模块
本模块旨在提供用户信息的管理功能,包括用户的注册、登录、修改
信息等。
用户可以通过该模块完成注册,并设置用于登录的账号和密码。
同时,用户也可以在此模块中修改个人信息、修改密码等操作。
单词库管理模块
测试模块
本模块用于进行单词测试,包括单词听力测试、单词拼写测试等。
用户可以在此模块中选择自己想要进行的测试类型,然后根据测试内
容进行测试。
测试结果将会在测试完成后显示出来,用户可以查看自己的
测试成绩。
统计分析模块
本模块用于对用户测试结果进行统计分析。
管理员可以通过该模块查看用户的测试记录、测试成绩等信息,并对
用户测试数据进行统计分析,以便更好地了解用户在单词学习方面的表现。
总结
本项目设计旨在帮助用户更好地掌握英语单词,提供了用户信息管理、单词库管理、测试及统计分析等功能。
通过该项目的实现,用户可以方便
地进行单词学习和测试,提升英语单词水平。
JAVA课程设计——记忆测试系统(附源程序)
《JAVA程序设计》课程设计报告题目: 记忆游戏姓名:学号:班级:指导教师:完成时间成绩:信息工程学院2015年6月目录目录1概述 (1)1.1 课程设计目的 (1)1.2 课程设计内容 (1)2需求分析 (2)2.1 设计目标 (2)2.2 主体功能 (2)2.3 开发环境 (2)3概要设计 (3)3.1 系统的功能模块划分 (3)3.2 系统流程图 (4)4详细设计 (5)5测试 (7)5.1 测试方案 (8)5.2 测试结果 (8)6小结 (11)参考文献 (12)附录 (13)附录1源程序清单 (13)Java程序设计课程设计报告记忆测试系统1 概述1.1 课程设计目的1)巩固和提高java编程技术。
2)培养掌握成学设计的基本思路和方法。
3)加强研发、调试程序的能力。
4)增强分析、解决问题的能力。
5)提高科技论文写作能力。
1.2 课程设计内容记忆测试系统是通过回忆法测试记忆能力,测试手段分为初级,中级和高级三个级别。
记忆测试系统设计要求如下:(1)单击“记忆测试”菜单可以选择初级、中级或高级三个级别。
(2)单击“记忆测试”菜单还可以查看初级记忆榜、中级记忆榜或高级记忆榜,通过记忆榜存储每个级别的成绩。
(3)选择级别后,将出现相应级别的测试区。
测试区由m*n个方块组成,程序通过设置m 和n的值来确定相应的测试级别,例如,对于初级级别,m=3,n=3。
每个方块上都有一个图标,但该图标默认不可见。
用鼠标单击测试区中的任何一个方块,则计时器开始启动动,同时该方块上的图标将显示出来。
(4)m*n个方块组成的测试区中有m个图标,每个图标重复出现n次,并且随机分布在测试区中的m*n各方块上。
用户必须用鼠标连续单击出n个图表相同的方块,也就是说,如果用户已经用鼠标连续单击出p(p<n)个图标相同的方块,当再单击另一个方块时,如果该方块的图标和上一个的相同,那么该方块的图标和前p次单击出的方块的图标仍然可见;否则前p次单击出来的方块的图标全都变得不可见,只有当前单击的方块的图标可现。
记忆测试系统_ JAVA实现
//主类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格式的文档中。
java记忆测试系统课程设计
java记忆测试系统 课程设计一、课程目标知识目标:1. 让学生掌握Java语言的基本语法和程序结构,能运用面向对象编程思想设计简单的记忆测试系统。
2. 让学生理解数组、循环、条件语句等编程概念,并能将其应用于记忆测试系统的开发。
3. 让学生了解内存管理的基本原理,提高程序的执行效率。
技能目标:1. 培养学生运用Java语言编写、调试和优化程序的能力,具备独立解决编程问题的技能。
2. 培养学生分析问题、设计算法和实现程序的能力,提高编程实践水平。
3. 培养学生团队合作和沟通能力,学会在项目中进行有效的分工与协作。
情感态度价值观目标:1. 培养学生热爱编程,主动探究编程知识,养成良好的学习习惯。
2. 培养学生具备耐心、细心的品质,面对编程问题能保持积极的心态,勇于克服困难。
3. 培养学生遵守编程规范,尊重他人知识产权,树立正确的价值观。
本课程针对高中年级学生,结合Java编程语言和实际应用场景,设计了一款记忆测试系统。
课程性质以实践为主,注重培养学生的编程能力和解决问题的能力。
在教学过程中,教师应关注学生的个体差异,提供针对性的指导,确保学生能够达到预设的学习目标。
通过本课程的学习,学生将能够独立设计并实现一个简单的记忆测试系统,为后续学习Java编程打下坚实的基础。
二、教学内容1. Java基本语法:变量、数据类型、运算符、表达式、控制语句(条件语句、循环语句)。
2. 面向对象编程:类与对象、构造方法、封装、继承、多态。
3. 数组与字符串:一维数组、二维数组、字符串操作。
4. 内存管理:堆、栈、垃圾回收机制。
5. 编程规范与调试技巧:命名规范、代码结构、调试方法。
6. 记忆测试系统设计:需求分析、功能设计、界面设计、算法实现。
教学内容安排:第一周:Java基本语法及控制语句学习,完成相关练习。
第二周:面向对象编程概念学习,设计简单的类和对象。
第三周:数组与字符串学习,实现相关算法。
第四周:内存管理知识学习,优化程序性能。
Java心理测试系统任务书中的主要内容
Java心理测试系统任务书中的主要内容
1、系统登录:系统登录是用户访问系统的路口,设计了系统登录界面,包括用户名、密码和验证码,然后对登录进来的用户判断身份信息,判断是管理员用户还是普通用户。
2、系统用户管理:不管是超级管理员还是普通管理员都需要管
理系统用户,包括普通管理员的添加、删除、修改、查询,修改管理员的登录密码,新添加的管理员用户可以登录系统。
3、修改密码:系统所有用户(管理员和注册用户)应该都要能
修改自己的登录密码,修改后需要重新登录。
4、系统公告设置:系统管理员应该可以通过系统公告设置功能
设置系统前台的系统公告信息,系统前台的系统公告是随后台的变化而变化的,系统公告应该使用编辑器,实现图片,文字,列表,样式等多功能输入。
5、增加留言:设计留言信息表,包含留言标题、留言内容、回
复内容、留言人等字段,留言标题、留言内容用来存储用户增加的留言,回复内容用来存储管理员回复的留言内容。
6、留言管理:系统管理员对留言信息表的删除、查询等操作,
回复留言则将回复内容存储在留言表的回复内容字段里,删除不需要
的留言,使用户有足够的空间进行留言。
7、个人资料管理:由注册用户使用,注册用户登录个人后台,可以修改个人当初的注册信息,如修改电话号码、邮箱等,用户的用户名是无法修改的。
8、友情链接管理:由超级管理员和普通管理员使用,对系统所有的友情链接信息进行添加、删除、修改、查询,同时系统前台的友情链接随着后台的友情链接变化而更新。
9、学生信息管理,管理员对学生信息进行添加,查询,修改,删除。
10、教师信息管理,管理员对教师信息进行添加,查询,修改,删除。
11、心理学知识管理,心理文摘管理等等的模块。
JAVA记忆测试程序设计报告
《网络程序设计(Java)》课程设计报告题目:记忆测试程序系别:电子信息工程系专业名称:信息安全技术班级:信息安全101 学号: 020708102 姓名:蔡少聪指导教师:林建兵二〇一二年六月目录一、系统简介-----------------------------------------3二、需求分析-----------------------------------------32.1、系统设计内容及要求----------------------------32.2、系统设计步骤----------------------------------3三、概要设计-----------------------------------------43.1、程序类说明------------------------------------4 3.2、程序类源文件及功能----------------------------43.3、程序流程图------------------------------------5四、详细设计-----------------------------------------54.1、主类的代码设计--------------------------------5五、系统测试效果-------------------------------------145.1游戏界面图-------------------------------------145.2游戏效果图-------------------------------------15六、系统设计总结心得---------------------------------16一、系统简介记忆测试系统主要通过逐级增加游戏方块来增加游戏难度,同时对测试者记忆能力的要求也越来越高。
本测试系统分为初级、中级和高级。
游戏中,测试者只有找到相应等级个数的相同方块才能过关,即连续选中相应个数的相同方块。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《JAVA程序设计》课程设计报告题目: 记忆游戏姓名:学号:班级:指导教师:完成时间成绩:信息工程学院2015年6月目录目录1概述 (1)1.1 课程设计目的 (1)1.2 课程设计内容 (1)2需求分析 (2)2.1 设计目标 (2)2.2 主体功能 (2)2.3 开发环境 (2)3概要设计 (3)3.1 系统的功能模块划分 (3)3.2 系统流程图 (4)4详细设计 (5)5测试 (7)5.1 测试方案 (8)5.2 测试结果 (8)6小结 (11)参考文献 (12)附录 (13)附录1源程序清单 (13)Java程序设计课程设计报告记忆测试系统1 概述1.1 课程设计目的1)巩固和提高java编程技术。
2)培养掌握成学设计的基本思路和方法。
3)加强研发、调试程序的能力。
4)增强分析、解决问题的能力。
5)提高科技论文写作能力。
1.2 课程设计内容记忆测试系统是通过回忆法测试记忆能力,测试手段分为初级,中级和高级三个级别。
记忆测试系统设计要求如下:(1)单击“记忆测试”菜单可以选择初级、中级或高级三个级别。
(2)单击“记忆测试”菜单还可以查看初级记忆榜、中级记忆榜或高级记忆榜,通过记忆榜存储每个级别的成绩。
(3)选择级别后,将出现相应级别的测试区。
测试区由m*n个方块组成,程序通过设置m 和n的值来确定相应的测试级别,例如,对于初级级别,m=3,n=3。
每个方块上都有一个图标,但该图标默认不可见。
用鼠标单击测试区中的任何一个方块,则计时器开始启动动,同时该方块上的图标将显示出来。
(4)m*n个方块组成的测试区中有m个图标,每个图标重复出现n次,并且随机分布在测试区中的m*n各方块上。
用户必须用鼠标连续单击出n个图表相同的方块,也就是说,如果用户已经用鼠标连续单击出p(p<n)个图标相同的方块,当再单击另一个方块时,如果该方块的图标和上一个的相同,那么该方块的图标和前p次单击出的方块的图标仍然可见;否则前p次单击出来的方块的图标全都变得不可见,只有当前单击的方块的图标可现。
(5)测试区能显示用户的同时,并根据级别的不同,提示用户必须用鼠标连续单击出多个图标相同的方块。
(6)测试区有提示图标所在位置的功能。
用户单击测试区中的“提示”按钮后,测试区将持续1.2秒为用户显示全部方块上的图标。
用户每单击一次“提示”按钮,用户用时将增加10秒。
(7)连续单击出级别所要求的若干个相同的方块后,将弹出保存成绩对话框,用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。
1记忆测试系统2 需求分析2.1 设计目标1.单击“记忆测试”菜单可以选择初级、中级、高级三个级别,通过记忆榜可以查看初级记忆榜、中级记忆榜或高级记忆榜。
2.选择级别后,将显示相应级别的测试区域。
测试区域由若干个方块组成,每个方块上都有一个图标,但该图标默认情况下不可见。
用鼠标单击测试区中的任何一个方块,则计时器开始启动,同时该方块上的图标将显示出来。
对于初级级别,用户必须用鼠标连续单击3个图标相同的方块,也就是说,如果用户已经用鼠标连续单击出n(n<3)个图标相同的方块,单击另一个方块时,如果该方块的图标和上一个相同,那么该方块的图标和前n次单击出的方块的图标仍然可见,否则,前n次单击出的方块的图标都变为不可见。
3.连续单击出该级别所要求的若干个图标形同的方块后,将显示保存成绩对话框,成绩按所用时间排序。
用户可以通过该对话框选择是否将自己的成绩保存到成绩表中。
2.2 主体功能本游戏是通过由用户点击图片显示出图片后,如果是相同的,便保持图形,如果用户点开的是不同的图片则先前点击的图片被清空。
当用户同时点击出规定数目的图片后,弹出保存成绩框。
2.3 开发环境Win7;MyEclipse 8.5软件2Java程序设计课程设计报告3 概要设计3.1系统的功能模块划分记忆测试系统共包含8个java源文件和若干个图像文件(用户可以增加)。
类之间的主要关系如下图所示。
在测试系统中,可以编写6个Java源文件:MemoryGame.java、MemoryTestArea.java、Block.java、ShowRecordDialog.java、Record.java、People.java。
记忆测试系统除了上述6个Java源文件产生的类外,还需要Java系统提供的一些重要的类。
记忆测试系统所用到的一些重要的类以及之间的组合关系如图3.1所示。
图3.1 类之间的关系3记忆测试系统3.2 系统流程图图3.2 系统流程图4Java程序设计课程设计报告4 详细设计4.1工作原理系统主体部分是在底层容器上插入面板,并在面板上安排按钮阵列,当用户点击按钮,经过随机安排在按钮后面的图片显示出来。
通过对比图片下标,如果所显示图片和前一个显示图片一样,则没变化;如果,不一样,则把以前所有显示的图片重新用按钮遮盖。
当用户点开指定数量的图片时,就进入记录数据部分。
在测试过程中,显示用户测试时间。
记录数据部分。
是把用户输入的姓名和系统记录用户测试时间写入指定文档中保存。
查阅数据部分,是把指定文档的数据显示给用户,包括姓名和测试时间。
用户此时可以清除文档中数据,即可删除排行榜。
4.2 算法思路主窗口安排指定数量按钮,是通过用户所选级别传参数计算后进行安排。
随机分布图片需要随机函数随机产生指定数量的图片下标,并传给主窗口的按对应按钮通过对比所显示图片的下标,统计显示的相同图片的数量。
用户测试开始后,记录测试时间,并保存。
4.3主类Memorya).成员变量b).方法4.4类Blocka).成员变量主要成员变量(属性):5记忆测试系统b).方法4.5类MemoryTestPanea).成员变量b).方法4.6类ShowRecorda). 成员变量6Java程序设计课程设计报告b).方法4.7类Recorda).成员变量b).方法4.8类RandomSetIcona).成员变量(无)b).方法主要方法:4.9类Peoplea)成员变量7记忆测试系统b) 方法主要方法:名称功能备注People 传递名字和时间构造方法getTime 返回使用者用时getName 返回使用者名字5测试5.1 测试方案将7个java文件保存到一个文件夹中,例如,D:\jiyiceshi。
将7个文件分别编译成相应的字节码(.class)文件。
然后,用java解释器运行主类:C:\jiyiceshi\java Memory 程序运行后选择各菜单,分别进行功能测试。
5.2 测试结果(1)运行效果图5.2.1 运行效果8(2)当选择“记忆力测试”后,自己可以设置游戏的难度,效果如图图5.2.2 初级效果图图5.2.3 中级效果图图5.2.4 高级效果图图5.2.5 排行效果图(3)当游戏结束后,查看“初级排行榜”,将显示初级的成绩记录效果图5.2.5 初级成绩记录6 小结Java程序设计是本专业的一门重要的面向对象的程序语言。
在刚开始学习时,一直担心自己、也没把握自己能否学好,也曾担心过不了考试这一关。
经过近大半学期老师您不厌其烦的教导,引导我们去学习。
我对Java语言有了一定的了解,但那绝对是远远不够的,还是要不断地把它应用到实践中去,融会贯通。
经过为期一周的Java课程设计,亲身感受体验敲、改写Java程序代码的乐趣,我对Java 编程有了较为深入的了解,不仅巩固了以前在课本上学到的知识,还学会了很多其他东西,比如Java程序不同调试平台的使用、错误的调试及数据库路径的配置等等。
一直以来,或许有不少人跟我一样,总是觉得编程是很枯燥乏味的,但是这次的体验下来,其实以前我们的想法错误的。
感觉到看着敲击的代码变为一个个可以自娱自乐小游戏程序,其实是一件非常有趣的事情。
并且在添加功能的过程中,不仅可以启发自己的想象力,还可以培养灵活运用知识的能力。
在此过程中,我们认识到编程的重要步骤是分析,分析问题的本身和现实要求。
分析过程中采用根据设置框架选择功能使我的思路特别清晰。
拿到一个题目不能只局限在一种思想一种方法上,要尽量的多尝试其他的做法,然后比较,集各家之所长,拿出最优秀的程序来。
其次也是最重要的就是我们应当打开我们的视野,我们应当从我们的生活的这个世界中去领悟解决问题的思想和方法通过这次课程设计,我收获的不仅仅是课程上的知识得到实际应用,还有编程的基本习惯和开发系统时应注意的流程。
作为一个程序编程人员,要保持清醒的头脑,以现实为依据,让自己的每一行代码都能实现自己的意义。
参考文献文献写法如下:1. 专著、论文集、毕业论文、报告等疯狂Java讲义(2008-09)李刚著附录附录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()==初级){给出级别测试(3,3,file初级);setBounds(100,100,300,260);this.validate();提示条.setText("初级:您需要连续找出"+3+"个相同图标的方块");}if(event.getSource()==中级){给出级别测试(4,4,file中级);setBounds(100,100,340,280);this.validate();提示条.setText("中级:您需要连续找出"+4+"个相同图标的方块");}if(event.getSource()==高级){给出级别测试(5,5,file高级);setBounds(100,100,360,300);this.validate();提示条.setText("高级:您需要连续找出"+5+"个相同图标的方块");}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;}}。