问答题
【说明】
A公司决定开发一套公共交通自动售票系统,系统要求如下所述。
(1)乘客能按以下3步操作购票:选定目的地,投入钱币,获得一张票。
(2)并且仅当乘客选定目的地后,系统才接收投钱;每次投入的钱只购买一张票。
(3)只要投入的钱不少于所需的票价,且票库中有所要求的票,则应尽快出票。
(4)如需找钱,则在出票的同时应退还多余的钱。
(5)如果乘客投入的钱不够票价,或者票库中没有所需要的票时,系统将全额退钱,并允许乘客另选目的地,继续购票。
(6)出票前乘客可以单击“取消”按钮取消购票,系统将全额退出该乘客投入的钱,并允许乘客另选目的地,继续购票。
(7)出票结束(包括退还多余的钱)后,系统应保存销售记录,并等待乘客购票。
该系统还要求快速响应和操作同步,所以它应是一个实时系统。为此,A公司在该系统的数据流程图中附加了过程控制部分,形成转换图。在该图中,控制流(事件流)用虚
线表示,数据流用实线表示。图中的数据流并没有画全,需要考生填补。
对售票全过程进行的控制可以用系统内部各个状态之间的迁移来描述,从而形成状态迁移图。在状态迁移图中,用双线框表示状态,用有向边表示状态的迁移。引起状态迁移的事件以及由该事件引起的动作,在有向边旁用“
”形式注明。
该公司还制定了一个过程启动表,用以表明状态迁移图中的4个动作与转换图中的4个过程之间的“启动”关系,即说明哪个动作将启动哪个过程。用1表示启动,用0表示不启动。启动的过程将根据获得的输入数据产生输出数据,未唐动的过程则不会产生输出数据,该表中没有列出的过程,其执行与否与事件无关。
【问题1】
转换图中缺少哪3条数据流请指明每条数据流的名称、起点和终点。
【问题2】
在状态迁移图中,a、b、c分别表示什么事件请用转换图中给出的事件名解答。
【问题3】
在过程启动表中,d、e处应填什么请分别用4位二进制码表示。
【参考答案】
[解析] 这道考题的题型比较特殊,但仍可以参考常考的数据流程图的解题思路。应全面细致地阅读试题说明、转换图和状态迁移图,......
(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
点击查看答案
<上一题
目录
下一题>
热门
试题
问答题
【说明】 本程序在3×3方格中填入1~N(N≥10)内的某9个互不相同的整数,使所有相邻两个方格内的两个整数之和为质数。试求出满足这个要求的所有填法。3×3方格中的每个方格按行按列(先行后列)序号排列为:0,1,2,3,4,5,6,7,8。 程序采用试探法,即从序号为0的方格开始,为当前方格寻找一个合理的可填整数,并在当前位置正确填入后,为下一方格寻找可填入的合理整数。如不能为当前方格找到一个合理的可填整数,就要回退到前一方格,调整前一方格的填入整数;直至序号为8的方格也填入合理的整数后,就找到了一个解,将该解输出。再调整序号为8的方格所填整数,继续去找下一个解。为了检查当前方格的填入整数的合理性,程序引入二维数组check Matrix,存放需要进行合理性检查的相邻方格的序号。 # include <stdio. h> # define N 12 int b[N+1]; int pos; int a[9]; * 用于存储诸方格所填入的整数* int AllNum=0; * 统计有多少种填法* int checkMatrix[][3]= -1,0,-1,1,-1, 0,-1,1,3,-1,2,4,-1, 3,-1,4,6,-1,5,7,-1; void write(int a[]) int i, j; for(i=0; i<3; i++) for(j=0; j<3; j++) printf( %3d , a[3*i+j]); printf( n ); int isPrime(int m) int i; if(m==2)return 1; if(m==1 ‖ m%2==0)return 0; for(i=3; i*i<m;) if(m%i==0)return 0; i+=2; return 1; int selectNum(int start) int j; for(j=start; j<=N; j++) if(b[j])return j; return 0; int check() *检查填入pos位置的整数是否合理* int i,j; for(i=0; (j= (1) )>=0; i++) if(!isPrime(a[pos]+a[j])) (2) ; (3) ; extend () * 为下一方格找一个尚未使用过的整数* a[ (4) ]=selectNum(1); b[a[pos]]=0; void change () *为当前方格找下一个尚未使用过的整数(找不到回溯)* int j; while(pos >=0 && (j=selectNum( (5) ))==0) b[a[pos--]]=1; if(pos<0)return; b[a[pos]]=1; a[pos]=j; b[j]=0; int find () int ok=1; pos=0; a[pos]=1; b[a[pos]]=0; do if(ok) if(pos==8) write(a); change(); AllNum++; * 统计有多少种填法* else extend(); else change(); ok=check(); while(pos>=0); void main() int i; for(i=1; i<=N; i++) b[i]=1; find(); prinrf( 共有%d种不同填法! n , AllNum);
点击查看答案
问答题
【说明】StringEditor类的功能是:已知一个字符串,返回将字符串中的非字母字符都删除后的字符串。 public (1) public static String removeNonLetters( (2) ) StringBuffer aBuffer= (3) ; char aCharacter; for(int i=0; i<original.length();i++) aCharacter= (4) ; if(Character.isLetter(aCharacter)) aBuffer.append( (5) ); return new String(aBuffer); public class StringEditorTester public static void main(String args[]) String original= Hi!, My Name is Mark, 234I think you are my classmate!! ; System.out.println(StringEditor.removeNonLetters(original));
点击查看答案
相关试题
【说明】 以下C++程序的功能是计算三角...
【说明】StringEditor类的功能是:已知一个...
【说明】 本程序在3×3方格中填入1~N...
【说明】 学校中有若干系,每个系有若干班...
【说明】 (1)这是一个图书馆支持系统。...