《Java网络编程实验报告.docx》由会员分享,可在线阅读,更多相关《Java网络编程实验报告.docx(26页珍藏版)》请在三一办公上搜索。
1、中国矿业高校计算机学院级本科生课程报告课程名称网络编程一报告时间学生姓名学号专业一信息平安任课老师陆亚萍publicGCD(intm,intn)this.m=m;this.n=n;publicvoidCirculation(intm,intn,intk)do(k=m%n;mn;n=k;while(k!=0);SyStem.out.print1n(利用循环法得到的最大公约数为:+m);)publicvoidRecursion(intm,intn,intk)k=m%n;if(k!=0)ReCUrSion(n,k,m);elseSySteE.out.print1n(利用递IU法得到的最大公约数为:+
2、n);试验结果:Javadoc&DeclarationSConsole巴terminatedMyjaval(2)JavaApplication话输入两个整数m,n1824利用循环法得到的最大公约数为:6利用递归法得到的最大公约数为:62.编写一个完整的JaYaAPPliCation程序,其中设计一个旦数类ComPIex,利用它验证两个第数l+2i和3+4i相加产生一个新的豆数4+6i.复数类ComPlCX的设计必需满意如下要求:1) Complex的属性有:realPan:int型,代表复数的实数部分:maginParl:int型,代表且数的虚数部分。2) Complex的方法有:COmPIe
3、x():构造方法,将笼数的实部和虚部都置0:ComPlCX(intr.inti):构造方法,形参!为实部的初值,i为虚部的初值。3) ComPlCXCOmPICXAdd(ConIPlCXa):将当前更数对象与形参爱数对象相加,最终的结果仍是一个或数对以,返I可给此方法的调用者.4) StringtoString():把当前宏数对象的实部、虚部组合成a+bi的字符串形式,其中a和b分别为实部和虚部的数据。代码实现:importjava.io.*;publicclassMyjava2publicstaticvoidmain(Stringargs)throwsIOExceptionfbytebuf=
4、newbyte20;Stringstr;intmjn;SyStem.out.println(请分别输入第一个复数的实部与虚部:”);System.in.read(buf);str=newString(buf);m三Integer.parselnt(str.trim();System.in.read(buf);str=newString(buf);n三lnteger.prselnt(str.trim();Complexcomplexl=newCOmPIeX(m,n);SyStem.out.println(请分别输入其次个发数的实部与虚部:”);System.in.read(buf);str=ne
5、wString(buf);m=Integer.porselnt(str.trim();System.in.read(buf);str=newString(buf);n=lnteger.prselnt(str.tri11();Complexcomple2三newComplex(m,n);Complexcomplex3=newComplex();complex3=comple2plexAdd(complexl);SyStem.out.Println(两个更数的和为:,+comple3.toString();)classComplexpublicintrealPart;publicintmaginP
6、art;publicComplex()this.realPart=;this.maginPart=0;publicComplex(intrealPart,intmaginPart)this.realPart=realPart;this.maginPart=maginPart;publicStringtoString()Stringstr三newString();Stringstrl=newString();Stringstr2=newString();Strl=Integer.toString(realPart);str2=Integer.toString(maginPart);str=+st
7、rl+,+str2+i;returnstr;publicComplexCmplexAdd(Complexa)this.realPart=realPart+a.realPart;this.maginPart=maginPart+a.maginPart;returnthis;)试验结果:JaVadOCl,Declaration5Console汉CterminatedMyjoVa2(2)JavaApplication请分别输入第一个复数的实都与底部:23请分别输入第二个复数的实都与成都:39两个复一的和为:5+12i3 .编写一个包含圆类的程序,并为圆类设计几个构造方法和一般方法,在主方法中创建一个
8、圆类对缭并输出它的周长和面积。要求:属性有3个:x.y.r,分别放置同心坐标和半彳缶this.=x;this.y=y;this.r=r;publicdoublezc()doublePerifneter=2*3.14*r;returnPerimeter;publicdoublemj()doubleArea=3.14r*r;returnArea;)试验结果:益Javadoc凰DeclarationOConsole3Myjava3(2)JavaApplicationD?请输入圆的横纵坐标及半径:115囱的周长为:31.400000000000002区的面积为78.54 .编写一个程序,它含有一个圆类
9、、圆柱类和主类。要求:D一类参考上一题中的圆类:2)Ia柱类:继承网类,并加入一个属性h(高):构造方法(给4个属性赋值);计算面积的方法(doublenj():计算体积的方法(doubletj()o留意,要充分利用父类的方法。3)主类:在主方法中创建圆和圆柱类的对象,然后计算并输出它们的面积及圆柱的体积。代码实现:importjava.io.*;publicclassMyjava4publicstaticvoidmain(Stringargs)throwsIOException(bytebuf=newbyte20;Stringstr;intx,y,r,h;SyStem.out.println
10、(请输入例I的坐标、半径及圆柱的高:);System.n.read(buf);str三newString(buf);=lnteger.prselr)t(str.trim();System,in.read(bu-f);str三newString(buf);y=lnteger.prselnt(str.trim();System.in.read(buf);str三newString(buf);r=lnteger.prselnt(str.tri11();System.in.read(buf);str三newString(buf);h=lnteger.prselnt(str.trim();Circlec
11、ircle=newCircle(xjyjr);Cylindercylinder三newCylinder(x,y,r,h);System.out.println(阀的面积为+circle.mj();SyStem.out.println(阿柱的表面积为+cylinder,mjl();SyStem.out.println(圆柱的体枳为+cylinder.tj();classCirclepublicint;publicinty;publicintr;publicCircle()x=0;y=;r=0;publicCircle(intx,inty,intr)this.三x;this.y=y;this.r=
12、r;publicdoublezc()doublePerimeter=2*3.14*r;returnPerimeter;)publicdoublemj()doubleArea=3.14r*r;returnArea;classCylinderextendsCirclepublicinth;publicCylinder(intiinty,intr,inth)this.三x;this.y=y;this.r=r;this.h=h;publicdoublemjl()return2mj()+h*zc();publicdoubletj()returnmj()*h;)试脸结果:Javadoc困Declarati
13、onOConsoleX?MyiaVa4(1)(JavaApplication请输入圆的坐标、半径及图柱的高:1153国的面积为78.5图柱的表面积为251.2圆柱的体枳为235.55 .编写一个含仃5个类的程序:类Person:属性:编号、姓名、性别:构造方法:审定编号和姓名:股方法:修改编号、姓名,获得编号、姓名。类Teacher:继承类Person并增加:属性:系别:构造方法:调用父类的构造方法:一般方法:修改、获得系别。类Student:维承类PCrSOn并增加:届性:班级;构造方法:调用父类的构造方法:般方法:修改、获得班级属性值.类Classes:属性:班级名称,学生名单(StlKI
14、Cnl类对象的数组);构造方法:确定班级名称:股方法:建立学生名单.,输出学生名单。类Main:主类。主方法中创建一个班级,然后建立该班级的学生名单,最终输出学生名单。代码实现:importjava.io.*;publicclassMyjavaSpublicstaticvoidmain(Stringargs)throwsIOEceptionbytebuf=newbyte20;Stringstr,classroom,name;intid,i,n;SyStem.out.println(请输入班级名:“);System.in.read(buf);ClaSSrOom=newString(buf);Cl
15、assesclasses=newClasses(Classroom);SyStem.out.println(请输入班级的人数:);System.in.read(buf);str=newString(buf);n=Integer.porseZnt(str.trim();System.out.println(请输入学生.的学号和名字:”);for(i=0;in;i+)System.in.read(buf);str=newString(buf);Id=Integer.prselnt(str.trim();System.in.read(buf);name=newString(buf);Students
16、tudent=newStUdent(id,name);classes.BuildStudent1.ist(i,student);)classes.getStudent1.ist(n);)classPersonpublicintid;publicStringsex;publicStringname;publicPerson()publicPerson(intid,Stringname)this.id=id;this.name=name;)publicvoidchange(intnewid,Stringnewname)id=newid;name=newname;)publicvoidget()Sy
17、stem.out.println(id+name.trim();classTeacherextendsPersonpublicStringdepartment;publicTeacher()super();publicTeacher(intid,Stringname)super(idjname);)publicvoidChangeDepartment(Stringnewdepartment)department=newdepartment;publicvoidgetDepartment()System.out.print(Department+department);)classStudent
18、extendsPersonpublicStringclassroom;publicStudent()SUPer();publicStudent(intidjStringname)SUPer(id,name);publicvoidchangeClassroom(Stringnewclassroom)cIassroom=Rewclassroom;publicvoidgetClassroom()System.out.print(Classroom+classroom);)classClassespublicStringCIaSSName;publicStudentstr=newStudent100;
19、publicClasses(StringclassName)this.ClassName=ClassName;publicvoidBuiIdStudent1.ist(inti,Studentstudent)stri=student;publicvoidgetStudent1.ist(intn)inti;for(i=0;in;i+)stri.get();试验结果:&JavadocDeclaration5Console汉terminated*MyjavaS(2)JavaApplication请愉入班线名:a3请输入班级的人数:5请输入学生的学号和名字:012b3C4d5ea02b03c04d05e
20、1a6.请细致阅读下面的程序,分析程序的结构和输出结果再将程序上机运行,验证输出结果。(重点理解:抽象类、抽象方法、(匿名)内部类、匿名对象)abstractclassAabstractStringgetS();)classTeslpublicstaticvoidmain(Stringargs)(System.out.println(newA()(StringgetS()reiurn”抽象?匿名?;|.getS();1)试验结果:试验七图形用户界面应用程序设计一、试验目的和要求驾驭有事务处理的图形用户界面程序的结构和设计方法,提高图形用户界面应用程序设计的实力。要求至少完成试验内容题的80%。
21、二、试验内容1.卜面的程序运行后界面如卜.图所示:importjava.awt.*;classPressMeextendsFramestaticTextFieIdt=ncwTxtField(您还没按我呢!,12);staticinti;publicstaticvoid11uun(Stringars11)(PrcssMcf=ncwPrcssMe();f.sei1.ayout(newFlowIayoui();EsetTiUeCPressMe);Buttonb=ncwButton(PressMe):Eadd(t);f.add(b);f.resize(170,100);f.show():)程序没有实现
22、事务处理,请添加适当的代码,使窗口能够累计点击按钮的次数,如下图是点击3次后的结果.要求分别用三种方式实现事务处理:1)让PressMc类实现事务接口;2)另外加一个实现事务接口的类;3)只加入一个语句.代码实现:importjava.awt.;publicclassMyjava2extendsFramestaticinti=;publicstaticvoidmain(Stringargs)Myjava2f=newMyjava2();f.setTitle(变脸!);f.setSize(20,200);f.swQ;publicbooleanmouseUp(Evente,intx,inty)i+;
23、repaint();returntrue;publicvoidpaint(Graphicsg)if(i%2=0)g.setColor(Color.btue);g.drawOval(S0,50,80,100);g.drawArc(7,110,4,20,18,180);g.drawArc(7,70,15,15,18);g.drawArc(10,7j15,15,180);g.drawString(,5,5);else(g.setcolor(Color.b1.ue);g.drawOval(S0j50,80,100);g.drawArc(70,110,49,20,180);g.drawArc(70,70
24、,15,15,180,180);g.drawArc(100,70,15,15,180,18);g.drawString(!,50,50);成验结果:关!3 .设计个“自助早餐的图形界面事务处理程序,运行后界面如下图左:选择早点后界面如卜.图右;点击,退出”则结束程序运行。(提示:须要编写列表的ilcmStatcChangcd()事务处理方法)-IDll圈自助早餐请选择早点:您选择了:房自助早,,ll您选择了:沅沅远011哽0111.d退出馒头0.2沅元元元Ooo3500.0.1.退出代码实现:importjava.awt.*;importjava.at.event.;publicclassMy
25、java3extendsFramepublicstaticvoidmain(Stringargs)Breakfastf=newBreakfast。;f.gw();)classBreakfaStextendsMyjava3doublePriCeU=0,0,0.2,0.3,0.5,0.8,0.5,1;publicBreakfast()SetSiZe(35。,250);SetTitlee自助早f);set1.ayout(newGrid1.ayOUt(I,2);Panelpl=newPanel();Panelp2=newPanel();Buttonb=newBUtton(退出);b.addActio1
26、.istener(newAction1.istenerOpublicvoidactionPerformed(ActionEvente)(System.exit(0););pl.set1.ayout(newFlow1.ayout();p2.Set1.ayout(newBorder1.ayout(1,2);1.abelll=new1.abe1(谙选择早点:”);1.abel12=new1.abe1(您选择了:”);TextAreat=newTextArea(6,10);1.istlist三new1.ist(ll,true);list.add(名称单价);list.add();list.add(慢头
27、0.20元“);list.add(n花卷0.3。元”);list.add(面包0.50U);list.add(蛋糕0.80c);list.add(豆浆0.50元“);list.add(牛奶1.00元”);IiSt.additemlistener(newItemlistener()(publicvoiditemStateChanged(ItemEvente)intselected三list.getSelectedIndexesO;doubletotal=;for(inti=0jiselected.length;1+)total三total+priceselectedi;)Stringname=I
28、ist.getSelectedItems();Stringnames=for(intk=0jknewButton(CoIOr(I28,42,42);Buttonb4=newButton(Color(0,0,255);bl.addAction1.istener(newAction1.istener()publicvoidactionPerformed(Actionvente)m=Double.pflrseDouble(tl.getText().trim();n=Double.parseDoub1.e(t2.getText().trim();k=m+n;t3.setText(+k););b2.ad
29、dActio1.istener(newAction1.istenerO(publicvoidactionPerformed(ActionEvente)m=Double.parseDoubte(t1.getTet().trim();n=Double.porseDouble(t2.getText().trim();k=m-n;t3.setText(+k););b3.addAction1.istener(newAction1.istener()publicvoidactionPerformed(ActionEvente)(m=Double.parseDoub1.e(tl.getText().trim
30、();n=Double.porseDobte(t2.getTet().trim();k=m*n;t3.setText(+k););b4.addAction1.istener(newAction1.istenerO(publicvoidactionPer-Formed(ActionEvente)m=Double.prseDouble(tl.getTet().trim();n=Double.parSeDOUble(t2.getText().trim();if(n=0)k=mn;t3.setText(,+k);)elset3.setText(Error!(除数不能为0!););add(tl);add
31、(t2);add(t3);add(bl);add(b2);add(b3);add(b4);试验结果:试验九异样处理、线程限制一、试验目的和要求驾驭Java中异样处理、多线程限制程序编程方法。要求至少完成试验内容巡的70%。二、试验内容I.编写一个程序,在其中写一个随机数发生类,它能生成O-100之间的随机整数,在主方法中运用随机数发生类对缴生成一些随机数,要求当生成的随机数大于60时定义一个用户定义异样类对型并抛出该对象代码实现:importjava.util.Random;publicclassMyjavalpublicstaticvoidmain(Stringargs)tryRandomr
32、andom=newRandom();intr=rando11.nextlnt(100);System.out.println(r);Exceptionae=newEXCePtion(生成的Kf机数大于60!);if(r60)throwae;catch(Exceptione)(e.printStackTrace();试验结果:&Javadoc聆DeclarationQConsole23Myjava1(7)JavaApplicationD:eclipsejrebinjavaw.exe(2015,87java.lang.Exception:生成的随机数大于60!at实物九.Myjavalmain(N
33、yjava1.java:11)JavadocOedarationConsole23terminatedMyjava1J7)(JavaApplicationDzeclisejrebinjavaw.exe(2015272 .编写一个多线程程序,在其中实现两个定时线程,一个线程每隔I秒显示一次秒数,另一个每隔3秒显示一次字母(a,b,代码实现:publicclassMyjava2publicstaticvoidmain(Stringargs)Secondsseconds=newSeconds();Wordswords=newWords();seconds.start();words.start();
34、)classSecondsextendsThreadpublicvoidrun()tryfor(inti=0;i60;i+)System.out.print(i+);Thread.s1.eep(1000);)catch(Exceptione)System.out.printIn(e.toString();)classWordsextendsThreadpublicvoidrun()tryfor(intk三65jk91jk+)Thread.s1.eep(3000);SyStem.out.Println(Char)k);catch(Exceptione)System.out.println(e.t
35、oString();)试验结果:GJeivadoc电DedarItionConsole区0123A45B678C91011D121314E151617F181920G212223H3 .编写-程序,在其中定义个线程类ABC它能够实现下面三种功能之:1)每隔I秒显示一次秒数:2)每隔2秒显示一个字母(A.B,.):3)每隔3秒显示一个字母(H,I,)。构造方法有二个整型参数:m.n,m确定时间间隔(也是由它确定要实现的功能),n确定输出的字符的个数。在主方法中建立三个线程对象:Al、A2、A3,分别设置它们的优先级为:4,6,8,最终启动这三个线程,输出110、AE、HK,请视察运行结果.代码实
36、现:publicclassMyjava3publicstaticvoidmain(Stringargs)ABCAl=newABC(l,l);ABCA2=newABC(2,5);ABCA3=newABC(3,4);Al.setPriority(4);A2.setPriority(6);A3.setPriority(8);Al.start();A2.start();A3.start();)classABCextendsThreadintm=0,n=0;publicABC(intm,intn)this.m=m;this.n=n;publicvoidrun()try(switch(m)case 1:f
37、or(inti=l;i=n;i+)System.out.print(i+);Thread.steep(m*100);)break;case 2:for(intk=65;kn+6S;k+)System.out.print(char)k+);Thread.s1.eep(m*1000);)break;case 3:for(intj=72;jn+72;j+)(System.out.print(char)j+);Thread.steep(m*1000);)break;)catch(Eceptione)System.out.println(e.tostring();试验结果:何JavadoDeclarat
38、ionSConsole区terminatedMyjava3(6)JavaApplicationD:edipsejrebinavaw.exe(2015年1月9日下午1:33:15)A1H2B3I4C563D78E9K104,编写个APPIeI(或JAPPlet),Applet窗体宽300,高100,布局管理器为null.窗体上有一个标签和一个按钮,标签的位置是(10.20),按钮的位置是(100.60),它们的宽度和高度都是80和20。再编写一个线程,该线程可以让标签向右移动10次,每次移动IO个单位,间隔I秒,通过按钮的动作事务启动上述线程.界面如下图所示。代码实现:importjava.aw
39、t.*;importjava.awt.event.*;importjava.applet.*;publicclassMytaVa4extendsAppletimplementsRunnablestatic1.abell=newIabe1(向右移标冬!”);Buttonb=newBUttOn(启动);staticintx=10;staticThreadnove=newThread(newMyjava4();publicvoidinit()set1.ayout(null);SetSiZe(300,I。);add(b);add(t);l.setBounds(10,2,80,20);b.SetBoun
40、dS(100,6,80,20);b.addAction1.istener(newAction1.istenerOpublicvoidactionPerformed(ActIonEvente)wjve.start(););)publicvoidrun()try(for(inti=0ji10ji+)x=x+10;t.SetBounds(x,2,80,20);Thread.steep(1000);)catch(Eceptione)System.out.println(e.toString();)试验结果:5.编写一个图形用户界面程序,窗体的宽度300,高度150,布局管理器为null,窗体上仃二个标签和二个按钮,标签的位置为(10.30)和(200.60),按钮的位身为(50.1(三)和(150,100),它们的宽度和高度都是80和20。编写一个线程,该线程可以让标签向右或向左移动IO次,每次移动IO个单位,间隔1秒,通过按钮的动作事务后动上述线程,“向右走”按钮启动“向右移标签”,“向左走”按钮启动“向左