【课设大报告】 基于matlab gui设计的三极管学习系统

目录

设计背景

1.1设计目的

2.设计方法

2.1使用软件工具

  2.2设计流程

3.模块界面设计及代码分析

3.1登录

3.2注册

3.3主菜单

3.4三极管介绍

3.5进制转换

3.6单位换算

3.7绘图

4.不足和改善

5.总结


  1. 设计背景

1.1设计目的

本程序旨在帮助为了帮助学生了解三极管的工作原理,输入输出特性并解决其中遇到的一些问题,为此我们还提供一点工具。

2.设计方法

2.1使用软件工具

Matlab2021

  2.2设计流程

3.模块界面设计及代码分析

3.1登录

3.1.1登录界面

3.1.2登录代码分析

设置背景图片ha=axes('units','normalized','pos',[0 0 1 1]);uistack(ha,'down');ii=imread('background.jpg');image(ii);colormap grayset(ha,'handlevisibility','off','visible','on');登录accnum=get(handles.edit1,'string');root=get(handles.edit2,'string');fid=fopen('land.txt','r'); %打开文件line=fgetl(fid); %获取文件中的一行while ischar(line) %如果这一行中有字符s=regexp(line,' ','split'); %将这一行以空格为界拆分为数组a=cell2mat(s(1));b=cell2mat(s(2));if strcmp(a,accnum) == 1 && strcmp(b,root)==1 %如果账号密码都对close(spf); %关闭页面run(main); %打开主界面breakendif strcmp(a,accnum)==1 && strcmp(b,root)==0%如果账号对,密码错误msgbox('密码错误!','提示','warn');breakendif strcmp(a,accnum)==0 && strcmp(b,root)==1%如果账号错误msgbox('用户名未注册!','提示','warn');breakendline=fgetl(fid); %获取下一行end清除功能set(handles.edit1,'string',' '); %将空格输入编辑框中set(handles.edit2,'string',' ');关闭功能close(spf)

3.2注册

3.2.1注册界面

3.2.2注册代码分析

accnum=get(handles.edit1,'string');root=get(handles.edit2,'string');fid=fopen('land.txt','a+'); %以追加的方式打开文件fprintf(fid,'%s ',accnum); %将账号和一个空格符写入文件fprintf(fid,'%s\n',root);%将密码写入文件h=dialog('name','关于...','position',[500 500 200 70]);%定义提示框uicontrol('parent',h,'style','text','string','注册成功!','position',[50 40 120 20],'fontsize',12);uicontrol('parent',h,'style','pushbutton','position',...[80 10 50 20],'string','确定','callback','delete(gcbf)');close(spf_01);run(spf);

3.3主菜单

3.3.1主菜单界面

3.3.2主菜单代码分析

工具栏按钮:返回

close(main)

按钮组:切换到下一个gui界面

close(main)

run (其他界面)

3.4三极管介绍

3.4.1介绍界面

3.4.2代码分析

进入坐标系的创造函数

imshow(imread('sjg.png')); %插入图片

3.5进制转换

3.5.1进制转换界面

3.5.2进制转换代码分析

num=get(handles.edit1,'string');num10=bin2dec(num); %二进制转十进制set(handles.edit2,'string',num2str(num10));num=get(handles.edit1,'string');num10=bin2dec(num); %二进制转十进制num8=dec2base(num10,8); %十进制转八进制set(handles.edit2,'string',num2str(num8));num=get(handles.edit1,'string');num10=bin2dec(num); %二进制转十进制num16=dec2hex(num10); %十进制转十六进制set(handles.edit2,'string',num2str(num16));num=get(handles.edit1,'string');num10=base2dec(num,16); %十六进制转十进制num8=dec2base(num10,8); %十进制转八进制set(handles.edit2,'string',num2str(num8));

3.6单位换算

3.6.1单位换算界面

3.6.2单位换算代码分析

长度table=[1,1000,10000,0.53996]; %单位换算表a=get(handles.edit1,'string');b=str2num(a); %类型转换c(1)=b/table(1);for i=1:4%根据单位个数设置循环数c(i)=c(1)*table(i); %计算b=num2str(c(i)); %赋值set(handles.(['edit' num2str(i)]),'string',b);guidata(hObject,handles); %实时更新与保存end面积table=[1,1e2,1e6,1e10]; %单位换算表a=get(handles.edit1,'string');b=str2num(a); %类型转换c(1)=b/table(1);for i=1:4%根据单位个数设置循环数c(i)=c(1)*table(i); %计算b=num2str(c(i)); %赋值set(handles.(['edit' num2str(i)]),'string',b);guidata(hObject,handles); %实时更新与保存end体积table=[1,1e3,1e9]; %单位换算表a=get(handles.edit1,'string');b=str2num(a);c(1)=b/table(1); %类型转换for i=1:3%根据单位个数设置循环数c(i)=c(1)*table(i); %计算b=num2str(c(i));set(handles.(['edit'%赋值 num2str(i)]),'string',b);guidata(hObject,handles); %实时更新与保存end

3.7绘图

3.7.1绘图界面

3.7.2绘图界面代码分析

初始定义t=0:0.01:2*pi; %在列表框的创造函数中定义tcanshu1=sin(t);canshu2=cos(t);canshu3=sin(t)+cos(t);CS={canshu1,canshu2,canshu3};handles.CS=CS;guidata(hObject,handles)%进行更新和保存提取x轴selected_index=get (handles.listbox1,'value');str=get (handles. listbox1, 'string'); %将string的所有文字保存在str中set(handles.edit1,'string',str{selected_index})x=handles.CS{selected_index};%把x储存在handles.xhandles.x=x;guidata(hObject,handles) %进行更新和保存提取y轴selected_index=get (handles.listbox1,'value');str=get (handles. listbox1, 'string'); %将string的所有文字保存在str中set(handles.edit2,'string',str{selected_index})y=handles.CS{selected_index};handles.y=y; %把y储存在handles.yguidata(hObject,handles) %进行更新和保存绘图axes(handles.axes1) %将这个图表至于当前h=plot(handles.x,handles.y);handles.h=h;guidata(hObject,handles) %实时更新与保存axis equal %使其坐标系等价

4.不足和改善

在本次用matlab的gui设计界面时,还有一些不足的地方,如单位换算界面不能实现随机一个输入框都可以换算,输入的数字只会在第一个数据框中显示然后换算到其他数据框,不是非常人性化,还有在进制转换中十进制转二进制,二进制显示有问题,而且十进制两位数转二进制会分开显示,我不知道怎么更改。以上大概就是这次设计的一些问题。除此之外,此次设计还是挺顺利的。

5.总结

在本次设计过程中,我了解matlab的gui设计界面的一些基本应用,例如语句的赋值,图片的插入,界面背景的使用。这次的matlab实习设计让我得到了很大的提升。通过matlab的gui界面可以把许多复杂的程序设计简单化,可以大大节约时间和人力。接下来我也会多多练习matlab加强自身编程能力。

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

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

相关文章

CANDENCE: PCB 如何高亮网络、器件

PCB 如何高亮网络、器件 开始前先学习一个单词:assign CANDECE 高亮网络 step1: 选择一个颜色:红色 step2: 筛选要高亮什么:网络 or 器件,这里选择网络。 step3:鼠标点击要高亮的网络: 这里是GND 这里…

华为云之云桌面Workspace的使用体验

华为云之云桌面Workspace的使用体验 一、云桌面Workspace介绍1.云桌面简介2.云桌面特点3. 云桌面应用场景①远程移动办公②协同办公③安全办公④公用终端⑤图形制作渲染 二、本次实践介绍1. 本次实践目的2. 本次实践环境 三、购买云桌面1. 进入华为云的云桌面购买界面2. 选择购…

Cookie要怎么测试?

前言 Cookie是一种用于在web应用程序中存储用户特定信息的方法,可以让网站服务器把少量数据存储到客户端的硬盘或内存,或是从客户端的硬盘读取数据。Cookie的测试是指对Cookie的功能、性能、安全性、兼容性等方面进行验证的过程。 同时,在这…

电商物流信息查询难?一招解决

在当今的电商时代,物流信息查询一直是电商行业的痛点。很多电商商家在处理大量快递订单时,经常需要手动一个个查询快递信息,不仅耗时而且耗力。为了解决这个问题,我们可以使用固乔快递查询助手,它可以帮助我们快速批量…

TZOJ 1378 发工资咯

答案&#xff1a; #include<stdio.h> int main() {int n 0, m 0, i 0, sum 0;while (scanf("%d", &n) && n ! 0) //多组数据输入并且不等于0{for (i 0; i < n; i) //有n名老师就循环n次{scanf("%d", &m); //该名老…

iptables防火墙之SNAT与DNAT

1. SNAT SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由) SNAT原理:源地址转换&#xff0c;根据指定条件修改数据包的源IP地址&#xff0c;通常被叫做源映射。 数据包从内网发送到公网时&#xff0c;SNAT会把数据包的源IP由私网IP…

Python字符串大小写转换的函数及用法

Python字符串由内建的str类代表&#xff0c;那么str 类包含哪些方法呢&#xff1f;Python 非常方便&#xff0c;它甚至不需要用户查询文档&#xff0c;Python 是“自带文档”的。 这里需要读者简单掌握两个帮助函数&#xff1a; dir()&#xff1a;列出指定类或模块包含的全部…

人工智能驱动的医疗辅助:陪诊系统的技术原理与应用

随着人工智能技术的不断发展&#xff0c;医疗领域也迎来了新的可能性。本文将深入探讨陪诊系统的技术原理及其在医疗领域中的应用。我们将重点关注人工智能的核心概念&#xff0c;如自然语言处理、机器学习和语音识别&#xff0c;以解释陪诊系统是如何在医疗环境中发挥作用的。…

队列基础(循环队列)

1.队列的定义: 和栈相反,队列(queue)是一种先进先出(first in first out,缩写为FIFO)的线性表.它只允许在表的一端进行插入,而在另一端删除元素. 在队列中,允许插入的一端叫做队尾(rear),允许删除的一端则称为队头(front). 2.循环队列的设计图示: 3.循环队列的结构设计: ty…

货代FOB条款卖方必备的知识:发货人都要承担哪些费用呢?

据统计&#xff0c;中国出口中以FOB成交的占到70%&#xff0c;但专家指出&#xff1a;FOB对出口商的风险更大&#xff0c;有可能造成货、款两空的结局。 目前我国出口合同以FOB价格条款成交的比例越来越大&#xff0c;而且收货人指定船公司的少&#xff0c;指定境外货代的多&am…

【强迫症患者必备】SpringBoot项目中Mybatis使用mybatis-redis开启三级缓存必须创建redis.properties优化方案

springboot项目中mybatis使用mybatis-redis开启三级缓存需要创建redis.properties优化方案 前言下载mybatis-redis源码分析RedisCache 代码RedisConfigurationBuilder的parseConfiguration方法 优化改造1.创建JedisConfig类2.复制RedisCache代码创建自定义的MyRedisCache3.指定…

WSL中安装的Pycharm如何在Windows的开始菜单中新建图标?或WSL中的Pycharm经常花屏

WSL中安装的Pycharm如何在Windows的开始菜单中新建图标&#xff1f;或WSL中的Pycharm经常花屏 ⚙️1.软件环境⚙️&#x1f50d;2.问题描述&#x1f50d;&#x1f421;3.解决方法&#x1f421;&#x1f914;4.结果预览&#x1f914; ⚙️1.软件环境⚙️ Windows10 教育版64位 W…