• 0414 结对项目2.0


    一.主要功能与需求分析

    1.本金为100万,利率或者投资回报率为3%,投资年限为30年,那么,30年后所获得的利息收入:按复利计算公式来计算就是:1,000,000×(1+3%)^30

    2.如果按照单利计算,本息的最终收益

    3.假如30年之后要筹措到300万元的养老金,平均的年回报率是3%,那么,现在必须投入的本金是多少呢?

    4.利率这么低,复利计算收益都这么厉害了,如果拿100万元去买年报酬率10%的股票,若一切顺利,过多长时间,100万元就变成200万元呢? 

    5.如果我希望在十年内将100万元变成200万元,应该找到报酬率在多少的投资工具来帮助我达成目标?如果想在5年后本金翻倍,报酬率就应至少为多少才行呢?

    6.如果每年都将积蓄的3万元进行投资,每年都能获得3%的回报,然后将这些本利之和连同年金再投入新一轮的投资,那么,30年后资产总值将变为多少?如果换成每月定投3000呢?(定额定投收益计算办法)

    7. 如果向银行贷款10万元,年利率6.5%,期限为10年,那么每月等额本息还款多少?(算复利条件下等额还款金额)

    •需求是演化出来的:需求的提出,不像我们上学期做编译原理实验一样,一次性地给出完整并且不变的问题描述,现实世界的很多软件需求大都是逐步提出的,因为客户一开始也不确定自己要什么。
    •需求的表达:客户不是计算机专业人员,描述需求的方式是自己的业务场景,不会告诉你具体算法。
    •业务领域:我们需要去了解我们不懂的领域知识、应用场景。
    •软件设计-可扩展性:客户需求不断变化与增加,我们做软件设计时有没有考虑到程序的可扩展性?
    •重构:在满足客户越来越多需求的时候,我们会不会发现原来的设计不够好,需要推翻前面所做的工作而对整个架构进行重新设计呢?
    •迭代开发:开发-发布-运行-迭加开发-发布-运行……螺旋前进
    •版本管理:github使用有什么感受?
    •用户体验:界面设计,真实的软件,实现功能只是一方面……
    •与人合作
    •软件测试与质量保证

    二.单元测试预期结果及其代码。

     新增:

      添加了可以修改用户输入数据后可以选择输入的单位,这可以使用户输入时不用输入过多的零,提高了用户的输入的正确率。方便了用户的使用。

    有就是,健壮了用户输入数据后,传入到数据库的信息健全性,不会丢失用户的输入数据。之前的版本会使用户的一部分信息丢失,现在已经修复了。

    测试模块

    测试输入

    预期结果

    运行结果

    bug跟踪

    复利计算

    (本金,年限,利率,次数)

    终值

       

    测试运算结果

    (100.0,1,0.05,1)

    105.0

     

     测试输出正数

    (100.0,1,0.05,1)

    True

     测试输入负数

     (-100.0,1,-0.05,1)  true  √  已经添加输入控制

    单利计算

    (利率,本金,年限)

     终值    
     测试运算结果  ("0.05","100.0","1")  105.0   √  
     测试输入负数  ("0.05","100.0","1")  True   √  
    测试输出正数 ("-0.05","-100.0","1") true  √   已经添加输入控制
    投资年限 (利率,本金,终值,次数)      
    测试运算结果 ("0.05","100.0","105.0","1") 1  
    测试输出正数 ("0.05","100.0","105.0","1") True  
    测试输入负数 ("-0.05","-100.0","105.0","1") true   已经添加输入控制
    ...... 以下结果与上表一致    

    接入数据库主要代码,更改后使输入数据库的信息更全:

      1         public MySQL() throws Exception {
      2     
      3             
      4             //STEP 2: Register JDBC driver
      5             Class.forName(JDBC_DRIVER);      //添加MYSQL驱动
      6 
      7             //STEP 3: Open a connection  链接本地MYSQL
      8             conn = (Connection) DriverManager.getConnection(DB_URL,USER,PASS);    
      9            
     10             //STEP 4: Execute a query
     11             stmt = conn.createStatement();
     12             String sql;
     13             sql = "SELECT * FROM test";
     14             ResultSet rs = stmt.executeQuery(sql);
     15 
     16             //STEP 5: Extract data from result set
     17             while(null != rs && rs.next()){
     18                 System.out.println(rs.getString("rate"));
     19                 System.out.println(rs.getString("time"));
     20                 System.out.println(rs.getString("principal"));
     21             }
     22            
     23         }
     24         
     25         
     26         public void sqlInsertSingle(String f,int moneyUnit, String strRate, String strPrincipal,
     27                 String strTime) throws SQLException {
     28             
     29             items[N] = "item_" + String.valueOf(N);
     30             String sql1 = "insert into test(earnings,rate,time,principal)values('" + f + "','"
     31             + strRate + "','" + strTime + "','" + strPrincipal + "')" ; 
     32             stmt.executeUpdate(sql1);
     33             
     34         }
     35         
     36         public void sqlInsertCompound(String strEarnings,int moneyUnit, String strRate, String strPrincipal,
     37             String strTime, String strCount) throws SQLException {
     38             
     39             items[N] = "item_" + String.valueOf(N);
     40             String sql1 = "insert into test(earnings,rate,time,count,principal)values('" + strEarnings + "','" +
     41                     strRate  + "','" + strTime + "','"  + strCount + "','"  + strPrincipal + "')" ;    
     42             stmt.executeUpdate(sql1);
     43         }
     44         
     45         public void sqlInsertTime(String strTime ,int moneyUnit, String strRate, String strPrincipal,
     46             String strEarnings, String strCount) throws SQLException {
     47             
     48                items[N] = "item_" + String.valueOf(N);
     49                String sql1 = "insert into test(time,rate,count,principal,earnings)values('" + strTime + "','"  +
     50                        strRate + "','"  + strCount + "','"  + strPrincipal + "','"  + strEarnings + "')" ;    
     51            stmt.executeUpdate(sql1);
     52         }
     53         
     54         public void sqlInsertPerincome (String strIncome, int moneyUnit, String strRate, String strInvestment,
     55                 String strTime) throws SQLException {
     56             
     57             items[N] = "item_" + String.valueOf(N);
     58                String sql1 = "insert into test(earnings,rate,time,inv)values('" + strIncome + "','"  +
     59                        strRate + "','"  + strTime + "','"  + strInvestment + "')" ;
     60            stmt.executeUpdate(sql1);
     61         }
     62         
     63         public void sqlInsertPrincipal(String strPrincipal, int moneyUnit, String strRate, String strEarnings,
     64                 String strTime, String strCount) throws SQLException{
     65             
     66             items[N] = "item_" + String.valueOf(N);
     67                String sql1 = "insert into test(principal,rate,time,count,earnings)values('"+ strPrincipal + "','"  +
     68                        strRate + "','"  + strTime + "','"  + strCount + "','"   + strEarnings + "')" ;
     69            stmt.executeUpdate(sql1);
     70             
     71         }
     72         
     73         public void sqlInsertRefund (String strRefund, int moneyUnit, String strRate, String strLoan,
     74                 String strTime) throws SQLException {
     75             
     76             items[N] = "item_" + String.valueOf(N);
     77                String sql1 = "insert into test(inv,rate,time,loan)values('" + strRefund + "','"  +
     78                        strRate + "','"  + strTime + "','"  + strLoan +"')" ;
     79            stmt.executeUpdate(sql1);
     80         }
     81         
     82         public void sqlInsertBestProject (String strRate, int moneyUnit , String strEarnings,
     83                 String strPrincipal, String strTime, String strCount) throws SQLException {
     84             
     85             items[N] = "item_" + String.valueOf(N);
     86                String sql1 = "insert into test(rate,time,count,principal,earnings)values('" + strRate + "','"  +
     87                strTime + "','"  + strCount + "','"  + strPrincipal + "','"  + strEarnings + "')" ;
     88            stmt.executeUpdate(sql1);
     89         }
     90         
     91         public ResultSet selectSQL () {
     92             ResultSet rs = null;
     93             try{
     94                 stmt = conn.createStatement();
     95                 String sql;
     96                 sql = "SELECT * FROM test";
     97                 rs = stmt.executeQuery(sql);
     98             }catch (Exception e){
     99                 e.printStackTrace();
    100             }
    101             
    102             return rs;
    103             
    104         }
    105         

    三.运行情况

    使用程序进行更新的数据库

    总结:

    这个版本,主要是修复之前链接数据库后遗留的一部分bug,是升级的并不是版本更新,之前的是版本更新所以会有很大的改动的,而这次是升级所以大多数修改的是一些细节上的东西,难以一一列出,所以在外观上很难分别出来的。总结之前几次的作业,我发现修改是逐步的添加各种功能,所以,在升级上面我更注重了代码的可读性,还有规范性,还有细节功能上的添加修改。

  • 相关阅读:
    原生js 实现 map
    前端安全学习
    前端性能优化
    前端的跨域请求方法使用场景及各自的局限性
    7-7 12-24小时制(15 分)
    7-4 BCD解密(10 分)
    7-2 然后是几点(15 分)
    厘米换算英尺英寸
    鸡兔同笼
    数组:经典计数
  • 原文地址:https://www.cnblogs.com/liezhihua/p/5393472.html
Copyright © 2020-2023  润新知