远程网络教学系统

更新时间:2024-05-14 00:40:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

UML及面向对象分析与设计

实 训

题 目: 远程网络教学系统

子课题: 系统管理员子系统 学 号: 姓 名: 班 级: 教 师:

江苏师范大学 计算机科学与技术学院

I

目 录

第1章 需求分析 .................................................................................................................................................................. 3 1.1 系统功能需求............................................................................................................................................................... 3 1.1.1 功能需求 .............................................................................................................................................................. 3 1.1.2 模块 ....................................................................................................................................................................... 3 1.2 数据库管理模块 .......................................................................................................................................................... 3 1.3 基本业务模块............................................................................................................................................................... 4 1.4 本文研究内容及主要贡献 ........................................................................................................................................ 4 第2章 系统用例模型 ......................................................................................................................................................... 5 2.1 系统管理员子系统用例图及分析 ........................................................................................................................... 5 2.2本章小结 .................................................................................................................................. 错误!未定义书签。 第3章 系统静态模型 ......................................................................................................................................................... 5 3.1创建系统管理员子系统静态模型............................................................................................................................ 6 3.2 整体功能结构............................................................................................................................................................... 6 3.3 本章小结........................................................................................................................................................................ 6 第4章 系统动态模型 ......................................................................................................................................................... 7 4.1 创建系统管理员子系统序列图和协作图.............................................................................................................. 7 4.1.1 序列图........................................................................................................................... 错误!未定义书签。 4.1.2 协作图................................................................................................................................................................. 7 4.2 创建系统管理员子系统活动图................................................................................................................................ 7 4.3 创建系统管理员子系统状态图...................................................................................................................8 4.4系统运行代码 ............................................................................................................................................................... 8 4.5 本章小结........................................................................................................................................................................ 8 第5章 系统部署模型 ....................................................................................................................................................... 21 5.1 系统运行所需的软件和硬件环境 ......................................................................................................................... 21 5.2 创建系统构件图 ........................................................................................................................................................ 21 5.3 创建系统部署图 .................................................................................................................... 错误!未定义书签。 5.4 本章小结...................................................................................................................................................................... 21 第6章 总结与展望............................................................................................................................................................ 22 6.1 总结 .............................................................................................................................................................................. 22 6.2 展望 .............................................................................................................................................................................. 22

II

第1章 需求分析

远程网络教学系统指的是在网络环境下,以现代教育思想和学习理论为指导,充分发挥网络的各种教育功能和丰富的网络教育资源优势,向受教育者和学习者提供一种网络教和学的环境,传递数字化内容,开展以学习者为中心的非面授教育活动,在当今是非常流行的新型学习方式。

1.1 系统功能需求 1.1.1 功能需求

(1)学生可以登陆网站浏览和查找各种信息以及下载文件。

(2)教师可以登陆网站给出课程见解、发布、修改和更新消息以及上传课件。 (3)系统管理员可以对页面进行维护、批准用户的注册申请和审批上传课件。 1.1.2 功能模块

满足上述需求的系统主要包括下面几个模块

(1)数据库管理模块:提供使用者录入、修改并维护数据的途径。

(2)基本业务模块:教师可以上传文件、发布消息、修改和更新消息;学生可以下载文件;管理员可以维护页面,批准注册等。

(3)信息浏览、查询模块:主要用于对网站的信息进行浏览、搜索查询。

图 1.1系统功能需求

1.2 数据库管理模块

(1)教师信息管理:负责教师信息的管理。

(2)课程简介信息管理:负责课程简介信息的管理。 (3)文件上传信息管理:负责文件上传信息的管理。

3

图 1.2数据库管理模块

1.3 基本业务模块

图 1.3基本业务模块

(1)文件上传:教师可以使用此模块将课程的数据上传到网站服务器。 (2)文件下载:学生可以使用此模块从网站上下载课件及其他资料。

(3)消息发布:教师可以通过此模块发布学习方法、课程重点等和教学相关的文章,以及和课程相关的通知等。

(4)消息修改和更新:教师可以通过此模块对自己发布的信息进行修改和更新。 (5)页面维护:网站管理员可以使用此模块对网站的页面进行维护。 (6)用户注册批准:网站管理员可以使用此模块批准用户注册。

1.4 本文研究内容及主要贡献

本文研究:1.掌握UML建模的基础知识和其应用;

2.熟悉Rational Rose环境及功能,能够设计出完整系统。 3.运用Rational Rose建立远程网络教学系统子系统—系统管理员子

系统。

4

第2章 系统用例模型

2.1 系统管理员子系统用例图及分析

① 审判上传的课件:系统管理员可以对教师上传的课件进行审批。 ② 更新页面:系统给管理员每隔一段时间对页面进行更新。

③ 处理注册申请:系统管理员可以处理学生或教师用户的注册申请。

图2-1系统管理员子系统用例图

2.2本章小结

用例图描述系统外部的执行者与系统提供的用例之间的某种联系。所谓用例是指对系统提供的功能的一种描述。执行者是使用用例的人或外部系统,二者之间的联系描述了“谁使用哪个用例”。用例图着重于从系统外部执行者的角度来描述系统需要提供哪些功能,并指明该执行者是谁。在用例图中,椭圆表示用例,小人表示执行者。

5

第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 //cin cout #include #include

#include //文件输入输出流类、磁盘文件的流缓冲区类 #include //字符串输入输出流类、字符串缓冲区流类 #include //setw操作符域宽设置 using namespace std;

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

Node *p;

if(head==NULL)//链表为空的情况 return false;

if(head->id==nid) //删除的为第一个结点的情况 {

head=head->next; return true; }

p=head;

while(p->next) //删除的为第二个及以后结点的情况 {

if((p->next)->id==nid) {

p->next=(p->next)->next; return true; }

p=p->next; }

return false; }

void Link::linkClear() //清空链表 {

head=NULL; }

Node* Link::linkFind(int nid) //查找id值为nid的结点,返回该结点的指针 {

Node *p=head; //没找到符合条件的结点的话,返回的指针值为NULL

while(p) {

if(p->id==nid) break; else

p=p->next; }

return p; }

void Link::linkView() //显示链表数据 {

Node *p=head;

cout<

11

\上传时间\

while(p) {

cout<id<<\\\

p=p->next; } }

Node* Link::getHead() {

return head; }

//类S,用于包装Link类及菜单操作 class S {

private:

Link clink;//Link对象成员 bool k;//记录数据是否被修改 public: S();

void SClear(); void SInsert(); void SDelete(); void SFind(); void SModify(); void SView(); void SLoad(); void SSave();

void Exit();//退出程序

void showMenu();//显示菜单 void showMenu1(); void showMenu2(); void showMenu3();

void showTip();//显示操作提示

void doMenu(char n);//执行相应菜单项功能 };

S::S() {

Link();//调用成员对象的构造函数

SLoad();//从文件中读取数据,创建链表 k=false;//设置数据被修改

12

}

void S::SClear() {

clink.linkClear();

cout<<\登陆成功!\}

void S::SInsert() //插入记录 {

Node *p=new Node();

cout<<\请输入课程编号:\ cin>>p->id;

cout<<\请输入课程名称:\ cin>>p->name;

cout<<\请输入上传时间:\ cin>>p->outtime;

if(!clink.linkFind(p->id)) //判断编号是否存在 {

clink.linkInsert(p); k=true; } else

cout<<\课程编号为\的课件已存在,上传失败!\}

void S::SDelete() //删除课程记录 {

int i;

if(clink.linkIsEmpty())//链表为空的情况 cout<<\没有课程记录!\ else {

cout<<\请输入课程编号:\ cin>>i;

if(clink.linkDelete(i)) {

cout<<\成功删除编号为\的课程记录!\ k=true; } else

cout<<\没有找到编号为\的课程!\ } }

13

void S::SFind() //查找某编号的课程记录 {

int n; Node *p;

if(clink.linkIsEmpty())//链表为空的情况 cout<<\没有课程记录!\ else {

cout<<\请输入要查找课程的编号:\ cin>>n;

p=clink.linkFind(n);//获得找到的结点的指针 if(p) //指针值不为NULL时 {

cout<

cout<id<<\\\

}

else//指针值为NULL时

cout<<\没有找到编号为\的课程记录!\ } }

void S::SModify() //修改某编号的课程信息 {

int n; Node *p;

if(clink.linkIsEmpty())//链表为空的情况 cout<<\没有课程记录!\ else {

cout<<\请输入要修改课程的编号:\ cin>>n;

p=clink.linkFind(n);//获得找到的结点的指针 if(p) //指针值不为NULL时 { cout<<\原课程信息为:\ cout<

cout<id<<\\\

cout<<\请输入新的课程信息\ cout<<\请输入课程编号:\

14

cin>>p->id;

cout<<\请输入课程名称:\ cin>>p->name;

cout<<\请上传时间:\ cin>>p->outtime; }

else//指针值为NULL时

cout<<\没有找到编号为\的课程记录!\ } }

void S::SView() //显示所有的记录 {

if(clink.linkIsEmpty())

cout<<\没有课程记录!\ else

clink.linkView(); }

void S::SLoad() //从文件中读入数据,创建链表 {

Node *p; int nid;

ifstream infile(\ if(!infile)

cerr<<\错误:数据文件不能打开!\\n\ else

while(infile>>nid) //读取编号,直到读空 {

p=new Node(); p->id=nid;

infile>>p->name>>p->num>>p->mark>>p->firm>>p->outtime;//读取汽车信息

clink.linkInsert(p); }

infile.close(); //关闭文件 }

void S::SSave() //将数据保存到文件 {

Node *p=clink.getHead(); ofstream outfile(\ if(!outfile)

15

cerr<<\错误:数据文件不能打开!\\n\ else {

while(p) {

outfile<id<<' '<name<<' '<id<<' '<name<<' '<num<<' '<mark<<' '<firm<<' '<outtime<

p=p->next; }

k=false;

cout<<\保存成功!\ } }

void S::Exit() {

char s='Y';

if(k) //判断数据是否修改 {

cout<<\数据已经改变,是否保存?(y/n):\ cin>>s;

if(s=='y'||s=='Y') SSave(); }

cout<<\已安全退出,\ system(\ exit(0); }

void S::showMenu() {

cout<<\

cout<<\ 教师管理子系统 |\

cout<<\cout<<\ 1.登陆 |\

cout<<\ 2.上传课件 |\

cout<<\ 3.删除课件 |\

cout<<\ 4.查找课件 |\

cout<<\ 5.修改信息

16

|\

cout<<\ 6.显示所有课件 |\

cout<<\ 7.存储 |\

cout<<\ 0.退出:安全的退出本系统 |\cout<<\}

void S::showMenu1() {

cout<<\

cout<<\ 学生管理子系统 |\

cout<<\cout<<\ 1.登录 |\

cout<<\ 2.浏览信息 |\

cout<<\ 3.查询信息 |\

cout<<\ 4.下载课件 |\

cout<<\ 5.修改信息 |\

cout<<\ 0.退出:安全的退出本系统 |\cout<<\}

void S::showMenu2() {

cout<<\

cout<<\ 系统管理员子系统 |\

cout<<\cout<<\ 1.登录 |\

cout<<\ 2.页面维护 |\

cout<<\ 3.处理注册申请 |\

cout<<\ 4.修改个人信息 |\

cout<<\ 0.退出:安全的退出本系统 |\

17

cout<<\}

void S::showTip() {

cout<

cout<<\操作完成---------------------\ cout<<\选择继续下一个操作----------------\ cout<<\请选择:\}

void S::doMenu(char n) {

switch(n) {

case '1':

SClear(); break; case '2':

SInsert(); break; case '3':

SDelete(); break; case '4':

SFind(); break; case '5':

SModify(); break; case '6':

SView(); break; case '7':

SSave(); break; case '0': Exit(); break; default:

cout<<\输入错误!\ } }

18

void display() {

cout<<\

cout<<\ 远程网络教学管理系|\

cout<<\cout<<\ 1. 学|\

cout<<\ 2. 教统

生 师 |\

cout<<\ 3. 系统管|\

cout<<\}

int main() {

S c;

char i='9'; display();

cout<<\选择对应数字的登陆人员:\ cin>>i; switch(i) {

case '1': c.showMenu1(); cout<<\选择对应数字进行操作:\ while(1) { cin>>i; system(\清除屏幕 c.showMenu1(); c.doMenu(i); c.showTip(); } case '2': c.showMenu(); cout<<\选择对应数字进行操作:\ while(1) { cin>>i; system(\清除屏幕 c.showMenu(); c.doMenu(i); c.showTip();

19

理员

} case '3': c.showMenu2(); cout<<\选择对应数字进行操作:\ while(1) { cin>>i; system(\清除屏幕 c.showMenu1(); c.doMenu(i); c.showTip(); } default:

cout<<\输入错误!\ }

return 0; }

4.5本章小结

动态模型描述与操作时间和顺序有关的系统特征、影响更改的事件、事件的序列、事件的环境以及事件的组织。借助时序图、状态图和活动图,可以描述系统的动态模型。动态模型的每 个图均有助于理解系统的行为特征。对于开发人员来说,动态建模具有明确性、可视性和简易性的特点。

20

本文来源:https://www.bwwdw.com/article/eac7.html

Top