实验.docx
- 文档编号:4281894
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:31
- 大小:24.60KB
实验.docx
《实验.docx》由会员分享,可在线阅读,更多相关《实验.docx(31页珍藏版)》请在冰点文库上搜索。
实验
第一题:
图形界面,输入文本地址,在TextFiled里显示内容,点击转换按钮,将大写字母转为小写字母,小写字母转为大写字母并输出在另外一个TextFiled里
importjava.io.File;
importjava.io.FileInputStream;
importorg.eclipse.swt.widgets.Display;
importorg.eclipse.swt.widgets.Shell;
importorg.eclipse.swt.widgets.Label;
importorg.eclipse.swt.SWT;
importorg.eclipse.swt.widgets.Text
importorg.eclipse.swt.widgets.Button;
importorg.eclipse.swt.events.SelectionAdapter;
importorg.eclipse.swt.events.SelectionEvent;
importorg.eclipse.swt.events.MouseAdapter;
importorg.eclipse.swt.events.MouseEvent;
publicclassTask1{
protectedShellshell;
privateTexttextPath;
privateTexttextRecord;
privateTexttextTra
publicstaticvoidmain(String[]args){
try{
Task1window=newTask1();
window.open();
}catch(Exceptione){
e.printStackTrace();
}
}
publicvoidopen(){
Displaydisplay=Display.getDefault();
createContents();
shell.open();
shell.layout();
while(!
shell.isDisposed()){
if(!
display.readAndDispatch()){
display.sleep();
}
}
}
protectedvoidcreateContents(){
shell=newShell();
shell.setSize(450,300);
shell.setText("\u6587\u672C\u7F16\u8F91\u5668");
Labellabel=newLabel(shell,SWT.NONE);
label.setBounds(32,36,63,13);
label.setText("\u6587\u4EF6\u8DEF\u5F84\uFF1A");
textPath=newText(shell,SWT.BORDER);
textPath.setBounds(121,36,266,19);
ButtonbuttonRead=newButton(shell,SWT.NONE);
buttonRead.addMouseListener(newMouseAdapter(){
@Override
publicvoidmouseUp(MouseEvente){
Stringpath=textPath.getText();
bytebytes[]=newbyte[1024];
intindex=
try{
Filefile=newFile(path);
if(!
file.exists())
{
textRecord.setText("文本不存在");
}
else{
FileInputStreamis=newFileInputStream(file);
while((index=is.read(bytes,0,1024))>0){
Stringstr=newString(bytes,0,index);
textRecord.setText(str);
}
}
}
catch(Exceptionee){ee.printStackTrace();}
}
});
buttonRead.addSelectionListener(newSelectionAdapter()
{
@Override
publicvoidwidgetSelected(SelectionEvente){
}
});
buttonRead.setBounds(71,71,82,23);
buttonRead.setText("\u8BFB\u5165");
ButtonbuttonTrans=newButton(shell,SWT.NONE);
buttonTrans.addMouseListener(newMouseAdapter()
{
@Override
publicvoidmouseUp(MouseEvente){
try{
if(textRecord.getText()==null){
textTran.setText("文本域为空");
}
else{
Stringtext=null;
bytebytes[]=newbyte[1024];
charchs[]=newchar[1024];
bytes=textRecord.getText().toString().getBytes();
chs=textRecord.getTextChars();
intlen=textRecord.getCharCount();
intindex=0;
while(index if(chs[index]<=122&&chs[index]>=97) { chs[index]=(char)((int)chs[index]-32); } elseif(chs[index]>=65&&chs[index]<=90) {chs[index]=(char)((int)chs[index]+32);} index++; } textTran.setText(String.valueOf(chs)); } }catch(Exceptionee){ee.printStackTrace();}} }); buttonTrans.addSelectionListener(newSelectionAdapter(){ @Override publicvoidwidgetSelected(SelectionEvente){ } }); buttonTrans.setBounds(248,71,82,23); buttonTrans.setText("\u8F6C\u6362"); textRecord=newText(shell,SWT.BORDER); textRecord.setBounds(34,100,166,137); textTran=newText(shell,SWT.BORDER); textTran.setBounds(238,100,166,137); } } 5.套接字,客户端输入一个算术式: 2+3=,服务器端算出结果,返回到客户 importjava.io.*; import.*; publicclassTask2Client{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub try{ System.out.println("开始连接服务器"); Socketsocket=newSocket("localhost",8888); System.out.println("已经连接服务器"); OutputStreamos=socket.getOutputStream(); InputStreamis=socket.getInputStream(); bytebytes[]=newbyte[3]; //InputStreamReaderisr=newInputStreamReader(System.in); charchs[]=newchar[50]; intindex=0; System.in.read(bytes); os.write(bytes); System.out.println("已经发送"); InputStreamReaderisr=newInputStreamReader(is); index=isr.read(chs); System.out.println(newString(chs,0,index)); } catch(Exceptione){e.printStackTrace(); } } } //服务器端 importjava.io.*; import.*; publicclassTask2Server{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub try{ ServerSocketss=newServerSocket(8888); System.out.println("服务器开启"); Socketsocket=ss.accept(); System.out.println("找到客户端"); InputStreamis=socket.getInputStream(); InputStreamReaderisr=newInputStreamReader(is); OutputStreamos=socket.getOutputStream(); PrintWriterpw=newPrintWriter(os); charchs[]=newchar[3]; intindex=0; floatr=0; while(isr.read(chs)! =-1){ inta=Integer.parseInt(String.valueOf(chs[0])); intb=Integer.parseInt(String.valueOf(chs[2])); if(chs[1]=='+') { r=a+b; pw.write(String.valueOf(r)); pw.flush(); System.out.println(r); } elseif(chs[1]=='-') { r=a-b; pw.write(String.valueOf(r)); pw.flush(); System.out.println(r); } elseif(chs[1]=='*') { r=a*b; pw.write(String.valueOf(r)); pw.flush(); System.out.println(r); } elseif(chs[1]=='/') { r=a/b; pw.write(String.valueOf(r)); pw.flush(); System.out.println(chs); System.out.println(r);} else { pw.write("Error"); pw.flush(); System.out.println(chs); System.out.println("Error"); } } isr.close(); is.close(); socket.close(); ss.close(); } catch(Exceptione){e.printStackTrace();} } } 6: 第三题: 数据库操作,算平均分 importjava.sql.*; publicclassTask3{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub Stringurl="jdbc: mysql: //127.0.0.1: 3306/test"; Stringuser="root"; Stringpassword=""; Stringdriver="com.mysql.jdbc.Driver"; Connectionconn=null; PreparedStatementsql=null; ResultSetrs=null; intid=0; Stringname=null; floatjava=0; floatj2ee=0; floataver=0; try{ Class.forName(driver); conn=DriverManager.getConnection(url,user,password); System.out.println("连接数据库成功"); sql=conn.prepareStatement("select*fromscorewhere1"); rs=sql.executeQuery(); while(rs.next()) { id=rs.getInt (1); name=rs.getString (2); java=rs.getFloat(3); j2ee=rs.getFloat(4); aver=rs.getFloat(5); System.out.println("ID: "+id+"Name: "+name+"Java: " +java+"J2EE"+j2ee+"AverageScroe: "+aver); } System.out.println("计算平均成绩并存入数据库"); sql=conn.prepareStatement("select*fromscorewhere1"); rs=sql.executeQuery(); while(rs.next()) { id=rs.getInt (1); name=rs.getString (2); java=rs.getFloat(3); j2ee=rs.getFloat(4); aver=(java+j2ee)/2; sql=conn.prepareStatement("updatescoresetaveragescroe='" +aver+"'whereid='"+id+"'"); sql.executeUpdate(); } System.out.println("输出数据"); sql=conn.prepareStatement("select*fromscorewhere1"); rs=sql.executeQuery(); while(rs.next()) { id=rs.getInt (1); name=rs.getString (2); java=rs.getFloat(3); j2ee=rs.getFloat(4); aver=rs.getFloat(5); System.out.println("ID: "+id+"Name: "+name+"Java: " +java+"J2EE"+j2ee+"AverageScroe: "+aver); } rs.close(); sql.close(); conn.close(); }catch(Exceptione){ e.printStackTrace(); } } } 实验题3CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点。 在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时CyclicBarrier很有用。 因为该barrier在释放等待线程后可以重用,所以称它为循环的barrier。 题目要求: (1)要在公司大厅集合、然后参观陈云故居; (2)参观完后集合、准备去淀水湖参观(有3辆车、对应3个线程); 说明: 必须等大家都到齐了才能去下个地方、比如说在公司集合、3辆车子都到了才能出发等。 要求: 用java线程并发库的CyclicBarrier类模拟上述参观过程。 packageThread; importjava.util.Random; importjava.util.concurrent.CyclicBarrier; publicclassCyclicBarrierTest1{ publicstaticclassComponentThreadimplementsRunnable{ CyclicBarrierbarrier;//计数器 intID;//组件标识 int[]array;//数据数组 //构造方法 publicComponentThread(CyclicBarrierbarrier,int[]array,intID){ this.barrier=barrier; this.ID=ID; this.array=array; } publicvoidrun(){ try{ array[ID]=newRandom().nextInt(100); System.out.println("Component"+ID+"generates: "+array[ID]); //在这里等待Barrier处 System.out.println("Component"+ID+"sleep..."); barrier.await(); System.out.println("Component"+ID+"awaked..."); //计算数据数组中的当前值和后续值 intresult=array[ID]+array[ID+1]; System.out.println("Component"+ID+"result: "+result); }catch(Exceptionex){ } } } /** *测试CyclicBarrier的用法 */ publicstaticvoidtestCyclicBarrier(){ finalint[]array=newint[3]; CyclicBarrierbarrier=newCyclicBarrier(2,newRunnable(){ //在所有线程都到达Barrier时执行 publicvoidrun(){ System.out.println("testCyclicBarrierrun..."); array[2]=array[0]+array[1]; } }); //启动线程 newThread(newComponentThread(barrier,array,0)).start(); newThread(newComponentThread(barrier,array,1)).start(); } publicstaticvoidmain(String[]args){ CyclicBarrierTest1.testCyclicBarrier(); } } packageThread; importjava.util.concurrent.BrokenBarrierException; importjava.util.concurrent.CyclicBarrier; publicclassCyclicBarrierTest2{ publicstaticvoidmain(String[]args){ finalCyclicBarriercb=newCyclicBarrier(3); //finalSemaphoresemaphore=new
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验