JAVA实验六(河北工业大学)

合集下载

河北工业大学Java各章知识点总结考试用

河北工业大学Java各章知识点总结考试用

网络编程技术课程内容第一章Java语言概述1、Java语言特点:简单、完全面向对象、平台无关、多线程、可靠、安全、自动垃圾回收机制;2、Java程序开发流程:安装JDK、编写源代码、javac编译生成字节码文件、运行字节码文件;3、Java两种程序:application:应用程序,编译:javac 源文件名;运行:java 字节码文件(含主函数)Applet:嵌入网页中运行的小应用程序,需有相应的html文件;4、一个完整的Java源程序结构:package语句:该部分至多只有一句,必须放在源程序的第一句;import:该部分可以有若干import语句或者没有,必须放在所有的类定义之前;public classDefinition公共类定义部分,至多只有一个公共类的定义,Java语言规定该Java源程序的文件名必须与该公共类名完全一致;classDefinition类定义部分,可以有0个或者多个类定义;interfaceDefinition接口定义部分,可以有0个或者多个接口定义。

第二章Java语言基础1、Java的关键字,常量、变量,简单数据类型,运算符、表达式常量:final基本数据类型:8中基本数据类型:boolean、char、byte、int、short、long、float、double带小数点数如3.13默认为double类型,整数默认int型class、interface、数组都算引用/参考数据类型运算符:判等(= =)只能对基本数据类型,equals方法;短路运算符:&&、||表达式:强制类型转换、自动类型转换2、主要的Java语句结构:分支、循环、转移1)分支:if else、及if else嵌套实现多分支switch语句:多分支switch(表达式){case 常量1:语句1;[break;]case 常量2:语句2;[break;]……case 常量n:语句n;[break;][default:缺省处理语句;break;]}case与break联用,保证多路分支的正确实现。

java实验报告

java实验报告

java实验报告Java实验报告实验名称:Java图形界面编程实验对象:Java初学者实验目的:通过实际操作掌握Java图形界面编程的基本知识和技巧实验过程:1. 实验准备:安装Java JDK开发环境,并准备好IDE工具(如Eclipse或IntelliJ IDEA)2. 创建工程:打开IDE工具,新建一个Java工程,并指定工程名和保存路径3. 创建界面:在工程上新建一个Java类,命名为"MainUI"4. 设计界面:在"MainUI"类中使用Swing或JavaFX等GUI库,设计界面布局和组件5. 添加事件监听:在"MainUI"类中添加事件监听器,使组件与逻辑代码进行关联6. 编写逻辑代码:在"MainUI"类中编写逻辑代码,实现界面交互和功能实现7. 编译运行:将工程编译成可执行文件,并运行程序,查看界面效果和功能是否符合预期8. 调试修复:根据实际运行情况,对代码进行调试和修复,确保程序的稳定性和正确性9. 测试验证:使用不同输入数据对程序进行测试,验证程序的鲁棒性和准确性10. 总结反思:对实验过程进行总结和反思,提出改进和优化的建议实验结果:通过实验,我成功创建了一个简单的Java图形界面程序,并实现了基本的交互和功能。

在界面设计方面,我使用了Swing库进行布局和组件的添加,通过事件监听器实现了按钮点击和文本框输入的监听。

在逻辑代码方面,我实现了简单的计算器功能,能够进行加减乘除等基本运算。

通过测试验证,程序运行稳定,结果准确。

实验心得:通过这次实验,我对Java图形界面编程有了更深入的了解和掌握。

我学会了使用Swing或JavaFX等库进行界面设计,以及如何添加事件监听器和编写逻辑代码。

通过实际操作,我发现编写图形界面程序相对于命令行程序更加复杂,需要考虑到用户的交互和界面布局,还需要注意代码的可读性和可维护性。

java程序设计6

java程序设计6

类的继承
• 继承是一种由已有的类创建新类的机制。利用继承,可以先创建一个共 有属性的一般类,根据该一般类再创建具有特殊属性的新类,新类继承 一般类的状态和行为,并根据需要增加它自己的新的状态和行为。 • 通过继承可以实现代码的复用。
– – 父类或超类(superclass):被继承的类 子类(subclass):由继承而得到的类
2012春季学期:信管091 信管C091
13
张学民 xzhang2000@
河北工业大学管理学院
Java程序设计
实验:方法重载(Method Overloading)
14
2012春季学期:信管091 信管C091
张学民 xzhang2000@
河北工业大学管理学院
Java程序设计
河北工业大学管理学院
Java程序设计
类方法和实例方法 • 类中的方法可分为两种:
– 类方法:方法类型前面加关键字 static – 实例方法
class Fibi { public static long fibinacii(int n) { long c=0; if(n==1||n==2) c=1; else c=fibinacii(n-1)+fibinacii(n-2); return c; } } public class Example4_8 { public static void main(String args[]) { System.out.println(Fibi.fibinacii(7)); } }
10
• 局部变量:方法定义部分所定义的变量和参数(只在方法内有效)
– 如果局部变量的定义是在一个复合语句中,该局部变量仅在该复合语句中有效; – 如果局部变量的定义是在一个循环语句中,该局部变量仅在该循环语句中有效。

河北工业大学操作系统实验报告

河北工业大学操作系统实验报告

河北工业大教之阳早格格创做支配系统2014版真验报告真验一进程统造与形貌一、真验脚法通过对付Windows2000编程,进一步认识支配系统的基础观念,较好天明黑Windows2000的结构.通过创造进程、瞅察正正在运止的进程战终止进程的步调安排战调试支配,进一步认识支配系统的进程观念,明黑Windows2000进程的“一死”.三、真验真质战步调第一部分:Windows2000Professional下的GUI应用步调,使用VisualC++编译器创造一个GUI应用步调,代码中包罗了WinMain()要领,该要领GUI典型的应用步调的尺度出心面.步调1-1Windows2000的GUI应用步调也不妨利用所有其余文本编写器键进步调代码,如果那样,比圆使用WORD去键进战编写步调,则该当注意什么问题?保存时,将文献保存为扩展名为*.cpp的C++源文献.正在步调1-1的GUI应用步调中,最先需要Windows.h头文献,以便赢得传递给WinMain()战MessageBox()API函数的数据典型定义.接着的pragma指令指示编译器/对接器找到User32.LIB库文献并将其与爆收的EXE文献对接起去.那样便不妨运止简朴的下令止下令CLMsgBox.CPP去创造那一应用步调,如果不pragma指令,则MessageBox()API函数便成为已定义的了.那一指令是VisualStudioC++编译器特有的.接下去是WinMain()要领.其中有四个由本质的矮级出心面传播去的参数.hInstance参数用去拆进与代码贯串的图标或者位图一类的资材,无论何时,皆可用GetModuleHandle()API函数将那些资材提与出去.系统利用真例句柄去指明代码战初初的数据拆正在内存的那边.句柄的数值本质上是EXE文献映像的基天面,常常为0x00400000.下一个参数hPrevInstance是为背后兼容而设的,目前系统将其设为NULL.应用步调的下令止(不包罗步调的称呼)是lpCmdLine参数.其余,系统利用nCmdShow 参数报告应用步调怎么样隐现它的主窗心(选项包罗最小化、最大化战平常).终尾,步调调用MessageBox()API函数并退出.如果正在加进消息循环之前便中断运止的话,终尾必须返回0.运止截止:弹出一个消息框,题目为Greetings,真质为Hello,WindowsXp,中间有一个确认按钮.进程对付象支配系统将目前运止的应用步调瞅做是进程对付象.利用系统提供的惟一的称为句柄(HANDLE)的号码,便可与进程对付象接互.那一号码只对付目前进程灵验.本真验表示了一个简朴的进程句柄的应用.正在系统中运止的所有进程皆可调用GetCurrentProcess()API函数,此函数可返回标记进程自己的句柄.而后便可正在Windows需要该进程的有关情况时,利用那一句柄去提供.步调1-2:赢得战使用进程的句柄步调1-2中列出的是一种赢得进程句柄的要领.对付于进程句柄可举止的惟一有用的支配是正在API调用时,将其动做参数传递给系统,正如步调1-2中对付GetPriorityClass()API函数的调用那样.正在那种情况下,系统背进程对付象内“窥视”,以决断其劣先级,而后将此劣先级返回给应用步调.OpenProcess()战CreateProcess()API函数也不妨用于提与进程句柄.前者提与的是已经存留的进程的句柄,而后者创造一个新进程,并将其句柄提供出去.1-2.cpp的运止截止:进程劣先权为Normal.步调1-3隐现怎么样找出系统中正正在运止的所有进程,怎么样利用OpenProcess()API函数去赢得每一个观察进程的进一步疑息.步调1-3利用句柄查出进程的仔细疑息步调1-3步调最先利用Windows2000的新个性,即工具助闲库去赢得目前运止的所有进程的快照.而后应用步调加进快照中的每一个进程,得到其以PROCESSENTRY32结构表示的属性.那一结构用去背OpenProcess()API函数提供进程的ID.Windows 追踪每一进程的有关时间,示例中是通过挨开的进程句柄战GetProcessTimes()API去曲询得到有关时间的.接下去,一个定造的助闲函数博得了几个返回的数值,而后估计进程正在内核模式下消耗的时间占总时间的百分比.步调的其余部分比较简朴,不过将有关疑息隐现给用户,扫除进程句柄,而后继启循环,曲到所有进程皆估计过为止.运止截止:第二部分:进程的“一死”1、创造进程创造子进程本步调展示的是一个简朴的使用CreateProcess()API函数的例子.最先产死简朴的下令止,提供目前的EXE文献的指定文献名战代表死成克隆进程的号码.大普遍参数皆可与缺省值,然而是创造标记参数使用了:止为像一身材进程的标记,指示新进程调配它自己的统造台,那使得运止示例步调时,正在任务栏上爆收许多活动标记表记标帜.而后该克隆进程的创造要领关关传播过去的句柄并返回main()函数.正在关关步调之前,每一进程的真止主线程久停一下,以便让用户瞅到其中的起码一个窗心.CreateProcess()函数有5个核心参数?本真验步调中树坐的各个参数的值是:a.(LPCTSTRlpApplicationName)szFilename,//爆收那个EXE 的应用步调的称呼;b.(LPTSTRlpCommandLine)szCmdLine,//报告其止为像一身材进程的标记;c.(BOOLbInheritHandles)FALSE,//不继启句柄;d.(LPSTARTUPINFOlpStartupInfo)&si,//开用疑息;e.(LPPROCESS_INFORMATIONlpProcessInformation)&pi);//返回的进程疑息;步调运止时屏幕隐现的疑息是:2、正正在运止的进程使用进程战支配系统的版本疑息运止截止:目前PID疑息:_4664目前支配系统版本:5.1(尔的支配系统为Windows XP)系统提示疑息:TaskManagershouldnownowindicatethisprocessishighpriority.步调背读者标明黑怎么样赢得目前的PID战所需的进程版本疑息.为了运止那一步调,系统处理了所有的版本不兼容问题.接着,步调演示了怎么样使用GetVersionEx()API函数去提与OSVERSIONINFOEX结构.那一数据块中包罗了支配系统的版本疑息.其中,“”表示目前运止的支配系统是:Windows2000.终尾一段步调利用了支配系统的版本疑息,以确认运止的是Windows2000.代码接着将目前进程的劣先级普及到比平常级别下.单打Ctrl+Alt+Del键,加进“Windows任务管造器”,正在“应用步调”选项卡中左键单打本任务,正在快速菜单中采用“转到进程”下令.正在“Windows任务管造器”的“进程”选项卡中,与本任务对付应的进程映像称呼是(为什么?):左键单打该进程名,正在快速菜单中采用“树坐劣先级”下令,不妨安排该进程的劣先级,如树坐为“下”后沉新运止步调,屏幕隐现有变更吗?不.3、终止进程指令其子进程去“杀掉”自己的女进程步调证明黑一个进程从“死”到“死”的所有一死.第一次真止时,它创造一身材进程,其止为如共“女亲”.正在创造子进程之前,先创造一个互斥的内核查于象,其止为对付于子进程去道,如共一个“自杀弹”.当创造子进程时,便挨开了互斥体并正在其余线程中举止别的处理处事,共时等待着女进程使用ReleaseMutex()API收出“牺牲”旗号.而后用Sleep()API调用去模拟女进程处理其余处事,等完毕时,指令子进程终止.当调用ExitProcess()时要留神,进程中的所有线程皆被坐刻报告停止.正在安排应用步调时,必须让主线程正在平常的C++运止期关关(那是由编译器提供的缺省止为)之厥后调用那一函数.当它转背受疑状态时,常常可创造一个每个活动线程皆可等待战停止的终止事变.正在平常的终止支配中,进程的每个处事线程皆要终止,由主线程调用ExitProcess().接着,管造层对付进程减少的所有对付象释搁引用,并将用GetExitCodeProcess()建坐的退出代码从STILL_ACTIVE改形成正在ExitProcess()调用中返回的值.终尾,主线程对付象也如共进程对付象一般转化成受疑状态.等到所有挨开的句柄皆关关之后,管造层的对付象管造器才销毁进程对付象自己.还不一种函数可博得终止后的进程对付象为其参数,进而使其“复活”.当进程对付象引用一个终止了的对付象时,有好几个API函数仍旧是有用的.进程可使用退出代码将终止办法报告给调用GetExitCodeProcess()的其余进程.共时,GetProcessTimes()API函数可背主调者隐现进程的终止时间.运止截止:Childwaitingforsuicideinstructions.表示:_女进程正正在创造子进程.子进程等待女进程杀死子进程._表示:_女进程杀死子进程._四、真验归纳请归纳一下本次真验的支获、教导战体验,分散课本真质道一下您对付进程的明黑.本次真验让尔明黑进程是步调的一次真止历程,是系统举止处理机调动战资材调配的基础单位.(已引进线程之前).进程是支配系统结构的前提;是一个正正在真止的步调;估计机中正正在运止的步调真例;不妨调配给处理器并由处理器真止的一个真体;由简朴程序的真止隐现,一个目前状态战一组相关的系统资材所形貌的活动单元,对付女进程战子进程的关系有了进一步的相识.真验二并收与调动1、真验脚法正在本真验中,通过对付事变战互斥体对付象的相识,去加深对付Windows2000线程共步的明黑.通太过解真验步调,相识管造事变对付象的API.相识正在进程中怎么样使用事变对付象,正在进程中怎么样使用互斥体对付象,线程怎么样通过文献映射对付象收支数据.二、真验真质战步调第一部分:互斥体对付象本步调中隐现的类CCountUpDown使用了一个互斥体去包管对付二个线程间简朴数值的观察.每个线程皆企图赢得统造权去改变该数值,而后将该数值写进输出流中.创造者本质上创造的是互斥体对付象,计数要领真止等待并释搁,为的是共共使用互斥体所需的资材(果而也便是共享资材).1、利用互斥体呵护共享资材分解步调的运止截止,不妨瞅到线程(加战减线程)的接替真止(果为Sleep()API允许Windows切换线程).正在屡屡运止之后,数值该当返回初初值(0),果为正在屡屡运止之后写进线程正在等待行列中形成终尾一个,内核包管它正在其余线程处事时不会再运止.1)请形貌运止截止(如果运止不可功,则大概的本果是什么?):二个线程接替运止,不竭改变value的值.二个线程互斥观察Value的值.2)根据运止输出截止,对付照分解步调,不妨瞅出步调运止的过程吗?请简朴形貌:线程1(5296)先运止,将value值删1,形成1.而后,线程2(6016)运止,将value值减1,形成0.第二部分:线程通过文献对付象收支数据Windows2000提供的线程间通讯类内核查于象允许共一进程或者跨进程的线程之间互相收支疑息,包罗文献、文献映射、邮件位战命名管讲等,其中最时常使用的是文献战文献映射.那类对付象允许一个线程很简单天背共一进程或者其余进程中的另一线程收支疑息.1、演示线程通过文献对付象收支数据运止截止(如果运止不可功,则大概的本果是什么?):阅读战分解步调,请回问问题:1)步调中开用了几个单独的读写线程?1002)使用了哪个系统API函数去创造线程例程?CreateThread()3)文献的读战写支配分别使用了哪个API函数?ReadFile()WriteFile()屡屡运前进程时,皆可瞅到步调中的每个线程从前里的线程中读与数据并将数据减少,文献中的数值连绝减少.那个示例是很简朴的通讯体造.可将那一示例用做编写自己的文献读/写代码的模板.请注意步调中写进之前文献指针的沉置.沉置文献指针是需要的,果为该指针正在读与中断时将处于前四个字节之后,共一指针还要用于背文献写进数据.如果函数背该处写进新数值,则下次进程运止时,只可读到本去的数值.那么:4)正在步调中,沉置文献指针使用了哪一个函数?SetFilePointer()5)从输出截止,对付照分解步调,不妨瞅出步调运止的过程吗?请简朴形貌:最先创造一个线程,读nValue的值,而后nValue值加一后,将nValue值沉新写进文献.沉复上述历程100次.2、演示使用映射文献的内存接换数据的线程阅读战分解步调,请回问:1)步调中用去创造一个文献映射对付象的系统API函数是哪个?CreateFileMapping();2)正在文献映射上创造战关关文献视图分别使用了哪一个系统函数?a.MapViewOfFile()b.UnmapViewOfFile()3)运止时,步调最先通过(MakeSharedFile();)函数创造一个小型的文献映射对付象(hMapping),接着,使用系统API函数(CreateMutex();)再创造一个呵护其应用的互斥体(g_hMutexMapping).而后,应用步调创造100个线程,每个皆允许举止共样的进程,即:通过互斥体赢得观察权,那个支配是由语句:_WaitForSingleObject(g_hMutexMapping,INFINITE);真止的.再通过函数(MapViewOfFile();)支配将视图映射到文献,将下32位瞅做有标记整数,将该数值减少(即下令:++(*pnData);),再将新数值隐现正在统造台上.每个线程扫除文献的视图并正在退出之前释搁互斥体的语句是ReleaseMutex(g_hMutexMapping);.当线程完毕时,应用步调关关并退出.4)将步调中的语句::Sleep(500);简略(比圆正在语句前里加上“//”)后,沉新编译运止,截止有变更吗?为什么?有变更.100个线程一闪而过,不克不迭瞅浑截止.果为Sleep(500)是为了搁缓速度,便当瞅察.四、真验归纳请归纳一下本次真验的支获、教导战体验,分散课本真质道一下您对付进程间统造的明黑.本次真验让尔明黑了支配系统中的事变战互斥体对付象,以及线程共步的观念.教习了进程中怎么样使用事变对付象,正在进程中怎么样使用互斥体对付象,线程怎么样通过文献映射对付象收支数据.当多个进程并收真止时,若咱们不指定进程之间并收的程序,则他们不妨任性并收,当那些进程不观察互斥元素时,运止截止不会出现过得,然而是当多个进程观察共一个互斥体时,便会出现过得,那时咱们必须通过某种脚法去共步进程间并收的程序,那即是进程间的共步问题.另有,并收真止的进程或者线程间,偶尔为了需要,会相互之间举止数据的接换,即进程间通疑,Windows中,不妨通过文献对付象正在线程间收支数据.还不妨使用映射文献的内存接换数据.真验三死产者-消耗者算法模拟真验一、真验脚法1、掌握基础的互斥与共步算法,进一步明黑“死产者-消耗者”模型.2、通过对付“死产者-消耗者”问题编程真止,相识线程创造、共步旗号量、互斥旗号量、临界区的创造战使用,收端相识并收步调安排要领.3、进一步明黑P、V本语战旗号量正在线程互斥战共步体造中的使用.二、真验真质战步调1、正在本次真验开初,以“死产者-消耗者”模型为依据,提供了一个多线程“死产者-消耗者”真例,有部分源步调代码,央供读者分解已体例的一个“死产者-消耗者”真例,并将其缺得的步调代码补充完备,而后调试那段步调,得出最后的截止,并分解截止,得出相映的论断.测验考查改变一些参数,比圆:改变缓冲区数、减少(缩小)线程数、改变延缓数、减少(缩小)死产者进程、减少(缩小)消耗者进程、改变消耗者进程的哀供序列等真质,观察那些改变对付于运止截止的效用.3、参照部分源步调代码:1、empty_semaphore=CreateSemaphore(NULL,n_Buffer_or_Critical,n_Buffer_or_Critical,"semaphore_for_empty");2、h_mutex=CreateMutex(NULL,FALSE,"mutex_for_update");3、h_Semaphore[j+1]=CreateSemaphore(NULL,0,n_Thread,lp.c_str());4、h_Thread[i]=CreateThread(NULL,0,(LPTHREAD_START_ROUT INE)(Produce),&(Thread_Info[i]),0,NULL);5、h_Thread[i]=CreateThread(NULL,0,(LPTHREAD_START_ROUT INE)(Consume),&(Thread_Info[i]),0,NULL);6、ReleaseMutex(h_mutex);7、ReleaseSemaphore(h_Semaphore[m_serial],n_Thread,NULL);8、EnterCritialSection(&PC_Critical[BufferPos]);9、ReleaseSemaphore(empty_semaphore,1,NULL);10、LeaveCriticalSection(&PC_Critical[BufferPos]);4、请补齐上述步调,写出步调的运止截止.步调运止截止如下图所示.2)分解步调的运止截止.最先死产者3死产了产品3,而后死产者1死产了产品1,终尾死产者4死产了产品4.消耗时,消耗者5消耗产品3,而后消耗2消耗产品1,终尾消耗者5消耗产品4.四、真验归纳请归纳一下本次真验的支获、教导战体验,分散课本真质道一下您对付进程间统造的明黑.深刻相识了死产者消耗者进程,进一步明黑了“死产者-消耗者”模型.进一步明黑P、V本语战旗号量正在线程互斥战共步体造中的使用,尔进一步明黑了进程间共步的观念.尔也进一步掌握了基础的互斥与共步算法,特天是死产者消耗者算法.尔也教会了怎么样通过Windows中的共步旗号量、互斥旗号量的创造战使用,去真前进程之间或者线程之间的共步与互斥.另有临界区的创造战使用,线程的创造.真验四页式保存管造部分功能模拟一、真验脚法(1)相识保存器的管造任务战功能(2)相识Windows保存器管造模式战个性(3)深进相识页式保存管造怎么样真止天面变换(4)进一步认识页式保存管造中怎么样处理缺页中断(5)掌握几种页里置换算法的真止要领二、真验真质战步调1、真验真质1、j=p[head];2、p[head]=lnumber;3、head=(head+1)%m;4、if(page[j].write==1)5、page[j].flag=0;6、page[lnumber].flag=1;7、page[lnumber].write=0;8、page[lnumber].pnumber=page[j].pnumber;9、page[j].pnumber,10、j,11、page[lnumber].dnumber,12、Lnumber13、lnumber=laddress>>10;//分散逻辑天面14、ad=laddress&0x03FF;15、page_interrupt(lnumber);16、pnumber=page[lnumber].pnumber;17、paddress=pnumber<<10|ad;18、page_interrupt(lnumber);19、page[i].lnumber=lnumber;20、page[i].flag=0;21、page[i].write=0;22、page[i].dnumber=dnumber;23、i++;24、page[m].pnumber=pnumber;25、page[m].flag=1;26、p[m]=m;27、m++;28、command(laddress,write);2、步调运止截止及简要分解截止分解:最先输进页号战辅存天面,如上图,输进1、1000,2、2000,3、3000,4、4000,5、5000.而后输进主存块号,决定主存块数为2,主存块数分别是1、2.终尾,咱们便不妨模拟步调运止了,最先输进了一条需要建改内存的指令,逻辑天面为1000,果为不正在内存里,果此爆收缺页中断,真止中断服务步调,淘汰主存块1中的页,从磁盘第5000块中调进页4.第二次输进02000,依旧爆收缺页中断.第三次时,输进13000,此时淘汰的页4建改过,果此要将页4写回磁盘第5000块.其余类似.三、真验归纳请归纳一下本次真验的支获、教导战体验,分散课本相关真质道一下您对付Windows2000内存管造的明黑.通过本真验尔相识了哀供页式保存的基础真止,用户应用进程以32位假造天面办法编址,每个假造天面与一个称做“页表端”的结构有关,它包罗了假造天面映射的物理天面,相识了假造保存器的处事本理,以及真存怎么样正在支配系统中真止的.另有便是,当爆收缺页中断时,支配系统怎么样将中部磁盘中的疑息调进内存中,正在调进内存中之前,先用页里置换算法将每一页置换进去.内存管造,是指硬件运止时对付估计机内存资材的调配战使用的技能.其最主要的脚法是怎么样下效,赶快的调配,而且正在适合的时间释搁战回支内存资材.真验五设备管造模拟真验一、真验脚法(1)相识Windows支配系统中设备启动步调的组成(2)明黑Windows支配系统的设备管造体造(3)掌握Windows支配系统关于设备管造的API函数的使用要领(4)相识并掌握Windows中鼠标、键盘等简朴设备的检测要领二、真验真质战步调1、SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP,0,NULL, NULL);//鼠标改为左脚习惯2、SystemParametersInfo(SPI_SETMOUSEBUTTONSWAP,1,NULL, NULL);//鼠标改为左脚习惯3、iFunctionKeynum=GetKeyboardType(2);4、Beep(iFreq[j],300);三、步调运止截止及简要分解截止分解:通过输进1、2、3、4、分别采用鼠标改为左脚习惯,鼠标改为左脚习惯,赢得键盘典型战功能键个数,喇叭播搁音乐等功能.如上图,尔采用了选项3,图隐现尔的键盘典型为IBM巩固型(101或者101键)键盘,功能键个数为12.四、真验归纳请归纳一下本次真验的支获、教导战体验,分散课本相关真质道一下您对付Windows2000设备管造的明黑.设备管造的主要任务是统造设备战CPU之间举止I/O支配,谦脚用户I/O哀供,谦脚用户I/O哀供.设备管造的主要任务是要尽大概的普及CPU战I/O设备之间、I/O设备战I/O设备之间的并止性以及I/O设备的利用率,进而使包罗I/O设备的系统资材赢得最好使用效用.Windows设备启动步调是一种不妨拆置有Windows支配系统的估计机战中部设备之间通疑的特殊步调,不妨道相称于硬件的接心,支配系统惟有通过那个接心,才搞统造硬件设备的处事,假若某设备的启动步调已能精确拆置,便不克不迭平常处事.真验六文献系统2、真验脚法通过本真验,央供教死流利掌握Linux 百般文献支配下令,包罗:使用统造字符真止特殊功能;使用file 战strings下令决定文献典型;使用 cat 利more 下令隐现文本文献的真质;使用head 战tail 下令隐现文本文献的部分真质;使用wc 下令决定单词汇、止战字符数;使用diff 下令比较2 个文献;回瞅文献战目录命名约定;使用touch下令创造新文献;使用mkdir 下令创造新目录;使用 rm 下令简略文献;使用 rm -r 下令简略目录.三、真验真质战步调1. 文献疑息下令Ctrl + Z:终止目前活动.隐现 ls 下令的脚册页里 (man ls) ,而后使用 Ctrl -z 中止输出. 当您接下 Ctrl + Z 的时间,爆收了什么事务?退出助闲,返回shell提示符当使用估计器的时间,您的提示符是什么?fuxin@fuxin-K42JZ:~$ bcCopyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.This is free software with ABSOLUTELY NO WARRANTY.For details type `warranty'.无提示符.(尔的Linux系统为Ubuntu11.10)如果输进一个下令,如ls –R/,偶尔间,会正在按下回车键之前念揩除下令止.输进一个下令,正在接下回车键真止下令之前按下 Ctrl + U.截止是什么?输进的下令被与消了使用 file 下令去决定 test文献的文献典型.它是哪种典型的文献?test:ASCII text2) 可真止(或者二进造) 文献:包罗32 位的可真止文献战可扩展链接要领(ELF) 编码文献,战其余动背链接的可真止文献.那种文献典型表示那个文献是一个下令或者步调.使用file 下令决定您所建坐的文献典型.它是哪种典型的文献?(注意文献名部分必须包罗扩展名,如 file ww.sxw .) ww.odt Open Document Text(尔的电脑上拆的是LibreOffice)步调 5:使用 strings 下令.使用strings下令查看/usr/bin/cal 文献的可读字符.列出strings 下令中的一些输出.fuxin@fuxin-K42JZ:~$ strings /usr/bin/cal__gmon_start___Jv_RegisterClassestgetent步调 6:使用 cat 下令隐现文献的真质.键进 ls /dev > dev1使用cat 下令隐现主目录中dev1 文献的真质.文本的隐现出现了什么情况?文献的所有真质皆隐现出去了,屏幕自动换止.步调 7:使用 more 下令隐现文献的真质.使用more 下令隐现主目录中dev1 文献的真质.文本的隐现出现了什么情况?只隐现最开初的一屏.步调 8:使用 head 下令隐现文献的一部分.1) 单独使用head 下令,隐现主目录中dev1 文献的开初部分.隐现了几止?102) 使用戴 -n 选项的head 下令,隐现主目录中 dante 文献的前20 止.您输进什么下令?head -20 dante步调 9:使用 tail 下令隐现文献的一部分.单独使用tail下令,隐现主目录中dante 文献的终端.隐现了几止?10步调 10:通过使用 wc 下令,决定止数、单词汇数战字符数.使用 wc 下令决定主目录中 dev1 文献的止数、单词汇数战字符数.有几止、几个单词汇战几个字符?205止, 205个单词汇, 1238个字符.步调 11:使用 wc 估计目录条脚法数目.更多标记是横线,战后斜线 (\) 正在共一个键上.正在下令止提示止下,输进下令ls l wc -w.有几个文献战目录名(单词汇) ?24步调 12:使用 diff下令决定文献之间的分歧之处.使用diff下令真止细节比较,决定fruit1 文献战fruit2 文献之间的辨别.正在 fruit1 文献战正在 fruit2 文献中,哪几止是分歧的?fruit1:bananafruit2:banane1) cat 下令:·对付 fruit1文献使用 cat下令.·对付 fruit2文献使用 cat下令.·键进下令止 cat fruit1 fruit2 > filex.·对付 filex 文献使用 cat 下令.上头的下令止搞了什么处事?将fruit1战fruit2二个文献合并,而且写进文献filex.2) 不妨使用哪 2 个下令去决定 2 个文献是可相共?diff.2. 基础的下令止文献管造步调 14:回瞅 Linux 的文献战目录命名准则.步调 15:使用 touch 下令创造文献.下令要领:touch filename (s)1) 正在主目录中使用touch下令创造一个名为newfile 的文献,该当使用什么下令?touch newfile2) 使用touch 下令正在那个目录中创造另一个喊搞filenew 的新文献,该当使用什么下令?touch filenew3) 输进下令隐现practice目录中的文献的少列表.创造的文献列出去了吗?。

河北工业大学编译原理实验报告

河北工业大学编译原理实验报告

编译原理实验报告组员:韦廷廷(112455)、熊敏(112456)、马昊(113042) 任课老师:吴清一、任务概述本次实验我们要完成的任务主要是实现一个简单语言集的词法、语法和语义分析程序,验证实际编译系统的实现方法。

我们组的分工并不是词法分析、语法分析、语义分析每人负责一个,而是先确定每种分析按照哪一种方法实现,然后每个人写出自己的想法,按照自己的想法实验,最后总结到一起,有问题大家一起讨论,共同商量解决的办法。

二、系统设计实验采用的实现方法和依据:语言中的各类单词符号及其分类码表实验采用的实现方法和依据:文法:E → T | E+T | E-T T → F | T*F | T/F F → i | (E)状态ACTION GOTO ()+ - * / i # E T F0 S4 S5 1 2 31 S6 S7 Acc2 R3 R3 R3 S8 S9 R33 R6 R6 R6 R6 R6 R64 S4 S5 10 2 35 R8 R8 R8 R8 R8 R86 S4 S5 11 37 S4 S5 12 38 S4 S5 139 S4 S5 1410 S15 S6 S711 R1 R1 R1 S8 S9 R112 R2 R2 R2 S8 S9 R213 R4 R4 R4 R4 R4 R414 R5 R5 R5 R5 R5 R515 R7 R7 R7 R7 R7 R7三、系统实现(包括必要的框图,各.h和.c文件说明,所有函数功能的说明,数据结构、各种表格、变量等的说明,以及函数调用关系图等)(1)各.h和.c文件说明Cifa.cpp的功能:字符串扫描识别。

Table.cpp的功能:存放SLR分析法需要用到的ACTION和GOTO表。

Yufa.cpp的功能:引用Cifa.cpp、Table.cpp两个文件进行语法、语义的分析。

(2)函数功能说明词法分析部分函数说明:int lookup (char *token) //比较是否是关键字int GetChar(char ch) //每调用一次,就把扫描指示器当前所指示的源程序字符送入字符变量ch,然后把扫描指示器前推一个字符位置。

河北工业大学-软件工程课程实验

河北工业大学-软件工程课程实验

河北工业大学软件工程课程实验实验报告题目:设备管理系统专业:计算机科学与技术班级:计C063组:595软件开发团队组长:李伟成员:刘伟王建宏魏然葛晓虎瞿建华指导教师:张健楠完成日期:目录1项目开发计划书 (2)2软件需求规格说明书 (7)3设计规格说明书 (13)4 源程序清单 (23)5 测试报告 (31)6 用户手册 (35)一、项目开发计划书完成人:李伟1.引言(Introduction)1、编写目的本系统设计是在windows环境的支持下运行的,采用窗口式执行文件,操作实用、简易、方便、直观。

本着高效、全面、安全的设计思想,实现公司设备的有效管理。

2、项目背景开发系统名称:设备管理系统。

项目任务提出者:张健楠。

开发者:李伟、刘伟、魏然、王建宏、葛晓虎、瞿建华。

3、参考资料/Java/54173.htm软件工程,程成、陈霞译,机械工业出版社,2008.11.1项目概述(Project Summary)实现公司设备的有效管理、维护记录。

购入新设备,登记设备购入时间、名称、型号、种类、内部编号、所属部门、存放位置等。

设备转借时,记录借用部门、经手人员、用途、拟还日期等。

设备故障时,记录故障情况、维修情况(时间、人员、结果)等。

设备报废时,记录报废原因、批准人员、经手人员、处理方式等。

对设备管理人员和使用人员提供各种设备处理的按部门、设备类型、处理日期等查询和修改等功能。

1.2 术语定义(Terms Glossary)购入新设备:即公司由于需要,而从别的地方买入新的设备。

设备转借:即别的公司或个人由于需要或其它原因从本公司借走设备。

设备故障:即设备由于自身原因不能正常工作了。

设备报废:即设备不但不能正常工作,而且不能修复了。

设备型号:即标识设备大小、类型、功能等信息的特定标识。

内部编号:设备在购入后公司都会给予一个公司内部的编号,即内部编号。

设备管理人员:即公司内部专门负责对公司设备进行管理的人员。

JAVA实验

Java实验报告专业班级学号姓名指导教师实验一、安装JDK并熟悉java的运行环境一、实验目的熟悉JA V A的运行环境及学习简单的编程。

二、预习内容安装工具软件的基本方法。

三、实验设备与环境装有JA V A语言工具软件(JCreator )的微机若干四、实验内容安装JCreator及JA V A的核心编译程序J2SDK。

1、打开JCreator的安装盘安装JCreator。

2、在相同目录下安装J2SDK。

3、打开JCreator软件对J2SDK文件进行配置。

4、编写一应用程序,在屏幕上显示“HELLO WORLD”。

public class Hello{public static void main(String args[]){System.out.println( "HELLO WORLD");}}5、编写一小程序实现上述功能:在屏幕上显示“HELLO WORLD”。

实验结果:五、注意事项⒈认真填写实验报告⒉遵守实验室各项制度,服从实验指导教师的安排⒊按规定的时间完成实验六、实验总结与体会1.通过这个实验我了解到java的运行环境。

2.通过这个简单的程序使我认识到做实验是要认真对待,不可马虎大意,区分字母的大小写和符号的正确使用。

实验二、基本语法练习一、实验目的⒈熟悉Java的基本语法⒉编写应用程序接收命令行参数⒊编写应用程序接收用户从键盘的输入⒋掌握字符串与数组的基本方法二、预习内容java编程的基本结构三、实验设备与环境装有JA V A语言工具软件(JCreator )的微机若干四、实验内容⒈编写一个应用程序求若干个数的平均数,原始数字要求从命令行输入。

应用程序中main方法的参数String类型的数组args能接受用户从命令行键入的参数。

(1)编辑A verage.java,设保存在D:\myjava目录下。

public class Average{public static void main(String args[ ]){double n,sum=0;for (int l=0;l<args.length;l++){sum=sum+Double.valueOf(args[l]).doubleValue();}n=sum/args.length;System.out.println("average="+n);}}(2)编译。

北邮java实验报告

JAVA实验报告信息工程27班项明钧2013210731一、设计思路1.首先定义一个student类,并对里面的变量进行定义并用构造方法进行初始化,构造方法中用到了this,对对象Set并get到对象属性。

2.定义了一个Graduatestudent对student进行继承,除了用super对student里原有属性可以直接继承,其余的增加属性用student里的方法用this,set和get构造。

3.主函数部分利用ArrayList将所有成员归于一个集合中并使用Comparator按照学号大小进行排序。

分别定义变量average,max,min,利用累加除以总个数算出average,利用逐个比较并替代得出max和min。

最后通过File g=new File将得到的学生信息序列和average,max,min输出到文件夹中的TXT文件中。

二 关键代码及注释分析1. student类的构造class student {public int age;public int number;public String name;public String sex;public student(int age,int number,String name,String sex){this.age=age;this.number=number;=name;this.sex=sex;2. getter和setter的方法public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getNumber() {return number;}public void setNumber(int number) {this.age = age;}public String getName() {return name;}public void setName(String name) { = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;3. Graduatestudent继承student的原有属性并增加新属性class Graduatestudent extends student{public String major;public String teacher;public int score;public Graduatestudent(int age,int number,String name,String sex,String major,String teacher,int score){super(age,number,name,sex);this.major=major;this.teacher=teacher;this.score=score;}public int getScore() {return score;}public void setScore(int score) {this.age = age;}public String getMajor() {return major;}public void setMajor(String major) {this.major = major;}public String getTeacher() {return teacher;}public void setTeacher(String teacher) {this.teacher = teacher;}public String toString(){return "age="+age+" number="+number+" name="+name+" sex="+sex+" major="+major+ " teacher="+teacher+ " score="+score;}} }4.按学号排序:Comparator OrderNumber=new Comparator() {public int compare(Object o1, Object o2) {Graduatestudent s1 = (Graduatestudent) o1;Graduatestudent s2 = (Graduatestudent) o2;return (int) (s1.getNumber() - s2.getNumber());}5.为不同学生赋值并统一归于集合中ArrayList <Graduatestudent>list = new ArrayList<Graduatestudent>();Graduatestudent a=new Graduatestudent(32,1,"zhang","female","xinxi","qin",165);Graduatestudent b=new Graduatestudent(55,2,"li","male","yixue","zhou",34);Graduatestudent c=new Graduatestudent(63,3,"wang","male","kuaiji","zhang",97);Graduatestudent d=new Graduatestudent(12,4,"chen","male","wuli","li",45);Graduatestudent e=new Graduatestudent(34,5,"gao","female","shuxue","qu",67);Graduatestudent f=new Graduatestudent(31,6,"xiang","male","buzhidao","mei",87);list.add(a);list.add(b);list.add(c);list.add(d);list.add(e);list.add(f);6.求平均值最大值最小值平均值double n=0;int brray[]={a.score,b.score,c.score,d.score,e.score,f.score};for(int i=0;i<brray.length;i++ )n=n+brray[i];double average=n/brray.length;System.out.println("average result: "+average);最大值int brray[]={a.score,b.score,c.score,d.score,e.score,f.score};int max=brray[0];int min=brray[0];for(int x=0;x<brray.length;x++ ){if(brray[x]>max)max=brray[x];}最小值for(int y=0;y<brray.length;y++ ){if(brray[y]<min)min=brray[y];}System.out.println("max result: "+max);System.out.println("min result: "+min);7.将结果输出到TXTFile g=new File("e://shuchu.txt");try {PrintWriter pw=new PrintWriter(g);pw.println(a);pw.println(b);pw.println(c);pw.println(d);pw.println(e);pw.println(g);pw.println("平均成绩"+average);pw.println("最小值"+min);pw.println("最大值"+max);pw.close();} catch (FileNotFoundException h) {// TODO Auto-generated catch blockh.printStackTrace();}8.总程序package xmj.jc;import java.io.*;import java.util.*;import java.util.ArrayList;import java.util.Collections;import parator;import java.util.List;class student {public int age;public int number;public String name;public String sex;public student(int age,int number,String name,String sex) {this.age=age;this.number=number;=name;this.sex=sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public int getNumber() {return number;}public void setNumber(int number) {this.age = age;}public String getName() {return name;}public void setName(String name) { = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String toString(){return "number="+number+", name="+name+", age="+age+", sex="+sex;}}class Graduatestudent extends student{public String major;public String teacher;public int score;public Graduatestudent(int age,int number,String name,String sex,String major,String teacher,int score){super(age,number,name,sex);this.major=major;this.teacher=teacher;this.score=score;}public int getScore() {return score;}public void setScore(int score) {this.age = age;}public String getMajor() {return major;}public void setMajor(String major) {this.major = major;}public String getTeacher() {return teacher;}public void setTeacher(String teacher) {this.teacher = teacher;}public String toString(){return "age="+age+" number="+number+" name="+name+" sex="+sex+" major="+major+ " teacher="+teacher+ " score="+score;}}public class xmj{public static void main(String[] args) {ArrayList <Graduatestudent>list = new ArrayList<Graduatestudent>();Graduatestudent a=new Graduatestudent(32,1,"zhang","female","xinxi","qin",99);Graduatestudent b=new Graduatestudent(55,2,"li","male","yixue","zhou",34);Graduatestudent c=new Graduatestudent(63,3,"wang","male","kuaiji","zhang",97);Graduatestudent d=new Graduatestudent(12,4,"chen","male","wuli","li",45);Graduatestudent e=new Graduatestudent(34,5,"gao","female","shuxue","qu",67);Graduatestudent f=new Graduatestudent(31,6,"xiang","male","buzhidao","mei",87);list.add(a);list.add(b);list.add(c);list.add(d);list.add(e);list.add(f);Comparator OrderNumber=new Comparator() {public int compare(Object o1, Object o2) {Graduatestudent s1 = (Graduatestudent) o1;Graduatestudent s2 = (Graduatestudent) o2;return (int) (s1.getNumber() - s2.getNumber());}};double n=0;int brray[]={a.score,b.score,c.score,d.score,e.score,f.score}; int max=brray[0];int min=brray[0];for(int i=0;i<brray.length;i++ )n=n+brray[i];double average=n/brray.length;for(int x=0;x<brray.length;x++ ){if(brray[x]>max)max=brray[x];}for(int y=0;y<brray.length;y++ ){if(brray[y]<min)min=brray[y];}System.out.println(a);System.out.println(b);System.out.println(c);System.out.println(d);System.out.println(e);System.out.println(f);System.out.println("average result: "+average); System.out.println("max result: "+max);System.out.println("min result: "+min);File g=new File("e://shuchu.txt");try {PrintWriter pw=new PrintWriter(g);pw.println(a);pw.println(b);pw.println(c);pw.println(d);pw.println(e);pw.println(g);pw.println("平均成绩"+average);pw.println("最小值"+min);pw.println("最大值"+max);pw.close();} catch (FileNotFoundException h) {// TODO Auto-generated catch blockh.printStackTrace();}}}三 运行结果Eclipse截图输出文件夹截图输出文件内容截图。

JAVA实验报告(河北工业大学)

}
2、采用for循环求1至1000之内的所有“完全数”。所谓“完全数”是指一个数,恰好等于它的因子之和。例如,6是一个完全数,因为6的因子为1、2、3,而6=1+2+3。
public class num{
public static void main(String args[]) {
int count = 1;
i++;
}while(i<50);
}
public static void main(String args[])
{thre t=new thre();
t.func();
}
}
3、打印以下图案(每行打5个星号,每个星号之间空两个空格)。
class star
{
public static void main(String args[])
}
}
2、switch多分支语句
用swith语句实现从键盘读如1,2,3时,屏幕提示不同信息。
class Switch
{ public static void main(String args[])throws java.io.IOException
{ char a;
System.out.println("Enter a number from 1--3");
public class IntegerDemo
{public static void main(String args[])
{Integer[]array={new Integer(20),new Integer(40),new Integer("110")};
for(int i=0;i<array.length;i++)

河北工业大学-汇编实验报告

汇编实验实验一 顺序与分支程序设计一 、实验目的1) 掌握顺序程序设计方法。

2) 掌握分支程序的结构及分支程序的设计,调试方法。

2) 学习数据传送及算术和逻辑运算指令的用法。

3) 熟悉在PC 机上建立、汇编、连接、调试和运行汇编语言程序的过程。

二、实验内容1) 有一字变量BUF1是以原码表示的有符号数,要求将其转换为反码和补码,分别存入BUF2和BUF3单元,并在屏幕上显示出来。

2)有两个两字节无符号数分别放在存储单元A 、B 起始的缓冲器中,求其和,结果放在A 起始的缓冲区并在屏幕上显示。

相加若有进位不存入存储单元。

3) 在BUF 和BUF+1、BUF+2单元分别放有一个无符号字节型数,编程序将其中最大数存入MAX 单元,并在屏幕上显示。

4) 要求同上,只是比较的数为有符号数。

5) 将1000H 单元开始的10个字节数,采用奇偶校验,将奇数在前偶数在后仍存回原数据区。

本实验要求在DEBUG 调试状态下进行,包括汇编程序、运行程序、检查结果。

6) 从键盘上接收一位十进制数X ,计算Y 值,并以十六进制形式显示出来,Y 按下列公式计算。

⎪⎪⎩⎪⎪⎨⎧===-=+=)6(2/)5()4(2)3(2222X X X X X X X X X X Y7)从键盘上接收两个一位十六进制数X和Y,然后再输入一个A-D之间的一个字符,按下列要求计算。

a)当输入字符为A,则计算X+Y,并以十六进制形式显示出来b)当输入字符为B,则计算|X-Y|,并以十六进制形式显示出来c)当输入字符为C,则计算X*Y,并以十六进制形式显示出来d)当输入字符为D,则计算X/Y,并以十六进制形式显示出来三、实验设备PC机一台四、实验准备1) 分析题目,将程序中的原始数据和最终结果的存取方法确定好。

2) 画出流程图。

3) 写出源程序。

4) 对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。

五、实验步骤1) 输入源程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六:系统I/O程序设计计C104 李云霄108490实验目的:理解数据流的概念、Java流的层次结构及文件的概念;熟悉图形用户界面基本组件的使用方法,熟悉如何使用布局管理器对组件进行管理及如何使用Java的事件处理机制。

实验要求:1、掌握字节流和字符流的基本使用方法。

2、能够创建、读写、更新文件。

3、掌握在Applet容器中添加组件的方法,掌握使用布局管理器对组件进行管理的方法。

实验内容:1、创建标准数据流的应用程序标准数据流指在字符方式下(如DOS 提示符)程序与系统进行输入输出的方式,键盘和显示器屏幕是标准输入输出设备,数据输入的起点为键盘,数据输出的终点是屏幕,输出的数据可以在屏幕上显示出来。

程序功能:将键盘上输入的字符在屏幕上显示出来,源代码如下public class IOTest{public static void main(String[] args){ byte buffer[]=new byte[255];System.out.println("请在下面输入一行字符:\n");try{ System.in.read(buffer,0,255);}catch(Exception e){ System.out.println("读取输入字符出错,错误信息为:"+e.toString()+"\n");}System.out.println("您刚才输入的一行字符为:\n");String inputStr=new String(buffer,0);System.out.println(inputStr);} }编译运行该程序,写出运行结果(应至少包括3次输入及相应运行结果)。

2、使用文件输入输出流的应用程序1)程序功能:读入一个文件的内容拷贝到另一个文件中去,源代码如下import java.io.*;class FileStreamsTest{public static void main(String args[]){try{FileInputStream fis=new FileInputStream("einput.txt");FileOutputStream fos=new FileOutputStream("eoutput.txt");int c;while((c=fis.read())!=-1){fos.write(c);}fis.close();fos.close();}catch(FileNotFoundException e){System.err.println("FileStreamsTest:" +e);}catch(IOException e){System.err.println("FileStreamsTest:" +e);} }}写出该程序功能及运行结果(需注明输入或用到的原文件内容)。

2)从一个文本文件以流的形式输出文件内容import java.io.*;public class FileInput{public static void main(String[] args){byte buffer[]=new byte[2056];try{FileInputStream fileInput=new FileInputStream("D:\\test.txt");int bytes=fileInput.read(buffer,0,2056);String str=new String(buffer,0,0,bytes);System.out.println(str);}catch(Exception e){System.out.println(e.toString());}}}3、创建图形用户界面图形用户界面(Graphic User Interface ,简称GUI)是为方便用户使用设计的窗口界面,在图形用户界面中用户可以看到什么就操作什么,取代了在字符方式下知道是什么后才能操作什么的方式。

组件(Component)是构成GUI 的基本要素,通过对不同事件的响应来完成和用户的交互或组件之间的交互。

组件一般作为一个对象放置在容器(Container)内,容器是能容纳和排列组件的对象,如Applet、Panel(面板)、Frame(窗口)等。

通过容器的add 方法把组件加入到容器中。

AWT类库中的各种操作被定义成在一个并不存在的“抽象窗口”中进行的。

它抽取不同软硬件平台中所实现的窗口的公共特性。

使所设计的界面独立于具体的界面实现,并且提供与机器无关的基本GUI标准组件。

例如:选择类组件:单选按钮、复选框、下拉选单、列表框文字处理类组件:标签、文本框、编辑框。

命令类组件:按钮、工具栏、菜单等。

在Applet 中添加标签、按钮并使用网格布局程序功能:在Applet 容器中添加组件标签、按钮,并使用网格布局管理器排列组件在容器中的位置。

源代码如下:import java.awt.*;import java.applet.Applet;public class Test_Button 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"));}}编译程序,编写显示Applet 的html页面文件。

在面板中添加组件程序功能:在Applet 中添加面板容器,并分别在Applet、面板容器中添加组件并使用不同的布局管理方式。

源代码如下:import java.awt.*;import java.awt.Color;import java.applet.Applet;public class Test_Component 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);}}编译程序,编写显示Applet 的html页面文件。

AWT有关的所有事件类都由java.awt.AWTEvent类派生,AWT事件共有10类,可以归为两大类:低级事件和高级事件。

低级事件:ComponentEvent(组件事件:组件尺寸的变化,移动)ContainerEvent(容器事件:组件增加,移动)WindowEvent(窗口事件:关闭窗口,窗口闭合,图标化)FocusEvent(焦点事件:焦点的获得和丢失)KeyEvent(键盘事件:键按下、释放)MouseEvent(鼠标事件:鼠标单击,移动)高级事件(语义事件)ActionEvent(动作事件:按钮按下,TextField中按Enter键)AdjustmentEvent(调节事件:在滚动条上移动滑块以调节数值)ItemEvent(项目事件:选择项目,不选择项目)TextEvent(文本事件,文本对象改变)Event :事件,就是发生在用户界面上的用户交互行为所产生的一种效果。

Event Source:产生事件的对象。

Event handler:接收事件对象并对其进行处理的方法。

在Java中对于某种类型的事件XXXEvent,要想接收并处理这类事件,必须定义相应的事件监听器类,该类需要实现针对特定事件的特定接口XXXListener;事件源中产生事件后,必须注册相应于该类事件的监听器,使用addXXXListener(XXXListener )方法来注册监听器。

相关文档
最新文档