20192309 2020-2021-1 《数据结构与面向对象程序设计》 课程总结

20192309 2020-2021-1 《数据结构与面向对象程序设计》 课程总结

目录

第一章 简要内容

1.1 Java程序设计语言

注释
标识符和保留字
空白

1.2 程序开发

程序设计语言
编辑器/编译程序和解释程序
开发环境
错误

1.3 问题求解

1.4 软件开发行为

1.5 面向对象程序设计

第二章 简要内容

2.1 字符串

print及print方法
字符串连接
转义字符

2.2 变量和赋值

2.3 基本数据类型

2.4 表达式

算术运算
关系运算
逻辑运算
运算符优先级
自增,自减

2.5 数据转换

2.6 读输入数据

第三章 简要内容

3.1 创建对象

3.2 String 类

3.3 包

3.4 Random类

3.5 Math类

3.6 格式化输出

3.7 枚举类型

3.8 包装类

第四章 简要内容

4.1 布尔表达式

4.2 if语句

4.3 数据比较

4.4 switch语句

4.5 while语句

4.6 迭代器

4.7 do 语句

4.8 for 语句

第五章 简要内容

5.1 再谈类和对象

5.2 类的剖析

5.3 封装

5.4 方法的剖析

5.5 静态类成员

5.6 类关系

5.7 方法设计

5.8 方法重载

5.9 测试

5.10 调试

第六章 简要内容

GUI元素

第七章 简要内容

7.1 数组元素

7.2 数组的声明及使用

7.3 对象数组

7.4 命令行参数

7.5 变长参数表

7.6 二维数组

第八章 简要内容

8.1 创建子类

8.2 方法的重写

8.3 类层次

8.4 可见性

8.5 设计继承

第九章 简要内容

9.1 后绑定

9.2 通过继承实现多态

9.3 接口

9.4 通过接口实现多态

第十章 简要内容

10.1 异常处理

10.2 不捕获异常

10.3 try-catch 语句

10.4 异常传播

10.5 异常类的层次

10.6 I/O异常

第十一章 简要内容

11.1 递归思想

11.2 递归程序设计

11.3 使用递归

第十二章 简要内容

12.1 算法效率

12.2 增长函数和大O符号

12.3 比较增长函数

第十三章 简要内容

13.1 查找

13.2 排序

13.3 分析查找和排序算法

第十四章 简要内容

14.1 集合的介绍

14.2 栈集合

14.3 继承、多态和泛型

14.4 栈的ADT

14.5 使用栈:计算后缀表达式

14.6 异常

14.7 使用数组实现栈

14.8 ArrayStack类

14.9 将引用作为链

14.10 管理链表

14.11 没有链的元素

14.12 使用链实现栈

14.13 使用java.util.Stack 类实现栈

14.14 包

第十五章 简要内容

15.1 队列ADT

15.2 使用队列:编码K值

15.3 使用队列:模拟票务柜台

15.4 实现队列:使用链表

15.5 实现队列:使用数组

第十六章 简要内容

16.1 树

16.2 树的遍历

16.3 树的实现策略

16.4 二叉树的实现

16.5 决策树

第十七章 简要内容

17.1 二叉查找树

17.2 二叉查找树的实现

17.3 平衡二叉查找树

第十八章 简要内容

18.1 堆

18.2 堆的实现

18.3 堆排序

18.4 优先队列

第十九章 简要内容

19.1 无向图

19.2 有向图

19.3 带权图

19.4 常用的图算法

19.5 图的实现策略

第二十章 简要内容

20.1 哈希方法

20.2 哈希函数

20.3 解决冲突

20.4 从哈希表中删除元素

20.5 Java Collection API中的哈希表

第二十一章 简要内容

21.1 数据库介绍

21.2 建立与数据库的链接

21.3 创建并修改数据库表

21.4 查询数据库

21.5 插入/查看及更新数据

21.6 删除数据和数据库表

作业一:

实验一 Linux基础与Java开发环境

(1)基于命令行和IDE进行简单的Java程序编辑、编译、运行和调试。
(2)练习Linux基本命令;
(3)学习Java程序的JDB调试技能。
链接:https://www.cnblogs.com/jinyifei/p/13781205.html
二维码:

作业二:

实验二

(1)编写简单的计算器,完成加减乘除模运算。
(2)要求从键盘输入两个数,使用判定语句选择一种操作,计算结果后输出,然后使用判定和循环语句选择继续计算还是退出。
链接:https://www.cnblogs.com/jinyifei/p/13783146.html
二维码:

作业三:

实验三
下载安装并使用IDEA,完成下面实验。

(1)初步掌握单元测试和TDD
(2)理解并掌握面向对象三要素:封装、继承、多态
(3)初步掌握UML建模
(4)完成蓝墨云上 (1)-(5)实验。
链接:https://www.cnblogs.com/jinyifei/p/13804436.html
二维码:

作业四

实验四

(1)Java Socket编程
1.学习蓝墨云上教材《Java和Android编程》“第16章 输入/输出 ”和“第22章 网络”,学习JavaSocket编程
2.结对编程。结对伙伴A编写客户端SocketClient.java,结对伙伴B编写服务器端。
3.截图加学号水印上传蓝墨云,代码push到码云,并撰写实验报告。
(2)Java和密码学
以结对的方式完成Java密码学相关内容的学习(帖子中所有代码和相关知识点需要学习)。提交学习成果码云链接和代表性成果截图,要有学号水印。
(3)编写有理数/复数计算器
结对编程,结对伙伴A编写有理数计算器。结对伙伴B编写复数计算器。截图加水印上传蓝墨云,代码push码云。
(4)远程有理数计算器
结对编程,结对伙伴A编程实现客户端,结果伙伴B实现服务器端。
客户端通过键盘输入一个有理数计算的公式(例如:1/4 + 1/6 = ),并把该公式以字符串的形式发送给伙伴B(服务器端),服务器端根据字符串计算出结果为5/12,并把结果返回给客户端A,A收到结果后输出结果。截图加水印上传蓝墨云,代码push码云。
(5)远程复数计算器
结对编程,结对伙伴B编程实现客户端,结果伙伴A实现服务器端。
客户端通过键盘输入一个有理数计算的公式(例如:1/4 + 1/6 = ),并把该公式以字符串的形式发送给伙伴A(服务器端),服务器端根据字符串计算出结果为5/12,并把结果返回给客户端B,B收到结果后输出结果。截图加水印上传蓝墨云,代码push码云。
注意实验四(4)和实验四(5),一个人不能仅实现客户端,必须实现一个客户端和服务器,否则两个实验均不得分!!!
(6)实验报告
在规定时间前发表博客,标题“学号 实验四 《数据结构与面向对象程序设计》实验报告”
链接:https://www.cnblogs.com/jinyifei/p/13903872.html
二维码:

作业五

实验五

(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链接,截图要有学号水印,否则会扣分
链接:https://www.cnblogs.com/jinyifei/p/13921029.html
二维码:

作业六

实验六

(1)链表练习,要求实现下列功能:
通过键盘输入一些整数,建立一个链表;
这些数是你学号中依次取出的两位数。 再加上今天的时间。
例如你的学号是 20172301
今天时间是 2018/10/1, 16:23:49秒
数字就是
20, 17,23,1, 20, 18,10,1,16,23,49
打印所有链表元素, 并输出元素的总数。
在你的程序中,请用一个特殊变量名来纪录元素的总数,变量名就是你的名字。 例如你叫 张三, 那么这个变量名就是
int nZhangSan = 0; //初始化为 0.
做完这一步,把你的程序签入源代码控制(git push)。
(2)链表练习,要求实现下列功能:
实现节点插入、删除、输出操作;
继续你上一个程序, 扩展它的功能,每做完一个新功能,或者写了超过10行新代码,就签入代码,提交到源代码服务器;
从磁盘读取一个文件, 这个文件有两个数字。
从文件中读入数字1, 插入到链表第 5 位,并打印所有数字,和元素的总数。 保留这个链表,继续下面的操作。
从文件中读入数字2, 插入到链表第 0 位,并打印所有数字,和元素的总数。 保留这个链表,并继续下面的操作。
从链表中删除刚才的数字1. 并打印所有数字和元素的总数。
(3)链表练习,要求实现下列功能:
使用冒泡排序法或者选择排序法根据数值大小对链表进行排序;
如果你学号是单数, 选择冒泡排序, 否则选择选择排序。
在排序的每一个轮次中, 打印元素的总数,和目前链表的所有元素。
在(2)得到的程序中继续扩展, 用同一个程序文件,写不同的函数来实现这个功能。 仍然用 nZhangSan (你的名字)来表示元素的总数。
(4)在android上实现实验(1)和(2)
(5)在android平台上实现实验(3)
链接:https://www.cnblogs.com/jinyifei/p/13961114.html
二维码:

作业七

实验七

(1)定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。
要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位
提交运行结果图。
(2)重构你的代码
把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301)
把测试代码放test包中
重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)
(3)参考http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试
提交运行结果截图
(4)补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个)
测试实现的算法(正常,异常,边界)
提交运行结果截图(如果编写多个排序算法,即使其中三个排序程序有瑕疵,也可以酌情得满分)
(5)编写Android程序对实现各种查找与排序算法进行测试
提交运行结果截图
推送代码到码云(选做,加分)
链接:https://www.cnblogs.com/jinyifei/p/14058639.html
二维码:

作业八

实验八

(1)参考教材PP16.1,完成链树LinkedBinaryTree的实现(getRight,contains,toString,preorder,postorder)
用JUnit或自己编写驱动类对自己实现的LinkedBinaryTree进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
课下把代码推送到代码托管平台
(2)基于LinkedBinaryTree,实现基于(中序,先序)序列构造唯一一棵二㕚树的功能,比如给出中序HDIBEMJNAFCKGL和后序ABDHIEJMNCFGKL,构造出附图中的树
用JUnit或自己编写驱动类对自己实现的功能进行测试,提交测试代码运行截图,要全屏,包含自己的学号信息
课下把代码推送到代码托管平台
(3)自己设计并实现一颗决策树
提交测试代码运行截图,要全屏,包含自己的学号信息
课下把代码推送到代码托管平台
(4)输入中缀表达式,使用树将中缀表达式转换为后缀表达式,并输出后缀表达式和计算结果(如果没有用树,正常评分。如果用到了树,即使有小的问题,也酌情给满分)
提交测试代码运行截图,要全屏,包含自己的学号信息
链接:https://www.cnblogs.com/jinyifei/p/14110926.html
二维码:

作业九

实验九
图的综合实践

(1) 初始化:根据屏幕提示(例如:输入1为无向图,输入2为有向图)初始化无向图和有向图(可用邻接矩阵,也可用邻接表),图需要自己定义(顶点个数、边个数,建议先在草稿纸上画出图,然后再输入顶点和边数)(2分)
(2) 图的遍历:完成有向图和无向图的遍历(深度和广度优先遍历)(4分)
(3) 完成有向图的拓扑排序,并输出拓扑排序序列或者输出该图存在环(3分)
(4) 完成无向图的最小生成树(Prim算法或Kruscal算法均可),并输出(3分)
(5) 完成有向图的单源最短路径求解(迪杰斯特拉算法)(3分)
链接:https://www.cnblogs.com/jinyifei/p/14199597.html
二维码:

码云链接:https://gitee.com/besti1923/java

给出statistic.sh的运行结果,说明本学期的代码量目标达到没有?

原定5000行代码,还是没达到差了几百行,有遗憾也有收获,继续加油。

加点代码,改点代码是理解的最好方式,参考编程的智慧,谈谈你的心得
需要更多的去学习,去更多的去打代码,注重实践,课上听和自己操作完全两码事,也要多记住一些英语单词。

积极主动敲代码做到没?教材实践上有什么经验教训?

刚开始挺积极的,可后来随着课程难度加大,逐渐被困难吓到,变得不那么积极,我觉得以后遇到困难都要迎难而上。

课程收获与不足

收获:学会了很多知识,得到了很多东西,有一个很大的自我提升。
不足:在课程学习中有懒惰的现象,没有坚持下来,应该一直坚持。

问卷调查

你平均每周投入到本课程有效学习时间有多少?

大约6个小时

每周的学习效率有提高吗?你是怎么衡量的?

还可以,就是有时候实验需要花费很多时间。

蓝墨云班课的使用对你的学习有促进吗?有什么建议和意见吗?

有作用,随机抽人很适合课堂学习。

你觉得这门课老师应该继续做哪一件事情?

继续提交实验时间能够延长,有时候确实实验可能做得慢。

你觉得这门课老师应该停止做哪一件事情?

无。

posted @ 2020-12-31 20:18  哈蛤蛤哈  阅读(148)  评论(0编辑  收藏  举报