- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《高级语言程序设计2》课程设计报告——矩阵乘法
《高级语言程序设计(2)》课程设计报告
程序设计说明书
【设计题目】矩阵乘法演示程序
【问题描述】
用java编写一个矩阵乘法演示程序。主要表现多线程运算的过程。要求能用图形界面表现出比较形象的过程,两个矩阵数据随机生成,结果矩阵的每个元素各是一个线程的运行结果。
【软件功能】
定义矩阵类;
进行矩阵的乘法运算;
读取用户输入的行数与列数,随机生成矩阵;
实现GUI界面;
响应鼠标事件。
【算法思想】
输入矩阵的行数、列数后创建可变数组,并对数组赋值,然后用多线程同时计算,每一个线程计算出的结果即为结果矩阵的行元素。在多线程计算中,每个线程都是用矩阵1的行元素去乘矩阵2的列元素,每一行乘每一列的结果即为结果矩阵的一个元素。
【类的设计】
类MatrixMultiply:实现GUI,创建数组用来保存矩阵,显示数组;
内部类MultiplyThread:用多线程实现矩阵乘法。
【用户界面】
【程序技巧】
将实现多线程矩阵乘法的类定义为内部类,减少对象的调用传送参数等;
数组用ArrayList定义为可变数组;
矩阵相乘用多线程实现,提高运算效率。
【模块划分及调用关系】
主类MatrixMultiply调用内部类MultiplyThread进行多线程矩阵乘法的计算
【模块流程图】
【运行说明】
程序运行后,在对应的文本框内输入相应矩阵的列数和行数,再单击“确定”按钮,即可得到矩阵1和矩阵2的结果;如想进行第二次运算,单击“重置”按钮,然后重复第一次操作即可。
程序上机调试报告
【语法错误及其排除】
调用createArray()方法时格式错误,起先为createArray(rows_1, columns_1),结果不能创建矩阵,最后改为matrix_1 = createArray(rows_1, columns_1)。
数组类型定义错误,起先定义为ArrayList,结果生成的可变二维数组行列无法相乘,最后改为ArrayListArrayList。
【算法错误及其排除】
起初用多线程计算矩阵时,将一个线程所得的结果定义为结果矩阵的一个元素,每次线程只计算矩阵1的行元素乘矩阵2的列元素;最后将一个线程所得的结果定义为结果矩阵的行元素,每个线程计算矩阵1的行元素乘以矩阵2的所有列元素。
程序测试结果
【测试数据】
第一组:矩阵1:行数 4 列数 5 矩阵2:行数 5 列数 7
第二组:矩阵1:行数 6 列数 7 矩阵2:行数 7 列数 4
【输出结果】
第一组:
第二组:
【收获及体会】
源程序代码
import java.awt.*;
import java.lang.reflect.Array;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.event.*;
public class MatrixMultiply extends JFrame implements ActionListener{
private JButton jbtOk = new JButton(确定);
private JButton jbtCancel = new JButton(重置);
private JTextField jtf_1 = new JTextField(4);
private JTextField jtf_2 = new JTextField(4);
private JTextField jtf_3 = new JTextField(4);
private JTextField jtf_4 = new JTextField(4);
JTable jta1 = new JTable(10, 10);
JTable jta2 = new JTable(10, 10);
JTable jta3 = new JTable(10, 10);
static Scanner input = new Scanner(System.in);
//用ArrayList创建三个动态数组
static ArrayListArrayList matrix_1, matrix_2, matrix_3;
//声明四个变量,分别用来表示矩阵的行数、列数
static int rows_1, rows_2, columns_1, columns_2;
public MatrixMultiply(){
JPanel p1 = new JPanel(new FlowLayout(1, 5, 0));
JPanel p2 = new JP
文档评论(0)