当前位置:首页 > java实验一 完整的图形界面排序
院 系:计 算 机 学 院
实验课程:JAVA语言程序设计
实验项目:实验一 完整的图形界面排序 指导老师:陈俊侠
开课时间:2012~2013 年度第 1 学期专 业:计算机科学与技术(师范) 班 级:10本2 班 学 生:陈泽旋 学 号:20102101040
华南师范大学教务处
实验目的:学习类的继承、组件布局、组件事件的处理。
实验要求:编写程序实现三种排序方式的数组排序。三种数组的排序已经
在之前的作业中实现过了,并且可以将排序所消耗时间、比较次数、交换次数、探测次数打印出来。所以要完成本实验的主要任务就是将数组的排序功能以图形化界面形式显示出来,相对而言比较简单。 具体要求为
① 选择合适的布局管理设计美观的界面包含数组输入、数组的三种排序功能。
② 数组输入有三种方式:直接在文本框中输入,或者点击“产生随机数”进行产生随机数组,或者点击“新建文件”按钮,调用JFileChooser的showOpenDialog方法会输出文件对话框,但是选择了文件后,如何才能将选择的文本文件显示在文本组件中呢?那就要使用到输入输出流的知识。 ③ 数组的排序,当第一个JTextArea中的数组产生后,只需点击“冒泡排序”,或者“直接选择排序”,或者“插入排序”即可对数组进行排序,并且在每种排序对应的文本域会输出从小到大的数组和排序操作所消耗的时间、比较次数、交换次数和探测次数。
实验步骤:
①定义一个类表示学生包含学号和成绩两个域,以下为该程序的各类的结构:
其中参数类Test实现了接口Assessable,包括比较次数、交换次数、探测次数属性,并重写构造器和toString方法。
其中测试类Test包括要排序的数据,并提供三个final方法,分别完成比较、探测、交换操作的同时,正确改变私有的Test类对象成员的相关属性。并提供一个虚方法doSort,同时提供一个final方法Sort(调用doSort方法,返回Test对象引用)
写一个基本类MySort作为主类,分别生成不同方法排序的BubbleSort,SelectSort,InsertSort的对象并调用Sort方法,显示三个方法在排序时候的性能参数。
① 界面设计:在界面上放置四个文本区域和六个按钮
第一个文本区域用于显示初始数组,可以直接在文本框中输入,或者点击“产生随机数”进行产生随机数组,或者点击“新建文件”按钮,调用JFileChooser的showOpenDialog方法会输出文件对话框,选择了文件后将选择的文本文件显
示
在
文
本
组
件
中
。
该文本区域下方有“产生随机数”“新建文件”“保存文件”三个按钮; 第二个文本区域用于“冒泡排序”按钮按下之后产生的数组的显示和排序的各种测试数据的显示;
第三个文本区域用于“直接选择排序”按钮按下之后产生的数组的显示和排序的各种测试数据的显示;
第四个文本区域用于“插入排序”按钮按下之后产生的数组的显示和排序的各种测试数据的显示;
③ 为程序添加事件处理机制。为“产生随机数”、“新建文件”、“保存文件”“冒泡排序”“直接选择排序”“插入排序” 添加事件处理 ⅱ为数组输入文本框添加事件处理
实验总结和体会:
①最初在安排基本类MySort类和其派生类BubbleSort,SelectSort,InsertSort类时,由于没把MySort类设为public,总是出现mysort.MySort在mysort不是公共的,无法从外部软件包对其进行访问;在编译区域出现了
at mysort.JFileChooserTest$3.actionPerformed(JFileChooserTest.java:132)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
等等的错误;
②在把第一个文本区域的内容由数组的整型形式转化为文本形式显示,用到 random[i]=rand.nextInt(n-1); ta.append(random[i]+\
把它由外部文件读入的字符类型转化为整型数组进行三种排序需要用split()分割文件中的内容到数组。
③最初使用由于未使用ta1[i].setText(\,导致在各个文本域中一旦出现了排序结果就无法显示第二次产生排序的结果
④使用Date去获得的时间较准确,整个JFileChooserTest的类中都使用匿名内部类,我参照了书本的格式,这样虽然对特定的各事件是比较难理解,但是对类中的各个按钮的侦听事件来看确实比较直观;
⑤不足之处:该实验的界面没有清空功能,当第二次点击产生随机数时就会覆盖文本区域上次的数据,使用JChooser的showOpenDialog方法未能在图形界面上显示打开的文件全路径,但是只要使用getName()可完成;未能在J_Thread方法中简化各个case中的冗余代码 实验的运行界面如下:
共分享92篇相关文档