【课设大报告】 基于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.mzph.cn/news/186809.shtml

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

相关文章

C语言——有一个3*4的矩阵,要求求出其中值最大的那个元素的值,以及其所在的行号和列号

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h> int main() {int i,j,row0,colum0,a[3][4]{{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};int maxa[0][0];for ( i 0; i < 3; i)//行&#xff08;row&#xff09;{for ( j 0; j < 4; j)//列&#xff08;colum&#xf…

【Python】基础练习题_组合数据类型_2

dictMenu f’卡布奇洛’:32,‘摩卡’:30,‘抹茶蛋糕’:28,‘布朗尼’:26}&#xff0c; dictMenu 中存放了你的双人下午套餐&#xff08;包括咖啡2份和点心2份)的价格,请编写程序,让Python帮忙计算并输出消费总额。 dictMenu {卡布奇洛: 32, 摩卡: 30, 抹茶蛋糕: 28, 布朗尼: 2…

【云平台】STM32微信小程序阿里云平台学习板

【云平台】STM32微信小程序阿里云平台学习板 文章目录 前言一、立创EDA&#xff08;硬件设计&#xff09;1.主控STM32F103C8T62.ESP8266模块3.温湿度模块4.光照强度模块5.OLED显示模块6.PCB正面7.PCB反面8.3D视角正面9.3D视角反面 二、【云平台】STM32微信小程序阿里云平台学习…

CentOS7 网络配置

前言&#xff1a; 安装虚拟机后&#xff0c;在虚拟机ping www.baidu.com ping不通。 一、centos7配置IP地址有两种方法&#xff1a; 动态获取IP&#xff08;不推荐使用&#xff09;设置静态ip&#xff08;推荐&#xff09; 二、centos7配置静态IP&#xff1a; 第一步&#xff…

使用npm发布typescript包

使用npm发布typescript包 什么是NPM NPM&#xff08;节点包管理器&#xff09;是 JavaScript 编程语言的默认包管理器。NPM 注册表是一个公共存储库&#xff0c;充当存储和分发 JavaScript 包的中心枢纽。它允许开发人员轻松安装、管理和共享可重用的 JavaScript 代码包&…

python实现two way ANOVA

文章目录 目的&#xff1a;用python实现two way ANOVA 双因素方差分析1. python代码实现1 加载python库2 加载数据3 统计样本重复次数&#xff0c;均值和方差&#xff0c;绘制箱线图4 查看people和group是否存在交互效应5 模型拟合与Two Way ANOVA&#xff1a;双因素方差分析6 …

LeetCode(34)有效的数独【矩阵】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 36. 有效的数独 1.题目 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗…

[原创][3]探究C#多线程开发细节-“用ConcurrentQueue<T>解决多线程的无顺序性的问题“

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XXQQ: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi…

Unity随笔1 - 安卓打包JDK not found

今天遇到一个很奇怪的事情&#xff0c;之前可以正常打安卓包&#xff0c;但是突然报错如下&#xff1a; 提示很明显&#xff0c;找不到JDK了。可是我在下载Unity的时候明明安装了所有需要的组件&#xff0c;为什么今天突然不行。 看了眼Unity hub里面&#xff0c;没问题。 那就…

MySQL表的查询、更新、删除

查询 全列查询 指定列查询 查询字段并添加自定义表达式 自定义表达式重命名 查询指定列并去重 select distinct 列名 from 表名 where条件 查询列数据为null的 null与 (空串)是不同的&#xff01; 附&#xff1a;一般null不参与查询。 查询列数据不为null的 查询某列数据指定…

概念理论类-k8s :架构篇

转载&#xff1a;新手通俗易懂 k8s &#xff1a;架构篇 Kubernetes&#xff0c;读音是[kubə’netis]&#xff0c;翻译成中文就是“库伯奈踢死”。当然了&#xff0c;也可以直接读它的简称&#xff1a;k8s。为什么把Kubernetes读作k8s&#xff0c;因为Kubernetes中间有8个字母…

ssm+java车辆售后维护系统 springboot汽车保养养护管理系统+jsp

以前汽车维修人员只是在汽车运输行业中从事后勤保障工作,随着我国经济的发展,汽车维修行业已经从原来的从属部门发展成了如今的功能齐备的独立企业。这种结构的转变,给私营汽修企业和个体汽修企业的发展带来了契机,私营企业和个体维修企业的加入也带动了整个汽修行业的整体水平…

SSM校园组团平台系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 校园组团平台系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模…

Docker 下载加速

文章目录 方式1&#xff1a;使用 网易数帆容器镜像仓库进行下载。方式2&#xff1a;配置阿里云加速。方式3&#xff1a;方式4&#xff1a;结尾注意 Docker下载加速的原理是&#xff0c;在拉取镜像时使用一个国内的镜像站点&#xff0c;该站点已经缓存了各个版本的官方 Docker 镜…

《金融科技行业2023年专利分析白皮书》发布——科技变革金融,专利助力行业发展

金融是国民经济的血脉&#xff0c;是国家核心竞争力的重要组成部分&#xff0c;金融高质量发展成为2023年中央金融工作的重要议题。《中国金融科技调查报告》中指出&#xff0c;我国金融服务业在科技的助力下&#xff0c;从1.0时代的“信息科技金融”、2.0时代的“互联网金融”…

传统算法: Pygame 实现深度优先搜索(DFS)

使用 Pygame 模块实现了深度优先搜索(DFS)的动画演示。首先,它通过邻接矩阵表示了一个图的结构,其中每个节点表示一个字符,每个字符的邻居表示与之相邻的节点。然后,通过深度优先搜索算法递归地访问所有节点,过程中通过动画效果可视化每一步的变化。每次访问一个节点,该…

Goby 漏洞发布| CrushFTP as2-to 认证权限绕过漏洞(CVE-2023-43177)

漏洞名称&#xff1a; CrushFTP as2-to 认证权限绕过漏洞&#xff08;CVE-2023-43177&#xff09; English Name&#xff1a;CrushFTP as2-to Authentication Permission bypass Vulnerability (CVE-2023-43177) CVSS core: 9.8 影响资产数&#xff1a; 38695 漏洞描述&…

什么是透明加密技术?透明加密有哪些优势?

透明加密技术是一种特殊的加密方法&#xff0c;它在用户毫不知情的情况下对数据进行加密和解密&#xff0c;保障了数据的安全性。用户在使用这种加密技术时&#xff0c;无需改变他们的日常操作习惯&#xff0c;加密和解密过程在后台自动进行&#xff0c;使得用户在享受数据安全…

C语言--有三个字符串,要求找出其中长度最大的那一个

一.题目描述 有三个字符串&#xff0c;要求找出其中长度最大的那一个。 比如&#xff1a;输入三个字符串是&#xff1a; 第一个字符串:hello 第二个字符串&#xff1a;worldasd 第三个字符串&#xff1a;abcd 输出&#xff1a;最长的字符串是&#xff1a;worldasd 二.思路分析…

webpack优化打包速度

webpack打包速度太慢 优化 1.多线程打包 js压缩和loader 2.优化启动速度 hard-source-webpack-plugin 3.删除无用的 分析类插件 4.DllPlugin通道打包 1.webpack多线程打包 loader loader 使用 thread-loader 将他放置你要使用的loader前面就行&#xff0c;不过这个lorder例如s…