JAVA程序设计综合课程设计报告基于Java的记忆测试系统的设计与开发 .doc
2009级程序设计综合课程设计报告报告题目:基于Java的记忆测试系统的设计与开发学 院 : 专 业 : 计算机科学与技术 班 级 : 学 号 : 学生姓名 : 指导教师 : 二一一年 六 月程序设计综合课程设计任务书一、主要任务与目标 1掌握Java语言,能够学会使用Java开发具体的应用。2熟悉数据库SQL Server的使用,熟悉数据库编程语言(主要是SQL)。3使用所学知识开发一个基于Java的记忆测试系统。二、主要内容与基本要求用java语言编写一个记忆测试系统。设计要求如下: 1)单击“选择级别”菜单可以选择初级、中级和高级; 2)单击“查看排行榜”菜单可以查看初级记忆榜、中级记忆榜和高级记忆榜,通过储存榜记忆每个级别的成绩; 3)相应级别测试区,有m*n个方块组成,测试级别有m和n确定。每个方块上都有一个图标,但该图标默认不可见。用鼠标单机测试区中的任何一个方块,则计时器开始启动,同时该方块上的图标讲显示出来; 4)每个测试区中有m个图标,每个图标重复出现n次,并且随机分布。用户必须用鼠标连续单击出n个图标相同的方块,若其中点到不同图标,则前几次单击出的图标全都变得不可见,只有当前单击的方块的图标可见; 5)测试区能显示用户的用时,并根据级别不同,提示用户必须用鼠标连续单击出多少个图标相同的方块; 6)测试区有提示图标所在位置的功能。用户单机测试区中的“提示”按钮后,测试区将持续1.2秒为用户显示全部方块上的图标。用户每单击一次“提示”按钮,用户的用时将增加10秒; 7)连续单击出级别所要求的若干个图标相同方块后,将弹出保存成绩对话框,用户可以通过该对话框选择是否将自己的成绩保存到成绩表中; 8)单击“选择图标”菜单可重新选择方块的图标样式,即可以重新选择m个图标; 9)单击“帮助”菜单可以查看帮助和关于信息; 10)添加更多图标,使用户可以选择多种图标; 11)改进测试条件,用户单击鼠标的次数越多则成绩越差; 12)增加更加丰富的音乐效果,程序开始时播放背景音乐,当用户成功翻开相同图标方块后,程序播放简短、动听的一声音乐,而用户翻开不相同图标方块后,程序播放简短、警告的一声音乐。 13)单击“设置”菜单可以进行对程序的相关设置,用一个文件存储相关设置信息。 14)添加“登录”、“注册”界面,并用数据库存储相关注册信息。三、计划进度14月11日-4月14日:搜集资料、查阅文献,确定选题,写任务书,确定分组工作24月14日- 4月21日:需求分析,系统设计,系统功能模块完善3. 4月21日-4月28日:主要模块程序流程图、编程实现系统44月28日-5月15日:系统调试、测试、修改与完善55月15日-5月27日:课程设计报告撰写65月28日-6月10日:课程设计报告答辩四、主要参考文献1 耿祥义,张跃平.Java大学实用教程(第2版).电子工业出版社.2010年1月2 耿祥义,张跃平.Java课程设计(第二版).清华大学出版社.2008年11月五、小组分工(组长):编写主类MemoryGame,程序主要功能模块MemoryTestArea类及“设置”相关功能模块,与小组成员共同完成程序编写;:撰写任务书,主要负责程序排行榜模块,完成Record、ShowRecordDialog等类的编写,搜集程序所需资源等;:主要负责帮助菜单相关功能模块,ShowHelpDialog、ShowAboutDialog等类的编写,以及程序的功能测试。学生(签字) 2011年4月12日 指导教师 2011年4月12日目录程序设计综合课程设计任务书2第1章 引言51.1 背景51.2 课程设计内容51.3 任务分工5第2章 记忆测试系统62.1 记忆测试系统概述62.1.1 记忆测试系统的定义62.1.2 记忆测试系统的任务62.2 本章小结6第3章 记忆测试系统的设计73.1 系统需求分析73.2 系统开发及运行环境73.3 系统主要功能要求73.4 系统模块化分析83.4.1 记忆测试系统总体结构83.4.2 制药企业进销存管理系统各模块介绍83.5 本章小结9第4章 系统的具体实现104.1界面设计104.1.1用户登陆界面图104.1.2 系统主界面134.2详细设计144.2.1 MemoryGame类144.2.2 MemoryTestArea类154.2.3 Block类164.2.4 ShowRecordDialog类164.2.5 People类174.2.6 Record类174.3程序设计及调试运行174.4 本章小结18第5章 总结19致谢20参考文献21第1章 引言1.1 背景伴随着计算机科学技术的发展,计算机软件在各行各业的应用变得越来越普及,市场竞争在各行各业也日趋激烈记忆测试系统是一个基于java的应用系统。整个系统从符合操作简便、界面友好、灵活、使用、安全的要求出发,完成相关操作。本课程设计报告介绍了记忆测试系统,论述了此进销存管理系统的需求分析,目标功能模块;以及具体实现了它。在系统实现章节,给出了部分实现了的功能界面和相关的代码。1.2 课程设计内容记忆测试系统是通过回忆法测试记忆能力,测试手段分为初级、中级和高级三个级别,使用该系统以达到测试和锻炼记忆能力的目的。系统具有用户登录、注册功能,使用JDBC数据库连接技术保存用户信息,同时保存每个用户的不同等级的成绩。1.3 任务分工陈登基(组长):编写主类MemoryGame,程序主要功能模块MemoryTestArea类及“设置”相关功能模块,与小组成员共同完成程序编写;江海:撰写任务书,主要负责程序排行榜模块,完成Record、ShowRecordDialog等类的编写,搜集程序所需资源等;俞谦:主要负责帮助菜单相关功能模块,ShowHelpDialog、ShowAboutDialog等类的编写,以及程序的功能测试。第2章 记忆测试系统2.1 记忆测试系统概述记忆测试系统是通过回忆法测试记忆能力,测试手段分为初级、中级和高级三个级别,使用该系统以达到测试和锻炼记忆能力的目的。2.1.1 记忆测试系统的定义记忆测试系统使用户点击连续图块,如果连续单击出指定数目的相同图块,则测试通过,若点击错误,则原图块皆不可见,以此达到测试用户记忆的目的。2.1.2 记忆测试系统的任务记忆测试系统分为三个不同级别,各个级别有相应的英雄榜存储不同用户不同级别的成绩,用户可以选择级别,查看英雄榜,设置背景音乐级音效等。2.2 本章小结这一章介绍了当前记忆测试应该具备的功能模块。在这一章中,我们可以了解什么是记忆测试系统,记忆测试系统的需求,还有一个记忆测试系统应该的开发目标。第3章 记忆测试系统的设计这一章是记忆测试系统的设计,从系统需求分析开始,介绍开发环境和用到的开发工具,系统主要的功能设计,系统的数据流程图。3.1 系统需求分析记忆测试系统的设计目标为:(1)整个系统采用图形用户界面。(2)登陆注册界面,用数据库的形式保存用户信息。(3)保存用户使用纪录,成绩的功能。3.2 系统开发及运行环境硬件平台:q CPU:Core(TM)2 Duo 2.2GHz。q 内存:2GB以上。软件平台:q 操作系统:Windows 7。q 数据库:SQL Server 2008。q 开发工具包:JDK Version1.6.2。 3.3 系统主要功能要求本系统针对中小型企业进销存管理现状,通过网络对企业的进销存进行有效管理。本系统主要实现如下功能:q 系统采用人机对话方式,界面美观友好,信息查询灵活、方便、快捷、准确,数据存储安全可靠。q 程序流程清晰。q 系统最大限度地实现了易维护性和易操作性。q 系统运行稳定、安全可靠。3.4 系统模块化分析3.4.1 记忆测试系统总体结构MemoryGameStringFileMemoryTestAreaShowRecordDialogFileTreeSet<People>ArrayList<Block>StringRecordTimerFileThread3.1 系统功能结构图3.4.2 制药企业进销存管理系统各模块介绍系统各功能模块实现的功能为:l MemoryGame(主类):该类负责创建记忆测试系统的主窗口,含有main()方法,记忆测试系统从该类开始执行。该类有4种重要类型的对象,分别是String、File、MemoryTestArea和ShowRecordDialog对象。l MemoryTestArea: 该类是主类MemoryGame窗口中的一个JPanel容器,所创建的对象成为“测试区”,这个“测试区”被添加到MemoryGame窗口的中心。该类主要有六种类型的成员:ArrayList<Block>、String、Record、Timer、File、和Thread对象。l Block: 该类是JButton的子类,负责为MemoryTestArea类中ArrayList<Block>数组表提供Block对象。l Record: 该类是JDialog的子类,当用户成功单击出相应级别所要求的图标相同的方块后,Record创建的对象负责保持用户的名字和成绩到相应级别的文件中。l ShowRecordDialog: 该类是JDialog的子类,当用户单击“查看排行榜”时,该类创建的对象负责显示用户的成绩。l People: 该类封装用户的名字和成绩,以便ShowRecordDialog对象可以按成绩的高低排序用户。l PlayMusic:声音处理类,可控制背景音乐,各音效的播放。l LoginDialog:登录注册界面,验证登录用户,注册新用户。l JDBC:数据库处理类,用于连接数据库,封装用户信息的保存,查询方法。3.5 本章小结本章是记忆测试系统的具体设计过程,有具体的需求分析、系统功能模块。这里我们开始接触记忆测试系统开发的最初步骤,也是很重要的一步。第4章 系统的具体实现界面是系统之间最直接的交互界面,界面的友好性体现了软件设计的质量, 并在很大程度上决定了软件是否成功。4.1界面设计4.1.1用户登陆界面图登陆界面用户信息用户登录到主界面弹出错误信息输入信息是否合法输入验证是否跳转图4.1.1 用户登录模块框图图4.1 用户登陆界面此函数的作用是检测用户登陆的合法性,并确认用户输入了合法的登录名和口令。部分代码:/ 验证码错误if (!randText.getText().toLowerCase().equals(randStr.toLowerCase() JOptionPane.showMessageDialog(this, "验证码错误!", "错误", JOptionPane.ERROR_MESSAGE);randIcon.setIcon(getImageIcon();return;/ 用户名、密码错误if (!jdbc.exists(userName.getText(), new String(passWord.getPassword() JOptionPane.showMessageDialog(this, "用户名或密码错误!", "错误", JOptionPane.ERROR_MESSAGE);return;/ 输入信息都正确this.setVisible(false);jf.setVisible(true);图4.2 用户这次界面此函数的作用是检测用户注册信息的合法性,并保存新用户的登录名和口令。部分代码:/ 验证码错误if (!textRand.getText().toLowerCase().equals(strTextRand.toLowerCase() JOptionPane.showMessageDialog(this, "验证码输入有误!", "错误", JOptionPane.ERROR_MESSAGE);showIcon.setIcon(getImageIcon();return;/ 用户已经存在if (jdbc.exists(userName.getText() JOptionPane.showMessageDialog(this, "用户名已存在!", "错误", JOptionPane.ERROR_MESSAGE);return;/ 两次密码不同String pw1 = new String(passWord1.getPassword();if (!pw1.equals(new String(passWord2.getPassword() JOptionPane.showMessageDialog(this, "两次密码不同!", "错误", JOptionPane.ERROR_MESSAGE);return;/ 插入新纪录jdbc.insert(userName.getText(), pw1);this.setVisible(false);4.1.2 系统主界面图5.2 系统主界面4.2详细设计4.2.1 MemoryGame类1)成员变量l bar是JMenuBar类创建的菜单条,可以向bar中添加菜单。l menuGrade、menuResult、和menuIcon是JMenu类创建的三个菜单,这三个菜单的名称分别是“选择级别”、“查看排行榜”和“选择图标”。l oneGradeItem、twoGradeItem和threeGradeItem是JMenuItem类创建的三个菜单项,被添加到menuGrade菜单中。这三个菜单项的名称分别是“初级”、“中级”和“高级”。l oneGradeResult、twoGradeResult和threeGradeResult是JMenuItem类创建的三个菜单项,被添加到menuResult菜单中。这三个菜单项的名称分别是“初级排行榜”、“终极排行榜”和“高级排行榜”。l carImageIcon和animalImageIcon是JMenuItem类创建的两个菜单项,被添加到menuIcon菜单中。这两个菜单项的名称分别是“汽车图标”和“动物图标”。l fileOneGrade、fileTwoGrade、fileThreeGrade三个文件对象所引用的文件对象分别是“初级记忆排行榜”、“中级记忆排行榜”和“高级记忆排行榜”,分别用来写入三个级别的成绩。gradeFile可以是fileOneGrade、fileTwoGrade和fileThreeGrade中的某一个。l imageName是String类型的数组,每个单元是一个图像文件的名字。l memoryArea是测试区对象,有MemoryArea类负责创建。l showDialog是负责显示成绩的对话框,由ShowRecordDialog类负责创建。l m和n是int型数据,其值可以确定响应级别中测试区中方块的数量。4.2.2 MemoryTestArea类1)成员变量l row和col确定测试区中方块的数量。l usedTime是用户的用时,单位是秒。l success的值是用户找到的具有相同的图标的方块个数。l gradeFile是级别文件。l 数组表allBlockList单元的个数row和col的乘积,每个单元存放一个Block对象。l 字符串数组imageFileName中的每个单元是一副图像文件的名字。l 链表openIconList存放用户找到的图标相同的方块上的图标。l 链表openBlockList用来存放用户找到的图标相同的方块。l hintThread是用Thread类创建的线程对象,用来提示测试区中的Block上的图标,提示方式是将测试区中的所有图标持续显示1200毫秒。2)方法l initBlock(int, int, String)方法用来设置row、colimageFileName和gradeFile。l setImageName(String)方法设置图片文件名字。l run() 方法实现接口Runnable的方法。4.2.3 Block类1)成员变量l openStateIcon是方块上的图标。4.2.4 ShowRecordDialog类1)成员变量l gradeFile是对话框要读取的文件,该文件存储成绩。l treeSet负责将成绩按高低排序。4.2.5 People类方法l compareTo(Object)是Comparable接口中的方法,其操作是确定People对象的大小关系。4.2.6 Record类4.3程序设计及调试运行 利用Java“一次编写,各处运行”的编程优点,按功能模块结构设计菜单,布置各明细模块工作界面,编写各个模块的程序代码,进行编译连接运行,经过反复调试修改,以达到系统功能要求。这个过程具有大量的工作量,应仔细对每个程序细节进行分析思考、编写程序并调试,做到程序简洁清楚,尽量避免可能潜在的程序错误,并在必要的地方加以注释,以便于程序阅读和修改。4.4 本章小结本章介绍了系统的具体实现和部分关键代码,其中包括用户登录所要用到的函数,主界面的框架设计和分析。第5章 总结这次课程设计采用的技术主要有:JDBC数据库连接技术和利用Eclipse集成开发环境。虽然系统的基本功能都已实现,但还是存在系统不稳定等多个问题尚待解决。这个系统主要是我自己开发的,但也得到了老师和同学的很大帮助。我正在做系统的过程中遇到了很多问题,有的是知识存储不足,有的是考虑不够周全,之所以能够顺利实现基本功功能,离不开老师和同学的大力相助。事实证明,只靠自己是不能顺利完成一套功能完整的系统的,必须充分利用团队的力量。开发一套系统,最重要的是细心,并不是一定要做到面面俱到,但也要充分考虑到客户的需求和现实意义,不管什么系统,只用运用到实际应用中,才具有先现实意义。所以在准备工作中要正确分析社会需求了解现实应用,画出流程图,把大体框架做好,然后再逐一细化。我们不可能做到面面俱到,但一定要做到步步扎实,作为一个程序编程人员,要保持清醒的头脑,以现实为依据,让自己的每一行代码都能实现自己的意义。 通过这次课程设计,我收获的不仅仅是课程上的知识得到实际应用,还有编程的基本习惯和开发系统时应注意的流程。致谢首先我们要感谢指导老师 ,在我们学习Java程序设计与完成Java程序课程设计的过程中所给予的热情教导、精心指导与大力支持。在许老师的教导和指导下,我们的Java程序设计知识和能力从无到有、由弱渐强,理论和实践水平有了长足的进步和显著的提高,不断开阔了思路与视野,总结出了许多有意义的设计与开发经验。这些对我们来说是无比珍贵的知识和经验财富。在此,向许老师致以最诚挚的谢意。参考文献1 耿祥义,张跃平.Java大学实用教程(第2版).电子工业出版社.2010年1月2 耿祥义,张跃平.Java课程设计(第二版).清华大学出版社.2008年11月