没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论














软件体系结构第一次作业
(2023-2024 学年第一学期)
结档日期:2023 年 9 月 26 日
第 6 版
课 程 名 称 :
软件体系结构
学生姓名:
李*博
学生学号:
2021****0749
学生专业:
软件工程
开 课 学 期 :
2023-2024 学年第一学期
软件学院
2023 年 9 月

目录
一、 项目介绍 ................................................................................................................................3
(一) 项目目标: ....................................................................................................................3
(二) 实现方式:C++(C11 标准)........................................................................................3
(三) 项目架构: ....................................................................................................................3
1. 整体框架: ..............................................................................................................3
2. 头文件(Header Files):...................................................................................3
3. 源文件(Source Files):...................................................................................3
4. 库函数(Library Functions):.........................................................................4
5. 主函数(Main Function):程序入口,执行最上层逻辑。 .............................4
6. 输入文件 ..................................................................................................................4
二、 关键代码解析(分析与设计).............................................................................................4
(一) 整体框架 ........................................................................................................................4
1. 概要 ..........................................................................................................................4
2. main(主程序)数据流分析:...............................................................................4
(二) 管道/过滤器风格 ..........................................................................................................5
1. 整体分析 ..................................................................................................................5
2. 类分析 ......................................................................................................................5
3. 数据流分析 ..............................................................................................................6
4. 核心代码分析 ..........................................................................................................7
(三) 调用/返回风格 ..............................................................................................................8
1. 整体分析 ..................................................................................................................8
2. 类分析 ......................................................................................................................8
3. 数据流分析 ..............................................................................................................9
4. 核心代码分析 ..........................................................................................................9
(四) 回溯法 ..........................................................................................................................11
1. 整体分析 ................................................................................................................11
2. 类分析 ....................................................................................................................11
3. 数据流分析 ............................................................................................................11
4. 核心代码分析 ........................................................................................................12
(五) 黑板风格 ......................................................................................................................14
1. 整体分析 ................................................................................................................14
2. 类分析 ....................................................................................................................14
3. 数据流分析 ............................................................................................................14
4. 核心代码分析 ........................................................................................................15
三、 代码实现的运行结果 ..........................................................................................................16
(一) 测试文本(test.txt)输入数据规模.......................................................................16
(二) 程序运行结果 ..............................................................................................................17
(三) 数据结果(result.txt)...........................................................................................17
(四) 可视化 ..........................................................................................................................17
(五) 数据分析 ......................................................................................................................18
四、 性能分析 ..............................................................................................................................18
(一) 管道/过滤器风格 ........................................................................................................19

(二) 调用/返回风格 ............................................................................................................19
(三) 回溯法 ..........................................................................................................................19
(四) 黑板风格 ......................................................................................................................19
五、 代码优化 ..............................................................................................................................20
(一) 过滤器进一步优化(将情况判断优化为 2 个小过滤器) .......................................20
(二) 使用位运算优化回溯法...............................................................................................21
(三) 减半优化 ......................................................................................................................22
(四) 压缩排列树(剪枝) ..................................................................................................22
(五) 优化性能分析 ..............................................................................................................25
六、 类图展示 ..............................................................................................................................26
(一) 管道/过滤器风格 ........................................................................................................26
(二) 调用/返回风格 ............................................................................................................27
(三) 回溯法 ..........................................................................................................................27
(四) 黑板风格 ......................................................................................................................28
七、 分工与心得体会 ..................................................................................................................29
八、 实验总结 ..............................................................................................................................31

N 皇后问题
李*博(2021****0749)
一、项目介绍
(一) 项目目标:
1. 请分别使用管道/过滤器风格、调用/返回风格、回溯法和黑板风格(JavaSpace 或自定
义黑板结构)4 种方法分别实现 N 皇后问题;
2. 比较 4 种实现方案的性能;
3. 清晰描述问题解决的过程,包括分析、设计、实现与优化;
4. 以类图描述设计结果。
(二) 实现方式:C++(C11 标准)
(三) 项目架构:
1. 整体框架:
对于 C++项目来说,整个项目采用分离式编程的编程实践,以便代码的组织、可维护性和可
扩展性,为后续功能拓展与性能完善打好基础。
为便于实现任务目标,方便检查(除了所需的头文件、库文件之外,要求代码放在一个文件
中;)我们还提供了另一种编程实践——单一文件编码风格,所有代码均保存在 project.cpp
文件中,以便检查运行。
2. 头文件(Header Files):
①BackTracking.h
②BlackBoard.h
③CallAndReturn.h
④PipeAndFilter.h
3. 源文件(Source Files):
①BackTracking.cpp
②BlackBoard.cpp
③CallAndReturn.cpp
④PipeAndFilter.cpp

4. 库函数(Library Functions):
①#include <iostream>
②#include<string>
③#include<fstream>
④#include <sstream>
⑤#include<vector>
⑥#include<ctime>
5. 主函数(Main Function):程序入口,执行最上层逻辑。
①main.cpp
6. 输入文件
①test.txt
二、关键代码解析(分析与设计)
(一) 整体框架
1. 概要
main.cpp:这是项目的入口文件,其中包含了程序的主函数。在这个文件中,有以下操作:
读取输入数据:从文件中读取测试数据;测试四种不同风格的 N 皇后问题求解方法的性能;
打印测试结果:输出每种风格的解和运行时间。
函数 SpeedTest:这个函数用于测试不同风格的 N 皇后问题求解方法的性能。它接受一个函
数指针作为参数,该函数指针指向一个特定风格的求解方法,然后测量该方法的执行时间。
函数 PrintResult 和 PrintTime:这两个函数用于打印测试结果和测试时间。
函数 ReadDataFromText:这个函数用于从文本文件中读取测试数据。
2. main(主程序)数据流分析:
主程序的数据流包括了读取数据、调用算法函数、存储结果和运行时间,以及最后的结果打
印。这使得程序能够比较不同算法在不同规模问题上的性能表现。
读取数据:
在主程序的开头,通过 ReadDataFormText 函数从文本文件中读取整数数据。这个数据表示
不同规模的 N 皇后问题,将在后续的测试中使用。
调用算法函数:
对于每个读取的整数(不同规模的问题),主程序会调用四种不同算法的函数来求解 N 皇后
剩余31页未读,继续阅读
资源评论



花工靴子
- 粉丝: 3
- 资源: 2
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
