ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:386.98KB ,
资源ID:5754662      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5754662.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java课设合并排序动态演示.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java课设合并排序动态演示.docx

1、java课设合并排序动态演示目录1需求分析1.1设计任务.21.1项目背景.2二概要设计2.1类设计.32.2系统流程.32.3系统模块.3三详细设计3.1各模块的实现方法.53.2程序流程.133.3系统界面.164调试分析五用户使用及说明六测试结果2需求分析1.1设计任务本系统为合并排序的演示展示程序,分为界面设计和算法设计两大部分,通过Java 的GUI图形用户界面演示合并排序的算法原理,实现排序算法的动态演示。要求完成: (1)理解并实现合并排序算法 (2)使用界面完成合并排序算法的演示 (3) 动态跟踪排序 1.2项目背景 为加深对理论教学内容的理解,掌握图形界面设计,熟悉 java

2、.awt包的组件,掌握图形界面设计方法,理解事件处理模型,检 测对这门课的掌握情况。有助于及时查漏补缺,使学生系统地掌握程 序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生 综合运用所学知识,并在实践应用方面打下 一定基础,开展合并排序 的算法演示课程设计。合并排序算法是归并排序的一种,主要是利用 递归算法进行排序算法的动态演示。二概要设计2.1类设计2.2.系统流程2.2.1用户通过主界面在排序区输入要合并排序的字符串 2.2.2开始排序,演示区实时显示当前排序的子字符串2.2.3动态演示排序过程2.2.4显示排序的实时结果2.3.系统模块2.3.1主类(CMain)程序的入口,创建

3、窗体函数对象2.3.2主界面窗体类(CWin)构造用户GUI图形界面,合并排序算法的前台演示排序过程2.3.3合并排序算法实现类(CMergeSort)将文本框控件传来的数据进行合并排序2.3.4跟踪界面窗体类(CStateWin)动态演示程序运行到某一处代码段2.3.5等待同步类(Wait)实现前台后台数据同步。三详细设计3.1各模块的实现方法:3.1.1主类(CMain)实现方法:主方法public static void static void main(String args),创建窗体函数对象;3.1.2主界面窗体类(CWin)实现方法:Public class CWin exten

4、ds JFrame implements ActionListener,MouseListener,RunnableCWin()1.完成窗体控件的声明和初始化,2.设置控件的摆放位置3.增加事件监听private void Inittialization()初始化窗体控件,为排序类(CMergeSort)的静态标记为赋初值Private String GetRanDomSequence()产生随机序列数据,传入输入文本框private void StartMergeSort()排序及演示 int mid = 0,i; String strTemp = txtInput1.getText();

5、for(i = 0; i strTemp.length(); i+) if(strTemp.charAt(i)=, | strTemp.charAt(i)=,) mid+; strTemp = strTemp+ , + txtInput2.getText(); if(strTemp.length() MaxElement) JOptionPane.showMessageDialog(this, ?,? ?+ String.valueOf(MaxElement) +?,?, JOptionPane.PLAIN_MESSAGE); return; else if(data.length 2) JO

6、ptionPane.showMessageDialog(this, ?,?2 ?,?, JOptionPane.PLAIN_MESSAGE); return; btnRun.setText(?); CMergeSort.isSuspend = false; CMergeSort.isChange = false; CMergeSort.isRefresh = false; CMergeSort.isOver = true; CMergeSort.intChangeSrc = -1; CMergeSort.intChangeDes = -1; CMergeSort.intCount = 0; C

7、MergeSort.strHandle = ?; intUsedElement = data.length; for(i = 0;i MaxElement;i+) btnDemonstratei.setText(-); btnDemonstratei.setVisible(false); win_w = this.getWidth(); win_h = this.getHeight(); for(i = 0;i intUsedElement;i+) btnDemonstratei.setText(datai); btnDemonstratei.setBounds(win_w/(2+3*intU

8、sedElement) +i*win_w/(intUsedElement + 1),intDefY,win_w/(intUsedElement + 1),win_h/(intUsedElement + 1); btnDemonstratei.setVisible(true); /? txtDemonstrate.setText(?:+Arrays.toString(data) +n?:? +n?:+String.valueOf(CMergeSort.intCount); MergeTwoList(mid); CMergeSort cms = new CMergeSort(data); Thre

9、ad thd = new Thread(cms); thd.start(); /? WaitTime(); /? ? ? while(!CMergeSort.isOver) if(CMergeSort.isChange) MoveElement(); txtDemonstrate.setText(?: +Arrays.toString(CMergeSort.data_image) +n?:+CMergeSort.strHandle +n?: +String.valueOf(CMergeSort.intCount); /?txtDemonstrate?,? ? CMergeSort.isChan

10、ge = false; else if(CMergeSort.isRefresh) Refresh(); txtDemonstrate.setText(?: +n?:+CMergeSort.strHandle +n?: +String.valueOf(CMergeSort.intCount); WaitTime(); btnRun.setText(?); private void Refresh()与后台同步数据private void MoveElement()动态演示排序数据 private void MoveElement() if(CMergeSort.intStart != -1 &

11、 CMergeSort.intEnd != -1) /? MoveDown(CMergeSort.intStart,CMergeSort.intEnd); CMergeSort.intStart = -1; CMergeSort.intEnd = -1; else if(CMergeSort.intStart = -2) /? if(csw != null) csw.setState(CMergeSort.intStatement); CMergeSort.intStart = -1; else /? MoveUp(CMergeSort.intChangeSrc,CMergeSort.intC

12、hangeDes); private void MoveDown(int indexS,int indexE)将一组待比较的节 点向下移动private void MoveUp(int index,int des)?private void WaitTime()?3.1.3合并排序算法实现类(CMergeSort)实现方法:public class CMergeSort implements Runnable public CMergeSort(String data)?,承接输入文本框传入的函数public void run()?private void MergeSort(String d

13、ata)?private void MSort(String data,String temp,int start, int end)?:?data?temp?private void Merge(String data,String temp,int start, int mid, int end)?tempstart,mid,tempmid+1,end? dataprivate int strcmp(String str1,String str2)? private void WaitForFlag()?private void WaitTime() Wait.sleep(CMergeSo

14、rt.intInterval); private void WaitLongTime()/?,? ? Wait.sleep(CMergeSort.intInterval * 20); 3.1.4跟踪界面窗体类(CStateWin)实现方法:public class CStateWin extends JFrame JList lstStatement; /? String statement= int j,k;, for(j = mid + 1, k = start; start = mid & j = end; +k), , if(strcmp(tempstart, tempj) = 0),

15、 , datak = tempstart+;, , else, , datak = tempj+;, , , if(start = mid), , for(int i0 = start ; i0 = mid ; i0+), , datak+ = tempstart+;, , , if(j = end), , for(int j0 = j; j0 查看函数即可观看程序代码段的运行的具体执行语句处,动态展示算法的执行情况:六测试结果七代码附:程序部分代码/*类功能:提供合并排序*/public class CMergeSort implements Runnable /线程是否结束 static

16、boolean isOver = true; /是否交换 static boolean isChange = false; /是否交换完成 static boolean isRefresh = false; /交换起始位置 static int intStart = -1; /交换终点位置 static int intEnd = -1; /交换源 static int intChangeSrc = -1; /交换位置 static int intChangeDes = -1; /当前操作 static String strHandle = ; /比较次数 static int intCount

17、 = 0; /是否暂停 static boolean isSuspend = false; /检测休眠时间 static int intInterval = 30; /待排序序列镜像 static String data_image; /* *函数功能:构造函数 *输入:待排序序列 *输出:无 */ public CMergeSort(String data) data_image = new Stringdata.length; System.arraycopy(data, 0, data_image, 0, data.length); /* *线程 */ public void run()

18、 isOver = false; isChange = false; MergeSort(data_image); isOver = true; /* *函数功能:启动合并排序 *注意:根据字符排序,所以输入可以是数字也可以是字母,当数字和字母比较时比较ASCII *比如10和a 比较10a,10和a0比较10 1) int mid = (start + end) / 2; Function_test(dest, src, start, mid); Function_test(dest, src, mid, end); intStart = start; intEnd = end; for (int i = start, j = mid, k = start; k = end | i mid & strcmp(srci , srcj) 0) destk = srci+; else destk = srcj+; isChange = true; if(isOver) return; WaitForFlag(); /* *函数功能:合并排序 *输入:字符串1,字符串2,起始位置,终

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1