南邮软件工程实验四
- 格式:doc
- 大小:396.05 KB
- 文档页数:8
南京邮电大学通信学院软件课程设计实验报告模块名称:___MATLAB软件设计专业班级:__通信工程姓名:____ ____学号:___实验日期:2013年 6 月 17—28日实验报告日期: 2013 年 7 月 1 日一、要求练习的实验部分1.在时间区间 [0,10]中,绘出t e y t 2cos 15.0--=曲线。
程序:t=0:0.1:10;y=1-exp((-0.5)*t).*cos(2*t);plot(t,y,'r-');shg结果:2. 写出生成如图E2-1所示波形的MA TLAB 脚本M 文件。
图中虚线为正弦波,要求它的负半波被置零,且在23处被削顶。
程序:t=linspace(0,3*pi,500);y=sin(t);a=sin(pi/3);z=(y>=0).*y;z=(y>=a).*a+(y<a).*z;plot(t,y,':r');hold on;plot(t,z,'b-')xlabel('t'),ylabel('z=f(t)'),title('逐段解析函数')legend('y=sin(t)','z=f(t)',4),hold off结果:3. 令⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=987654321A ,运行 [U,S,V]=svd(A);tol=S(1,1)*3*eps; 然后回答以下问题: (1)sum(diag(S)>tol) - rank(A) 是多少 ? (2)S(1,1) - norm(A) = 0 是多少 ? (3)sqrt(sum(diag(S*S))) - norm(A,'fro') 的结果是什么 ? (4)S(1,1)/S(3,3) - cond(A) 的结果是什么 ? (5)S(1,1)*S(2,2)*S(3,3) - det(A) < tol 的运行结果是什么? (6)V(:,1)'*null(A) 得到什么结果 ? (7)abs(A*null(A)) < tol 得到什么结果 ? (8) U(:,1:2) = = orth(A) 的运行结果是什么 ?程序:clear;clc;disp('设 A=[1,2,3;4,5,6;7,8,9],得')A=[1,2,3;4,5,6;7,8,9] %一个3*3矩阵disp('设 [U,S,V]=svd(A),得')[U,S,V]=svd(A) %奇异值分解(SVD)USV:U m*m酉矩阵 V n*n酉矩阵 S 对角阵disp('设 tol=S(1,1)*3*eps,得')tol=S(1,1)*3*epsdisp('设 a=sum(diag(S)>tol) - rank(A),求 a')a=sum(diag(S)>tol) - rank(A)disp('设 b=S(1,1) - norm(A),求 b')b=S(1,1) - norm(A)disp('设 c=sqrt(sum(diag(S*S))) - norm(A, fro ),求 c')c=sqrt(sum(diag(S*S))) - norm(A,'fro')disp('设 d=S(1,1)/S(3,3) - cond(A),求 d')d=S(1,1)/S(3,3) - cond(A)disp('设 e=S(1,1)*S(2,2)*S(3,3) - det(A) < tol ,求 e')e=S(1,1)*S(2,2)*S(3,3) - det(A) < toldisp('设 f=V(:,1) *null(A),求 f')f=V(:,1)'*null(A)disp('设 g=abs(A*null(A)) < tol,求 g')g=abs(A*null(A)) < toldisp('设 h=U(:,1:2) == orth(A),求 h')h=U(:,1:2) == orth(A)结果:设 A=[1,2,3;4,5,6;7,8,9],得A =1 2 34 5 67 8 9设 [U,S,V]=svd(A),得U =-0.2148 0.8872 0.4082-0.5206 0.2496 -0.8165-0.8263 -0.3879 0.4082S =16.8481 0 00 1.0684 00 0 0.0000V =-0.4797 -0.7767 -0.4082-0.5724 -0.0757 0.8165-0.6651 0.6253 -0.4082设 tol=S(1,1)*3*eps,得tol =1.1223e-014设 a=sum(diag(S)>tol) - rank(A),求 aa =设 b=S(1,1) - norm(A),求 bb =设 c=sqrt(sum(diag(S*S))) - norm(A, fro ),求 cc =3.5527e-015设 d=S(1,1)/S(3,3) - cond(A),求 dd =-8设 e=S(1,1)*S(2,2)*S(3,3) - det(A) < tol ,求 ee =1设 f=V(:,1) *null(A),求 ff =设 g=abs(A*null(A)) < tol ,求 gg =111设 h=U(:,1:2) == orth(A),求 hh =1 11 11 1结果分析:由上面的结果得出如下的题目答案:(1)sum(diag(S)>tol) - rank(A) 的结果是0;(2)S(1,1) - norm(A) = 0 的结果是0;(3)sqrt(sum(diag(S*S))) - norm(A,'fro') 的结果是3.5527e-015;(4)S(1,1)/S(3,3) - cond(A) 的结果是-8;(5)S(1,1)*S(2,2)*S(3,3) - det(A) < tol 的运行结果是1;(6)V(:,1)'*null(A)的结果是0;(7)abs(A*null(A)) < tol 的结果是111 ;(8)U(:,1:2)==orth(A)的运行结果是1 11 11 14. 求积分dt t x⎰0]sin[cos ,π20≤≤x 。
软件设计报告( 2014 / 2015 学年第二学期)课程名称软件设计指导老师赵江实习时间第十八周学生姓名学号____学院______专业软件设计课程编号:B0465011C适用专业:班级:一、所涉及的课程及知识点涉及的课程:第6学期之前的专业基础课程。
知识点:专业基础课程中所学的知识点。
二、目的与任务目的:通过软件设计,培养学生的实践能力和创新精神,加强学生对专业基础课程的理解和掌握,加强学生高级语言编程能力、应用软件以及仿真能力。
任务:选择以下任一模块进行设计:Matlab软件仿真、C语言及应用。
软件设计的内容题目1:如果给出两个矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=136782078451220124A ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=087654321B ,执行下面的矩阵运算命令。
(1)B A *5+和I B A +-分别是多少(其中I 为单位矩阵) (2)B A *⋅和B A *将分别给出什么结果,它们是否相同为什么 逻辑功能程序:function [ ] = EXP1()A=[4,12,20;12,45,78;20,78,136]; B=[1,2,3;4,5,6;7,8,0]; I=eye(3); disp('A+5*B='); disp(A+5*B); disp('A-B+I=') disp(A-B+I); disp('A.*B='); disp(A.*B) disp('A*B='); disp(A*B); End 实验过程与结果打开matlab ,在命令窗口“Command Window ”中键入edit,启动程序编辑器。
输入完整程序后利用save as 储存为M 文件,文件名为EXP1。
返回主界面,在命令窗口“Command Window”中输入函数EXP1(),按下回车,得到程序运行结果如下:>> EXP1( )A+5*B=9 22 3532 70 10855 118 136A-B+I=4 10 178 41 7213 70 137A.*B=4 24 6048 225 468140 624 0A*B=192 228 84738 873 3061284 1518 528实验结果分析(1)利用MATLAB提供的disp函数既可以输出表达式、数值,也可以输出字符串,其调用方式为:disp(表达式或数值)、disp(‘待显示字符串’);(2)在MATLAB的矩阵运算中,+、-运算符通用,表示矩阵相加、减;*与.*不同在于*表示矩阵乘法,而.*表示矩阵对应位置元素相乘,所以*要求两个矩阵的行、列数互为转置,而.*则要求两个矩阵行、列数要相同;(3)使用eye可以获得单位矩阵函数(矩阵对角线处元素为1,其余元素为0),矩阵的阶数由括号内的值决定,格式为eye(n),n为矩阵阶数。
操作系统课程实验报告实验题目:Linux进程信号通信、进程消息通信专业软件工程学生姓名班级学号教师陈兴国指导单位计算机学院日期 2016-9-30一、实验目的1.了解Linux的信号,熟悉Linux系统中进程之间软中断通信的基本原理2.学习如何利用消息缓冲队列进行进程间的通信,并加深对消息通信机制的理解。
二、实验指导1.kill(),signal(),lockf()系统调用kill()系统调用系统调用格式:int kill(pid,sig)参数定义: int pid,sid;pid是一个或一组进程的标识符,sig是要发送的软中断信号。
pid>0时,核心将信号发送给进程pid;pid=0时,核心将信号发送给与发送进程同组的所有进程;pid<0时,核心将信号发送给搜有用户标识符真正等于发送进程的有效用户标识号的进程。
signal()系统调用预置对信号的处理方式,允许调用进程控制软中断信号。
系统调用格式:signal (sig,function)参数定义:Signal (sig,function)int sig;void (*func)();sig用于指定信号的类型,sig为0则没有收到任何信号。
function:在该进程中的一个函数地址,在核心态返回用户态时,它以软中断信号的序号作为参数调用该函数,对除了信号SIGNAL,SIGTRAP和SIGPWR以外的信号,核心自动地重新设置软中断信号处理程序的值为SIG_DFL,一个进程不能捕获SIGKILL信号。
lockf()系统调用用作锁定文件的某些段或者整个文件。
系统调用格式:lockf(files,function,size)参数定义:int lockf(files,function,size)int files,function;long size;2.消息的创建,发送和接收使用系统调用msgget(),msgsnd,msgrec,及msgctl()函数编写消息的发送和接收程序三、实验过程描述与结果分析1.Linux进程信号通信#include <stdio.h>#include <signal.h>#include<unistd.h>#include <stdlib.h>void waiting(),stop();int wait_mark;/*用来避免锁的竞争,保证p1,p2无法在同一时刻获得文件的锁,即lockf(stdout,1,0)*/main(){int p1,p2,stdout;signal(SIGINT,stop);/*if press the ^c or ^break ,jump to stop function*/ while((p1=fork())==-1) ;/* create child process p1*/if(p1>0){while( ( p2=fork() ) ==-1);/* create child process p2*/if(p2>0){wait_mark=1;sleep(5);/* 接收到^c信号,转stop函数*/waiting();kill(p1,16); /*向子进程p1发送软中断信号16*/kill(p2,17);/*向子进程p2发送软中断信号17*/wait(0);/*wait()系统方法,父进程会一直等待,直到子进程因暂停或者终止发来软中断信号为止*/wait(0);printf("Parent process is killed!\n");exit(0);}else{//p2被杀死的逻辑,响应kill(p1,17);wait_mark=1;signal(17,stop);/*接收到父进程发来的软中断信号,然后执行stop函数*、*/waiting();lockf(stdout,1,0);/*锁定输出,使得下面的语句可以正常输出打印*/printf("Child process 2 is killed by parent!\n");lockf(stdout,0,0);/*解锁输出*/exit(0);/*正常终止子进程p2,使得父进程跳出wait(0),得以继续执行*/ }}else{//p1被杀死的逻辑,响应kill(p2,16);wait_mark=1;signal(16,stop);waiting();lockf(stdout,1,0);printf("Child process 1 is killed by parent!\n");lockf(stdout,0,0);exit(0);}}void waiting(){while(wait_mark!=0);}void stop(){wait_mark=0;}按住Ctrl+c,可见执行结果2.Linux进程消息通信1.server.c#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#include <stdio.h>#define MSGKEY 75struct msgform{long mtype;char mtext[256];};int main(int argc, char const *argv[]) {struct msgform msg;int msgqid;int j,pid,*pint;msgqid=msgget(MSGKEY,0777|IPC_CREAT);for(;;){msgrcv(msgqid,&msg,256,1,0);pint=(int*)msg.mtext;pid=*pint;printf("server:receive from pid %d\n",pid);msg.mtype=pid;*pint=getpid();msgsnd(msgqid,&msg,sizeof(int),0);}return 0;}2.client.c#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#include <stdio.h>#define MSGKEY 75struct msgform{long mtype;char mtext[256];};int main(int argc, char const *argv[]){struct msgform msg;int msgqid,pid,*pint;msgqid=msgget(MSGKEY,0777);pid=getpid();pint=(int*)msg.mtext;*pint=pid;msg.mtype=1;msgsnd(msgqid,&msg,sizeof(int),0);msgrcv(msgqid,&msg,256,pid,0);printf("client:receive from pid%d\n",*pint);return 0;}运行结果:四、自我评析与总结1.你认为你完成的实验那些地方做得比较好或比较出色做的相对比较快,一些命令比较熟悉一点2.差距与局限,什么地方做得不太好,或什么地方可以做得更好程序的编写,C语言遗忘的很严重,还是得常用3.从本实验得到的收获。
通信与信息工程学院2012/2013学年第二学期软件设计实验报告模块名称Visual C++专业广播电视工程学生班级B100117学生学号B10011714学生姓名王建明指导教师田炜题目一:P021E实验要求:设计一个简单的文本编辑器,该系统要求对一个文本文件中的容进行各种常规操作,例如:(1)编辑文本;(2)保存、打开指定位置的文本文件;(3)具有输入输出界面。
1、问题分析与方案设计。
本次程序主要为了让我们了解C语言中对于文件的一般操作。
文件是程序设计中的一个重要概念。
操作系统是以文件为单位对数据进行管理的,也就是说,如果想找外部介质上的数据,必须先按文件名找到所指定的文件,然后再从该文件中读取数据。
C语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)数据顺序组成。
根据数据的组织形式,可分为ASCII文件和二进制文件。
ASCII文件又称文本(text)文件,他的每一个字节放一个ASCII代码,代表一个字符。
二进制文件是把存中的数据按其在存中的存储形式原样输出到磁盘上存放。
在文件系统中,“文件指针”是一个非常重要的概念,通常在进行关于文件操作的C程序时,会定义一个结构体变量的文件指针(FILE *fp),以便于C语言程序能够准确的对文件进行访问及操作。
本次实验程序包含了简单地对于文件的打开、插入、删除、查找、替换、显示、保存的操作,通过对于文件指针的运用以及各种文件指令的运用,基本达到了实验的要求。
在本次实验中,按照顺序程序的设计方法,加以熟练地运用C程序中主函数与一般函数之间的熟练调用,顺利的实现了实验要求的各种结果。
程序中用到的核心方法包括:文件的打开与关闭、文件的读写、文件的定位以及文件的出错检测等。
其中包括了fopen、fclose、fputc、fgetc、fread、fwrite、rewind、fseek、ftell和ferror等函数。
这些函数对算法的实现起了很大的作用具体算法实现过程如下图所示。
实验报告课程名:软件工程与数据库概论任课教师:胥备专业:信息工程学号:14130130姓名:马一鸣二○一六至二○一七年度第 2 学期南京邮电大学通达学院实验报告一实验名称:SQL语言的应用指导教师:胥备实验类型:验证实验学时:4*2实验时间:2017.4.18一、实验目的和要求1、练习使用SQL SERVER数据库产品,熟练使用查询分析器和企业管理器;2、掌握SQL语言中常用的语句:用DDL创建基本表;用DML插入、修改、删除数据;用QL查询数据等。
二、实验环境(实验设备)硬件:个人计算机;软件:MS SQL SERVER环境。
三、实验原理及内容1.创建实验数据库数据库名称:M14130112;操作步骤:Create DataBase M14130112;2.打开刚刚创建的数据库操作步骤:Use M141301123.在查询分析器中要完成的实验内容1.建立如下表,并插入数据:说明:应为表建立主键、其他完整性约束可自己添加;表中数据也可以自己设计课程课use M14130112;create table s(sno char(20) not null unique,sname char(20),age int,sex char(1),primary key(sno));create table c(cno char(20),cname char(20),chour int,credit int,ctype char(20),primary key(cno));create table sc(sno char(20),cno char(20) ,grade int,primary key(sno,cno),foreign key(sno) references s(sno),foreign key(cno) references c(cno));insert into s values('S1','WANG',20,'M');insert into s values('S2','LIU',19,'F');insert into s values('S3','CHEN',22,'M');insert into s values('S4','WU',19,'M');insert into s values('S5','LI',21,'F');insert into c values('C2','MATHS',64,4,'基础'); insert into c values('C4','PHYSICS',48,3,'基础'); insert into c values('C3','C',32,2,'专业基础'); insert into c values('C1','DB',48,3,'专业'); insert into c values('C5','OS',32,2,'专业'); insert into sc values('S1','C2',89);insert into sc values('S2','C1',70);insert into sc values('S3','C2',NULL);insert into sc values('S1','C5',80);insert into sc values('S4','C3',NULL);insert into sc values('S5','C4',78);insert into sc values('S2','C4',79);2.对以上数据完成以下功能:(1)把基础课的学分提高1学分,学时提高8学时;update cset credit=credit+1,chour=chour+8where ctype='基础';(2)把MATH课的非空成绩提高10%;update scset grade=grade *1.1where grade is not null and o in(select cno from c where cname ='MATHS');(3)当所有学生不选修PHYSICS课程时,删除相应数据;delete from c where cname='PHYSICS' and cno not in(select cno from sc) ;(4)LIU同学因病退学,删除相应数据。
南京邮电大学软件工程实验报告实验报告( 2015 / 2016 学年第二学期)课程名称软件开发技术基础实验名称实验二小型MIS系统的分析与设计实验时间2016 年 5 月18 日指导单位计算机学院指导教师王传栋学生姓名班级学号学院(系) 通信学院专业电子信息工程实验报告三、实验原理及内容1、理解需求进行数据建模1) 绘制概念模型ER 图。
2) 将第1 步得到的ER 模型,转换为DB 的关系模型。
STUDENT(SNO,SNAME,SEX,CLASS_NO,DEPARTMENT_NO)COURSE (CNO, CNAME, CREDIT, CREDIT_HOUR, CPNO, TNO) TEACHER (TNO, TNAME, TITLE, SEX)SC (SNO, CNO, GRADE)ADMIN (ANO, ANAME, SEX)1) 绘制系统的用例图。
2) 特殊用例,要进行用例详述。
建模中分别以系统角色学生、教师和教务员绘制分层DFD 图。
顶层数据流图:学生管理系统一层数据流图:管理学生模块数据流图:管理学生模块数据流图:选课管理与成绩管理模块数据流图:4、在第3 步骤的基础上,绘制系统的体系结构图:学生管学生教师系统查询成查询基录入成修改成删除成查询成录入基修改学删除学查询信5、绘制系统的对象模型,完成:1) “类图”,可以针对不同的业务场景分别绘制;在学生选课情况下,各个类之间的关系如下图所示:2) 特殊的业务类,根据需要绘制“状态图”教师录入成绩的状态图如下图所示:3) 特殊的业务场景,根据需要绘制“顺序图”教师成绩管理顺序图如下:。
软件工程实验四软件工程实验四实验目的本次实验旨在加深学生对软件工程的理解,通过实践的方式巩固和应用所学的软件工程知识,加强对软件开发过程的掌握,并学习使用项目管理工具和版本控制工具。
实验过程1. 创建项目首先,我们需要创建一个新的软件项目。
在本次实验中,我们将创建一个简单的待办事项管理系统。
2. 需求分析在开始开发之前,我们需要进行需求分析,明确系统的功能和特性。
根据实验要求,我们的待办事项管理系统应该具备以下功能:- 用户可以添加待办事项- 用户可以查看待办事项列表- 用户可以更新待办事项的状态(进行中/已完成)- 用户可以删除待办事项3. 设计系统架构在进行具体开发之前,我们需要设计系统的架构。
首先,我们决定使用Web技术来实现我们的系统,并选择使用MVC架构模式。
- 模型(Model):负责数据的存储和处理- 视图(View):负责用户界面的展示和与用户的交互- 控制器(Controller):负责接收用户的请求,并调用模型和视图进行处理4. 编码实现根据需求分析和系统设计,我们可以开始进行编码实现了。
首先,我们创建一个`Todo`模型,用于表示待办事项的数据结构。
然后,我们创建一个`TodoController`控制器,用于接收用户的请求并调用相应的模型方法进行处理。
最后,我们创建一个`TodoView`视图,用于展示待办事项列表并与用户进行交互。
5. 软件测试在完成编码实现之后,我们需要进行软件测试,确保系统的功能和特性都能正常工作。
我们可以编写一些测试用例,并使用自动化测试工具来运行这些测试用例。
如果测试通过,则说明系统的功能正常;如果测试失败,则需要进行修复和优化。
6. 版本控制为了方便团队协作和代码管理,我们可以使用版本控制工具来管理我们的代码。
常见的版本控制工具包括Git和SVN等。
我们可以根据需要选择合适的版本控制工具,并进行代码的提交、更新和协作开发。
实验总结通过本次实验,我进一步了解了软件工程的概念和方法,学会了使用项目管理工具和版本控制工具。