一.项目时间规划与实际用时

PSP2.1

Personal Software Process Stages

预计时间/h

实际时间/h

Planning

计划

 

· Estimate

· 估计这个任务需要多少时间

15

20

Development

开发

 

· Analysis

· 需求分析 (包括学习新技术)

2

2.5

· Design Spec

· 生成设计文档

0.5

0.5

· Design Review

· 设计复审 (和同事审核设计文档)

0.5

0.5

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

0.2

0.2

· Design

· 具体设计

3

4

· Coding

· 具体编码

6

10

· Code Review

· 代码复审

2

2

· Test

· 测试(自我测试,修改代码,提交修改)

2

5

Reporting

报告

 

· Test Report

· 测试报告

1

1

· Size Measurement

· 计算工作量

0.2

0.2

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

1

1

 

合计

16.4

26.9

  这次写代码我觉得我收获还是很大的,从不熟悉一个语言到感觉可以顺畅使用,是一件很棒的事情,从以前的编代码的经历来说 ,这应该是我编过比较顺利并且很有成就感的程序啦,第一是因为我这次作业很认真的并且独立思考的连贯编写,以及我后续的认真调试都是一步步走出来的,感觉以前老是交给我们的东西,真正成为了成果留在了我们的脑海里,也让我们在编程的过程中更加得心应手。不过这次作业遗憾的就是我还是没能实现所有的功能,而且有些地方的算法其实还是蛮复杂很浪费空间时间的,如果有机会的话,我会加善我的程序,并且更认真的反思我的代码编写的问题。

  二.改进程序性能

  在程序改进的过程中,我大致用了四个小时吧,首先要从思路上进行优化,由于我自己的思路有时候总是会绕个弯子,要了可能性就丢失了很多效率,但是有时候可能性自己也不能够很好的处理好,另外就是改代码的过程总是会出很多问题,编译器在编译的时候丢了个大括号总是不报警!所以这也是我从VS 2012的使用中得出的教训,写代码一定要有一个良好的架构。其次比较花时间的就是调试了,毕竟我写的代码总会有一定漏洞,在调试的过程中真的花费了很多很多的时间。

  我的程序思路就是通过随机数的生成,然后去判断我需要多少符号,根据符号去判断我需要多少个数字,然后依次生成我要的东西,拼凑成一个前缀表达式,并且最后将前缀表达式转化为中缀表达式进行输出。

  优化思路的时候我主要想到了三点:

  第一:我们在运算中出现问题的时候都是出现了负数,首先我先从数字的排序上进行了规定,在一定程度上可以避免负数的出现,其次如果在运算中还是出现了负数,那么我们将减号替换为加号或者是其他符号,这样子可以剔除了出现负数的情况,也让四则运算符合了题目的要求。

  第二:当我们式子中出现了除以0的情况,这个情况也是类比上一条,我们生成一个随机数,并且是符合题目要求的随机数,然后替换,再进行运算。

  第三:题目中还有另一个要求就是我们不能够生成重复的表达式,那么我们其实可以直接就生成不会出现重复的表达式,从而避开繁杂的检查判重操作。我为生成的数字和符号的前缀序列规定了数字降序的排列,同时利用表达式的哈希值来去除完全相同的表达式,因为表达式中的运算数遵从有序性,所以程序不会同时产生3+2+1,1+3+2这两个表达式,只会生成3+2+1,这一点可以完全排除表达式重复的情况。

  三.发现的bug

   其实我发现在运算的过程中我们使用的int类型完全不够支撑我们r比较大的时候的运算,所以我转而使用了long类型,不过其实用无符号int64会更好~但是我当时好像有点蠢,就没有修改。

   四.个人总结

  这次软件工程的开发让我切身实际感受到了现在作为一个计算机学院大三学生的一个非常有趣的地方, 就是自己可以写一写比较高难度的程序,对我个人能力的提高有很大的帮助,例如思路的建立呀,代码的优化呀,这些都会给我很大的帮助。

  参与软工工程的过程中,我觉得自己也在语言的汇编上得到了很大的提高,觉得自己可以很快在短时间内运用一个新的语言,对我来说真的是很棒的一件事,也让我觉得自己有很大的成长和收获。

 

个人博客作业WEEK 1的更多相关文章

  1. 个人博客作业Week1

    个人博客作业Week1 一.问题 通读<构建之法>我有一下几个问题 PM没有参与代码编如何进行管理. 软件工程师的职业资格考试对我们来说很有必要吗. 当我们为用户开发软件时我们需要了解用户 ...

  2. Java课程设计——博客作业教学数据分析系统(201521123084 林正晟)

    #课程设计--博客作业教学数据分析系统(201521123084 林正晟) 1.团队课程设计博客链接 博客作业教学数据分析系统 2.个人负责模块或任务说明 学生登陆界面的前端实现和与数据库的连接 学生 ...

  3. Java课程设计——博客作业教学数据分析系统(201521123091 李嘉廉)

    #课程设计--博客作业教学数据分析系统(201521123084 李嘉廉) 1.团队课程设计博客链接 博客作业教学数据分析系统 2.个人负责模块或任务说明 數據分析 Kmeans聚類算法實現 多元綫性 ...

  4. java课程设计——博客作业教学数据分析系统(201521123083 戴志斌)

    目录 一.团队课程设计博客链接 二.个人负责模块或任务说明 三.自己的代码提交记录截图 四.自己负责模块或任务详细说明 五.课程设计感想 (题外话,终于可以用markdown建目录) 一.团队课程设计 ...

  5. Java课程设计——博客作业教学数据分析系统(201521123082 黄华林)

    Java课程设计--博客作业教学数据分析系统(201521123082 黄华林) 一.团队课程设计博客链接 博客作业教学数据分析系统(From:网络五条狗) 二.个人负责模块或任务说明 1.网络爬虫 ...

  6. Java语言课程设计——博客作业教学数据分析系统(201521123107 张翔)

    #Java语言课程设计--博客作业教学数据分析系统(个人博客) 1.团队课程设计博客链接 [博客作业教学数据分析系统(From:网络五条狗)](http://www.cnblogs.com/fanta ...

  7. 团队作业1——团队展示&博客作业查重系统

    团队展示: 1.队名:六个核桃 2.队员学号: 王婧(201421123065).柯怡芳(201421123067组长).陈艺菡(201421123068). 钱惠(201421123071).尼玛( ...

  8. C语言第七次博客作业--一二维数组

    一.PTA实验作业 题目1:找鞍点 1. 本题PTA提交列表 2. 设计思路 定义n,i,j,ii,jj,a[7][7],flag,max 输入n for i=0 to i=n for j=0 to ...

  9. 2018上C语言程序设计(高级)博客作业样例

    要求一(20分) 完成PTA中题目集名为<usth-C语言高级-第1次作业>中的所有题目. 要求二 PTA作业的总结(20分+30分) 将PTA第1次作业作业中以下2道题的解题思路按照规定 ...

  10. C语言最后一次博客作业

    1.当初你是如何做出选择计算机专业的决定的? 一开始选专业的时候,说实话我很纠结也很迷茫,对我来说,中学时代,似乎就只要考好试,做好题就可以了,对于未来想要做啥并没有那么多的规划和想法,偶尔跟基友畅聊 ...

随机推荐

  1. weblogic的jar包冲突

    异常: Error creating bean with name 'sessionFactoryWrite' defined in class path resource [applicationC ...

  2. Oracle 11gR2新建空表不分配Segment

    一.引言: 在看<收获,不止Oracle>的神奇,走进逻辑体系世界一章时,需要新建一张表查看Extents的情况,由于该书的环境是ORACLE10G的,因此新建空表以后立刻就分配Segme ...

  3. tcpproxy:基于 Swoole 实现的 TCP 数据包转发工具的方法

    假设我们希望有一台机器A(ip 192.168.1.101)要开放端口6379给用户访问,但可能实际情况是用户无法直接访问到A(ip 192.168.1.101), 但却有一台机器B(ip 192.1 ...

  4. python中时间的基本使用

    格式化日期 我们可以使用 time 模块的 strftime 方法来格式化日期,: time.strftime(format[, t]) #!/usr/bin/python # -*- coding: ...

  5. app framework map及ajax方法

    $(function () { $.ajax({ url: 'Ashx/GetProductList.ashx', contentType: "JSON", success: fu ...

  6. c#之线程

    //Process[] pro= Process.GetProcesses(); //foreach (var item in pro) //{ // Console.WriteLine(item); ...

  7. table 单线条

    <style>        .a{            cursor:pointer;            color: blue;            text-decorati ...

  8. Rank List

    Rank List Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 9837 Accepted: 3303 Descriptio ...

  9. Unity脚本在层级面板中的执行顺序测试2

    上一篇测试了生成顺序对执行顺序的影响,链接:LINK 执行顺序测试3: LINK 这篇主要测试一下Awake,OnEnable,Start三个常用消息的循环顺序 1.测试消息循环顺序 先上一个最简单的 ...

  10. JAVA基础知识之JVM-——类加载器

    类加载器负责将.class文件加载到内存,并为其创建java.lang.Class对象,这个对象就代表这个类. 在Java中,通过包名+类名来唯一标识一个类,而在JVM中,要用 类加载器实例+包名+类 ...