《Java程序设计》课程设计报告 (1)_第1页
《Java程序设计》课程设计报告 (1)_第2页
《Java程序设计》课程设计报告 (1)_第3页
《Java程序设计》课程设计报告 (1)_第4页
《Java程序设计》课程设计报告 (1)_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河南工程学院计算机学院课程设计报告书学 号: 201312211115 姓 名: 陈晏猛 学 院: 计算机学院 专业班级: 软件工程1341 专业课程: Java程序设计 指导教师: 汪 伟 2014 年 12 月 27 日题 目1、计算器(此处写自己设计的程序名)的设计与实现2、2048(此处写自己设计的程序名)的设计与实现考核项目考核内容得分平时考核(30分)出勤情况、态度、效率;知识掌握情况、基本操作技能、知识应用能力、获取知识能力系统设计(20分)分析系统的功能模块编程调试(20分)实现系统的各个功能模块,并完成调试回答问题(15分)回答老师针对课程设计提出的问题课程设计报告撰写(10

2、分)严格按照规范要求完成课程设计报告源代码(5分)要个按照规范要求完成课程设计源代码的排版总 评 成 绩指导教师评语: 日期: 年 月 日目 录第1章 计算器的设计与实现.11.1设计目的. . . .21.2系统实现思路. . .31.3系统详细设计. . .41.4系统调试运行. . .7第2章 2048的设计与实现.11.1设计目的. . . .21.2系统实现思路. . .31.3系统详细设计. . .41.4系统调试运行. . .7第3章 课程设计体会.8参考文献. . . .9附录. . . . .10第1章 计算器的设计与实现1.1 设计目的 本课程设计的目的就是通过一次集中的强

3、化训练,使学生能巩固自己的学识,补充未学的但有必要的内容。进行课程设计的目的在于加深对程序设计基础中理论和基本知识的理解,促进理论与实践的结合,进一步提高程序设计的能力。同时,在程序设计方法及上机操作方面受到比较系统严格的训练,培养软件工作所需要的动手能力。 (1)使学生更深入的理解和掌握课程中有关基本概念,程序设计的思想和方法。 (2)培养学生综合运用所学知识独立完成课题的能力。 (3)培养学生勇于探索,严谨推理,实事求是,有错必改,用实践来验证理论,全方位考虑问题等科学技术人员应具有的素质。 (4)提高学生对工作认真负责,一丝不苟,对同学团结友爱,协作攻关的基本素质。 (5)培养学生从资料

4、文献,科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。 (6)对学生掌握知识的深度,运用理论去处理问题的能力,实验能力,课程设计的能力,书面及口头表达能力进行考核。1.2系统实现思路1.2.1系统目标编写程序代码设计一个计算器,要有以下几个功能:二进制,八进制,十进制及十六进制的加,减,乘,除,乘方,取模等简单计算:科学计算函数,包括(反)正弦,(反)余弦,(反)正切,(反)余切,开方,指数等函数运行。我们可以把计算器的编译分成两大步骤:第一步骤:设计出计算器的雏形(框架),也就是计算器的排版布局;第二步骤:逐步实现计算器的功能。1.2.2

5、主题功能进行的运算单视图实现的计算:加,减,除,乘;用科学视图实现科学运算:用简进制用户根据程序提示,输入数字,选择要转换,三角函数,开方,对数,求底等。1.2.3系统的功能模块划分进入计算器主菜单,计算器按功能模块划分为:简单计算器模块和科学计算模块。简单计算器模块包括:加法运算,减法运算,乘法运算,除法运算。科学计算器模块包括:进制转换,三角函数,对数,开方。根据用户需求选择需要的计算模式。 图1.2.3 系统模块图 三角函数 计算器 科学计算 简单计算进制转换对数开方乘法除法减法加法其模式图形如1.2.3图:1.3系统详细设计从表面上看,计算器就包括一个文本框和一系列按钮(面板)。文本框

6、在上面,按钮平均分布在文本框的下方。例如文本框的初建模型如下图所示:1.3.1文本框的设计从表面上看,计算器就包括一个文本框和一系列按钮(面板)。文本框在上面,按钮平均分布在文本框的下方所以整体把文本框看做一部分,把按钮看做一部分,采用BorderLayout布局较好。 JPanel panel2 = new JPanel(new BorderLayout(); panel2.add("Center", display); panel2.add("East", reset);添加到窗口上方 JPanel panel1 = new JPanel(new G

7、ridLayout(4, 5); for (i = 0; i < str.length; i+) buttonsi = new JButton(stri); panel1.add(buttonsi); 添加到窗口中区,即下方。其次,按钮我们可以看出是平均分布在面板上的(四列五行)采用GridLayout布局较好。最后,布局分析好了,该添加按钮和文本框了。当然文本按钮都需要在窗口类中定义。再加上代码方法就会如图所示:这样计算器的雏形出来了。1.3.2源程序import java.awt.*;import java.awt.event.*;import javax.swing.*;publi

8、c class JCalculator extends JFrame implements ActionListener int i; / 数字和字符串运算符按钮。private final String str = "7", "8", "9", "+", "-", "4", "5", "6", "*","/", "1", "2", "3"

9、;, "0", ".", "=" ,"%","+/-","倒数","sqrt" / 创建按钮。 JButton buttons = new JButtonstr.length; / 创建重置按钮。 JButton reset = new JButton("C"); /文本框。 JTextField display = new JTextField("0") /无参构造函数,界面布局 public JCalculato

10、r() super("Calculator"); / panel1操作区 / 设置布局管理器为GridLayout,将界面区域划分为4行5列。 JPanel panel1 = new JPanel(new GridLayout(4, 5); for (i = 0; i < str.length; i+) buttonsi = new JButton(stri); panel1.add(buttonsi); /panel2文本输出和重置区 JPanel panel2 = new JPanel(new BorderLayout(); panel2.add("Ce

11、nter", display); panel2.add("East", reset); / 界面JPanel getContentPane().setLayout(new BorderLayout(); getContentPane().add("North", panel2); getContentPane().add("Center", panel1); / 每位操作按钮添加动作监听器;for (i = 0; i < str.length; i+) buttonsi.addActionListener(this);

12、 / "重置"按钮添加监听器。 reset.addActionListener(this); / "显示"按钮添加监听器。 display.addActionListener(this); / 初始化窗口大小。 setSize(400,300); /初始化窗口的位置 setLocation(300,200); / 显示窗口。 setVisible(true); /关闭窗口 addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent we) System.exit(

13、0); ); /实现监听器 double number = 0.0; String operator = "=" boolean isFirstDigit = true; /数字处理。 public void handleNumber(String key) if (isFirstDigit) display.setText(key); else if (key.equals(".") && (display.getText().indexOf(".") < 0) display.setText(display.

14、getText() + "."); else if (!key.equals(".") display.setText(display.getText() + key); isFirstDigit = false; /重置计算器。 public void handleReset() display.setText("0"); isFirstDigit = true; operator = "=" /运算符操作 public void handleOperator(String key) if (operator.e

15、quals("+") /加法运算 number += Double.valueOf(display.getText(); else if (operator.equals("-")/减法运算 number -= Double.valueOf(display.getText(); else if (operator.equals("*")/乘法运算 number *= Double.valueOf(display.getText(); else if (operator.equals("/")/除法运算 number

16、 /= Double.valueOf(display.getText();else if (operator.equals("=")/赋值运算 number = Double.valueOf(display.getText(); else if (operator.equals("sqrt")/平方根运算 number= Math.sqrt(number); else if (operator.equals("%")/百分号运算 number= number /100; else if (operator.equals("+

17、/-")/正负号运算 number =number*(-1); else if (operator.equals("倒数")/倒数运算 if (number=0) System.out.println("输入有误,0没有倒数!"); else number=1/number; display.setText(String.valueOf(number); operator = key; isFirstDigit = true; /监听器 public void actionPerformed(ActionEvent e) Object targ

18、et = e.getSource(); String label = e.getActionCommand(); if (target = reset) handleReset(); else if ("0123456789.".indexOf(label) > 0) handleNumber(label); else handleOperator(label); /main函数 public static void main(String args) new JCalculator(); 1.4系统调试运行 根据以上程序设计的内容,为了避免比必要的错误出现,严谨求实

19、,遵循探索精神,要对源程序进行自我检测(系统的调试运行),看是否存在严重的错误和警告。 假如当我输入正确的数值后,点击"计算结果"按钮,就会弹出计算后的结果数值,如果你输入的数据类型不是整型,就会提示错误信息。 按照其进行运算方法,求一个数的倒数是多少时。假如我想求一个数的倒数,这个数是2。如下面所示: 根据上述运算方法可以知道求一个数的结果运算为:要知其输出值为2,即求一个数的倒数,这个数是2。则计算器运算如下图所示:可以验证2的倒数是0.5,其结果为正确。第2章 2048的设计与实现1.1设计目的通过本课程设计,使学生在JAVA基础设计的选择和应用、实现方面得到训练,加

20、深对基JAVA基础设计本内容的理解和灵活应用,同时,在程序设计方法及上机操作方面受到比较系统严格的训练,培养软件工作所需要的动手能力。(1)进一步掌握和理解Java程序编程。 (2)进一步掌握java语言的基本数据类型,熟悉定义变量和使用变量 (3)理解java图形用户界面的基本工作原理和界面设计, 巩固窗体的布局设计。  (4)掌握窗体按钮控件和文本控件对事件的响应, 理解函数和方法的使用。JAVA课程设计是在学完数据结构课程之后的实践教学环节。该实践教学是软件设计的综合训练,包括问题分析,总体结构设计用户界面设计,程序设计基本技能和技巧。要

21、求学生在设计中逐步提高程序设计能力培养科学的软件工作方法学生通过JAVA课程设计各方面得到锻炼。根据提供的实习题目,认真完成软件设计的全部过程,并以最终软件设计成果来证明其独立完成实际任务的能力,从而,反映出理解和运用JAVA基础设计的水平和能力,最后完成软件设计和程序调试并提交文档:课程设计报告书,报告书中包含设计的算法及部分程序代码。1.2系统实现思路 2048这个游戏是在一个4×4的方格中随机生成链两个数字值为2或4的方块,通过上下左右四个方向的移动,使得数字值相同的两个方块合并成一个值为两者之和的方块,每移动一次,会在未被占用的方格中生成一个2或4的方块,在所有方格被占满且无

22、法移动之后,游戏失败。程序流程图如下图所示: 游戏界面游戏主面板游戏提示重置按钮得分面板点击重置通过上下左右滑动将分数加入得分面板,同时记录最高分。1.3系统详细设计根据游戏规则和面向对象Java程序设计要求,程序的主要类有以下几种:(1)设置数字显示面板AddNumArea()和分数显示面板AddScoreLabel()把主界面分为上下两个部分,上边为分数显示,下边是数字,其中设置字体、颜色以及大小。(2)随机生成数字RandomValue()随机生成2和4,以9:1的概率生成private int RandomValue() Random random = new Random();int

23、 n = random.nextInt(10);int newNum = 2; if (n>=1) /生成2newNum = 2;else/生成4newNum = 4;return(newNum);(3)空白产生新值NewValue()空白处产生一个新值,自带refresh功能 public void NewValue() int newvalue = RandomValue();/ 新值 int index = RandomIndex(blanks);/ 新值得位置 blanks-;/ 空白格子数-1 for (int i = 0; i < 4; i+) for (int j =

24、 0; j < 4; j+) if (numlistij = 0) index-; if (index = 0) numlistij = newvalue; / 相应label上显示新值 numlabellistij.setText(Integer.toString(newvalue); return; (4)左移LeftReduce()通过上下左右来移动数字下面是左移public boolean LeftReduce() boolean changed=false;/是否有改变(移动和相加),作为后续是否产生新值得依据 boolean has0before; int p;/ 行指针 i

25、nt value;/当前值 for (int i = 0; i < 4; i+) p=0; value=0; has0before=false; for (int j = 0; j < 4; j+) if(numlistij>0&&has0before)/移动方向上之前有空格,可移动,changed为true changed=true; if(numlistij=0) has0before=true; if (numlistij > 0) if(numlistij=value)/相加放p位置 int sum=value*2; numlistij=0; n

26、umlistip=sum; value=0; p+; score+=sum; changed=true;/相加,changed为true else if(value>0)/value放p中,当前值放value中 numlistip=value; p+; value=numlistij; numlistij=0; if(value>0)/到最后value中可能有值 numlistip=value; return changed; (5)检查新出的值CheckOut()检查当新出值后public boolean CheckOut() if(blanks>0) return fal

27、se; for(int i=0;i<4;i+) for(int j=0;j<3;j+) if(numlistij=numlistij+1) return false; for(int j=0;j<4;j+) for(int i=0;i<3;i+) if(numlistij=numlisti+1j) return false; return true; (6)判断游戏结束Out()判断游戏是否结束public void Out() JOptionPane.showMessageDialog(null, "游戏结束!", "2048PC版", 2); System.exit(0); (7)设置主窗体launchFrame()设置主窗体以及布局等public void launchFrame() setTitle("2048PC版"); / 设置窗体标题 setBounds(700, 100, 400, 475); setLayout(new BorderLayout(); setResizable(fa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论