《构建之法》阅读笔记1+课后作业选做

读后感:

一个软件的生命周期,包括问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,也有将以上阶段的活动组合在内的迭代阶段。一个完整的软件周期需要我们和客户之间商量好需求,对软件进行分工,写的软件要可读性强易修改等等。要完成一个顶呱呱的软件,需要有大概模型,不断尝试探索,最终到考虑周全的成熟阶段,现在所学的东西都是为以后打基本功,冰冻三尺非一日之寒,只有做好现在才会尽量减少书到用时方恨少的情况。

软件包括系统软件+应用软件+恶意软件,开发软件我们要考虑软件的模块复杂性和相互关联,出现问题时由于不可见性软件出现问题之后的修改,面对新的需求不同的硬件如何修改,对用户的要求参数的变化系统别的部分的要求做出服从,对错误意外做出非连续性反应等难题,这就需要负责不同部分的软件开发的人员相互配合,寻找用户满意度高,软件可靠性强,软件流程配合高效,可维护性强的办法。

课后作业:

1.阿超的四则运算

要求随机出现50道整数/真分数的四则运算+不重复

代码:

//桃子之——阿超的四则运算
/*要求:
 1.随机产生50个四则预算,包括整数和真分数
 2.要求不重复
 */
package bb;
import java.util.Random;
import java.util.Scanner;
import java.util.Vector;

//阿超的运算程序
public class Cc {
public static void main(String args[]){
    Scanner sc=new Scanner(System.in);
    Random ne=new Random();
    Vector vet=new Vector();
    
    for(int i=1;i<=50;i++){//50题 每题的要求在for循环里判断
        boolean flag=false;//判断当真分数时进行循环
        String jg=" ";int a = 0,b=0,c=0,d=0,e=0,f=0;char h='-';//初始化随机数
        while(flag==false)
        {
            a=ne.nextInt(301);
            b=ne.nextInt(301);
            c=ne.nextInt(301);
            d=ne.nextInt(301);
            e=ne.nextInt(301);
            f=ne.nextInt(301);
            if(a<b&&c<d){
            flag=true;
            Object[] obj = new Object[4];//混合数组        {整数,整数,真分数,真分数}
            obj[0]=e;
            obj[1]=f;
            obj[2]=a+"/"+b;
            obj[3]=c+"/"+d;
            int objcd1=ne.nextInt(obj.length);
            Object m=obj[objcd1];String str1=m.toString(); 
            int objcd2=ne.nextInt(obj.length);//获取混合数组的一个元素
            Object n=obj[objcd2];String str2=n.toString(); 
            
            char[] fh={'+','-','*','/'};//符号数组
            int ysfh=ne.nextInt(fh.length);
            h=fh[ysfh];
            
            //查重
            jg=str1+" "+h+" "+str2+" "+"=";
            for(int j=0;j<vet.size();j++){
                if(vet.get(j).equals(jg))
                    flag=false;
                
                else vet.add(jg);
            }
            
            if(flag==true)
            System.out.println(str1+" "+h+" "+str2+" "+"=");
            }
        }
    }
}
}

结果截图:

 

学到的东西:

1.随机发生器—数组:

先引用:

import java.util.Random;

再定义:

Random ne=new Random();

定义int数组mm

再在数组中随机产生:

int lh=ne.nextInt(m.length);

int sj=mm[lh];

2.java混合型数组定义:

object obj=new object[3];

obj[]=1;obj[1]="abc";obj[2]=a+"/"+b;

java混合数组的获取

得到对象数组

Object obj  = myobj[i];

获取字符串

String str  = obj.toString();
System.out.println(str);

3.不重复就是要求产生的四则运算表达式不重复

java没有动态数组,需要用到vector

Vector vet==new Vector();
String str="test1";
double t1=0.124;
vet.add(str);
vet.add(String.valueOf(t1));
用 vet.size()获取其大小;通过vet.get(i)获取第i个元素(i从0开始);且类型为Object,转换一下就可以了。

总结:一年半的时间学了忘,思路是自己的,但方法是查阅的,很羞愧。

 4.选取软件并分析:

一moblie apps手机应用

软件开发者如何说服陌生人成为用户:方便好用和便宜,比如有了支付宝后我们出门不用携带大量现金,有了QQ后我们传送文件不用面对面拷贝,有了微信我们的朋友圈比QQ空间更保密,vsco强大的调色功能和风格也使它脱颖而出......

他们的目的是盈利吗:肯定是为了赚钱的,但是赚钱的方法又有很多,比如通过免费获取巨大的用户群,然后在此基础上创造新的价值链。

他们的目都是赚取现金密码,还是别的:软件盈利方式有很多,有的软件下载需要付费,有的有试用版正式版需要付费,有的普通用户不收费但是会员收费。比如,有形是增值业务,商家入驻佣金,o2o手续费,广告推广,应用分成收入,无形如流量,带动自家其他业务。

软件是如何到你手上的:APP下载是一个,面对面快传是一个
软件是如何处理BUG的,更新版本的: 我不知道,一般软件用不了就退了重新进,卸了重新下,关机重新来,网页版也不行的话就不用了。感觉更新版本就是为了修复Bug,和增加用户体验。
同一类型的软件如何竞争:积累广大的用户也是一个盈利模式,比如微信和支付宝的竞争,微信用户有很大这就是它的竞争核心力,而支付宝的竞争核心力是购物如淘宝京东的支付。比如滴滴和优步,滴滴和优步之间发优惠券给补贴抢客户抢司机,大量的投资金互相残杀,然后导致合并,只有滴滴之后只要比出租车便宜方便用户又多,就不需要像以前大量补贴,可以提高价格挣更多的钱了。
 
原文地址:https://www.cnblogs.com/Amyheartxy/p/6378852.html