搜档网
当前位置:搜档网 › 软件体系结构实验报告

软件体系结构实验报告

软件体系结构实验报告
软件体系结构实验报告

南京信息工程大学实验(实习)报告

实验(实习)名称软件体系结构设计实验(实习)日期11.9.2010 得分指导教师潘锦基

系计算机专业软件工程年级2009 班次 1 姓名武奎俊学号20092344022 1实验目的.

(1)熟练使用环境进行小规模软件体系结构设计。

(2)进一步掌握软件体系结构的描述。

(3)掌握常用的软件体系结构风格。

(4)培养团队协作精神。

2.实验内容

学生成绩管理系统用于学生成绩的管理和查询,该系统能完成成绩的录入、修改、查询、统计等基本功能以及用户的管理。

根据具体情况,选择合适的软件体系结构风格,设计该系统的软件体系结构。

3.实验准备

(1)合理分组,确定负责人。

(2)熟悉常用的软件体系结构风格及其优缺点。

(3)熟悉软件体系结构描述方法。

(4)熟悉学生成绩管理系统的需求。

4.实验步骤

现有学生成绩信息,内容如下:

姓名学号语文数学英语

张明明 01 67 78 82

李成友 02 78 91 88

张辉灿 03 68 82 56

王露 04 56 45 77

陈东明 05 67 38 47

设计要求:(1) 信息维护:要求学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息

(2) 信息查询:要求查询时可实现按姓名查询、按学号查询

(3) 成绩统计:要求输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。

(4) 排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)

(5) 至少采用文本菜单界面(如果能采用图形菜单界面更好)

(6) 学生可自动增加新功能模块(视情况可另外加分)

主要技术指标及特点

程序流程图如下:

登录界面显示

此登录界面是预先设定好作为菜单来显示的,在主函数中以menu()来实现的,在函数中,是通过switch……case来实现选择功能的,用户可以通过需要进行选择,方便了用户的使用,非常人性化。

登记学生资料

当系统中没有保存学生信息时,就会提示没有学生记录!也就是说不能从文件中导出,这时就需要用户进行学生资料的导入,当输入的学号已经存在时,系统会提示用户重新输入一个未被占用的学号信息,否则就重新分配内存空间。

保存学生资料

该操作是将用户输入的学生信息进行保存,用文件的方法进行调试,当用户输入对象的个数超过0时,显示保存成功,否则提示,系统连接为空。

删除学生资料

删除后结果紧随其后

这里又是通过switch……case函数的调用,让用户进行选择,共有两种方法:1.按照学号2.按照姓名,操作完成后,系统会自动提示,该学生已经成功删除,当再次显示的时候,函数中的链表就不再指向该学号,从而起到删除的作用。删除完成后,再次保存一下学生资料,不然系统仍然默认为原始人数。

修改学生资料

通过选择到达修改界面:此时将呈现出现有的学生资料,按照要求将新的信息输入其中,再保存资料,如果输入的学号系统中未显示,那么系统则提示没有资料可以修改。

这个为修改完的图片查询学生资料

按照选择,则会呈现出用户需要查找的所有信息,每次呈现出来的时候都要用之前定义的printheader()函数,这个很好地将数据按照格式化的形式显现出来。此为按照学号查找的例子,按照姓名查找是同样道理。

统计学生资料

统计学生资料主要还是用的switch……case函数,通过选择,用printheader(),printdata(r),printf(END)等函数用表格的形式将符合条件的学生信息全部显示出来,不过唯一不足的就是所有的学生信息没有能够连贯起来,每个学生信息前面都有表头,没处理好。

对学生资料进行排序

该图显示的是按照语文成绩排序完的结果,用链表将数据进行一个接一个的比较,按照降序将学生信息排列下来,最后提示排序已经完成,并将所有结果按照用户要求显示出来。

程序主要代码

#include "stdio.h" /*标准输入输出函数库*/

#include "stdlib.h" /*标准函数库*/

#include "string.h" /*字符串函数库*/

#include "conio.h" /*屏幕操作函数库*/

#define HEADER1 " ----------------------------学生成绩---------------------------- \n"

#define HEADER2 " | 学号| 姓名|语文|数学|英语| 总分| 均分| \n"

#define HEADER3 " |---------------|---------------|----|----|----|--------|-------|"

#define FORMA T " | %-10s |%-15s|%4d|%4d|%4d| %4d | %.2f |\n"

#define DA TA p->data.num,p->https://www.sodocs.net/doc/c517926199.html,,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.total,p->data.a ve

#define END " -------------------------------------------------------------- \n"

int shoudsave=0; /* */

struct student

{

char num[10];/* 学号*/

char name[20];

char sex[4];

int cgrade;

int mgrade;

int egrade;

int total;

float ave;

char neartime[10];/* 最近更新时间*/

};

typedef struct node

{

struct student data;

struct node *next;

}Node,*Link;

void menu()

{

system("cls"); /*调用DOS命令,清屏.与clrscr()功能相同*/

cprintf("\n");

cprintf(" 学生成绩管理系统\n\n");

cprintf(" *************************菜单**************************\n");

cprintf(" * 1 登记学生资料 2 删除学生资料*\n");

cprintf(" * 3 查询学生资料 4 修改学生资料*\n");

cprintf(" * 5 插入学生资料 6 统计学生资料*\n");

cprintf(" * 7 排序学生资料8 保存学生资料*\n");

cprintf(" * 9 呈现学生资料0 退出系统*\n");

cprintf(" *******************************************************\n");

/*cprintf()送格式化输出至文本窗口屏幕中*/

}

void printheader() /*格式化输出表头*/

{

printf(HEADER1);

printf(HEADER2);

printf(HEADER3);

}

void printdata(Node *pp) /*格式化输出表中数据*/

{

Node* p;

p=pp;

printf(FORMA T,DA TA);

}

void Wrong()

{

printf("\n=====>提示:输入错误!\n");

}

void Nofind()

{

printf("\n=====>提示:没有找到该学生!\n");

}

void Disp(Link l) /*显示单链表l中存储的学生记录,内容为student结构中定义的内容*/ {

Node *p;

p=l->next; /*l存储的是单链表中头结点的指针,该头结点没有存储学生信息,指针域指向的后继结点才有学生信息*/

if(!p) /*p==NULL,NUll在stdlib中定义为0*/

{

printf("\n=====>没有学生记录!\n");

getchar();

return;

}

printf("\n\n");

printheader(); /*输出表格头部*/

while(p) /*逐条输出链表中存储的学生信息*/

{

printdata(p);

p=p->next; /*移动直下一个结点*/

printf(HEADER3);

}

getchar();

}

/*************************************************************

作用:用于定位链表中符合要求的节点,并返回指向该节点的指针

参数:findmess[]保存要查找的具体内容; nameornum[]保存按什么查找;

在单链表l中查找;

**************************************************************/

Node* Locate(Link l,char findmess[],char nameornum[]) /* 该函数用于定位连表中符合要求的接点,并返回该指针*/

{

Node *r;

if(strcmp(nameornum,"num")==0) /* 按学号查询*/

{

r=l->next;

while(r!=NULL)

{

if(strcmp(r->data.num,findmess)==0)

return r;

r=r->next;

}

}

else if(strcmp(nameornum,"name")==0) /* 按姓名查询*/

{

r=l->next;

while(r!=NULL)

{

if(strcmp(r->https://www.sodocs.net/doc/c517926199.html,,findmess)==0)

return r;

r=r->next;

}

}

return 0;

}

/*增加学生记录*/

void Add(Link l)

{

Node *p,*r,*s; /*实现添加操作的临时的结构体指针变量*/

char ch,flag=0,num[10];

r=l;

s=l->next;

system("cls");

Disp(l); /*先打印出已有的学生信息*/

while(r->next!=NULL)

r=r->next; /*将指针移至于链表最末尾,准备添加记录*/

while(1) /*一次可输入多条记录,直至输入学号为0的记录结点添加操作*/

{

while(1) /*输入学号,保证该学号没有被使用,若输入学号为0,则退出添加记录操作*/ {

printf("请你输入学号(以'0'返回上一级菜单:)");

scanf("%s",num);

flag=0;

if(strcmp(num,"0")==0) /*输入为0,则退出添加操作,返回主界面*/

{return;}

s=l->next;

while(s) /*查询该学号是否已经存在,若存在则要求重新输入一个未被占用的学号*/ {

if(strcmp(s->data.num,num)==0)

{

flag=1;

break;

}

s=s->next;

}

if(flag==1) /*提示用户是否重新输入*/

{ getchar();

printf("=====>学号%s 不存在,重新输入吗?(y/n):",num);

scanf("%c",&ch);

if(ch=='y'||ch=='Y')

continue;

else

return;

}

else

{break;}

}

p=(Node *)malloc(sizeof(Node)); /*申请内存空间*/

if(!p)

{

printf("\n 分配内存失败"); /*如没有申请到,打印提示信息*/

return ; /*返回主界面*/

}

strcpy(p->data.num,num); /*将字符串num拷贝到p->data.num中*/ printf("请你输入姓名:");

scanf("%s",p->https://www.sodocs.net/doc/c517926199.html,);

getchar();

printf("请你输入语文成绩:");

scanf("%d",&p->data.cgrade);

getchar();

printf("请你输入数学成绩:");

scanf("%d",&p->data.mgrade);

getchar();

printf("请你输入英语成绩:");

scanf("%d",&p->data.egrade);

p->data.total=p->data.egrade+p->data.cgrade+p->data.mgrade;

p->data.ave=p->data.total / 3;

getchar();

/* 信息输入已经完成*/

p->next=NULL;

r->next=p;

r=p;

shoudsave=1;

}

}

void Qur(Link l) /*按学号或姓名,查询学生记录*/

{

int sel; /*1:按学号查,2:按姓名查,其他:返回主界面(菜单)*/ char findmess[20]; /*保存用户输入的查询内容*/

Node *p;

if(!l->next)/*若链表为空*/

{

system("cls");

printf("\n=====>提示:没有资料可以查询!\n");

return;

}

system("cls");

printf("\n=====>1按学号查找\n=====>2按姓名查找\n");

printf(" 请选择[1,2]:");

scanf("%d",&sel);

if(sel==1)/* 学号*/

{

printf("请你输入要查找的学号:");

scanf("%s",findmess);

p=Locate(l,findmess,"num");/*在l中查找学号为searchinput值的节点,并返回节点的指针*/ if(p)/*若p!=NULL*/

{

printheader();

printdata(p);

printf(END);

printf("请按任意键返回");

getchar();

}

else

Nofind();

getchar();

}

else if(sel==2) /* 姓名*/

{

printf("请你输入要查找的姓名:");

scanf("%s",findmess);

p=Locate(l,findmess,"name");

if(p)

{

printheader();

printdata(p);

printf(END);

printf("请按任意键返回");

getchar();

}

else

Nofind();

getchar();

}

else

Wrong();

}

/*删除学生记录:先找到保存该学生记录的节点,然后删除该节点*/

void Del(Link l) /* 删除*/

{

int sel;

Node *p,*r;

char findmess[20];

if(!l->next)

{

printf("\n=====>提示:没有资料可以删除!\n");

getchar();

return;

}

printf("\n=====>1按学号删除\n=====>2按姓名删除\n"); scanf("%d",&sel);

if(sel==1)

{

printf("请你输入要删除的学号:");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{

r=l;

while(r->next!=p)

r=r->next;

r->next=p->next;

free(p);

printf("\n=====>提示:该学生已经成功删除!\n"); getchar();

shoudsave=1;

}

else

Nofind();

}

else if(sel==2)

{

printf("请你输入要删除的姓名:");

scanf("%s",findmess);

p=Locate(l,findmess,"name");

if(p)

{

r=l;

while(r->next!=p)

r=r->next;

r->next=p->next;

free(p);

printf("\n=====>提示:该学生已经成功删除!\n"); getchar();

shoudsave=1;

}

else

Nofind();

getchar();

}

else

Wrong();

getchar();

}

/*修改学生记录。先按输入的学号查询到该记录,然后提示用户修改学号之外的值,学号不能修改*/

void Modify(Link l)

{

Node *p;

char findmess[20];

if(!l->next)

{ system("cls");

printf("\n=====>提示:没有资料可以修改!\n");

getchar();

return;

}

system("cls");

printf("修改学生资料");

Disp(l);

printf("请你输入要修改的学生学号:");

scanf("%s",findmess);

p=Locate(l,findmess,"num");

if(p)

{

printf("请你输入新学号(原来是%s):",p->data.num);

scanf("%s",p->data.num);

printf("请你输入新姓名(原来是%s):",p->https://www.sodocs.net/doc/c517926199.html,);

scanf("%s",p->https://www.sodocs.net/doc/c517926199.html,);

getchar();

printf("请你输入新的语文成绩(原来是%d分):",p->data.cgrade);

scanf("%d",&p->data.cgrade);

getchar();

printf("请你输入新的数学成绩(原来是%d分):",p->data.mgrade);

scanf("%d",&p->data.mgrade);

getchar();

printf("请你输入新的英语成绩(原来是%d分):",p->data.egrade);

scanf("%d",&p->data.egrade);

p->data.total=p->data.egrade+p->data.cgrade+p->data.mgrade;

p->data.ave=p->data.total/3;

printf("\n=====>提示:资料修改成功!\n");

shoudsave=1;

getchar();

}

else

Nofind();

getchar();

}

/*插入记录:按学号查询到要插入的节点的位置,然后在该学号之后插入一个新节点。*/ void Insert(Link l)

{

Link p,v,newinfo; /*p指向插入位置,newinfo指新插入记录*/

char ch,num[10],s[10]; /*s[]保存插入点位置之前的学号,num[]保存输入的新记录的学号*/ int flag=0;

v=l->next;

system("cls");

Disp(l);

while(1)

{ printf("请输入需要插入的新学号:\n");

scanf("%s",num);

flag=0;v=l->next;

while(v) /*查询该学号是否存在,flag=1表示该学号存在*/

{

if(strcmp(v->data.num,s)==0) {flag=1;break;}

v=v->next;

}

if(flag==1)

break; /*若学号存在,则进行插入之前的新记录的输入操作*/

else

{ getchar();

printf("\n=====>学号%s 不存在,重新试吗?(y/n):",s);

scanf("%c",&ch);

if(ch=='y'||ch=='Y')

{continue;}

else

{return;}

}

}

/*以下新记录的输入操作与Add()相同*/

printf("请输入需要输入的新学生学号:\n");

scanf("%s",num);

v=l->next;

while(v)

{

if(strcmp(v->data.num,num)==0)

{

printf("=====>对不起,新学号:'%s' 已经存在!\n",num);

printheader();

printdata(v);

printf("\n");

getchar();

return;

}

v=v->next;

}

newinfo=(Node *)malloc(sizeof(Node));

if(!newinfo)

{

printf("\n 分配资源失败"); /*如没有申请到,打印提示信息*/

return ; /*返回主界面*/

}

strcpy(newinfo->data.num,num);

printf("请输入学生的姓名:\n");

scanf("%s",newinfo->https://www.sodocs.net/doc/c517926199.html,);

printf("请输入学生的语文成绩[0-100]:\n");

scanf("%s",newinfo->data.cgrade);

printf("请输入学生的数学成绩[0-100]:\n");

scanf("%s",newinfo->data.mgrade);

printf("请输入学生的英语成绩[0-100]:\n");

scanf("%s",newinfo->data.egrade);

newinfo->data.total=newinfo->data.egrade+newinfo->data.cgrade+newinfo->data.mgrade; newinfo->data.ave=(float)(newinfo->data.total/3);

newinfo->next=NULL;

shoudsave=1; /*在main()有对该全局变量的判断,若为1,则进行存盘操作*/

/*将指针赋值给p,因为l中的头节点的下一个节点才实际保存着学生的记录*/

p=l->next;

while(1)

{

if(strcmp(p->data.num,s)==0) /*在链表中插入一个节点*/

{

newinfo->next=p->next;

p->next=newinfo;

break;

}

p=p->next;

}

Disp(l);

printf("\n\n");

getchar();

}

void Tongji(Link l)

{

Node *pm,*pe,*pc,*pt,*pa; /* 用于指向分数最高的接点*/

Node *r=l->next;

【精品实验报告】软件体系结构设计模式实验报告

【精品实验报告】软件体系结构设计模式实验报告软件体系结构 设计模式实验报告 学生姓名: 所在学院: 学生学号: 学生班级: 指导老师: 完成日期: 一、实验目的 熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的设计模式,包括组合模式、外观模式、代理模式、观察者模式和策略模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式,并学会分析这些模式的使用效果。 二、实验内容 使用PowerDesigner和任意一种面向对象编程语言实现组合模式、外观模式、代理模式、观察者模式和策略模式,包括根据实例绘制模式结构图、编写模式实例实现代码,运行并测试模式实例代码。 (1) 组合模式 使用组合模式设计一个杀毒软件(AntiVirus)的框架,该软件既可以对某个文件夹(Folder)杀毒,也可以对某个指定的文件(File)进行杀毒,文件种类包括文本文件TextFile、图片文件ImageFile、视频文件VideoFile。绘制类图并编程模拟实现。 (2) 组合模式 某教育机构组织结构如下图所示: 北京总部 教务办公室湖南分校行政办公室 教务办公室长沙教学点湘潭教学点行政办公室

教务办公室行政办公室教务办公室行政办公室 在该教育机构的OA系统中可以给各级办公室下发公文,现采用 组合模式设计该机构的组织结构,绘制相应的类图并编程模拟实现,在客户端代码中模拟下发公文。(注:可以定义一个办公室类为抽象叶子构件类,再将教务办公室和行政办公室作为其子类;可以定义一个教学机构类为抽象容器构件类,将总部、分校和教学点作为其子类。) (3) 外观模式 某系统需要提供一个文件加密模块,加密流程包括三个操作,分别是读取源文件、加密、保存加密之后的文件。读取文件和保存文件使用流来实现,这三个操作相对独立,其业务代码封装在三个不同的类中。现在需要提供一个统一的加密外观类,用户可以直接使用该加密外观类完成文件的读取、加密和保存三个操作,而不需要与每一个类进行交互,使用外观模式设计该加密模块,要求编程模拟实现。参考类图如下: reader = new FileReader();EncryptFacadecipher = new CipherMachine();writer = new FileWriter();-reader: FileReader-cipher: CipherMachine-writer: FileWriter +EncryptFacade () +fileEncrypt (String fileNameSrc,: voidString plainStr=reader.read(fileNameSrc); String fileNameDes)String

软件开发实验报告doc

软件开发实验报告 篇一:软件开发实验报告 本科实验报告 课程名称:软件开发环境与工具实验报告 实验项目:CASE工具PowerDesigner的使用 实验地点:专业班级: 指导教师: XX年10月22日 本科实验报告 课程名称:软件开发环境与工具实验报告 实验项目:搭建Visual Studio开发环境,设计实验地点:致远楼B303指导教师:崔秀娟XX年9月28日 篇二:软件开发平台实验报告 课程设计报告 课程名称: 软件开发平台与工具任课教师: 姓名: 学号: 1. 引言 1.1. 课程设计项目 1.2. 背景简介从编程之初,便免不了和方法,类,接口之类的东西打交道。久而久之,自然会对此进行总结,

由此而产生了开发平台。而今中国的程序员之中,有很大一部分都是编一些企业MIS、政府MIS之类的程序。其主要工作就是对数据进行一下增删改查的操作,对MIS系统做一些基础的管理而已。软件开发平台有两种平台模式:一种是传统的C/S架构模式,一种是现在流行的B/S架构模式。B/S 架构模式是随着互联网的流行,自然又要求以互联网为基础,把这些都网络化,以实现网络资源共享,而不是传统的单机模式。这便激发了软件开发者的创造力,形成了软件开发平台的B/S架构模式(web开发平台)。对于web开发平台,我的个人理解是: 1.以web 2.0为基础,基于互联网的B/S架构的软件。它本身也是一个软件,只不过不是最终的软件产品,而是用于二次开发的软件。 2.用于实现各类业务系统,如CRM、MIS、ERP、HIS、OA 等等的开发。web开发平台本身就是一个二次开发平台,他不同于诸如eclipse等这样的开发工具,需要写大量的代码来完成各个业务模块,二次开发平台只需要设计好自己的数据结构,进行一些简单的配置、拖拉等操作就可以完成业务系统的开发。 3.能够快速的实现各种报表包括复杂的图表报表的设计制作,传统的编码式开发需要自己去编写想要的各种报表,而运用开发平台就简单多了,可以很轻松的配置出各种报表。

乐龙仿真软件实验报告2

计信学院上机报告 课程名称:配送与配送中心姓名:夏冰山学号:0892110220 指导教师:陈达强班级:物流08乙日期:2010-04-17 一、上机内容及要求: 根据实验三仓储型物流中心模型,在乐龙软件种完成模型的建立; 1.根据模型仿真的结果分析瓶颈的所在; 2.改进模型,再次进行模拟; 二、完成报告(预备知识、步骤、程序框图、程序、思考等): 建立模型:根据实验三的要求建立模型,如图1所示。 模拟条件:时间模式为1:1,其他设备的速度为默认状态。 模型瓶颈: 在模拟运行6分钟后产生瓶颈。由于装货平台出的机械手臂速度过慢,导致货物在传送带上堵塞,影响入库速度。为此我们依次加快了机械手臂的速度,AS/RS水平和垂直方向的速度,瓶颈随着相应设备速度的调整随之转移。但是由于AS/RS堆垛机的最大速度受限,所以加快速度只能够缓解情况,而不能从根本上解除瓶颈。 为此提出解决方案如下: ①如果AS/RS的装货平台和卸货平台在同一侧,将入库申请和出库申请分别排序,第一个出 库作业和第一个入库作业组合为一个联合作业任务,从而缩短存取周期、提高存取效率; ②将AS/RS的装货平台和出货平台分设在仓库的两端,合理考虑入库货位和出货货位的位置, 使得堆垛机在巷道中的运行路径不重复或者重复线路最短; ③增加AS/RS的入库/出库平台数量。 实验感想: 模拟后根据直接观察或者通过日志文件的分析得到瓶颈,眼睛直接看到的瓶颈有时未必是真正的问题所在。例如本次实验,瓶颈直接产生在机械手臂,但是进过分析我们知道真正的瓶颈是AS/RS的堆垛机的速度。所以在寻找瓶颈时不要被假象所误导,随之做出无效的改进方案。

体系结构实验报告

中南大学软件学院 软件体系结构 设计模式实验报告 学生姓名:宋昂 所在学院:软件学院 学生学号: 3901080115 学生班级:软件0801 指导老师:刘伟 完成日期: 2010-12-7

一、实验目的 熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的设计模式,包括简单工厂模式、工厂方法模式、抽象工厂模式、单例模式和适配器模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式,并学会分析这些模式的使用效果。 二、实验内容 使用PowerDesigner和任意一种面向对象编程语言实现简单工厂模式、工厂方法模式、抽象工厂模式、单例模式和适配器模式,包括根据实例绘制模式结构图、编写模式实例实现代码,运行并测试模式实例代码。 (1) 简单工厂模式 使用简单工厂模式设计一个可以创建不同几何形状(Shape)的绘图工具类,如可创建圆形(Circle)、方形(Rectangle)和三角形(Triangle) 对象,每个几何图形都要有绘制draw()和擦除erase()两个方法,要求在绘制不支持的几何图形时,提示一个UnsupportedShapeException,绘制类图并编程实现。 (2) 简单工厂模式 使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数“M”,则返回一个Man 对象,如果传入参数“W”,则返回一个Woman对象,使用任意一种面向对象编程语言实现该场景。现需要增加一个新的Robot类,如果传入参数“R”,则返回一个Robot对象,对代码进行修改并注意女娲的变化。 (3) 工厂方法模式 某系统日志记录器要求支持多种日志记录方式,如文件记录、数据库记录等,且用户可以根据要求动态选择日志记录方式,现使用工厂方法模式设计该系统。用代码实现日志记录器实例,如果在系统中增加一个中的日志记录方式——控制台日志记录(ConsoleLog),绘制类图并修改代码,注意增加新日志记录方式过程中原有代码的变化。

电子科技大学软件开发环境实验报告

电子科技大学软件开发 环境实验报告 Coca-cola standardization office【ZZ5AB-ZZSYT-ZZ2C-ZZ682T-ZZT18】

本实验总体目的是,通过使用huffman编码算法从而实现文件的压缩和解压,以达到使学生掌握并灵活运用分割函数的三项原则。 五、实验内容: 本实验要求实现一个exe程序。这个程序按照huffman编码方式,同时包含了压缩功能和解压功能。用户通过以下命令进行压缩: C:\> –c uncompress_filename compress_filename 上述命令中,是程序名,-c表示要进行压缩。uncompress_filename是要压缩的文件名,可以包含路径信息,而compress_filename是压缩之后的文件名,同样可以包含路径信息。用户可以通过如下命令进行解压: C:\> –u compress_filename uncompress_filename 上述命令中,-u表示要执行解压命令。compress_filename是要解压的文件名,可以包含路径信息;uncompress_filename就是解压后所得到的文件,同样可以包含路径信息。 提示:在实现程序时,需要考虑如何存储huffman树或者编码表或者词频表等等。 本实验要求实现两个版本的程序,一是C语言版本的,二是C++版本的。对这两个版本的要求如下: 对于每一个版本的程序,需要在实验报告中给出函数调用关系图、流程处理关系 图以及它们的文字说明等内容; 对于每一个版本的程序,都需要在实验报告中给出源代码。为了便于查重,代码 中注释的比例要占到总行数的20%; C++版本的程序,需要给出类关系图。 实验报告的评分标准,包括以下几个方面: 实验报告是否规范

计算机仿真实训实验报告实验1-4

实验一 熟悉MATLAB 工作环境 16电气5班 周树楠 20160500529 一、实验目的 1.熟悉启动和退出MATLAB 软件的方法。 2.熟悉MATLAB 软件的运行环境。 3.熟悉MATLAB 的基本操作。 二、实验设备及条件 计算机一台(带有MATLAB6.0以上的软件境)。 三、实验内容 1.练习下面指令: cd,clear,dir,path,help,who,whos,save,load 。 2.建立自己的工作目录MYBIN 和MYDATA ,并将它们分别加到搜索路径的前面或者后面。 3.求23)]47(*212[÷-+的算术运算结果。 4.M 文件的建立,建立M 文件,求出下列表达式的值: ?? ????-+=++=+= 545.0212),1ln(21 185sin 2222 1i x x x z e z o 其中

5.利用MATLAB的帮助功能分别查询inv、plot、max、round函数的功能和用法。 四、运行环境介绍及注意事项 1.运行环境介绍 打开Matlab软件运行环境有图1-1所示的界面

图1-1 MATLAB的用户界面 操作界面主要的介绍如下: 指令窗( Command Window ),在该窗可键入各种送给 MATLAB 运作的指令、函数、表达式,并显示除图形外的所以运算结果。 历史指令窗( Command History ),该窗记录已经运行过的指令、函数、表达式;允许用户对它们进行选择复制、重运行,以及产生 M 文件。 工作空间浏览器( Workspace Browser ),该窗口罗列出 MATLAB 工作空间中所有的变量名、大小、字节数;并且在该窗中,可对变量进行观察、编辑、提取和保存。 其它还有当前目录浏览器( Current Directory Browser )、 M 文件编辑 / 调试器(Editor/Debugger )以及帮助导航/ 浏览器(Help Navigator/Browser )等,但通常不随操作界面的出现而启动。 利用 File 菜单可方便对文件或窗口进行管理。其中 File | New 的各子菜单, M-file ( M 文件)、 Figure (图形窗口)、或 Model ( Simulink 编辑界面)分别可创建对应文件或模块。 Edit 菜单允许用户和 Windows 的剪切板交互信息。 2.在指令窗操作时应特别注意以下几点 1)所有输入的指令、公式或数值必须按下回车键以后才能执行。例如: >>(10*19+2/4-34)/2*3 (回车) ans= 234.7500 2)所有的指令、变量名称都要区分字母的大小写。 3)%作为MATLAB注释的开始标志,以后的文字不影响计算的过程。 4)应该指定输出变量名称,否则MATLAB会将运算结果直接存入默认的输出变量名ans。 5)MATLAB可以将计算结果以不同的精确度的数字格式显示,可以直接在指令视窗键入不同的数字显示格式指令。例如:>>format short (这是默认的) 6)MATLAB利用了↑↓二个游标键可以将所输过的指令叫回来重复使用。按下↑则前一次输入的指令重新出现,之后再按Enter键,即再执行前一次的指令。

软件设计模式与软件体系结构实验报告

《软件体系结构》大作业(1) 学院:软件学院 课程名称:软件体系结构 专业班级: 学生姓名:学号: 学生姓名:学号: 指导教师: 完成时间:年月日 评分表 1、叙述各小组成员完成本题目的分工协作情况。 小组中的每个成员都先理解题目要求及涉及的设计模式,并一起完成代码编写。另外,组长负责文档制作。 2、评分表 序号姓名评分是否组长 1 2 作业正文需要包括以下内容: 1、作业题目内容的详细描述。 2、完成本题目所采用的软件设计模式名称及画出相应的类图,或者是所采用的 软件体系结构名称及画出相应的体系结构图。

3、画出完成本题目所设计程序的设计类图;如还有其他图,也一并画出。 4、完成本题目所设计的程序代码。 5、程序运行的典型界面截图

1、作业题目内容的详细描述。 【作业2.1-1】例2.3为使用工厂方法模式设计的汽车保险管理应用程序实例。现在需要 扩展例2.3的设计图,添加一个名为LuxuryCarInsurance的类,并且需要编写此类和其他需要添加的类的代码,详细要求参见光盘的相应作业部分。 【作业2.1-1】在例2.4中,设计并且实现了豪华(Super)和中等(Medium)别墅(House)与公寓(Condo)的查询。要求在该设计的基础上,增加一个新的类SemiDetacher(半独立式楼宇),并且编写代码,实现相应的查询功能,详细要求参见光盘的相应作业部分。 2、完成本题目所采用的软件设计模式名称及画出相应的类图,或者是所采用的软件体系结构名称及画出相应的体系结构图。 【作业2.1-1】采用的是工厂方法模式 【作业2.1-2】采用的是抽象方法模式

软件开发工具与环境实验报告.

南昌大学实践报告 学生姓名:谢某某学号:0149001506109 专业班级:软件工程2006 实践类型:□验证□综合□设计□创新实践日期:2010-11-30 实践成绩: (以下主要内容由学生完成) 一、实验项目名称 利用VC++设计一个简单的电话薄管理程序 二、实验目的 综合运用面向对象程序设计的基础知识,设计一个小型的应用程序,提高解决问题的能力。 三、实验基本内容 设计一个电话簿管理程序,要求: 〔1〕具有添加、删除、显示、修改和查询联系人电话号码的功能。 〔2〕联系人的信息保存到文件中。 〔3〕可以实现为控制台程序或图形界面程序。 〔4〕按学院实验报告要求格式书写实验报告 四、主要仪器设备及耗材 PC一台,Microsoft Visual C++ 6.0 开发环境 五、实验步骤 该电话薄的实现代码如下: #include #include #include #include #include using namespace std; class book { public:

book();//默认构造函数 char inter_face();//首页 void add_person();//添加 void del_person();//删除 void show_all();//显示 void alter();//修改 void select();//查询 void save_new();//保存 private: string name;//姓名 string number;//电话号码 }; book::book() { name = "\0"; number = "\0"; } //首页 char book::inter_face() { system("cls"); cout <>choose; fflush(stdin); return choose; } //添加联系人 void book::add_person() { cout <>name; fflush(stdin); cout <<"电话 : "; cin >>number; fflush(stdin); save_new(); cout <

软件设计与体系结构实验报告

福建农林大学计算机与信息学院 实验报告 课程名称:软件设计与体系结构 姓名:陈宇翔 系:软件工程系 专业:软件工程 年级:2007 学号:070481024 指导教师:王李进 职称:讲师 2009年12月16日

实验项目列表

福建农林大学计算机与信息学院实验报告 学院:计算机与信息学院专业:软件工程系年级:2007 姓名:陈宇翔 学号:070481024 课程名称:软件设计与体系结构实验时间:2009-10-28 实验室田实验室312、313计算机号024 指导教师签字:成绩: 实验1:ACME软件体系结构描述语言应用 一、实验目的 1)掌握软件体系结构描述的概念 2)掌握应用ACMESTUDIO工具描述软件体系结构的基本操作 二、实验学时 2学时。 三、实验方法 由老师提供软件体系结构图形样板供学生参考,学生在样板的指导下修改图形,在老师的指导下进行软件体系结构描述。 四、实验环境 计算机及ACMESTUDIO。 五、实验内容 利用ACME语言定义软件体系结构风格,修改ACME代码,并进行风格测试。 六、实验操作步骤 一、导入Zip文档 建立的一个Acme Project,并且命名为AcmeLab2。如下图:

接着导入ZIP文档,导入完ZIP文档后显示的如下图: 二、修改风格 在AcmeLab2项目中,打开families下的TieredFam.acme.如下图: 修改组件外观 1. 在组件类型中,双击DataNodeT; 在其右边的编辑器中,将产生预览;选择Modify 按钮,将打开外观编辑器对话框。 2. 首先改变图形:找到Basic shape section,在Stock image dropdown menu中选 择Repository类型. 3. 在Color/Line Properties section修改填充颜色为深蓝色。 4. 在颜色对话框中选择深蓝色,并单击 [OK]. 5. 修改图形的边框颜色为绿色 7. 单击Label tab,在Font Settings section, 设置字体颜色为白色,单击[OK] 产生的图形如下图:

软件工程实验报告

软件工程实验报告 姓名:冯巧 学号 实验题目:实验室设备管理系统 1、系统简介: 每天对实验室设备使用情况进行统计,对于已彻底损坏的作报废处理,同时详细记录有关信息。对于有严重问题(故障)的要即时修理,并记录修理日期、设备名、修理厂家、修理费用、责任人等。对于急需但又缺少的设备需以“申请表”的形式送交上级领导请求批准购买。新设备购入后立即对新设备登记(包括类别、设备名、型号、规格、单价、数量、购置日期、生产厂家、购买人等),同时更新申请表的内容。 2、技术要求及限定条件: 采用C#语言设计桌面应用程序,同时与数据库MySql进行交互。系统对硬件的要求低,不需要网络支持,在单机环境下也能运行,在局域网环境下也能使用。方案实施相对容易,成本低,工期短。 一:可行性分析 1、技术可行性分析 计算机硬件设备,数据库,实验室设备管理软件与实验室设备管理系统的操作人员组成,能够实现实验室设备管理的信息化,提高工作效率,实现现代化的实验室设备管理。系统需要满足实验室设备管理(包括对实验设备的报废、维修和新设备的购买)、实验室设备信息查询(包括按类别进行查询和按时间进行查询)、实验室设备信息统计报表(包括对已报废设备的统计、申请新设备购买的统计和现有设备的统计)。这些功能框图如下图所示: 2、经济可行性分析 依据用户的现实需求、技术现状、经济条件、工期以及其他局限性因素等等因素,考虑到工期的长短、技术的成熟可靠、操作方便等因素,本方案具备经济可行性。

3、系统可选择的开发方案 ①方案A用C#开发系统的特点是:开发工具与数据库集成一体,可视化,开发速度较快,但数据库能够管理的数据规模相对较小。系统对硬件的要求低,不需要网络支持,在单机环境下也能运行,在局域网环境下也能使用。方案的实施相对容易,成本低,工期短。 ②方案B:以小型数据库管理系统为后台数据库,该前台操作与数据库分离,也能够实现多层应用系统。系统对硬件的要求居中,特别适合在网络环境下使用,操作方便。但系统得实现最复杂,成本最高,工期也较长。 二:软件需求分析 1.软件系统需求基本描述: 实验室设备管理系统是现代企业资源管理中的一个重要内容,也是资源开发利用的基础性工作。实验室设备在信息化之前,在用户系统管理、设备维修管理、设备的增删改查管理等方面存在诸多不利于管理的地方,不适应现代的企业管理形势和资源的开发利用。 2.软件系统数据流图(由加工、数据流、文件、源点和终点四种元素组成): 1)顶层数据流图 2)二层流程图 3)总数据流图

模电仿真实验报告。

模拟电路仿真实验报告 张斌杰生物医学工程141班学号6103414032 Multisim软件使用 一、实验目的 1、掌握Multisim软件的基本操作和分析方法。 二、实验内容 1、场效应管放大电路设计与仿真 2、仪器放大器设计与仿真 3、逻辑电平信号检测电路设计与仿真 4、三极管Beta值分选电路设计与仿真 5、宽带放大电路设计与仿真 三、Multisim软件介绍 Multisim是美国国家仪器(NI)有限公司推出的以Windows为基础的仿真工具,适用于板级的模拟/数字电路板的设计工作。它包含了电路原理图的图形输入、电路硬件描述语言输入方式,具有丰富的仿真分析能力。工程师们可以使用Multisim交互式地搭建电路原理图,并对电路进行仿真。Multisim提炼了SPICE仿真的复杂内容,这样工程师无需懂得深入的SPICE技术就可以很快地进行捕获、仿真和分析新的设计,这也使其更适合电子学教育。通过Multisim和虚拟仪器技术,PCB设计工程师和电子学教育工作者可以完成从理论到原理图捕获与仿真再到原型设计和测试这样一个完整的综合设计流程。 一、实验名称: 仪器放大器设计与仿真 二、实验目的 1、掌握仪器放大器的设计方法 2、理解仪器放大器对共模信号的抑制能力 3、熟悉仪器放大器的调试功能 4、掌握虚拟仪器库中关于测试模拟电路仪器的使用方法,如示波器,毫伏表信 号发生器等虚拟仪器的使用 三、设计实验电路图:

四、测量实验结果: 差模分别输入信号1mv第二条线与第三条线:第一条线输出为差模放大为399mv。 共模输入2mv的的电压,输出为2mv的电压。 五、实验心得: 应用Multisim首先要准备好器件的pspice模型,这是最重要的,没有这个东西免谈,当然Spice高手除外。下面就可以利用Multisim的元件向导功能制作自己的仿真元件模型了。将刚刚做好的元件保存,你可能注意到了,保存的路径里面没有出现Master Database,即主数据库,这就是Multisim做的较好的其中一方面,你无论是新建元件还是修改主数据库里面的元件,都不会影响主数据库里面的元件,选好路径以后点击Finish即可,一个新元件就被创建了。在应用电子仿真软件 Multisim进行虚拟仿真时,有许多传感器或新器件,只要知道了它们的电特性或在电路中的作用,完全可以灵活采用变通的办法代替进行仿真,本来软件就是进行虚拟实验的,并不一定非要用真实元件不可,这样可以大大地拓宽电子仿真软件 Multisim的应用范围。再说用软件仿真时不存在损坏和烧毁元件、仪器的问题,只要设计好了电路都可以试一试,仿真成功了就可以进行实际电路的组装和调试,不

计算机体系结构实验报告二

实验二结构相关 一、实验目的: 通过本实验,加深对结构相关的理解,了解结构相关对CPU性能的影响。 二、实验内容: 1. 用WinDLX模拟器运行程序structure_d.s 。 2. 通过模拟,找出存在结构相关的指令对以及导致结构相关的部件。 3. 记录由结构相关引起的暂停时钟周期数,计算暂停时钟周期数占总执行 周期数的百分比。 4. 论述结构相关对CPU性能的影响,讨论解决结构相关的方法。 三、实验程序structure_d.s LHI R2, (A>>16)&0xFFFF 数据相关 ADDUI R2, R2, A&0xFFFF LHI R3, (B>>16)&0xFFFF ADDUI R3, R3, B&0xFFFF ADDU R4, R0, R3 loop: LD F0, 0(R2) LD F4, 0(R3) ADDD F0, F0, F4 ;浮点运算,两个周期,结构相关 ADDD F2, F0, F2 ; <- A stall is found (an example of how to answer your questions) ADDI R2, R2, #8 ADDI R3, R3, #8 SUB R5, R4, R2 BNEZ R5, loop ;条件跳转 TRAP #0 ;; Exit <- this is a comment !! A: .double 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 B: .double 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

四、实验过程 打开软件,load structure_d.s文件,进行单步运行。经过分析,此程序一 次循环中共有五次结构相关。(R-stall 数据相关Stall- 结构相关) 1)第一个结构相关:addd f2,,f0,f2 由于前面的数据相关,导致上一条指令addd f0,f0,f4暂停在ID阶段,所以下一条指令addd f2,,f0,f2发生结构相关,导致相关的部件:译码部件。 2)第二个结构相关:ADDI R2, R2, #8,与第一个结构相关类似。由于数据相关, 上一条指令暂停在ID阶段,所以导致下一条指令发生结构相关。

软件体系结构实验报告

实验指导书 实验一 1、实验项目:软件体系结构设计(一) 某系统C/S风格客户端软件体系结构设计 2、实验目的:熟悉C/S风格的工作机制 3、实验内容:针对某个应用系统,选用C/S风格作为这个系统的软件体系结构 风格。熟悉C/S风格的工作机制,对所考察的系统进行C/S风格客户端软件体系结构设计。(针对不同的特定应用系统具体表述) 实验二 1、实验项目:软件体系结构设计(二) 某系统C/S风格服务器软件体系结构设计 2、实验目的:熟悉C/S风格的工作机制 3、实验内容:针对某个应用系统,选用C/S风格作为这个系统的软件体系结构 风格。熟悉C/S风格的工作机制,对所考察的系统进行C/S风格服务器软件体系结构设计。(针对不同的特定应用系统具体表述) 实验三 1、实验项目:UML建模 某系统UML建模 2、实验目的:深入理解UML建模的思想,熟悉UML建模方法 3、实验内容:作为实际应用前的一种演练,深入理解UML建模的思想,熟悉 UML建模方法,锻炼和培养分析问题、解决问题的能力。针对某个选定的应用系统,对其进行用例建模、对象类建模和状态图建模。 实验四 1、实验项目:某系统详细设计 2、实验目的:细化前期设计的有关结果,做出软件的详细规格说明 3、实验内容:详细设计(也叫过程设计)是软件设计的具体模块设计阶段,是 在作为软件开发前期设计的体系结构设计和总体设计的基础上进行的。目的是要细化前期设计的有关结果,做出软件的详细规格说明。要求具体地设计目标系统给个模块的实现过程。 实验五 1、实验项目:系统集成 2、实验目的:系统集成与总结 3、实验内容:综合考察前八次实验的内容,通盘考虑软件设计的整个过程,深 入理解软件体系结构的构建过程

软件工程导论实验报告

软件工程导论实验报告 一、实验题目: 学生成绩管理系统、图书借阅管理系统、工资管理系统、网络订餐系统、招聘考试成绩管理系统 二、实验目标 通过独立完成项目开发,加深对软件开发分析过程的流程和方法的理解,建立软件工程的思想,同时,明确软件开发的成本和时间管理的相关概念。 实验一 实验要求: ①.在实验题目列出的几个系统中选择一个作为自己要开发的软件系统,要求该系统有明确的功能需求,并建立系统的分析模型。 ②.对系统进行需求分析,掌握ER图、DFD、DD的设计与编写 ③.熟悉Visio环境和基本操作,制作一个简单的系统流程图和数据流图、主要数

据项的数据字典描述及主要加工的逻辑说明(自己选择结构语言、判定树、判定表等)。 ④.撰写需求分析规格说明书 用户需求分析 作为图书管理系统,其主要的需求人员是借阅者,借阅者对其的要求可 以大体概括如下: 1)能按各种方式,比如书名、编号、作者等查询图书馆的藏书情况; 2)能熟悉使用图书管理系统; 3)能方便地借阅图书、续借图书、归还图书; 4)能查询自己的基本资料、借阅图书情况; 5)能方便图书管理员对图书的录入登记、注销; 6)能方便对新生的登记或注销已经毕业学生的信息; 7)能及时发布一些学院学生借阅图书超期情况、馆藏书情况等。 功能说明 1)、读者管理系统 (1)未注册者可以进入注册系统进行注册;

(2)已注册借阅者可按、编号或号登陆进入借阅者检索系统查询借阅者情况; (3)、已注册借阅者可按书名、或作者对图书信息进行检索查询或 提出预约请求; 2)、图书管理员管理系统 (1)图书管理员通过图书管理员身份认证进入图书管理员管理系统; (2)读者可借阅在库图书; (3)在规定期限借阅者归还借阅图书; (4)读者在不违规情况下可继续借阅已借阅图书; (5)读者可以预约图书。 3)、系统管理员管理系统 (1)系统管理员通过系统管理员身份认证进入系统管理员管理系统; (2)系统管理员可以对图书进行图书管理(如:查询、删除、修改图书资料或图书分类查询修改、删除管理); (3)系统管理员可以对借阅者进行学生管理(如:查询、删除、修改借阅者信息或借阅者类别

软件开发实验报告

本科实验报告 课程名称:软件开发环境与工具实验报告 实验项目:CASE工具PowerDesigner的使用 实验地点: 致远楼B501 专业班级: 指导教师: 2013年10月22日

2、转换物理模型,学生宿舍管理的PDM如下图:

本科实验报告 课程名称:软件开发环境与工具实验报告 实验项目:搭建Visual Studio开发环境,设计 Windows控制台应用程序 实验地点:致远楼B303 指导教师:崔秀娟 2013年9月28日

namespace Test2__02 { class Program { static void Main(string[] args) { int m=0; int n; long sum=0; Console.WriteLine("请输入n的值:"); n = int.Parse(Console.ReadLine()); for (int i = 1; i <= n; i++) { m += i; sum += m; } Console.WriteLine("sum = {0}",sum); Console.WriteLine("请输出sum的值:{0}", sum); } } } (方法二) namespace Test2__02 { class Program { static void Main(string[] args) { int i, j; int n; long sum=0; Console.WriteLine("请输入n的值:"); n = int.Parse(Console.ReadLine()); for (i = 1; i <= n; i++) for (j = 1; j <= i; j++) sum += j; Console.WriteLine("sum = {0}",sum); Console.WriteLine("请输出sum的值:{0}", sum); } }

单片机实验报告含仿真设计

单片机原理及应用课程 实验报告 专业: 班级: : 学号:

实验一、keilC51及proteus软件的使用 一、实验目的: 1、掌握keil和proteus软件的基本操作 2、通过具体实例掌握keil和proteus软件的使用。 二、实验原理: keil使用步骤,proteus使用步骤 三、程序: 四、实验结果分析: 五、总结:学会了使用keil和proteus软件,掌握了利用keil和proteus 软件进行仿真的步骤。

实验二、并行输入/输出接口实验 一、实验目的: 1、进一步熟悉keil仿真软件、proteus仿真软件的使用。 2、了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。 3、掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。 二、实验原理: MCS 51单片机的串行口在实际使用中通常用于三种情况:利用方式 0 扩展并行 i/0 接口:利用方式 1 实现点对点的双机通信;利用方式 2 或方式 3 实现多机通信。利用方式 0 扩展并行 i/0 接口 MCS 5 1 单片机的串行口在方式 0 时,若外接一个串入并出的移位寄存器,就可以扩展并行输出口;若外接一个并入串出的移位寄存器,就可以扩展并行输入口。 三、程序: #include sbit P1_0=P1^0; void main() { unsigned char i; unsigned int j; SCON=0x00; i=0x01; for(;;) {

P1_0=0; SBUF=I; while(!TI) {i} P1_0=1;TI=0; for(j=0;j<=254;j++){;} i=i*2; if(i==0x00) i=0x01; } } 四、实验结果分析: 五、总结:进一步熟悉了keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机I/O口和LED灯的电路结构,学会了构建简单的流水灯电路。掌握了C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。

体系结构windlx流水线实验报告

实验一基本实验----by 王琳PB07210432 1. 实验目的: 1)熟悉计算机流水线基本概念 2)了解DLX基本流水线的各段的功能 3)了解各种不同指令在流水线中的实际流动情况 4)对流水线做性能分析 5)了解影响流水线效率的因素——数据相关、结构相关、控制相关,了解相关的种类 6)了解解决数据相关的方法 2. 实验平台:WinDLX仿真器 WinDLX简介: ●是一个图形化、交互式的DLX流水线仿真器。 ●可以装入DLX汇编语言程序,然后单步,设断点或是连续执行该程序. ●CPU的寄存器,流水线,I/O和存储器都可以用图形表示出来 ●提供了对流水线操作的统计功能. ●可以装载文件名为*.s的文件. ●要求的硬件平台是IBM-PC兼容机. ●WinDLX是一个Windows应用程序,运行DOS3.3以上和Windows3.0以上的操作系统. ●WinDLX软件包中带有说明文件及教程,可以供使用者进一步了解仿真器的使用方法和 DLX处理器的原理.大家再进行实验前应该仔细阅读这些文档. 3. 实验内容: 1)在仿真器上分别运行单条指令:Load指令、Store指令、分支指令、寄存器ALU指令、立即数ALU指令,记录它们在流水线中的执行情况 ●Lw: 观察此流水线时空图,可以发现:转移指令引起的延迟仅为1 clocks,另2 stalls 是trap指令引起的,这个执行结果似与不采用forwarding技术的前提相违,只能理解为对于无条件的转移指令,新的PC值在EX阶段即已被写入。 ●Sw:

●Beqz: 由此图可见,对于分支指令,总是用 not-taken的策略来处理,并且也认为新的 PC值也在EX阶段即已被写入,且cond 条件也在EX段被算出(这显然是一个极 不合理的假设,究竟为何分支指令的延迟 为1 stall有待进一步探究) ●寄存器ALU指令 ●立即数ALU指令 2)仿真器运行一段无相关的程序,记录它的执行情况,计算流水线的加速比、吞吐率与效率。下面是一段不相关的程序,一共6条指令 ADDI R5, R5, 1 SUBI R4, R4, 1 AND R3, R3, R3 XOR R7, R7, R7 ADDI R8, R8, 1 ADDI R9, R9, 1 在WinDLX中执行的结果如下:

软件工程实验报告(总)

信息工程学院软件工程实验报告 专业: 班级: 学号: 姓名: 指导老师:

实验一:软件开发的过程计划 实验课时:2课时 一、实验目的 项目计划的目的是为项目的研发和管理工作制定合理的行动纲领,以便所有相关人员按照计划有条不紊地开展工作。 ⑴估计项目的总体规模、工作量和成本。 ⑵制定项目计划,重点放在产品生命周期中的主要关键任务。 ⑶制定项目时间表和预算。 二、实验环境 1.硬件环境 P4以上的个人计算机环境,要求内存不少于512MB,硬盘不小于20G.。 2.软件环境 操作系统:Windows XP 数据库:Sql Server 2000以上或Access 2003以上 3.通用工具软件 通用绘图工具:MicroSoft Visio 2003以上 文本编辑工具:MicroSoft Word 2003以上 4.CASE工具 UML建模工具:Rational Rose 2000 三、实验要求、实验内容 1、实验要求: 在进行实验之前,必须掌握软件开发过程的一些基础知识,准备参考资料和阅读相关的过程模型的文档。 2、实验内容 熟悉RUP(Rational Unified Process)软件开发统一过程的思想,RUP(Rational Unified Process)是由Rational公司(现已是IBM公司的一部分)提出的过程模型,它软件工程史上最完整、最成熟、最优秀的过程模型之一。 学习软件开发的组织和管理,将项目开发各阶段的任务明确,掌握各阶段的里程碑,并熟悉相应的工具。

四、思考题 1、项目开发首先要做的事是什么? 答:进行需求分析和定义,了解客户或用户的需求,然后再进行后续。 2、你认为该软件应具备的最重要的特性是什么。 答:安全性、实用性、灵活性。 3、你认为怎样分工是最合理的? 答:该项目已经采取项目经理制,但是在具体开发过程中,情况也许会比预计的复杂,因此,在了解了各组员的工作风格的情况下,根据性格类型进行工作分配,比如:外向而且善于交流的,可以给他安排和客户交流沟通,让客户随时了解我们 的工作情况,并且反应客户的需求改变;为了让项目更好的组织和管理,可以采取 主程序员负责制;这样,在项目经理的带领下,内部安排主程序员和副程序员,工 作员有问题的话,内部自己解决,只要按时汇报工作就可以了。 五、实验内容: 项目背景 项目名称:银行计算机储蓄系统 随着社会经济的发展,XX银行的业务不断增长,传统的依靠手工的存取款业务办理方式已经不能满足不断增长的业务需求。其一,业务需求的增加需要消耗大量人力物力资源;其二,业务复杂化导致人工处理方式出错率增加,从而引起储户不满。一方面可以减轻银行业务员的工作量,另一方面可以减少工作的出错率,从而提高工作效率。现在计算机网络的告诉发现使越来越多的人更喜欢在网购物、在家存款取款。在这样的背景下,很明显现在的银行储蓄系统已经不能满足人们越益增长的需求,急切需要建立一个新的、高效的、方便的、互联的计算机储蓄系统。为解决此问题,拟为其开发计算机储蓄系统。 项目进度: 项目在项目经理的制度下,在整个开发过程中,树立“里程碑”,而且严格按照计划进行,各阶段任务必须完成,现把任务进度历程绘制如下:

物流仿真实验报告

《物流仿真实验》 实验报告书 实验报告题目:物流仿真实验 学院名称:管理学院 专业:物流管理 班级:物流1303 姓名:孟颖颖 学号:0325

成绩: 2016年7月 实验报告 一、实验名称 物流仿真实验 二、实验要求 ⑴根据模型描述和模型数据对配送中心进行建模; ⑵分析仿真实验结果,进行利润分析,找出利润最大化的策略。 三、实验目的 1、掌握仿真软件Flexsim的操作和应用,熟悉通过软件进行物流仿真建模。 2、记录Flexsim软件仿真模拟的过程,得出仿真的结果。 3、总结Flexsim仿真软件学习过程中的感受和收获。

三、实验设备 (1)硬件及其网络环境 服务器一台:PII400/128M以上配置、客户机100台、局域网或广域网。 (2)软件及其运行环境 Flexsim,Windows 2000 Server、SQL Server 以上版本、IIS 、SQL Server 数据库自动配置、IIS 虚拟目录自动配置 四、实验步骤 1 概念模型 2 建立Flexsim 模型 第一步:在模型中加入实体 从模型中拖入3个source、6个processor、3个Rack、3个Queue和1个Sink 到操作区,如图:

第二步:连接端口 根据配送流程,对模型进行适宜的连接,所有端口连接均用A连接,如图: 第三步:Source的参数设置 为使Source产生实体不影响后面Processor的生产,尽可能的将时间间隔设置尽可能的小,并对三个Source做出同样的设定。 打开Source参数设置窗口,将时间到达间隔设置为常数1,同时为对三个实体进行区别,进行设置产品颜色,点击触发器,打开离开触发的下拉菜单,点击设置临时实体类型,设置不同实体类型,颜色自然发生变化。并对另外两个Source 进行同样的设置,如图:

相关主题