《计算机导论》实验报告
2011/2012 第一学期
系别:计算机科学与技术
班级:网络工程(1)班
姓名:庙世义
学号:1110421049
指导教师:谢飞
实验一 Windows操作系统安装
一、实验目的
1.掌握硬盘的分区与格式化等操作。
2.掌握windows操作系统的安装方法及步骤。
3.熟悉VMware虚拟机软件的使用
二、实验内容
1.创建一个新的虚拟机环境作为后继实验平台。
(1)双击桌面“Microsoft Virtual PC”图标,打开Virtual PC虚拟机软件。
(2)在Virtual PC菜单中选择“文件”—> “新建虚拟机向导”,进入“欢迎使用新建虚拟机向导”对话框,点击下一步,选择“新建一台虚拟机”,指定虚拟机的名称和位置,操作系统选择“Windows XP”,使用推荐(或更改分配)内存大小,选择新建虚拟硬盘,指定名称和位置,创建完成。
(3)运行虚拟机,在“CD(C)”菜单中载入ISO映像,指定一个有效的Windows XP安装盘的镜像文件。
2.在新建虚拟机中,使用Partition Magic分区软件对硬盘进行合理的分区操作。
(1)启动新建的Windows XP虚拟机平台。
(2)选择光盘启动菜单中的“PQ8-图形分区软件”选项,进入Partition Magic分区软件。
(3)将硬盘分为:主分区,在扩展分区中建立两个逻辑驱动器。具体步骤如下:
1、单击右键,选择建立;
2、选择主要分割磁区,格式选择NTFS,选择20000.0MB内存;
4、选择逻辑分割磁区,格式选择NTFS,选择20000.0MB内存;
5、选择逻辑分割磁区,格式选择NTFS,选择剩余内存。
3.安装Windows XP系统:
(1)重新启动Windows XP虚拟机平台后,选择光盘启动菜单中的“WINXP SP3精简安装版”选项,进入Windows XP系统安装过程。
(2)具体安装过程如下:
选择格式化,重新启动Windows XP虚拟机平台选择光盘启动菜单中的“WINXP SP3精简安装版”选项,进入Windows XP系统安装过程,等待约45分钟即可。
三、实验过程中遇到的问题及解决方法
1、问题:在运行虚拟机时,一开始常常忘记在CD菜单中载入ISO映像。
解决方法:多加练习,在“CD(C)”菜单中找到载入ISO映像。
2、问题:不能熟练的掌握步骤
解决方法:多加练习
四、附: 1、创建的Windows XP虚拟机平台的截图。
2、使用Partition Magic分区软件对硬盘进行分区操作后的硬盘状态截图。
3、Windows XP系统安装完毕后首个桌面状态截图。
实验二 Word 20## 文字处理软件
一、实验目的
1.掌握文档的输入与编辑、格式设置等操作。
2.掌握表格的创建与编辑操作。
3.掌握图文混排与公式的输入操作。
二、实验内容
1.输入文本(见实验指导书第88页),完成如下操作
(1)文章标题设为宋体、小四号字、加粗和剧中。
(2)正文中文设为楷体,英文设置为Times New Roman字体,五号字,段落首航缩进2字符,左、右各缩进1字符。
(3)段落的段前段后均为0行,1.5倍行距。
(4)页面设置上、下页边距为2cm,左、右页边距为1.5cm,纸型为A4。
(5)页眉内容设置为“前辈先哲”,宋体、五号、居中。
(6)将文本中的“兔”字替换为“猫”。
(7)编辑完成后,命名为“实验3.1.doc”,保存在“我的文档”中。
2.创建如下表格(见实验指导书第89页),格式要求如下:
(1)表的标题为宋体,小五号,黑体,居中。
(2)表内文字为宋体,小五号,水平居中,垂直居中。
(3)计算总成绩(考试成绩+平时成绩)。
(4)表格外框线为1.5磅实线,内框线为1磅实线,整个表格居中。
3.制作如下文档(实验指导书第90页),格式说明如下:
(1)艺术字标题为32号字体。
(2)文字为五号楷体。
(3)首字符下沉3行,距正文0cm。
(4)图片环绕方式为“四周型”。
三、实验过程中遇到的问题及解决方法
1.问题:开始时,找不到首字下沉的位置。
解决方法:向同学请教。
2.问题:将“兔”换成“猫”一个一个替换很麻烦
解决方法:在文本中选定“兔”,在“替换”命令中选择“替换为”将“猫”输入,单击“全部替换”即可完成,方便简洁。
四、附:实验文档打印
实验三 Excel 20## 电子表格处理软件
一、实验目的
1.掌握Excel工作簿的建立与保存方法。
2.掌握Excel中公式与函数的使用。
3.掌握Excel中制作饼图的方法。
4.掌握Excel中管理数据的方法。
二、实验内容
1.创建工作表(实验指导书第125页)
根据工作表中数据,计算“姓名”列的“房价款”。房价款按“3200×住房面积×(1-0.005×工龄-0.01×房屋年限)”公式计算,并以单元格格式中货币类的“¥”货币符号加上小数点后2为小数(例:¥44 886.20)的格式表示,最后存盘。
2.制作饼图(见实验指导书第126页),要求如下:
(1)图中文字部分设置为黑体、字形倾斜、12号字、颜色为红色。
(2)图形边框为无色、背景为黄色、饼图全部为绿色。
(3)标题为“数计学院教师职称结构图”,显示名称和百分比。
数据为:教授20;副教授30;讲师30;助教20.最终效果如图所示。
3.数据源如4.74所示(实验指导书第126页),并完成如下要求:
(1)填充“总人数”。利用公式计算总人数:总人数=课容量-课余量。
(2)填充“具体时间”。说明:“具体时间”填充时需要参考“日期”和“节次”,例如,“星期5,第3大节”的“具体时间”要表示成“53”,其余以此类推。
(3)按照“具体时间”为主要关键字,“课程名称”为次要字全部降序排序。
(4)将“具体时间”为“71”的单元格背景颜色改为红色。
(5)将“具体时间”为“72”的单元格文字颜色改为蓝色。
三、实验过程中遇到的问题及解决方法
1问题:分不清降序和升序。
解决方法:操作一下,弄清问题
2、问题:在表格中没有72这个数字。
解决方法:选54代替72就行了。
四、附:实验文档打印
第二篇:计算机导论实验报告样例
CORBA分布式应用程
序实验报告
班级: 计算机系2000级D班
学号: 00184271 姓名: 温颖文
1
CORBA分布式应用程序实验报告
2000级计算机科学系D班 温颖文 00184271
一. 实验名称
使用CORBA实现一个分布式应用程序。
二. 实验日期
20xx年2月14日到2月29日
三. 实验背景
在结束了《分布式对象技术》的学习后,为了加深对分布式技术的理解,尤其是对基于体系结构设计得相当精妙的OMA参考模型的CORBA技术的理解,我选择了图书馆管理系统作为应用背景,希望尽量使用CORBA中的各种相关技术,编写了这个系统。
四. 实验目的
通过这个实验,进一步加深对分布式对象技术的理解,并深入地理解CORBA技术的整 个框架和其中的一些细节,实现一个分布式应用系统。
五. 实验环境
使用JDK1.3,VISIBROKER 4.5和JBUILDER8进行开发。
六. 实验过程
1. 步骤概述
在实现CORBA分布式应用程序的过程中,需要依次进行以下步骤: 2
1. 编写接口定义文件(Library.IDL)
2. 编写IDL中定义的各个接口的对象实现
3. 编写服务程序。
4. 编写客户程序。
2.重点详述
(1) 需求分析与设计
图书馆管理系统是一个在技术上比较成熟的领域,对图书馆信息管理的需求已经是比较明确的了,主要集中于对图书和用户情况的管理,最主要的功能是为用户提供方便的借阅服务和对图书的借阅情况作一个准确的记录,全面管理图书的借阅和归还工作。
本次实验我以图书馆信息管理系统作为应用领域,利用CORBA技术构造一个简易的系统,基于实验的目的,所以我对系统的功能做了一些简化,只是提供了一些的基本功能,列表如下: 函数接口
addBook()
updateBook()
findBook()
borrow()
returnBook()
query()
AddBorrower()
FindBorrower() 基本功能 添加图书 更新图书 查找图书 借阅图书 归还图书 根据用户提供的条件查询图书 添加用户 查找用户
实际上,我在接口和服务端是实现了removeBook()和removeBorrower()的功能的,但没有在客户端提供,客户端的功能还不是很完善,这是有待解决的。
下面开始根据开发的步骤,逐步讨论其中的各个重要问题。
(2) 接口设计
接口设计,也就是编写IDL文件,是实现该系统的第一步,在设计接口的过程中,考虑到需要对外提供的功能,我设计了三个接口,分别是管理员接口Manager,图书接口Book和用户接口Borrower;而为了在返回信息后减少客户端对服务端的访问次数,我设计了一个结构类型BookInfo和以此为基本类型的序列Books;除此以外,还有一些异常的定义,详见Library.idl文件。
在接口设计中值得一提的是两个问题,一个是关于BookInfo结构的设计,正如上述所言,设计这个结构和它的序列是为了减少通信的次数,以降低程序的开销,这点在课本中都已经有所叙述了。另一个问题就是操作的设计,第一点中提到了系统中的基本操作,但是将这些操作设计在哪个接口之内却很值得考虑。我觉得添加、删除、查找功能当然应该是属于管理员接口Manager的,但是更新操作我觉得应该分别设置在Book和Borrower接口中比较好,因为当Manager接口将引用返回给客户端以后,Manager就可以结束操作,去处理其它任务,而使用Book和Borrower各自的CORBA对象进行服务,使得服务的效率比较高。
3
(3) 对象实现程序的编写
在这部分就是对每个IDL文件中定义的接口中的操作提供相应的实现。我觉得这里值得讨论的是三个问题:
(a)数据库访问问题
其实数据库的访问就是使用JDBC提供的API访问数据库,本来就只有几个语句,但我觉得这里模块化的思想是非常值得学习的。我在这部分基本上是参考着课本第一章的程序实现的,将数据库的所有基本操作封装成为一个类,分离了业务和持久性的代码,提高了可用性。在数据库访问方面,我根据需要交错使用了存储过程和SQL语句来实现对数据库的操作。
(b) 伺服对象的状态初始化问题
我们在实现的构造函数中必须根据情况考虑访问数据库得出当前伺服对象的状态,这点是非常重要的。我在刚刚开始编写程序并进行调试时,就曾经因为没有在构造函数中从数据库中得到对象的状态,以致多次出现了“奇怪”的异常,花了很多时间。
(c) 结构序列SEQUENCE的传送问题
这又是我在写程序中碰到的又一个让我烦心的问题。在编写QUERY函数时,我像一般情况那样,直接访问数据库后使用游标赋值给结构数组BookInfo[],但程序却多次在这里抛出异常,经过了很长时间的调试,我才发现了三个问题,一个是在结构中的所有String变量都必须初始化,否则程序就会抛出异常;第二是传送的数组必须与实际大小一致,不能随便new一个比较大的数组后直接填内容,否则也会抛异常的;第三是数据库中不能出现中文,否则返回这样的结构(序列)时也会抛出异常的,这个问题我始终解决不了,我知道有同学用wstring好像可以传一个String的内容,如果老师有什么办法的话请告诉我一下,谢谢老师。
(4) 服务程序的编写
在服务端,我采用了PERSISTENT,USE_SERVANT_MANAGER,NON_RETAIN策略的组合。实际上,就是采用SERVANT_LOCATOR的策略了。为了更好地利用资源和组织CORBA对象,我在服务端实现了资源池结构,程序的组织结构示意如下:
下面详细讨论实现中一些问题:
(a) 资源池的管理
我在资源池存放的是对象实现以及它在数据库中的唯一id,在我的设计中,
4
实际上就是CORBA对象的唯一id了。本来我设计的时候是要用MAP实现的,但后来因为我想利用VECTOR可以动态增减的机制来实现对象的循环清理策略
(ROBINRUN),所以最终设计了KEY和两个VECTOR来存储相应的内容。对
于资源池,除了基本的get(),put(),applicable()和count()外,最重要的就是clear()函数:我在这里使用了一个内部类,并使用了一个独立的线程,不断在设定的间
隔内对资源池的对象的进行清理,正如上述所言,这里我就利用了VECTOR自
适应的性质,实现了一种比较简单的循环清理策略。
(b) 具体的管理过程
在客户端发出请求后,Server端就会调用已经注册的SERVANT_LOCATOR
的PREINVOKE方法,在这里,通过操纵资源池的对象得到相应的伺服对象进
行服务,策略简单:如果池中有相应的对象,则直接使用,否则就new一个返
回并放入池中。这里我简化了过程,本来应该在POSTINVOKE中才应该放入池
中的,但为了简单我就没有这样做了,这点在以后还应该改善。
(5) 客户程序的编写
客户程序实际上就是直接使用SWING组件来构造用户界面,这里我是直接使用JBUIDER来实现的,没有太多的技术含量。值得一提的是,我在Client端使用了多线程的技术。实际上,这里我考虑了很久是使用DII还是使用多线程的。最后我觉得理论上多线程加阻塞在性能上要优于使用DII加轮询。我觉得DII主要是用于那些不是很熟悉的领域,对于一个比较熟悉的领域,根本没有什么必要的。相反,使用多线程加阻塞,大大地提高了Client端的响应性。而DII加轮询的做法虽然利用了SEND_DEFFERED,但实际上轮询对CPU的占用是不言而喻的,所以我经过考虑后,就将所有的操作封装在线程中,而这些线程都是设置为内部类来实现的。
七. 实验结果
在实验中,我测试了程序的各种功能,反应正常。
八. 实验总结与自我评价
通过本次实验,我进一步加深对分布式对象技术的理解,尤其是对CORBA技术和OMA参考模型的理解,获益匪浅。同时,通过自己动手,我进一步熟悉了JAVA的机制和JDBC等工具的用法,也清楚了线程等技术的操纵。
在实验过程中,我碰到了很多问题,正如前面提到的结构中的值的初始化问题、伺服对象的初始化问题等等,通过调试实在地提高了自己的动手能力。
在实验中,我使用了SWING,用过了JDBC实现对象持久性,使用了Factory的设计模式,实际上,Manager就是一个Factory对象,通过这样有效地管理了Server端的多个CORBA对象。同时,Client端使用了多线程的方法,有效提高了应用程序的响应性,而在Server端,我也使用了多线程,主线程监听请求,在每个资源池中都使用了一个线程来定期 5
清理资源池,也就是三个资源池,分别使用了三个线程来进行定期清理,来并且实现了一个简化了的资源池来管理伺服对象和CORBA对象,并通过使用SERVANT_LOCATOR策略来实现对资源池的管理。
在实验后,还留下了许多的问题让我继续去解决,推动我继续努力,争取全面掌握整套技术。首先,在Client端提供的功能还不是很多,还不足够;而且,虽然我曾经试图实现在程序中自动连接数据源,但都没有成功,这给用户带来了很多的不便;第三,Server端资源池的清理策略是非常简单的循环清理策略,而且虽然我在程序中已经设好了对应的变量,准备让用户在程序开始时就可以对三个资源池的管理策略设置参数,但最终因为时间关系没有实现;第四,虽然我在程序中使用了多线程和一个简易的资源池,但在可伸缩性方面做得还是不够。以上都是程序中存在的问题,有待进一步加强。
自我评价:我觉得自己这次在开发这个程序的过程中,没有按照软件工程的标准严格要求自己,这对于一个高年级的学生,尤其是一个即将成为软件工程方向的研究生来说是不可原谅的,综观整个开发过程,我没有把它真正当成是一个项目来做,只是当成一个用来熟悉CORBA的工具而已,如果按照软件工程的标准,我认为我只能拿70分。但我觉得从技术上的运用来看,我觉得应该能拿90分。
九. 参考文献
《分布式对象技术》 李文军、周晓聪、李师贤著 20xx年1月 北京:机械工业出版社 《java2核心技术》 Cay S.Horstmann,Gary Cornell著
李如豹 刚冬梅等译 20xx年2月 北京:机械工业出版社
6