

C++Qt论坛系统开发
这是北邮计院C++程序设计的经典大作业了,需求是用C++实现一个带有网络通信功能的建议论坛系统,带有服务端和客户端,选用Qt作为图形框架,支持跨平台,网络通信的部分是tcp socket加自定的数据格式协议。特此把当时的课程报告整理一版出来造福广大学弟学妹们,源码附在最后。 使用说明 以下内容如未作特殊说明,均为第三版(网络版)的操作说明,对于第三版尚不支持的功能,会在说明中标注。 初始配置C++学习论坛(高级版)的用户数据和帖子数据分别储存在userdata和postdata文件中,且已在压缩包中给出,需放在程序根目录使用。程序第一次运行且没有发现数据文件时会视为建立全新的论坛系统,程序会默认给定管理员账号和密码,用户可以通过管理员账户登陆后添加用户、添加版块完成论坛的初始化。也可以使用给定的数据覆盖程..
Read more

Python实现的DNS中继服务器
这个项目是北邮计算机网络课的课程设计,要求是实现一个DNS中继服务器,可以根据本地DNS表解析地址、拦截黑名单域名、中继查询本地没有记录的域名。设计的重点都放在DNS协议和UDP协议上了,所以本地的DNS记录是文件读入而没有使用数据库,中继查询到的结果也仅仅做了转发而没有缓存到本地,这些都是可以继续优化的点。附上详细的设计报告和源码供学弟学妹们参考。 系统功能设计本次课程设计要求实现一个DNS中继服务器,读入本地的DNS资源记录文件,当客户端查询域名时,服务器进行检索,实现以下三种情况: 普通解析:当解析地址为普通ip地址时,直接向客户端返回该地址 拦截功能:当解析地址为0.0.0.0,则向客户端返回“域名不存在”的报错消息 中继功能:当本地未检索到域名时,则向设定的域名服务器发出查询,正确接收到结果后,..
Read more

编译原理-LL(1)语法分析器的设计
这是当时编译原理课的实验作业,其实现在有很多概念记忆已经比较模糊了,好在留下来一篇实验报告,供大家参考,也留给我自己回忆吧。另有一篇SLR语法分析器的设计 实验内容编写语法分析程序,实现对算术表达式的语法分析。要求所分析算术表达式由如下文法产生。 $ E -> E + T | E - T | T $ $ T -> T * F | T / F | F $ $ F -> (E) | num $ LL(1)分析程序需要用到一个输入缓冲区、一个分析栈、一张分析表,其核心是预测分析程序。LL(1)要求文法中不含左递归,因此需要先消除左递归: $ E -> TA $ $ A -> +TA | -TA | ε $ $ T -> FB $ ..
Read more

编译原理-SLR语法分析器的设计
这是当时编译原理课的实验作业,其实现在有很多概念记忆已经比较模糊了,好在留下来一篇实验报告,供大家参考,也留给我自己回忆吧。另有一篇LL(1)语法分析器的设计 实验内容编写语法分析程序,实现对算术表达式的语法分析。要求所分析算术表达式由如下文法产生。 $ E -> E + T | E - T | T $ $ T -> T * F | T / F | F $ $ F -> (E) | num $ LR分析为自底向上的分析,基本思想是在规范规约的过程中,一方面要记住历史信息,即已经移进和规约的整个符号串;另一方面要预测未来,即根据所用的产生式推测未来可能遇到的输入符号;根据历史信息和预测信息来确定下一步分析动作。 LR分析程序的设计可分为三步: 构造识别该文法所有活前缀..
Read more