问答题
[说明]
某高等院校的教学管理具有选课管理和成绩管理两大功能。选课管理主要完成以下工作:(1)录入与生成新学期课程表;(2)学生选课注册;(3)查询,学生、教师、教学管理员可以查询课程表,获得课程信息、学生选课信息和学生、教师信息;(4)选课注册信息的统计与报表生成。成绩管理主要的功能为: (1)成绩录入:教学管理员录入学生考试成绩;(2)成绩查询:教师、教学管理员可以查询学生考试成绩。。学生只允许查询自己的考试成绩,不允许查询他人的成绩;(3)成绩统计与报表生成:教学管理员进行成绩统计,打印统计报表。把学生选课注册信息传送给财务系统,以便计算学生应交纳的费用。
根据需要,系统设计的用例有“选课管理”、“成绩管理”、“查询课程信息”、“选课注册”、“管理开设课程”等用例。其中部分用例说明如下:
“查询课程信息”:学生、教师或教学管理员启动查询课程信息时,该用例开始运行。根据输入的查询要求(查询主题或关键字),显示有关的课程信息;
“选课注册”。当学生登录进行选课注册时,该用例开始运行,它提供了选择课程、注册、修改注册、删除注册等功能。学生登录需要用户标识(ID)和口令;
“管理开设课程”。 当教学管理员登录系统进行产生选课信息操作时, 该用例开始运行。 它首先检查用户标识(ID)和口令,然后从数据库中取出学生的选课注册数据,按照要求进行分类统计,生成选课注册报表。
活动者“学生”与用例“选课注册”的交互关系如下:当“学生”登录系统进入选课注册活动时,首先要输入用户标识(ID)和口令,经系统的“注册表单”接口对象验证,如果正确无误,则“学生”可以进行查询活动或选课活动,否则拒绝进入。若“学生”发出“查询”请求,系统的“选课注册表单”接口对象响应信息给“学生”,及发送增加或删除学生选课数据的消息。 “开设课程”对象响应该消息,找出数据库中的相关数据,增加或删除学生的姓名和所选的课程名,或做相应的修改,并把增加或删除学生课操作成功或失败的信息反馈给“选课注册表单”接口对象,“选课注册表单”接口对象再反馈给“学生”。如果“学生”按下“确认”键,则选课操作得到确认,发出提交请求。“选课注册表单”接口对象响应该请求,并发出“存储”消息。“开设课程”对象响应“存储”消息,进行数据库存储操作,选课数据存入数据库。若“学生”结束选课,发出“退出”系统请求,“注册表单”接口对象响应请求,关闭系统。
图10-7为系统的顶层UML用例图。图10-8为选课注册顺序图。


[问题1]
用例图解释了活动者与用例之间的交互关系。根据系统设计说明,将系统的顶层用例图补充完整。
【参考答案】
(1)选课管理(2)成绩管理
热门
试题
问答题
[说明] 假设设A和B均为顺序表,A’和B’分别为A和B中除去最大共同前缀后的子表(例如,A=(x,y,y,z,x,z),B=(x,y,y,z,y,x,x,z),则两者中最大的共同前缀为(x,y,y,z),在两表中除去最大共同前缀后的子表分别为A’=(x,z)和B’=(y,x,x,z)。若A’=B’=空表,则A=B;若A’=空表,而 B’!=空表,或者两者均不为空表,且A’的首先小于B’的首元,则A<B;否则A>B。 下面程序实现了比较A、B大小的算法。 [C程序] #include<stdio.h> #include<stdlib.h> typedef struct linknode int data; struct linknode *next; node: node *creatlist ( ) *建立单链表* node*head, *r, *s; int x; head= (node *) malloc (sizeof (node)); 建立单链表的头结点head* r=head; printf ( 输入系列整数,以O标志结束 n ); scanf ( %d , &x); while (x!=O) *x==O则退出while循环* s=(node*) malloc (sizeof (node)); s->data=x; r->next=s; s->next=NULL; r=s; scanf ( %d , &x); r->next=NULL; s=head; (1) ; Free (s); return head;void subs ( ) node*p, *p1, *p2, *q, *heada, *headb; heada=creatlist ( ) ; headb=creatlist ( ) ; p=heada; p1=p; *p1指向p所指结点的前一个结点,开始时均缀向头结点* while (p!=NULL ) q=headb; while (q!=NULL&&q->data!=p->data) q=q->next; if ( (2) ) if (p==heada) (3) ; p1=heada; else if (p->next==NULL) p1->next=NULL; *该结点为最后一结点,删除* else p1->next=p->next; p2=p->next; (4) ; free (p); (5) ; else *p所指结点的元素不在B中,则直接下移p* p1=p; (6) ; p=heada; *显示删除后的结果* if (p==NULL) printf ( 两集合机减的结果为空 n );else printf ( 两集合相减的结果 n );while (p!=NULL) printf ( %d , p->data); p=p->next;void main ( ) subs ( ) ;