首页 Njust Cse Course Design
文章
取消

Njust Cse Course Design

NJUST-CSE-course-design

Course design of College of Computer Science and Technology, Nanjing University Of Science And Technology

南京理工大学 计算机科学与工程学院 课程设计

前言

课设,不可谓不头疼,不可谓不肝。记得每年小学期做得时候天都是黑暗的,过完了之后就感觉头顶的天都亮了。无数个夜晚和清晨,你见过南京清晨四点半的太阳吗?再睡到12点hh

考虑到自己已经做了一遍,希望给学弟学妹留下指引,所以在这个项目会写课设的思路,问题等,也会放一些代码供以参考。

但是,有代码并不能直接cv,必须要自己写!!!

课设的意义就在于对课程学习的内容的实践,在实践中体会理论,发现问题。去思考自己学的东西,思考这样做的合理性,发现自己感兴趣的方向,从工程的角度考虑项目。

我以前并没有体会到这些,学习是为了应付考试,得到成绩,可在毕业的时候,看到身边的同学们找工作时临时抱佛脚的焦虑,自己研究生面试被问的体无完肤,我体会到学习是为了自己。

所以,希望大家能核心课程用心学,课设用心做。

耗费时间整理这个项目是为了给南理工人带来方便,因为我爱南理工,爱这所学校,也感谢这所学校,希望能用自己的脚印给它留下一些财富。当然自己的学识有限,难免会有疏忽和错误,如果对项目的问题,可以联系我,邮箱alan.lee1998@outlook.com。也可以咨询选课和学习的问题,但拒绝巨婴。

汇编:当前日期间隔n天的日期输出

根据日期(判断输入个是)加年加月,考虑区分闰年,输出时需要转换为十进制,单位数补0 。

C++:英语单词学习软件

  1. 单词表读取,需要进行分词,对于存储可使用容器,防止像我一样定义String[3000]的组,整体处理以String处理较方便。较成熟的可以考虑使用数据库。

  2. 定义背的次数数组,根据相应的逻辑规则显示词语,设定会,不会等状态。对于经常不会的词语进行判断提高出现频率。

  3. 智能推荐功能,对单词相似度进行排序,选择字母相似较多的词语。

  4. 输出需要注意排版问题。

注意:没有图形界面的程序,需要判定用户的输入是否合法。

对于团队项目,我们做了人机人人五子棋,用的QT,包括声音等特点。

JavaEE:酒店管理系统

这个项目就用的课上教的Servlet、JSP、JDBC写的,加入了Hibernate管理数据库。bean用来对接数据库,进行事务处理;entity用来定义实体,转换数据库对象。servlet用来处理前端JSP页面的请求,处理页面跳转,调用bean层,处理业务产生的数据。

架构很简单,但是实现起来并不简单,功能适中,基本业务需求都有。首先为什么不简单,因为架构简单,这不废话吗?这里说一下复杂在那里,这也是最初Web开发的问题,之后才衍生出了SSH、SSM、Spring、到现在的SpringBoot、SpringCloud。

  1. 首先,配置环境及其复杂,当时我已经知道很多组配环境配的焦头烂额,可能大家刚接触Web项目吧。Java、Tomcat、Mysql、JDBC、MyEclipse这些的配置,Tomcat的启动、端口号冲突等问题,mysql和JDBC的版本兼容问题,mysql在windows中很难卸载干净,ME的激活问题以及在mysql中配置tomcat也很复杂。

    这些都阻碍着我们的开发,当然直到现在配环境也是个让人头疼的问题。所以对于一个项目有现成的基础框架或者直接不需要佩环境是难得可贵的。一些新技术也应运而生,包括SpringBoot的建议配置,IDEA的全面人性辅助开发,所以推荐大家使用先进但成熟的技术。当然mysql 6和8孰优孰劣有待争议,均可,编译器推荐IDEA等等。

  2. 开发代码的复杂,你根本不知道Servlet和JSP传变量有多复杂,不断的重新声明,一个个request,复杂,零乱。同时在页面跳转之后,JSP又要重新得到一样的变量。

  3. 前后端不分离,这就带来开发的复杂。我们需要一个人即写前端又写后端,这本来任务量就大。还有项目的同步,我们使用的SVN,这减轻了一些对接的复杂,如果没有就来回拷代码。

  4. 配置项目的复杂,对于每个Servlet都需要在项目xml文件中声明。

当然现在有了很多新技术,这个项目会有很多问题,当然做一遍的好处,就是能深刻体会这些问题,再感叹新技术的好。

下面介绍以下项目,角色老板、前台、顾客。功能上包括订房和订餐,殊涂同归,加之一些辅助功能,例如查看库存,报表统计等功能。这里说一下开发中的问题。

  1. 对于客房的状态,我们使用1234等状态进行标识。
  2. 对于订单,需要增加项表,而不是在商品数据库上进行增加列。

Linux:线程池

这里,一个是在linux中,c++程序和在windows中的编译运行不一样,需要生成.o的中间文件。一个进程、线程以及线程池的区别,进程是隔离的单个程序,线程是共享部分资源的程序,线程池则可以附带对线程的管理,动态分配线程。

编译原理:编译器

此项目用C++编写了包括词法分析和语法分析的编译器,包括可以对基于用户输入的正规文法进行词法分析的词法分析器,输出TOKEN表;基于二型文法运用自底向上的LR(1)分析方法,完成对上步输出的程序的语法分析,并输出分析结果,进行报错。

编译器词法分析部分首先读取morphology.txt中的正规文法,完成从正规文法到NFA的转换,用子集法,完成NFA到DFA的转换,再根据DFA将读取的source.txt中的源程序生成token列表三元组,包括所在行号,类别,token 内容。

编译器语法分析部分首先读取grammar.txt中的二型文法,再进行求FIRST集,计算项目集族,构建分析表,完成LR(1)分析后生成ACTION和GOTO表,从而对词法分析输出的处理结果进行分析,判断其是否被该文法接受,如果出错输出错误。

词法分析器

词法分析程序的处理逻辑:根据用户输入的正规文法,生成NFA,再确定化生成DFA,根据DFA编写识别token的程序,从头到尾从左至右识别用户输入的源代码,生成token列表(三元组:所在行号,类别,token 内容)。

语法分析器—— LR(1)

语法分析程序的推荐处理逻辑:根据用户输入的2º型文法,生成Action及Goto表,设计合适的数据结构,判断token序列(用户输入的源程序转换)。

媒体计算:手机图像检索系统

本项目基于感知哈希的图像检索算法设计了商品图像检索系统,综合运用java和python编程语言,实现了基于Android的商品图像检索及基于Web的系统后台管理。在Android客户端,系统可根据用户上传的商品图片,自动检索并显示出相似的商品图像,还可以查看系统中的商品信息列表,并往图片库中上传商品图片。Web后端管理可让系统管理员上传图片,查看和删除商品信息以及管理员账号的增改删查等基本功能。

软件项目管理:考试管理系统

基于SSH的CCF管理系统用,利用Myeclipse软件开发,利用Mysql作为后台的数据库,充分利用了SSH和Mysql的优点,利用Window_10作为系统平台。使用Myeclipse 作为系统的开发环境,他提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障,保证了代码的模块化要求,从而提高了代码模块化,非常有利于以后对新系统的扩展与修改。

计算机网络:套接字通信

算法

数组最大最小值

​ 分治法

矩阵链相乘

​ 动态规划

旅行商问题

​ 分支限界策略或回溯策略

图形学

组原:CPU

根据学习过的硬件课程:计算机逻辑基础、计算机组成原理等,设计一个16位的CPU 。采用语言和原理图结合的方式 ,分模块用语言描述,顶层模块用原理形式。

操作系统

软件测试

软件体系结构:单词本

基于顺序批处理思想,实现满足增删改查需求的电子词典软件系统。首先,程序设计体现批处理风格的特点,实现单词的增查删改,在批处理顺序体系结构中,每个数据转换子系统或模块都无法启动其过程,直到其先前的子系统完成其计算为止。数据流将整个数据从一个子系统传送到另一个子系统。

系统的主要功能有:对单词的增加、查找、删除、修改。在程序输入文件中输入新加或要删除的单词即可在词典里加入或删除所输入的单词。在查询文件中输入要查询的单词即可在词库中查询到相应的单词;同时也可以在输入文件中输入要改的单词,再输入改成后的单词即可将结果存入词库里。

电机控制系统

系统采用C/S结构进行设计,宿主机运行客户端程序,目标机上装载有编写的嵌入式系统软件,宿主机和目标机之间通过串口通信信道进行数据传输。宿主机通常是通用个人电脑,其上要运行开发工具软件和客户端软件。目标机即是嵌入式系统机器。

1、可以通过PC机远程启动和停止电机旋转;

2、基于S3C2440来设计控制器,选用Timer部件来实现直流电机控制;

3、可以通过PC机远程对电机进行调速;

4、PC机接收控制器返回的占空比参数;

5、在控制器的LED显示器上显示控制占空比的参数。

在完成以上五个要求的基础上,新加了Modbus协议数据传输功能,能够将上位机传输到下位机的数据进行协议封装,并使用CRC算法进行数据校验。

本文由作者按照 CC BY 4.0 进行授权