寄生虫实验报告2(精选6篇)
篇1:寄生虫实验报告2
寄生虫实验报告
实验目的
1、掌握蛔虫受精卵、钩虫卵、蛲虫卵、鞭虫卵、微丝蚴、绦虫卵、间日疟原虫、阿米巴包囊、结肠阿米巴滋养体、日本血吸虫虫体、卫氏并殖虫虫卵、布氏姜片虫虫卵、华枝睾吸虫卵的形态、结构、特征
实验内容
常规操作:各种虫卵、蚴虫及成虫形态特征
1、蛔虫受精卵
(1)虫卵的形态观察:a受精蛔虫卵:受精卵呈宽椭圆形,大小为(45~75)μm X(35~50)μm,卵壳厚,无色透明,自外向内分为3层:受精膜、壳质层、蛔苷层。卵壳内含一个大而圆的卵细胞,其两端与卵壳间可见新月形空隙。卵壳外有一层由子宫分泌物形成的凹凸不平的蛋白质膜,被胆汁染成棕黄色。
B未受精的蛔虫卵呈椭圆形,大小为(88~94)μm X(39~44)μm,蛋白质膜及卵壳均较受精卵薄,无蛔苷层,卵内含许多大小不等的屈光颗粒。
受精卵和未受精卵外附着的蛋白质膜有时可脱落,称脱蛋白质膜。
2、钩虫
(1)钩虫卵
椭圆形,大小约(56~76)μm X(36~40)μm,卵壳较薄,无色透明。
(2)成虫
虫体细长,约1cm左右,略弯曲,活时肉红色,半透明,死后灰白色。
3、蛲虫
(1)蛲虫卵
无色透明,光镜下常见两侧不对称,一侧较平,一侧较凸,大小为(50~60)μm X(20~30)μm,卵壳厚,刚产生的虫卵内含一蝌蚪期胚胎。
(2)成虫
细小似线头状,乳白色,虫体前端角皮层膨大形成头翼。口孔位于顶端,周围有三片唇瓣。
4、鞭虫
(1)虫卵
呈纺锤形,黄褐色,大小为(50~54)μm X(22~23)μm,卵壳较厚,虫卵两端各有一个透明突起,称盖塞。卵内含有未分裂的卵细胞。
(2)成虫
外形似马鞭,前细后粗。虫体前3/5较细,后2/5较粗。口腔极小,咽管细长,外包有一串较大的杆状细胞,排列形成杆状体。雌虫长35~50mm,尾端钝圆;雄虫长30~45mm,尾端向腹面呈环状卷曲,有交合刺一根。两性成虫的生殖系统均为单管形。
5、丝虫
成虫
两种丝虫成虫的形态结构相似,虫体细长线状,乳白色,表面光滑
6、绦虫
(1)虫卵
近圆球形,直径31~43μm。卵壳薄,容易破裂,在脱离子宫是卵壳常脱落。胚膜较厚,棕黄色,光镜下呈放射状条纹。
(2)成虫
乳白色呈带状,长2~4m,由700~1000个较薄,略透明的节片组成。头节呈球形,直径约0.6~1mm,颈部为虫体最细的部分,直径约为头节的一半。颈部之后为链体,由幼节、成节及孕节组成。7,、间日疟原虫
(1)环体状
环较大,约为红细胞直径的1/3;核一个。大滋养体
形状不规则,有伪足伸出,空泡明显。核一个;疟色素棕黄色,分散在胞质中。未成熟裂殖体
核开始分裂,胞质逐渐呈圆形,空泡消失;疟色素开始集中。
成熟的裂殖体
裂殖子12~24个,排列不集中;疟色素集中,虫体充满胀大的红细胞。
配子体
圆形,占满胀大的红细胞。雌配体体核致密,较小,深红色,偏一侧;雄配子体核疏松,较大,淡红色,位于中央;疟色素分散。
8、阿米巴包囊
虫体圆球形,直径10~20μm,囊壁厚,内含1~4个细胞核,核的构造同滋养体。碘液染色后,包囊呈淡黄色,可见到核及核仁,在未成熟包囊内可见染成棕色的糖原泡及无色棒状的拟染色体,拟染色体及糖原泡随包囊的成熟而消失。粗,不均匀
9、结肠阿米巴滋养体
生理盐水涂片: 大小20~50μm,活动力缓慢,细胞质内、外质不分明,细胞核一个易见到,吞噬物细菌碎屑物;铁苏木素染色:细胞核偏位,核周染色质粒
10、日本血吸虫
(1)虫卵
椭圆形,淡黄色,大小约(74~106)μm X(55~80)μm,壳薄,无卵盖,卵的一侧有一个小棘,壳外附有坏死的组织残渣而不光滑,内含毛蚴。
(2)成虫
雌雄异体,有口、腹吸盘。雄虫:粗短乳白色或灰白色,背腹扁平,大小约(10~22)mm X(0.5~0,55)mm,口、腹吸盘均较发达,自腹吸盘后,虫体的两侧向腹面卷折形成抱雌沟,雌虫栖息于此沟并在此交配,由于抱雌沟的形成,致虫体外观似为圆柱形。雌虫:细长,前细后粗,圆柱形,肠管内含有残存的半消化的黑褐色血液,使虫体后半部呈灰褐色或黑色。大小约(12~26)mm X 0.3mm,口腹吸盘较小。
11、卫氏并殖虫
卫氏并殖吸虫成虫体肥厚,背侧略隆起,腹面扁平。活体呈红褐色,并透明。固定标本呈椭圆形,体长7.5-12mm,宽4-6mm,厚3.5-5.0mm,宽长之比约1:2。除口吸盘、腹吸盘、生殖孔、排泄孔及其附近的体壁外,全身满布体棘。口、腹吸盘大小略同,腹吸盘位于体中横线之前。卵巢与子宫并列于腹吸盘之后,卵巢分5-6叶,形如指状。睾丸分支,左右并列约在虫体后端1/3处。卵黄腺为许多密集的卵黄滤泡所组成,分布于虫体两侧。肠管分支,弯曲;排泄孔位于虫体后端腹面。虫卵金黄色,椭圆形,大小为80-118μm×48-60μm,最宽处多近卵盖一端。卵盖大,常略倾斜,但也有缺盖者。卵内含10多个卵黄细胞。卵细胞常位于正中央,从虫体排出时,卵细胞尚未分裂。
12、布氏姜片吸虫
姜片虫成虫虫体肥厚,背腹扁平,前窄后宽,形似姜片;活虫为肉红色,死虫固定后呈灰白色,虫体长20-75mm,宽8-20mm;口吸盘小,位于虫体亚前端;腹吸盘大,肌肉发达,呈漏斗状,位于口吸盘之后,肉眼可见;消化道有口、咽、食道和两肠支;两个睾丸高度分支,呈珊瑚状,前后排列于虫体后半部,1个卵巢位于睾丸之前,呈佛手状分支,子宫盘曲在卵巢与腹吸盘之间。
虫卵为长椭圆形,淡黄色,大小为130—140μm×80—85μm;卵盖不明显,卵壳薄;卵内含1个卵细胞和数十个卵黄细胞。
13、华枝睾吸虫
成虫体形狭长背腹扁平前端稍窄后端钝圆状似葵花子体表无棘。虫体大小一般为(10-25)mm×(3-5)mm。口吸盘略大于腹吸盘前者位于体前端后者位于虫体前1/5处。消化道简单口位于口吸盘的中央咽呈球形食道短其后为肠支。肠支分为两支沿虫体两侧直达后端不汇合末端为盲端。排泄囊为一略带弯曲的长袋前端到达受精囊水平处并向前端发出左右两支集合管排泄孔开口于虫体末端。雄性生殖器官有睾丸1对前后排列于虫体后部1/3呈分支状。两睾丸各发出1条输出管向前约在虫体中部汇合成输精管通储精囊经射精管入位于腹吸盘前缘的生殖腔缺阴茎袋、阴茎和前列腺。雌性生殖器官有卵巢1个浅分叶状位于睾丸之前输卵管发自卵巢其远端为卵模卵模周围为梅氏腺。卵模之前为子宫盘绕向前开口于生殖腔。受精囊在睾丸与卵巢之间呈椭圆形与输卵管相通。劳氏管位于受精囊旁也与输卵管相通为短管开口于虫体背面。卵黄腺呈滤泡状分布于虫体的两侧两条卵黄腺管汇合后与输卵管相通。
虫卵形似芝麻淡黄褐色一端较窄且有盖卵盖周围的卵壳增厚形成肩峰另一端有小疣。卵甚小大小为(27-35)μm×(12-20)μm。从粪便中排出时卵内已含有毛蚴。
篇2:寄生虫实验报告2
PB10011020 刘思轶
实验内容
本实验有两个可选题目,旅游出行和药品免疫库。本程序即为旅游出行的一个实现。
实验原题摘要如下 数据关系模式:
航班FLIGHTS(String flightNum, int price, int numSeats, int numAvail, String FromCity, StringArivCity);
宾馆房间HOTELS(String location, int price, int numRooms, int numAvail); 出租车CARS(String location, int price, int numCars, int numAvail); 客户CUSTOMERS(String custName);
预订情况RESERVATIONS(String resvKey, String custName, int resvType)系统基本功能:
1.航班,出租车,宾馆房间和客户基础数据的入库,更新(表中的属性也可以根据你的需要添加)。
2.预定航班,出租车,宾馆房间。
3.查询航班,出租车,宾馆房间,客户和预订信息。4.查询某个客户的旅行线路。5.检查预定线路的完整性。6.其他任意你愿意加上的功能。
程序功能
本系统由旅行服务提供商运营,发布在支持PHP + MySQL 的服务器上。系统默认有三个角色,游客、用户和管理员。它们的权限如下
1、游客
查询当前航班、旅馆和出租车的预订情况;
2、注册用户
游客的所用权限; 查询当前预订;
预订航班、旅馆和出租车; 退订航班、旅馆和出租车。打印旅行路线
检查预定路线的完整性。检查航班的完备性
3、管理员
注册用户的所用权限 添加航班、旅馆和出租车信息; 更改航班、旅馆和出租车信息; 注册用户;
更改用户密码和权限; 删除注册用户; 查询用户预订; 取消用户预订; 查询用户旅行线路。
运行平台
本系统在Windows 7 32位 下由PHP-now虚拟的网络运行平台上测试.所需环境为: PHP Apache MySQL PhmyAdmin 环境搭建
打开集成环境php-now文件夹,点击init.cmd,会自动安装所需环境 接着在PHP后台中载入所需要的表
CREATE TABLE FLIGHTS(flightNum varchar(30), price int(6), numSeats int(6), numAvail int(6), FromCity varchar(30), ArivCity varchar(30), PRIMARY KEY(flightNum));CREATE TABLE HOTELS(location varchar(30), price int(6), numRooms int(6), numAvail int(6), PRIMARY KEY(location));CREATE TABLE CARS(location varchar(30), price int(6), numCars int(6), numAvail int(6), PRIMARY KEY(location));CREATE TABLE CUSTOMERS(custName varchar(30), password varchar(50), type varchar(20), PRIMARY KEY(custName));CREATE TABLE RESERVATIONS(resvKey int(20)AUTO_INCREMENT, custName varchar(30), resvType varchar(20), detail varchar(20), PRIMARY KEY(resvKey));
该程序所实现的功能
1.登录功能
登陆者身份分为游客和管理员,在数据库中信息都存放在customer表中,区别为type项不同,管理员为admin,游客为users,决定了权限不同.(1)普通游客登录后界面
(2)管理员登陆后界面
2.查询功能
登入http://127.0.0.1 可以选择查询航班,旅馆和出租车.3.游客-预订功能
4.游客-管理预订信息功能
点击自己的id可进入该功能页面,可以看到自己的旅游路线和预订信息,并可以取消预订.5.游客-检查线路完整性功能
当游客预订了从A到B的机票,则必须检查啊在A定了车(去机场),在B订了车和旅馆(下飞机后坐车和住宿),以此实现完整性检查.在从nanjing to beijing的旅游路线后面点击check,会提示游客还需要在nanjing预订汽车,在beijing预定旅馆。
6.管理员-管理航班,旅馆和出租车表
可以有insert delete 和update 几种操作.delete:
直接点击cancel就可删除相应的信息。insert & update: 点击edit后,程序会自动将想要编辑的行的信息填入供管理员编辑,不用再手动输入。
7.管理员-管理用户表
可以添加新用户,对用户的权限升级,查看用户信息.用户的密码是md5加密保存的。
实验小结
仍然存在的问题: 1.软件界面过于简单,仅仅实现了功能没有在用户可用性上多做考虑。
2.新用户想要登录该系统预订必须要由管理员登入信息后才可操作。缺少了游客注册的功能。
3.不能根据用户的需求点对点得查询相应信息,只能罗列出所有的信息。
实验心得: 1.在搭建PHP环境中遇到了许多问题:如用户权限不够,域名已使用使得Apache-20安装不成功,通过网上查阅资料解决问题。
篇3:寄生虫学检验实验考试探讨
1 考试设计
1.1 考试内容
包括线虫、吸虫、绦虫、原虫的形态及具有临床诊断意义阶段的标本。重点是临床常见的和本地流行的寄生虫和寄生虫致病标本。
1.2 考试标本的种类和数量
肉眼观标本:线虫、吸虫、绦虫成虫的大体标本, 吸虫的中间宿主螺类。线虫、吸虫成虫的致病标本, 如血吸虫病肝, 肺吸虫病肺等。镜下观标本:混合虫卵标本, 线虫、吸虫、绦虫成虫标本, 吸虫内部结构, 血吸虫毛蚴、尾蚴, 肝吸虫囊蚴, 原虫包囊, 滋养体等, 精心挑选100个形态典型的标本供考试用。
1.3 考试标本分组和编出考试组号码
将挑选的100个考试标本分成10组, 每组10个标本 (5个肉眼观标本, 5个镜下观标本) 。为其编上组号码作为考试组号, 此考试组号与学生考试抽签号相一致, 每考完一批, 考试组号可重新编排以保证不同的批次考试组号相同而考试内容不一样。
1.4 考试答案
标本选定并分成10组后, 即意味着实验考试题目已出, 接着就是记录下每组标本的标准答案及评分的依据。考试组号改变时, 考试答案也要进行相应的调整。
1.5 评分标准
总分为100分, 共10个标本, 每个标本10分。
2 考试实施
2.1 模拟实验考试
在线虫纲、吸虫纲、绦虫纲、原虫每章节实验课上完后, 我们及时对学生进行阶段测验。在考前半个月, 我们再进行一次考前总复习模拟考试, 旨在帮助学生全面复习, 消除其恐惧心理。大多数学生因为要考试, 利用双休日、课余时间来实验室看标本、做实验, 这充分调动了学生学习的积极性和主动性, 使其对寄生虫学检验实验产生了浓厚的兴趣, 取得了较好的效果。
2.2 考试方法和时间
在考试开始前, 以班级为单位, 把学生分成每10人为一批的若干批次, 学生按批次进入考场随机抽取考试组号以确定考试内容, 在答题纸上写好班级、姓名、考试批次、考试组号。考试时间为15分钟, 由1位监考教师监考2名考生。对于肉眼观标本, 学生直接把答案写在答题纸上;而对于镜下观标本, 学生要在显微镜下找到考试内容后请监考教师确认正误, 监考教师把正误记录在学生的答题纸上, 正确给10分, 错误则给0分, 每位学生要作答10个标本 (5个肉眼观标本和5个镜下观标本) 。考试结束后, 监考教师对照考试答案, 即可以批改得出学生的考试分数。
3 考试后标本的整理工作和情况总结
考试结束后, 学生可自愿报名参加实验室标本整理工作。3年来, 每次学生都积极报名参加, 既加强了师生沟通, 培养了学生的实验室工作能力, 又可使其得到一次考后学习的机会, 教师还可以此及时收集学生对考试的看法和建议。
3 年来, 学生的实验考试成绩良好, 呈正态分布, 大多数学生能考出80~90分的好成绩。学生反映这种考试方法能考核自己理论联系实际的能力、分析和解决问题的能力, 其操作技巧也得到了提高。通过实验考试, 学生巩固了理论知识, 培养了学习兴趣和能力。通过寄生虫学检验实验考试的开展, 学生对寄生虫学检验技术有了较好掌握, 并能应用寄生虫学检验知识进行临床寄生虫学检验。学生的专业素质和专业思想不断提高, 有力地促进了医学检验专业教学质量的全面提高。
摘要:目的 探索医学检验专业寄生虫学检验的实验考试方法 如何与培养高职应用型人才相适应。方法 对本校2005~2007级医学检验专业大专班寄生虫学检验的实验考试方法 进行尝试。结果 考试设计合理, 体现了医学检验专业的特点, 考试方法 适用性强。结论 实验考试能对学生理论联系实际的能力、动手能力、分析问题和解决问题的能力进行考核, 对培养学生的专业技能, 调动其学习积极性, 全面提高其检验技术均有所帮助, 是一种较好的考试方法 。
关键词:寄生虫学检验,实验考试,医学实验,医学检验
参考文献
[1]曾宪芳.寄生虫学和寄生虫学检验[M].第1版.北京:人民卫生出版社, 1999.
篇4:寄生虫实验报告2
摘要:综合性实验可提高学生自我思考,自我动手,自我操作的能力,使学生形成一种对知识主动探究,并重视实际问题解决的积极的学习方式。在寄生虫学实验教学中,根据各类虫体的生活史、实验室检查等,将各类基础实验方法进行融合、渗透、穿插、衔接,在实验教学中开展设计性的综合实验模式的改革与实践。
关键词:综合性实验 寄生虫学 实验教学
*通讯作者:严涛
1.教育部大学生创新性实验项目资助:(No.071040316)
2.国家自然科学基金资助(No.30660167)
Discussion of Parasitological Experimental Teaching
through “Comprehensive Experiment”
ZHONG Peng-ying1 OUYANG Han1 WANG Yang-yun1 ZHOU Si-yuan1 WU Jia-wei1YU Ya-jie1 HU Shao-fan1 ZHOU Xiao-chen2
INSTRUCTOR: ZHU Chun-chao 3 ZOU Jie-xin 3 WANG Yan3 ZHOU Xian-min 3 YAN Tao 3*
1.2nd Clinical Division of Medical College Nanchang University, 2.1st Clinical Division of Medical College Nanchang University,
3.Department of Parasitology Medical college of Nanchang University, Nanchang 330006
Abstract:Object Comprehensive experiment emphasizing active learning and problem-solving, inspires students’ initiative to master through accentuating self-learning and self-exploring abilities of students. Method Based on life-cycle and laboratory examination of parasites, the research combines various types of basic experimental measures lead a revolutionary breakthrough in experimental teaching of Parasitology.
Key words:Comprehensive experiment, Parasitology, Experimental teaching
*Corresponding author: YAN Tao
寄生虫学作为一门研究与人类健康有关的寄生虫的形态,结构、发生及发展规律、致病机制、诊断及防治对策的科学,是临床医学教学中的一门基础课程,也是一门实践性很强的学科,因此作为实践环节的实验教学就显得尤为重要,它是寄生虫病诊治的基础。为让这一系列的有关寄生虫学的内容更生动的展现,我们采取了综合性实验教学方式,并获得了较好的效果。
一、传统实验教学的缺点
1、学生被动接受知识
现在,大部分学校的教育基本以书本为中心,学习难以成为学生作为一个完整的人的内在需要。传统的课堂上,讲解式的教、接受式的学占主导地位。
2、缺乏动手能力培养
传统的实验教学内容传统的实验教学多以观察寄生虫玻片标本和瓶装标本为主,虽比较直观,但并不能很好的反应各种寄生虫生活的动态变化。
3、讲解为主体,学生缺乏学习兴趣
在传统的实验课上,学生大多只是在准备好的实验设备前,按照教师的讲解完成实验,撰写实验报告,这样不仅不利于学生学习主体地位的发挥,同时也造成了学生分析问题和解决问题能力的欠缺。
二、综合性实验教学的方式
具体说它是指在教师的启发引导下,以学生自主学习和合作讨论为前提,以现行教材为基本探究内容,自主设计实验方案的一类综合性实验。
教师作为实验教学的导师,主要调动学生的积极性,促使他们自己去发现、提出、分析、解决问题,提供相应实验条件,把握实验深度,评价实验成败。学生作为实验的主人,自然是根据教师提供的条件,明确目标,思考问题,掌握方法,总结结果。
三、综合性实验教学的优点
1、训练整体思维能力
设计一套这类实验,学生需在课余查阅文献与国内外书籍,收集资料,从病因、发病机制、病理变化、临床症状、相关检查、诊断、治疗以及与寄生虫学内容相关知识等多方面准备,也让学生对寄生虫这门学科有了整体的认识。
2、培养动手和协作能力
综合性实验能培养学生的动手能力和同学之间的协作精神,激发他们的学习兴趣。如实验教学中增加了许多活体实验,这样不仅锻炼了学生的基本操作能力,还增进了同学之间互相协作的精神。
3、适应学生个性化的需要
它的基本特性是尊重每一个学生独特的兴趣、爱好,适应每一个学生个性化发展的特殊需要,为学生自主性的充分发挥开辟广阔的空间。在综合性实验中,教师作为顾问、咨询者或合作伙伴而存在。对学生而言,重在训练和培养研究意识、研究气质与研究能力,重在程序性知识、内隐的个人知识的获得。
4、整体考核学生的素质
在综合性实验中,详细的过程记录及实验讨论是必不可少的,将结果进行比较、归纳,更体现了学生对学习的主动性。实验记录可以实验报告的形式写出,纳入学生的平时成绩的考评,可以从整体的评价学生的学习,而非单一的理论成绩。
四、尚存在的不足
对初次设计实验的学生,能否顺利的完成实验,达到预期效果等,均是这类实验尚待解决的问题。不过,我们相信这种教学方式推广的趋势仍是不可阻挡的。
参考文献:
1.刘流.浅谈21世纪人体寄生虫学实验教学改革 [J].遵义医学院学报,2005,(1):101~102.
篇5:java实验报告实验2答案
实验二 熟悉Applet,GUI编程
实验目的:
本实验旨在巩固同学们对上课所讲Applet,异常处理,java的控制加深理解,图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,对java的语法和编程有一个更加深入的理解,为同学们以后的能够用Java进行独立地编写桌面程序打下一定的基础。了解如何使用布局管理器对组件进行管理,以及如何使用Java的事件处理机制。
实验内容:
创建一个java项目,命名为experiment2。(如何创建项目参考《实验一》的项目创建方法。)
(一)创建图形用户界面
图形用户界面(Graphic User Interface,简称GUI)是为方便用户使用设计的窗口界面,在图形用户界面中用户可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。组件(Component)是构成GUI的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。组件一般作为一个对象放置在容器(Container)内,容器是能容纳和排列组件的对象,如Applet、Panel(面板)、Frame(窗口)等。通过容器的add方法把组件加入到容器中。
1. 在Applet中添加标签、按钮并使用网格布局(1)程序功能
在Applet 容器中添加组件标签、按钮,并使用网格布局管理器排列组件在容器中的位置。(2)编写LX6_1.java 程序文件,源代码如下:
import java.awt.*;import java.applet.Applet;public class LX6_1 extends Applet { Label l1;Button b1, b2, b3, b4, b5, b6;public void init(){
互联网软件应用与开发实验指导书
setLayout(new GridLayout(3,3));// 设置网格布局(3 行3 列共9 个网格)l1=new Label(“标签1”);b1 = new Button(“按钮1”);b2 = new Button(“按钮2”);b3 = new Button(“按钮3”);b4 = new Button(“按钮4”);add(l1);add(b1);add(b2);add(b3);add(new Label());add(b4);add(new Button(“按钮5”));add(new Button(“按钮6”));add(new Label(“标签2”));} }(3)编译程序LX6_1.java。
(4)编写显示Applet 的页面文件LX6_1.html,在浏览器显示结果如图2.1 所示。
图2.1
2. 在面板中添加组件
(1)程序功能:在Applet 中添加面板容器,并分别在Applet、面板容器中添加组件并使用不同的布局管理方式。
(2)编写LX6_2.java 程序文件,源代码如下。
import java.awt.*;import java.awt.Color;import java.applet.Applet;public class LX6_2 extends Applet { public void init()
互联网软件应用与开发实验指导书
{ //设置最底层的 Applet 容器为顺序布局 setFont(new Font(“Arial”,Font.PLAIN,20));Label l=new Label(“这是最底层的 Applet 容器中的标签”,Label.CENTER);add(l);Panel panel1=new Panel();add(panel1);panel1.setBackground(Color.blue);panel1.setForeground(Color.red);panel1.setLayout(new BorderLayout());//设置边界布局 panel1.add(“North”, new Button(“北”));panel1.add(“South”, new Button(“南”));panel1.add(“East”, new Button(“东”));panel1.add(“West”, new Button(“西”));panel1.add(“Center”, new Label(“这是在 Panel1 面板 中部添加的标签”));Panel panel2=new Panel();add(panel2);panel2.setLayout(new GridLayout(3,1));//设置网格布局 Choice c=new Choice();//创建下拉式列表 c.addItem(“北京”);c.addItem(“上海”);c.addItem(“天津”);Label l1=new Label(“这是在 Panel2 面板中的标签”);Button b1=new Button(“Panel2 中的按钮”);panel2.setBackground(Color.green);panel2.add(l1);panel2.add(b1);panel2.add(c);} }(3)编译程序LX6_2.java。
(4)编写显示Applet 的页面文件LX6_2.html,在浏览器显示结果如图6.2 所示。
互联网软件应用与开发实验指导书
图2.2
3、编写程序实现下图功能。
(二)了解事件处理机制
在图形用户界面中,程序和用户的交互是通过组件响应各种事件来实现的。例如,用户单击了一个按钮,意味着发生了按钮的单击事件;选中下拉框中的一个选项,意味着发生了一个选项事件。在Java中能产生事件的组件叫做事件源,如按钮。如果希望对单击按钮事件进行处理,可给事件源(按钮)注册一个事件监听器(如包含按钮的容器),如同签订了一个委托合同,当事件源发生事件时,事件监听器就代替事件源对发生的事件进行处理,这就是所谓的委托事件处理机制。
1.单击按钮的事件处理程序
(1)程序功能:使用手工布局设置组件标签、按钮的位置,为按钮编写单击事件处理方法。当用户用鼠标单击按钮时,会听到一声响声。
(2)编写LX6_3.java程序文件,源代码如下。
import java.awt.*;import java.awt.event.*;import java.applet.Applet;public class LX6_3 extends Applet implements ActionListener { // 实现动作事件监听接口
互联网软件应用与开发实验指导书
public void init(){ setLayout(null);//关闭默认的顺序管理布局
Label l=new Label(“按一下按钮可听到响声!”, Label.CENTER);add(l);l.setBounds(40,10,150,30);Button b=new Button(“按钮”);add(b);b.setBounds(60,50,60,40);b.addActionListener(this);// 注册事件源的动作监听者 } public void actionPerformed(ActionEvent e){ //实现单击事件接口的方法
Toolkit.getDefaultToolkit().beep();//单击事件发生时作出的反应 } }(3)编译程序LX6_3.java。
(4)编写显示Applet的页面文件LX6_3.html,在浏览器显示结果如图3.3所示。
图2.3 2.选择复选框和单选框按钮的事件处理程序
(1)程序功能:在Applte 上创建复选框、单选框、文本区域、单行文本框等组件,并实现根据用户输入的10进制数,选择不同选项可转换为2、8、16进制数。(2)编写LX6_4.java 程序文件,源代码如下。
import java.applet.Applet;import java.awt.*;import java.awt.event.*;public class LX6_4 extends Applet implements ItemListener { TextArea area=new TextArea(6,30);//创建文本区
互联网软件应用与开发实验指导书
String Item[]={“2 进制”,“8 进制”,“16 进制”,“10 进制”};Checkbox cb[]=new Checkbox[5];Checkbox radio[]=new Checkbox[5];Label l=new Label(“输入10 进制数”);TextField TF=new TextField(6);//创建单行文本框 public void init(){ add(l);add(TF);add(area);add(new Label(“ 请选择进制:”));for(int i=0;i<4;i++){ cb[i]=new Checkbox(Item[i]);add(cb[i]);cb[i].addItemListener(this);} CheckboxGroup cbGroup=new CheckboxGroup();//创建单选框 add(new Label(“请选择进制:”));for(int i=0;i<4;i++){ radio[i]=new Checkbox(Item[i],cbGroup,false);add(radio[i]);radio[i].addItemListener(this);} } public void itemStateChanged(ItemEvent e){ int x=Integer.parseInt(TF.getText());if(e.getItem()==“2 进制”)area.append(“你选择的是”+e.getItem()+ Integer.toBinaryString(x)+“n”);if(e.getItem()==“8 进制”)area.append(“你选择的是”+e.getItem()+ Integer.toOctalString(x)+“n”);if(e.getItem()==“16 进制”)area.append(“你选择的是”+e.getItem()+Integer.toHexString(x)+“n”);if(e.getItem()==“10 进制”)area.append(“你选择的是”+e.getItem()+x+“n”);} }(3)编译程序LX6_4.java。
(4)编写显示Applet 的页面文件LX6_4.html,在浏览器显示结果如图3.4 所示。
互联网软件应用与开发实验指导书
图2.4
(三)在Experiment2下创建自己的JApplet.效果类似于下图。
图2.5 下面是实验二的JApplet代码: import javax.swing.*;import java.awt.*;import java.awt.event.*;public class drawpicture extends JApplet implements ActionListener { int x=30,y=30;JButton jb1,jb2;JLabel jl1;JTextField jt1;JPanel jp;
互联网软件应用与开发实验指导书
Container c;public void init(){ c=getContentPane();c.setLayout(new BorderLayout());jb1=new JButton(“点击”);jb2=new JButton(“Reset”);jl1=new JLabel(“增加半径值:”);jp=new JPanel();jt1=new JTextField(“20”);jp.add(jl1);jp.add(jt1);jp.add(jb1);jp.add(jb2);c.add(jp,BorderLayout.SOUTH);jb1.addActionListener(this);jb2.addActionListener(this);setSize(600,600);setVisible(true);} public void actionPerformed(ActionEvent evt){ if(evt.getSource()==jb1){ x=x+Integer.parseInt(jt1.getText());y=y+Integer.parseInt(jt1.getText());repaint();} if(evt.getSource()==jb2){ x=30;y=30;repaint();} } public void paint(Graphics g){ super.paint(g);g.drawOval(x, y, x, y);} }
(四)编辑一个程序,并用异常处理技术来处理它,比如被代码:
import java.awt.*;
0除,数组下标溢出等。
互联网软件应用与开发实验指导书
import java.awt.Color;import java.applet.Applet;public class LX6_5 extends Frame{ Label label1=new Label(“Name :”);TextField txt1=new TextField(20);
Label label2=new Label(“Favourates sports :”);Checkbox box1=new Checkbox(“Cricket”);Checkbox box2=new Checkbox(“Badmiton”);Checkbox box3=new Checkbox(“Golf”);
Label label3=new Label(“Gender”);CheckboxGroup cg=new CheckboxGroup();Checkbox r1=new Checkbox(“Male”,cg,false);Checkbox r2=new Checkbox(“Femal”,cg,false);
Label label4=new Label(“Comments :”);TextField field1=new TextField();
Button b1=new Button(“Submit”);Button b2=new Button(“Reset”);public LX6_5(String s){ super(s);setLayout(new GridLayout(10,1));Panel panel1=new Panel();add(panel1);panel1.setBackground(Color.blue);panel1.add(label1);panel1.add(txt1);Panel panel2=new Panel();add(panel2);panel2.setBackground(Color.red);panel2.add(label2);panel2.add(box1);panel2.add(box2);panel2.add(box3);Panel panel3=new Panel();add(panel3);panel3.setBackground(Color.green);panel3.add(label3);panel3.add(r1);panel3.add(r2);Panel panel4=new Panel();add(panel4);panel4.setBackground(Color.white);panel4.add(label4);panel4.add(field1);Panel panel5=new Panel();add(panel5);panel5.setBackground(Color.black);panel5.add(b1);panel5.add(b2);} public static void main(String args[]){ LX6_5 m=new LX6_5("");m.setSize(500,400);m.show();}
互联网软件应用与开发实验指导书
实验小结
所谓API包就是应用程序接口。通过学习我们知道包是类和接口的集合。利用包我们可以把常用的类或功能相似的类放在一个包中。Java 语言所提供的系统包,其中包含了大量的类,我们可以在编写Java 程序时直接引用它们。API 包—方面提供丰富的类与方法供我们使用,例如画图形、播放声音等,另一方面又负责和系统软硬件打交道,圆满实现用户程序的功能。所有Java API 包都以“java.”开头,以区别用户创建的包。
Java不支持多重继承,接口成功的解决了这个问题,我们可以通过实现多个接口达到与多重继承相同的功能。
篇6:实验报告2
课程名称: TCP/IP协议栈分析与实现
实验项目名称:Linux内核通用哈希链表的使用 学生姓名:苟伟
专业:信息工程
学号:201005010710
同组学生姓名:
指导老师:刘飚
实验地点:6c601
实验日期:2013年3 月28日
一、实验目的和要求:
学习Linux内核的通用哈希链表的设计原理,熟练掌握Linux内核通用哈希链表的使用。
二、实验内容
1.掌握Linux通用哈希链表的创建
2.掌握通用哈希表增加元素、查找元素的方法。
三、实验要求
1.待创建的哈希表头数组为structhlist_headuser_hash[16],要求对哈希表宿主元素的 name成员的值进行散列,并将散列值作为哈希表宿主元素的key。
2.作为哈希表元素的宿主节点类型定义如下:
structusermap{
structhlist_nodehlist;
unsignedcharname[8];
};
3.针对上述user_hash哈希表,要求向其中添加3个类型为structusermap的宿主元素,并要求这3个宿主元素的name成员分别为“smith”,“john”,“bob”。
4.向哈希表user_hash中添加第4个宿主元素。若新宿主元素的name成员已经存在(例如“john”),则提示已经存在该用户,否则向哈希表中添加该宿主元素。
四、实现原理
Linux的内核源文件list.h提供了哈希表各类操作接口及其实现。其中创建具有16
个key值的哈希表的方法如下:
structhlist_headuser_hash[16];
在上述user_hash数组的16个元素中存放的哈希表头元素定义如下:
structhlist_head{
structhlist_node*first;
};
哈希表节点元素定义如下:
structhlist_node{
structhlist_node*next,**pprev;
};
本实验对哈希表宿主元素节点的name值进行散列的算法如下:
unsignedintBKDRHash(unsignedchar*str)
{
unsignedintseed=131;
unsignedinthash=0;
while(*str){
hash=hash*seed+(*str++);
}
return(hash&0x7FFFFFFF);// 返回此*str所对应的哈希值
}
于是,本实验中对一个字符串name求最终哈希值hash的方法如下:
unsignedinthash=BKDRHash(name)&15
内核源文件list.h中定义了以下若干接口,用于对哈希表进行各类操作:
1)在指定的哈希表头h所指向的链表头插入新节点
//@n:要添加的新哈希表节点
//@h:在此哈希表头节点后添加
hlist_add_head(structhlist_node*n,structhlist_head*h);
2)根据当前哈希表节点指针ptr获得哈希表宿主节点指针
//*@ptr: structhlist_node类型的指针
//*@type:哈希表节点所在的宿主节点的类型
//*@member:嵌入宿主的哈希表节点的变量名
hlist_entry(ptr,type,member)
3)遍历哈希表中某个key所对应的链表
//@tpos: 哈希表宿主节点指针
//@pos: 哈希表节点指针
//@head: 哈希表中某key所对应的链表的头指针
//@member:嵌在哈希表宿主节点中哈希表节点的变量名
hlist_for_each_entry(tpos,pos,head,member)
五、实现代码和运行结果
请打印本实验的程序代码和程序运行截图,并作为附件附在本实验报告后。#include
531strcpy(a[i].name,name[i]);unsigned intBKDRHash(unsigned char32structhlist_head *ph;
*str){33ph=&user_hash[hash];
7unsigned int seed=131;34hlist_add_head(&(a[i].hlist),ph);8unsigned int hash=0;35
9while(*str){ p=hlist_entry(&(a[i].hlist),typeof(*p),hlist);10hash=hash*seed+(*str++);36printf(“is%sn”,p->name);11}37}
12return(hash&0x7FFFFFFF);38structhlist_node *pp;
13}39char addname[8];intmain(){40printf(“printnameaddn”);15inti;41scanf(“%s”,addname);
16structhlist_headuser_hash[16];42int frag=1;
17structusermap{ 43hash=BKDRHash(addname)&15;18structhlist_nodehlist;44
19unsigned char name[8];hlist_for_each_entry(p,pp,&user_hash[hash], 20}a[100];hlist){
21for(i=0;i<16;i++){45printf(“addname 22INIT_HLIST_HEAD(&user_hash[i]);is%sn”,addname);
23INIT_HLIST_NODE(&a[i].hlist);46
24} if(strcmp(addname,p->name)==0){
25char47frag=0;
name[3][8]={“smith”,“jhon”,“bob”};48printf(“%s26structusermap *p;yicunzain”,addname);
27unsigned int hash;49}}
50if(frag)59
51{ hlist_for_each_entry(p,pp,&user_hash[i],hlist 52)
hash=BKDRHash(addname)&15;60printf(“ hash code %d all53is%sn”,i,p->name);
strcpy(a[3].name,addname);61hlist_for_each(pp,&user_hash[i])5462{
hlist_add_head(&(a[3].hlist),&user_hash[hash 63
]);p=hlist_entry(pp,typeof(*p),hlist);
5564
p=hlist_entry(&(a[3].hlist),typeof(*p),hlist);is%sn“,p->name);
5665}
printf(”is%sn“,p->name);66}
57}67return 0;
58for(i=0;i<16;i++){ 68 }
运行结果:
root@gouwei-virtual-machine://home/gouwei/shiyan#./shiyan2
name is smith ,and hash code is 7.issmith
name is jhon ,and hash code is 1.isjhon
name is bob ,and hash code is 1.isbob
printnameadd
gouwei
isgouwei
hash code 1 allisbob
hash code 1 allisjhon
***isbob
***isjhon
hash code 2 allisgouwei
***isgouwei
hash code 7 allissmith
***issmith