20182318 2019-2020-1 《数据结构与面向对象程序设计》实验五报告

20182318 2019-2020-1 《数据结构与面向对象程序设计》实验五报告

课程:《程序设计与数据结构》
班级: 1823
姓名: 王振澳
学号:20182318
实验教师:王志强
实验日期:2019年10月14日
必修/选修: 必修

1.实验内容

1.Android Stuidio的安装测试:
参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十四章:
参考http://www.cnblogs.com/rocedu/p/6371315.html#SECANDROID,安装 Android Stuidio
完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号,自己学号前后一名同学的学号,提交代码运行截图和码云Git链接,截图没有学号要扣分
学习Android Stuidio调试应用程序
2.Activity测试
参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十五章:
构建项目,运行教材相关代码
创建 ThirdActivity, 在ThirdActivity中显示自己的学号,修改代码让MainActivity启动ThirdActivity
3.UI测试
参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十六章:
构建项目,运行教材相关代码
修改代码让Toast消息中显示自己的学号信息
4.布局测试:
参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十七章:
构建项目,运行教材相关代码
修改布局让P290页的界面与教材不同
5.事件处理测试:
参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十八章:
构建项目,运行教材相关代码
提交代码运行截图和码云Git链接,截图要有学号水印,否则会扣分

2. 实验过程及结果

过程:

  • 实验一和实验二我是按照王老师的博客一步一步来的,代码王老师直接给出来了,我稍微修改一下就行
  • Java和密码学:主要试验利用代码进行简单的凯撒密码加密与解密。
  • 编写有理数/复数计算器:
  • 远程有理数/复数计算器:利用第三个实验和第一个实验。将二者有机结合成为一个可以远程使用的简单远程计算程序。

    3. 实验过程中遇到的问题和解决过程

  • 问题1:服务器启动后客户端无法有效链接。
  • 问题1解决方案:查看ip地址后发现是电脑设置的ip地址不对,导致无法连接。重新修改代码中IP地址数字解决问题。
  • 问题2:客户端输入数据传给服务器后,出现大量错误提示,同时程序错误退出。
  • 问题2解决方案:客户端输入的数据类型与服务器要求的类型不符合,导致服务器的计算程序无法正确处理这一字符串,并将他正确运算。
  • 问题3:编的一部分类的代码,始终没有出现绿色的run按钮,也无法编译运行
  • 问题3解决方案:实际上有些代码并不需要去编译运行,只要能够被引用就可以了。但是这类代码大都没有main类,要进行编辑和运行的话,只徐要在代码中加一个空的main类的。

其他(感悟、思考等)

  1. java语言还是很难的,并没有我想的那么简单。许多的操作还是很复杂的,需要多上机练习
    2.老师上课很快,内容很多难度较大。这要求我必须抓紧每一点时间去学习。

    参考资料

  • 《Java程序设计与数据结构教程(第二版)》

  • 《Java程序设计与数据结构教程(第二版)》学习指导
  • ...

    教材学习内容总结

    第九章 多态

  • 后绑定。效率低于编译阶段的绑定效率。
  • 学习练习如何利用继承方式来实现多态性。
  • 学习练习如何利用接口来实现多态性。
  • 多态性设计(多个不同对象执行相同的基本行为,并且行为的不同实现方式取决于对象的具体类型。)

    第十章

  • 异常处理(异常抛出的问题和处理异常的方法)
  • 未捕获的异常。
  • try-catch语句与finally子句。
  • 异常传播。(就与传递性一样,举个例子:程序一存在异常,程序二调用程序一,程序二就会存在与程序一相同的异常。)
  • 异常类层次结构。(许多类型的异常类都由Exception类派生,但定义各种异常的子类却分散定义在其他几个包中,继承关系可以跨越包边界。)
  • 自定义异常与必检异常与免检异常。
  • 字节流和字符流的掌握
  • flush的应用和追加

教材学习中的问题和解决过程

问题1:类与接口有什么不同

问题1解决方案:类可被实例化,接口不能被实例化。接口可以只包含抽象方法和常量。类提供了接口的实现。类层次和接口层次不能交叉。类可以用来派生一个新类,接口可用来派生一个新接口的实现。

问题2:字节流和字符流到底是什么?定义在java.io包中的那么多方法都怎么系统的理解?

问题2解决方案:在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。InputStream和OutputStream,两个是为字节流设计的,主要用来处理字节或二进制对象,Reader和 Writer.两个是为字符流(一个字符占两个字节)设计的,主要用来处理字符或字符串。字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 2. 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。

问题3:如何连续读入多条信息

问题3解决方案:flush追加配合循环语句的使用。即将flush追加放在循环中。应为flush一次加载100条信息,运行起来很难并且容易出错

代码调试中的问题和解决过程

  • 问题1:错误信息提示:系统找不到指定路径-图片文件读写错误
  • 问题1解决方案:创建新文件是路径设置错误,将路径改正到想储存的地方即可
  • 问题2:如何实现try catch的连续多次引用?
  • 问题2解决方案:将try catch与循环相结合即在try catch外一层设置无限循环,使用一个布尔数控制循环的终止。

    代码托管

(statistics.sh脚本的运行结果截图)

上周考试错题总结

  • 错题1及原因( 单选题 | 1 分)
    Comparing the amount of memory required by selection sort and insertion sort, what can one say?

A
.
Selection sort requires more additional memory than insertion sort

B
.
Insertion sort requires more additional memory than selection sort

C
.
Both methods require about as much additional memory as the data they are sorting

D
.
Neither method requires additional memory
E
.
None of the above
正确答案: D 你的答案: B

解析:选择排序和插入排序都可以“就地”实现。这意味着不需要额外的内存,排序后的数据只是在数据数组中进行重新排列。

  • 错题2及原因
  • Java allows one to create polymorphic references using inheritance and using interfaces.

A
.
true

B
.
false

正确答案: A 你的答案: B

解析:继承允许一个人使用一个基本变量来引用不同的后代成员,正确的变量将在执行过程中被使用。这就是多态性的作用。接口提供了类似的机制,但使用的是抽象方法,而不是继承中使用的具体方法。然而,效果是一样的。

  • 错题3及其原因
  • The type of the reference, not the type of the object, is use to determine which version of a method is invoked in a polymorphic reference.

A
.
true

B
.
false

解析;反了!决定调用哪个方法的是对象的类型,而不是引用的类型。

点评过的同学博客和代码

  • 本周结对学习情况
    • 20182333
      20182317
    • 结对照片
    • 结对学习内容
      对多态的学习和讨论
      多态与继承和接口的关系
      对异常的学习和讨论
      三种标准I/O流(in、out、err)

      其他(感悟、思考等,可选)

      时间越来越紧张,各科的作业也越来越多。Java难度也渐渐加大了,必须要加强自主学习。真东西是等不来,抄不来的,相信在王老师英明的带领下,我们会越学越好。

      学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
第六周 1175/1000 3/7 22/60

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:24小时

  • 实际学习时间:20小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

猜你喜欢

转载自www.cnblogs.com/1400694592qq/p/11723432.html