集美大学.net实验计算机工程软件工程 实验二
集美大学信息单片机实验
1. 实验2-1EXTRN CODE(Display8, GetBCDKey) BUFFER2 DA TA 70H;8字节显示缓冲区BUFFER DA TA30HBLOCK data 50HRESULT DA TA 40HF1 BIT 0D1H ;PSW.1ORG 0000HLJMP STARTORG 0100HSTART: MOV SP,#60HCLR F1;先清除显示,再接收键输入START1:MOV R0,#BUFFERMOV A,#4;按键次数LCALL GetBCDKey;得到双字节十进制数(乘数)MOV R0,#BUFFERACALL BCD2B;转换成二进制数MOV BLOCK,R3MOV BLOCK+1,R4SETB F1;接收到第一个键,才清除显示MOV R0,#BUFFERMOV A,#4;按键次数LCALL GetBCDKey;得到双字节十进制数(减数)MOV R0,#BUFFERACALL BCD2BMOV BLOCK+2,R3MOV BLOCK+3,R4MOV R4,BLOCK;四个BCD入口参数MOV R5,BLOCK+1MOV R6,BLOCK+2MOV R7,BLOCK+3MOV R0,#RESULTlCALL MLTYMOV R3,RESULTMOV R2,RESULT+1MOV R1,RESULT+2MOV R0,RESULT+3ACALL B4toD4;字节二进制数转十进制数;R0R1R2R3为二进制数,R4R5R6R7为压缩BCD码MOV A,R7ANL A,#0FHMOV BUFFER2,AMOV A,R7ANL A,#0F0HSWAP AMOV BUFFER2+1,AMOV A,R6ANL A,#0FHMOV BUFFER2+2,AMOV A,R6ANL A,#0F0HSWAP AMOV BUFFER2+3,AMOV A,R5ANL A,#0FHMOV BUFFER2+4,AMOV A,R5ANL A,#0F0HSWAP AMOV BUFFER2+5,AMOV A,R4ANL A,#0FHMOV BUFFER2+6,AMOV A,R4ANL A,#0F0HSWAP AMOV BUFFER2+7,AMOV R0,#BUFFER2LCALL Display8sjmp $BCD2B:MOV R1,#BUFFERMOV R2,#2S:MOV A,@R1PUSH ACCANL A,#0FHMOV R0,APOP ACCJNB ACC.4,NEXT1;分别判断4,5,6,7位是否为1,分别加上10,20,40,80XCH A,R0ADD A,#10XCH A,R0NEXT1:JNB ACC.5,NEXT2XCH A,R0ADD A,#20XCH A,R0NEXT2:JNB ACC.6,NEXT3XCH A,R0ADD A,#40XCH A,R0NEXT3:JNB ACC.7,NEXT4XCH A,R0ADD A,#80XCH A,R0NEXT4:MOV A,R0PUSH ACCINC R1DJNZ R2,SPOP ACCMOV R0,APOP ACCMOV B,#100;高2位(千位、百位)乘以100MUL ABADD A,R0MOV R3,A ;转换成的二进制数放在R4R3中MOV A,BADDC A,#0MOV R4,ARET;字节二进制数转十进制数;R0R1R2R3为二进制数,R4R5R6R7为压缩BCD码;;;;;;;;该子程序也可以模仿书上(胡汉才)例4.22,采用除以10、其余数为个位数字,其商继续除以10得十位数字,依次类推B4toD4: CLR AMOV R4,AMOV R5,AMOV R6,AMOV R7,AMOV B,#32LOOP: CLR CMOV A,R3RLC AMOV R3,AMOV A,R2RLC AMOV R2,AMOV A,R1RLC AMOV R1,AMOV A,R0RLC AMOV R0,AMOV A,R7;算法举例:例如数据为0010 0100(36),则过程为ADDC A,R7; A R7DA A; 0 0MOV R7,A; 0 0MOV A,R6; 1 1ADDC A,R6; 2 2DA A; 4 4MOV R6,A; 9 9MOV A,R5; 18 18ADDC A,R5; 36 36DA AMOV R5,AMOV A,R4ADDC A,R4DA AMOV R4,ADJNZ B,LOOPRETMLTY: MOV A,R6MOV B,R4MUL ABMOV @R0,AMOV R3,BMOV A,R7MOV B,R4MUL ABADD A,R3MOV R3,AMOV A,BADDC A,#00HMOV R2,AMOV A,R6MOV B,R5MUL ABADD A,R3INC R0MOV @R0,AMOV A,R2ADDC A,BMOV R2,AMOV R1,#00HJNC NXT1INC R1NXT1: MOV A,R7MOV B,R5MUL ABADD A,R2INC R0MOV @R0,AMOV A,BADDC A,R1INC R0MOV @R0,ARETend2.实验2-2ORG 0000HLJMP MAINORG 1000HMAIN: MOV R7,#15CLR F0LOOP1:PUSH 07HMOV R0,#30HMOV R1,#31HSJMP LOOP2LOOP4:DEC R7SJMP LOOP1LOOP2:MOV A,@R0SUBB A,@R1JC LOOP3SETB F0MOV A,@R0XCH A,@R1XCH A,@R0LOOP3:INC R0INC R1DJNZ R7,LOOP2POP 07HJB F0,LOOP4END3.实验3-1电子钟EXTRN CODE(GetbcdkEY,Display8) BUFFER1 DA TA 40HBUFFER2 DA TA 60HORG 0000HLJMP MAINORG 000BHLJMP ITOPORG 1000HMAIN:CLR PSW.1MOV R0,#BUFFER1MOV A,#06H ;LCALL GetBCDKeyMOV 20H,#20MOV TMOD,#01HMOV TL0,#0b0HMOV TH0,#3cHSETB TR0SETB ET0SETB EASJMP $ITOP:PUSH PSWPUSH ACCMOV TL0,#0b0HMOV TH0,#3cHDJNZ 20H,LOOPMOV 20H,#20 ;重置中断次数MOV A,#01H ;秒增加1ADD A,42HDA A;秒单元十进制调整MOV 42H,ACJNE A,#60H,LOOP;是否到60秒,未到返回MOV 42H,#00H;记满30秒,秒单元请零MOV A,#01H ;分单元增1ADD A,41HDA A;分单元十进制调整MOV 41H,ACJNE A,#60H,LOOP ;MOV 41H,#00HMOV A,#01HADD A,40HDA AMOV 40H,ACJNE A,#24H,LOOPMOV 40H,#00HLOOP:MOV R0,#40HMOV R6,#03HMOV R1,#50HDECOMP:MOV A,@R0SW AP AANL A,#0FHMOV @R1,AINC R1MOV A,@R0ANL A,#0FHMOV @R1,AINC R0INC R1DJNZ R6,DECOMPMOV R0,#BUFFER2MOV BUFFER2,55HMOV BUFFER2+1,54HMOV BUFFER2+2,53HMOV BUFFER2+3,52HMOV BUFFER2+4,51HMOV BUFFER2+5,50HMOV BUFFER2+6,#10HMOV BUFFER2+7,#10HLCALL Display8POP ACCPOP PSWRETIEND4.秒表EXTRN CODE(GetbcdkEY,Display8) BUFFER1 DA TA 40HBUFFER2 DA TA 60HORG 0000HLJMP MAINORG 000BH ;定时器T0中断LJMP ITOPORG 1000HMAIN:CLR PSW.1;先清显示,再接收键盘输入MOV R0,#BUFFER1MOV A,#06H;按键次数6次LCALL GetBCDKey;调键盘程序MOV 20H,#1 ;循环次数MOV TMOD,#01H;计时器T0选择方式一16位计数器MOV TL0,#18HMOV TH0,#0FCHSETB TR0 ;开计时器T0SETB ET0SETB EADAN: JB P1.0, $;比较P1.0口(暂停口),若为0,则往下执行,若为1,则在本行等待CLR TR0;关计时器,暂停秒表计数JNB P1.0,$;比较P1.0口(暂停口),若为1则往下执行,若为0,则在本行等待SETB TR0;开计时器,继续秒表计数JB P1.1, DAN;比较P1.1口(清零口),若为1,则跳DAN(继续等待),若为0,则往下执行(全部清零)MOV 40H,#00 ;微秒单元清零MOV 41H,#00 ;毫秒单元清零MOV 42H,#00 ;秒单元清零SJMP DANITOP:PUSH PSWPUSH ACCMOV TL0,#18H;计时器T0重新赋初值MOV TH0,#0FCHDJNZ 20H,LOOP;减1,比较是否为0,不为0则跳LOOP MOV 20H,#1;重新赋循环次数MOV A,#01H;微秒单元+ 1ADD A,40HDA A;十进制调整MOV 40H,ACJNE A,#99H,LOOP;微秒单元中的数字和99H比较,若小于等于99H,则跳转到LOOPMOV 40H,#00H ;微秒单元零MOV A,#01H ;毫秒单元+1ADD A,41HDA AMOV 41H,ACJNE A,#10H,LOOPMOV 41H,#00H ;毫秒单元清零MOV A,#01H ;秒单元+ 1ADD A,42HDA AMOV 42H,ACJNE A,#60H,LOOP;比较是否过了60秒?过了则清零MOV 42H,#00H ;秒单位请零LOOP:MOV R0,#40H;寄存器赋初值,为下面做准备MOV R6,#03H ;次数3次MOV R1,#50H;保存到50H单位中DECOMP:MOV A,@R0SW AP A;高低字节互换ANL A,#0FH ;取高字节MOV @R1,A;高字节存到R1INC R1 ;R1 地址+ 1MOV A,@R0ANL A,#0FHMOV @R1,A;低字节存到R1INC R0INC R1DJNZ R6,DECOMP;上面从LOOP开始整个的意思就是把40H 中的微秒,毫秒,秒的数据放到50H中,然后下面开始在LED上显示MOV R0,#BUFFER2MOV BUFFER2,51HMOV BUFFER2+1,50HMOV BUFFER2+2,53HMOV BUFFER2+3,52HMOV BUFFER2+4,55HMOV BUFFER2+5,54HMOV BUFFER2+6,#10HMOV BUFFER2+7,#10HLCALL Display8POP ACCPOP PSWRETIEND6、航标灯ORG 0000HLJMP MAINORG 0003HLJMP IIE0ORG 000BH ; 定时器T0中断LJMP ITOPORG 1000HMAIN:SETB EX0 ;SETB EAL: JB P3.2,LCLR TR0SETB p1.0LJMP LIIE0:push pswpush ACCMOV 20H,#40;循环次数MOV TMOD,#01H ;计时器T0选择方式一16位计数器MOV TL0,#0B0H ;50msMOV TH0,#3CHSETB ET0SETB TR0POP ACCPOP PSWRETIITOP:PUSH PSWPUSH ACCMOV TL0,#0B0HMOV TH0,#3CHDJNZ 20H,LOOP ;减1,比较是否为0,不为0则跳LOOPMOV 20H,#40 ;重新赋循环次数CPL P1.0LOOP:POP ACCPOP PSWRETIEND7、串行口接收ORG 0000HLJMP MAINORG 0023HLJMP SINTORG 0100HMAIN: MOV SP, #60HMOV TMOD, #20H ;T1方式2MOV TH1, #0E8HMOV TL1, #0E8HMOV SCON, #0D0H ;串行口3MOV PCON, #80HSETB ESCLR ET1SETB EASETB TR1MOV R0, #41H ;存入41H开始单元MOV R7, #0DH ;接收次数13次SJMP $SINT: CLR RIMOV A, SBUFMOV C, PCPL CJNC L1JNB RB8, ERRAJMP L2L1: JB RB8, ERRL2: MOV @R0, AINC R0DJNZ R7, L3 ;比较是否接收13次CLR ESCLR ET1CLR TR1AJMP L3ERR: CLR P1.0 ;点亮LEDL3: RETIEND8、串行口发送ORG 0000HLJMP MAINORG 0023HLJMP SINTORG 0100HMAIN: MOV SP, #60HMOV TMOD, #20H ;T1方式2MOV TH1, #0E8HMOV TL1, #0E8HMOV SCON, #0D0H ;串行口3MOV PCON, #80HSETB ESCLR ET1SETB EASETB TR1MOV DPTR ,#TAB ;要发送的数据存入DPTRMOV R7, #0DH ;发送次数13次SETB TISJMP $SINT: CLR TICLR AMOVC A, @A+DPTRMOV C, PMOV TB8, CMOV SBUF, AINC DPTRDJNZ R7, L1JNB TI,$CLR ESCLR ET1CLR TR1L1: RETITAB:DB 'J','M','U'DB '2','0','0','9','8','2','0','0','2','0'END 9、并转串ORG 0000HLJMP MAINORG 0100HMAIN: clr p1.3 ;SERINIT: CLR P1.2 ;SHNOPSETB P1.2 ;;SH上升沿CLR P1.3;;P1.3(CLK口)清零MOV R5,#8 ; ;循环次数8次PRO: JB P3.0,NEXT;;查询P3.0 口....CLR CSJMP NEXT1NEXT: SETB CNEXT1: RLC ASETB P1.3 ;CLK一次NOPCLR P1.3DJNZ R5,PROCPL A;;取反AMOV P2,A ;;P1整个排线LJMP INITDELAY: MOV R7,#200DELAY1: MOV R6,#125DELAY2: DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND10、串转并ORG 0000HLJMP MAINORG 0100HMAIN: CLR P1.3 ;CLK清零SETB CMOV A,#0FeHINIT: MOV R5,#8 ;循环次数8次PRO: RRC A;;A中内容带进位右移一位JC NEXT ;;下面就是比较进位端CLR P1.2SJMP NEXT1NEXT: setb P1.2 ;;然后开关P1.2 口NEXT1: SETB P1.3NOP ;;CLK一次CLR P1.3DJNZ R5,PROCALL DELAY;;延时程序CALL DELAYLJMP INITDELAY: MOV R7,#255;200DELAY1: MOV R6,#255;125DELAY2: DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND11、iic总线SDA BIT P1.2SCL BIT P1.3A24C02_WRITE EQU 0A8HA24C02_READ EQU 0A9HORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,#60HMOV DPTR ,#TAB;;要发送的内容存入DPTRMOV R0,#30HMOV B,#0FHLOOP: CLR AMOVC A, @A+DPTRMOV @R0,AINC DPTRINC R0DJNZ B,LOOP;;上面到这是把TAB存入30H以后单元MOV R1,#30H; ;这部分开始是发送的MOV R2,#40HMOV R0,#0FH ; ;次数15次WRITE_BYTE:LCALL START ; ;发送起始信号MOV A,#A24C02_WRITE ;器件写地址,表示写操作LCALL WRITE_8BITS ; ;写入8位LCALL ACKNOWLEDGE ; ;等待从机应答MOV A,R2 ;写入地址LCALL WRITE_8BITSLCALL ACKNOWLEDGEMOV A,@R1 ;写入数据LCALL WRITE_8BITSLCALL ACKNOWLEDGELCALL STOP;;停止信号LCALL ACKPOLLINGINC R2INC R1DJNZ R0,WRITE_BYTE;;是否发送15次?MOV R1,#50H;;这部分开始是接收的MOV R2,#40HMOV R0,#0FHREAD_BYTE: LCALL STARTMOV A,#A24C02_WRITELCALL WRITE_8BITSLCALL ACKNOWLEDGEMOV A,R2LCALL WRITE_8BITSLCALL ACKNOWLEDGEcurrentread: LCALL STARTMOV A,#A24C02_READLCALL WRITE_8BITSLCALL ACKNOWLEDGELCALL READ_8BITSMOV @R1,AINC R1DJNZ R0,currentreadLCALL STOPSJMP $WRITE_8BITS: MOV R7,#8WRITE_8BITS_1: RLC ACLR SCLLCALL DELAY_TIMEMOV SDA,CSETB SCLLCALL DELAY_TIMEDJNZ R7,WRITE_8BITS_1CLR SCLRETREAD_8BITS: MOV R7,#8READ_8BITS_1: CLR SCLLCALL DELAY_TIMESETB SCL ;SCL为高时才能取数MOV C,SDA ;前提是SCL=1RLC ADJNZ R7,READ_8BITS_1CLR SCLRETACKNOWLEDGE: SETB SDA8SETB SCLLCALL DELAY_TIMEJB SDA,$ ;sda=0接收完CLR SCLRET ACKPOLLING: LCALL STARTMOV A,#A24C02_WRITELCALL WRITE_8BITSSETB SDASETB SCLLCALL DELAY_TIMEJB SDA,ACKPOLLINGCLR SCLLCALL STOPRETSTOP: CLR SDASETB SCLLCALL DELAY_TIMESETB SDALCALL DELAY_TIMERETSTART: SETB SDASETB SCLLCALL DELAY_TIMECLR SDALCALL DELAY_TIMERETDELAY_TIME: MOV R4,#2L1: NOPNOPDJNZ R4,L1RETORG 0300HTAB: db "JMUDZ2009820020"SJMP $END。
集美大学计算机工程学院公共基础课大纲
集美大学教学大纲汇编计算机系公共基础课(2006年)集美大学计算机工程学院2006.12集美大学《大学信息技术基础》课程教学大纲课程名称中文:大学信息技术基础英文:Foundations of College IT课程编号8018740 学分/学时2/36所属教研室计算机基础教研室先修课程无课程类型公共基础课考核方式闭卷开课专业大学本科专业一年级学生(音乐、设计、训练、美术、民体和社体专业除外)教学目的和要求提高学生对信息技术与计算机的基本原理、基本理论的了解与掌握的程度,为后续的程序设计课程或专业课程奠定基础。
提高学生使用计算机获取信息、加工信息、传播信息和应用信息的能力。
提高学生对计算机的操作与应用的能力,对计算机常用软件的基本操作能力,对数据库与网络的应用能力等。
教学内容和基本要求(分章节)第1章信息与计算科学1.1 信息的定义与度量1.2 信息技术与信息科学1.3 计算与计算科学1.4 计算机中的信息表示要求:掌握信息、信息技术、计算的定义,理解数据、消息、信号与信息的区别。
重点:理解乡农对信息的经典描述定义,理解什么是信息熵。
理解图灵机的计算思想。
难点:自信息量与信息熵的度量公式的计算。
第2章计算机系统:硬件与软件2.1 计算机发展史2.2 计算机硬件系统2.3 计算机软件系统要求:掌握冯·诺依曼型计算机的基本结构,熟悉硬件系统的组成,理解计算机软件的定义。
重点:理解冯·诺依曼机型的存储控制思想、深入了解微机的硬件组成难点:微型计算机的基本结构,计算机硬件系统的组成。
第3章多媒体计算基础3.1 多媒体的概念3.2 光盘存储系统3.3 多媒体音频信号处理3.4 多媒体图像信息处理集美大学《大学信息技术基础》课程教学大纲教学内容及基本要求(分章节)3.5 多媒体视频信息处理要求:理解多媒体的概念、分类,光盘存储原理,多媒体音频、图像、视频信号的数字处理过程。
重点:理解多媒体音频信息的数字化处理过程、从频率和周期的角度理解奈奎斯特采样定理难点:多媒体音频、图像、视频信号的数字化处理过程。
集美大学计算机工程学院实验报告
cin>>out_time; cin.sync(); cin.clear();//用于时间输错时候的提醒,避免出现无限循 环
} h= ((out_time/100*60+out_time%100)-(info_sta.time/100*60+info_sta.time%100))/60;
二、实验内容与设计思想
1.设计思路
新建一个Parting.h头文件,定义SeqStack sta(3),tran_sta(3);SeqCirQueue que(3);三 个全局变量,分别用于存放停车场的车,汽车出场的中介堆栈,及候车场的队列,
所以在该头文件中应引入堆栈及队列的头文件。然后创建一个Parting的类,私有 变量有char in_number[7],out_number[7];(存放进场及出场的车的车牌号)、int in_time,out_time,h,min,cost;(存放入场出场的时间,及计算停留的时间)、int out_stack,out;(用于汽车出场时遍历及中介堆栈返回原堆栈的循环)、InfoSta info_sta;(存放进停车场汽车的信息,进堆栈时用)InfoQue info_que;(存放进候 车场汽车的信息)。类中包含的方法有void CarIn();void CarOut();void
主函数中打印菜单,并对Parting进行实例化parting,定义一个整型变量chose (用于选择菜单中的功能)。用无限循环选取功能,输入chose的值,若chose为1, 表示汽车进场,用parting调用CarIn();方法,完成入场的操作。若chose为2,表示 汽车出场,用parting调用CarOut();方法,完成出场的操作。若chose为3,用parting 调用PrintParting();方法,输出停车场的所有车辆。若chose为4,用parting调用 PrintWaiting();方法,输出候车场的所有车辆。若chose为5,退出循环。若输入的 值有误则提醒用户输入有误,重新选择。
大工20春《软件工程实验(二)》实验报告答案
大工20春《软件工程实验(二)》实验报
告答案
本次实验要求同学们使用 Git 进行版本控制,将代码提交到GitHub 上,并记录提交的过程,在实验报告中详细描述 Git 的使用。
实验步骤:
2. 创建一个本地版本库;
3. 在 GitHub 上创建一个远程版本库;
4. 将本地版本库与远程版本库进行关联;
5. 在本地版本库中进行修改,并提交到本地;
6. 完成修改后,再将本地版本库与远程版本库同步。
实验中遇到的问题及解决办法:
1. 如何在 GitHub 上创建一个远程版本库?
解决办法:先创建一个空的远程版本库,然后将本地版本库与
远程版本库进行关联即可。
2. 如何将本地版本库与远程版本库进行关联?
解决办法:使用命令 git remote add origin 远程版本库地址。
3. 如何将本地修改提交到本地版本库中?
4. 如何将本地版本库与远程版本库同步?
解决办法:使用命令 git push -u origin master。
本次实验让我初步了解了 Git 的使用,通过实践,进一步掌握了版本控制的原理和方法,并在 GitHub 上创建了自己的远程版本库,实践出真知,受益匪浅。
集美大学计算机科学与技术专业课程教学大纲
集美大学教学大纲汇编计算机科学与技术专业(2006年)集美大学计算机工程学院2006.12目录课程教学大纲......................................... 错误!未定义书签。
集美大学《计算机概论》课程教学大纲............................. 错误!未定义书签。
集美大学《高级语言程序设计》课程教学大纲....................... 错误!未定义书签。
集美大学《汇编语言程序设计》课程教学大纲....................... 错误!未定义书签。
集美大学《数字逻辑》课程教学大纲............................... 错误!未定义书签。
集美大学《计算机组成原理》课程教学大纲......................... 错误!未定义书签。
集美大学《微机系统与接口技术》课程教学大纲..................... 错误!未定义书签。
集美大学《微机系统与接口技术》实验课程教学大纲................. 错误!未定义书签。
集美大学《算法设计与分析》课程教学大纲......................... 错误!未定义书签。
集美大学《面向对象程序设计》课程教学大纲....................... 错误!未定义书签。
集美大学《数据结构》课程教学大纲............................... 错误!未定义书签。
集美大学《操作系统》课程教学大纲............................... 错误!未定义书签。
集美大学《编译原理》课程教学大纲............................... 错误!未定义书签。
集美大学《数据库原理》课程教学大纲............................. 错误!未定义书签。
集美大学.net实验计算机工程软件工程_实验八
集美大学计算机工程学院实验报告课程名称:程序设计班级:软件14·实验成绩:指导教师:尤志宁姓名:·实验项目名称:使用访问SQL学号:·上机实践日期:Server 数据库实验项目编号:实验八组号:上机实践时间:一、目的(1)了解INSERT、UPDATE、DELETE、SELECT等常用语句的基本语法。
(2)了解数据模型的基本元素及其功能。
(3)了解通过访问数据库的工作流程。
(4)学习使用SELECT语句查询表中的数据。
(5)学习使用INSERT语句向表中插入数据。
(6)学习使用UPDATE语句更新表中的数据。
(7)学习使用DELETE语句删除表中的数据。
(8)学习使用Connection对象连接数据库。
(9)学习使用Command对象执行SQL语句。
(10)学习使用DataSet对象查询数据。
(11)练习使用DataAdapter对象查询数据。
(12)练习使用DataView对象查询数据。
(13)练习使用服务器端数据访问控件。
二、实验内容与设计思想本实验主要包含以下内容:(1)练习使用SELECT语句查询表中的数据。
(2)练习使用INSERT语句向表中插入数据。
(3)练习使用UPDATE语句更新表中的数据。
(4)练习使用DELETE语句删除表中的数据。
(5)练习使用访问数据库。
三、实验使用环境Windows 10下的SQL Server 2008。
四、实验步骤和调试过程1.使用SELECT语句查询表中的数据2.使用INSERT语句向表中插入数据3.使用UPDATE语句更新表中的数据4.使用DELETE语句删除表中的数据5.使用访问数据库五、实验小结(需要重点描述)1、SQL Server 2008 不支持“*=”或“=*”的写法,应使用“SELECT ... FROM ... LEFT OUTER JOIN ... ON ...”或“SELECT ... FROM ... RIGHT OUTER JOIN ... ON ...”如下:SELECT t1.Dep_name, t2.Emp_name FROM DepInfo t1 LEFT OUTER JOIN EmpInfo t2ON t1.Dep_id = t2.Dep_id2、数据库中规则的定义和使用:定义:Create rule wage as @wage between 0 and 50000使用:exec sp_bindrule’wage’,’EmpInfo.wage’。
集美大学软件工程专业课程教学大纲
集美大学教学大纲汇编软件工程专业(2006年)集美大学计算机工程学院2006.12目录课程教学大纲 (1)集美大学《计算机概论》课程教学大纲 (2)集美大学《高级语言程序设计》课程教学大纲 (6)集美大学《数据结构》课程教学大纲 (13)集美大学《操作系统》课程教学大纲 (18)集美大学《编译原理》课程教学大纲 (27)集美大学《数字逻辑》课程教学大纲 (35)集美大学《微机原理与接口技术》课程教学大纲 (38)集美大学《汇编语言程序设计》课程教学大纲 (45)集美大学《数据库程序设计》课程教学大纲 (51)集美大学《计算机网络》课程教学大纲 (58)集美大学《数据库原理》课程教学大纲 (76)集美大学《Java程序设计》课程教学大纲 (84)集美大学《软件工程》课程教学大纲 (95)集美大学《.Net程序设计》课程教学大纲 (104)集美大学《面向对象方法》课程教学大纲 (111)集美大学《Web编程技术》课程教学大纲 (121)集美大学《多媒体原理与技术》课程教学大纲 (130)集美大学《软件测试技术与软件质量》课程教学大纲 (137)集美大学《企业分布式计算》课程教学大纲 (143)集美大学《计算机英语》课程教学大纲 (150)集美大学《软件项目管理》课程教学大纲 (153)集美大学《Linux/Unix系统管理》课程教学大纲 (161)集美大学《人工智能》课程教学大纲 (168)集美大学《数字图像处理》课程教学大纲 (172)集美大学《Matlab科学计算》课程教学大纲 (179)集美大学《LINUX/UNIX程序设计》课程教学大纲 (184)集美大学《大型数据库技术》课程教学大纲 (193)集美大学《计算机图形学》课程教学大纲 (201)集美大学《人机交互的软件工程方法》课程教学大纲 (206)实习教学大纲 (198)集美大学《程序设计实践》实习教学大纲 (211)集美大学《数据库应用实践》实习教学大纲 (214)集美大学《Java程序设计》实习教学大纲 (216)集美大学《Web实践及设计》实习教学大纲 (218)集美大学《计算机组装与维护实践》实习教学大纲 (220)集美大学《网络配置与管理》实习教学大纲 (221)集美大学《面向对象程序设计实践》实习教学大纲 (222)集美大学《软件工程实践》实习教学大纲 (224)集美大学《测试技术与测试环境构建》实习教学大纲 (226)集美大学《软件技术综合实践》实习教学大纲 (228)集美大学《计算机英语综合训练》实习教学大纲 (230)集美大学《毕业实习》实习教学大纲 (232)中文:计算机概论课程名称英文: An Introduction to Computer课程编号8017010 学分/学时 2 / 36 所属教研室计算机科学与技术教研室先修课程无课程类型公共基础课考核方式闭卷开课专业计算机科学与技术、软件工程教学目的和要求集美大学《计算机概论》课程教学大纲集美大学《计算机概论》课程教学大纲集美大学《计算机概论》课程教学大纲集美大学《计算机概论》课程教学大纲拟制签名:审核签名: 审批签名:日期:日期:日期集美大学《高级语言程序设计》课程教学大纲中文:高级语言程序设计课程名称英文:High-Level Language Programming课程编号8014511 学分/学时 3.5/72所属教研室计算机科学与技术教研室先修课程《计算机导论》课程类型专业基础课考核方式闭卷开课专业计算机科学与技术、软件工程教学目的和要求集美大学《高级语言程序设计》课程教学大纲集美大学《高级语言程序设计》课程教学大纲集美大学《高级语言程序设计》课程教学大纲集美大学《高级语言程序设计》课程教学大纲集美大学《高级语言程序设计》课程教学大纲拟制签名:审核签名: 审批签名:日期:日期:日期:集美大学《数据结构》课程教学大纲拟制签名:审核签名: 审批签名:日期:日期:日期集美大学《操作系统》课程教学大纲中文:操作系统课程名称英文: Operating System课程编号8006600 学分/学时 3.5/72所属教研室计算机科学与技术教研室先修课程《高级语言程序设计》、《计算机体系结构》/《计算机组成原理》、《数据结构》、《计算机网络基础》课程类型专业基础课考核方式闭卷开课专业计算机科学与技术、软件工程教学目的和要求集美大学《操作系统》课程教学大纲集美大学《操作系统》课程教学大纲拟制签名:审核签名: 审批签名:日期:日期:日期:集美大学《编译原理》课程教学大纲中文:编译原理课程名称英文:Compiler Principle课程编号8040310 学分/学时 3.5/72所属教研室计算机科学与技术,软件工程先修课程《数据结构》、《汇编语言》、《高级语言程序设计》课程类型专业基础课考核方式闭卷开课专业计算机科学与技术、软件工程教学目的和要求教学目的本课程是计算机专业学生的一门重要专业基础课, 它有一定的理论性,又有一定的实践性, 尤其是本课程的知识与计算机应用中很多领域有紧密联系与广泛应用。
软件工程实验二
软件工程实验二软件工程实验二1. 实验背景软件工程实验二是软件工程课程的实践性实验环节,旨在帮助学生加深对软件工程原理和方法的理解,并通过实践掌握相关的技术和工具。
本实验将重点围绕软件测试展开,学生需要学习并运用测试策略、测试用例设计、测试执行等软件测试的基本知识和技术。
2. 实验目标本实验的主要目标如下:1. 掌握软件测试的基本概念和流程;2. 学习并运用常用的测试策略和测试用例设计方法;3. 熟悉常见的软件测试工具和环境;4. 进行实际的软件测试实践,提高解决问题、分析问题和沟通协作的能力。
3. 实验内容3.1 实验准备在开始实验之前,需要进行一些准备工作:1. 了解软件测试的基本概念和流程;2. 学习并掌握常用的测试策略和测试用例设计方法;3. 选择合适的软件测试工具,并进行安装和配置;4. 根据实验要求选择合适的实验项目,并进行代码的准备。
3.2 实验步骤1. 分析实验项目的需求和设计文档,理解项目的功能和逻辑;2. 根据需求和设计文档,制定测试策略和测试计划;3. 进行测试用例设计,包括黑盒测试和白盒测试;4. 根据测试用例,编写测试脚本或测试程序;5. 使用选择的测试工具执行测试用例,并记录测试结果;6. 分析测试结果,修复问题,并重新执行测试用例,直至通过所有测试用例;7. 撰写实验报告,测试过程和结果,并提出改进建议。
4. 实验要求1. 按照实验内容和步骤完成实验,确保测试结果准确;2. 实验报告中需要包含测试策略、测试用例设计、测试工具选择和使用情况、测试结果分析等内容;3. 实验报告需要清晰、有条理,并注明实验人员的姓名和学号。
5. 实验评分标准实验评分主要根据以下几个方面评估:1. 实验步骤的完整性和正确性;2. 测试策略和测试用例设计的合理性;3. 测试工具的选择和使用情况;4. 测试结果分析的深度和准确性;5. 实验报告的结构和表达风格。
6. 实验参考资料1. 《软件工程》(第5版),作者:Ian Sommerville2. 《软件测试基础教程》(第2版),作者:张彩云、陆俊林、杨玉飞3. 《软件测试技术》(第3版),作者:陈艳、章伟、崔海云7. 实验通过本次实验,我对软件测试的基本流程和方法有了更深入的理解,学会了运用测试策略和测试用例设计方法进行软件测试。
网络1112cisco实验7.5.2
集美大学计算机工程学院实验报告实验名称RIPv2配置练习实验课程名称计算机网络班级网络1112 组号 D日期2013.11.4 地点陆大0316成绩教师颜庆茁一、实验目标• 按照需要设计有效的VLSM 。
• 为接口分配正确的地址并记录地址。
• 根据拓扑图进行网络布线。
• 清除启动配置并将路由器重新加载为默认状态。
• 配置路由器使用RIP 第2 版。
• 配置并传播静态默认路由。
• 检验RIP 第2 版工作情况。
• 测试并校验网络是否完全通畅。
• 思考网络实施并整理成文档。
二、实验场景拓扑图地址表设备接口ip地址子网掩码默认网关场景:在本次实验练习中,您将得到一个网络地址,您必须使用VLSM 对其进行子网划分以便完成如拓扑结构图所示的网络编址。
您需要配置RIP 版本 2 和静态路由,以便非直连网络中的主机能够彼此通信。
3、实验步骤:任务1 :对地址空间划分子网。
步骤1 :研究网络要求。
此网络的编址方案应满足以下要求:• ISP LAN 使用209.165.200.224/27 网络。
• ISP 和HQ 之间的链路使用209.165.202.128/27 网络。
• 必须使用VLSM 对192.168.40.0/24 网络划分子网,以供其它链路使用。
• HQ LAN1 需要50 个主机IP 地址。
• HQ LAN2 需要50 个主机IP 地址。
• BRAN CH LAN1 需要30 个主机IP 地址。
• BRANCH LAN2 需要12 个主机IP 地址。
• HQ 和BRANCH 之间的链路两端各需要1 个IP 地址。
(注意:网络设备的接口也是主机IP 地址,上述编址要求中包括了这些地址。
)步骤2 :创建网络设计时请思考以下问题:需要为192.168.40.0/24 网络创建多少个子网?_____5个_____总共需要从192.168.40.0/24 网络获得多少个IP 地址?___144个_______ HQ LAN1 子网将使用什么子网掩码?________255.255.255.192_______该子网最多有几个主机地址可供使用?_____62个_____HQ LAN2 子网将使用什么子网掩码?______255.255.255.192___该子网最多有几个主机地址可供使用?________62个__BRANCH LAN1 子网将使用什么子网掩码?_____255.255.255.224____该子网最多有几个主机地址可供使用?_____30个_____BRANCH LAN2 子网将使用什么子网掩码?_____255.255.255.240_______该子网最多有几个主机地址可供使用?____14个______HQ 和BRANCH 路由器之间的链路将使用什么子网掩码?255.255.255.252该子网最多有几个主机地址可供使用?2个_____步骤3 :为拓扑图分配子网地址。
2022年集美大学诚毅学院软件工程专业《计算机网络》科目期末试卷B(有答案)
2022年集美大学诚毅学院软件工程专业《计算机网络》科目期末试卷B(有答案)一、选择题1、当数据由主机A送传至主机B时,不参与数据封装工作的是()。
A.物理层B.数据链路层C.网络层D.传输层2、以下说法错误的是()。
I..广播式网络一般只包含3层,即物理层、数据链路层和网络层II.Intermet的核心协议是TCP/IPIII.在lnternet中,网络层的服务访问点是端口号A. I、II、IIIB. IIIC. I、ⅢD. I、II3、设有两个了子网202.118.133.0/24和202.118.130.0/24,如果进行路由聚,得到的网络地址是()。
A.202.118.128.0/21B.202.118.128.0/22C.202.118.130.0/22D.202.118.132.0/204、下列能反映出网络中发生了拥塞现象的是()。
A.随着网络负载的增加,吞吐量反而降低B.网络结点接收和发出的分组越来越多C.随着网络负载的增加,吞吐量也增加D.网络结点接收和发出的分组越来越少5、下列协议中,不会发生碰撞的是()。
A.TDMB.ALOHAC.CSMAD.CSMA/CD6、对于信道比较可靠并且对通信实时性要求高的网络,采用()数据链路层服务比较合适。
A.无确认的无连接服务B.有确认的无连接服务C.有确认的面向连接的服务D.无确认的面向连接的服务7、若甲向乙发起一个TCP连接,最大段长MSS-1KB,RTT-5ms,乙开辟的接收缓存为64KB,则甲从连接建立成功至发送窗口达到32KB,需经过的时间至少是()。
A.25msB.30msC.160msD.165ms8、A和B之间建立了TCP连接,A向B发送了一个报文段,其中序号字段seq=300,确认号字段ACK=101,数据部分包含7个字节,那么在B对该报文的确认报文段中()。
A.seq-30l,ACK=101B.seq=301,ACK=108C.seq=l01.ACK=101D.seq=101,ACK=3079、一个UDP用户数据报的数据字段为8192B。
计算机信息安全 实验二 L0phtcrack
集美大学计算机工程学院实验报告课程名称:计算机信息安全技术班级:计算12实验成绩:指导教师:付永钢姓名:学号:20上机实践日期:2014实验项目名称:使用L0phtcrack破解Windows 2000密码实验项目编号:实验二组号:上机实践时间:4 学时一实验目的通过密码破解工具的使用,了解帐号的安全性,掌握安全口令的设置原则,以保护帐号口令的安全。
二实验原理口令密码应该说是用户最重要的一道防护门,如果密码被破解了,那么用户的信息将很容易被窃取。
随着网络黑客攻击技术的增强和提高,许多口令都可能被攻击和破译,这就要求用户提高对口令安全的认识。
一般入侵者常常通过下面几种方法获取用户的密码口令,包括口令扫描、Sniffer密码嗅探、暴力破解、社会工程学(即通过欺诈手段获取)以及木马程序或键盘记录程序等手段。
有关系统用户帐户密码口令的破解主要是基于密码匹配的破解方法,最基本的方法有两个,即穷举法和字典法。
穷举法是效率最低的办法,将字符或数字按照穷举的规则生成口令字符串,进行遍历尝试。
在口令稍微复杂的情况下,穷举法的破解速度很低。
字典法相对来说较高,它用口令字典中事先定义的常用字符去尝试匹配口令。
口令字典是一个很大的文本文件,可以通过自己编辑或者由字典工具生成,里面包含了单词或者数字的组合。
如果你的密码就是一个单词或者是简单的数字组合那么破解者就可以很轻易的破解密码。
常用的密码破解工具和审核工具很多,例如Windows平台口令的L0phtCrack、WMICracker、SAMInside等。
通过这些工具的使用,可以了解口令的安全性。
三实验环境一台装有Windows 2000/XP系统的计算机,安装L0phtCrack5.04、SAMInside的密码破解工具。
四实验内容和任务在本ftp中提供L0phtCrack6和L0phtCrack5(破解版) ,SAMInside。
注意:L0phtCrack6未破解,只可以使用15天。
软件工程实验二
软件工程实验二在软件工程的学习中,实验是巩固理论知识、提升实践能力的重要环节。
本次软件工程实验二让我对软件开发的流程和方法有了更深入的理解和体验。
实验的目标是开发一个简单的学生成绩管理系统。
这个系统需要能够实现学生成绩的录入、查询、统计和分析等功能。
为了完成这个目标,我们首先进行了需求分析。
在需求分析阶段,我们与老师和同学进行了充分的沟通,了解了他们对这个系统的期望和要求。
我们发现,除了基本的成绩录入和查询功能外,用户还希望能够方便地对成绩进行排序、计算平均分、统计优秀率和不及格率等。
同时,系统还需要具备一定的安全性,只有授权用户才能进行数据的修改和删除操作。
根据需求分析的结果,我们进入了设计阶段。
在这个阶段,我们确定了系统的架构和模块划分。
整个系统分为用户界面模块、数据处理模块、数据库操作模块和安全验证模块。
用户界面模块负责与用户进行交互,接收用户的输入并展示系统的输出;数据处理模块负责对成绩数据进行计算和分析;数据库操作模块负责与数据库进行交互,实现数据的存储和读取;安全验证模块则负责验证用户的身份和权限。
在确定了系统的架构和模块划分后,我们开始进行详细的设计。
对于每个模块,我们都设计了相应的接口和数据结构。
例如,在数据处理模块中,我们定义了一个成绩数据结构,包括学号、课程名称、成绩等字段。
同时,我们还设计了一系列的函数来实现成绩的排序、计算平均分等功能。
设计完成后,就进入了编码阶段。
在编码过程中,我们严格遵循了编码规范,保证代码的可读性和可维护性。
对于一些复杂的算法和逻辑,我们还添加了详细的注释,以便于后续的调试和维护。
在编码过程中,我们也遇到了一些问题。
例如,在实现成绩排序功能时,由于对排序算法的理解不够深入,导致排序结果出现了错误。
经过仔细的检查和调试,我们发现是在交换数据时出现了错误。
通过修改代码,最终解决了这个问题。
编码完成后,我们进行了严格的测试。
测试包括单元测试、集成测试和系统测试。
大工20春《计算机工程实验(二)》实验报告离线作业
大工20春《计算机工程实验(二)》实验
报告离线作业
1. 实验目的
本次实验的目的是通过离线作业,对计算机工程实验(二)的相关内容进行巩固和深入理解。
2. 实验内容
本次离线作业包括以下几个部分:
- 理解并应用计算机工程实验(二)的基本概念和知识;
- 完成实验指导书中的相关实验内容;
- 编写实验报告,记录实验过程和结果。
3. 实验步骤
3.1 实验准备
根据实验指导书的要求,准备所需的实验设备和材料,并确保实验环境的正常运行。
3.2 实验过程
按照实验指导书提供的步骤,依次进行实验,记录实验过程中
的关键步骤和操作。
3.3 实验结果
根据实验过程中产生的数据和观察结果,整理并分析实验结果,得出相应的结论。
3.4 实验报告
根据实验指导书的要求,编写实验报告,包括实验目的、实验
内容、实验步骤、实验结果和结论等内容。
4. 实验总结
通过本次实验的离线作业,我对计算机工程实验(二)的实验内
容有了更深入的理解,并成功完成了实验指导书中的要求。
实验报
告的撰写过程中,我能够准确记录实验过程和结果,并得出相应的
结论。
5. 附录
实验报告的附录部分包括实验过程中使用的数据、实验设备和
材料清单等相关信息。
以上是关于大工20春《计算机工程实验(二)》实验报告离线作业的简要内容,希望能够对您有所帮助。
集美大学Web编程技术课程教学大纲
集美大学《Web编程技术》课程教学大纲
课程实验大纲(必学部分)
1.实验项目与学时分配
序号
实验项目
学时
必开/选开
实验类型
备注
(必开实验)
1
Web的运行环境和简单的Web页
2
必开
验证
2
JavaScript与客户端的技术
2
必开
设计
3
JSP语法和内建对象的使用
2
选开
设计
X3
XML文档对象模型
2
选开
设计
注:Java语言板块,先前学过则不用做实验,若未学过,则仅作2学时概要讲授,由学生详细自学。JavaEE板块的实验,按目前集美大学培养计划,后续课程开设,在此从略。
2.实验教学大纲(已细化,可代指导书)
第一部分(必开实验)
实验1:Web的运行环境和简单的Web页
实验2:JavaScript与客户端的技术
实验目的:检验课堂引导和课后自学HTML与JavaScript两大知识板块的效果,掌握静态HTML网页的制作;学会JavaScript脚本语言的嵌入和运行机制;学会使用表单控件和表格元素;学会JavaScript面向对象编程和客户端交互技术;掌握利用JavaScript检验客户端数据输入的合法性。
重点:数据库的连接和操作,连接池技术。
难点:数据库的连接与操作。
第17章Servlet与表单
要求:理解Servlet的运行机制,掌握Servlet常用接口、类及其方法。
重点:Servlet的编制、运行,doGet和doPost方法的使用,Servlet的注册和初始化参数。
软件工程实验二
软件工程实验二在软件工程的学习过程中,实验是帮助我们深入理解理论知识、提升实践能力的重要环节。
本次软件工程实验二,让我对软件的开发流程和技术有了更深刻的认识。
实验二的主要任务是开发一个小型的信息管理系统。
这个系统需要实现用户信息的录入、查询、修改和删除等功能。
听起来似乎并不复杂,但在实际操作中,却涉及到众多的细节和技术难题。
首先是需求分析阶段。
为了明确系统的功能需求,我们需要与用户进行充分的沟通。
了解他们对于信息管理的期望和具体要求,比如用户希望能够按照不同的字段进行查询,或者对某些敏感信息进行加密处理。
这个过程就像是在搭建房屋之前,要先明确房屋的用途、居住人数等基本信息,以便设计出符合需求的建筑结构。
接下来是系统设计。
根据需求分析的结果,我们开始规划系统的架构和模块划分。
这就好比是在绘制房屋的设计图纸,确定各个房间的布局和功能分区。
在这个系统中,我们将其划分为用户界面模块、数据处理模块、数据库操作模块等。
同时,还要设计数据库的表结构,确定每个字段的数据类型和长度,以保证数据的存储和检索的高效性。
然后就是编码实现阶段。
这是整个实验中最为关键和耗时的部分。
选择合适的编程语言和开发工具,按照设计好的架构和模块,逐步实现各个功能。
在编码过程中,要时刻注意代码的规范和可读性,添加必要的注释,以便日后的维护和修改。
同时,还要处理各种可能出现的异常情况,保证系统的稳定性和可靠性。
例如,在用户信息录入功能的实现中,需要对用户输入的数据进行合法性校验。
如果用户输入的手机号码格式不正确,或者姓名为空,系统要能够给出相应的提示,并拒绝录入。
在查询功能的实现中,要根据用户输入的条件,构建合理的数据库查询语句,以快速准确地获取所需的数据。
测试环节也是不容忽视的。
对编写好的代码进行单元测试、集成测试和系统测试,检查系统的功能是否符合预期,是否存在漏洞和错误。
通过测试,我们发现了一些在编码过程中没有考虑到的边界情况和异常情况,并及时进行了修复和优化。
路由跟踪程序仿真
集美大学计算机工程学院实验报告课程名称:TCP/IP协议与通信程序设计班级:实验成绩:实验项目名称:路由跟踪程序仿真学号:上机实践日期:2016-06-16实验项目编号:13组号:1上机实践时间:2学时一、实验目的了解利用原始套接字进行通信程序的编写,编译和执行二、实验内容与设计思想基于原始套接字编写路由跟踪仿真程序,以跟踪获取本机的IP 数据包到达集美大学教务处网站服务主机(210.34.129.66)所经历的路由器的IP地址,并在客户端显示出来。
提示:本机程序向目标主机发送一个封装ICMP回显请求的数据报,初始化TTL为1,当该包到达途中第一个路由器时,TTL值减为0发生超时错误,第一个路由器反馈源主机ICMP超时差错报文。
依次将数据报的TTL值递增1,以便IP包能到达下一个路由器,如法炮制,直到数据报达到目地主机,目地主机将返回ICMP回显应答消息。
源主机依次解析处理期间收到的ICMP报文就可以得出数据报从源主机到达目地主机途中所经过的路由器IP。
三、实验使用环境操作系统:Microsoft Windows XP SP2编程环境:Visual C++ 6.0四、实验步骤和调试过程源代码:#define WIN32_LEAN_AND_MEAN#include <winsock2.h> //使用原始套接字需要WinSock2的支持#include <ws2tcpip.h> //进行IPPROTO_IP级别设置时用到#include <stdio.h>#include <stdlib.h>#define ICMP_ECHO 8 //发送Ping请求时的ICMP报文类型#define ICMP_ECHOREPLY 0 //接收Ping回复时的ICMP报文类型#define ICMP_TIMEOUT 11 //ICMP超时报文类型#define ICMP_MIN 8 //Minimum 8-byte ICMP packet (header) #define MAX_PACKET 1024 //Max ICMP packet size#define DEICMP_PACKSIZE 44 //Defaut ICMP PACKET SIZEchar lpdest[16]; //用来存放目的IP地址DWORD cStartTickCount; //用来存放发送包的起始时间#pragma comment( lib, "ws2_32.lib" )typedef struct _icmphdr //ICMP头部定义,被封装在IP包中{BYTE i_type; //报文类型BYTE i_code; //代码USHORT i_cksum; //校验和USHORT i_id; //标识符USHORT i_seq; //序号}IcmpHeader;//初始化ICMP头部void FillICMPData(char *icmp_data,int datasize){IcmpHeader *icmp_hdr=NULL;char *datapart=NULL;icmp_hdr=(IcmpHeader *)icmp_data;icmp_hdr->i_type=ICMP_ECHO; //request an ICMP echoicmp_hdr->i_code=0;icmp_hdr->i_id=(USHORT)GetCurrentProcessId();icmp_hdr->i_cksum=0;icmp_hdr->i_seq=0;datapart=icmp_data+sizeof(IcmpHeader);memset(datapart,'E',datasize-sizeof(IcmpHeader));}//校验和函数USHORT checksum(USHORT *buffer,int size){unsigned long cksum=0;while(size>1){cksum+=*buffer++;size-=sizeof(USHORT);}if(size)cksum+=*(UCHAR *)buffer;cksum=(cksum>>16)+(cksum & 0xffff);cksum+=(cksum>>16);return (USHORT)(~cksum);;}int DecodeIPHeader(char *buf,int bytes,struct sockaddr_in *from){IcmpHeader *icmphdr=NULL;DWORD tick;static int icmpcount=1;unsigned short iphdrlen;//判断接收操作是否超时if(!buf){printf("%2d: ***.***.***.*** Request timed out.\n",icmpcount++);return 1;}tick=GetTickCount();iphdrlen=(buf[0] & 0x0f)*4;icmphdr=(IcmpHeader *)(buf+iphdrlen);if(bytes<iphdrlen+ICMP_MIN){printf("Too few bytes from %s\n",inet_ntoa(from->sin_addr));return 0;}//判断接收的ICMP报文是否为超时报文if(icmphdr->i_type==ICMP_TIMEOUT&&icmphdr->i_code==0){printf("%2d: %-15s %4dms\n",icmpcount++,inet_ntoa(from->sin_addr),tick-cStartTickCount);return 0;}//判断接收的ICMP报文是否为回复报文else if(icmphdr->i_type==ICMP_ECHOREPLY&&icmphdr->i_id==GetCurrentProcessId()){printf("%2d: %-15s %4dms\n",icmpcount++,inet_ntoa(from->sin_addr),tick-cStartTickCount);printf("Trace complete!\n");return 1;}//其他类型,表示不可达else{printf("%2d: Destination host is unreachable!\n",icmpcount++);return 1;}}int main(){WSADATA wsaData;SOCKET sockRaw=INVALID_SOCKET;struct sockaddr_in dest,from;int i,bread,fromlen=sizeof(from),timeout=1000,ret;struct hostent *hp=NULL;char *icmp_data=NULL,*recvbuf=NULL;USHORT seq_no=0;printf("输入追踪的目的(IP/主机名):");scanf("%s",lpdest);if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0){printf("WSAStartup() failed:%d\n",GetLastError());return -1;}//创建套接字sockRaw=WSASocket(AF_INET,SOCK_RAW,IPPROTO_ICMP,NULL,0,WSA_FLAG_OVERLAPPED);if(sockRaw==INVALID_SOCKET){printf("WSASocket() failed:%d\n",WSAGetLastError());return -1;}//对锁定套接字设置超时bread=setsockopt(sockRaw,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout,sizeof(timeout));if(bread==SOCKET_ERROR){printf("setsockopt(SO_RCVTIMEO) failed:%d\n",WSAGetLastError());return -1;}timeout=1000;bread=setsockopt(sockRaw,SOL_SOCKET,SO_SNDTIMEO,(char*)&timeout,sizeof(timeout));if(bread==SOCKET_ERROR){printf("setsockopt(SO_SNDTIMEO) failed:%d\n",WSAGetLastError());return -1;}//解析目标地址,将主机名转化为IP地址memset(&dest,0,sizeof(dest));dest.sin_family=AF_INET;if((dest.sin_addr.S_un.S_addr=inet_addr(lpdest))==INADDR_NONE){if((hp=gethostbyname(lpdest))!=NULL){memcpy(&(dest.sin_addr.S_un.S_addr),hp->h_addr_list[0],hp->h_length);dest.sin_family=hp->h_addrtype;printf("dest.sin_addr=%s\n",inet_ntoa(dest.sin_addr));}else{printf("gethostbyname() failed:%d\n",WSAGetLastError());return -1;}}//Create the ICMP pakceticmp_data=(char*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,MAX_PACKET);recvbuf =(char*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,MAX_PACKET);if(!icmp_data){printf("HeapAlloc() failed: %d\n",GetLastError());return -1;}memset(icmp_data,0,MAX_PACKET);FillICMPData(icmp_data,DEICMP_PACKSIZE);printf("跳IP地址耗时\n");//开始发送/接收ICMP报文for(i=1;i<=255;i++){int bwrote;//设置IP包的生存期ret=setsockopt(sockRaw,IPPROTO_IP,IP_TTL,(char *)&i,sizeof(int));if(ret==SOCKET_ERROR){printf("setsockopt(IP_TTL) failed:%d\n",WSAGetLastError());}((IcmpHeader *)icmp_data)->i_cksum =0;((IcmpHeader *)icmp_data)->i_seq=seq_no++; //Sequence number of ICMP packets((IcmpHeader *)icmp_data)->i_cksum=checksum((USHORT*)icmp_data,DEICMP_PACKSIZE);//发送ICMP包请求查询cStartTickCount=GetTickCount();bwrote=sendto(sockRaw,icmp_data,DEICMP_PACKSIZE,0,(struct sockaddr*)&dest,sizeof(dest));if(bwrote==SOCKET_ERROR){if(WSAGetLastError()==WSAETIMEDOUT){printf("timed out\n");continue;}printf("sendto() failed:%d\n",WSAGetLastError());return -1;}if(bwrote<DEICMP_PACKSIZE){printf("Wrote %d bytes\n",bwrote);}//接收ICMP回复包bread=recvfrom(sockRaw,recvbuf,MAX_PACKET,0,(struct sockaddr *)&from,&fromlen);if(bread==SOCKET_ERROR){if(WSAGetLastError()==WSAETIMEDOUT){DecodeIPHeader(NULL,0,NULL);continue;}printf("recvfrom() failed:%d\n",WSAGetLastError());return -1;}if(DecodeIPHeader(recvbuf,bread,&from))break;Sleep(1000);}system("pause");if(sockRaw!=INVALID_SOCKET)closesocket(sockRaw);HeapFree(GetProcessHeap(),0,recvbuf);HeapFree(GetProcessHeap(),0,icmp_data);WSACleanup();return 0;}执行结果:五、实验小结(必写环节)1.路由追踪需要创建两个套接字,一个是用来接收icmp封包的原始套接字,一个是用来发送ttl不断增加的udp封包的套接字,每次ttl超时,一个icmp消息就会被发送回来,此时用来接收icmp封包的套接字等待接收这个消息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if (str.Length > 0)
Console.WriteLine("你的性别是:{0}", str);
else
Console.WriteLine("没有输入");
Console.ReadKey();
}
}
}
(2)练习if语句实现多分支控制的方法
Console.WriteLine("圆的半径:"+r.ToString());
Console.WriteLine("圆的周长:"+c.ToString());
Console.ReadKey();
}
}
}
在菜单中选择“调试/启动调试”,或在工具栏中单击“启动调试”按钮,运行当前项目,查看运行结果。
4.使用c#语言的运算符和表达式
using System;
using System.Collections.Generic;
using System.Text;
namespace ConstVariable
{
class Program
{
public const float PI = 3.1415926F;
static void Main(string[] args)
num = i;
num /= j;
Console.WriteLine("i/j={0}", num);
num = i;
num %= j;
Console.WriteLine("i%j={0}", num);
Console.ReadKey();
}
}
}
5.使用选择控制语句
(1)练习if语句的使用
using System;
if(now.DayOfWeek == DayOfWeek.Monday)
Console.WriteLine("星期一");
if (now.DayOfWeek == DayOfWeek.Tuesday)
Console.WriteLine("星期二");
if (now.DayOfWeek == DayOfWeek.Wednesday)
(3)练习使用c#语言创建控制台应用程序。
(4)练习使用c#语言的结构体。
(5)练习使用c#语言的常量和变量。
(6)练习使用c#语言的运算符和表达式。
(7)练习使用c#语言的选择控制语句。
(8)练习使用c#语言的循环控制语句。
(9)练习使用c#语言的跳转控制语句。
(10)练习使用c#语言的异常处理语句。
public string Telephone;
}
static void Main(string[] args)
{
//定义结构体
User user=new User();
//向结构体重赋值
erName="Admin";
user.Password="11111";
user.Email="Admin@";
static void Main(string[] args)
{
int i = 23;
int j =i++;
int k = ++i;
Console.WriteLine("i="+ i.ToString());
Console.WriteLine("j="+ j.ToString());
Console.WriteLine("k="+k.ToString());
static void Main(string[] args)
{
int i = 23;
Console.WriteLine(i>20 && i<50);
Console.WriteLine(i > 40 && i < 50);
Console.ReadKey();
}
}
}
(4)赋值表达式的使用
using System;
(3)学习c#语言中运算符和表达式的使用方法。
(4)学习c#语言中流程控制语句的使用方法。
(5)学习c#语言中类和对象的使用方法。
二、实验内容与设计思想
(1)在程序中,可以c#语言开发应用程序。C#语言应用程序保存在.aspx.cs文件里。
(2)了解c#语言的基本数据类型,运算符以及声明常量和变量的方法。
(11)练习使用c#语言的类和对象。
三、实验使用环境
c#语言开发应用程序
四、实验步骤和调试过程
ቤተ መጻሕፍቲ ባይዱ1.练习使用c#语言创建控制台应用程序。
创建一个控制台应用程序项目,项目名称为HelloWorld,在Main中添加如下代码:
static void Main(string[] args)
{
Console.WriteLine("Hello World !");
switch (now.DayOfWeek)
{
case DayOfWeek.Monday:
Console.WriteLine("星期一");
break;
case DayOfWeek.Tuesday:
Console.WriteLine("星期二");
break;
case DayOfWeek.Wednesday:
if (now.DayOfWeek == DayOfWeek.Saturday)
Console.WriteLine("星期六");
if (now.DayOfWeek == DayOfWeek.Sunday)
Console.WriteLine("星期日");
Console.ReadKey();
}
}
}
(3)练习switch语句的使用方法
Console.ReadKey();
}
}
}
(3)关系表达式的使用
using System;
using System.Collections.Generic;
using System.Text;
namespace ConstVariable
{
class Program
{
public const float PI = 3.1415926F;
Console.WriteLine("星期三");
if (now.DayOfWeek == DayOfWeek.Thursday)
Console.WriteLine("星期四·");
if (now.DayOfWeek == DayOfWeek.Friday)
Console.WriteLine("星期五");
Console.WriteLine(user.Address);
Console.WriteLine(user.Telephone);
Console.ReadKey();
}
}
}
在菜单中选择“调试/启动调试”,或在工具栏中单击“启动调试”按钮,运行当前项目,查看运行结果。
3.使用常量和变量
创建一个控制台应用程序项目,项目名称为ConstVariable,要求输入圆的半径,计算圆的周长,运行代码如下:
集美大学计算机工程学院实验报告
课程名称:Web应用程序开发教程
班级:软件14·
实验成绩:
指导教师:尤志宁
姓名:·
实验项目名称:实验二
学号·
上机实践日期:
实验项目编号:
组号:
上机实践时间:
一、目的
(1)了解c#是开发应用程序的主流语言。
(2)了解.NET Framework是支持和生成下一代应用程序的内部Windows组件,它可以提供一个一致的面向对象的编程环境。C#程序在.NET Framework上运行。
using System.Collections.Generic;
using System.Text;
namespace ConstVariable
{
class Program
{
static void Main(string[] args)
{
int i = 10,j=3;
Console.WriteLine("i=10,j=3");
{
Console.WriteLine("请输入圆的半径:");
float r = 0;
try
{
r = float.Parse(Console.ReadLine());
}
catch (Exception)
{
Console.WriteLine("请输入数据结构的数据。");
return;
}
float c = 2 * PI * r;
}
}
}
(2)递增表达式的使用
using System;
using System.Collections.Generic;
using System.Text;
namespace ConstVariable
{
class Program
{
public const float PI = 3.1415926F;
Console.ReadKey();