吉林大学嵌入式课堂作业.pdf
吉林大学软件学院嵌入式原理课后作业
WebSphere实验报告.zip
吉林大学Web Sphere课程八次实验报告(他人版本)
吉林大学编译原理期末试题解答.pdf
吉林大学计算机、软件学院编译原理考试真题及答案详解,完全由学生自己打的,自己做的,因此仅供参考,收录了从03级到17级编译原理试题,18级编译真题都可以在里面找到。做完这些题考90不是问题!
森林优化特征选择算法优化思路.zip
吉林大学计算机软件学院人工智能课程(李老师授课)大作业某算法优化思路
机器学习与Python.zip
吉林大学机器学习与Python课程(周老师授课)八次作业参考答案
2019RUP.zip
吉林大学RUP最终大作业参考答案
ServiceCourse.zip
吉林大学软件学院服务计算概论两次大作业
2018数据结构理论课.zip
吉林大学计算机学院/软件学院的数据结构课程的PPT,供大家复习参考,PPT写的非常好,每个章节还留了POJ的作业
2020云计算技术期末作业.zip
这是吉林大学云计算课程的期末大作业,我采用的是python优化加速,仅供参考,最好用课程讲述的那种加速方法
吉林大学软件学院卓班程序设计综合实践代码中国象棋和Pong游戏设计
吉林大学软件学院卓班程序设计综合实践代码中国象棋和Pong游戏设计
中国象棋程序是基于Java语言开发的,其核心是博弈算法——Alpha-Beta算法。为了简化操作,减少各种运算,我们将棋盘的棋子放置在一个chess[256]数组中。为了让象棋程序走法更强大,我们简略实现了棋子前中后期动态价值表,同时让棋盘一些棋子价值相互联系,调整了棋力价值表。中国象棋现有的功能是能选择象棋难度;选择开局方式;终止比赛。未来希望引入开局库和残局库来加快搜索速度。
Pong游戏是基于C++语言开发的,其核心是深度学习算法。
吉林大学软件学院卓班一年级暑假实习银行叫号系统
吉林大学软件学院卓班一年级暑假实习银行叫号系统:开发一款运行于Linux操作系统平台的银行排队系统软件。在联网工作的多台终端上,实现排队系统的取号、排队、叫号、以及VIP优先叫号服务。包含客户在排队终端取号,柜员在柜员终端上叫号,服务器管理客户排队信息和柜员号码分配,针对VIP客户有优先叫号服务,对于排号叫号记录进行经理检查功能。增加对柜员进行评分,并对银行的服务情况的整体评分情况查看功能.
吉林大学软件学院C语言课程设计
吉林大学软件学院C语言课程设计:水果超市管理系统
采用链表和C语言设计方式
void menu_main()
{
char op;
while (true)
{
printf("====================\n");
printf("| 水果商店 |\n");
printf("====================\n");
printf("| |\n");
printf("| 1.库存管理 |\n");
printf("| 2.用户管理 |\n");
printf("| 3.购物记录 |\n");
printf("| 4.第二天 |\n");
printf("| 5.退出系统 |\n");
printf("| |\n");
printf("====================\n");
printf("当前时间:M年%d月%d日。\n", pDate.tm_year + 1900, pDate.tm_mon + 1, pDate.tm_mday);
op = ScanOption("请选择进入:", '1', '5');
switch (op)
{
case '1': menu_stock(); break;
case '2': menu_user(); break;
case '3': menu_ticket(); break;
case '4': push_date(); break;
case '5': if (ScanBoolean("确定退出吗?(y/n):")) return; break;
default: break;
}
clear();
}
}
吉林大学软件学院卓班数据结构上机和实验代码
吉林大学软件学院卓班数据结构上机和实验代码 共七次
第一次实例:单链表实现
class Node{
public:
int data;
};
class List{
Node *list;
int size;
public:
List(){size=0;list=new Node[maxsize];}
~List(){delete []list;}
void creates(int M);
void inserts(int k,int x);
int getk(int k);
void deletek(int k);
int finds(int x);
void outputs();
};
void List::creates(int M)
{
for(int i=0;i>list[i].data;
size=M;
}
void List::inserts(int k,int x)
{
for(int i=size;i>=k;i--)
list[i]=list[i-1];
list[k].data=x;
size++;
}
吉林大学软件学院卓班数据库系统原理课程设计
1.1 项目总体说明
用Java语言模拟一个小型的数据库管理系统,使得这个系统能用规定的语法风格实现信息的增加、修改、删除和查询,并实现了索引的创建、维护和删除功能,在查询时对查询进行优化,提高查询速度;同时提供另外一些功能接口,便于以后增加其它功能。
1.2 项目组成员简介
项目组长:,擅长分配任务,能够严格督促组员按照项目安排表完成各自工作任务,组织能力强,编程能力在中上游。
组员一:,善于编程,数据结构知识掌握非常到位,有编写红黑树的能力。
组员二:,对字符串匹配问题了解较深,编程能力强。
组员三:,善于测试测序,调Bug,编程能力在中上游。
1.3 四人组队缘由
吉林大学软件学院卓班计算机职业道德作业
摘要:在大数据技术飞速发展背景下,如何对用户个人信息进行保护也成为了亟待解决的问题。首先分析了大数据时代下隐私权的新特点,以及国内外网络隐私权的研究和保护现状。接着通过对近年来隐私权侵权案例的研究,分析大数据时代在信息收集、使用和存储阶段被不当利用造成侵权的原因和影响,并从提高个人隐私保护意识和建设健全隐私保护法两方面对完善我国网络隐私权保护提出了有益建议,最后提出了对大数据和隐私保护未来建设的展望。
关键词:大数据时代;隐私权;隐私保护
吉林大学软件学院组合数学课程报告
组合数学领域 Catalan数的应用研究 吉林大学软件学院
1.卡特兰数简介
卡特兰数(Catalan Number)是组合数学中应用广泛的重要计数函数,以比利时的数学家欧仁·查理·卡塔兰(1814–1894)的名字来命名,其前几项为(从第零项开始):1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,742900,
2674440,9694845,35357670,129644790,477638700,1767263190
吉林大学软件学院卓班软件工程作业文献综述和结题报告
敏捷开发在软件工程领域的发展和实践研究
吉林大学软件学院
摘要:随着互联网行业的不断发展,如何通过改进软件项目开发的过程管理来提高近些年的软件企业软件的开发效率、满足频繁需求变更是目前大部分互联网企业困扰的难题。本文首先对国内外目前常用的几种研发模式进行介绍,然后针对敏捷软件开发方法的开发、维护和管理模式的运用特点进行分析,比较了传统开发方法和敏捷开发方法的异同点,接下来结合极限编程和敏捷维护模型在保险信息系统中的应用,对敏捷开发的实践方法展开研究,最后分析了敏捷开发方法的实践和应用前景。
关键词:敏捷开发;互联网企业;敏捷维护模型;极限编程
吉林大学软件学院卓班计算机组成原理第三次作业
【摘要】闪存因其低延迟、高并发、低能耗、体积小等特点受到了广泛关注。本文介绍了闪存的结构、特点、以及闪存存储系统的技术,详细说明了NOR、NAND技术的发展,并介绍了闪存与传统磁盘的区别;分析并比较了现有包括闪存加速卡、闪存阵列、基于闪存的分布式集群系统等基于存储介质直接构建的闪存存储系统的特点,归纳了其通过改变硬件接口、调整软件或控制器管理模块、匹配处理器与I/O处理能力等方式实现系统低延迟、高可靠、低能耗等特性的优化方法;然后介绍当前基于闪存技术的应用,同时分析闪存的缺点、市场前景和发展趋势。
关键词:闪存 存储系统 I/O 可靠
吉林大学软件学院卓班计算机组成原理第一次作业
【摘要】随着摩尔定律的发展,DRAM密度越来越大,目前已发展到千兆比特级别,其刷新周期并没有改善,单位时间内需要刷新的存储单元数越来越多,从而使刷新带来的性能和功耗开销越来越严重.刷新问题目前得到了工业界和学术界的广泛关注.为了研究目前DRAM的刷新方式和开销,工业界已经实现了一些改进;工业界和学术界提出的众多优化方法可以总结为“减轻刷新操作对访存的阻塞”和“减少不必要的刷新操作”两大类。
吉林大学软件学院Software Analyse and Design实验报告
1.Introduction
1.1 Purpose
To update the registration process from heavy manual process and paper works to a computerized system for efficiency, a new registration system is designed for a software development conference.
1.2 Function
Using the registration system:
○ Attendees can register the conference using a friendly user interface with very simple operations during the open registration period.
○ Attendees can add and delete the sessions selected. In the meanwhile, the session fee will be refund and paid using credit card instantly.
○ Attendees can look up the registration record of attending sessions at any time after registration.
○ System can manage registrations strictly by the conference standards during the three period (“open registration” ,“registration close”,”conference start”).
○ The registration administration of the conference organizer can look up all registration information.
吉林大学软件学院Software Architecture作业
Artificial intelligence is a new technology science that researches and develops theories, methods, techniques and application systems for simulating and extending human intelligence[1]. Its structure is similar to pyramid structure: the upper layer is the algorithm, the middle is the chip, and the third layer is various The hardware and software platform, the bottom is the application. Research in the field of artificial intelligence began formally in 1956, when the term "artificial intelligence" was officially used at a meeting held at Dartmouth University. In the following decades, people have conducted extensive research on artificial intelligence. As a branch of computer science, it attempts to produce a new intelligent machine that responds to the human brain by mining the essence of intelligence. Applications for technology include robotics, image recognition, speech recognition, natural language processing, data mining, pattern recognition, and expert systems
吉林大学软件学院多媒体技术与应用第二次作业
《多媒体技术及应用》第二次作业
软件学院 55171106 杜维康
1 题目描述
给出以下缩写的全称并进行解释,组内进行区分和比较。
OLED LED LCD
HDR XDR
DPI PPI
电容触摸屏 电阻触摸屏 压力触摸屏
吉林大学软件学院多媒体技术与应用第三次作业
作业内容:制作吉林大学软件学院成立二十周年庆典宣传海报
功能要求:完成原始图像、素材的搜集,并采用Photoshop软件进行后期处理,要求在图像右下角叠加本人姓名学号。
提交材料内容及形式:
提交电子版材料,要求每名同学将要求提交的文件打包至一个压缩文件,用姓名学号为文件命名,提交至班级负责人;负责人以班级为单位,收齐后打包发送至158930117@qq.com。电子版材料具体包括:
(1)报告电子版,要求内容为处理步骤及中间过程图片、结果图像文件;
(2)原始图像文件;
(3)最终结果图像文件;
时间要求:电子版材料提交截止时间为2019年10月20日24:00。
吉林大学软件学院卓班C++所有实验课实验报告和代码
吉林大学软件学院卓班C++实验课实验报告和代码共七次
第一次题目如下
一、实验题目
(1)位运算封装
建立一个类封装C语言中的6种位运算(函数接口封装),给出调用测试。
基于位运算模拟+、-、*三种运算,给出调用测试。
(2)实现一个整数中所有数字累加和的计算。
(3)给出1000!的计算,可以采用任意方法。
报告要求:
(1)详细描述题目要求;
(2)画出主要流程图,并给出必要的文字说明;
(3)分析程序难点,并讨论解决问题思路。
(4)分析所实现程序的优点和缺点。
(5)你的收获;
吉林大学软件学院IBM Lotus Notes & Domino课程设计和实验报告
实验一 Domino服务器和Notes客户端的安装
1.实验名称
Domino服务器和Notes客户端的安装
2.实验目的
安装Domino服务器和Notes客户端,便于之后的开发和使用。
3.实验软硬件环境
Windows XP, Lotus Domino Server, Lotus Domino Designer 8.5 ,Lotus Domino Notes 8.5
计算机楼A310
4.实验方法
根据教师讲解和教学ppt安装Domino服务器和Notes客户端
5.实验过程
安装Domino服务器和Note客户端
吉林大学软件学院卓班UML作业
《统一建模语言UML》课程作业
No.1 EasyLibrary用例图
1. 借阅者请求服务的用例:
2. 图书管理员处理借书、还书等用例:
3. 系统管理员进行系统维护的用例:
No.3 超市结账系统活动图
No.4 巡航器状态图
No.5 顺序图_通信图_VOPC三合一小作业
1.
【问题1】
(1)checkMaxTournament()
(2)setDates(StartDate,EndDate)
(3)createTournament(name, startDate, endDate, maxp)
(4)requestExclusiveSponsor()
(5)findInterestedExclusiveSponsors()
(6)create()
(7)notifyLeagueOwener()
(8)setSponsorship(sponsor)
【问题2】
创建竞赛:
确定赞助商:
【问题3】
2.
【问题1】
(1)create()
(2)fillcontents()
(3)submitReport()
(4)createIncident()
(5)submit()
(6)acknowledgeReport()
(7)endReportTransaction()
(8)dismiss()
【问题2】
【问题3】
吉林大学软件学院服务计算概论第二次作业
服务计算第2次作业
一、实验题目
利用LocaleRegistry和Context实现远程对象调用
二、实验内容
利用java.rmi.registry.LocateRegistry实现RMI调用;
利用javx.naming.Context实现RMI调用;
思考和解答代码中的一些关键问题;
注:JDK1.3版本或更低的版本支持java.rmi.Naming,JDK1.3以后将命名服务API整合到JNDI中,javax.naming.Context声明了注册、查找,以及注销对象的方法。
三、实验要求
(1) 对关键代码解释清楚;
(2) 远程对象功能自定;
(3) 逻辑清楚,表述完整、准确;
(4) 要有必要截图。
吉林大学软件学院服务计算概论第一次作业
服务计算第1次作业
一、实验题目
对数据库的访问:利用JNDI连接两种不同的数据库。
二、实验内容
建立两种不同的数据库文件,利用JNDI编写访问数据库的代码,通过重新配置数据源,可以实现对不同种类数据库文件的访问。
三、实验要求
(1) 只修改数据源配置,不修改程序代码;
(2) 阐述清楚数据源配置在连接过程中的作用;
(3) 任选两种数据库;
(4) 逻辑清楚,表述完整、准确;
(5) 要有必要截图。
吉林大学软件学院卓班设计模式第三次作业
作业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类的或古典名著。使用哪种设计模式较好?如
吉林大学软件学院卓班设计模式第三次练习
练习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过程;
吉林大学软件学院卓班设计模式第二次作业
作业02 字符图像
目标:开发字符图像的类。一个字符图像是由多行ANSI可打印字符组成的,各行字符数量可以不同;一个字符图像可以通过加框(Frame)形成一个新的字符图像;两个字符图像可以通过顶端对齐的方式经水平连接(HCat)形成一个新的字符图像;两个字符图像可以通过左端对齐的方式经垂直连接(VCat)形成一个新的字符图像;
1. 现给出了一个字符图像的类定义,如下
实现上边的CharPic类。
2. 上边CharPic中,通过重载构造函数创建字符图像,但构造函数的语义不是非常直观,使用也需要特别小心。请试一试将重载的构造函数改成(简单)工厂方法,使得语义更清晰。
3. 考察完成的代码,你会发现:
a) 在构造、拷贝、赋值时,会将各子图都重新构造了一遍,拷贝和赋值使用的也是深拷贝和深赋值,这样在合成复杂的字符图像过程中,子图需要频繁地复制或赋值,效率不高;
b) 在使用一个字符图像对象的过程中,不会改变字符图像中的字符,因此重新构建子图、深复制、深拷贝显得没有必要;
c) 合成一个新的字符图像后,新图像不会含有关于”合成过程”的信息,即新图像不知道是通过水平连接得到的,还是垂直连接得到的,也不会知道“左子图”是什么等。
为此,重新设计了CharPic(为方便对比,类名改为Pic),希望通过子类型化和共享来避免abc中的问题。类的结构图(部分)如下:
其中,由于子类型化的存在,字符图像的拷贝采用了原型方法模式 (即虚拟拷贝构造函数);同时,禁止了图像对象间的赋值。
请定义并实现上述类图中的相关类,以及用于示例的相应主程序。
4. 若已知在复用3中的类时,可能还会增加有一些其它的需求,如:
a) 增加对角线连接的字符图像
b) 显示时,可通过指定图像间隔(空白字符个数)显示字符图像;
c) 变更FamePic中外框的字符(如变更为$号)
d) 增加以加密的形式显示字符图像功能,如将字符图像中的A显示成Z,Z显示成Y。
e) 增加图像的swap功能,即交换左右或上下(对于SimplePic和FramePic的Swap,不做操作即可)
请继续对3中的类,使用桥接模式重新设计,部分类图如下;同时指出如何适应a-e的变化需求.
5. 现有Menu类及相关类,如下图
在显示AppleMenu和WindowMenu时,是以图片的形式显示的;对于ConsoleMenu当然也以图片形式显示更一致些,但若完全实现该功能,可能会比较繁琐,可以考虑复用已有的字符图像类。为此,请分别以类适配器模式和对象适配器模式,复用字符图像类,实现ConsoleMenu的show功能。
吉林大学软件学院卓班设计模式第二次练习
练习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类的设计中,使用了适配器模式”,这句话对吗?如果正确,回答适配了什么?采用类适配器模式可以吗?如果不正确,回答为什么?
吉林大学软件学院卓班设计模式第四次练习
作业04 行为型+其它(以step0_src中代码为基础)
1. 将玩家改为只有两个Player,一个HumanPlayer,一个AutoPlayer。初始时,各玩家都站在map中的第一个Block上,初始的移动方向任意。每轮次HumanPlayer玩家前进3格,AutoPlayer前进2格。前进方向任意,但若前方有格子(前进、左转、右转),必定前进,而不能往回走。HumanPlayer所在的格子用[X]表示,AutoPlayer的格子用(X)表示。请实现代码。
2. 在Players的代码中,通过getFirst和getLast取得两个玩家,但这两个成员函数与Player用deque表示紧密相关,且只能取得前后两个Player。考虑到玩家数量可多个,玩家集合的数据结构可多样,请用迭代器模式重新实现遍历所有玩家的功能,要求分别实现C++风格的外部迭代器和Java风格的外部迭代器。迭代器接口如下:
class CppIterator {
public:
CppIterator( ) {}
virtual ~CppIterator( ) {}
virtual void first() = 0;
virtual void next() = 0;
virtual bool isLast() const = 0;
virtual void * current() = 0;
virtual int count() const=0;
}; class JavaIterator {
public:
JavaIterator() {}
virtual ~JavaIterator() {}
virtual void* next() = 0;
virtual bool hasNext() const = 0;
virtual int count() const=0;
};
3. 若玩家前进时,各玩家的前进策略多种多样,如一种策略是各可能方向是等概率的(例如1中的代码),另一种策略是各方向有不同几率:inDir未确定时,向各方向前进的概率相等;inDir确定时,各方向的概率不一定相同。具体可见下表。而且以后可能会添加新的前进策略,如具有AI的策略等;玩家还可能需要动态改变前进策略。请使用策略模式实现。
inDir==NONE时 inDir!=NONE时
连通四个方向 各方向各25% 直行50%,左转25%,右转25%
连通往三方向 各方向各33% 可直行时,直行60%,左转(或右转)40%;
不可直行时,左转和右转各50%
连通两个方向 各方向各50% 与inDir不同的方向为100%
连通一个方向 各方向各100% 100%地转向往回走
4. 为提高趣味性,增加了卡片子系统和魔法子系统, Player可以使用卡片、魔法等,作用于各玩家或系统中的其它对象上。部分类图如下:
这里使用RobCard会抢走指定玩家的一半金钱;使用MeanCard会平均所有玩家的金钱;使用ReturnSpell会使指定玩家直接返回到开始的Block,inDir不定。
1) 修改PlayMenu为:
PlayMenu
1. Go…
2. ApplyRobCard
3. ApplyMeanCard
4. ApplyReturnSpell
5. Load
6. Save
7. Back To MainMenu
Your selected:
并给Player类添加行为ApplyRobCard(Player * target);、ApplyMeanCard();和ApplyReturnSpell(Player * target),然后实现。
2) 以后肯定要添加其它Card和Spell,还有可能增加道具子系统等。由于Player已有子类AutoPlayer和HumanPlayer,而且未来扩展Card、Spell和道具等时,作用目标target有多种可能,如Player、Block、Player集合,甚至Card类等,所以希望在未来扩展时,避免通过继承Player类或其子类进行扩展。请使用命令模式实现此目地。
5. 若需要增加FlyCard和FreezeSpell。其作用是:当应用FlyCard到某个Player上时,该player将每轮次前进6格,并持续2个轮次;当施加FreezeSpell到某个Player上时,该player将每轮次只前进1格,并持续3个轮次。 考虑到以后还会添加其它类似功能的Card和Spell,但不希望直接从Player类派生子类进行扩展。请使用状态模式实现此目的。
6. 若还需要增加HurtSpell,该Spell会导致被作用的Player,每轮次减少Money的数量5,并持续2
吉林大学软件学院卓班JSP课程设计
开发一个图书借阅管理系统,系统包括读者用户管理、图书管理、借阅管理,用户信息包括用户编号、用户姓名、电话号码、电子邮件、用户地址等,系统管理员登录系统后可为对用户信息进行增加、删除、修改操作,并可修改读者及其自身的密码;图书信息包括图书编号、图书分类、图书名称、出版时间、出版社及作者信息,每本图书在书库中可能有1到多本。每名用户借阅图书的数量不能超过3本,每本书的借阅期限是1个月,到期前1周可以续借,但如果已经过期则不能续借。用户可通过网络远程进行续借,或查询其自身的借阅信息,以及修改其自身密码及联系方式信息。用户借阅或归还图书时,管理员首先查询用户的借阅信息,若有超期的图书,则需要先缴纳罚款,每本书每超期1天的罚款为0.1元,对于罚款要进行记账,记录时间、被罚款人和罚款金额,并可查询某个时间段内的所有罚款记录明细,并计算和显示总金额。管理员还可以列出系统中所有未交罚款的借阅信息,并批量发送信息给借阅者,催促用户还书,借阅者登录系统后,可看到和阅读这些消息,已经读过的消息不再自动显示。
吉林大学软件学院卓班JAVAEE课程设计
一、课程设计内容
根据开发组的兴趣和知识,在下面的几类网站中选择一个,作为自己的课程设计。或者是完全自主创意。
※ 电子政务类的网站,如政府类网站;
※ 社交类网站,如天涯论坛(http://bbs.tianya.cn/)那样的网站;
※ 生活类网站,如点评网(http://www.dianping.com/)那样的网站;
※ 兴趣类网站,如摄影、旅游、读书网等内容的网站。
课程设计倡导创新和创意,具体类型和业务内容自定,题目自拟。对于有新意的题目和设计,在给定成绩时会给予加分。
二、开发环境要求:
(一)项目要求使用B/S结构,利用Java EE开发平台,实现一个B/S结构的分布式系统,并实现系统的各项功能,包括数据录入、修改、查询,交易过程等。
(二)要求使用JSF作为页面开发手段,请勿使用JSP页面。
(三)开发工具建议使用NetBeans或者Eclipse。
(四)建议使用Mysql作为数据库服务器,也可以使用JavaDB等其他数据库类产品作为数据库服务器。
三、性能要求:
项目应该至少实现以下的要求:
(一)界面要求:页面设计不必过于复杂,仅需实现一定程度的外观显示效果,要有比较好的用户交互功能页面,系统工作页面,内容展示页面。要求界面简洁美观、操作使用便利、提交响应迅速、功能实现流畅。
(二)功能要求:系统有关实现一定程度的功能,如系统登录功能,信息检索功能等。软件系统的设计架构和功能必须独立设计,杜绝抄袭。
(三)数据库要求:要有必要的信息数据库,能够实现对系统信息的存储、检索、修改等;必要时要有普通的用户信息数据库。
(四)工作量要求:课程设计应该达到一定的工作量,不能过于简单。
(五)网站运行所需要的其他功能,可选。
(六)开发组提出的具有创意的功能和页面内容,可选。
系统的内容可以到网络上适当下载,不必太多。
四、考核办法:
课程设计采用分组开发的方式,三人为一个设计小组,全班30人共计分成10个小组。
考核以小组为单位进行评价,针对每个小组的项目进行评分,小组的项目评分成绩即为小组各成员的课程开发设计成绩,根据个人在项目开发过程中的工作占比,在小组成绩基础上适当上下调整,最后确定成员的课程开发设计成绩。
最后一次课的14:00开始,答辩和演示程序,每个小组不超过10分钟。
答辩结束之后,各个小组需提交完整的项目代码和设计报告的电子版,同时提交设计报告的纸质版作为学院的课程考核凭证材料存档。
各个小组必须独立完成项目的开发设计工作,严禁抄袭。对于小组之间代码雷同率较高的,或者涉嫌抄袭的,有关小组的项目成绩都将以0分计。
五、评分标准:
完成项目设计的全部功能,达到项目的基本要求,可以得到90分;项目的设计或者页面设计有精彩发挥之处,酌情加分;未完成全部功能的,酌情减分。
六、设计报告:
请按照《〈Java EE企业级应用技术〉课程设计报告》的模板,由各个小组的组长认真填写。报告至少应该包括模板所列的各个部分,不能删减;可以根据设计开发过程,增添必要的部分。报告在打印时使用现有的格式,不要加封面。
吉林大学软件学院卓班设计模式一次练习
《大富翁》游戏的初步类图可如下:
其中菜单系统中各菜单可能如下:
请用面向对象语言和方法,编写一个控制台程序,主要实现菜单系统的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;
}
吉林大学软件学院卓班设计模式第一次作业
吉林大学软件学院卓班设计模式第一次作业
一. 使用分类稳定和变化的方法,重新设计类,使得新设计能以扩展代码的方式适应变化
未来可能会增加新的数据成员如mVal3, do1和do2中可能访问mVal1、mVal2、mVal3等
二. 按指定的要求或模式,给出实现。
1.
使用工厂方法模式实现工厂类。其中图书馆可能增加其他子类型,体育馆可可能增加具体子类。
2. 请用C++语言具体实现多线程中lazy式的单例模式(具体的锁机制,可任意)。
3. 若已知文科图书馆和理科图书馆各只有唯一一个,请参考课件中”多个单例类”,实现文科图书馆和理科图书馆的单例化。
4. 显然,一套场所组合对应一个工厂,请实现将各工厂也单例化。
5. 一个线程对象可以是多种状态(运行,空闲,挂起等),创建线程是非常耗资源的。线程池可以较好地避免频繁创建线程:一个线程池可以聚合N个线程(线程初始状态为空闲,N=10)。当客户申请线程时,从线程池中查找空闲的线程,找到后返回该线程;若没找到,返回异常。请用多例模式设计线程池类(ThreadPool)