Java数组编辑器 课程设计报告文档格式.docx
《Java数组编辑器 课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《Java数组编辑器 课程设计报告文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
![Java数组编辑器 课程设计报告文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/24/13f5487d-3f70-4208-9e3b-3725aadfd95f/13f5487d-3f70-4208-9e3b-3725aadfd95f1.gif)
四、类图
ShuZu类
五、程序截图
六、源代码
package数组编辑;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.util.Arrays;
importjava.util.Scanner;
publicclassShuZuextendsJFrameimplementsActionListener{
JMenuBarmnb;
//菜单栏
JMenuwenjian,bianji;
//菜单
JMenuItemxinjian,tuichu;
//菜单项
JMenuItemchazhao,paixu,charu,shanchu,xiugai;
double[]a;
//数组
intlen=0;
//当前数组元素个数
intN;
//数组的最大长度
//添加方法所需控件
JTextFieldt1,t2;
JButtonb1,b2;
//排序方法所需控件
JComboBoxc1;
JTextAreaa1;
//插入方法所需控件
JTextFieldt3;
JButtonb3;
//删除方法所需控件
JComboBoxc2;
JTextFieldt4;
JButtonb4;
//修改方法所需控件
JComboBoxc3;
JTextFieldt5,t6;
JButtonb5;
ShuZu()//构造方法
{
super("
数组编辑器"
);
editInit();
//添加菜单栏
this.setJMenuBar(mnb);
this.setBounds(200,200,600,400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
privatevoideditInit()//添加菜单栏
mnb=newJMenuBar();
wenjian=newJMenu("
文件"
bianji=newJMenu("
编辑"
mnb.add(wenjian);
mnb.add(bianji);
xinjian=newJMenuItem("
新建"
xinjian.addActionListener(this);
tuichu=newJMenuItem("
退出"
tuichu.addActionListener(this);
chazhao=newJMenuItem("
查找"
chazhao.addActionListener(this);
paixu=newJMenuItem("
排序"
paixu.addActionListener(this);
charu=newJMenuItem("
插入"
charu.addActionListener(this);
shanchu=newJMenuItem("
删除"
shanchu.addActionListener(this);
xiugai=newJMenuItem("
修改"
xiugai.addActionListener(this);
wenjian.add(xinjian);
wenjian.add(tuichu);
bianji.add(chazhao);
bianji.add(paixu);
bianji.add(charu);
bianji.add(shanchu);
bianji.add(xiugai);
}
voidxin_jian()//新建菜单项
JFramef1=newJFrame("
新建数组"
f1.setVisible(true);
f1.setBounds(300,200,500,400);
f1.setLayout(newFlowLayout(FlowLayout.LEFT,30,50));
JLabell1=newJLabel("
请输入数组长度"
t1=newJTextField(10);
b1=newJButton("
确定长度"
b1.addActionListener(this);
f1.add(l1);
f1.add(t1);
f1.add(b1);
JLabell2=newJLabel("
请输入数组元素"
t2=newJTextField(10);
b2=newJButton("
输入一个元素单击"
b2.addActionListener(this);
f1.add(l2);
f1.add(t2);
f1.add(b2);
voidcha_zhao()//查找菜单项
JFramef2=newJFrame("
数组查找"
f2.setVisible(true);
f2.setBounds(400,200,500,400);
f2.setLayout(newGridLayout(4,4,10,5));
doublemax=a[0],min=a[0],sum=0,avg;
for(inti=0;
i<
len;
i++)
{//找最值,求和
sum+=a[i];
if(a[i]>
max)
max=a[i];
if(a[i]<
min)
min=a[i];
}
avg=1.0*sum/len;
//平均数
最大值"
JTextFieldt1=newJTextField("
"
+max+"
10);
最小值"
JTextFieldt2=newJTextField("
+min+"
JLabell3=newJLabel("
总和"
JTextFieldt3=newJTextField("
+sum+"
JLabell4=newJLabel("
平均值"
JTextFieldt4=newJTextField("
+avg+"
f2.add(l1);
f2.add(t1);
f2.add(l2);
f2.add(t2);
f2.add(l3);
f2.add(t3);
f2.add(l4);
f2.add(t4);
voidpai_xu()//排序菜单项
JFramef3=newJFrame("
数组排序"
f3.setVisible(true);
f3.setBounds(400,200,300,400);
f3.setLayout(newFlowLayout(FlowLayout.LEFT,50,10));
排序方式"
c1=newJComboBox(newString[]{"
正序"
"
逆序"
});
a1=newJTextArea(15,15);
c1.addActionListener(this);
f3.add(l1);
f3.add(c1);
f3.add(newJScrollPane(a1));
voidcha_ru()//插入菜单项
JFramef4=newJFrame("
数组插入"
f4.setVisible(true);
f4.setBounds(400,200,400,200);
f4.setLayout(newFlowLayout(FlowLayout.LEFT,20,10));
请输入要插入的值"
t3=newJTextField(30);
b3=newJButton("
确定插入"
b3.addActionListener(this);
f4.add(l1);
f4.add(t3);
f4.add(b3);
voidshan_chu()//删除菜单项
JFramef5=newJFrame("
数组删除"
f5.setVisible(true);
f5.setBounds(400,200,400,200);
f5.setLayout(newFlowLayout(FlowLayout.LEFT,20,10));
请选择要执行的操作"
c2=newJComboBox(newString[]{"
要删除元素的序号"
要删除元素的数值"
t4=newJTextField(30);
b4=newJButton("
确认请单击"
b4.addActionListener(this);
f5.add(l1);
f5.add(c2);
f5.add(t4);
f5.add(b4);
voidxiu_gai()//修改菜单项
JFramef6=newJFrame("
数组修改"
f6.setVisible(true);
f6.setBounds(400,200,400,200);
f6.setLayout(newFlowLayout(FlowLayout.LEFT,20,10));
c3=newJComboBox(newString[]{"
要修改元素的序号"
要修改元素的数值"
t5=newJTextField(30);
修改后的数值"
t6=newJTextField(20);
b5=newJButton("
b5.addActionListener(this);
f6.add(l1);
f6.add(c3);
f6.add(t5);
f6.add(l2);
f6.add(t6);
f6.add(b5);
voidtui_chu()//退出菜单项
this.dispose();
//关闭窗口
publicvoidactionPerformed(ActionEvente)//响应单击事件
Objecto=e.getSource();
if(o==xinjian)
xin_jian();
//新建方法中所需控件的事件
elseif(o==b1)//确定数组的最大长度
{
N=Integer.parseInt(t1.getText());
len=0;
//数组初始化
a=newdouble[N];
elseif(o==b2)//向数组中插入元素
doublex=newDouble(t2.getText());
if(len<
N)
{
a[len]=x;
len++;
t2.setText("
}
else
t2.setText("
数组已满!
elseif(o==chazhao)
cha_zhao();
elseif(o==paixu)
pai_xu();
//排序方法中所需控件的事件
elseif(o==c1)//选择排序方式
if(c1.getSelectedItem()=="
)
//Arrays.sort(a);
//对整个数组排序
doublet;
//冒泡法排序1
for(inti=0;
len-1;
for(intj=i+1;
j<
j++)
if(a[i]>
a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
a1.setText(a1.getText()+"
正序排列\n"
);
a1.setText(a1.getText()+"
\t"
+a[i]);
\n"
elseif(c1.getSelectedItem()=="
//冒泡法排序2
for(inti=0;
for(intj=0;
len-1-i;
if(a[j]<
a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
逆序排列\n"
elseif(o==charu)
cha_ru();
//插入方法中所需控件的事件
elseif(o==b3)//向数组中插入元素
doublex=newDouble(t3.getText());
//要插入的元素
len++;
//插入完后,再排序
t3.setText("
插入成功"
数组已满,不能继续插入!
elseif(o==shanchu)
shan_chu();
//删除方法中所需控件的事件
elseif(o==b4)//删除数组中的元素
if(c2.getSelectedIndex()==0)//按序号删除
intk=Integer.parseInt(t4.getText());
//要删除元素的序号
if(k<
0||k>
=N)
t4.setText("
输入的序号越界"
else
{
for(inti=k;
i++)//把a[k+1~len-1]都向前挪一位
a[i]=a[i+1];
len--;
删除成功"
}
elseif(c2.getSelectedIndex()==1)//按数值删除
doublex=newDouble(t4.getText());
//要删除元素的数值
intn=0;
//记录删除元素的个数
)
if(a[i]==x)
for(intj=i;
a[j]=a[j+1];
n++;
else
i++;
if(n!
=0)
len=len-n;
//减去多余的元素
elseif(n==0)
找不到该元素!
elseif(o==xiugai)
xiu_gai();
//修改方法中所需控件的事件
elseif(o==b5)
if(c3.getSelectedIndex()==0)//按序号修改
intk=Integer.parseInt(t5.getText());
t6.setText("
a[k]=newDouble(t6.getText());
修改成功"
elseif(c3.getSelectedIndex()==1)//按数值修改
doublex=newDouble(t5.getText());
//判断是否修改
a[i]=newDouble(t6.getText());
n=1;
if(n==1)
数组中不存在该数值"
elseif(o==tuichu)
tui_chu();
publicstaticvoidmain(String[]args){
ShuZua=newShuZu();
}
七、心得体会
在这次Java课程设计中,我选的是数组编辑器,虽然本身是很简单的,但还是存在着一些问题,刚开始的时候对图形用户界面使用的不怎么熟悉,后来找了一些资料就大概了解了一些。
另外还有一些隐藏的很深的问题,比如说,删除的功能,如果有多个元素与要删除的数值一样的话,要把这些元素都删除,在这里我开始是使用for循环从第一个元素到最后一个元素找,如果找到有哪个元素和要删除的值相同就把他给删掉,不过在这里问题出来了,如果删除成功的话后面的都会往前进一位,然后应该要继续判断该下标的元素是否删除,而不能让下表后移。
最后通过老师和同学的帮助下,终于把这个程序给完成了。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,将结论用于实践,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中当然遇到了问题,可以说得是困难重重,毕竟这是不可避免的,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
由于能力有限,其中文档的编写是参考书上资料,我想在以后的学习中,要更注重实践这一环节。
通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到种种问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。
从设计过程看,在整整一个星期的日子里,做到精益求精,学到了很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
从设计结果看,设计要求完成任务,达到了预期的目的,设计、演示效果较好。
最主要是从中学到了知识。