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,是升级的并不是版本更新,之前的是版本更新所以会有很大的改动的,而这次是升级所以大多数修改的是一些细节上的东西,难以一一列出,所以在外观上很难分别出来的。总结之前几次的作业,我发现修改是逐步的添加各种功能,所以,在升级上面我更注重了代码的可读性,还有规范性,还有细节功能上的添加修改。

时间: 2024-10-23 19:45:21

0414 结对项目2.0的相关文章

结对项目2.0版

更新内容: 1.在之前基础上实现四个数的四则运算. 2.实现了带有括号的运算. 存在问题: 运算过程中偶尔会有-nan(ind)的结果,还在找原因. 部分代码如下: 1 //运算符栈的长度 2 #define OPSTACK_LENGTH 5 3 //操作数栈的长度 4 #define NUMSTACK_LENGTH 100 5 //输入串的最大长度 6 #define MAX_STRING_LENGTH 100 7 #pragma warning(disable:4996) 8 //表达式结构

结对项目 - 词频统计Ⅱ

目的与要求 代码复审练习 结对练习 编写单元测试 基于上一个结对项目的结果,读取小文本文件A_Tale_of_Two_Cities.txt 或者 大文本文件Gone_with_the_wind.txt,统计某一指定单词在该文本文件中出现的频率. 命令行格式: 提示符> Myapp.exe -f filename.txt -w word (PS:C++ 程序,Java 程序输出方式类似) 解释: 选项 -f 表示打开某一文件 选项 -w 表示统计其后单词在打开的文件中的频率 详细内容 开发语言:J

结对项目—地铁出行路线规划

结对项目—地铁出行路线规划 我的搭档:陈鸿超 14061216 https://github.com/ChengFR/PairProgramming_SubwayRoute- 会在十一期间发布新版本 结对编程体会: 结对编程的优点: 站在软件开发的角度,两个人共同面对同一台电脑进行开发,无论是效率还是软件质量都要超过一个人进行开发的情况. 对于还处于学习阶段的年轻软件开发者来说,结对编程是一个很好的互相学习的机会 结对编程时动力.责任感更强 结对编程的缺点: 对于我们来说,寻找两个人共同的时间进

结对项目2

题目:构造程序,分别是: •不能触发Fault •触发Fault,但是不能触发Error. •触发Error,但是不能产生Failure. 结对对象:王翰林   博客地址:http://www.cnblogs.com/whl1127/p/5405639.html 双方贡献比例:1:1 编程照片: 源代码: import java.util.Scanner; public class MainTest { public static void main(String[] args) { doubl

结对项目(附加题)开发总结

结对项目(附加题)开发总结 这次附加题的任务就是把两个小组写的独立的UI和CORE模块打乱重组,拼接成一个新的APP. 我们小组选择了大神刘乾所在小组和我们合作交换.一拿到乾神的核心代码,我不得不说,乾神就是乾神,代码一出,直接把我镇住了,各种参数看不懂咋办?咋写UI? 还好我们的乾神同志给我们提供了帮助文档,介绍了各个参数的作用,现摘录如下: 对于计算表达式的值(CALC模式): AnswerGet(string s)其中s是给定的算式,以等号结尾. 调用生成器时,使用: public Gen

结对项目(附加题)

结对项目成员:徐丞(13061203) 赖彦谕(13061212) [附加题]第四阶段目标 - 界面模块,测试模块和核心模块的松耦合. 我们小队是和付帅,赵庶宏组进行了交换测试,我们导出的静态链接库(.lib),然后在界面里include来调用.我们两个组都是用C++写的程序,用MFC写的界面.遇到的主要的问题,就是因为我们的想法有一些不同, API接口的设计和他们设计的接口有些不一致,所以导致我们的模块和他们的界面模块不能很好的连接. 为了解决这一问题,如果要修改我们设计好的API,那么就会修

高级四则运算器—结对项目反思(193 & 105)

高级四则运算器—结对项目反思(193 & 105) 本周我和一位韩国同学(71061105)一起结对编程完成了我们的结对项目——高级的小学四则运算题目生成器. PSP表格   PSP2.1 Personal Software Process Stages Time Planning 计划 · Estimate · 估计这个任务需要多少时间 1.5h Development 开发 · Analysis · 需求分析 (包括学习新技术) 3h · Design Spec · 生成设计文档 5h ·

2015结对项目

结对项目 作业截止日期:2015年10月6日  我们在第一个作业中,用各种语言实现了一个命令行的四则运算小程序.我们看看如果要把我们的小程序升级为能稳定运行,解决用户问题的软件,应该怎么做. 大家写了不少四则运算的练习,这些代码都各有特色,大家写的 “软件” 也有一定的用处.如果我们要把这个功能放到不同的环境中去(例如,命令行,Windows 图形界面程序,网页程序,手机App),就会碰到困难,因为目前代码的普遍问题是代码都散落在main ( )函数或者其他子函数中,我们很难把这些功能完整地剥离

复利计算--结对项目

结对项目:复利计算 搭档:30蔡京航  http://www.cnblogs.com/cjh123/ github:https://github.com/alfredzhu/teamwork 工作照 一.项目需求: 即要追求利益,又要面对不可预知的金融投资风险, “不能把鸡蛋放在同一个篮子里”,所以有必要进行组合投资. 通过上述计算与对比,可以帮助客户进行投资决策. 客户:那么能否帮我记录下一笔一笔不同类型的投资,并动态显示资金现值呢? 二.完成要求:以结对方式完成. 在这次结对编程中分配任务