《F4+2团队项目系统设计改进》

1引言

1.1编写目的

1.2背景

1.3定义

1.4参考资料

2总体设计

2.1需求规定

2.2运行环境

2.3基本设计概念和处理流程

2.4结构

2.5功能器求与程序的关系

2.6人工处理过程

2.7尚未问决的问题

3接口设计

3.1用户接口

3.2外部接口

3.3内部接口

4运行设计

4.1运行模块组合

4.2运行控制

4.3运行时间

5系统数据结构设计

5.1逻辑结构设计要点

5.2物理结构设计要点

5.3数据结构与程序的关系

6系统出错处理设计

6.1出错信息

6.2补救措施

6.3系统维护设计

项目软件系统设计改进

1引言

1.1编写目的

本阶段完成系统的大致设计并明确系统的数据结构与软件结构。本概要设计说明书的目的就是进一步细化软件设计阶段得出的软件概貌,把它加工成在程序细节上非常接近与源程序开发的软件表示。

预期读者:软件测试员、程序开发员、软件分析员

1.2背景

说明:

a.       待开发软件系统的名称;动态的太阳系模型

b.       列出此项目的任务提出者、开发者、用户以及将运行该软件的计算站(中心)。

项目任务提出者:马仲山

项目任务开发者:马仲山,马绍辉,马世芳,张俊逸,马婧,马婧

用户:初一学生

实现该软件的计算机网络:校园网

1.3定义

逻辑结构:简称数据结构,用来实现用户观点的系统结构的表示。

管理员:系统的最高级权限的用户

1.4参考资料

《软件工程导论》 张海潘 牟永敏 编著 清华大学出版社

 

2总体设计

2.1需求规定

第一:系统是单用户的,这里的单用户是指不需要用户名和密码,用户进入系统可以直接对系统进行操作。第二:系统有多视角。第三:太阳系是可以放大、缩小的,并且保证放大、缩小后行星照样能正确地运行。第四:有专门的初始化工具。第五:有对应的工具按钮。

系统为模拟系统,外观要逼真才比较好,所以我们需要从网上下载关于行星的图片,这样看起来比较逼真。真实的太阳系是三维空间的,不同的视角下观看的结果是不一样的,所以在系统要实现从两种视角来观看太阳系,分别为俯视和侧视。这两种视角看到太阳系的感觉是完全不一样的。选定了一种视角后就可以在这种视角下观看太阳系各行星的运行,当然也可以放大,缩小,左(右,上,下)移动整个太阳系,在太阳系运行过程中,当然也可以暂停行星的运行,使太阳系处于静止状态,再次点击运行,行星会接着动起来。如果想回到最初的状态,也可以点一下复原按钮,整个太阳系又回到了此视角下的最初始的状态。如果想换个视角来看太阳系,直接点击你想要的视角的按钮,这两种视角下可以行使的功能是一样的。根据功能的划分,我们将系统划分为以下9个功能模块和两大界面,以及在工具栏上设置工具按钮。

2.2运行环境

操作系统在windowXP以上

客户端要配备JDK和SQL等应用开发软件

2.3基本设计概念和处理流程

2.4结构

2.5功能器求与程序的关系

本条用一张如下的矩阵图说明各项功能需求的实现同各块程序的分配关系:


教师模块


学生模块


单用户




多视角




任意放大缩小



初始化工具


2.6人工处理过程

需要时刻的备份数据,以上不可抗拒因素导致数据的丢失。

3接口设计

3.1用户接口

应用程序接口是一组定义、程序及协议集合,通过API 接口实现计算机软件之间的相互通信。目前主流API 接口的有SGI 开发的OpenGL和微软开发的DirectX。两者分别有各自的优势,OpenGL可跨平台使用, 具有高度移植性并且是最为广泛使用的2D/3D 图形 API。DirectX 仅局限于Windows平台,常应用于游戏领域,除了具有图形API,另还有声音、输入、网络等API 接口。本系统中仅用到图形API 接口,同时需要考虑仿真系统跨平台后的适用性,因此本系统最终选择OpenGL 图形库接口。

3.2外部接口

暂无

3.3内部接口

程序内的各个模块之间采用函数调用、参数传递、返回值得方式进行信息传递。

4运行设计

4.1运行模块组合

我们将行星的运动放在辅线程中,若需让行星运行的时候创建辅线程,若想让运动的行星暂停下来则只需撤销辅线程。若要保证行星在运行的时候准确地在轨道上,那么就要不停的计算下个时刻行星位置的坐标,轨道是个椭圆,我们可以有现成的数学公式用来计算,但是放在或缩小或平移后椭圆参数会发生变化,此时我们就需要让各参数加上或减去一些值,保证在轨道发生改变后那些行星依然找得到自己的路。

4.2运行控制

运动控制作为系统基础功能,通过模型变换控制天体位置、天体自转及公转速度以实现天体运动的效果。为增加系统的生动性及真实感,在每个场景中均表现出天体运动场景。

动画演示模块

(1)    公转自转动画模块:点击按钮,观看公转自转教学演示动画。

(2)    行星介绍动画模块:点击按钮,观看行星介绍教学演示动画。

(3)    配音及背景音乐模块:配音辅助学生理解记忆。

4.3运行时间

24小时都可运行

5系统数据结构设计

5.1逻辑结构设计要点

给出本系统内所使用的每个数据结构的名称、标识符以及它们之中每个数据项、记录、文卷和系的标识、定义、长度及它们之间的层次的或表格的相互关系。

5.2物理结构设计要点

(1)八大行星围绕太阳的公转。

(2)八大行星和太阳的自转。

(3)个性化的人工界面。

5.3数据结构与程序的关系

通过在数据库内建立主外键来关联这些数据。

6系统出错处理设计

6.1出错信息


错误类型


错误提示


输入信息不合法


输入信息不正确,请再次输入


程序运行错误


给予相应的出错提示

6.2补救措施

a.当出现断电或者电脑出现故障(死机、蓝屏)的话,可以通过以前备份的形式对数据进行回复。

b.当用户需要在此增加功能的时候,可以通过在原系统的基础上进行扩充。

6.3系统维护设计

1)在数据库设计的时候,学生信息与学生上机、学生充值、学生退卡记录都不在一个表中,防止信息删除或更新的时候,信息的不一致重叠罗嗦。

2)在程序内部通过建立模块,不同窗体调用一个模块的形式进行设计,减少了代码的操作量,提高了运行的速度。

原文地址:https://www.cnblogs.com/cnboke/p/9142636.html

时间: 2024-08-04 20:56:11

《F4+2团队项目系统设计改进》的相关文章

CI框架源码阅读笔记3 全局函数Common.php

从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap引导文件都会最先引入全局函数,以便于之后的处理工作). 打开Common.php中,第一行代码就非常诡异: if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 上一篇(CI框架源码阅读笔记2 一切的入口 index

IOS测试框架之:athrun的InstrumentDriver源码阅读笔记

athrun的InstrumentDriver源码阅读笔记 作者:唯一 athrun是淘宝的开源测试项目,InstrumentDriver是ios端的实现,之前在公司项目中用过这个框架,没有深入了解,现在回来记录下. 官方介绍:http://code.taobao.org/p/athrun/wiki/instrumentDriver/ 优点:这个框架是对UIAutomation的java实现,在代码提示.用例维护方面比UIAutomation强多了,借junit4的光,我们可以通过junit4的

Yii源码阅读笔记 - 日志组件

?使用 Yii框架为开发者提供两个静态方法进行日志记录: Yii::log($message, $level, $category);Yii::trace($message, $category); 两者的区别在于后者依赖于应用开启调试模式,即定义常量YII_DEBUG: defined('YII_DEBUG') or define('YII_DEBUG', true); Yii::log方法的调用需要指定message的level和category.category是格式为“xxx.yyy.z

源码阅读笔记 - 1 MSVC2015中的std::sort

大约寒假开始的时候我就已经把std::sort的源码阅读完毕并理解其中的做法了,到了寒假结尾,姑且把它写出来 这是我的第一篇源码阅读笔记,以后会发更多的,包括算法和库实现,源码会按照我自己的代码风格格式化,去掉或者展开用于条件编译或者debug检查的宏,依重要程度重新排序函数,但是不会改变命名方式(虽然MSVC的STL命名实在是我不能接受的那种),对于代码块的解释会在代码块前(上面)用注释标明. template<class _RanIt, class _Diff, class _Pr> in

CI框架源码阅读笔记5 基准测试 BenchMark.php

上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功能,各模块之间可以相互调用,共同构成了CI的核心骨架. 从本篇开始,将进一步去分析各组件的实现细节,深入CI核心的黑盒内部(研究之后,其实就应该是白盒了,仅仅对于应用来说,它应该算是黑盒),从而更好的去认识.把握这个框架. 按照惯例,在开始之前,我们贴上CI中不完全的核心组件图: 由于BenchMa

CI框架源码阅读笔记2 一切的入口 index.php

上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里这次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中,我们并不会逐行进行解释,而只解释核心的功能和实现. 1.       设置应用程序环境 define('ENVIRONMENT', 'development'); 这里的development可以是任何你喜欢的环境名称(比如dev,再如test),相对应的,你要在下面的switch case代码块中

Apache Storm源码阅读笔记

欢迎转载,转载请注明出处. 楔子 自从建了Spark交流的QQ群之后,热情加入的同学不少,大家不仅对Spark很热衷对于Storm也是充满好奇.大家都提到一个问题就是有关storm内部实现机理的资料比较少,理解起来非常费劲. 尽管自己也陆续对storm的源码走读发表了一些博文,当时写的时候比较匆忙,有时候衔接的不是太好,此番做了一些整理,主要是针对TridentTopology部分,修改过的内容采用pdf格式发布,方便打印. 文章中有些内容的理解得益于徐明明和fxjwind两位的指点,非常感谢.

CI框架源码阅读笔记4 引导文件CodeIgniter.php

到了这里,终于进入CI框架的核心了.既然是"引导"文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.com/usr/reg 经过引导文件,实际上会交给Application中的UsrController控制器的reg方法去处理. 这之中,CodeIgniter.php做了哪些工作?我们一步步来看. 1.    导入预定义常量.框架环境初始化 之前的一篇博客(CI框架源码阅读笔记2 一切的入

jdk源码阅读笔记之java集合框架(二)(ArrayList)

关于ArrayList的分析,会从且仅从其添加(add)与删除(remove)方法入手. ArrayList类定义: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Monaco } span.s1 { color: #931a68 } public class ArrayList<E> extends AbstractList<E> implements List<E> ArrayList基本属性: /** *

dubbo源码阅读笔记--服务调用时序

上接dubbo源码阅读笔记--暴露服务时序,继续梳理服务调用时序,下图右面红线流程. 整理了调用时序图 分为3步,connect,decode,invoke. 连接 AllChannelHandler.connected(Channel) line: 38 HeartbeatHandler.connected(Channel) line: 47 MultiMessageHandler(AbstractChannelHandlerDelegate).connected(Channel) line: