network-project 重庆大学计算机学院2018级 计算机科学与技术卓越班的计算机网络Project 在Linux下使用PF_PACKET的Raw Socket实现从以太网到UDP的封装,并支持IPv4 Fragment
2022-10-24 19:49:33 2.67MB C
1
吉林大学软件工程2017卓班UML全部课程作业答案:使用ROSE软件完成四次作业。No.1 EasyLibrary用例图 No.2 超市结账系统活动图 No.3巡航器状态图 No.4顺序图_通信图_VOPC三合一小作业
2022-05-19 12:37:11 677KB UML 吉林大学 卓班
1
吉林大学软件学院卓班程序设计综合实践代码中国象棋和Pong游戏设计 中国象棋程序是基于Java语言开发的,其核心是博弈算法——Alpha-Beta算法。为了简化操作,减少各种运算,我们将棋盘的棋子放置在一个chess[256]数组中。为了让象棋程序走法更强大,我们简略实现了棋子前中后期动态价值表,同时让棋盘一些棋子价值相互联系,调整了棋力价值表。中国象棋现有的功能是能选择象棋难度;选择开局方式;终止比赛。未来希望引入开局库和残局库来加快搜索速度。 Pong游戏是基于C++语言开发的,其核心是深度学习算法。
2022-04-10 00:22:53 17.09MB 吉林大学 程序设计
1
作业03 结构型模式 1. 现Mouse类的定义如下: class Mouse { public: void Walk( int steps ) { cout<<"Implement for Walk() with Verson 1."} void AddMoney(int m) { cout<<"Implement for AddMoney() with Verson 1."} private: int posX; int posY; }; 若已知:在后续的版本中 a)可能会增加Mouse类的其他行为,如增加Drive(int steps)和Fly(int steps); b)可能需要改变Walk(int steps)的具体实现细节; c)可能会增加其它数据成员,如将2D位置信息改为3D位置信息等。 d)希望在新版本中,尽可能地通过扩展老版本,适应新需求。 请使用桥接模式重新设计Mouse类及相关类,并简要说明如何适应变化a-d。 2. 请设计并实现一个foo.dll,其中含有类如下: a) 若foo.dll直接导出了类Foo、类FooA、类FooB,请使用类适配器和对象适配器,实现 class User { public: int myProcess( ) { /*适配Foo.process(); */ } }; b) 若foo.dll没有导出类Foo、类FooA、类FooB,但导出函数shared_ptr createFooA();和shared_ptr createFooB();,请使用对象适配器使得User可以适配任意指定的Foo类族的子类对象的process。 3. 针对给出的场景、描述,请说出最适当的模式名字,并用文字或示例代码给出简要的使用说明或解释。 1) 开发了一个用于数值计算的大型程序库,它的功能是强大的,但需要使用者具备较高的数学专业知识。为方便“菜鸟”级用户的使用,需要提供一个简化版的,但同时又不希望影响专业人员的使用。使用哪种设计模式较好?如何设计? 2) 在2D游戏的开发中,需要绘制地图,地图是由大量的“一样的图块”拼接而成,而“图块”的种类有限,目前有草地、海洋、沙漠、山地等,未来肯定要增加种类,但不会太多太频繁。采用何种模式组织“图块”类比较好?如何设计? 3) 在开发一个办公自动化系统时,项目组在ElectricSignature类集中实现了电子签名的功能。但在使用中发现该类不能完全满足用户需求,由于财力和人员的限制,决定直接购买第三方电子签名软件,其中的FZ_ESignet类功能与ElectricSignature的功能一样,但是两个类中的函数名都是不一样的,而且购买的只是二进制代码,没有源代码。现希望使用第三方软件的功能,但又不希望修改ElectricSignature的接口。使用哪种设计模式改进较好?如何改进? 4) 某书店需要开发一套图书购销存软件。在设计图书类时发现:图书有单行本和成套的,又细分成教辅材料、科学知识、文学著作等。设计时,希望能够以一致的方式访问各种图书,不论是单本的、成套的、IT类的或古典名著。使用哪种设计模式较好?如
2021-10-09 11:42:01 1012KB 吉林大学 设计模式
1
练习03 创建型+结构型+其它(以step0_src中代码为基础) 1. 在代码中大量地使用了cout, 这限定了程序只能输出到控制台屏幕,同时也限定了程序中大部分类只能在控制台程序中被复用。为更好提高Menu等类的复用性,并适应多种输出设备,如输出到流设备(含控制台)、输出到打印机、输出到窗口等, 可以将输出独立出来。请根据给出的类图,设计并实现相关类(PrinterDevice、WindowDevice不用实现,暂不考虑cin的处理),并修改原程序,使得输出结果不变。 2. 若希望输出各菜单时,左端都增加一些空格或Tab,使得显示更美观一些,如下图所示。请使用装饰模式扩展1中的类。 转变成 3. 考虑1中的PrinterDevice,若系统中没有本地打印机,而是使用网络打印机;在网络上打印机有多台,当有打印需要时,由系统根据情况选择一台打印。现希望维持OutDevice等类接口的一致,同时让用户在适应打印设备时,感觉与本地打印“一样”。请使用代理模式,给出相关部分的类图并简要加以说明。 4. 现希望在Process各Menu时,增加一些额外的操作:如在菜单之前显示一个Head,例如主菜单可能显示为: ========================= = = ========================= 主菜单 1: New 2: Load 3: Save 4: Option 5: Play..." 6: Change To EF 0: Exit Your selected: 也可能在菜单显示时,循环播放背景音乐,离开菜单时,停止播放。 现将Menu中的Process改为virtual,通过复用已有的各Menu,给Menu增加一些额外的功能。请使用装饰模式进行扩展,使得Process各Menu时,都循环播放背景音乐,离开菜单时,停止播放;同时显示主菜单时,显示如上图(Window下可使用PlaySound API函数,另由于LoadMenu类名与Windows中的LoadMenu API函数重名,可将菜单LoadMenu 类改为其它名字或使用名字空间避免重名)。 5. 现添加Player。作为Demo,可设为2-3个player,如第1号是HumanPlayer;第2号玩家是AutoPlayer,第3号玩家是AutoPlayer。当选择MainMenu->Play时,各Player依次Play;轮到AutoPlayer时,显示当前Map,然后转下一个player;轮到HumanPlayer时,显示PlayMenu菜单,如下: PlayMenu 1. Go… 2. Load 3. Save 4. Back To MainMenu Your selected: 选择1时,显示当前Map; 选择2时,进入LoadMenu;选择3时,进入SaveMenu (SaveMenu可从MainMenu的子菜单中移除掉);选择4时,进入MainMenu。请完成实现代码。实现时,需将MainMenu的子菜单SaveMenu移到PlayMenu的子菜单;修改LoadMenu的动作,当返回时,不再返回到MainMenu,而是直接执行MainMenu的Play过程;
2021-10-09 11:40:08 2.04MB 吉林大学 设计模式
1
练习02 创建型+结构型+其它(以fromsrc目录中的代码为基础) 1. 在game中维护着curMenu,见下图: 在运行时,应只有一个curMenu对象。而MenuMgr作为所有menu的管理器,也可以管理curMenu。请将curMenu从Game类,移到MenuMgr中,使得运行结果不变。 2. 道理同1. 请建立MapMgr类,并将curMap从Game类,移到MapMgr中,使得运行结果不变。 3. 查看Map.h 其中各Block以二维数组的形式组织。事实上,各Block的组织形式是多种多样的,如 既可以用二维数组的形式表示布局结构,也可以用链表、有向图等表示,甚至各Block是通过立体的关系构成Map。请使用桥接模式分离Map的接口和具体实现。同时,为保持Map接口的一般性,改为通过线性索引的方式读取/添加Block。即Map可如下: MapImp类可如下:(当需要不同的实现时,从MapImp派生即可) 既然Map不再记录Block的二维位置信息,那么可以让Block记录自己的二维位置信息,即Block类可修改为: 请完成相关代码的修改,使得程序功能不变。 4. 前边的代码中,地图的布局是由二维数组给出的,如: 很明显,其隐含地指出:相邻的两个非空Block是相通的,不相邻两个非空Block是不能直接连通的。但实际上,地图的布局不一定以数组形式给出,可以用其它方式给出,例如下图(地图B)中的布局,可能以下表的形式给出: (地图B的布局含义) A A A A A B B B C C C C D D D A A A A A B B B (对应地图B布局实际给出的数据表) 类型 序号 行 列 LEFT RIGHT UP DOWN A 1 0 0 0 2 0 6 A 2 0 1 1 3 0 0 A 3 0 2 2 4 0 7 A 4 0 3 3 5 0 0 A 5 0 4 4 0 0 8 B 6 1 0 0 0 1 9 B 7 1 2 0 0 3 10 B 8 1 4 0 0 5 12 C 9 2 0 0 0 6 13 C 10 2 2 0 11 7 14 C 11 2 3 10 12 0 0 C 12 2 4 11 0 8 15 D 13 3 0 0 0 9 16 D 14 3 2 0 0 10 18 D 15 3 4 0 0 12 20 A 16 4 0 0 17 13 0 A 17 4 1 16 18 0 0 A 18 4 2 17 19 14 0 A 19 4 3 18 20 0 0 A 20 4 4 19 21 15 0 B 21 4 5 20 22 0 0 B 22 4 6 21 23 0 0 B 23 4 7 22 0 0 0 若希望每个Block“知道”其相邻的各Block,请扩展3中MapDirector、MapBuilder、Block类,同时改写MapMgr中的createMap函数,使得新的程序能够根据给定数据表正确创建并显示地图(可在global.h中添加常量)。 5. 回看3中的MapImp类: 请问“MapImp类的设计中,使用了适配器模式”,这句话对吗?如果正确,回答适配了什么?采用类适配器模式可以吗?如果不正确,回答为什么?
2021-10-09 11:37:03 632KB 吉林大学 设计模式
1
《大富翁》游戏的初步类图可如下: 其中菜单系统中各菜单可能如下: 请用面向对象语言和方法,编写一个控制台程序,主要实现菜单系统的Demo。 (语言C++/Java均可,暂不用考虑异常处理,默认2个玩家,音量50,分辨率1024*768) main函数如下(例:C++): int main() { Game * game= new Game; game->init(); game->run(); game->term(); delete game; return 0; }
2021-10-09 11:34:24 935KB 吉林大学
1
吉林大学软件学院卓班设计模式第一次作业 一. 使用分类稳定和变化的方法,重新设计类,使得新设计能以扩展代码的方式适应变化 未来可能会增加新的数据成员如mVal3, do1和do2中可能访问mVal1、mVal2、mVal3等 二. 按指定的要求或模式,给出实现。 1. 使用工厂方法模式实现工厂类。其中图书馆可能增加其他子类型,体育馆可可能增加具体子类。 2. 请用C++语言具体实现多线程中lazy式的单例模式(具体的锁机制,可任意)。 3. 若已知文科图书馆和理科图书馆各只有唯一一个,请参考课件中”多个单例类”,实现文科图书馆和理科图书馆的单例化。 4. 显然,一套场所组合对应一个工厂,请实现将各工厂也单例化。 5. 一个线程对象可以是多种状态(运行,空闲,挂起等),创建线程是非常耗资源的。线程池可以较好地避免频繁创建线程:一个线程池可以聚合N个线程(线程初始状态为空闲,N=10)。当客户申请线程时,从线程池中查找空闲的线程,找到后返回该线程;若没找到,返回异常。请用多例模式设计线程池类(ThreadPool)
2021-10-09 11:29:45 56KB 吉林大学
1
敏捷开发在软件工程领域的发展和实践研究 吉林大学软件学院 摘要:随着互联网行业的不断发展,如何通过改进软件项目开发的过程管理来提高近些年的软件企业软件的开发效率、满足频繁需求变更是目前大部分互联网企业困扰的难题。本文首先对国内外目前常用的几种研发模式进行介绍,然后针对敏捷软件开发方法的开发、维护和管理模式的运用特点进行分析,比较了传统开发方法和敏捷开发方法的异同点,接下来结合极限编程和敏捷维护模型在保险信息系统中的应用,对敏捷开发的实践方法展开研究,最后分析了敏捷开发方法的实践和应用前景。 关键词:敏捷开发;互联网企业;敏捷维护模型;极限编程
2021-09-30 00:29:59 7.92MB 吉林大学 软件工程
1
Android-Klass 北京交通大学安卓班项目
2021-07-01 17:03:57 8.82MB Java
1