1、 1 第一章第一章 问题背景问题背景 约瑟夫生死游戏是一款生死抉择的游戏,由于某种原因,需要在一群人中踢 出一部分人,被踢出的人将会面临死亡的威胁,因此大家都不想成为那个被踢除 的那个人,但是又必须踢出一些人才能保证其他人的安全,你的位置会影响你的 生死,所以位置的选择很重要。 2 第二章第二章 系统分析系统分析 2.12.1 系统总需求系统总需求 如果有 r r 个人,需要剔除 w 个人,让他们围成一个圈,由第一个人数起,依 次报数,数到第 s 个人,便把他剔除,然后再从他的下一个人数起,数到第 s 个人,再将他剔除,直至剔除了 w 个人时停止,没剔除的则生还。 2.2 2.2 功能需求功能
2、需求 约瑟夫生死游戏能够精确的找到死亡者的位置,并且能够灵活的确定剔除 第几个人,以及要剔除多少人,并且能够对很多人的情况下迅速确定生者和死者 的位置。 整个游戏主要分为几个模块:队列初始化,入队,查找死亡位置,排序,生 者位置的确定,输出死者位置。 队列初始化:对队列中每个人进行初始化。 入队:对每个人进行赋值,并且进行入队操作。 查找死亡位置:通过一控制块控制入队,出队,从而找到死亡位置,并且把 死亡位置保存到数组。 排序:把死亡位置按从小到大进行排序,以便观看结果。 生者位置的确定:通过已经确定的死亡位置来确定生者位置,并对生者位置 进行输出。 输出死者位置:对已排序的死亡位置进行输出。
3、 2.3 2.3 数据需求数据需求 第 i 个人员信息=i-1; 总人数; 踢除第几个人; 剔除人数; 3 第三章 系统设计 3.1 3.1 系统体系结构系统体系结构 约瑟夫生死游戏通过通过一控制块控制入队,出队,找到死亡位置,从 而确定生者位置。主要包括确定死亡位置和确定生者位置。约瑟夫的软件结构如 图 3.1 所示。 3.23.2 各子功能模块设计各子功能模块设计 3.2.13.2.1 确定死亡位置确定死亡位置 (1)功能:通过通过一控制块控制入队,出队,找到死亡位置,并保存死亡位 置。 (2)程序流程图:约瑟夫生死游戏的程序流程图如图 3.2 所示。 约瑟夫生死游 戏 确定死亡位 置 确
4、定生者位 置 图 3.1 系统结构 4 3.33.3 数据结构设计数据结构设计 3.3.13.3.1 员工信息员工信息 数据结构设计人员信息 包括每个人员位置对应的值,以及队头,队尾的位置。 typedef struct DATATYPE datamaxsize;/队中元素 int front,rear; /队头元素下标、队尾元素后面位置的下标 SEQQUEUE; 开始 剔除人数是否小 于总死亡数 是 剔除人数加 一 入队,出队控制块 符合 进行入队, 出队操作 剔除,并保存 剔除的位置 结束 否 图 3.2 确定死亡位置 进行 判断 5 第四章第四章 系统系统实现实现 4.14.1 人机交互部件人机交互部件 本系统的一个重要特点就是系统启动之后, 同时显示主窗口, 主窗口为可用, 必须在主窗口中进行赋值才可运行。 输入与显示为: 主要代码为: /队列的插入 for(i=0;i=r-1;i+) temp=i; QueueIn( /找出死亡位置,并保存到数组 pm fo