2022年java课程设计.pdf
《2022年java课程设计.pdf》由会员分享,可在线阅读,更多相关《2022年java课程设计.pdf(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、java 课程设计课 程 设 计 报 告( 20162017 学年第 2 学期) 课程名称Java 课程设计报告学生姓名张晓甜班级2015240701 学号2 指导教师康军完成日期2017、6、23 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 37 页 - - - - - - - - - - java 课程设计目录一、 设计目的及要求 . 1 1、1 课程设计目的 . 1 1、2 课程设计内容与要求 . 1 二、系统需求分析 . 2 2、1 系统目标 . 2 2、2 游戏需求 . 2 2、
2、3 开发环境 . 2 三、系统总体设计 . 2 3、1 系统的功能模块划分 . 2 3、2 系统流程图 . 4 四、系统详细设计 . 5 4、1 具体的设计步骤如下 : . 5 4、2 界面设计 . 5 4、3 关键功能的实现 . 6 五、代码调试 . 错误!未定义书签。六、小结 . 错误!未定义书签。参考文献 . 24 七、附录 . 错误!未定义书签。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 37 页 - - - - - - - - - - java 课程设计一、设计目的及要求1、1
3、课程设计目的通过本游戏的设计,综合自己在校期间所学的理论知识, 设计开发24 点游戏 , 使自己熟悉应用系统的开发过程, 进一步理解面向对象程序设计的思想与方法, 利用 Java 语言进行程序设计的能力, 培养自主思考能力, 检验学习效果与动手能力, 初步掌握基础编程知识, 并锻炼发现问题、 分析问题与解决问题的能力。从而达到理论与实践相结合的目的。加深对 Java 语言与面向对象技术课程基础知识的理解, 掌握 Java 语言面向对象程序设计的开发方法与步骤。1、2 课程设计内容与要求24 点游戏就是一种使用扑克牌来进行的益智的游戏, 游戏内容为 : 从一副扑克牌四个花色的1 到K等 52 张
4、牌中 , 任意抽取4 张牌 , 运用加、减、乘、除与括号等运算符把牌面上的数进行运算得到24。游戏有不同的版本, 其实就是对J、Q 、与 K的处理有所不同。有的版本版本就是把J、Q、与 K去除 ,只用 1 到 10 来进行游戏 ; 有的版本就是把J、Q、与 K 当成 10; 还有的版本就是用J 表示 11,Q 表示12,K 表示 13。此次课程设计采用的就是把J 表示 11,Q 表示 12,K 表示 13, 使游戏的四张牌在1K这 13 张牌中随机取牌。具体功能如下: 对游戏设计三个难易级别, 分别为初级、 中级与高级。 每次开始游戏前可以根据玩家的需要进行难度设置, 如若不设置, 系统默认难
5、度级别为初级, 设置完难度级别之后就可以开始游戏了, 单击“发牌”按钮, 桌面上出现四张翻开的扑克牌, 与此同时 , 游戏开始计时 , 时间条开始前进。在规定的时间内,玩家可以在“输入结果”的编辑框中输入自己想好的算式, 然后点击“验算”按钮 : 如果输入的算式经运算后所的答案正确, 则会弹出“恭喜, 您成功答对了一题”的窗口; 如果输入的数字与给出的牌的数字不符或者符号不合法, 则会弹出 “抱歉 ,您答错了” 的窗口 ; 如果未输入任何的数字与算符, 则会弹出“输入不能为空!”的窗口。程序中可以记录游戏的历史记录。如果在规定的时间内, 玩家没有点击验算按钮, 则会弹出“对不起, 您失败了”的
6、窗口。在结束本轮游戏后, 如果玩家想继续游戏, 则可点击 “发牌” 按钮即可重新发牌, 开始下一轮的游戏 ;如果玩家想结束游戏, 则可点击“结束”按钮即可结束游戏精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 37 页 - - - - - - - - - - java 课程设计二、系统需求分析2、1 系统目标使用所学知识制作一个基于java 的 24 点游戏。2、2 游戏需求游戏界面需求 : 设计良好的游戏界面可以让玩家充分感受到游戏带来的娱乐性, 游戏的背景色就是绿色 , 尽量降低玩家游戏时
7、的用眼疲劳, 最大化的为玩家带来舒适的娱乐环境。游戏形状需求 : 根据数字颜色的不同, 显示不同的纸牌。鼠标处理事件需求: 通过点击菜单栏中对应的菜单项, 可以实现游戏开始、结束、数字的验算及其她游戏选择等功能。2、3 开发环境MyEclipse,windowbuilder 三、系统总体设计3、1 系统的功能模块划分精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 37 页 - - - - - - - - - - java 课程设计图一系统功能图精品资料 - - - 欢迎下载 - - - - -
8、 - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 37 页 - - - - - - - - - - java 课程设计3、2 系统流程图图二系统流程图Y N N Y N Y Y N 就是否设置难度?1、低级2、中级3、高级系统默认难度级别为中级初始化发牌计时开始输入算式 , 进行计算比较函数值与参数值得大小显示“错误 ! ”验算函数判断计算结果就是否为24?超时显示 : “超时”输入字符错误: 显示: “错误! ”运算结果正确: “正确!”运算结果错误 : 显示: “错误!”继续否?结束开始保存历史记录至数据库中 ,并显示在表格中精品资料 -
9、- - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 37 页 - - - - - - - - - - java 课程设计四、系统详细设计4、1具体的设计步骤如下: 1) 在对话框中添加4 个图像 ( 分别用于四张扑克牌),3个按钮 (分别就是发牌、运算、结束),1个编辑框 , 一个进度条与一个下拉框( 用于选择难度级别) 接着根据属性对以上所添加的控件进行属性修改, 主要进行重命名, 以便编辑源代码的时候区分, 另外对图像的处理除了对其进行重命名外还要对其添加位图。之后通过打开图片, 并对其进行重命名。2) 根
10、据流程图在类的原文件中逐一添加实现各个模块其功能所需要的各种函数, 并添加相应的源代码 , 同时在头文件中添加对各种函数及变量的声明。3) 对编译好的程序进行保存, 开始进行调试, 边调试边根据报错对原程序进行修改, 直到程序不在报错为止。4、2界面设计表 1 控件类型、 ID 及相关说明对象变量名Caption或说明静态文本Label 耗时标志静态文本Label-1 第一张图静态文本Label-2 第二张图静态文本Label-3 第三张图静态文本Label-4 第四张图静态文本lblNewLabel 输入算式静态文本lblNewLabel-1 历史记录静态文本Label-5 选择难度下拉框c
11、omboBox 选择难度表格table 历史记录编辑框textField 输入计算滚动条progressBar 耗时按钮btnNewButton 发牌按钮Button 验算按钮Button-1 结束精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 37 页 - - - - - - - - - - java 课程设计4、3关键功能的实现(1) 发牌功能的实现首先 , 通过 Numberi=rand()%13。来产生0-9 的随机数 , 利用该函数加载了标号110 的10 张纸牌与一张背景纸牌。然后
12、运行中的以下一段代码, 即可在图像框中得到四张铺开的纸牌。代码如下 : Random random=new Random(); r1=random 、nextInt(10)+1; (2) 计时功能的实现首先 , 定义线程类 , 通过每隔不同的时间来发送信息来控制三个级别的时间不同。设置了时间限制 , 如果时间超过代表游戏结束, 用户没有时间进行思考了,本轮游戏结束。源代码如下: class MyThread extends Thread boolean lock=true; JProgressBar progressBar; JLabel label_1; JLabel label_2; JL
13、abel label_3; JLabel label_4; JTextField textField; JButton button; int difficulty=0; MyThread(JProgressBar progressBar,JLabel label_1,JLabel label_2,JLabel label_3,JLabel label_4,JTextField textField,int difficulty,JButton button) this 、progressBar=progressBar; this 、label_1=label_1; this 、label_2=
14、label_2; this 、label_3=label_3; this 、label_4=label_4; this 、textField=textField; this 、difficulty=difficulty; this 、button=button; public void run() / TODO Auto-generated method stub for(int i=0;icurrenttime-firsttime|time=0) time=(int) (currenttime-firsttime); correct+; textField、setText(); label_
15、1 、setIcon(new ImageIcon(C:精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 37 页 - - - - - - - - - - java 课程设计WorkspacesMyEclipse 2016 CIpukeImage1 、jpg); label_2 、setIcon(new ImageIcon(C:WorkspacesMyEclipse 2016 CIpukeIma精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - -
16、 - - - - - - - -第 13 页,共 37 页 - - - - - - - - - - java 课程设计ge2 、jpg); label_3 、setIcon(new ImageIcon(C:WorkspacesMyEclipse 2016 CIpukeImage1 、jpg); label_4 、精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 37 页 - - - - - - - - - - java 课程设计setIcon(new ImageIcon(C:Workspace
17、sMyEclipse 2016 CIpukeImage2 、jpg); thread 、interrupt(); progressBar 、setValue(0); textField、setEnabled(false); button 、setEnabled(false); else JOptionPane 、showMessageDialog(null, 抱歉 , 您答错了 , Message,JOptionPane、PLAIN_MESSAGE); textField、setText(); label_1 、精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下
18、载 名师归纳 - - - - - - - - - -第 15 页,共 37 页 - - - - - - - - - - java 课程设计setIcon(new ImageIcon(C:WorkspacesMyEclipse 2016 CIpukeImage1 、jpg); label_2 、setIcon(new ImageIcon(C:精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 16 页,共 37 页 - - - - - - - - - - java 课程设计WorkspacesMyEclipse
19、 2016 CIpukeImage2 、jpg); label_3 、setIcon(new ImageIcon(C:WorkspacesMyEclipse 2016 CIpukeIma精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 17 页,共 37 页 - - - - - - - - - - java 课程设计ge1 、jpg); label_4 、setIcon(new ImageIcon(C:WorkspacesMyEclipse 2016 CIpukeImage2 、jpg); thread 、
20、interrupt(); progressBar 、setValue(0); textField、setEnabled(false); button 、setEnabled(false); ); 计算功能的实现对于输入结果的计算, 主要就是通过int LastPos(CString Str),int FirstPos(CString Str),char FirstF(CString Str),int SubCompute(CString Str),int TotalCompute(CString Str) 等函数来来确定输入的算式的优先级别并且计算出输入算式的最终结果。现摘两段代码进行详细说明
21、精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 18 页,共 37 页 - - - - - - - - - - java 课程设计private static double cacComplex(String str) if (str 、equals() return 0; /System 、out 、println(CAC: + str); str = str 、replaceAll(, () 、replaceAll(), ); int cl = str 、lastIndexOf(); if (cl =
22、 -1) return cac(str); int cr = str 、indexOf(), cl); String left = str 、substring(0, cl); String right = str 、substring(cr + 1); String middle = str 、substring(cl + 1, cr); return cacComplex(left + cac(middle) + right); public static double cac(String str) if (str 、equals() return 0; int ml = str 、in
23、dexOf(*); int dl = str 、indexOf(/); if (ml = -1 & dl = -1) return cacNoMD(str); int index = ml = -1 ? dl : ml; / 4+5*6*7+8 String left = str 、substring(0, index);/ 4+5 String m1 = lastNumber(left); left = left 、substring(0, left 、length() - m1 、length(); String right = str 、substring(index + 1);/ 6*
24、7+8 String m2 = firstNumber(right);/ m2:6 right = right 、substring(m2 、length();/ *7+8 double d1 = Double、parseDouble(m1); double d2 = Double、parseDouble(m2); double tmp = 0; if (index = ml) tmp = d1 * d2; else if (index = dl) tmp = d1 / d2; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - -
25、- - - - -第 19 页,共 37 页 - - - - - - - - - - java 课程设计return cac(left + tmp + right); private static String lastNumber(String str) StringBuilder sb = new StringBuilder(); for (int i = str 、length() - 1; i = 0; i-) char c = str 、charAt(i); if (!Character、isDigit(c) & c != 、) break; sb、append(c); return
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 java 课程设计
限制150内