本科毕业设计论文《java语言程序设计》课程设计报告排序.docx

上传人:b****8 文档编号:12071159 上传时间:2023-06-04 格式:DOCX 页数:31 大小:781.53KB
下载 相关 举报
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第1页
第1页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第2页
第2页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第3页
第3页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第4页
第4页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第5页
第5页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第6页
第6页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第7页
第7页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第8页
第8页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第9页
第9页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第10页
第10页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第11页
第11页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第12页
第12页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第13页
第13页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第14页
第14页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第15页
第15页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第16页
第16页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第17页
第17页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第18页
第18页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第19页
第19页 / 共31页
本科毕业设计论文《java语言程序设计》课程设计报告排序.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

本科毕业设计论文《java语言程序设计》课程设计报告排序.docx

《本科毕业设计论文《java语言程序设计》课程设计报告排序.docx》由会员分享,可在线阅读,更多相关《本科毕业设计论文《java语言程序设计》课程设计报告排序.docx(31页珍藏版)》请在冰点文库上搜索。

本科毕业设计论文《java语言程序设计》课程设计报告排序.docx

本科毕业设计论文《java语言程序设计》课程设计报告排序

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.1Release(4.5.1),windows64位

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(ActionEvente)方法,获取文本框JTextField的数据,然后产生随机数,用LinkedList集合存储进RandomNumber.txt文件,方便增加删除。

//确定按钮事件

jButton_confirm.addActionListener(newActionListener(){

@Override

publicvoidactionPerformed(ActionEvente){

//TODO自动生成的方法存根

//集合,用于存储数据

LinkedListlinkedList=newLinkedList();

//获取文本框数据

intbegin=Integer.parseInt(jTextField_begin.getText());

intend=Integer.parseInt(jTextField_end.getText());

intnum=Integer.parseInt(jTextField_num.getText());

//产生随机数

for(inti=0;i

inttemp=(int)(Math.random()*(end-begin))+begin;

linkedList.add(temp);

}

//输出到屏幕

for(inti=0;i

System.out.println("Random随机数---"+linkedList.get(i));

}

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

//存储到RandomNumber.txt文件中

Filefile=newFile("RandomNumber.txt");

try{

OutputStreamWriterwrite=newOutputStreamWriter(newFileOutputStream(file),"UTF-8");

BufferedWriterbufferedWriter=newBufferedWriter(write);

for(inti=0;i

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

Stringstring=newString(str.getBytes("iso8859-1"),"UTF-8");

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

}

bufferedWriter.close();

}catch(IOExceptione1){

//TODO自动生成的catch块

e1.printStackTrace();

}

//读取RandomNumber.txt文件

InputStreamReaderreader;

try{

reader=newInputStreamReader(newFileInputStream(file),"UTF-8");

BufferedReaderbufferedReader=newBufferedReader(reader);

Stringline=null;

try{

while((line=bufferedReader.readLine())!

=null){

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

}

bufferedReader.close();

}catch(IOExceptione1){

//TODO自动生成的catch块

e1.printStackTrace();

}

}catch(UnsupportedEncodingExceptione1){

//TODO自动生成的catch块

e1.printStackTrace();

}catch(FileNotFoundExceptione1){

//TODO自动生成的catch块

e1.printStackTrace();

}

}

});

 

2.4.1.1“冒泡”按钮

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

readerToFile()

bubbleSort(linkedList)

writerToFile(linkedList)三个方法,

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

 

//冒泡排序事件

jButton_bubble.addActionListener(newActionListener(){

@Override

publicvoidactionPerformed(ActionEvente){

//TODO自动生成的方法存根

Bubblebubble=newBubble();

LinkedListlinkedList=newLinkedList();

linkedList=bubble.readerToFile();

longbegin=System.currentTimeMillis();

linkedList=bubble.bubbleSort(linkedList);

longend=System.currentTimeMillis();

jLabel_time.setText("冒泡排序所用时间:

"+String.valueOf(end-begin)+"ms");

bubble.writerToFile(linkedList);

}

});

 

2.4.2排序函数

2.4.2.1冒泡排序

//冒泡排序

LinkedListbubbleSort(LinkedListlinkedList){

inti,j;

Integertemp;

for(i=0;i

for(j=1;j

if(linkedList.get(j)

temp=linkedList.get(j);

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

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

}

}

}

System.out.println("排序后********"+linkedList);//排序后

returnlinkedList;

}

 

2.4.2.2直接插入排序

//直接插入排序

LinkedListdirectInsertSort(LinkedListlinkedList){

inti,j;

Integertemp;

for(i=0;i

temp=linkedList.get(i);

j=i-1;

while(j>=0&&temp

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

j--;

}

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

}

System.out.println("排序后********"+linkedList);//排序后

returnlinkedList;

}

2.4.2.2直接选择排序

//直接选择排序

LinkedListdirectSelectSort(LinkedListlinkedList){

inti,j,k;

Integertemp;

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("排序后********"+linkedList);//排序后

returnlinkedList;

}

 

2.4.2.2快速排序

//直接选择排序

LinkedListquickSort(LinkedListlinkedList,ints,intt){

inti=s,j=t;

inttemp;

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

i++;

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

}

linkedList.set(i,temp);

quickSort(linkedList,s,i-1);

quickSort(linkedList,i+1,t);

}

returnlinkedList;

}

3.系统的测试

3.1排序测试

先测试产生5个随机数,并依次点击“冒泡”、“直接插入”、“直接选择”、“快速”排序按钮,输出链表,结果正确。

(出现0ms原因:

随机数太少,CPU运行速度太快)

 

 

3.2计算时间

使用2000个随机数测试,并分别计算各排序所用时间。

(20000个数用直接插入排序我等了40分钟,还没好...可能我电脑太烂~~~~(>_<)~~~~,老师如果你电脑好一点,你试试)

1)冒泡排序用了15709ms

2)直接插入排序用了6599ms

3)直接选择排序用了22012ms

4)快速排序用了141ms

3.3文件测试

验证文件确实有数据

4.总结

4.1自我评价及收获

自我感觉良好,经过老师一年的精心栽培,最后能达到如此成果,呕心沥血做完,倍感荣幸,受益匪浅,老师之恩,来日再报!

下面是获益之处:

1)更加熟悉了各排序的方法和效率;

2)认识GUI界面设计,运用了Swing组件的几种组件,从MFC过渡到java实现界面,颇有一种从地狱到天堂的快感;

3)更加深刻的了解了IO流、文件的读取操作、乱码以及格式转换等。

4.2有待解决的问题及进一步完善的思路

1)文本框输入为空时,会报错;

2)本次界面采用绝对布局,可以考虑采用流式布局,方格式布局,减少代码的臃肿性;

3)没有美化各组件,相对原始。

5.参考文献

1)课本《java基础入门》

2)《java从入门到精通》

3)相关链接:

1.Java读取文本文件中文乱码问题

2.在线API文档

3.java中的随机数Random

4.Java如何将String转化为Int

6.附录(代码附后)

6.1RandomSort类

importjava.io.BufferedReader;

importjava.io.BufferedWriter;

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.FileNotFoundException;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.InputStreamReader;

importjava.io.OutputStreamWriter;

importjava.io.UnsupportedEncodingException;

importjava.util.LinkedList;

publicclassQuick{

voidwriterToFile(LinkedListlinkedList){

//存储到Quick.txt文件中

Filefile=newFile("Quick.txt");

try{

OutputStreamWriterwrite=newOutputStreamWriter(newFileOutputStream(file),"UTF-8");

BufferedWriterbufferedWriter=newBufferedWriter(write);

for(inti=0;i

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

Stringstring=newString(str.getBytes("iso8859-1"),"UTF-8");

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

}

bufferedWriter.close();

}catch(IOExceptione1){

//TODO自动生成的catch块

e1.printStackTrace();

}

}

//直接选择排序

LinkedListquickSort(LinkedListlinkedList,ints,intt){

inti=s,j=t;

inttemp;

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

i++;

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

}

linkedList.set(i,temp);

quickSort(linkedList,s,i-1);

quickSort(linkedList,i+1,t);

}

returnlinkedList;

}

LinkedListreaderToFile(){

LinkedListlinkedList=newLinkedList();

Filefile=newFile("RandomNumber.txt");

InputStreamReaderreader;

try{

reader=newInputStreamReader(newFileInputStream(file),"UTF-8");

BufferedReaderbufferedReader=newBufferedReader(reader);

Stringline=null;

try{

while((line=bufferedReader.readLine())!

=null){

inttemp=Integer.parseInt(line);

//System.out.println("bubble---"+temp);

linkedList.add(temp);

}

bufferedReader.close();

}catch(IOExceptione1){

//TODO自动生成的catch块

e1.printStackTrace();

}

}catch(UnsupportedEncodingExceptione1){

//TODO自动生成的catch块

e1.printStackTrace();

}catch(FileNotFoundExceptione1){

//TODO自动生成的catch块

e1.printStackTrace();

}

returnlinkedList;

}

}

6.2Bubble类

importjava.io.*;

importjava.util.LinkedList;

publicclassBubble{

voidwriterToFile(LinkedListlinkedList){

//存储到Bubble.txt文件中

Filefile=newFile("Bubble.txt");

try{

OutputStreamWriterwrite=newOutputStreamWriter(newFileOutputStream(file),"UTF-8");

BufferedWriterbufferedWriter=newBufferedWriter(write);

for(inti=0;i

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

Stringstring=newString(str.getBytes("iso8859-1"),"UTF-8");

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

}

bufferedWriter.close();

}catch(IOExceptione1){

//TODO自动生成的catch块

e1.printStackTrace();

}

}

//

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2