《Java语言程序设计》课程设计报告 - 排序

更新时间:2023-11-12 15:26:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

JAVA语言程序设计课程设计报告书

院系名称 计算机与网络安全学院 专业班级 2015级软件工程3班 学号 姓名 指导教师 完成时间 2016年12月1-2号

目 录

1.系统功能及任务描述 1.1系统总体功能描述 1.2主要任务描述 2.系统的实现 3.系统的测试 4.总结

4.1自我评价及收获

4.2有待解决的问题及进一步完善的思路 5.参考文献 6.附录(代码附后)

1.系统功能及任务描述

1.1系统总体功能描述

本课程设计主要功能就是利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。

1.2主要任务描述

1) 至少采用两种方法实现上述问题求解(提示,可采用的方法有插入排序、冒泡排序、选择排序、交换排序等)。并把排序后的结果保存在不同的文件中。

2) 统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。

3) 如果采用4种或4种以上的方法者,可适当加分。

2.系统的实现

2.1开发环境

2.1.1工具

Eclipse:版本 Mars.1 Release (4.5.1),windows 64位

JDK:版本jdk-7u51-windows-x64.exe

2.1.2 电脑机型

华硕R556L,系统64位

2.2界面设计

界面采用Swing轻量级组件开发,在1个JFrame窗体中放置5个JLabel标签,5个JButton按钮,3个JTextField文本框。

2.3 类设计

2.4 主要代码说明

2.4.1 主要按钮触发事件

2.4.1.1 “确定”按钮

给“确定”按钮添加事件监听器addActionListener方法,内部类里实现actionPerformed(ActionEvent e)方法,获取文本框JTextField的数据,然后产生随机数,用LinkedList集合存储进RandomNumber.txt文件,方便增加删除。

//确定按钮事件

jButton_confirm.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) { // TODO 自动生成的方法存根

//集合,用于存储数据

LinkedList linkedList = new

LinkedList();

//获取文本框数据 int begin =

Integer.parseInt(jTextField_begin.getText());

int end = Integer.parseInt(jTextField_end.getText()); int num = Integer.parseInt(jTextField_num.getText());

//产生随机数

for(int i=0;i

int temp = (int) (Math.random() * (end-begin))+begin; linkedList.add(temp); }

//输出到屏幕

for(int i=0;i

System.out.println(\随机数---\+linkedList.get(i)); }

System.out.println(\随机数个数------------------\+linkedList.size());

//存储到RandomNumber.txt文件中

File file = new File(\); try {

OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file),\);

BufferedWriter bufferedWriter = new BufferedWriter(write);

for(int i=0;i

String str = String.valueOf(linkedList.get(i)); String string = new String(str.getBytes(\),\);

bufferedWriter.write(string+'\\n'); }

bufferedWriter.close(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); }

//读取RandomNumber.txt文件 InputStreamReader reader; try {

reader = new InputStreamReader(new FileInputStream(file),\);

BufferedReader bufferedReader = new BufferedReader(reader);

String line = null; try { while ((line = bufferedReader.readLine()) != null) {

System.out.println(\文件---\+line);

}

bufferedReader.close(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); }

} catch (UnsupportedEncodingException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace();

} catch (FileNotFoundException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } }

});

2.4.1.1 “冒泡”按钮

同样给“冒泡”按钮添加监听器,在actionPerformed(ActionEvent e)方法里创建Bubble类对象,重新创建一个新的LinkedList集合,接着顺序调用Bubble中 readerToFile()

bubbleSort(linkedList)

writerToFile(linkedList)三个方法,

其中将在bubbleSort()方法前后获取当前系统时间,最后得到排序所用时间,显示在窗体中。

//冒泡排序事件

jButton_bubble.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) { // TODO 自动生成的方法存根

Bubble bubble = new Bubble();

LinkedList linkedList = new LinkedList();

linkedList = bubble.readerToFile();

long begin = System.currentTimeMillis(); linkedList = bubble.bubbleSort(linkedList); long end = System.currentTimeMillis(); jLabel_time.setText(\冒泡排序所用时间:\+String.valueOf(end-begin)+\);

bubble.writerToFile(linkedList); } });

2.4.2 排序函数

2.4.2.1 冒泡排序 //冒泡排序

LinkedList bubbleSort(LinkedList linkedList){ int i,j;

Integer temp;

for(i=0;i

for(j=1;j

linkedList.set(j, linkedList.get(j-1)); linkedList.set((j-1), temp); } } }

System.out.println(\排序后********\+linkedList); //排序后 return linkedList; }

2.4.2.2 直接插入排序 //直接插入排序

LinkedList directInsertSort(LinkedList linkedList){ int i,j;

Integer temp;

for(i=0;i

while(j>=0 && temp

linkedList.set((j+1), linkedList.get(j)); j--; }

linkedList.set((j+1), temp); }

System.out.println(\排序后********\+linkedList); //排序后 return linkedList; }

2.4.2.2 直接选择排序

//直接选择排序

LinkedList directSelectSort(LinkedList linkedList){

int i,j,k; Integer temp;

for(i=0;i

for(j=i+1;j

if(linkedList.get(j)

temp = linkedList.get(i);

linkedList.set(i, linkedList.get(k)); linkedList.set(k, temp); } } }

System.out.println(\排序后********\+linkedList); //排序后 return linkedList; }

2.4.2.2 快速排序

//直接选择排序

LinkedList quickSort(LinkedList linkedList,int s,int t){ int i=s,j=t; int temp; if(s

temp = linkedList.get(s); while(i!=j){

while(j>i && linkedList.get(j)>=temp) j--;

linkedList.set(i, linkedList.get(j)); while(i

linkedList.set(j, linkedList.get(i)); }

linkedList.set(i, temp);

quickSort(linkedList,s,i-1); quickSort(linkedList, i+1, t); }

return linkedList; }

3.系统的测试

3.1 排序测试

先测试产生5个随机数,并依次点击“冒泡”、“直接插入”、“直接选择”、“快速”排序按钮,输出链表,结果正确。(出现0ms原因:随机数太少,CPU运行速度太快)

}

}

e1.printStackTrace();

} catch (FileNotFoundException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); }

return linkedList;

6.2 Bubble类

import java.io.*;

import java.util.LinkedList;

public class Bubble {

void writerToFile(LinkedList linkedList){ //存储到Bubble.txt文件中

File file = new File(\ try {

OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file),\

BufferedWriter bufferedWriter = new BufferedWriter(write);

for(int i=0;i

String str = String.valueOf(linkedList.get(i)); String string = new

String(str.getBytes(\

bufferedWriter.write(string+'\\n'); }

bufferedWriter.close(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } }

//冒泡排序

LinkedList bubbleSort(LinkedList linkedList){ int i,j;

Integer temp;

for(i=0;i

for(j=1;j

linkedList.set(j, linkedList.get(j-1)); linkedList.set((j-1), temp); } } }

return linkedList; }

LinkedList readerToFile(){

LinkedList linkedList = new LinkedList(); File file = new File(\ InputStreamReader reader; try {

reader = new InputStreamReader(new FileInputStream(file),\

BufferedReader bufferedReader = new BufferedReader(reader); String line = null; try {

while ((line = bufferedReader.readLine()) != null) { int temp = Integer.parseInt(line);

//System.out.println(\ linkedList.add(temp); }

bufferedReader.close(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); }

} catch (UnsupportedEncodingException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace();

} catch (FileNotFoundException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace();

}

}

return linkedList; }

6.3 DirectInsert类

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;

import java.io.InputStreamReader; import java.io.OutputStreamWriter;

import java.io.UnsupportedEncodingException; import java.util.LinkedList;

public class DirectInsert {

void writerToFile(LinkedList linkedList){ //存储到DirectInsert.txt文件中

File file = new File(\ try {

OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file),\

BufferedWriter bufferedWriter = new BufferedWriter(write);

for(int i=0;i

String str = String.valueOf(linkedList.get(i)); String string = new

String(str.getBytes(\

bufferedWriter.write(string+'\\n'); }

bufferedWriter.close(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } }

//直接插入排序

LinkedList directInsertSort(LinkedList linkedList){

int i,j;

Integer temp;

for(i=0;i

while(j>=0 && temp

linkedList.set((j+1), linkedList.get(j)); j--; }

linkedList.set((j+1), temp); }

return linkedList; }

LinkedList readerToFile(){

LinkedList linkedList = new LinkedList(); File file = new File(\ InputStreamReader reader; try {

reader = new InputStreamReader(new FileInputStream(file),\

BufferedReader bufferedReader = new BufferedReader(reader); String line = null; try {

while ((line = bufferedReader.readLine()) != null) { int temp = Integer.parseInt(line);

//System.out.println(\ linkedList.add(temp); }

bufferedReader.close(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); }

} catch (UnsupportedEncodingException e1) { // TODO 自动生成的 catch 块

}

}

e1.printStackTrace();

} catch (FileNotFoundException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); }

return linkedList;

6.4 DirectSelect类

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File;

import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter;

import java.io.UnsupportedEncodingException; import java.util.LinkedList;

public class DirectSelect {

void writerToFile(LinkedList linkedList){

//存储到DirectSelect.txt文件中

File file = new File(\try {

OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file),\

BufferedWriter BufferedWriter(write);

bufferedWriter = new

for(int i=0;i

String str = String.valueOf(linkedList.get(i));

=

new

String string String(str.getBytes(\

}

//直接选择排序

}

bufferedWriter.close();

bufferedWriter.write(string+'\\n');

} catch (IOException e1) { }

// TODO 自动生成的 catch 块 e1.printStackTrace();

LinkedList linkedList){

int i,j,k; Integer temp;

directSelectSort(LinkedList

for(i=0;i

k = i;

for(j=i+1;j

if(linkedList.get(j)

k = j;

if(k!=i){

temp = linkedList.get(i);

linkedList.set(i, linkedList.get(k)); linkedList.set(k, temp);

}

}

}

排序后

}

System.out.println(\直接选择排序后********\return linkedList;

LinkedList readerToFile(){

LinkedList linkedList = new LinkedList(); File file = new File(\InputStreamReader reader; try {

new

InputStreamReader(new

=

new

reader = FileInputStream(file),\ BufferedReader BufferedReader(reader);

bufferedReader

String line = null; try {

while ((line = bufferedReader.readLine()) != null) { int temp = Integer.parseInt(line); //System.out.println(\ linkedList.add(temp); }

bufferedReader.close();

} catch (IOException e1) { }

// TODO 自动生成的 catch 块 e1.printStackTrace();

}

}

} catch (UnsupportedEncodingException e1) {

// TODO 自动生成的 catch 块 e1.printStackTrace();

} catch (FileNotFoundException e1) { }

return linkedList;

// TODO 自动生成的 catch 块 e1.printStackTrace();

6.5 Quick类

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;

import java.io.InputStreamReader; import java.io.OutputStreamWriter;

import java.io.UnsupportedEncodingException; import java.util.LinkedList;

public class Quick {

void writerToFile(LinkedList linkedList){ //存储到Quick.txt文件中

File file = new File(\); try {

OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(file),\);

BufferedWriter bufferedWriter = new BufferedWriter(write);

for(int i=0;i

String str = String.valueOf(linkedList.get(i)); String string = new

String(str.getBytes(\),\);

bufferedWriter.write(string+'\\n'); }

bufferedWriter.close(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); } }

//直接选择排序

LinkedList quickSort(LinkedList linkedList,int s,int t){ int i=s,j=t; int temp; if(s

temp = linkedList.get(s); while(i!=j){

while(j>i && linkedList.get(j)>=temp) j--;

linkedList.set(i, linkedList.get(j)); while(i

linkedList.set(j, linkedList.get(i)); }

linkedList.set(i, temp);

quickSort(linkedList,s,i-1); quickSort(linkedList, i+1, t); }

return linkedList; }

LinkedList readerToFile(){

LinkedList linkedList = new LinkedList(); File file = new File(\); InputStreamReader reader; try {

reader = new InputStreamReader(new FileInputStream(file),\);

BufferedReader bufferedReader = new BufferedReader(reader);

}

}

String line = null; try {

while ((line = bufferedReader.readLine()) != null) { int temp = Integer.parseInt(line);

//System.out.println(\ linkedList.add(temp); }

bufferedReader.close(); } catch (IOException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); }

} catch (UnsupportedEncodingException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace();

} catch (FileNotFoundException e1) { // TODO 自动生成的 catch 块 e1.printStackTrace(); }

return linkedList;

本文来源:https://www.bwwdw.com/article/ujlv.html

Top