0308软件体系结构实验报告

合集下载

软件设计模式与软件体系结构实验报告

软件设计模式与软件体系结构实验报告

软件设计模式与软件体系结构实验报告《软件体系结构》大作业(1)学院:软件学院课程名称:软件体系结构专业班级:学生姓名:学号:学生姓名:学号:指导教师:完成时间:年月日评分表1、叙述各小组成员完成本题目的分工协作情况。

小组中的每个成员都先理解题目要求及涉及的设计模式,并一起完成代码编写。

另外,组长负责文档制作。

2、评分表作业正文需要包括以下内容:1、作业题目内容的详细描述。

2、完成本题目所采用的软件设计模式名称及画出相应的类图,或者是所采用的软件体系结构名称及画出相应的体系结构图。

3、画出完成本题目所设计程序的设计类图;如还有其它图,也一并画出。

4、完成本题目所设计的程序代码。

5、程序运行的典型界面截图1、作业题目内容的详细描述。

【作业2.1-1】例2.3为使用工厂方法模式设计的汽车保险管理应用程序实例。

现在需要扩展例2.3的设计图,添加一个名为LuxuryCarInsurance 的类,而且需要编写此类和其它需要添加的类的代码,详细要求参见光盘的相应作业部分。

【作业 2.1-1】在例 2.4中,设计而且实现了豪华(Super)和中等(Medium)别墅(House)与公寓(Condo)的查询。

要求在该设计的基础上,增加一个新的类SemiDetacher(半独立式楼宇),而且编写代码,实现相应的查询功能,详细要求参见光盘的相应作业部分。

2、完成本题目所采用的软件设计模式名称及画出相应的类图,或者是所采用的软件体系结构名称及画出相应的体系结构图。

【作业2.1-1】采用的是工厂方法模式【作业2.1-2】采用的是抽象方法模式3、画出完成本题目所设计程序的设计类图;如还有其它图,也一并画出。

【作业2.1-1】采用的是工厂方法模式。

软件体系结构实验报告

软件体系结构实验报告

软件体系结构实验报告实验指导书实验一1、实验项目:软件体系结构设计(一)某系统C/S风格客户端软件体系结构设计2、实验目的:熟悉C/S风格的工作机制3、实验内容:针对某个应用系统,选用C/S风格作为这个系统的软件体系结构风格。

熟悉C/S风格的工作机制,对所考察的系统进行C/S风格客户端软件体系结构设计。

(针对不同的特定应用系统具体表述)实验二1、实验项目:软件体系结构设计(二)某系统C/S风格服务器软件体系结构设计2、实验目的:熟悉C/S风格的工作机制3、实验内容:针对某个应用系统,选用C/S风格作为这个系统的软件体系结构风格。

熟悉C/S风格的工作机制,对所考察的系统进行C/S风格服务器软件体系结构设计。

(针对不同的特定应用系统具体表述)实验三1、实验项目:UML建模某系统UML建模2、实验目的:深入理解UML建模的思想,熟悉UML建模方法3、实验内容:作为实际应用前的一种演练,深入理解UML建模的思想,熟悉UML建模方法,锻炼和培养分析问题、解决问题的能力。

针对某个选定的应用系统,对其进行用例建模、对象类建模和状态图建模。

实验四1、实验项目:某系统详细设计2、实验目的:细化前期设计的有关结果,做出软件的详细规格说明3、实验内容:详细设计(也叫过程设计)是软件设计的具体模块设计阶段,是在作为软件开发前期设计的体系结构设计和总体设计的基础上进行的。

目的是要细化前期设计的有关结果,做出软件的详细规格说明。

要求具体地设计目标系统给个模块的实现过程。

实验五1、实验项目:系统集成2、实验目的:系统集成与总结3、实验内容:综合考察前八次实验的内容,通盘考虑软件设计的整个过程,深入理解软件体系结构的构建过程教务管理系统序号名称基本属性1 教师教师号,姓名,性别,职称,出生日期,政治面貌,所属系部,身份证号,档案编号2 系部系部号,系部名称,办公地点,电话3 专业专业代号,专业名称,所属系部4 教室教室号,类型(语音室,实验室,多媒体教室,普通教室等),规格,管理员,备注5 课程课程号,课程名称,开课系部,课程简介6 学生学号,姓名,性别,班级,出生日期,籍贯,民族,政治面貌,身份证号,高考成绩,档案编号7 班级班级号,班级名称,专业,人数8 成绩学号,课程号,成绩,备注(缓考,补考,重修等)9 考试安排课程号,教程号,学生,时间10 评教/评学班级,教师,课程,评教分数,评学分数11 选课学号,课程号,教师号12 排课课程号,教师号,教室号,时间13 开课计划序号,专业代号,课程号,学期,学时,学分,课程性质(选修,必修),教学方式(普通教学,多媒体教学,户外教学等)要求:1.建立教务系统的需求分析模型,并声称需求分析报告;2.建立教务系统的业务流程模型;3.建立教务系统的概念数据模型;4.建立教务系统的物理数据模型(创建数据库,生成数据库);5.通过教务系统的物理数据模型生成面向对象模型(OOM),生成对应的JA V A或者C#代码;实验一里面可以用Adobe Dreamweaver或者VisualStudio2008或者以上版本描述相关的前台界面;实验二: 用以上的工具构建相关的后台界面;实验三: 用PowerDesigner设计该系统的需求分析和业务业务流程模型(BPM)实验四: 用PowerDesigner设计该系统的CDM和PDM实验五: 用PowerDesigner 设计该系统的OOM和对应的JA V A 或C#代码.附录1:实验报告模板实验一软件体系结构设计(一)某系统C/S风格客户端软件体系结构设计实验课程名:软件体系结构专业班级:学号:姓名:实验时间:实验地点:指导教师:说明:1.验证性实验报告填写好后,以学生的学号+实验项目名作为该word文件名保存,例如某学生学号为20080001,姓名为某某,本次实验名称是:实验1 线性表的实验,则本次实验报告的保存文件名为:01某某实验1.doc。

《软件体系结构》课程报告

《软件体系结构》课程报告

武汉工商学院****:**学号:********班级:14数据处理实验班****:**2017年 4月 27日目录1. 软件体系结构设计与应用概述 (1)1.1软件体系结构设计与应用现状 (1)1.2本系统使用的技术概述 (1)2. 软件体系结构分析 (3)2.1软件体系结构风格 (3)2.2“4+1”视图角度分析系统 (3)2.3用例图 (5)2.4类图 (6)2.5构件图 (9)2.6从技术角度分析实现的功能 (10)2.7从系统角度分析实现的功能 (10)3. 系统测试 (13)3.1登录注册测试 (13)3.2后台管理测试 (14)3.3前台用户操作测试 (16)总结 (18)参考文献 (19)1.软件体系结构设计与应用概述1.1软件体系结构设计与应用现状体系结构是以构件、构件之间的关系、构件与环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容设计与演化的原理。

比较上述各种体系结构的定义,可以发现,尽管各种定义都从不同的角度关注软件体系结构,研究对象各有侧重,但其核心内容都是软件系统的结构。

并且都涵盖了一些实体:构件、构件之间的交互关系、构件和连接件构成的拓扑结构、设计原理与指导方针。

同时,这些实体应该满足一定的限制,遵循一定的设计规则,能够在一定的环境下进行演化。

以这些实体为基础,软件休系结构能够从一个较高的层次上反映组成系统的构件、构件之间的交互,以及构件与构件交互所形成的拓扑结构。

而且,软件体系结构应能为体系系统开发中的重要设计决策,提供不同角度的视图,便于不同角色人员之间的交流。

软件在进化过程中,对系统的需求会不断发生变化,对于常用的软件体系结构,往往需同步对系统构架进行修改;而正交软件体系结构中,由于线索的正交性,每一个需求变动仅影响某一条线索,而不会涉及到其他线索。

这样,就把软件需求的变动局部化了,产生的影响也被限制在一定范围内,因此具有易于构建、便于开发与维护等优势。

软件体系结构实验一实验报告

软件体系结构实验一实验报告
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
if (!ProcessShellCommand(cmdInfo))
return FALSE;
// The one and only window has been initialized, so show and update it.
m_pMainWnd->ShowWindow(SW_SHOW);
ON_COMMAND(ID_FILE_PRINT_SETUP, CWinApp::OnFilePrintSetup)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
ON_COMMAND(ID_APP_ABOUT, OnAppAbout)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
#include "Hotel_MIS.h"
#include "MainFrm.h"
#include "Hotel_MISDoc.h"

【精品实验报告】软件体系结构设计模式实验报告

【精品实验报告】软件体系结构设计模式实验报告

【精品实验报告】软件体系结构设计模式实验报告软件体系结构设计模式实验报告学生姓名: 所在学院: 学生学号: 学生班级: 指导老师: 完成日期:一、实验目的熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的设计模式,包括组合模式、外观模式、代理模式、观察者模式和策略模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式,并学会分析这些模式的使用效果。

二、实验内容使用PowerDesigner和任意一种面向对象编程语言实现组合模式、外观模式、代理模式、观察者模式和策略模式,包括根据实例绘制模式结构图、编写模式实例实现代码,运行并测试模式实例代码。

(1) 组合模式使用组合模式设计一个杀毒软件(AntiVirus)的框架,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒,文件种类包括文本文件TextFile、图片文件ImageFile、视频文件VideoFile。

绘制类图并编程模拟实现。

(2) 组合模式某教育机构组织结构如下图所示:北京总部教务办公室湖南分校行政办公室教务办公室长沙教学点湘潭教学点行政办公室教务办公室行政办公室教务办公室行政办公室在该教育机构的OA系统中可以给各级办公室下发公文,现采用组合模式设计该机构的组织结构,绘制相应的类图并编程模拟实现,在客户端代码中模拟下发公文。

(注:可以定义一个办公室类为抽象叶子构件类,再将教务办公室和行政办公室作为其子类;可以定义一个教学机构类为抽象容器构件类,将总部、分校和教学点作为其子类。

)(3) 外观模式某系统需要提供一个文件加密模块,加密流程包括三个操作,分别是读取源文件、加密、保存加密之后的文件。

读取文件和保存文件使用流来实现,这三个操作相对独立,其业务代码封装在三个不同的类中。

现在需要提供一个统一的加密外观类,用户可以直接使用该加密外观类完成文件的读取、加密和保存三个操作,而不需要与每一个类进行交互,使用外观模式设计该加密模块,要求编程模拟实现。

0308软件体系结构实验报告

0308软件体系结构实验报告

河南工业大学实验报告(2015~2016学年-第2学期)课程名称:软件体系结构课程编号:51610192 地点:6313/6316/6308/6320一、实验目的:验证C/S风格的工作机制。

二、实验内容:针对某个应用系统,选用C/S风格作为这个系统的软件体系结构风格。

熟悉C/S风格的工作机制,对所考察的系统进行C/S风格客户端软件体系结构设计的验证。

(针对不同的特定应用系统具体表述)。

三.编程环境Windows 7Visual Studio | Dev-C++Eclipse四.实验代码1.画棋盘// 画横线for (int i = 0; i <= ROWS; i++) {g.drawLine(MARGIN, MARGIN + i * GRID_SPAN, MARGIN + COLS *GRID_SPAN, MARGIN + i * GRID_SPAN);}for (int i = 0; i <= COLS; i++) {// 画竖线g.drawLine(MARGIN + i * GRID_SPAN, MARGIN, MARGIN + i *GRID_SPAN, MARGIN + ROWS * GRID_SPAN);}2.将鼠标点击转为网格索引public void mouseMoved(MouseEvent e) {int x1 = (e.getX() - MARGIN + GRID_SPAN / 2) / GRID_SPAN;// 将鼠标点击的坐标位置转成网格索引int y1 = (e.getY() - MARGIN + GRID_SPAN / 2) / GRID_SPAN;if (x1 < 0 || x1 > ROWS || y1 < 0 || y1 > COLS || gameOver || findChess(x1, y1))setCursor(new Cursor(Cursor.DEFAULT_CURSOR));// 设置成默认状态elsesetCursor(new Cursor(Cursor.HAND_CURSOR));}3.增加棋子// ********************** 增加黑色棋子public Point[] BlackAddChess(int x, int y) {if (!isBlack) {String msg = String.format("黑子已经落子,轮到白子");JOptionPane.showMessageDialog(this, msg);return null;} elsereturn addChess(x, y);}// ********************** 增加白色棋子public Point[] WhiteAddChess(int x, int y) {if (isBlack) {String msg = String.format("白子已经落子,轮到黑子");JOptionPane.showMessageDialog(this, msg);return null;} elsereturn addChess(x, y);}4.悔棋public void goback() {if (chessCount == 0)return;chessList[chessCount - 1] = null;chessCount--;if (chessCount > 0) {xIndex = chessList[chessCount - 1].getX();yIndex = chessList[chessCount - 1].getY();}isBlack = !isBlack;repaint();}5.判断输赢(提供横向向西判断,其余方向类似)private boolean isWin() {int continueCount = 1;// 连续棋子的个数// --------------横向寻找-----> 横向向西寻找for (int x = xIndex - 1; x >= 0; x--) {Color c = isBlack ? Color.black : Color.white;if (getChess(x, yIndex, c) != null) {continueCount++;} elsebreak;}}五.实验结果悔棋前:悔棋后:赢棋:河南工业大学实验报告(2015~2016学年-第2学期)课程名称:软件体系结构课程编号:51610192 地点:6313/6316/6308/6320一、实验目的:验证C/S风格的工作机制。

软件设计与体系结构实验报告(实验总结)(总结报告范文模板)

软件设计与体系结构实验报告(实验总结)(总结报告范文模板)

软件设计与体系结构实验报告(实验总结)(总结报告范⽂模板)软件设计与体系结构实验报告课程名称:姓名:系:专业:年级:学号:指导教师:职称:⼆〇⼀四年X⽉X⽇实验项⽬列表软件设计与体系结构实验报告学院:XXXXXXXX专业:XXXXXXXX年级:XXXXXXXX姓名:XXXXXXXX学号:XXXXXXXX课程名称:XXXXXXXX实验时间:XXXXXXXX实验室:XXXXXXXX计算机号:XXXXXXXX指导教师:XXXXXXXX成绩:XXXXXXXX实验1:ACME软件体系结构描述语⾔应⽤⼀、实验⽬的1)掌握软件体系结构描述的概念2)掌握应⽤ACMESTUDIO⼯具描述软件体系结构的基本操作⼆、实验学时2学时。

三、实验⽅法由⽼师提供软件体系结构图形样板供学⽣参考,学⽣在样板的指导下修改图形,在⽼师的指导下进⾏软件体系结构描述。

四、实验环境计算机及ACMESTUDIO。

五、实验内容利⽤ACME语⾔定义软件体系结构风格,修改ACME代码,并进⾏风格测试。

六、实验操作步骤⼀、导⼊Zip⽂档建⽴的⼀个Acme Project,并且命名为AcmeLab2。

如下图:接着导⼊ZIP⽂档,导⼊完ZIP⽂档后显⽰的如下图:⼆、修改风格在AcmeLab2项⽬中,打开families下的TieredFam.acme.如下图:修改组件外观1. 在组件类型中,双击DataNodeT; 在其右边的编辑器中,将产⽣预览;选择Modify按钮,将打开外观编辑器对话框。

2. ⾸先改变图形:找到Basic shape section,在Stock image dropdown menu中选择Repository类型.3. 在Color/Line Properties section修改填充颜⾊为深蓝⾊。

4. 在颜⾊对话框中选择深蓝⾊,并单击 [OK].5. 修改图形的边框颜⾊为绿⾊7. 单击Label tab,在Font Settings section, 设置字体颜⾊为⽩⾊,单击[OK]产⽣的图形如下图:添加新元素类型1. 在Component Types section选择New按钮2. 在对话框中,类型名称输⼊LogicNodeT .3. 选择TierNodeT 为⽗类型.4. 单击 [Finish].5. 按照修改外观的步骤,修改LogicNodeT的外观:填充颜⾊为浅绿⾊,边框颜⾊为⿊⾊,⼤⼩为2,其他默认。

软件体系结构研究报告

软件体系结构研究报告

软件体系结构研究报告软件体系结构是指软件系统中各个组件之间的关系和交互方式,它是软件开发过程中的重要环节。

本文将对软件体系结构的研究进行分析和总结。

软件体系结构的研究旨在设计一个符合系统需求的结构框架,以便于软件系统的开发和维护。

软件体系结构研究的主要内容包括:系统需求分析、软件架构设计、模块划分和数据流程等。

首先,系统需求分析是软件体系结构研究的基础。

通过对系统需求的分析,可以确定系统的功能、性能、安全等要求,从而为软件架构设计提供指导。

其次,软件架构设计是软件体系结构研究的核心。

软件架构设计是指在系统需求的基础上,根据系统性能、可靠性等因素,设计出系统的组件、接口和关系。

常见的软件架构设计模式有层次结构、管道-过滤器、客户端-服务器等。

接着,模块划分是软件体系结构研究的关键。

模块划分是将系统拆解成多个模块,每个模块负责特定的功能。

模块划分可以按照功能划分、数据划分等多种方式进行。

合理的模块划分可以提高系统的可维护性和可复用性。

最后,数据流程是软件体系结构研究的重要内容。

数据流程是指系统中数据的流动方式和路径。

合理的数据流程可以提高系统的效率和响应速度。

在软件体系结构的研究中,还需要考虑系统的可扩展性、可移植性和安全性等因素。

可扩展性是指系统的容量和性能可以随着需求的增加而增加。

可移植性是指系统可以在不同的平台和环境下运行。

安全性是指系统能够保护用户的隐私信息,防止数据泄露和攻击。

综上所述,软件体系结构研究是软件开发过程中的重要环节,它可以帮助系统设计者设计出符合需求的软件系统。

通过对系统需求的分析、软件架构的设计、模块的划分和数据流程的设计,可以提高软件系统的可维护性、可复用性和可靠性。

软件体系结构研究还需要关注系统的可扩展性、可移植性和安全性等因素,以提高软件系统的性能和安全性。

总之,软件体系结构研究对于软件开发和系统维护都具有重要意义。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

河南工业大学实验报告(2015~2016学年-第2学期)课程名称:软件体系结构课程编号:51610192 地点:6313/6316/6308/6320一、实验目的:验证C/S风格的工作机制。

二、实验内容:针对某个应用系统,选用C/S风格作为这个系统的软件体系结构风格。

熟悉C/S风格的工作机制,对所考察的系统进行C/S风格客户端软件体系结构设计的验证。

(针对不同的特定应用系统具体表述)。

三.编程环境Windows 7Visual Studio | Dev-C++Eclipse四.实验代码1.画棋盘// 画横线for (int i = 0; i <= ROWS; i++) {g.drawLine(MARGIN, MARGIN + i * GRID_SPAN, MARGIN + COLS *GRID_SPAN, MARGIN + i * GRID_SPAN);}for (int i = 0; i <= COLS; i++) {// 画竖线g.drawLine(MARGIN + i * GRID_SPAN, MARGIN, MARGIN + i *GRID_SPAN, MARGIN + ROWS * GRID_SPAN);}2.将鼠标点击转为网格索引public void mouseMoved(MouseEvent e) {int x1 = (e.getX() - MARGIN + GRID_SPAN / 2) / GRID_SPAN;// 将鼠标点击的坐标位置转成网格索引int y1 = (e.getY() - MARGIN + GRID_SPAN / 2) / GRID_SPAN;if (x1 < 0 || x1 > ROWS || y1 < 0 || y1 > COLS || gameOver || findChess(x1, y1))setCursor(new Cursor(Cursor.DEFAULT_CURSOR));// 设置成默认状态elsesetCursor(new Cursor(Cursor.HAND_CURSOR));}3.增加棋子// ********************** 增加黑色棋子public Point[] BlackAddChess(int x, int y) {if (!isBlack) {String msg = String.format("黑子已经落子,轮到白子");JOptionPane.showMessageDialog(this, msg);return null;} elsereturn addChess(x, y);}// ********************** 增加白色棋子public Point[] WhiteAddChess(int x, int y) {if (isBlack) {String msg = String.format("白子已经落子,轮到黑子");JOptionPane.showMessageDialog(this, msg);return null;} elsereturn addChess(x, y);}4.悔棋public void goback() {if (chessCount == 0)return;chessList[chessCount - 1] = null;chessCount--;if (chessCount > 0) {xIndex = chessList[chessCount - 1].getX();yIndex = chessList[chessCount - 1].getY();}isBlack = !isBlack;repaint();}5.判断输赢(提供横向向西判断,其余方向类似)private boolean isWin() {int continueCount = 1;// 连续棋子的个数// --------------横向寻找-----> 横向向西寻找for (int x = xIndex - 1; x >= 0; x--) {Color c = isBlack ? Color.black : Color.white;if (getChess(x, yIndex, c) != null) {continueCount++;} elsebreak;}}五.实验结果悔棋前:悔棋后:赢棋:河南工业大学实验报告(2015~2016学年-第2学期)课程名称:软件体系结构课程编号:51610192 地点:6313/6316/6308/6320一、实验目的:验证C/S风格的工作机制。

二、实验内容:针对某个应用系统,选用C/S风格作为这个系统的软件体系结构风格。

熟悉C/S风格的工作机制,对所考察的系统进行C/S风格服务器软件体系结构设计的验证。

(针对不同的特定应用系统具体表述)。

三.编程环境Windows 7Visual Studio | Dev-C++Eclipse四.实验代码1. public Point WhiteNextStep(Point[] chessList){}:根据当前棋局,确定白子的下一个最佳位置public Point WhiteNextStep(Point[] chessList) {ArrayList<ArrayList<Point>> NextPoint = NextCandidatedPoints(chessList);ArrayList<Point> blackList = NextPoint.get(0);ArrayList<Point> whiteList = NextPoint.get(1);int blackLongnum = findTheLongestChessNums(blackList.get(0), chessList);int whiteLongnum = findTheLongestChessNums(whiteList.get(0), chessList);if (whiteLongnum < blackLongnum) {// 白的的连子数比黑子要少,就从黑子的候选结点中选择评价函数最高的结点ArrayList<Point> candicatedPoint = PointEvalution(blackList, chessList, blackLongnum);if (candicatedPoint.size() == 1)return candicatedPoint.get(0);else {// 从候选结点中随机选取int size = candicatedPoint.size();Random rand = new Random();int Index = rand.nextInt(size);return candicatedPoint.get(Index);}} else {// 白子连子数比黑子多,则从自己的候选结点中选择ArrayList<Point> candicatedPoint = PointEvalution(whiteList, chessList, whiteLongnum);if (candicatedPoint.size() == 1)return candicatedPoint.get(0);else {// 从候选结点中随机选取int size = candicatedPoint.size();Random rand = new Random();int Index = rand.nextInt(size);return candicatedPoint.get(Index);}}}2.public Point BlackNextStep(Point[] chesslistB){}:根据当前棋局,确定黑子的下一个最佳位置几乎和上面的一样略3. public Point BlackNextStep(Point[] chesslistB){}:根据当前棋局,找到使棋子最大的连子的位置public int findTheLongestChessNums(Point p, Point[] chesslist) {int longLength = 0;// 1. 横向寻找int longLineLength = lineSearch(p, chesslist);// 2. 纵向寻找int longColLength = rowSearch(p, chesslist);// 3. 右上角寻找int LongRightUpLength = rightupSearch(p, chesslist);// 4. 左上角寻找int LongLeftUpLength = leftupSearch(p, chesslist);// get the maxif (longLineLength >= longColLength)longLength = longLineLength;elselongLength = longColLength;if (LongRightUpLength >= longLength)longLength = LongRightUpLength;if (LongLeftUpLength >= longLength)longLength = LongLeftUpLength;return longLength;}4. public boolean findNeedPoint(int xIndex, int yIndex, Color c, Point[] chesslist){}:能够找到对应的坐标的棋子public boolean findNeedPoint(int xIndex, int yIndex, Color c, Point[] chesslist) { for (Point p : chesslist)if (p != null && xIndex == p.getX() && yIndex == p.getY() && c ==p.getColor())return true;return false;}5. public int numsofthelongchess(Point p, Point[] chesslist, int longnum){}:给定的棋子位置最长连子数的个数public int numsofthelongchess(Point p, Point[] chesslist, int longnum) { int nums = 0;if (lineSearch(p, chesslist) == longnum)nums++;if (rowSearch(p, chesslist) == longnum)nums++;if (rightupSearch(p, chesslist) == longnum)nums++;if (leftupSearch(p, chesslist) == longnum)nums++;return nums;}6. public int lineSearch(Point p, Point[] chesslist){}:根据当前棋子位置,直线搜索连子的数目7. `public int rowSearch(Point p, Point[] chesslist){}`:根据当前棋子位置,垂直搜索连子的数目8. public int rightupSearch(Point p, Point[] chesslist){}`:根据当前棋子位置,右上搜索连子的数目9. public int leftupSearch(Point p, Point[] chesslist){}`:根据当前棋子位置,左上搜索连子的数目注意:左上就包括左下在代码中体现public int rightupSearch(Point p, Point[] chesslist) {int LongRightUpLength = 1;for (int x = p.getX() + 1, y = p.getY() - 1; x <= ChessBoard.COLS && y >= 0;x++, y--) {if (findNeedPoint(x, y, p.getColor(), chesslist))LongRightUpLength++;elsebreak;}for (int x = p.getX() - 1, y = p.getY() + 1; x >= 0 && y <= ChessBoard.ROWS; x--, y++) {if (findNeedPoint(x, y, p.getColor(), chesslist))LongRightUpLength++;elsebreak;}return LongRightUpLength;}10. public void computerVscomputer(ChessBoard chessboard){}`:电脑自动对弈函数实现public void computerVscomputer(ChessBoard chessboard) {boolean flag = true;while (true && chessboard.GetMode() == 2) {// 黑子落Point NextStep;int stepx, stepy;Point[] chesslist = chessboard.getChesslist();if (flag) {chesslist = chessboard.BlackAddChess(chessboard.ROWS / 2, chessboard.COLS / 2);flag = false;} else {NextStep = BlackNextStep(chesslist);stepx = NextStep.getX();stepy = NextStep.getY();chesslist = chessboard.BlackAddChess(stepx, stepy);try {Thread.sleep(1000);} catch (Exception e) {System.out.println("thread error");}}// 白子落NextStep = WhiteNextStep(chesslist);stepx = NextStep.getX();stepy = NextStep.getY();chesslist = chessboard.WhiteAddChess(stepx, stepy);try {Thread.sleep(1000);} catch (Exception e) {System.out.println("thread error");}}}}11. 人机或电脑之间对弈时,需要开启新的线程,这段代码在棋盘类中public void run() {// 机机模式if (this.Mode == 2) {ChessStrategy chessStrategy = new ChessStrategy();puterVscomputer(this);}// 人机模式if (this.Mode == 1) {ChessStrategy chessStrategy = new ChessStrategy();Point t;while (!this.gameOver && this.Mode == 1) {System.out.println("5");if (!this.isBlack) {t = chessStrategy.WhiteNextStep(this.getChesslist());WhiteAddChess(t.getX(), t.getY());}}}}五.实验结果人机对弈人机对弈人执黑子先下,电脑执白子,如图,黑子连子数为3有两条时,电脑白子策略错误(红框白子为电脑下棋位置)人机对弈黑子连子数为3,但是靠近棋盘边界,白子策略错误(红框白子为电脑下棋位置电脑对弈电脑对弈控制台信息河南工业大学实验报告(2015~2016学年-第2学期)课程名称:软件体系结构课程编号:51610192 地点:6313/6316/6308/6320一、实验目的:深入理解UML建模的思想,熟悉UML建模方法。

相关文档
最新文档