- 浏览: 102608 次
- 性别:
- 来自: 深圳
-
最新评论
-
zpap:
这样的的设置好像是有问题的..
JDK环境变量配置小工具 -
qiaoxia_lan:
都不能访问,这是怎么回事啊。
为JAVA爱好者提供了超过400本电子书和3部视频 -
Tortoise:
最好多一些视频文件,个人感觉比较好一点
为JAVA爱好者提供了超过400本电子书和3部视频 -
skj198568:
看看了,好书还不少。
为JAVA爱好者提供了超过400本电子书和3部视频 -
njuptsoz:
谢谢分享!
JDK环境变量配置小工具
Delphi制作数据感知控件之浮想联翩
知识点
本文共有6个关于控件的知识点:
1、基本控件的制作;2、感知属性的添加;3、关联控件的销毁处理;
4、事件方法的赋值; 5、属性页的制作; 6、组件包设计思想
关于制作感知控件的文章有不少,但涉及的内容大都比较单一,读者只能依照文章的陈述按部就班地操作,无法很好的理解控件的制
作机制。本文试图通过讲解一个控件的制作流程来着重阐述制作感知控件的思路和编程思想,让读者真正了解VCL控件的制作机制,
而非仅仅达到了解此控件的制作方法为目的,希望能使读者在阅读以后达到“一叶落而知天下秋”的效果,哈,夸张了。
本文以制作一个类似于DBEdit的控件为例。首先使用组件向导从TEdit下继承下来,命名TMyDataBaseEdit,单元名为
MyDataBaseEdi.pas,安装在一个新的包文件中,起名为MyDataEditStd60.Dpk。
包的命名没有规则,但是我们建议遵守包的命名约定:包的命名与包的版本相关,包的名称前面几个字符通常表示作者或公司名,也
可以是控件的一个描述词,后面紧跟的Std表示运行期包,Dsgn表示设计期包,然后是版本号。关于包的设计方式我们将随后详细说
明。
数据感知
准备就绪,我们开始编辑控件的功能,首先添加数据源感知属性 .DataSource,实现此属性只需Pubished域添加一句话:
property DataSource: TDataSource read GetDataSource write SetDataSource;按下shift +ctrl+ C组合键(complete class
at cursor)完成属性的自动结构化功能,private域自动添加两个函数:
procedure SetDataSource(const Value: TDataSource);
function GetDataSource: TDataSource;
这样,安装组件到面板,可以看到该组件已经拥有了.DataSource属性,并实现感知TDataSource控件功能。怎么样,简单吧,呵呵。
其实我们由此可以得到:控件属性的感知只不过是将它的一个属性声明为将要感知的控件类而已,如果感知Image控件,则:
property MyImage:TImage read GetImage write SetImage;
但是,假如我们要将一个控件作为这个控件的子属性,即将这两个控件的代码合并,则不能单单需要上述那一句话了:
首先,去掉添加控件的注册函数;
其次,将其从TComponent继承改为从TPersistent继承下来。大家可试试看。
事件赋值
不过,该控件并不能真正与数据库相连,只是一个样子而已,要真正实现功能,我们需要添加代码,这时候我们用到了一个重要
的类TfieldDataLink。
它是控件内部的数据联接对象,从TDataLink继承下来,它的作用是与TDataSource组件相互通信,连接单个字段进行数据提取。我们
将要处理这个对象的OnDataChange事件,这样,当字段或记录有所改变时就会得到通知,进行相应的数据处理。Ok,我们声明对象并
创建:
private域声明 FDataLink:TFieldDataLink;构造函数中创建
constructor TMyDataBaseEdit.Create(AOwner: TComponent);
begin
inherited;
FDataLink := TFieldDataLink.Create;
FDataLink.OnDataChange := DataChange;
end;
DataChange是我们private域声明的一个过程:procedure DataChange(Sender: TObject);这里面实现了我们这个控件的实际功能,
并和FDataLink.OnDataChange事件相连。创建成功之后我们实现GetDataSource、SetDataSource函数过程:
function TMyDataBaseEdit.GetDataSource: TDataSource;
begin
Result := FDataLink.DataSource;
end;
procedure TMyDataBaseEdit.SetDataSource(const Value: TDataSource);
begin
if not (FDataLink.DataSourceFixed and (csLoading in ComponentState)) then
begin
FDataLink.DataSource := Value;
end;
if Value <> nil then
begin
Value.FreeNotification(Self);
end;
end;
关联控件的销毁
实现了上述代码,这样数据才真正的与控件关联起来,要个性化处理数据就要添加DataChange过程的代码了。
那么Value.FreeNotification(Self)代码是什么意思呢?请大家想一想:我们的组件需要和DataSource控件和DataSet控件相组合才
能实现数据库数据的读写,那么当我们删除其中一个时,如果其他两个控件不知道,那么是不是会出现异常呢?答案是肯定的。
那么我们怎样才能做到通知其他组件呢?Yes, Value.FreeNotification(Self)就是做这个工作的!FreeNotification(self)将会把
我们的组件置入其通知对象列表中,被撤消时,它会依次调用通知对象列表中所有对象的Notification方法,我们只需要在组件中重
载它就行:
protected
{ Protected declarations }
procedure Notification(AComponent: TComponent;Operation: TOperation);override;
代码实现如下:
procedure TMyDataBaseEdit.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited Notification(AComponent, Operation);
if (Operation = opRemove) and (FDataLink <> nil) and
(AComponent = DataSource) then DataSource := nil;
end;
这样,当关联的参考控件被删除时,控件就会得到消息,来处理事件,防止异常的发生,否则将会导致Delphi开发环境的不稳定甚至
死机,切记!
同时,不要忘了重载Destroy函数:
destructor TMyDataBaseEdit.Destroy;
begin
inherited;
FDataLink.Free;
FDataLink := nil;
end;
确保使用完之后销毁FDataLink的实例,释放空间。无论是写组件还是写程序我们都要严格注意声明的对象,一定要在使用完之后释
放!
添加DataField属性
我们使用此控件的功能目的是想连接好数据库组件后,通过选择字段名,将其字段值显示在Edit.Text中。那么我们还缺一个属
性.DataField。
published域声明:
property DataField: string read GetFieldName write SetFieldName;
实现如下:
function TMyDataBaseEdit.GetFieldName: string;
begin
Result := FDataLink.FieldName;
end;
procedure TMyDataBaseEdit.SetFieldName(const Value: string);
begin
FDataLink.FieldName := Value;
end;
OK,这样数据库中的字段就将列在下拉框中了。
下面我们填写我们的数据处理过程:
procedure TMyDataBaseEdit.DataChange(Sender: TObject);
begin
if FDataLink.Field <> nil then
begin
Text := FDataLink.Field.Text;
end;
end;
哈,现在基本上可以运行起来了。现在,我们将Table,DataSource连接起来,来看看当前记录发生改变时,MyDataBaseEdit控件的
Edit框中显示所选字段的字段值
添加属性页(About)
现在基本功能已经具备了,下面我们给它加上一个属性页,我们这里只是做一个About对话框演示,开发者可根据自己的实际功能要
求自行定制。
我们实现的效果是要求:在属性编辑浏览器中出现一项About属性,右侧显示:(About)… 点击“…”按钮弹出一个对话框。
下面我们开始新建一个Package,按照命名规则起名:MyDataEditDsgn60.Dpk,然后新建一个Form,作为About对话框,我们可以根据
需要自行设计界面。我们新建一个类TAboutEditor使其从TPropertyEditor下继承过来:
TAboutEdit = class(TPropertyEditor)
FFrmAbout: TfrmAbout;
function GetAttributes: TPropertyAttributes;override;
function GetValue: string;override;
procedure Edit;override;
end;
注意:将全局的Form变量删掉,重新在TAboutEdit类中声明一个新的私有变量。
覆盖Edit函数:
procedure TAboutEdit.Edit;
begin
FFrmAbout := TfrmAbout.Create(Application);
FFrmAbout.ShowModal;
FFrmAbout.Free
end;
用来创建销毁窗体对象。
覆盖GetAttributes函数:
function TAboutEdit.GetAttributes: TPropertyAttributes;
begin
Result := [paDialog,paReadOnly];
end;
告诉IDE将以何种工作方式进行显示,关于TPropertyAttributes可以参考帮助看看,这里不再赘述。我们这里是以只读对话框的方式
显示的,Object Inspector将在About属性旁边出现一个省略号按钮。当用户单击这个按钮,就调用Edit方法。
覆盖GetValue函数,是为了省略号按钮旁出现“(About)”的字样,并且只读。
function TAboutEdit.GetValue: string;
begin
Result := (About)
end;
好了,工作基本完成,如果你还想进一步控制,还可以在研究TPropertyEditor类的代码。这里就不细说了。
也许你产生疑问了:这样能行了吗?控件怎么知道这个Package的属性方法,没关联呀。对了,要想把编辑器和控件关联起来还要2项
工作:
1、 控件增加一个string 类型的”About”属性
2、 在编辑器的单元里注册属性编辑器
第一步,很简单,大家早就熟悉增加一个属性的方法了:
private
FAbout: string
Published
Property About: string read FAbout write FAbout;
第二步,也只是在属性编辑器单元增加一个注册的全局过程函数:
procedure Register
beging
//只有一句话:
RegisterPropertyEditor(TypeInfo(string),TMyDataBaseEdit,About,TAboutEdit);
end;
现在,我来解释一下RegisterPropertyEditor函数:它用来注册一个属性编辑器,将控件中的一个属性和编辑器关联起来。
l 第一个参数:TypeInfo
(string),参数原型:PropertyType:PTypeInfo它是一个指针,指向要编辑的属性的运行期类型信息,我们通过TypeInfo()获取
。
l 第二个参数:TMyDataBaseEdit,参数原型:Component: Calss,用于指定这个属性编辑器所作用的组件类。
l 第三个参数是一个字符串,用于指定被作用属性的名称。
l 第四个参数用于指定属性编辑器的类型。
假如第二个参数设为nil,第三个参数设为空串,会如何呢?嘿嘿,所有string类型的属性全部变成About框了,哈哈。
大家注意,我们在这里只是简单的做了一个About对话框,目的是为了能够让大家快速清晰地了解属性编辑器的设计原理,我们也可
以把它做成一个复杂的有返回值的对话框,这样我们就可以真正用对话框来编辑控件的属性了。这就要看各位的实际需要了,但万便
不离其宗,呵呵。
有兴趣的话大家还可以研究一下Delphi的Source\Property Editors目录下的StringsEdit单元。(关于属性编辑器更详细的各种类型
、定义可以参考《Delphi5开发人员指南》第三部分“关于组件的开发”或仔细研究DesignEditors单元)
包的设计思想
在进行编辑器设计的时候我们新建了一个Package组件包。组件包,大家应该都比较了解它了,它类似于Dll,不过只是在Delphi和
CBuilder环境中通用。很好的利用此包,可以使我们的程序模块清晰,能最大限度的代码重用,使程序的体积尽量减小,而且可以在
这两种语言环境中互用。这里就不多说了,否则跑题太远,有兴趣的话大家可以跟我联系,共同探讨。
现在,我来说一下为什么要和控件的包分开,单独新建一个Package组件包。
首先,分块划分好管理,这不用多说了,一个运行期包,一个设计期包,使应用程序的体积变小,省得所有关于的单元全部链接到执
行程序中去(Delphi5及前版本),即使你只在程序中静态地进行链接,混合运行时和设计时的代码也将使你的代码膨胀。因为你的
设计时代码在运行时不会被执行,但是编译器并不知道,所以把它也一起链接进去了。
其实重要的一个原因是,Delphi6版本以来,VCl结构对Delphi5及前版本有所调整,Borland用DesignIntf替换了DsgnIntf,而且属性
编辑器也被放进DesignEditors、DesignMenus、DesignWindows和其它的一些设计文件里。特别是DesignEditors使用了其它的一个名
叫Proxies的IDE文件。而Proxies被编译进了DesignIDE.bpl文件中。DesignIDE.bpl已经不再是一个可以分发的文件,我们只能在开
发环境中使用,不用说,这时候编译应用程序时就出现“找不到文件”的问题了。这时,我们将运行期包和设计期包分开,将设计期
包加入designide.dcp文件,分别编译包文件,就能保证正确无误,编译通过!
所以我们遵守一些约定,将使我们的代码结构达到最优化,一般设置如下:
设计时包应该包括:
1、 所有的注册声明(最好放在一个单独的单元中);
2、 所有的属性编辑器;
3、 所有的组件编辑器;
4、 将需要DesignIDE支持的包。
注:组件编辑器是通过在组件上弹出快捷菜单,象Table等组件。它的制作比较类似,是从TComponentEditor下继承来的。这里不再
多讲了。
运行时包应该包括:
1、 组件本身。
2、 组件可能在运行时调用的窗体(属性编辑器用到的)。
Package部分由于版本不同而对不同的版本要进行不同的设计,Delphi 6.0的编辑器版本是VER140,Delphi 5.0的编辑器版本是
VER130,如果我们想适应不同的版本需要使用 {$IFDEF VER140}。。。{$ELSE}。。。{$ENDIF};在Uses域进行控制,这点大家稍加注
意。
发表评论
-
为JAVA爱好者提供了超过400本电子书和3部视频
2009-01-10 14:20 2484http://www.ibook8.com/book/java ... -
http://blog.csdn.net/ycw/
2008-08-08 15:52 855http://blog.csdn.net/ycw/ ... -
WinCVS与CVSNT简明使用手则
2008-08-08 15:51 1234WinCVS与CVSNT简明使用手 ... -
WinCVS与CVSNT简明使用手则
2008-08-08 15:50 11481、前言:CVS是版本控制 ... -
CVS使用手册(推荐)
2008-08-08 15:47 1300版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出 ... -
用cvs实现复杂的权限控制
2008-08-08 15:46 3505作者:张元一这篇文章的基础是:为CVS建立只读用户,如果你对C ... -
CVSNT用户管理方案
2008-08-08 15:46 1148所有这些操作基于的环境和软件版本:WINDOWS2000 Pr ... -
CVS中增加目录及标签和分支
2008-08-08 15:44 30831.在cvs中增加目录. 如果要在CVS中增加一个目录层,而不 ... -
CVS权限设置
2008-08-08 15:43 2282不同用户设置不同的访 ... -
关于CVS在Window2000下的权限管理
2008-08-08 15:40 910一. CVS版本问题 CVS分开客户端和服务器端两个程序 ... -
SQL备份
2008-07-17 10:01 795备份: backupsql := 'backup databa ... -
SQL导入/导出Excel
2008-07-17 10:01 1186这是在CSDN上邹键的东 ... -
portscan程序代码
2008-06-25 16:33 915#include <afxext.h> #incl ... -
CIH 1.4源程序
2008-06-25 16:32 817CIH 1.4源程序 信息来源:黑客防线; ********* ... -
ARP攻击软件源码
2008-06-25 16:29 1382/****************************** ... -
微软ping命令的源代码
2008-06-25 16:29 875/****************************** ... -
MD5破解相关MAKE.bat
2008-06-25 16:27 1048信息来源:xfocus z:\md5coll>MAKE ... -
一段隐藏文件的C++程序源代码
2008-06-25 16:25 2707#include <iostream>#inclu ... -
TCP多线程正向后门源代码
2008-06-25 16:23 1222#!usr/bin/perl -w #duo_xian_nc. ... -
简易Telnet后门源代码
2008-06-25 16:19 1975/////////////////////////////// ...
相关推荐
1、文件内容:ibus-table-chinese-erbi-1.4.6-3.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ibus-table-chinese-erbi-1.4.6-3.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
选择Java后台技术和MySQL数据库,在前台界面为提升用户体验,使用Jquery、Ajax、CSS等技术进行布局。 系统包括两类用户:学生、管理员。 学生用户只要实现了前台信息的查看,打开首页,查看网站介绍、自习室信息、在线留言、轮播图信息公告等,通过点击首页的菜单跳转到对应的功能页面菜单,包括网站首页、自习室信息、注册登录、个人中心、后台登录。 学生用户通过账户账号登录,登录后具有所有的操作权限,如果没有登录,不能在线预约。学生用户退出系统将注销个人的登录信息。 管理员通过后台的登录页面,选择管理员权限后进行登录,管理员的权限包括轮播公告管理、老师学生信息管理和信息审核管理,管理员管理后点击退出,注销登录信息。 管理员用户具有在线交流的管理,自习室信息管理、自习室预约管理。 在线交流是对前台用户留言内容进行管理,删除留言信息,查看留言信息。
面向基层就业个性化大学生服务平台(源码+数据库+论文+ppt)java开发springboot框架javaweb,可做计算机毕业设计或课程设计 【功能需求】 面向基层就业个性化大学生服务平台(源码+数据库+论文+ppt)java开发springboot框架javaweb,可做计算机毕业设计或课程设计 面向基层就业个性化大学生服务平台中的管理员角色主要负责了如下功能操作。 (1)职业分类管理功能需求:对职业进行划分分类管理等。 (2)用户管理功能需求:对用户信息进行维护管理等。 (3)职业信息管理功能需求:对职业信息进行发布等。 (4)问卷信息管理功能需求:可以发布学生的问卷调查操作。 (5)个性化测试管理功能需求:可以发布个性化测试试题。 (6)试题管理功能需求:对测试试题进行增删改查操作。 (7)社区交流管理功能需求:对用户的交流论坛信息进行维护管理。 面向基层就业个性化大学生服务平台中的用户角色主要负责了如下功能操作。 (1)注册登录功能需求:没有账号的用户,可以输入账号,密码,昵称,邮箱等信息进行注册操作,注册后可以输入账号和密码进行登录。 (2)职业信息功能需求:用户可以对职业信息进行查看。 (3)问卷信息功能需求:可以在线进行问卷调查答卷操作。 (4)社区交流功能需求:可以在线进行社区交流。 (5)个性化测试功能需求:可以在线进行个性化测试。 (6)公告资讯功能需求:可以查看浏览系统发布的公告资讯信息。 【环境需要】 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.数据库:MySql 5.7/8.0等版本均可; 【购买须知】 本源码项目经过严格的调试,项目已确保无误,可直接用于课程实训或毕业设计提交。里面都有配套的运行环境软件,讲解视频,部署视频教程,一应俱全,可以自己按照教程导入运行。附有论文参考,使学习者能够快速掌握系统设计和实现的核心技术。
三菱Fx3u程序:自动检测包装机电机控制模板,PLC脉冲与伺服定位,手自动切换功能,三菱Fx3u程序:自动检测包装机电机控制模板——涵盖伺服定位与手自动切换功能,三菱Fx3u程序,自动检测包装机。 该程序六个电机,plc本体脉冲控制3个轴,3个1pg控制。 程序内包括伺服定位,手自动切,功能快的使用,可作为模板程序,很适合新手。 ,三菱Fx3u程序; 自动检测包装机; 六个电机; PLC脉冲控制; 伺服定位; 手自动切换; 功能快捷键; 模板程序。,三菱Fx3u PLC控制下的自动包装机程序:六电机伺服定位与手自动切换模板程序
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
计及信息间隙决策与多能转换的综合能源系统优化调度模型:实现碳经济最大化与源荷不确定性考量,基于信息间隙决策与多能转换的综合能源系统优化调度模型:源荷不确定性下的高效碳经济调度策略,计及信息间隙决策及多能转的综合能源系统优化调度 本代码构建了含风电、光伏、光热发电系统、燃气轮机、燃气锅炉、电锅炉、储气、储电、储碳、碳捕集装置的综合能源系统优化调度模型,并考虑P2G装置与碳捕集装置联合运行,从而实现碳经济的最大化,最重要的是本文引入了信息间隙决策理论考虑了源荷的不确定性(本代码的重点)与店铺的47代码形成鲜明的对比,注意擦亮眼睛,认准原创,该代码非常适合修改创新,,提供相关的模型资料 ,计及信息间隙决策; 综合能源系统; 优化调度; 多能转换; 碳经济最大化; 风电; 光伏; 燃气轮机; 储气; 储电; 储碳; 碳捕集装置; P2G装置联合运行; 模型资料,综合能源系统优化调度模型:基于信息间隙决策和多能转换的原创方案
IPG QCW激光模块电源驱动电路设计与实现:包含安全回路、紧急放电回路及光纤互锁功能的多版本原理图解析,IPG QCW激光模块电源驱动电路设计与实现:含安全回路、紧急放电及光纤互锁等多重保护功能的原理图解析,IPG QCW激光模块电源驱动电路, 包含安全回路,紧急放电回路,光纤互锁回路等, 元件参数请根据实际设计适当调整,此电路仅供参考,不提供pcb文件 原理图提供PDF和KICAD两个版本。 ,IPG激光模块; QCW激光电源驱动; 安全回路; 紧急放电回路; 光纤互锁回路; 原理图PDF和KICAD版本。,IPG激光模块电源驱动电路图解:含安全与紧急放电回路
基于LSSVM的短期电力负荷预测模型及其性能评估:结果揭露精确度与误差分析,LSSVM在短期电力负荷预测中的结果分析:基于均方根误差、平均绝对误差及平均相对百分误差的评估。,LSSVM最小二乘支持向量机做短期电力负荷预测。 结果分析 均方根误差(RMSE):0.79172 平均绝对误差(MAE):0.4871 平均相对百分误差(MAPE):13.079% ,LSSVM(最小二乘支持向量机);短期电力负荷预测;均方根误差(RMSE);平均绝对误差(MAE);平均相对百分误差(MAPE),LSSVM在电力负荷短期预测中的应用及性能分析
1、文件内容:libmtp-examples-1.1.14-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/libmtp-examples-1.1.14-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持
2023-04-06-项目笔记-第四百一十六阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.414局变量的作用域_414- 2025-02-21
MINIST数据集和春风机器学习框架
1、文件内容:ibus-table-chinese-wu-1.4.6-3.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/ibus-table-chinese-wu-1.4.6-3.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
宿舍管理系统(源码+数据库+论文+ppt)java开发springboot框架javaweb,可做计算机毕业设计或课程设计 【功能需求】 系统拥有管理员和学生两个角色,主要具备系统首页、个人中心、学生管理、宿舍信息管理、宿舍分配管理、水电费管理、进入宿舍管理、出入宿舍管理、维修信息管理、卫生信息管理、考勤信息管理、留言板、交流论坛、系统管理等功能模块。 【环境需要】 1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.数据库:MySql 5.7/8.0等版本均可; 【购买须知】 本源码项目经过严格的调试,项目已确保无误,可直接用于课程实训或毕业设计提交。里面都有配套的运行环境软件,讲解视频,部署视频教程,一应俱全,可以自己按照教程导入运行。附有论文参考,使学习者能够快速掌握系统设计和实现的核心技术。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
人凤飞飞凤飞飞是粉色丰富
2024蓝桥杯嵌入式学习资料
image_download_1740129191509.jpg
基于Multisim仿真的带优先病房呼叫系统设计(仿真图) 设计一个病房呼叫系统。 功能 (1)当有病人紧急呼叫时,产生声,光提示,并显示病人的编号; (2)根据病人的病情设计优先级别,当有多人呼叫时,病情严重者优先; (3)医护人员处理完当前最高级别的呼叫后,系统按优先级别显示其他呼叫病人的病号。
基于STM32F103的3.6kW全桥逆变器资料:并网充电放电、智能切换与全方位保护方案,基于STM32F103的3.6kW全桥逆变器资料:并网充电放电、智能控制与全方位保护方案,逆变器光伏逆变器,3.6kw储能逆变器全套资料 STM32储能逆变器 BOOST 全桥 基于STM32F103设计,具有并网充电、放电;并网离网自动切;485通讯,在线升级;风扇智能控制,提供过流、过压、短路、过温等全方位保护。 基于arm的方案区别于dsp。 有PCB、原理图及代码ad文件。 ,逆变器; 储能逆变器; STM32F103; 3.6kw; 485通讯; 全方位保护; 智能控制; 方案区别; PCB文件; 原理图文件; ad文件。,基于STM32F103的3.6kw储能逆变器:全方位保护与智能控制