软件开发方法与技术考题

更新时间:2024-06-20 14:20:02 阅读量: 综合文库 文档下载

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

江 南 大 学

《软件开发方法与技术》期末大作业(2012) 一、简答题 1.简述状态图和时序图及其它们各自的特点。 (一)状态图:描述了一个特定对象在其生存期间的所有可能状 态以及引起状态跃迁的事件。 特点: 1.“事件”是引起状态跃迁(转移)的内部消息 2.“状态图”主要用于描述一个对象在其生存期间的动态行为,表现一个对象所经历的状态序列,引起状态转移的事件(event),以及因状态转移而伴随的动作(action); 3.所谓对象可以是类的实例、用例的实例或整个系统的实例.大多数面向对象技术用状态图描述单个对象(类的实例)在其生命周期中的动态行为; 4.状态图是对某个类对象的补充; 5.状态图在检查、调试和描述类的动态行为时非常有用; 6.状态图是UML中对系统的动态行为建模的5个视图之一 (二)顺序图:也称时序图, 它是一种描述对象之间按照时间顺序进行交互的图,它由一组相互协作的对象以及它们之间可发送的消息组成,它强调消息之间的顺序。 顺序图组成:主要有横向和纵向两个轴。 其中:横向轴排列的是参与交互的对象,纵向轴表示时间。 说明: 1.对象间的排列顺序并不重要,但一般把表示参与者的对象放在 图的两侧,主要参与者放在最左边,次要参与者放在最右边(或 表示人的参与者放在最左边,表示系统的参与者放在最右边); 2.纵向轴按时间顺序列出各对象所发出和接受的消息。 2.简述CLR及其工作流程。 CLR是.NET框架的基础,负责在程序运行时加载并管理(编译、运行)代码。所有的.NET应用程序都只能在CLR下运行,即 CLR是.NET的运行系统。 CLR工作流程如下图所述:

1

程序集 基类 CLR 加载器 验证 JIT编译器 说明: 应用程序 ⑴ 首先CLR加载程序集(应用程序集以及任何引用的开发程序集)和基类库程 序集; ⑵ 应用程序类有选择地进行类型验证和合法访问安全检查; ⑶ 依据程序集内包含的元数据信息加载MSIL代码; ⑷ 调用即时/实时(JIT,Just In Time)编译器将其实时编译成本地机器代码; ⑸ 运行应用程序(本地机器代码程序) 作 业 专 用 纸

2

3.设有两组类CA、CB和CX、CY,CA和CB单向关联,CX和CY是依赖关系。试论述,在VC++ MFC下“#include B.h”和“#include Y.h”可能出现的位置。之后给出关联关系、依赖关系以及聚合关系异同的简述。 CA CB CX CY 依照题目所述画出的类图关系。 #include B.h将在类CA的文件中(CA.cpp),#include Y.h将在类CX的文件中(CX.cpp)。在MFC中接口以头文件的形式出现。由于CA和CB单向关联,CX和CY是依赖关系。所以必然在CA的代码中调用B以及B的相关方法,在类CY的文件中也必然调用CX以及CX的相应方法。所以必包含其文件,所以对于CA以及CX来说,CB和CY相当于一个接口。下面用代码阐述思想: Public class CA public class CB { { CB theB;//CB实例化对象 public CB(){} Public CA()//CA的构造函数 fuction1(){}//CB的一个方法 { } theB.fuction1();调用CB方法 } } 同理对于CY与CX的代码也可以用相同的方式表述。 依赖关系与关联关系的区分:事实上,如果类A和类B之间有关联关系,那么类A和类B之间也就有依赖关系了。但如果两个类之间有关联关系,那么一般只要表示出关联关系即可,不用再表示这两个类之间还有依赖关系。与关联关系不同的是依赖关系本身不生成专门的实现代码。并且依赖关系本身不仅仅限于类之间的描述,其他建模如用例之间,包与包之间也可以使用依赖关系。 对于聚合关系来说它是一种特殊的关联关系,它表示类之间整体与部分的关系。 3 4.试给出在.NET下应用程序部署(发布)的步骤(这道题要有所不同自己要改一下显示出是自己做过)。 1、VS.Net中新建一个安装与布署项目,选择“安装向导”,名称为你的应用程序名称,选择好方案保存位置,“确定”,出现相应提示,按“下一步”,选择一种项目类型,我选择了默认的第一个,“下一步”。 2、选择要包括的文件,这里要注意了! 如果你需要让用户可以卸载你的应用程序,除了添加你的应用程序名称外,还需要选择一个名为msiexec.exe的文件,注意:(1)如果是WIN98下的安装,请选择WIN98操作系统目录下的msiexec.exe文件(一般在c:/windows/system目录下);(2)如果是其他,比如WIN2K系列,请选择该操作系统目录下的msiexec.exe文件(一般在/winnt/system32目录下)。 3、选择下一步,下一步或“完成”,进入项目方案中。在左边“目标计算机上的文件系统”下,有个“应用程序文件夹”,点击之,找到msiexec.exe文件,按鼠标右键,“创建msiexec.exe 的快捷方式”,再点中新出现的项目“msiexec.exe 的快捷方式”,重命名为你需要卸载的说明文字。 4、点击右边的解决方案资源管理器中按点击你的项目名称(即第二行),出现“XXX布署项目属性”字样,栏中有一个“ProductCode”的属性,属性值中有“{8DC61EAE-B624-491D-AD49-FFAEWRERRE}”类似字样,选中它“复制”。 5、再次点击你的卸载快捷方式名称,再到右下角属性栏中,有一个叫Arguments的属性栏,在属性栏中首先填入“/x”后加一个空格,再“粘贴”,将ProductCode的属性值COPY至此。 6、将此快捷拖入用户的“程序”菜单中,这样就可以在“运行”-“程序”菜单中看到“卸载XXXX”了。 7、再在VS.Net的顶部菜单栏中“生成”-“生成 XXXX”(XXXX为你的项目名称).至此整个的程序就发布完成。 江 南 大 学 大

4

二、试完成下列关于“图书馆管理信息系统”之读者查询机制说明层类图。 作 业 专 用 纸

5

三、试完成下列关于“图书馆管理信息系统”之读者先登录后查询读者借阅信息、修改密码工作顺序图。 江 南 大 学 大

6

四、试完成下列关于“图书馆管理信息系统”中工作人员业务机制之还书业务工作状态图。 Active 开展业务待续do/ 启动还书业务do/ 启动借书业务Cancel 选择还书业务 End 还书业务待续Do/还书业务 Do/罚款单报打印 已罚款 OK 完成还书处理 检验是否超期 Do/读取图书信息 完成打印 准备还书业务罚款单据打印Do/打印罚款单据 超期处理When(超期) Do/按相应指标收取罚未超期 实施还书处理Do/将所还书的所有信息存入“借阅历史档案”中,“借阅图书文件”中注销图书借阅信息 完成超期处理 作 业 专 用 纸

7

五、编码 1.在MFC下基于ODBC数据库环境,利用SQL语句对数据源(库)表进行查询、插入、删除、修改的基本操作编程。要求利用CRecordset::Open() 和CDatabase::ExecuteSQL()两种方式执行SQL语句。注意:数据输出利用消息对话框。 (一) CRecordset::Open()方法执行 查询: CString strSql; UpdateData(); CInfList iList; strSql =L“SELECT * FROM InfList WHERE Name=‘王刚‘\iList.Open(CRecordset::dynaset, strSql, CRecordset::none); iList.Close(); 插入: CString strSql; UpdateData(); CInfList iList; strSql =L“INSERT [INTO] InfList (Name,Password) VALUES(‘王刚’,’123’) \iList.Open(CRecordset::dynaset, strSql, CRecordset::none); iList.Update( ); iList.Close(); 修改: CString strSql; UpdateData(); CInfList iList; strSql =L“UPDATEDATA InfList SET Password=1234 Where Name=’王刚’\iList.Open(CRecordset::dynaset, strSql, CRecordset::none); iList.Update( ); iList.Close(); 删除: CString strSql; UpdateData(); CInfList iList; strSql =L“DELETE * from InfList Where Name=’王刚’\iList.Open(CRecordset::dynaset, strSql, CRecordset::none); iList.Update( ); iList.Close(); (二)CDatabase::ExecuteSQL()执行 查询: CString strSql; CInfList iList;

8

CDatabase StuDB; StuDB.Open(L“StudentDB\ iList.Open(CRecordset::dynaset, NULL, CRecordset::none); strSql =L“SELECT * FROM InfList WHERE Name=‘王刚‘\ StuDB.ExecuteSQL(strSql); iLis.Close(); 修改: CString strSql; CInfList iList; CDatabase StuDB; StuDB.Open(L“StudentDB\ iList.Open(CRecordset::dynaset, NULL, CRecordset::none); strSql =L“UPDATEDATA InfList SET Password=1234 Where Name=’王刚’\ StuDB.ExecuteSQL(strSql); iList.Update( ); iLis.Close(); 插入: CString strSql; CInfList iList; CDatabase StuDB; StuDB.Open(L“StudentDB\ iList.Open(CRecordset::dynaset, NULL, CRecordset::none); strSql =L“INSERT [INTO] InfList (Name,Password) VALUES(‘王刚’,’123’) \ StuDB.ExecuteSQL(strSql); iList.Update( ); iLis.Close(); 删除: CString strSql; CInfList iList; CDatabase StuDB; StuDB.Open(L“StudentDB\ iList.Open(CRecordset::dynaset, NULL, CRecordset::none); strSql =L“DELETE * from InfList Where Name=’王刚’ \ StuDB.ExecuteSQL(strSql); iList.Update( ); iLis.Close();

9

2.在CLR下基于SQL Server数据库环境,利用SQL语句对数据源(库)表进行查询、插入、删除的基本操作编程。数据输出利用Console::WriteLine函数。 到时要随机应变自己学会修改。

10

⑵ 基于SQL Server数据库 using namespace System::Data::SqlClient;(建立连接必考) String^ Source=L\ L\ L\ SqlConnection^ conn=gcnew SqlConnection(Source); conn->Open(); 其中,连接的数据库服务器是SQL Server,这里采用默认方式。 步骤1:建立SQL Server数据库StudentDb和slist表 步骤2:建立一个CLR之Form项目 步骤3:手工添加浏览数据库表slist的实现代码 void ExecuteNonQueryTest() { String^ update=L\姓名='刘邦' WHERE 姓名='项羽'\ String^ Source=L\ +L\ SqlConnection^ conn=gcnew SqlConnection(Source); conn->Open(); SqlCommand^ Cmd=gcnew SqlCommand(update,conn); int rint=Cmd->ExecuteNonQuery(); Console::WriteLine(L\ conn->Close(); } void ExecuteReaderTest() { String^ select=L\ String^ Source=L\“ +L\ SqlConnection^ conn=gcnew SqlConnection(Source); conn->Open(); SqlCommand^ Cmd=gcnew SqlCommand(select,conn); SqlDataReader^ reader=Cmd->ExecuteReader(); while(reader->Read()) { Console::WriteLine( L\ reader[2], reader[3], reader[4]); } conn->Close();

11

} void ExecuteScalarTest() { String^ select=L\姓名FROM slist\ String^ Source=L\ +L\ SqlConnection^ conn=gcnew SqlConnection(Source); conn->Open(); SqlCommand^ Cmd=gcnew SqlCommand(select,conn); Object^ scalar=Cmd->ExecuteScalar(); Console::WriteLine(scalar); conn->Close(); }

12

13

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

Top