第三次blog大作业

1,前言:最后两次大作业都是只有一道题,就是前面的家庭电路模拟题的迭代,题目量虽然看起来很少只有一道题目,但是这一道题目也比前面出几道题目的时候花的时间还要长,第七次大作业的迭代主要考虑的是单刀双置开光,单刀双置开关为了避免短路,他连接不同的电路还会有不同的电阻,串并联的套用,以及新加了一个窗帘电器,这个窗帘电器的输出还需要与电路中的其他能发光的电器有关,所以还要考虑到类与类之间的关系,例如继承,依赖等关系而,串并联的实现要用到类与类之间的循环服用,电流经过每一条电路时都需要判断是否有其他的并联电路。第八次大作业的难度就更加大了,因为之前我认为引脚没有发挥什么用处就之间将引脚删除了,而这次的大作业需要将管脚两边的电压都输出,所以这难度比前几次难度都要大,而且这次还加了一个二极管,二极管是单向电流通过的,所以我们还需要判断二级管的方向,这次还加上了电器的电流限制,如果电流过大,电器输出“exceeding current limit error”。还有电路短路的检测,如果电路的电流无穷大那么所有元器件信息不输出,仅输出提示“short circuit error”。
2,设计与分析:第七次大作业主要还是单刀双置开关,单刀双置开关有三个引脚,但是我还是只设置了两个,我把单刀双置开关的另外两个引脚分别放入两条电路的对象中,然后再在单刀双置开关的类中加上一个索引,用于判断单刀双置开关的另一端与哪一条电路相连。而对于单刀双置开关连接不同的电路对于不同的电阻这个问题,我是通过在开关中设置不同索引时,就把对应的电阻给赋值上去,这样就可以实现单刀双置开关对于不同的电路有着不一样的电阻,串并联的实现可以通过电路类中的方法里面判断是否有其他的串并联电路,在每一个电路类中的都可以调用其他电路的对象,还有对于窗帘电器的设计与分析,这个电器主要是在于他开闭大小判断,我是直接在我的工具类中先判断整个电路是否有窗帘,如果有就直接调用一个方法将整个电路的亮度总和计算出来,然后再传入窗帘类中的方法计算出来窗帘开闭的大小。
这是我对于单刀双置开关的设计,用了state作为他的另一边所连接的电路的索引,默认为2引脚,然后再通过setState方法来改变单刀双置开关所连接的引脚,电阻也会随着连接的电路改变而改变,默认的电阻值为5,输出单刀双置开关信息的时候需要判断他的索引是否是与2引脚电路相连,如果相连就输出turn on,否则就输出closed。

点击查看代码
class ExclusiveSwitch extends Electric {int state=2;public ExclusiveSwitch(String name) {super(name);super.r=5;}public int getState() {return state;}public void setState() {if(state==2){state=3;super.r=10;}else {state=2;super.r=5;}}@Overridepublic void display() {if(state==2){System.out.println("@"+this.name+":closed");}else {System.out.println("@"+this.name+":turned on");}}
}
然后这是我的窗帘类的设计,应为要求输出的格式为百分数,所以我就直接让小数后面乘以100,再加上一个百分号就可以了。
点击查看代码
public static void setTotalBright(){for(int i=0;i<electrics.size();i++){if(electrics.get(i).name.charAt(0)=='B'){((WhiteLight)electrics.get(i)).setBrightness();totalBright=((WhiteLight)electrics.get(i)).getBrightness()+totalBright;}if(electrics.get(i).name.charAt(0)=='R'){((DayLight)electrics.get(i)).setBrightness();totalBright=((DayLight)electrics.get(i)).getBrightness()+totalBright;}}}
点击查看代码
class Curtain extends Electric{public Curtain(String name) {super(name);super.r=15;}@Overridepublic void display() {}public void display(int totalBrightness) {double x;if(super.v<50){x=1;}else{if(totalBrightness<50){x=1;}else if(totalBrightness<100){x=0.8;}else if (totalBrightness<200) {x=0.6;}else if (totalBrightness<300) {x=0.4;}else if (totalBrightness<400) {x=0.2;}else{x=0;}}System.out.println("@"+super.name+":"+(int)(100*x)+"%");}
}
我的工具类中的输出方法也有了一些改变,因为窗帘的输出方法有了改变,他的输出方法需要参数值,所以不能像其他的电器一样直接输出了,得先判断一下是否为窗帘再进行调用此电器的输出方法。
点击查看代码
 public  static void shows(char a){ArrayList<Electric> k=new ArrayList<>();for (int i = 0; i< electrics.size(); i++) {if (electrics.get(i).name.charAt(0) == a){k.add(electrics.get(i));}}if(k.size()>1) {Sort.selectSort(k);}for(int i=0;i<k.size();i++){if(k.get(i).name.charAt(0)=='S') {((Curtain) k.get(i)).display(totalBright);}else if(k.get(i).name.charAt(0)=='H') {if(i==0){k.get(i).display();}else {int lk = 0;for (int j = 0; j < i; j++) {if (k.get(i).name.compareTo(k.get(j).name) == 0) {lk = 1;}}if (lk == 0) {k.get(i).display();}}}else {k.get(i).display();}}}
以下是我的类的设计与分析,类与类之间的关系,我还是先创建了一个最大的电器类,让所有的电器都继承他,再在其中建立一个开关类和线路类,还有一个变压器类,这三个类再继承最高的电器类,然后再建立连续变压器和分段变压器,让这两个变压器继承变压器,然后再建立一个主线路类,支路类,并联类,让这三个类继承最开始的线路类,接着再创建日光灯类,吊扇类,落地扇类,窗帘类,还有白炽灯类与单刀双置开关,让这些类都继承最开始的电器类,这样就完成了最基础的类的构建,最后再构建一个工具类,让电路的主要运行过程都在这个类中 最后只需要再主函数中调用工具类中的satrt方法就可以了

还是有些问题的,有些类的圈复杂度太高了。

3,踩坑心得:还是对于串并联电路的分析有问题,还有这个单刀双置开关,刚开始只考虑了他一定是有两个选择的引脚,没有考虑当他为普通开关时的作用,导致数据计算出现误差,

还有最大的问题是多并联电路的输出结果,感觉自己构建的没有问题,题目所给的多并联的输出样例用我的代码输出也是没有问题的,但是就是有这么多样例没有通过.

还有之前考虑窗帘时,一直在想如何才能将整条电路的亮度总和,最开始是想着这个亮度总和只会在窗帘对象中才会用到,所以我打算将亮度总和的属性放在窗帘类中,但后面想想,亮度只有在整个电路都通过电流时才能够计算,所以感觉放在窗帘类中不太好,再加上我将所有的电器都用了一个集合存储起来,放在工具类中,所以我最后打算将亮度总和这个属性放在工具类中,然后再用一个方法找出所有的电灯,算出总来亮度,等到窗帘输出时再将这个亮度总和传入窗帘类中,所以窗帘类的输出方法就会与电器父类中的输出方法有部分不一样,需要一个传参的过程,所以就导致窗帘类不能同其他的类一样输出,只能把窗帘类拿出来单独输出。

还有就是单刀双置开关的问题,我的想法是直接重新构建一个类,来用于单刀双置开关的输出,里面所有的信息都重新构建,我把单刀双置开关的另外两个引脚分别放入两条电路的对象中,然后再在单刀双置开关的类中加上一个索引,用于判断单刀双置开关的另一端与哪一条电路相连。而对于单刀双置开关连接不同的电路对于不同的电阻这个问题,我是通过在开关中设置不同索引时,就把对应的电阻给赋值上去,不过我的一个室友提出了他的见解,他是将两个普通开关放入单刀双置开关类中,一个开关专门对应单刀双置开关的一端,这样就不需要在电路中设置索引了。而且我自己的方法有一个弊端,那就是当这条线路中出现两个单刀双置开关时,索引就无法使用了,因为我的线路中只会存储一个索引,不能对应两个单刀双置开关,但是用他的思路就不会出问题,不过我当时理解不了他的想法,所以就没有使用他提出来的想法。

4,改进建议:第一个就是我的单刀双置开关的问题,这里需要改进,可以使用我上述我室友的想法,将两个普通开关放入单刀双置开关中,避免并联出现多个单刀双置开关而紊乱导致输出的数据出现问题,还有就是多并联套并联的情况,我认为问题还是出现在支路上,可能是支路出现并联时,电压没有很好的传入,而导致里面的分压出现了问题,亦或者是支路里面的并联的总电阻没有计算正确,我可以在支路里面再判断一下是否有并联电路,再做单独处理。

5,总结:我对于一些属性与类的放置更加熟练以及进一步强化了我对修饰符的理解,更加合理运用数组与集合,对于错误分析,以及找错的能力还有待加强,经常找不到自己的错误,只能够通过样例测试点来寻找,一旦不给测试点提示,我就只能通过所给的样例来找错误,疯狂试样例。来不断测试代码。

6,对于大作业的实行我觉得非常好。这样就可以每周都能锻炼到代码能力,有一点不足的是有时候大作业发放不及时,虽然最后也给了我们充足的时间来完成大作业,但还是会浪费很多时间,就会导致一学期下来大作业的次数变少了。还有就是实验的发放的问题,希望可以上一次实验课就在当周就发放提交的系统,这样就不会最后全部被堆积在一起了,而且提交时间也没有人通知,这样会导致实验提交不及时,实验提交还是不要再用实验提交系统了,bug太多了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/734255.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PTA题目集7~8的总结性Blog

前言: 对于我这种水平的学生来说本次的7-8次PTA的难度之大令我无从下手,况且之前的第6次PTA就已经让我望而止步了,更别提这两次在第6次PTA题目集之上再次进行迭代的题目了。再加上面临的期末周,大量学科等着我去复习,以至于没时间去钻磨PTA的改动,哭死,连老师都说单单是…

如何刻画复杂事件

用简单的基本事件来刻画复杂事件前言 复杂事件的刻画 ✍️[网摘整理]设 \(A\),\(B\) 是试验 \(E\) 的随机事件,深入体会用基本事件的和或积的运算来刻画复杂事件,并熟练掌握: ① \(A\)发生:\(A=AB+A\bar{B}\); ② 只有 \(A\) 发生:\(A\bar{B}\); ③ \(A\),\(B\) 恰有一…

VS2022 csproject文件增加发布时文件项

发布时新加的node_modules 总是不会伴随着其他文件一起发布到文件夹里面。一个一个添加选项太麻烦了。百度查询后发现可以通过修改csproject 把node_modules //添加节点即可 <ItemGroup> <Content Include="wwwroot\assets\node_modules\**"> <C…

【OHSAS 18001标准制定方】

OHSAS 18001标准的制定方是多个国际标准机构和专业组织合作的结果。这一标准是在1999年由英国标准协会(British Standards Institution, BSI)联合全球多个标准制定机构、认证机构与专业组织共同发展的。OHSAS 18001标准的制定考虑了与ISO 9001(质量管理体系)和ISO 14001(环…

Django - admin list_filter 自定义过滤器

from django.contrib import admin from django.contrib.admin import SimpleListFilterclass MyStatusFilter(SimpleListFilter):# 设置过滤标题title = "订单状态"# 设置自定义过滤字段parameter_name = status2# 显示筛选条件def lookups(self, request, model_ad…

DST Server搭建

DST Server(饥荒服务器搭建)方法介绍 论坛上的方法我看了试过了,然后我分析了他这个运行脚本以及偷懒去直接挪用了客户端创建的本地世界存档。这个文档之前在B的专栏上写过,但是切换编辑器新旧版的时候内容直接删除了。 涉及的目录和文件有: /home/lion/.local/share/Steam/…

.net6 prism wpf 使用halcon导出函数

1、halcon导出函数read_image(Image, 1.png) get_image_size (Image, Width, Height) dev_open_window (0, 0, Width-500, Height-500, black, WindowHandle) dev_display (Image) 2、使用导出的C#代码 4、修改导出的 cs程序1、HObject修改为公开属性2、封装Dispose函数 5、wp…

喜报 | 极限科技获得北京市“创新型”中小企业资格认证

2024年6月20日,北京市经济和信息化局正式发布《关于对2024年度4月份北京市创新型中小企业名单进行公告的通知》,极限数据(北京)科技有限公司凭借其出色的创新能力和卓越的企业实力,成功获得“北京市创新型中小企业”的殊荣。北京市“创新型中小企业”的殊荣,是对极限数据…

【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练

一、介绍 乐器识别系统。使用Python为主要编程语言,基于人工智能框架库TensorFlow搭建ResNet50卷积神经网络算法,通过对30种乐器(迪吉里杜管, 铃鼓, 木琴, 手风琴, 阿尔卑斯号角, 风笛, 班卓琴, 邦戈鼓, 卡萨巴, 响板, 单簧管, 古钢琴, 手风琴(六角形), 鼓, 扬琴, 长笛, 刮…

简书屏蔽Firefox,无法访问jianshu.io 图片

最近使用Firefox 访问简书时发现,简书页面中的图片均无法显示(事发时是在2024年六月份)。 通过查看Firefox“开发者工具”(“工具”-> "浏览器工具"->"web开发者工具")的Console和Network发现很多403错误,这些错误均是在访问jianshu.io时出现(…

Revel:Go语言中比Gin更好用的Web框架

Revel:Go语言中比Gin更好用的Web框架 原创 K8sCat 源自开发者 2024-05-28 23:54 广东 2人听过源自开发者 专注于提供关于Go语言的实用教程、案例分析、最新趋势,以及云原生技术的深度解析和实践经验分享。 259篇原创内容公众号在众多的Golang Web框架中,Revel以其全栈特性脱…

Maven下载、安装与配置

Maven下载、安装与配置下载 Maven 1、进入 Maven官方下载地址 2、点击 Download,再点击 Maven 3 archives,查看 3.x.x 版本的 Maven3、点击 3.9.6 文件夹(对应版本号),再点击 binaries 文件夹,点击下载 apache-maven-3.9.6-bin.zipbinaries:可执行版,是已经编译好的版本…

典型性相关分析在SPSS中的实现

典型性相关分析是研究两组变量(每组变量中都可能有多个指标)之间相关关系的一种多元统计方法。它能够揭示出两组变量之间的内在联系。 本文着重模型在spss中的应用,通过一道例题解释各个指标的意义。详细推导过程请选修课程《多元统计分析》 目录一、问题提出二、利用SPSS进…

PTA7-8次作业

Blog1.前言: 第七次作业是在第六次作业基础上的拓展,新增互斥开关与受控窗帘(要求:互斥开关有3个引脚:1个是汇总引脚,另两个是分支引脚。开关电路示意图如图1所示,左边是汇总引脚,编号为1;右边两个是分支引脚,右上的输出引脚为2,右下输出引脚为3。图中1、2、3引脚均…

.net6 prism wpf 8.1使用 halcondotnet 17.12程序集

1、找到安装目录下的halcondotnet.dll 2、自己新增dlls离线程序集合文件夹 3、放入halcondotnet.dll 4、wpf程序右键引用dll 5、报错 System.Drawing.Common问题nuget安装包 System.Drawing.Common 6、wpf使用halcondotnet.dll 程序集 <UserControl x:Class="Halcon…

表格结构转换(Filter+ToRow)

问题:一维表转成二维表,重复的内容横向展开 函数公式解决:=TOROW(FILTER(B$2:C$7,A$2:A$7=E2))

VAE生成人脸代码

基于VAE介绍的理论,简单实现VAE生成人脸,代码如下: utils.pyimport os from torch.utils.data import Dataset from torchvision.transforms import transforms import glob import cv2 import numpy as np import torchclass MyDataset(Dataset):def __init__(self, img_pa…

ret2shellcode

参考链接 :基本 ROP - CTF Wiki (ctf-wiki.org) 参考链接: https://www.freebuf.com/vuls/266711.html 参考链接:PWN入门(2-2-1)-栈迁移(x86) (yuque.com)介绍栈溢出漏洞的一种利用方式,通过向可写入可执行内存写入shellcode,并利用栈溢出漏洞将返回地址覆盖为shellco…

判断存在与否

问题:A、B两个表,在B表中判断其中数据在A表是否存在。 函数公式解决: =COUNTIF(A!A:A,A2)

有点难以描述的问题(转列+排序+去重)

问题: 以下数据起始值为0,与0同行的2在数据源中有重复,则取与之重复的2的同行数据即6,6在数据源中仍有重复,再取与之重复的6的同行数据8,8在数据源中没有重复,则为第一行第二列的结果。 以此类推。函数公式解决:=WRAPROWS(UNIQUE(SORT(TOCOL(A3:B8)),,1),2) 先用ToCal…