`

初试extjs

阅读更多

最近老师的项目需要对一些网页做页面改动,想想如果单纯只是改改页面,对自己的技术水平没什么促进作用。所以花了几天时间拿extjs练了下手,也算稍稍了解了extjs。之前在yui和extjs之间犹豫了一下,两个都没接触过,不过听说extjs的中文资料会比较多,所以嘛...

实现了一个学习活动管理页面,主要包括查询、分页浏览和创建功能。功能比较简单,没什么复杂逻辑,还没做完,慢慢完善吧,先把代码记录下来,不然以后又没兴趣写了。对extjs的一些功能和api不大了解,中间绕了很多弯路,代码写得有点杂乱。

 

 

/**
 * 作者:garlic 日期:2010-07-29 版本:1.0 博客地址:http://wisesooner.iteye.com/
 * 功能描述:学习活动管理页面,主要包括查询、分页浏览、创建 备注:extjs版本为3.2.1
 */
Ext.onReady(function() {

	Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
	Ext.QuickTips.init();

	// 活动类别
	var aTypeCode = [['all', '全部类别'], ['forum', '讨论交流'], ['work', '上传作品'],
			['vote', '投票调查'], ['question', '提问答疑']];
	var typeNames=new Ext.data.Record(
		{all:'全部类别',
		forum:'讨论交流',
		work:'上传作品',
		vote:'投票调查',
		question:'提问答疑'}
	);

	var store = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
							url : "/lc/extjs/getData.jsp"
						}),
				autoLoad : {
					params : {
						start : 0,
						limit : 9
					}
				},
				baseParams : {
					type : 'all'
				},// 公共参数,pagingBar和grid可以共用
				reader : new Ext.data.JsonReader({// 读取json数据
					root : 'activities',
					totalProperty : 'count'
				}, Ext.data.Record.create(['aId', 'aTitle', 'aType', 'aDes',
						'aTime', 'aViewUrl', 'aEditUrl', 'aDelUrl', 'uId',
						'uName', 'auth']))
			});
	/* 以下是中间面板,包括顶部的查询和创建,底部的分页和中间的分页面板 */
	// 底部工具条(分页工具条),注:把分页工具条加在分页面板中,看起来有点不好看,所以就把它放在中间面板中了
	var pagingBar = new Ext.PagingToolbar({
				pageSize : 9,
				displayInfo : true,
				displayMsg : '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
				emptyMsg : '没有记录',
				store : store
			});
	// 顶部工具条——创建活动按钮
	var createBtn = new Ext.Button({
				iconCls : 'create-btn',
				text : '+ 创建活动',
				handler:function(){aCreatePage.show();}
			});
	// 顶部工具条——查询——活动类别选择框
	var combo = new Ext.form.ComboBox({
				displayField :'text' ,
				valueField:'type',
				typeAhead : false,
				mode : 'local',
				triggerAction : 'all',
				emptyText : '请选择类别',
				selectOnFocus : false,
				editable : false,
				store : new Ext.data.SimpleStore({
							fields : ['type','text'],
							data : aTypeCode
						}),
				width : 100
			});
	// 顶部工具条——查询——搜索按钮
	var searchBtn = new Ext.Button({
				iconCls : 'search-btn',
				handler:checkForm
			});
	searchBtn.setTooltip('查询');
	// 顶部工具条——查询——文本输入框
	var searchTxt = new Ext.form.TextField({
				id : 'search-name',
				width : 250,
				selectOnFocus : true,
				regex : /^.*\S+.*$/, // 不能为空
				regexText : '活动名称不能为空'
			});
	// 顶部工具条——查询(包含活动类别选择框、搜索按钮、文本输入框)
	var searchBar = new Ext.Toolbar({
				id : 'search-bar',
				autoHeight : true
			});
	searchBar.add('活动名称: ', searchTxt, '   ', combo, '  ', searchBtn, '->',
			createBtn, ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' // 试了几种方式,都没办法很好地为“创建活动”按钮设置右边距,只好用这个土方法,看起来很不爽,如果大家有什么好建议,可以推荐
	);
	// 中间分页面板——构造不带分页工具栏的grid
	var grid = new Ext.grid.GridPanel({
				store : store,
				trackMouseOver : true,
				disableSelection : true,
				loadMask : true,
				autoHeight : true,
				columnLines : true,
				border : false,
				// grid的列
				columns : [{
							header : "类别",
							dataIndex : 'aType',
							align : 'center',
							sortable : true,
							width : 75
						}, {
							header : "标题",
							dataIndex : 'aTitle',
							sortable : true,
							width : 150,
							renderer : renderTitle
						}, {
							header : "简介",
							dataIndex : 'aDes',
							width : 500,
							renderer : renderDes
						}, {
							header : "创建时间",
							dataIndex : 'aTime',
							sortable : true,
							align : 'center',
							width : 80
						}, {
							header : "创建者",
							dataIndex : 'uName',
							align : 'center',
							sortable : true,
							renderer : renderUserLink
						}, {
							header : "操作",
							dataIndex : 'aId',
							renderer : renderAction,
							align : 'center',
							width : 115
						}],
				viewConfig : {
					forceFit : true
				}
			});
	// 生成中间面板
	var centerForm = new Ext.form.FormPanel({
				id : 'centerForm',
				region : 'center', // a center region is ALWAYS required for
									// border layout
				deferredRender : false,
				activeTab : 0, // first tab initially active
				margins : '0 5 0 0',
				title : '活动列表 - 全部类别',
				autoScroll : true,
				bbar : pagingBar,
				tbar : searchBar,
				items : grid
			});

	// body视图
	var viewport = new Ext.Viewport({
				layout : 'border',
				items : [new Ext.BoxComponent({
									region : 'north',
									id : 'page-title',
									margins : '0 5 3 5',
									autoEl : {
										tag : 'div',
										html : '<h1>学习活动管理页面</h1>'
									}
								}), {
									region : 'west',
									id : 'west-panel',
									title : '按类别浏览',
									collapsible : true,
									margins : '0 0 0 5',
									autoScroll : true,
									width : 160,
									margins : '0 5 3 5',
									contentEl  :'typeNav'
								}, centerForm]
			});
	//创建活动的页面
	var aCreatePage= new Ext.Window({
		contentEl:'a_c_n',
		modal:true,
		draggable :false,
		width:700,
		height:400,
		border :false,
		resizable :false,
		plain:true,
		closeAction :'hide'
	});
    var aCreateForm = new Ext.form.FormPanel({
        labelWidth: 55,
        frame:true,
        labelSeparator:':',
        defaults: {
            xtype: 'textfield'
        },

        items: [{
            fieldLabel: '标题',
            width:450,
            emptyText : '请输入活动名称',
            regex : /^.*\S+.*$/, // 不能为空
			regexText : '活动名称不能为空'
        }, {
            xtype: 'textarea',
            fieldLabel: '简介',
            width:450,
            height:200,
            emptyText : '请输入活动简介',
            regex : /^.*\S+.*$/, // 不能为空
			regexText : '活动简介不能为空'            
        }]
    });

    var aCreateWindow = new Ext.Window({
        title: '创建活动',
        draggable :true,
        bodyStyle: 'padding:5px;',
        buttonAlign: 'center',
        items: aCreateForm,
        border :false,
		resizable :false,
		closeAction :'hide',
        buttons: [{
            text: '确定'
        },{
            text: '取消',
            handler:function(){aCreateWindow.hide();}
        }]
    });
    
	void function() {
		Ext.addBehaviors({
			'#typeNav a@click':function(e,t){getData(Ext.get(this).getAttribute('value'));},
			'#a_c_n dd@click':function(e,t){showCreateForm(Ext.get(this).getAttribute('value'));},
			'#a_c_n dd@mouseenter':function(e,t){Ext.get(this).addClass('over');},
			'#a_c_n dd@mouseleave':function(e,t){Ext.get(this).removeClass('over');}
		});
	}();
	//显示创建活动窗口
	function showCreateForm(){
		aCreatePage.hide();
		aCreateWindow.show();
	}
	//显示选择活动类型的页面
	function leadToCreatePage(){
		aCreatePage.show();
	}
	function renderTitle(value, p, record) {
		return String
				.format(
						'<a class="alink" title="查看" href="{1}" target="_blank">{0}</a>',
						value, record.data.aViewUrl);
	}
	function renderAction(value, p, record) {
		var viewStr, editStr, delStr;
		viewStr = String
				.format(
						'<a class="alink" title="查看" href="{1}" target="_blank">查看</a>',
						value, record.data.aViewUrl);
		editStr = String
				.format(
						'<a class="alink" title="编辑" href="{1}" target="_blank">编辑</a>',
						value, record.data.aEditUrl);
		delStr = String
				.format(
						'<a class="alink" title="删除" href="{1}" target="_blank">删除</a>',
						value, record.data.aDelUrl);
		return viewStr + editStr + delStr;
	}
	function renderDes(value, cell) {
		cell.attr = 'style="white-space:normal"';
		return value;
	}
	function renderUserLink(value, p, record) {
		return String
				.format(
						'<a class="alink" title="点击查看个人空间" href="/do/psTemplateUser?action=index&psUserId={1}" target="_blank">{0}</a>',
						value, record.data.uId);
	}
	function checkForm(){
		var keyword=searchTxt.getValue().trim();
		if(keyword==''){
			Ext.Msg.show({
			   title:'提示',
			   msg: '活动名称不能为空!',
			   buttons: {ok:'确定'},
			   icon: Ext.MessageBox.INFO,
			   modal:false,
			   fn:function(){
				searchTxt.setValue('');
				searchTxt.focus();
			   }
			});
			return false;
		}
		var type=combo.getValue()==''?'all':combo.getValue();
		getData(type,keyword);	
	}
	function getData(type,keyword) {
		if(type==undefined||typeof(type)!='string' ){
			type='all';
		}
		if(keyword==undefined||typeof(keyword)!='string' ){
			keyword='';
		}
		store.baseParams = {
			type : type,
			keyword:keyword
		};
		store.reload({
					params : {
						start : 0,
						limit : 9
					}
				});
		var title=typeNames.get(type);
		Ext.getCmp('centerForm').setTitle('活动列表 - '+title);
	}
	
	
});

 

 

界面图:

问题:

1、构造store的时候,跨越调用不行,还不知道为什么

2、左侧那几个button很是烦人,能不能根据数组动态生成

3、所有页面元素都是由引擎生成,看了下生成的html代码,感觉很冗余而且很多,不知道会不会影响页面加载速度,别人调试也不大好调,快速方便和灵活性有点冲突啊

4、ie和ff显示样式有点差别,ff的字体会好看点,ie下的字体有点刺眼,不知道该怎么改

 

html,body {

font: normal 12px verdana;

margin: 0;

padding: 0;

border: 0 none;

overflow: hidden;

height: 100%;

letter-spacing:1px;

}

5、分页面板最右端还多出来一列,怎么回事...

6、如果分页面板高度太高的,出现竖直滚动条的同时会出现水平滚动条.....

7、构造数据模型的时候,不知道该用哪种,用数组也不方便,用record也不方便,最后两个一起上,哎,烦躁

8、formpanel内部控件不能自动调整大小,如果加了属性layout: 'fit',个别控件又会撑得太大,把其他控件都挤没了

9、怎么把Ext.window的背景色弄成白色啊....搞了老半天都不行

 

注意事项:

1、store有个公共属性baseParams,可以传一些动态参数,方便不同控件(如分页面板、分页工具条)调用

2、tooltip如果要生效,必须在开头写上“Ext.QuickTips.init();”

3、分页面板中每一列默认都是不换行的,可以用css控制一下  white-space:normal

4、Ext.window的关闭按钮默认是remove,如果不想remove的话,得加上属性  closeAction:'hide'

5、在标签dd中加入mouseover和mouseout事件,ie下会出现闪烁,改成mouseenter和mouseleave,ie和ff都ok

			'#a_c_n dd@mouseenter':function(e,t){Ext.get(this).addClass('over');},
			'#a_c_n dd@mouseleave':function(e,t){Ext.get(this).removeClass('over');}

 

 

 

  • 大小: 242.5 KB
分享到:
评论

相关推荐

    初试extJs,控件

    ExtJs 是一种基于 JavaScript 的富客户端应用开发框架,主要用于构建桌面Web应用程序。它提供了一整套组件、布局管理和数据绑定机制,使得开发者可以方便地创建功能丰富的交互式用户界面。 在给定的代码中,我们...

    初试Python 操作Mysql

    博文链接:https://23c.iteye.com/blog/191127

    初试jQuery EasyUI 使用介绍

    标题《初试jQuery EasyUI 使用介绍》和描述部分提到的内容,主要涉及以下知识点: 1. jQuery EasyUI介绍:jQuery EasyUI是一个基于jQuery的UI库,它提供了一系列的插件,使得开发者能够快速构建具有丰富功能和美观...

    毕设单片机实战项目基于esp8266的高考倒计时.zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    毕设工坊:专注于计算机毕业设计项目的交流与资源共享平台,涵盖各类技术文档、代码示例及实战经验分享,助力学子顺利完成学业挑战

    毕设工坊:专注于计算机毕业设计项目的交流与资源共享平台,涵盖各类技术文档、代码示例及实战经验分享,助力学子顺利完成学业挑战。

    【window 可视化nvm管理node版本 nvm-desktop】

    【window 可视化nvm管理node版本 nvm-desktop】

    《基于YOLOv8的玉器识别系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    (源码)基于microbit编程语言的mymicrobit扩展插件项目.zip

    # 基于microbit编程语言的mymicrobit扩展插件项目 ## 项目简介 这是一个基于microbit编程语言的mymicrobit扩展插件项目。该项目旨在提供额外的功能和特性,以扩展microbit编程环境。通过此插件,用户可以轻松地在MakeCode环境中进行编程,实现对micro:bit设备的更多控制和功能实现。 ## 项目的主要特性和功能 1. 扩展性提供了丰富的积木块和代码库,允许用户轻松实现复杂的编程逻辑和功能扩展。 2. 图形化编程支持通过积木块形式的图形化编程,降低编程门槛,方便初学者快速上手。 3. 实时预览提供了积木块的实时预览功能,方便用户直观地了解代码块的逻辑和功能。 4. 与MakeCode无缝集成可以直接在MakeCode环境中导入和使用,无需额外的配置和安装。 ## 安装使用步骤

    毕设单片机实战项目基于ESP8266的局域网图片刷新显示系统.zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    《基于YOLOv8的印章分析系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    p111基于django的企业员工管理系统.zip

    项目资源包含:可运行源码+sql文件 适用人群:学习不同技术领域的小白或进阶学习者;可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 项目具有较高的学习借鉴价值,也可拿来修改、二次开发。 有任何使用上的问题,欢迎随时与博主沟通,博主看到后会第一时间及时解答。 开发语言:Python 框架:django Python版本:python3.8 数据库:mysql 5.7 数据库工具:Navicat 开发软件:PyCharm 浏览器:谷歌浏览器

    第三章-局域网-思维导图

    第三章-局域网-思维导图

    机械工程PT300机械故障仿真测试台:高校教学与科研用精密振动分析及故障诊断实验系统了您提供的规范

    内容概要:PT300机械故障综合模拟实验台由瓦仑尼安教学设备有限公司生产,旨在帮助用户深入了解振动特征知识及复杂转子振动频谱分析,实现精密振动分析和精准故障诊断。该实验台能模拟轴承故障、不平衡、不对中、设备松动、转子摩擦等多种机械故障现象,可进行不同转速下的轴承故障频率识别、转子静动平衡模拟试验、设备启停机测试等实验。设备采用高效节能ABB三相交流电动机,配备高精度转速控制和测量模块,确保运行稳定。此外,实验台还设有透明防震安全罩和互锁开关,保障实验安全。; 适合人群:高校师生、科研人员等需要学习或研究机械故障诊断相关理论知识和实践技能的人群。; 使用场景及目标:①用于高校等教育机构的教学,辅助学生理解机械故障诊断的理论知识和实践技能;②满足科研人员进行机械故障诊断算法验证、故障特征分析等科研需求。; 其他说明:PT300机械故障综合模拟实验台的每个部件均经过高精度加工,确保在不同振动状态下稳定运行。用户可根据期望分析特定部件的故障特征。设备尺寸为735mm(长)×310mm(宽)×350mm(高),保修一年,且提供免费操作指导服务。

    Android毕设实战项目基于Android+Django+sqlit3开发.zip

    【项目资源】: 适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    【光子晶体模拟】基于COMSOL弱形式PDE的三维光子晶体能带结构计算与优化:电磁场切向连续性处理及带隙分析系统设计使用COMSOL

    内容概要:本文详细介绍了使用COMSOL Multiphysics的弱形式接口对三维光子晶体进行数值模拟的方法和技巧。文章通过具体的代码示例,解释了如何构建光子晶体的介电常数分布、设置弱形式PDE、处理电磁场切向连续性、应用Floquet周期边界条件以及特征值求解等关键步骤。特别强调了弱形式接口相比传统物理场接口的优势,如灵活性和对复杂边界的处理能力。文中还分享了一些实用的经验和注意事项,如布洛赫边界条件的实现、特征值求解器参数的优化配置以及网格划分的技巧。 适合人群:具备一定电磁学和数值模拟基础的研究人员或工程师,尤其是对光子晶体仿真感兴趣的读者。 使用场景及目标:①理解并掌握COMSOL弱形式接口在光子晶体仿真中的应用;②学习如何通过弱形式设置处理复杂的电磁场问题;③提高对光子晶体能带结构和带隙特性的认识;④掌握特征值求解和网格划分的最佳实践。 阅读建议:由于本文涉及较多的具体代码和物理概念,建议读者在阅读过程中结合COMSOL软件进行实际操作,同时查阅相关电磁理论书籍以加深理解。此外,对于文中提到的一些具体参数设置和技巧,可以通过尝试不同的配置来巩固所学知识。

    (源码)基于Arduino平台的INSPTComputacion2项目.zip

    # 基于Arduino平台的INSPTComputacion2项目 ## 项目简介 INSPTComputacion2是一个基于Arduino平台的开发项目。该项目旨在通过Arduino的硬件和软件能力,实现一系列计算和交互功能。通过此项目,用户可以体验到Arduino在嵌入式系统、物联网和微控制器等领域的强大功能。 ## 项目的主要特性和功能 该项目的主要特性和功能包括但不限于以下几点 1. 嵌入式系统开发利用Arduino的硬件资源,开发嵌入式系统应用。 2. 物联网应用实现Arduino与物联网技术的结合,进行数据采集、传输和控制。 3. 交互设计通过Arduino实现人机交互,如按钮控制、LED显示等。 4. 数据处理利用Arduino进行数据处理和分析,如温度、湿度等环境数据的采集和处理。 ## 安装使用步骤 以下是在已下载本项目源码文件后的安装使用步骤 1. 确保已安装Arduino IDE软件。

    毕业设计物联网实战项目基于云且连接 Internet 的新式应用程序。 可用于建立Web应用、 IoT物联网、移动后端等。.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    毕业设计物联网实战项目基于touchgfx,调度基于freertos.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    Python数据结构-学习笔记

    Python数据结构-学习笔记

    电影在线购票系统(springboot+ssm+vue+mysql)含万字系统详细说明文档

    该系统展示了一个电影在线购票系统的结构图,系统分为前台和后台两部分。前台包括首页、影院信息、电影信息、电影资讯和个人中心等模块,主要面向普通用户,提供电影浏览、选座购票、个人账户管理等功能。后台部分由管理员通过后台模块进行操作,包括系统首页、用户管理、场次管理、时间段管理、影院信息管理、电影分类管理、电影信息管理、订单管理和个人中心等模块,用于系统的维护和管理,如用户信息维护、电影和影院信息更新、订单处理等。整个系统旨在为用户提供便捷的在线购票体验,同时确保后台管理的高效和有序。

Global site tag (gtag.js) - Google Analytics