第3章 系统静态模型
3.1 创建系统管理员子系统静态模型
从前面的需求分析中,我们可以依据主要的五个类对象:页面、上传下载和系统管理员创建完整的类图如图3-1所示。
3.2 整体功能结构
远程网络教 学系统 学生子系统 教师子系统
图3.1 整体功能结构
系统管理员子系统 3.3 本章小结
系统静态模型是建立一个系统的根本。静态系统模型是指决定系统特性的因素不随时间推移而变化的系统模型。当然在现实世界中,不存在绝对静态的系统;静态系统的假定本身是对系统的一种简化。当系统对象的主要特征在我们所关心的时间段内不发生明显变化,或者发生的变化对系统的整体性质明显没有影响时,把一个系统看做是静态可能是一种明智的选择。静态系统模型一般而言,相对比较简单。建立静态系统模型的关键就是找到模型的平衡关系,并用模型表示出来。
6
第4章 系统动态模型
4.1 创建系统管理员子系统序列图和协作图
系统管理员的活动步骤分为:(1)登录到管理操作页面(2)更新课件、添加或删除用户(3)数据库保存信息后返回结果至操作界面。根据以上步骤创建的的序列图和协作图,如图4-1和图4-2所示。
图4-1
图4-2
4.2创建系统管理员子系统活动图
我们还可以利用系统的活动图来描述系统的参与者是如何协同工作的。在网上教学系统中,根据系统管理员的活动步骤,我们可以创建的活动图如下图4-3所示。
7
图4-3
4.3 创建系统管理员子系统状态图
在网上教学管理系统中,有明确状态转换的类是页面更新,从用系统管理员的输入网站的地址开始到页面更新结束整个过程的状态图如下图4-4所示。
图4-4
4.4系统运行代码
在#include
#include
8
class Node//结点类,用于存放课程各种数据 {
public:
int id; string name; string num; string mark; string firm; int outtime; Node *next; Node(int nid=0,string nname=\nnum=\nmark=\构造函数,初始化变量
};
class Link//Link类,把数据以链表的形式存储,链表的每个结点为一个Node对象
{
private:
Node *head; //链表的头指针,为Node对象类型的指针 public :
Link();//构造函数,初始化变量
bool linkIsEmpty();//判断链表是否为空
void linkInsert(Node *newnode);//向链表中插入新的结点 bool linkDelete(int nid);//从链表中删除的结点 void linkClear();//清空链表中数据 void linkView();//查看链表中数据
Node* linkFind(int nid);//在链表中查找id为nid结点,返回指向该结点的指针
Node* getHead();//获取头指针 };
Node::Node(int nid,string nname,string nnum,string nmark,string nfirm,int nouttime)
{
id=nid;
name=nname; num=nnum; mark=nmark; firm=nfirm;
outtime=nouttime; next=NULL; }
9
Link::Link() //构造函数,初始化链表为空 {
head=NULL; }
bool Link::linkIsEmpty() //判断链表是否为空,空则返回true {
return(head==NULL); }
void Link::linkInsert(Node *newnode) //按id值从小到大的顺序,插入新的结点
{
Node *p1;
if(!head)//链表为空的情况 head=newnode;
else if((head->id)>(newnode->id)) //插入到第一个结点的情况 {
newnode->next=head; head=newnode; }
else //插入到第二个及以后情况 {
p1=head; while(1) {
if(!(p1->next)) {
p1->next=newnode; break; }
else if((p1->next)->id>newnode->id) {
newnode->next=p1->next; p1->next=newnode; break; }
p1=p1->next; } } }
bool Link::linkDelete(int nid) //删除结点,成功则返回true {
10