毕业设计项目建议

华东师范大学软件学院海量计算研究所


基本要求

A、所有选海量所项目作为毕业设计项目的同学必须事先征得海量所老师同意。

B、海量所不支持学生自主选择毕业设计项目,特别是在实习单位做的项目。选择海量所做毕业设计的同学必须选择海量所老师指定的题目(海量所老师可能有和下面的题目不同的题目,但风格类似)。

C、直升海量所的同学必须选择海量所项目作为毕业设计项目。


1.文本编辑器

编写一个在图形界面下的文本编辑器,重点面向源代码编写应用,要求实现Syntax Highlight。项目中考虑以下几点要求:

(1)良好的核心代码结构,输入、编辑、显示、配置等各部件相对独立并易于使用。

(2)考虑跨平台设计,最好能够在Windows和Linux下均能编译运行。

(3)考虑经过扩展可以成为IDE,包括集成编译、集成调试等功能。

2.C--

编写一个小巧的C/C++库,目标是让常见程序的编写、调试变得方便,并可编译、连接成非常小的程序,节约运行资源。该库一方面是对现有C/C++库的简化,把不常用的功能去除以减小连接后程序的体积,另一方面增加一些常用的类、模板,提供方便地管理各种资源的目的,让日常的程序编写工作变得方便、高效。该项目需要重新编写程序启动代码、大部分核心C/C++库函数,所以需要较高的汇编和C/C++技巧,以及编译、操作系统等方面的知识。

2.1 FastString

使用MMX、SSE-SSE4指令实现字符串函数,比较其实现在不同CPU上的性能以及与C实现的性能差异,从而实现一个快速字符串处理库。该项目是C--的一个子项目。

2.2 LibRawIO

用原始操作系统调用实现两个文件接口类,其中一个是无缓冲的,另一个是有缓冲的。这两个类用于替换C中有关文件IO的函数,无缓冲的替换open、creat、read、write、close等,有缓冲的替换fopen、f...等。在Windows平台,原始操作系统调用以ntdll接口实现。该项目是C--的一个子项目。

2.3 xprintf/xscanf

实现一系列函数,最终实现...printf和...scanf等函数。该项目是C--的一个子项目。

2.4 AlignedMM

实现内存管理功能,与传统C库函数内存管理相区别的是可以实现指定对齐要求的内存分配。由于矢量指令的普及,内存对齐对程序速度的影响已经到了非常高的程度,指出对齐的内存管理是非常有意义的。该项目是C--的一个子项目。

3.StrangeFS

编写一个Windows下,通过截获DLL调用的方式实现的用户层文件系统的通用开发工具。在用户层实现文件系统有其优势和劣势。优势是测试方便、开发难度低,可以使用大量的已有源代码,并且不会对系统的稳定性造成大的影响。劣势是系统核心看不到这一层提供的文件系统,某些系统调用无法工作。但对于一些应用来说,用户层文件系统已经足够。该项目要求较高的C/C++技巧,并对文件系统有一定了解。

4.VisualTeXsty

编写一个生成Tex格式文件的工具,能够方便地操作,并基本实现所见即所得。要求可同时生成给LaTeX系统使用的.sty/.cls和给LyX使用的.layout。本项目要求较高的C/C++技巧,并有一定的排版方面的基础。

5.eflex和ebison

词法分析和语法分析在程序中是非常有用的功能。flexbison可以方便地根据规则生成词法分析器和语法分析器。然而,这两个根据目前主要面向生成一个可直接编译成.exe文件的源程序。它们生成的源程序对输入、输出和缓冲区管理都很不灵活,较难集成到现有程序中。本项目修改这两个程序,把其生成的源程序中输入、输出和缓冲区管理与核心部分分离开,并实现可灵活替换的输入、输出和缓冲区管理,以便把词法分析和语法分析功能集成到程序中。本项目要求对编译原理有一定了解。另请参考re2c

6.latex2rtf

LaTeX是科技排版的最佳工具。然而,某些时候我们仍然需要把LaTeX转换成Word等软件可以处理的格式。目前的latex2rtf功能仍然较弱,特别是在图形和公式上难以令人满意。本项目改进现有latex2rtf代码,目标是实现较好的图形和公式转换。本项目需要一定的排版方面的基础。

7.OLELaTeXeq

编写一个OLE控件,允许在支持OLE的程序中插入LaTeX公式。Word等软件生成的公式比较难用,LaTeX公式则优秀得多。本项目利用OLE技术,允许把LaTeX公式插入Word等软件中。可利用LaTeX平台渲染公式,不必实现复杂的LaTeX公式解析。还可利用Ghostscript实现eps渲染,结合png格式实现“半矢量”式嵌入公式以在可能的环境下提高显示质量。

8.ForumPeeker/NewsPeeker

智能下载论坛、新闻网站、博客等经常变化的动态内容,并对下载内容进行整理、索引。论坛、新闻网站、博客等动态网页与静态网页有很大的不同,如何保证下载到所有新内容,并区分所下载到的材料中哪些是新内容、哪些是旧内容等问题仍然不好解决。但是,要收集、整理、索引这些内容,编写一个智能下载器是必须要进行的第一步。

9.SimCPU

开发一个CPU周期级模拟器的工具包。用这个工具包可以方便地开发简单CPU的周期级模拟器。

10.asm2asm

开发一个把.asm、.s、.nas等格式的汇编源代码相互转换的程序,以方便Windows/Linux上的汇编程序移植。请参考yasm

11.BinEdit

编写一个全新概念的二进制文件编辑器。目前的二进制文件编辑器一般都是指十六进制编辑器。然而,用户总是希望能够根据文件的格式来进行编辑,而不是简单的二进制串。所以,可以支持按格式进行二进制文件编辑,并支持大量的不同二进制格式的工具是很有用处的。

12.SlimXP

Windows XP/2003等MS操作系统安装了一大堆无用软件,不仅导致系统性能大幅下降、资源占用量大幅上升,还留下很多后门,系统安全性下降。事实上,很多部件是可以去除的,而且可以从安装光盘上直接去除。去除这些无用部件后的XP安装盘最小可到60MB,实用的也在180MB左右。而用这些删节过的XP安装盘安装的系统速度明显变快,资源占用量明显下降。nLite是专门完成这个工作的免费软件,但有两个缺点:(1)非开源工程,也不支持插件技术,导致其功能扩展只能由作者完成;(2)使用.net开发,需要安装一个巨大的软件包才能运行。本项目开发一个支持插件技术的开源工具实现类似功能的工具,以便更多开发者可以参与其中。

13.FlexLinux

现有Linux发行版虽然都较有特色,但安装时间一般较长(与删节过的XP相比)。本项目开发一个“开发Linux发行版”的工具。该工具可以根据用户需要,选择合适的OS核心、驱动程序、应用程序等并组织起来做成定制的可快速安装的安装光盘映像。目标是对普通桌面应用,所有内容压缩到500-600MB,安装时间压缩到25分钟以内(全部安装完成并配置好的时间)。

14.ZipEnv

开发一个类似7-zip的压缩工具平台。要求该平台面向压缩算法的开发,使用简单易用的API接口,以方便替换压缩算法的各部分。

15.可视化工具

实现鱼眼效果的可视化(如treebolic一样的效果),但要避开其专利。

16.DiagramDrawer

Word画框图的功能是比较实用的。虽然有很多软件实现了类似功能,但易用性却差了很多。本项目实现一个使用非常方便的画框图软件。不强调功能特别强大,而是专门强调易用性,要求对平常的系统功能表示、简单流程图等应用中达到甚至超过Word框图的能力。参考:LaTeXDraw

17.OpenSiteMeter

实现SiteMeter的功能。

返回主页