给公司做的东西放到自己网站上,西安跨境电子商务平台网站,旅游电子商务的三创赛网站建设,wordpress seo赚钱一、【Coding.Net项目地址】https://git.coding.net/verde/Pair_Work.git 二、【对接口进行的设计】 看教科书和其它资料中关于Information Hiding, Interface Design, Loose Coupling的章节#xff0c;说明你们在结对编程中是如何利用这些方法对接口进行设计的。 如下图SRC的…一、【Coding.Net项目地址】https://git.coding.net/verde/Pair_Work.git 二、【对接口进行的设计】 看教科书和其它资料中关于Information Hiding, Interface Design, Loose Coupling的章节说明你们在结对编程中是如何利用这些方法对接口进行设计的。 如下图SRC的目录结构 如图一共有以下四个包 Information HidingInterface DesignLoose Coupling的实现 1.信息隐藏 项目中多个实体类封装数据例如Users类Lists类由于经过封装信息访问只可通过getset方法对项目操作者是不可见的实现了信息隐藏。主要体现在以下两方面 用户类封装了用户的个人信息限定范围private直接联系到数据库。 题目结果和算式分别在实体类Lists中建立三个LinkedList链表expArrresArraddArr在前台获取算式各种参数时只需要调用linkedList类的各种方法例 如getsetgetindex操作简单暴露信息少。 2.接口设计 当初有了解过一些有关于框架的知识所以这次项目结构设计也借鉴了一些接口思想 1.只有一个类Function类与前台交互使用实现接口前台信息接受方便、只需创建一个对象同时也保证了代码干净整洁。 2.项目使用了面向对象思想避免在jsp中加入过多的java代码而是把各种功能写在类中的各种方法中在jsp页面中直接调用方法。 4.Tests类在后台功能实现的过程中边写代码边测试在于前台交接之前一直使用junit代替前台传入的参数这点使我们节省了时间。 2.松耦合 java类的原则“高内聚低耦合”每个类中功能健全类与类间尽量减少关联 生成式子等操作直接引用了上次作业的Main类的一些代码DBUtil只与UsersOperation类有关Operation包中getResult类、getExpression类ToolDemo类只与Function类有关Tests类只用于测试Function的方法实体类只实现封装只由Function类和jsp页面调用类与类之间划归清晰面向对象编程也大大实现了代码的重用性。 三、【计算模块接口的设计与实现过程】 设计包括代码如何组织比如会有几个类几个函数他们之间关系如何关键函数是否需要画出流程图说明你的算法的关键不必列出源代码以及独到之处。 图片较小右击图像 --- 查看图像即可看大图 四、【计算模块接口部分的性能改进】 记录在改进计算模块性能上所花费的时间描述你改进的思路并展示一张性能分析图并展示你程序中消耗最大的函数。 消耗最大的函数 /** 得到算式得到答案* 这个方法是把所有的整个式子算式和结果分别放入三个ArrayList中* 新建树并产生用户获取到数目的算式分别存放List中* 实现了逐个遍历* *///获取三个listpublic LinkedListString createList(int num,int symNum){ GetExpression bTree; for(int i0;inum;i){ //构造树 bTree new GetExpression(symNum); bTree.buildBTree(); //设置list类里面的expression,result String expression bTree.toString(); String result bTree.CalAndVal(); Lists l new Lists(expression,result); //把expression和result获取出来 Lists.expArr.add(expression); Lists.resArr.add(result); Lists.addArr.add(l.toString()); } return Lists.expArr; } 五、【计算模块部分单元测试展示】 展示出项目部分单元测试代码并说明测试的函数构造测试数据的思路。并将单元测试得到的测试覆盖率截图发表在博客中。只需要测试命令行部分且该部分覆盖率到90%以上否则单元测试部分视作无效 1 package Function;2 3 import org.junit.Test; 4 5 import Entity.Lists; 6 7 public class Tests { 8 9 Test 10 public void getList(){ 11 Function fun new Function(); 12 fun.setSybNum(3); 13 Lists list new Lists(); 14 fun.createList(100,fun.getSybNum()); 15 System.out.println(list.getExpArr()); 16 }//由于没有和前台交互这时候随便传了几个参数 17 18 Test 19 public void getFile(){ 20 Function fun new Function(); 21 fun.ReadFile(C://Users//apple//Desktop//ttt.txt,C://Users//apple//Desktop//www.txt);; 22 }//获取文件 23 } 六、【计算模块部分异常处理说明】 在博客中详细介绍每种异常的设计目标。每种异常都要选择一个单元测试样例发布在博客中并指明错误对应的场景 java异常主要分为以下这些种类比较常见的有空指针异常溢出异常找不到类找不到文件 由于我们的项目包含数据库相对应的数据库操作的异常处理也很多. /* *增加用户 */ Testpublic void insertUsers(String nickname ,String password,String email) { Users users new Users(); try { Class.forName(DRIVER); connection DriverManager.getConnection(URL, USERNAME, PASSWORD); String sql INSERT INTO db_user(nickname,password,email) VALUE(?,?,?); ps connection.prepareStatement(sql); ps.setString(1, nickname); ps.setString(2, password); ps.setString(3, email); ps.execute(); } catch (Exception e) { System.out.println(e.getStackTrace()); } finally { try { connection.close(); ps.close(); } catch (SQLException e) { System.out.println(e.getStackTrace()); } } } /** 读取文件* */Testpublic void ReadFile(String fromUrl,String toUrl){ try { BufferedWriter bw new BufferedWriter(new FileWriter(toUrl)); BufferedReader br new BufferedReader(new FileReader(fromUrl)); String s null; for(int i1;i100;i){ s String.valueOf(Math.random()); bw.write(s); bw.newLine(); } bw.flush(); while((sbr.readLine())!null){ System.out.println((String)s); System.out.println(下一行); } bw.close(); br.close(); } catch (IOException e) { e.printStackTrace(); } /* *查询所有的用户 */ Testpublic ListUsers queryAllUsers() {Connection connection null;PreparedStatement ps null; ResultSet rs null; ListUsers list new ArrayListUsers(); try { Class.forName(DRIVER); connection DriverManager.getConnection(URL, USERNAME, PASSWORD); String sql SELECT * FROM db_user; ps connection.prepareStatement(sql); rs ps.executeQuery(); while(rs.next()){ Users users new Users(); users.setId(rs.getInt(id)); users.setNickName(rs.getString(nickname)); users.setPassword(rs.getString(password)); users.setEmail(rs.getString(email)); list.add(users); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }finally { try { if (rs ! null) { rs.close(); } if (ps ! null) { ps.close(); } if (connection ! null) { connection.close(); } } catch (SQLException e){ e.printStackTrace(); } } return list; } 七、【界面模块的详细设计过程】 在博客中详细介绍界面模块是如何设计的并写一些必要的代码说明解释实现过程。(5) 我们用的是网页端来展示界面模块所以主要是htmlcssjs来实现的界面模块设计主要分为注册页面、登录页、主页面、做题页面、错题页面 登录页 主页面 做题页面 八、【界面模块与计算模块的对接】 最为核心的做题页面采用的是jsp代码由主页面homePage.jsp传参到做题页面doYourAnswer.jsp,然后用户输入答案后通过循环将answer进行判断判断结束后记录错题的题号并通过URL传值进入错题页wrongQuestion.jsp部分代码如下 form actiondoYourAnswer.jsp methodposttabletrtdinput typetext namemyAnswer//tdtdinput typesubmit value 提交/tdtd%String myAnswer request.getParameter(myAnswer);String answer Lists.resArr.get(num);if (myAnswer answer){out.print(num right);}else{out.print(num wrong);QuesNum[wrongNum]num;wrongNum;}}%/td/tr/table/forma hrefwrongQuestion.jsp?%for ( int i0 ;iwrongNum;i ) {%re[]%QuesNum[i] %%}%wrongNum%wrongNum %查看错题/a 九、描述结对的过程 结对过程我的队友是杨帆十分感谢他在本次作业中的帮助我们两人之前都是主学后台由于我对前台略懂所以我的代码任务主要是负责页面另外就是Jsp的页面完成前后台对接对于用户管理的数据库操作和Java工具类的实现是队友协助完成的。做这个项目时出现了不少Bug 结对照片 十、【结对编程的优点和缺点】 看教科书和其它参考书网站中关于结对编程的章节例如 http://www.cnblogs.com/xinz/archive/2011/08/07/2130332.html 说明结对编程的优点和缺点。同时指出结对的每一个人的优点和缺点在哪里 (要列出至少三个优点和一个缺点)。(5) 结对编程的优点 1. 取长补短也许很多时候一个人想不到的东西结合两人的想法也许就能产生非凡的效果 2.相互学习的机会使两人共同进步能促进同学间友好交流 3.体验合作的快乐 缺点有时意见可能会不统一 我的优缺点 优点比较有耐心坚持做好一件事善于搜索信息比较细心 。 缺点有时不断坚持处理事情会稍不灵活。 队友杨帆的优缺点 优点认真自信富有责任心吃苦耐闹处理事情比较灵活。 缺点比较。。。呃呃呃感觉没啥毛病大家一起合作虽然有时会有一种修复Bug的无力感但是至少谁也没有相互抱怨过都是尽自己最大可能去互相帮助。 十一、【实际花费的时间】 PSP任务内容计划共完成需要的时间(min)实际完成需要的时间(min)Planning计划 8 10Estimate估计每个阶段的时间成本并规划大致工作步骤 8 10Development开发30004000 Analysis 需求分析 (包括学习新技术) 60 60 Design Spec 生成设计文档 40 50 Design Review 设计复审 (和同事审核设计文档) 40 45 Coding Standard 代码规范 (为目前的开发制定合适的规 范) 30 40 Design 具体设计 120 100 Coding 具体编码 180 200 Code Review 代码复审 150 150 Test 测试自我测试修改代码提交修改 90 90Reporting报告 200 230Test Report 测试报告 120 150Size Measurement 计算工作量 20 20 Postmortem Process Improvement Plan 事后总结, 并提出过程改进计划 60 60 转载于:https://www.cnblogs.com/liuz100/p/8769857.html