Lab 1:结对编程

这篇博客详细介绍了在Lab 1中如何通过结对编程来实现一个Java命令行程序,该程序从文本文件中读取数据并生成有向图。程序实现了展示有向图、查询桥接词、根据桥接词生成新文本、计算最短路径和随机游走等功能。使用邻接矩阵存储图,并展示了具体的算法流程和数据结构设计。实验结果表明,结对编程提高了编程效率和质量,减少了bug,并在敏捷开发中被倡导。
摘要由CSDN通过智能技术生成


1. 实验要求

练习结对编程,体验敏捷开发中的两人合作。

开发一个Java命令行程序,实现从文本文件中读取数据并根据要求生成图结构,输出该图结构,并在其上进行一系列计算操作,实时展示各操作的结果。

  1. 待求解问题描述与数学模型

1.文本的读入以及有向图的生成

输入数据为文本文件,文本文件包含用英文书写的文本数据,将一切标点符号,回车

符以及换行符默认为空格,忽略一切非字母的字符。有向图的节点为文本中包含的单

词(不区分大小写),两个单词相邻即存在一条有向边(相邻是在进行处理以后的相

邻关系),边的权重是指该边在文中出现的次数。

2.展示有向图

可视化展示生成的有向图。

3.查询桥接词

      用户输入两个英文单词,当图中存在word1->word3->word2的路时,word3即为word1

word2的桥接词,程序可以给出当输入单词不存在于图中的错误提示。

4.根据桥接词生成新文本

用户输入一段新文本,对于文本的处理方式与1中相同,在建立好的有向图中查找新文本中每两个相邻单词中间的桥接词,如果存在的话将其插入,不存在则跳过,按照这种规则生成新的文本,新的文本除了加入的桥接词以外不可以有其他的变化。

5.计算两个单词之间的最短路径

  用户输入两个单词,给出两个单词之间的最短路径

6.随机游走

  从图中随机一个节点随机的对图进行遍历知道没有边为止,用户可以随时停止遍历

  1. 算法与数据结构设计
  1. 3.1.设计思路与算法流程图

根据文本生成图:将文本读入成字符串,将字符串中的除了英文字母以外的其他字符全部替换成空格,并将所有字母全部变成小写,再将由于替换产生的长空格用一个空格替换,

将此时的字符串用空格分隔成数组words,再将其中重复的单词删除掉得到真正的节点数组dots,通过遍历words数组判断单词是否相邻,采用邻接矩阵来存储有向图

展示图:遍历每一个节点,输出以其为头的边

查询桥接词:首先查询输入的词是否都在图中,若不在给出相应的错误提示,如果都存在于图中则遍历图中的每一个节点来判断是否符合桥接词的定义,将所有桥接词以逗号连接形成字符串作为函数返回值,在主函数中进行输出格式的处理

根据桥接词生成新文本:将用户输入的文本按照在生成图的过程中生成words数组的方法生成存有输入文本的words数组,遍历该数组,调用查询桥接词的函数判断相邻单词之间的桥接词,若不存在桥接词将用户输入文本的这部分内容输出,若存在则先输出第一个单词的部分再输出桥接词最后输出第二个单词的部分(因为已经对于用户输入的文本进行了改变,因此在输出的过程中应该找到单词对应的原字符串中相应部分进行输出。

计算最短路径:利用Floyd算法,通过邻接矩阵记录每两个相邻单词之间的边的权值,没有边的权值置为MAX。如果A[i][k]+A[k][j]<A[i][j]就把A[i][j]更新成新的更短的路径长度,并用P[i][j]记录更新的路径经过的点k。最后在单词数组里匹配用户输入的起点和终点,在二维数组A中查找最短路径,循环遍历A[start][k],最后将得到的路径上的点k倒序输出。 

随机游走:通过随机产生游走的第一个节点,在此后的游走过程中在每进行下一步游走之前都通过用户输入的是否进行游走的信号来判断是否继续,每一步的游走都通过随机产生,直到停止或者用户要求停止为止

  1. 3.2.数据结构设计

G采用邻接矩阵的方式进行存储,其中包括

存储节点的数组,存储权值的数组,以及点的个数和边的个数


  1. 实验与测试

设计1个至少包含50个单词的输入文本文件,使之可覆盖本题目中关于输入文件和功能的各种特殊情况,作为你开发的程序的输入。

针对在有向图上操作的每项功能,为其设计各种可能的输入数据。输入数据的数量不限,以测试程序的充分性为评判标准(下面各节中的表格的行数请自行扩展)。


记录程序的输出结果,判断输出结果是否与期望一致,并记录程序运行截图。

  1. 4.1.读取文本文件并展示有向图

文本文件中包含的内容:

Over the past three decades, Chinese economy is booming. The world is watching China and many foreigners have realized the importance of seeking cooperation, so they want to do business with Chinese people and learning our language works better. Confucius institute provides the place to learn mandarin.As the world is crazy about Chinese, more and more foreigners have interest in our language and culture.


期望生成的图(手工计算得到):

over -> the: 1; 
the -> past: 1; 
the -> world: 2; 
the -> importance: 1; 
the -> place: 1; 
past -> three: 1; 
three -> decades: 1; 
decades -> chinese: 1; 
chinese -> economy: 1; 
chinese -> people: 1; 
chinese -> more: 1; 
economy -> is: 1; 
is -> booming: 1; 
is -> watching: 1; 
is -> crazy: 1; 
booming -> the: 1; 
world -> is: 2; 
watching -> china: 1; 
china -> and: 1; 
and -> many: 1; 
and -> learning: 1; 
and -> more: 1; 
and -> culture: 1; 
many -> foreigners: 1; 
foreigners -> have: 2; 
have -> realized: 1; 
have -> interest: 1; 
realized -> the: 1; 
importance -> of: 1; 
of -> seeking: 1; 
seeking -> cooperation: 1; 
cooperation -> so: 1; 
so -> they: 1; 
they -> want: 1; 
want -> to: 1; 
to -> do: 1; 
to -> learn: 1; 
do -> business: 1; 
business -> with: 1; 
with -> chinese: 1; 
people -> and: 1; 
learning -> our: 1; 
our -> language: 2; 
language -> and: 1; 
language -> works: 1; 
works -> better: 1; 
better -> confucius: 1; 
confucius -> institute: 1; 
institute -> provides: 1; 
provides -> the: 1; 
place -> to: 1; 
learn -> mandarin: 1; 
mandarin -> as: 1; 
as -> the: 1; 
crazy -> about: 1; 
about -> chinese: 1; 
more -> and: 1; 
more -> foreigners: 1; 
interest -> in: 1; 
in -> our: 1;


程序实际生成的图:

over -> the: 1; 
the -> past: 1; 
the -> world: 2; 
the -> importance: 1; 
the -> place: 1; 
past -> three: 1; 
three -> decades: 1; 
decades -> chinese: 1; 
chinese -> economy: 1; 
chinese -> people: 1; 
chinese -> more: 1; 
economy -> is: 1; 
is -> booming: 1; 
is -> watching: 1; 
is -> crazy: 1; 
booming -> the: 1; 
world -> is: 2; 
watching -> china: 1; 
china -> and: 1; 
and -> many: 1; 
and -> learning: 1; 
and -> more: 1; 
and -> culture: 1; 
many -> foreigners: 1; 
foreigners -> have: 2; 
have -> realized: 1; 
have -> interest: 1; 
realized -> the: 1; 
importance -> of: 1; 
of -> seeking: 1; 
seeking -> cooperation: 1; 
cooperation -> so: 1; 
so -> they: 1; 
they -> want: 1; 
want -> to: 1; 
to -> do: 1; 
to -> learn: 1; 
do -> business: 1; 
business -> with: 1; 
with -> chinese: 1; 
people -> and: 1; 
learning -> our: 1; 
our -> language: 2; 
language -> and: 1; 
language -> works: 1; 
works -> better: 1; 
better -> confucius: 1; 
confucius -> institute: 1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值