java课程设计九宫格数独.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
中南民族大学管理学院 学生课程设计报告 课题名称: java课程设计 选题名称: 九宫格数独 年 级: 2009 专 业: 信息管理与信息系统 学 号: 姓 名: 指导教师: 完成地点: 管理学院综合实验室 完成日期: 2011年9月25日 2011学年至2012学年度第一学期 目 录 1. 题目描述 3 2. 问题分析 3 3. 问题分解 4 4. 系统设计 6 5. 系统实现 11 6. 系统设计和软件发布 24 7. 难点及关键技术分析 31 8. 心得体会 32 一、题目(问题)描述 在9×9格的大九宫格中有9个3×3格的小九宫格,并提供一定数量的数字。根据这些数字, 利用逻辑和推理,在其它的空格上填入1到9的数字。每个数字在每个小九宫格内只能出 现一次,每个数字在每行、每列也只能出现一次。 这种游戏只需要逻辑思维能力,与数字运算无关。虽然玩法简单,但数字排列方式却千 变万化,所以不少教育者认为数独是锻炼脑筋的好方法。 二、问题分析 1、基本解法:利用1 ~ 9 的数字在每一行、每一列、每一宫都只能出现一次的规则进行解题的方法。 实际寻找解的过程为: 使用单元排除法的目的就是要在某一单元(即行,列或区块)中找到能填入某一数 字的唯一位置,换句话说,就是把单元中其他的空白位置都排除掉。 那么要如何排除其余的空格呢?当然还是不能忘了游戏规则,由于1- 9的数字在每一行、每一列、每一个九宫格都要出现且只能出现一次,所以: 如果某行中已经有了某一数字,则该行中的其他位置不可能再出现这一数字 如果某列中已经有了某一数字,则该列中的其他位置不可能再出现这一数字 如果某区块中已经有了某一数字,则该区块中的其他位置不可能再出现这一数字。 单元格:数独中最小的单元,标准数独中共有81个; 行:横向9个单元格的集合; 列:纵向9个单元格的集合; 宫:粗黑线划分的区域,标准数独中为3×3的9个单元 格的集合; 已知数:数独初始盘面给出的数字; 候选数:每个空单元格中可以 填入的数字。 2、软件系统的功能 可弹出游戏界面,方便用户操作,界面易于用户理解。可以选择游戏开始或重新开 局。可以判断正误,能给出正确答案,当输入的内容不符合要求时,弹出对话框, 提示输入错误。当结果不正确时,弹出对话框,提示答案错误。答案正确时。弹出 对话框,显示答案正确。在九宫格数独游戏界面和弹出的消息提示界面有相关的最 小化、最大化、关闭等按钮可以操作。 3. 对性能的要求 1. 具有较强的实用性 2. 易于理解和应用 3. 对程序的配置要求不高,能广泛应用 三、问题分解 1. 分析找出问题域中的对象,并将对象归类,注意筛选掉不必要的对象或类。 对象: 属于ShuDu1主类的对象: MenuBar、Menu、MenuItem、JComboBox 属于ShuDuAns类的对象:JTextField 属于String类的对象:atext[i][j] 属于JtextField类的对象:text[i][j]、 属于JPanel类的对象:apanel[ ]、panel[ ] 类:包括上述所有类及父类Jframe。 2、确定类的属性。 ShuDu1: public String: public JtextField:private JPanel:private Jframe:public 3、确定对象之间的关系,包括依赖、泛化、关联、实现等等。 Jframe与主类ShuDu1之间:泛化 texts[ ](JtextField)与atext [ ](String)之间:依赖 String与ShuDu1之间:依赖 Resizable、Editable、Visible与texts[ ]之间:实现 i、j与text[i][j]、atext[i][j]之间:关联 "类设计 " "类名 "角色 "变量(属性) "行为 " "ShuDu1 "表示一个数独 "MenuaBar:添加菜单项, "setSize():设置尺 " " " " "寸等 " " " " "add():添加文本及组 " " " " "件 " " " " "setMenuBar():设置难" " " " "易等级菜单 " "ShuDuAns "设置答案窗口 " "setSize():设置尺 " " " " "寸等 " " " " "JPanel( " " " " "):设置面板布局 " "Public void "单击事件处理 "单击实践 "JOptionPaneshowMess" "actionPerformed(Acti"方法 " "ageDialog():弹出提 " "onEvent e) " " "示信息框 " "接口名 "属性 " "ActionListener "add " " " Java课程设计中的九宫格数独项目主要涉及的是利用编程技术实现数独游戏的逻辑和交互界面。数独是一种逻辑推理游戏,玩家需要在9x9的网格中填充1到9的数字,使得每行、每列以及9个3x3的小宫格内数字都不重复。以下是基于这个课程设计的一些关键知识点: 1. **基本解法**:解数独的基本策略是单元排除法。通过观察已知数字,排除其他位置可能出现同一数字的可能性。例如,如果一行、一列或一个宫格内已有某个数字,那么其他位置就不能再出现该数字。 2. **软件系统功能**:设计的软件应具备以下特性: - 显示游戏界面,使用户能够直观操作。 - 提供开始和重新开始游戏的功能。 - 能够判断用户输入的正确性,给出错误提示或正确答案。 - 实现游戏界面的基本操作,如最小化、最大化和关闭。 3. **性能要求**:软件应具备实用性、易用性和广泛的硬件兼容性,对系统配置要求较低。 4. **问题分解**:在设计阶段,需要识别并分类问题域中的对象,如ShuDu1主类中的MenuBar、Menu、MenuItem、JComboBox等。确定对象的属性,如ShuDu1类中的公共字符串、私有的JtextField、JPanel和Jframe。还需要定义对象间的关系,如Jframe与ShuDu1的泛化关系,texts与atext的依赖关系等。 5. **类设计**:在面向对象编程中,类是对象的蓝图,它定义了对象的属性(变量)和行为(方法)。ShuDu1类可能包含用于表示数独网格的属性,如二维数组atext[i][j],以及与用户交互的方法,如添加组件、设置菜单栏等。ShuDuAns类可能用于展示答案或接收用户输入。 6. **事件处理**:在Java GUI编程中,使用事件监听器(如ActionListener)来响应用户的操作,如点击按钮或选择菜单项。这些事件触发相应的回调方法,如actionPerformed(),实现对用户输入的处理。 7. **界面设计**:使用Java Swing库创建图形用户界面,如JFrame、JPanel、JComboBox和JTextField等组件,以实现数独游戏界面和交互功能。 8. **算法实现**:为了自动检查数独的正确性或生成新的数独题目,可能需要实现以下算法: - 数字填充算法:用于填充部分完成的数独,确保符合规则。 - 数独解决算法:例如深度优先搜索(DFS)或回溯法,用来解决一个完整的数独题目。 9. **错误处理**:当用户输入不符合规则时,系统需要能够检测到错误,并通过对话框向用户显示错误信息。 10. **测试与调试**:对软件进行全面的测试,确保所有功能正常工作,无bug,并进行必要的优化以提高性能和用户体验。 在完成这个项目的过程中,学生不仅学习了Java编程语言,还掌握了面向对象设计、图形用户界面开发、算法设计和错误处理等多方面的技能,这对提升其编程能力和问题解决能力大有裨益。
剩余22页未读,继续阅读
- 粉丝: 111
- 资源: 9354
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 雅居乐地产置业有限公司企业文化与福利制度培训教材(PPT 60页).ppt
- 人力资源--伊利集团岗前培训手册(PPT 67页).ppt
- 人力资源-培训积分制度(PPT).ppT
- 某某不动产新人培训手册-新人工作培训手册(PPT 38页).ppt
- HR工作者的心理素质完全手册.ppt
- 蓝月亮-人事专员培训操作手册(PPT 33页).ppt
- 人力资源部管理手册-培训管理办法(doc 20).doc
- 山西通达摩托车集团公司培训管理制度(doc 6页).doc
- 山东省对外经济贸易明达公司人事管理培训工作细则(DOC 7页).doc
- 人力资源开发与培训管理制度.doc
- 永泰鑫公司员工培训手册(DOC 27页).doc
- 员工培训计划表.doc
- 美的集团空调事业部人力资源开发与培训制度.doc
- 内部培训评估表7.7.doc
- 康佳集團培訓管理辦法.doc
- 培训需求调查表7.7.doc