三、设计要求1、使用模块化设计思想来设计该编译器;
2、词法分析模块用于读入输入串,并将其转换成供语法分析模块使用的记号流。
其中包括滤掉空格和注释、识别常数、识别标识符和关键字等功能;
3、要求在语法分析模块中利用语法制导翻译技术完成具体的中缀表达式到后缀表达式的翻译,其中包括按前述翻译器的规格说明构建对应表达式、项、因子的非终结符expr、term和factor的函数以及检查记号是否匹配的函数;
并在不匹配时调用错误处理模块;
4、要求符号表管理模块主要完成符号表对应数据结构的具体实现功能;
5、错误处理模块负责报告错误信息及位置,并终止分析过程;
6、输出模块完成翻译后所得到的后缀表达式的输出。
四、运行结果1、从键盘输入任意中缀表达式,如:4-5*6DIV4+8MOD2输出相应的后缀表达式:456*4DIV-82MOD+1、 若键盘输入串为非中缀表达式时,如:4!+*5-6DIV4+8MOD2输出相应语法错误报告信息,并停止语法分析,如:line1:compilererror!
1
毕业设计(带论文)—试卷生成系统,做的不错,获得了优秀毕业论文。
一、课题的意义试卷自动生成系统,此课题目的是在我们以往学习数据库的基础上,灵活运用数据库开发软件Delphi和结构化查询语言SQL2000,开发出能供教学使用的一套出试卷系统,以方便教学。
应用所学的有关数据库的知识,更深入地学习Delphi和SQL2000,将所学的书面知道和实际应用结合起来,以达到学以致用的目的。
在各学校开始逐步引入计算机的今天,试卷作为考察教学成果的重要手段之一,通用试卷自动生成系统升化了传统的手工出卷,解决了很多问题,例如:① 避免了不必要的重复劳动,节约了人力资源及时间;
② 使用科学的衡量、评价及统一试卷难易度、试卷质量的有效手段;③ 大幅度降低了试卷出现错漏缺的机率,减少不必要的麻烦。
二、发展状况在以往的教学中,老师出试卷大多由手工出卷,这样生成的试卷往往会有知识点分布太集中、难易程度不当、分值分布不均等一些缺点;
这样,既增加了老师的负担,也没有达到很好考查学生学习的真实水平,造成教学上的失误。
基于以上的原因,有很多从事软件开发的人员,在试卷自动生成方面做了很大的研究。
目前这一领域也以良好的发展姿态而不断进步,早期已经有了一些类似的系统,但经过软件开发人不断的完善,大致形成了具备如下功能的系统:删除试题、批量录入试题、试题交流、合并题库、自定义试题参数等一些功能,其中试题交流功能非常实用,主要用于同事间交流试题。
系统‘体积’非常小,压缩后只有几百K。
平时只要将一些试题或从网络下载的试题,按‘学科’、‘章节’、‘知识点’、‘题型’、‘难易程度’、‘备注’六个参数进行归类,录入题库,需要用时,只要输入一些查询条件即可查出所要找的试题。
生成试卷非常方便,只需几分钟就可以生成一份试卷,生成的试卷还配有答案,更重要的是软件能与WROD的完美结合,试题、答案的编辑、试卷的排版打印全部由WORD来完成,试卷和答案都可保存为*.DOC格式。
可见,试卷自动生成系统这方面的研究日益成熟,这不但减轻了教师的工作负担,也使用教学更加地科学化,有利用教育事业的发展。
三、研究内容///(还末改进)1、新建试卷,添加、删除题目、选项、试卷;
2、编辑试卷属性:设置试卷的总分、名称、保存路径;
3、系统能支持不同类型的题目,比如:判断、单选、多选等;
4、编辑题目时能插入图片;
5、可以按试卷类型对试卷进行分类;
6、可以对用户进行管理,修改用户口令密码等;
7、生成的试卷可以进行脱机测试,测试过程中如出现漏题,选项漏选,在提交前系统你能对用户进行提示;
8、编辑题目时如出现逻辑上的错误,比如判断题没有设置正确答案,单选题没有设置正确选项,多选题没有设置全正确选项等,在保存试题时系统能自动进行提示;
9、测试完毕,系统自动对试卷进行批改,试卷得分以及做错的题目系统能以醒目颜色进行标示。
四、研究方法///(还末改进)系统从设计理念上坚持采用树状管理结构,在系统结构中用“科目”、“课程”、“章节”、“知识点”来组织整个系统;
每道题目都由“科目”、“课程”、“章节”、“题型”、“知识点”、“难度”这六个参数组成,再而演变出试卷和成绩。
故系统对小学、初中、中专、高中、大专、大学、单位自办学校和教师个人都适用。
本系统利用计算机强大的数据处理功能,由计算机逐步代替传统的人工出卷,并且规范出卷程序。
用模块化设计方法设计试卷自动生成系统,将要实现的功能在需求分析中详细描述出来;
然后在概要设计阶段对这些功能归纳总结,使它们模块化,也就是进行总体控制;
由大模块再细分为一些小模化,逐步细化,从而使功能不断地完善。
用模块化设计方法设计试卷自动生系统,可以使那些繁琐、复杂的功能变成一个简单易实现的小模块,从而使设计工作事倍功半。
五、研究手段1、 自我准备:本次设计所需要的是Delphi和SQL2000。
我已学习过这两个软件的使用方法;
尽管如此,但不能满足毕业设计的需要,所以必须深入学习并熟练掌握其功能和使用方法。
2、 查找资料:为了搞好毕业设计,我在图书馆和网上查阅了大量有关试卷自动生成系统方面的资料,对其分析和讲解得都很详细;
我还购买一些相关书籍,通过借鉴他人的一些Delphi和SQL2000的使用方法和技巧,为毕业设计做准备。
3、 设计方案:试卷自动生成系统要具有手工生成和自动生成的功能;
对用户的管理也应当具有增加、删除用户等功能;
对生成的试卷如有不满意的,可对其进行修改;
还可对题库进行增、删、改等功能,使题库不断的完善。
六、研究步骤该方案的题库系统的开发分为以下几个阶段:1. 进行需求分析,通过需求分析,确定整个系统大概的规模。
2. 进行系统分析,通过系统分析,确定该系统该具有那些功能,有那些模块,各个模块之间是怎样联系的,
2025/11/19 2:30:48 3.61MB 毕业设计 毕业论文 delphi
1
使用quartus13.1开发工具,基于DE2_115开发板的SRAM测试代码。
封装性良好,模块化设计。
虽然功能简单,但是代码风格很好!
2025/11/18 10:19:03 3.12MB DE2_115 SRAM
1
笔者曾混迹过各种攻防演练活动,参与过防守方、攻击方,也算是大概了解了每一个队伍的任务~参加防守时印象尤为深刻,也跟一起防守的“战友”做过有趣的事情,例如:反打攻击队;
题外话说的有点多了,来说说为什么开发这样一个平台:作为一个防守方光看日志固然是枯燥无味的,偶尔来几次反向打击啥的,增添防守的乐趣~所以我想到了做这样一个系统,就是想在“空暇”时间能获取点“黑客攻击者”的“画像”。
本平台采用被动式的方式分析黑客攻击者画像,可扩展赋能蜜罐以及安全设备,将平台接口部署在蜜罐Web界面上即可,当攻击者访问所部署的Web界面即触发平台分析功能,对访问者进行分析,数据回传平台分析其网络身份、IP、IP定位:物理地址等信息。
AHRID信息展示平台支持接口授权的方式授权站点,已授权站点才可使用平台接口进行被动式的攻击者画像分析以及数据回传。
AHRID接口授权平台的分析功能采用模块化设计,可针对不同的分析功能新建不同的分析模块进而让平台的分析功能更加丰富完善(开源版本目前只支持JSONP探针模块)AHRID提交模块AHRID开源版使用授权使用登录进AHRID平台之后需要先添加接口授权:AHRID接口授权当添加完毕后,复制接口代码至蜜罐页面或需监测的页面中即可(建议复制到最后),这样就已经部署成功了,只需要等待攻击者触发数据回传功能,等待画像信息即可。
模块提交当已经发现一个JSONP劫持漏洞时,即可提交到AHRID平台上:JSONP劫持漏洞漏洞地址:http://my.website/dorabox/csrf/jsonp.php?callback=test要获取的信息:username模块提交说明:1.名字模块名字(建议使用英文)2.SRC存在JSONP劫持漏洞的URL地址3.回调参数值回调参数的值(参数=值)4.数据字段JSON字段(例如:{"username":"123"},要获取的是username即填写username;
例如:{"data":{"uid":"123"}},要获取的是uid即填写data.uid)5.信息展示地址一般填写无或者随意填写6.模块描述根据模块功能说明AHRID模块提交示例AHRID开源版设计概述当攻击者访问到部署了AHRID接口的页面,即触发JSONP探针获取攻击者已登录状态下的登录信息,回传登录信息+IP+UA,后端会对IP进行物理地址转换,最终将数据记录到数据库。
数据库结构表:Admin-列:id,username,password表:Hackinfo-列:hid,host,ip,user_agent,jsondata,creaye_time,times表:Plugins-列:pid,name,src,callback,columns,url,commit表:Apis-列:aid,hostIP地址转换依赖:GeoLite2-City.mmdbIP定位依赖:接口apis.map.qq.com、way.jd.com+取中心点依赖环境:Python2+Flask+Mysql所需网络环境:互联网(可出网)AHRID开源版搭建1.config.py配置文件修改需要配置的信息如下:USERNAME:Mysql用户名PASSWORD:Mysql用户密码HOST:Mysql主机地址PORT:Mysql端口SECRET_KEY:SESSION秘钥(建议16位以上随机英文字母+数字+特殊符号)TX_KEYS:腾讯接口KEYS(2个以上,参考:https://lbs.qq.com/webservice_v1/guide-ip.html)JCLOUD_KEY:京东云接口KEY(Github可白嫖)2.Mysql创建“ahrid”数据库3.执行如下代码pythonmanage.pydbinitpythonmanage.pydbmigrate4.启动服务:sudopythonapp.py默认端口为:80,可自行修改app.py文件如下代码部分server=pywsgi.WSGIServer(('0.0.0.0',80),app)
2025/10/29 11:37:37 57.82MB 威胁情报 黑产对抗 网络安全 信息安全
1
该文档内包含设计思路,以模块化设计整个电路便于调试,文档内包含multisim的仿真图
1
1、通通股票K线及KDJ,MACD,RSI等指标显示完整源代码。
2、python历史行情读取,切换股票数据及指标公式。
3、跨python版本代码设计思路和实现。
4、模块化设计,自己可以任意扩充。
本演示使用聚宽用户数据。
免费行情源获取参考下面我的帖子。
https://blog.csdn.net/hepu8/article/details/81866694
2025/8/13 1:29:40 103KB python2/3 股票K线图 KDJ、 MACD
1
:模块化设计并制作一种通过传感器探测栅格化地图的智能扫地机器人,采用混合路径规划算法确立机器人的运动轨迹。
在机械上设计了分离式吸尘结构,通过不同结构的吸尘口来清理不同体积大小的垃圾,提高清扫效果。
在传感器上采用了精度较高的激光测距和精度较低超声波测距传感相互配合,完成对清扫环境的感知和运动路径的规划,提高清洁效率。
硬件采用STM32微处理器,根据既定算法驱动机器人按照规划路径移动。
软件上以传感器、电机的底层驱动为基础,运算和数据处理为核心,根据混合路径规划方法完成智能扫地机器人智能清扫和拖地的功能,达到实时避障、覆盖率高、重复率低、耗时少又节能的指标。
扫地模块和拖地模块独立设计,方便更换,解决了市面上前扫后拖扫地机器人清洁效果不佳的问题。
2025/7/24 15:40:45 369KB sweeping rob
1

Delphi是一款强大的面向对象的编程环境,以其高效的编译器和直观的集成开发环境(IDE)深受开发者喜爱。
在Delphi中,除了可以创建独立的EXE应用程序之外,还可以利用BPL(Binary Package Library)和DLL(Dynamic Link Library)来构建更加灵活和可扩展的软件框架。
本资源"delphi exe+bpl+Dll框架(源代码和示例)"提供了一种将程序模块化的方法,使得更新和维护变得更加简单。
BPL是Delphi中的库文件格式,类似于Windows平台上的DLL,但有其独特的特性和优势。
BPL允许开发者将代码模块化,将其打包成独立的组件,这些组件可以在运行时动态加载,也可以在多个项目之间复用。
这样做的好处在于,当你的程序需要更新或修复某个功能时,只需要替换对应的BPL文件,而不需要重新发布整个EXE,降低了用户的升级成本。
DLL则是一种更通用的Windows动态链接库,它可以被多个进程同时使用,以共享代码和数据。
与BPL类似,DLL同样可以实现代码的分离和动态加载,有助于优化内存使用和提高程序性能。
在Delphi中,DLL和BPL可以混合使用,为软件设计提供更大的灵活性。
本资源包含的"Tangram2.6(D7)"可能是一个基于Delphi 7的项目,Tangram可能是一个框架的名字,它展示了如何将BPL和DLL集成到一个EXE程序中。
通过学习和分析这些源代码,你可以了解如何组织项目结构、如何定义接口、以及如何在EXE、BPL和DLL之间进行通信。
源代码示例通常会包含以下关键部分:1. **项目配置**:设置BPL和DLL的项目属性,如输出目录、依赖项等。
2. **单元接口**:在BPL和DLL的单元文件中声明公共接口,以便于其他组件调用。
3. **实现细节**:在各自的源代码文件中实现接口,包括函数和方法。
4. **动态加载**:在主程序(EXE)中使用LoadLibrary和GetProcAddress等API动态加载BPL或DLL,并调用其中的函数。
5. **通信机制**:可能包括COM接口、Pascal记录、自定义接口类等方式,实现不同组件之间的数据交换。
学习这个框架可以帮助你掌握Delphi程序的模块化设计,理解动态链接库的使用,以及如何优化程序的更新和维护流程。
如果你对Delphi编程感兴趣,或者正在寻找一种提高软件可维护性的方法,那么这个资源将是一份宝贵的参考资料。
通过深入研究源代码,你可以了解到更多关于Delphi BPL和DLL框架的实践技巧和最佳实践。
2025/6/20 8:28:11 3.74MB
1
简介:
### 开发51单片机操作系统时应注意的问题#### 一、引言随着嵌入式系统的广泛应用,针对特定硬件平台的操作系统开发变得尤为重要。
51单片机作为一款经典的微控制器,在工业控制、家用电器等领域有着广泛的应用。
然而,由于其硬件资源的限制,在51单片机上开发操作系统面临诸多挑战。
本文将详细介绍开发51单片机操作系统时需要注意的关键问题。
#### 二、关键问题详解##### 1. 操作系统软件的代码长度控制51系列单片机由于硬件资源的限制(如ROM空间较小),因此对于操作系统代码的大小有严格的要求。
通常情况下,一个基于51单片机的应用程序大约需要7至8KB的ROM空间。
相比之下,如果操作系统本身就需要几十KB的空间,那么留给用户应用程序的空间将非常有限,这显然不利于实际应用。
例如,流行的嵌入式操作系统往往体积较大,无法适用于51单片机。
为了克服这一限制,开发者需要采取以下措施:- **精简设计**:简化操作系统的功能模块,确保核心功能的同时尽可能减小代码量。
- **模块化**:采用模块化设计,允许用户根据具体需求选择加载必要的模块,从而降低整体代码量。
- **代码优化**:通过高效的编码技巧来减少代码长度,比如使用更简洁的数据结构和算法。
##### 2. 控制操作系统对片内RAM的占用51系列单片机仅有128或256字节的片内RAM空间,这对于运行操作系统而言是非常有限的。
如果操作系统占用过多的RAM空间,将严重影响用户应用程序的正常运行。
因此,开发者需要特别注意以下几点:- **最小化RAM使用**:减少操作系统的RAM占用,确保有足够的空间供用户应用程序使用。
- **合理分配资源**:优化RAM的使用方式,避免不必要的资源浪费。
- **外部RAM利用**:在不影响性能的前提下,考虑将部分数据存储在外置RAM中,以减轻内部RAM的压力。
##### 3. 解决函数的重入问题对于实时占先式操作系统而言,函数的重入性至关重要。
重入函数能够在不破坏数据的情况下被多个任务调用。
要实现函数的重入性,必须满足以下条件之一:- **不使用共享资源**:确保函数内部没有依赖任何共享资源。
- **使用中断禁用**:在使用共享资源时暂时禁用中断,以保证数据的一致性。
- **信号量机制**:通过申请和释放信号量来管理对共享资源的访问。
在标准C中实现这些条件相对简单,但在Keil C51编译器环境下,由于局部变量的静态分配特性,实现起来较为复杂。
开发者可以通过以下策略应对这一挑战:- **手动管理资源**:显式地控制共享资源的访问,避免自动管理带来的不确定性。
- **代码审查**:仔细检查函数中的资源使用情况,确保符合重入性的要求。
- **测试验证**:通过严格的测试来验证函数的重入性,确保其在多任务环境下的正确运行。
##### 4. 堆栈的分配与管理在占先式操作系统中,任务之间的切换频繁发生,因此需要合理分配和管理堆栈空间。
每个任务都需要有自己的堆栈,用于保存任务状态信息。
由于51单片机的RAM空间有限,堆栈的分配策略成为了一项重要的考量因素。
- **按需分配**:根据任务的实际需求动态分配堆栈空间,避免过度预分配造成的资源浪费。
- **优化堆栈使用**:通过调整任务的设计和编码方式来减少堆栈的需求。
- **复用机制**:探索堆栈空间的复用机制,如在任务间共享堆栈空间等方法。
#### 三、结论开发51单片机操作系统是一项充满挑战的任务,需要开发者在有限的硬件资源下,精心设计并优化操作系统的各个方面。
通过本文所述的关键问题及解决方案的探讨,希望能够帮助开发者更好地理解和应对这些挑战,成功开发出高效、可靠的51单片机操作系统。
2025/6/15 19:58:32 63KB
1
为了能够让无人机地面操纵人员熟悉无人机的操作,介绍了一种以VC++可视化语言为开发工具设计的一套模拟训练软件系统;软件基于模块化设计思想,采用串口通信和以太网两种通信方式;串口通信上,实现了故障指令代码的实时发送等功能;以太网通信上,很好地实现了与飞控地面站的通信;另外,本软件还可以实现训练评价和故障模拟等功能;最终将模拟训练系统与地面站以及飞控系统联调,系统运行良好,通信实时性很高,很好地完成了各部分功能,并具有很好的扩展性。
2025/6/13 3:36:51 907KB 无人机 故障模拟 模拟训练系统
1
共 38 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡