《程序设计课程设计》任务书(4)

2019-04-21 19:02

不空闲的时候,遵循这个服务策略。

2. 顺便服务策略:

VIP优先服务窗口,在VIP客户队列为空的时候,采取顺便服务策略:VIP窗口转变为普通服务窗口,跟其他窗口一起分担处理普通客户队列。

顺便服务策略建立在先来先服务策略的基础之上。 3. 最快响应策略:

VIP优先服务窗口,因为VIP客户队列为空,转去处理普通业务以后,若重新出现VIP客户,这时要采取最快响应策略:最快结束当前普通业务的VIP窗口,首先回到VIP队列处理状态;较慢结束当前普通业务的VIP窗口,则需要重新判断VIP队列是否为空,来决定下一个业务是接受VIP业务,还是普通业务。

最快响应策略建立在先来先服务策略和顺便服务策略基础上。

要求重点实现先来先服务和顺便服务策略,应在一相对独立的程序块中实现控制策略,这样能方便地对其进行修改而不影响程序的其他部分。

(四)输入输出 1)输入:

就是一系列的呼叫和目标。输入可以采用两种方法:

a.从键盘输入。初始化设定营业窗口的数量。输入客户到达信息、VIP身份号,以及营业窗口暂停信息、下班指令。我们可以设定按键如下:

‘WIN3回车’表示营业厅的窗口设置为3。 ‘G’表示一个普通客户到达。 ‘V’表示一个VIP客户到达。

‘ID12345’表示一个VIP身份号12345。 ‘R1’表示1号窗口请求暂停。 ‘Q’表示下班。

b.将初始化营业窗口数量,和输入的客户到达信息、VIP身份号,以及营业窗口暂停信息、下班指令都写入一个正文文件,然后程序读取这些数据后可以在没有人工干预的情况下模拟银行营业厅的排队情况。其中一个信息占一行,包括如下内容:

‘WIN3回车’表示营业厅的窗口设置为3。 ‘G’表示一个普通客户到达。 ‘V’表示一个VIP客户到达。

‘ID12345’表示一个VIP身份号12345。 ‘R1’表示1号窗口请求暂停。 ‘Q’表示下班。

c.银行的VIP客户资料,预存在一个二进制文件中,包括:客户姓名、客户VIP身份号和客户存款金额等。要求利用文件的上机作业2,改写为一个VIP客户资料维护模块,可以添加、删除、更新VIP客户记录。

VIP客户维护的输入,从键盘输入: ‘X’表示进入VIP客户维护状态; ‘V+’表示添加一个VIP客户; ‘V-’表示删除一个VIP客户; ‘V/’表示更新一个VIP客户; ‘E’表示退出VIP客户维护状态; 2)输出:

a.银行营业厅排队的动画显示:包括显示当前最大服务号码,窗口正在办理的服务号

码,以及窗口的空闲、暂停状态。为方便查看程序,设置一块显示区,显示键盘输入的信息。

b.银行营业厅排队情况的记录(结果)文件。

记录文件也是文本文件,每一行表示一次取号服务或一次营业办理,包括以下内容: 取号时间:表示客户到达后,得到普通/VIP服务号码的时间;以整数表示,从小到大排列,占4个字节,从0开始,单位秒。

服务号码:刚分配到的服务号码,字符串表示,占3个字节(000/V00-999/V99)。 或者:

办理时间:表示窗口处理完一个服务号码,准备叫下一个号码的时间。以整数表示,从小到大排列,占4个字节,从0开始,单位秒。

服务号码:办理完业务的客户服务号码,字符串表示,占3个字节(000/V00-999/V99)。 每个数据项之间用一个空白字符隔开。程序中不必考虑检查数据的正确性。 备注:老师会提供一组已经编制好的子程序以及一些给出的数据定义,它们的主要功能是表示银行排队系统参数,模拟银行排队以及处理各类信号的输入输出。要注意利用它们提供的一些控制显示和键盘输入的函数和过程来简化输入和输出(包括动画)的设计。当然也可以利用编程语言提供的函数和过程来完成输入和输出。

(五)基本的要求和较高的要求

以下内容仅供有余力的同学参考实现。

1. 不同类别业务的办理时间不同,而客户办理各类别业务的几率随机。 2.营业窗口叫号两次,客户不应答,做过号处理。 (六)程序总体结构 以下内容仅供参考。

我们可以在主程序中写如下两个函数调用: Configure;

Simulation;

前者在进行模拟前设置一些参数,这比较简单。而后者则是进行仿真模拟,这相当复杂,所以下面我们就来讨论如何设计Simulation。

这一类的模拟仿真程序有一个共同的特点是要模拟某个系统在一段时间内的情况,所以我们很自然地要从时间上对该问题进行分解,就是说

Simulation() {

Initialize;{初始化过程} do

Bank_status();{计算银行营业厅状态在这一时刻的变化,例如某窗口的一个业务办理完毕,就要重新设定下一个服务号码}

Writemessage();{输出信息(包括动画)}

Getinput();{接收当前时刻的新输入(包括新客户到达和窗口暂停等)

Control();{调用排队策略程序决定该如何分配号码给窗口}

Time=time+1;{推进仿真时间,假定每一秒营业厅进行上述操作一次} While not endcondition; }

这就是可以模拟银行排队系统的基本结构了!这个程序结构的基本思想就是模拟了银行排队系统每个时刻做的几件事情,然后将时间向后推移一个时间单位,然后再做那几件事,于是就模拟了银行营业厅的工作状态。

十一、实验报告要求:

实验要求,按照软件开发过程的各个阶段提交阶段性文档。阶段性文档不能在实验结束后补写,必须遵照实验进度分阶段提交,贯彻文档指导实践、实践修正文档的软件工程思想。

文档提交可以书面形式,也可以电子文件形式。 (1)【模板:会议记要】

<小组编号>小组第**周第**次会议记要

实验名称: *******

会议时间:****年**月**日**点 至 **点 与会者:<成员1>、<成员2>.. 文档记录者:*** 会议内容摘要: <问题编号>、〈问题说明〉;〈讨论意见〉;〈最后结果〉。 ..

备注:小组正式会议的记录,主要记录讨论问题的概要,以及工作进展情况,详细设计内容应该放在其它文档中。会议记要一般两页左右。

(2)【模板:周报】

<小组编号>小组第**周周报

实验名称: *******

周报时间:****年**月**日

小组成员:<成员1>、<成员2>.. 是否按计划完成? 是!

〈上周工作小结〉;//按人员总结 〈本周工作分派〉。//按人员分排

否!

〈未完成原因〉; 〈本周解决办法〉;

〈需要请指导教师协助的问题〉。

(3)【模板1:任务书】

<小组编号>小组 <实验名称>任务书

版本号:Bank-小组简写-Task-***(每次修订时改变编号) 编制时间:** 编制人员:** 1.1 任务目标概述 1.2 目标系统的需求 (对应任务书上的银行营业厅配置) 1.3 目标系统的需求分析 (对应任务书上的银行营业厅排队控制) 1.4 目标系统的策略选择 (对应任务书上的银行营业厅排队策略) 1.5 目标系统的IO需求

(对应任务书上的输入输出) 1.6 目标系统的高级需求 (对应任务书上的基本要求和较高要求)

备注:根据书上的任务书,剪裁得到一份符合你要实现的银行排队系统实际情况的任务书。

(4)【模板2:概要设计】

<小组编号>小组 <实验名称>概要设计

版本号:Bank-小组简写-GlobalDesign-***(每次修订时改变编号) 编制时间: 编制人员:

1.3 用户界面设计 1.1.1 动画方式

画出银行营业厅的取号面板,营业窗口叫号显示,以及模拟银行排队的界面设计; 说明所画界面中对应的各种操作含义和预期效果,以及键盘输入和界面显示效果之间的关系。

1.1.2 文件方式

定义出输入呼叫文件格式,和输出结果文件格式。 说明输入输出文件中符号的含义。 1.2 自动机模型(状态转换图)

画出银行排队系统的状态转换图;要求在图形之外,再给出各状态的详细文字说明,说明该状态可以接受的输入和相应动作。

1.3 高层数据结构设计

设计出如何存储银行排队系统的客户到达号码、窗口办理状态和排队状态数据。例如:新到取号请求如何存储?各窗口状态如何存储?排队状态如何表示等?

本实验要求用数组和链表两种方式实现存储,需要给出两套数据结构设计。 1.4 系统模块划分

画出系统模块的调用关系图;并详细说明各个模块的功能。

针对每一个模块,要求给出:模块名称、模块功能简要描述、模块接口(接口名称、参数类型、接口功能)、本模块会调用的其他模块名和接口名。

注:接口就是本模块提供给其他模块调用的C函数。 1.5 高层算法设计

系统核心算法的概要设计,例如银行排队系统的排队策略算法。要求用自然语言,对任务书中的策略进一步细化分解,结合上面的数据结构和模块设计,描述出算法的实现思路。

(5)【模板3:详细设计】

<小组编号>小组 <实验名称>详细设计

版本号:Bank-小组简写-FunctionDesign-***(每次修订时改变编号) 编制时间: 编制人员:

1.5 模块1<模块名称>

1.5.1 局部数据结构设计

当前模块的内部变量设计。要求给出数据的含义、变量的命名,以及类型定义。 1.5.2 算法设计

用N-S图描述出算法。 1.6 模块2<模块名称> …

(6)【模板4:测试用例】

<小组编号>小组 <实验名称>测试用例

版本号:Bank-小组简写-CaseOfTest-***(每次修订时改变编号) 编制时间: 编制人员: 1.5 测试用例1

1.5.1 测试目标

说明本测试用例是用来测试:某项功能?边界异常处理?压力测试(多次频繁操作,测试程序的承受力)? 1.5.2 用例输入

文件方式:列出输入文件的内容; 动画方式: 操作顺序 1 操作 新普通/VIP客户取号; 营业窗口叫号; 营业窗口暂停; 操作前银行状态 当前最大服务号码; 窗口忙/闲/暂停? 各窗口正在处理号码; 排队状态 前面有几人排队 2 。。。 1.5.3 用例输出 文件方式:列出输出文件的内容; 动画方式: 输入操作序号 1 操作 操作后银行状态 结果是否正确? 是/否 新客户取号; 当前最大服务号营业窗口叫号; 码; 营业窗口暂停; 窗口忙/闲/暂停? 各窗口正在处理号码; 2 。。。

1.6 测试用例2 …

2.1 测试结果总结

对照任务书各项要求,逐一说明测试结果是否正确,存在哪些bug?

备注:按照测试用例模版设计2—4个包含多个呼叫及目标的测试用例。根据用例实际执行结果写成测试结果报告。单元测试不用提交测试用例,这里只包括系统的测试用例。

(7)程序清单

电子版的源程序,要注意程序必要的注释,以及缩进对齐。

(8)使用说明模版

<小组编号>小组 <实验名称>使用手册

版本号:Bank-小组简写-UserGuide-***(每次修订时改变编号) 编制时间: 编制人员:

1.9 运行环境配置

说明程序的安装环境要求,比如操作系统、内存等。

说明程序的安装文件路径、文件名称、文件个数。(尤其注意程序运行时必须的一些文件) 说明程序的运行方式:菜单、图标、命令行等。

1.10 系统功能介绍

概述程序的主要功能和特点。 1.11 功能1使用说明

逐步演示操作步骤,可以把实际界面粘贴在文档中。 1.12 功能2使用说明 …

(9)实验总结

体会、评论与收获。必写,内容随意。在组间交流会上进行口头经验交流。


《程序设计课程设计》任务书(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:如何将pb9数据窗口转化为pdf文件

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: