任务1
博文评价
博文链接
评论要点 |
点评内容 |
博文结构 |
博文的整个结构清楚,阅读起来流畅清晰。 |
博文内容 |
每个部分的内容都比较完善,不足的就是应该区分需求分析与功能设计,再是在粘贴主要代码时应该选择自己的关键代码或是区别于他人的代码 |
博文结构与PSP中“任务内容”列的关系 |
总的来说整个博文结构与PSP内容列中的内容都比较符合,但在PSP中的编码时间较大的区别于其他阶段的时间,但在博文中对这个阶段的问题没有过多的介绍。 |
PSP中“计划共完成需要的时间”与“实际完成需要的时间”两列数据的差异化分析与原因探究 |
从表中可以看出导致项目计划共完成需要的时间与实际完成需要的时间有出入主要是因为对之前学习的知识没有经常练习,时间一长就生疏了。再是编写代码的能力应该更进一步的提高。 |
点评心得:经过阅读同伴的博文,我发现每个人的博文都有其出彩的地方。在今后的学习中我应该多加学习别人的长处,弥补自己的不足。
软件评价
代码链接
评论要点 |
点评内容 |
软件结构 |
软件结构比较清楚,函数之间的耦合度低。 |
代码规范 |
代码的规范性好,能够让读者一目了然。 |
功能实现 |
功能实现的部分略有瑕疵。基本的功能也都实现了,但在柱状图的部分没有用可视化界面显示,比较大的是我就是在词频统计的时候没有辨别出字母和符号的区别,所以在词频统计时会将符号错当单词统计。 |
人机交互 |
这部分的功能还有待改进。希望能够进一步改进代码,更好的实现人机交互。 |
点评心得:通过和同伴代码的比较,我发现自己的代码还有很多的缺点,例如模块的划分不够清楚,代码的规范程度也不够好,今后应该多家改进。
任务2
a. 需求分析
-实验2要求的功能
-单词频数可视化柱状图
-统计该文本行数及字符数
-各种统计功能均提供计时功能,显示程序统计所消耗时间(单位:ms)
-可处理任意用户导入的任意英文文本
-人机交互界面要求GUI界面(WEB页面、APP页面都可)
-附加分功能:统计文本中除冠词、代词、介词之外的高频词
-附加分功能:统计前10个两个单词组成的词组频率。
b. 软件设计:使用类图
c. 核心功能代码展示 :展示核心功能代码
/*查找并读取文本*/
``
okbt.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource()==okbt) {
String src = t1.getText();
File file =new File(src);
FileReader reader = null;
try {
reader = new FileReader(src);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(!file.exists())
{
JOptionPane.showConfirmDialog(null, "请输入正确的文件名","查找结果",JOptionPane.DEFAULT_OPTION);
}
BufferedReader br = new BufferedReader(reader);
String readline = null;
int row=0;
int wordnumber=0;
long startTime = System.currentTimeMillis(); //获取开始时间
ArrayList<String> lists = new ArrayList<String>();
try {
while ((readline = br.readLine()) != null)
{
String[] wordsArray=readline.split("[^a-zA-Z]");
for(String word :wordsArray)
{
if(word.length() != 0)
{
word=word.toLowerCase();
lists.add(word);
}
}
row++;
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println(row);
try {
br.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
wordMap=new HashMap<String,Integer>();
for (String l : lists)
{
if(wordMap.get(l) != null)
{
wordMap.put(l,wordMap.get(l) + 1);
}else
{
wordMap.put(l,1);
}
wordnumber++;
}
long endTime = System.currentTimeMillis(); //获取结束时间
JOptionPane.showConfirmDialog(t1, "文本统计完成!"+"
文本统计所消耗时间:"+ (endTime - startTime)+"
文本行数有:"+row+" 单词数:"+wordnumber,"结果",JOptionPane.DEFAULT_OPTION);
}
}
});
lab1.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e) {
// 处理鼠标点击
JFrame outframe=new JFrame();
outframe.setBounds(50, 50, 500, 400);
JPanel outp=new JPanel();
outp.setBounds(50, 50,100,100);
outframe.setLayout(new GridLayout(3,5));
JTextField inputField = new JTextField(10);
JLabel inputLab=new JLabel ("请输入要查询的单词: ");
//inputLab.setBounds(20, 80, 150, 50);
//inputField.setBounds(20, 80, 150, 50);
JButton insertButton = new JButton("确定");
outp.add(inputLab);
outp.add(inputField);
outp.add(insertButton);
outframe.add(outp);
JTextArea textArea= new JTextArea(TEXTAREA_ROWS,TEXTAREA_COLUMNS);
JPanel southPanel=new JPanel();
southPanel.setBounds(50, 50,200,200);
southPanel.add(textArea);
outframe.add(southPanel,BorderLayout.CENTER);
outframe.setVisible(true);
insertButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource()==insertButton) {
Wordcount wc = new Wordcount();
String s= new String(inputField.getText());
wc.count(wordMap,s,outp,outframe,textArea);
}
}
});
}
d. 程序运行:程序运行时每个功能界面截图
首页面:
读取任意文件(包括统计文本行数,字符数,文本统计时间):
查找单词词频:
查看高频单词词频:
查看单词柱状图:
按序存储单词到result.txt
####附加功能:统计文本中除冠词、代词、介词之外的高频词
退出程序:
e. 描述结对的过程,提供两人在讨论、细化和编程时的结对照片(非摆拍)
f. 提供此次结对作业的PSP。
任务内容 |
计划完成需要的时间(min) |
实际完成需要的时间(main) |
计划 |
30 |
25 |
估计这个任务需要多少时间,并规划大致工作步骤 |
40 |
30 |
开发 |
240 |
300 |
需求分析 |
30 |
25 |
生成设计文档 |
60 |
50 |
设计复审 (和同学审核设计文档) |
20 |
25 |
代码规范 (为目前的开发制定合适的规范) |
10 |
15 |
具体设计 |
30 |
30 |
具体编码 |
300 |
350 |
代码复审 |
20 |
25 |
测试(自我测试,修改代码,提交修改) |
20 |
15 |
报告 |
30 |
45 |
测试报告 |
30 |
25 |
计算工作量 |
20 |
15 |
事后总结 ,并提出过程改进计划 |
60 |
45 |
g. 小结感受:经过此次和同学一起合作开发同一个软件,我发现两人合作真的能够带来1+1>2的效果,因为每个人都有自己擅长的方面,所以通过合作能够实现互补,而且也能够学习到他人身上的优点和长处。目前的项目是两个人,但在以后的学习中难免会遇到需要更多人合作的项目。而此次合作也能够培养我们和他人合作的能力。
任务3
项目 |
内容 |
软件工程 |
任课教师博客主页链接 |
(1)掌握软件项目个人开发流程。(2)掌握Github上发布软件项目的操作方法。 |
作业链接地址 |
课程学习目标:学会团对合作,提高自身编程能力。 |
熟悉软件开发整体流程,提升自身能力 |
本次作业在哪个具体方面帮助我们实现目标:本次作业可以帮助我们如何与同伴合作开发一个项目,也可以让我们在与同伴相处的过程中互相学习对方的长处和优点 |
第一次体验一个完整的工程 |