版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA语言课程设计指导教师:姓名:学号:班级:日期:一、中国象棋打谱系统1.1设计内容中国象棋打谱系统使用户能够将对弈过程保存成文件,并能够重新演示对弈过程,即复盘。1.2设计要求1.中国象棋是双方在由9条和10条横线分割而成的棋盘对弈。竖线与横线的交叉点称做棋点,每个棋子都放置在棋点上,而不是方格中。河界将棋盘分为两个等分=份,没一边都有一个由9个点组成的区域“将”,“帅”,“士”只能在“九宫”内移动,并且“将”,“帅”,的每一步只可以水平或垂直移动一个棋点。士:“士”只能在“九宫”内移动,并且每一步只可以沿对角线方向移动一个棋点。象;一步必须沿对角线方向走两个棋点。但它既不能过河,也不能跳过或穿越障碍,即象征走的过程不能被“别眼”。马:每一步只可以水平或垂直移动一个棋点。但它必须沿对角线方向,向左或向右移动,中国象棋的马不能跳过障碍,即在走的过程不能被“别腿”。车:可以沿水平或垂直方向移动任意个无障碍的点。炮:行走规则和车很类似,但它必须跳过一个棋子来吃掉对方的一个棋子。被跳过的棋子被称为桥或者屏风。兵:过河前每步只能向前移动一个棋点。过河后,它便增加了向左右移动的能力。并不允许向后移动。2.单击“中国象棋”菜单可以选择“制作棋谱”,“保存棋谱”和“演示棋谱”菜单项。3.选择“制作棋谱”,将出现相应的棋盘,该棋盘可进行实战对弈,可以随时选择“保存棋谱”,将对弈过程保存成一个棋谱文件。选择“演示棋谱”将显示打开文件对话框供用户选择以保存的棋谱文件。选择棋谱文件后,将显示用来演示棋谱的棋盘,用户可以选择自动或者手动来演示对弈过程。1.3总体设计类之间的组合关系如下:2具体设计2.1运行效果单击确定后点击“选择制作棋谱的方式”出现如下:选择所要制作的棋谱是实战的还是残局:棋谱制作完成后可以对其进行保存:选择棋谱并进行演示:2.2详细程序设计ChinaChess主类的设计首先设计棋谱主界面:publicclassChinaChessextendsJFrameimplementsActionListener{ChessBoardboard;DemoManulDialogdemoManul;JMenuBarbar;JMenumakeMenu,showMenu;JMenuItemmakeShiZhanManul,makeCanJuManul,openManulAndShow;JButtonstartMakeManul,saveManul;JTextFieldhintMessage;publicChinaChess(){setTitle("中国象棋棋谱制作系统");board=newChessBoard();add(board,BorderLayout.CENTER);bar=newJMenuBar();makeMenu=newJMenu("选择制作棋谱的方式");showMenu=newJMenu("棋谱");makeShiZhanManul=newJMenuItem("制作实战棋谱");makeCanJuManul=newJMenuItem("制作残局棋谱");openManulAndShow=newJMenuItem("打开一个棋谱并演示");makeMenu.add(makeShiZhanManul);makeMenu.add(makeCanJuManul);showMenu.add(openManulAndShow);bar.add(makeMenu);bar.add(showMenu);setJMenuBar(bar);makeShiZhanManul.addActionListener(this);makeCanJuManul.addActionListener(this);openManulAndShow.addActionListener(this);startMakeManul=newJButton("开始制作棋谱");startMakeManul.setVisible(false);startMakeManul.addActionListener(this);saveManul=newJButton("保存棋谱");saveManul.setVisible(false);saveManul.addActionListener(this);hintMessage=newJTextField(30);hintMessage.setHorizontalAlignment(JTextField.CENTER);hintMessage.setFont(newFont("细黑",Font.PLAIN,15));hintMessage.setEditable(false);hintMessage.setText("请单击菜单,选择制作棋谱的方式或演示已有的棋谱");hintMessage.setBackground(Color.green);JPanelnorth=newJPanel();north.add(hintMessage);north.add(startMakeManul);north.add(saveManul);add(north,BorderLayout.NORTH);setVisible(true);setBounds(120,10,710,580);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);validate();JOptionPane.showMessageDialog(this,"请单击菜单,选择制作棋谱的方式或演示已有的棋谱","提示对话框",JOptionPane.WARNING_MESSAGE);}publicvoidactionPerformed(ActionEvente){Stringmessage="单击\"开始制作棋谱\",然后拖动棋子走棋";if(e.getSource()==makeShiZhanManul){board.setShizhanPlay();hintMessage.setText(message);startMakeManul.setVisible(true);saveManul.setVisible(false);JOptionPane.showMessageDialog(this,message,"提示对话框",JOptionPane.WARNING_MESSAGE);}if(e.getSource()==makeCanJuManul){message="将棋盒中棋子拖入棋盘摆好残局,然后单击\"开始制作棋谱\"";hintMessage.setText(message);board.setCanjuPlay();startMakeManul.setVisible(true);saveManul.setVisible(false);JOptionPane.showMessageDialog(this,message,"提示对话框",JOptionPane.WARNING_MESSAGE);}if(e.getSource()==startMakeManul){board.startMakeManul();hintMessage.setText("单击\"保存棋谱\"按钮可以保存棋谱");saveManul.setVisible(true);startMakeManul.setVisible(false);}if(e.getSource()==saveManul){startMakeManul.setVisible(false);JFileChooserchooser=newJFileChooser();intstate=chooser.showSaveDialog(null);Filefile=chooser.getSelectedFile();if(file!=null&&state==JFileChooser.APPROVE_OPTION){try{FileOutputStreamout=newFileOutputStream(file);ObjectOutputStreamobjectOut=newObjectOutputStream(out);objectOut.writeObject(board);out.close();objectOut.close();}catch(Exceptionevent){}}}if(e.getSource()==openManulAndShow){JFileChooserchooser=newJFileChooser();intstate=chooser.showOpenDialog(null);Filefile=chooser.getSelectedFile();if(file!=null&&state==JFileChooser.APPROVE_OPTION){demoManul=newDemoManulDialog(file);demoManul.setVisible(true);}}}ChinaBoard类的设计主要是设计实战棋盘以及残局棋盘绘制整个棋盘的布局publicChessBoard(){setLayout(null);step=newArrayList<Point>();initPointAndPiece();redChessBox=newChessBox(distance,11,7);blackChessBox=newChessBox(distance,11,1);for(inti=0;i<redPiece.length;i++)redChessBox.putPieceToBox(redPiece[i]);for(inti=0;i<blackPiece.length;i++)blackChessBox.putPieceToBox(blackPiece[i]);initPieceLocation=newInitPieceLocation();initPieceLocation.setPoint(playPoint);initPieceLocation.setRedChessPiece(redPiece);initPieceLocation.setBlackChessPiece(blackPiece);initPieceLocation.setRedChessBox(redChessBox);initPieceLocation.setBlackChessBox(blackChessBox);initCanju=newInitCanju();initCanju.setPoint(playPoint);initCanju.setRedChessBox(redChessBox);initCanju.setBlackChessBox(blackChessBox);handleMouse=newHandleMouse();handleMouse.setStep(step);handleMouse.setPoint(playPoint);handleMouse.setRedChessBox(redChessBox);handleMouse.setBlackChessBox(blackChessBox);handleMouse.initStep();cancel=newJButton("悔棋");add(cancel);cancel.setVisible(false);cancel.setSize(60,30);cancel.setLocation(13*distance,(int)(5*distance));cancel.addActionListener(this);}ChessPiece类的设计ChessPiece类是javax.swing包中JPanel类得一个子类。设计的是棋子。设计红棋或者黑棋的名字以及摆放的位置:publicvoidpaintComponent(Graphicsg){super.paintComponent(g);intw=getBounds().width;inth=getBounds().height;Imageimage=null;g.setColor(color);g.fillOval(1/2,1/2,w-1,h-1);g.setColor(Color.white);g.setFont(newFont("隶书",Font.BOLD,22));g.drawString(name,7*w/32,2*h/3);}Point类的设计Point创建的对象是负责确定ChessPiece对象在ChessBoard容器中的所在位置。publicPoint(intx,inty){this.x=x;this.y=y;}publicbooleanisHaveChessPiece(){returnhaveChessPiece;}publicvoidsetHaveChessPiece(booleanboo){haveChessPiece=boo;}publicintgetX(){returnx;}publicintgetY(){returny;}publicbooleanequals(Pointp){if(p.getX()==this.getX()&&p.getY()==this.getY())returntrue;elsereturnfalse;}ChessBox类的设计ChessBox创建的对象表示一个棋盒。该棋盒的外观效果是由ChessBoard类中的paintComponent(Graphics)方法负责绘制的。ChessBox(intdistance,intk1,intk2){this.distance=distance;boxPoint=newPoint[16];intHspace=distance,Vspace=distance;for(inti=0;i<4;i++){boxPoint[i]=newPoint(k1*distance+Hspace,k2*Vspace);boxPoint[i].setIsBoxPoint(true);Hspace=Hspace+distance;}Hspace=distance;Vspace=distance;for(inti=4;i<8;i++){boxPoint[i]=newPoint(k1*distance+Hspace,(k2+1)*Vspace);boxPoint[i].setIsBoxPoint(true);Hspace=Hspace+distance;}具体设计棋子:publicPointputPieceToBox(ChessPiecepiece){intw=piece.getBounds().width;inth=piece.getBounds().height;Pointp=piece.getAtPoint();booleanboo=false;if(p!=null)boo=p.getIsBoxPoint();Stringname=piece.getName();if(boo==false){if(name.equals("帅")||name.equals("将")){piece.setLocation(boxPoint[0].getX()-w/2,boxPoint[0].getY()-h/2);boxPoint[0].setChessPiece(piece);boxPoint[0].setHaveChessPiece(true);piece.setAtPoint(boxPoint[0]);}InitPieceLocation类的设计InitPieceLocation负责初始化棋子的位置。for(intk=0;k<pieceList.size();k++){ChessPiecepiece=pieceList.get(k);intw=piece.getBounds().width;inth=piece.getBounds().height;Pointp=null;p=piece.getAtPoint();if(p!=null)p.setHaveChessPiece(false);Stringname=piece.getName();if(name.equals("帅")&&piece.getIsRed()){piece.setLocation(playPoint[9][4].getX()-w/2,playPoint[9][4].getY()-h/2);piece.setAtPoint(playPoint[9][4]);playPoint[9][4].setHaveChessPiece(true);playPoint[9][4].setChessPiece(piece);}InitCanju类的设计InitCanju类创建的对象允许用户将棋盒中的棋子拖入棋盘中的棋点,以便摆放好残局的开局。for(inti=0;i<point.length;i++){for(intj=0;j<point[i].length;j++){if(rect.contains(point[i][j].getX(),point[i][j].getY())){endPoint=point[i][j];break;}}}if(piece.getIsRed()){for(inti=0;i<redChessBoxPoint.length;i++){if(rect.contains(redChessBoxPoint[i].getX(),redChessBoxPoint[i].getY())){endPoint=redChessBoxPoint[i];break;}}}elseif(piece.getIsBlack()){for(inti=0;i<blackChessBoxPoint.length;i++){if(rect.contains(blackChessBoxPoint[i].getX(),blackChessBoxPoint[i].getY())){endPoint=blackChessBoxPoint[i];break;}}}if(endPoint!=null&&endPoint.isHaveChessPiece()==false){piece.setLocation(endPoint.getX()-w/2,endPoint.getY()-h/2);piece.setAtPoint(endPoint);endPoint.setHaveChessPiece(true);endPoint.setChessPiece(piece);startPoint.setHaveChessPiece(false);}elsepiece.setLocation(startPoint.getX()-w/2,startPoint.getY()-h/2);}HandleMouse类的设计HandleMouse类实现了MouseListener和MouseMotionListener接口。HandMouse类创建的对象要求用户必须按着象棋规则拖动棋子。if(coninstanceofJLayeredPane)((JLayeredPane)con).setLayer(piece,JLayeredPane.PALETTE_LAYER);Rectanglerect=piece.getBounds();for(inti=0;i<point.length;i++){for(intj=0;j<point[i].length;j++){if(rect.contains(point[i][j].getX(),point[i][j].getY())){endPoint=point[i][j];break;}}}if(endPoint!=null&&isPlaypoint){if(endPoint.isHaveChessPiece()){if(endPoint.getChessPiece().getIsRed()==startPoint.getChessPiece().getIsRed())piece.setLocation(startPoint.getX()-w/2,startPoint.getY()-h/2);else{booleanok=rule.movePieceRule(piece,startPoint,endPoint);if(ok){ChessPiecebackToBoxPiece=endPoint.getChessPiece();PointboxPoint=null;if(backToBoxPiece.getIsRed())boxPoint=redChessBox.putPieceToBox(backToBoxPiece);elseif(backToBoxPiece.getIsBlack())boxPoint=blackChessBox.putPieceToBox(backToBoxPiece);piece.setLocation(endPoint.getX()-w/2,endPoint.getY()-h/2);piece.setAtPoint(endPoint);endPoint.setHaveChessPiece(true);endPoint.setChessPiece(piece);startPoint.setHaveChessPiece(false);step.add(startPoint);step.add(endPoint);step.add(boxPoint);if(piece.getIsRed()){redFirstMove=false;blackFirstMove=true;}elseif(piece.getIsBlack()){blackFirstMove=false;redFirstMove=true;}}elsepiece.setLocation(startPoint.getX()-w/2,startPoint.getY()-h/2);}}else{booleanok=rule.movePieceRule(piece,startPoint,endPoint);if(ok){piece.setLocation(endPoint.getX()-w/2,endPoint.getY()-h/2);piece.setAtPoint(endPoint);endPoint.setHaveChessPiece(true);endPoint.setChessPiece(piece);startPoint.setHaveChessPiece(false);step.add(startPoint);step.add(endPoint);step.add(null);if(piece.getIsRed()){redFirstMove=false;blackFirstMove=true;}elseif(piece.getIsBlack()){blackFirstMove=false;redFirstMove=true;}}elsepiece.setLocation(startPoint.getX()-w/2,startPoint.getY()-h/2);}}elsepiece.setLocation(startPoint.getX()-w/2,startPoint.getY()-h/2);}MoveRule类的设计MoveRule类创建的对象可以判断用户是否按着象棋规则对弈。publicbooleanmovePieceRule(ChessPiecepiece,PointstartPoint,PointendPoint){intstartI=-1,startJ=-1,endI=-1,endJ=-1;this.piece=piece;this.startPoint=startPoint;this.endPoint=endPoint;booleanisMove=false;for(inti=0;i<point.length;i++){for(intj=0;j<point[i].length;j++){if(startPoint.equals(point[i][j])){startI=i;startJ=j;break;}}}for(inti=0;i<point.length;i++){for(intj=0;j<point[i].length;j++){if(endPoint.equals(point[i][j])){endI=i;endJ=j;break;}}}具体棋子规则设计以“车”和“马”为例:if(piece.getName().equals("车")||piece.getName().equals("車")){if(startI==endI){intj=0;for(j=minJ+1;j<=maxJ-1;j++){if(point[startI][j].isHaveChessPiece()){isMove=false;break;}}if(j==maxJ)isMove=true;}elseif(startJ==endJ){inti=0;for(i=minI+1;i<=maxI-1;i++){if(point[i][startJ].isHaveChessPiece()){isMove=false;break;}}if(i==maxI)isMove=true;}elseisMove=false;}elseif(piece.getName().equals("马")||piece.getName().equals("馬")){intxAxle=Math.abs(startI-endI);intyAxle=Math.abs(startJ-endJ);if(xAxle==2&&yAxle==1){if(endI>startI){if(point[startI+1][startJ].isHaveChessPiece())isMove=false;elseisMove=true;}if(endI<startI){if(point[startI-1][startJ].isHaveChessPiece())isMove=false;elseisMove=true;}}elseif(xAxle==1&&yAxle==2){if(endJ>startJ){if(point[startI][startJ+1].isHaveChessPiece())isMove=false;elseisMove=true;}if(endJ<startJ){if(point[startI][startJ-1].isHaveChessPiece())isMove=false;elseisMove=true;}}elseisMove=false;}DemoManulDialog类的设计DemoManulDialog类创建的对象是负责演示棋谱。publicvoidshowBoardManul(){stepNumber=1;stackStep.clear();stackBack.clear();if(demoOne!=null)remove(demoOne);try{FileInputStreamfile_in=newFileInputStream(file);ObjectInputStreamobject_in=newObjectInputStream(file_in);demoOne=(ChessBoard)object_in.readObject();file_in.close();object_in.close();ChessPiece[]redPiece=demoOne.getRedPiece();ChessPiece[]blackPiece=demoOne.getBlackPiece();for(inti=0;i<redPiece.length;i++){MouseListener[]listener=redPiece[i].getMouseListeners();for(intk=0;k<listener.length;k++)redPiece[i].removeMouseListener(listener[k]);listener=blackPiece[i].getMouseListeners();for(intk=0;k<listener.length;k++)blackPiece[i].removeMouseListener(listener[k]);MouseMotionListener[]mr=redPiece[i].getMouseMotionListeners();for(intk=0;k<mr.length;k++)redPiece[i].removeMouseMotionListener(mr[k]);mr=blackPiece[i].getMouseMotionListeners();for(intk=0;k<mr.length;k++)blackPiece[i].removeMouseMotionListener(mr[k]);}step=demoOne.getStep();for(inti=step.size()-1;i>=0;i--){stackStep.push(step.get(i));}demoOne.remove(demoOne.cancel);restoreChessBoard(step);split.setRightComponent(newJScrollPane(demoOne));}catch(Exceptionexp){add(newJButton("不是棋谱文件"),BorderLayout.CENTER);}}运行程序运行程序后,得出了正确的结果,实验结果截图见具体设计的运行效果部分。设计总结实验得出的结果粘贴在了前面具体设计部分。通过对java的了解与掌握,可以把java与游戏灵活的结合在一起,编程jar形式,可以进行运行,要了解其中的主类与方法,明白函数的调用和一些简单的构造方法。中国象棋打谱系统,含有10个java程序,主要是通过构造与创建对象来完成的,里面有许多变量设置,并且把我们学的线程联系到了一起,整体显得很自然,结构得当,内容丰富。老实说,在上java课的时候没怎么认真听过,因为以后并不打算做这一行。所以在做这个课程设计时遇到了不小的困难。虽然所有源代码课本上都有,老师也要求我们把程序看懂就可以了,但是这对于我来说还是有难度的。在阅读代码时遇到了一些不懂的,才知道自己的不足,很多问题是问了同学才明白。做完这个课程设计,尤其是最后运行结果后得到的象棋棋谱,而且还可以下象棋博弈,明白了java确实是一种很强大的语言。虽然我以后不一定从事java这一行,但是我觉得还是要好好学习下java,尽量弥补以前学习时没学好的东西。多一种知识,多一种手段,以后不管做什么多多少少能有点用。4、参考文献:《Java课程设计》(第二版)主编:耿祥义张跃平二、数据库通用查询系统1.1设计要求当仅仅查询数据库表中的记录时,我们可以不必知道表中字段的属性,因为无论字段是何种属性,总可以使用getString(intcolumnIndex)或getString(StringcolumnName)方法返回字段值的字符串表示。另外,无论字段是何种属性,SQL语句的LIKE子语句允许字符段以字符串形式与其他字符串进行匹配比较。基于以上所述,要求设计一个B/S模式的数据库通用查询系统,具体要求如下:客户端JavaApplet程序从加载该JavaApplet程序的html文件中获取数据库中的表的名字、表的字段名字以及表中字段的个数。这样一来,当需要更换所查询的表时,只要修改html文件,而不需要修改JavaApplet程序,使JavaApplet在查询数据时具有了通用性。2)JavaApplet通过套接字连接和服务器的Java应用程序实现通信。JavaApplet将表的名字、表中字段的个数以及查询条件提交给服务器,服务器的Java应用程序进行查询操作,并将查询结果返回给JavaApplet程序。1.2总体设计在设计数据库查询系统时,需要编写3个Java源文件:DatabaseServer.java、ServerThread.java和DatabaseClient.java。其中DatabaseServer.java和ServerThread.java为服务器端Java程序编译产生所需的类;DatabaseClient.java为JavaApplet程序编译产生所需要的类。数据库通用查询系统除了需要编写的3个Java源文件所编译所产生的类外,还需要Java系统提供的一些重要的类。如下:DatabaseClientDatabaseClientChoiceCheckboxSocketTextAreaDatabaseServerServerSocketSocketServerThread另外,为了调试代码的需要,我们用MicrosoftAccess设计了名为book.mdb的数据库。2具体设计2.1总体设计数据库设计数据库的名字为book.mdb,在库中所创建的表为bookform.。DatabaseServer.java(服务器端)DatabaseServer类创建的对象负责响应客户请求,该类含有main方法,服务器端从该类开始执行。DatabaseServer类的成员变量中有3种重要类型的对象:ServerSocket、Socket和ServerThread对象。DatabaseServer类运行效果如下:ServerThread.java(服务器端)ServerThread类是Thread类的子类,在Server类中负责为请求连接的用户启动一个线程对象。4.DatabaseClient.java(客户端)DatabaseClient.java中有两个类,分别是Client和DatabaseClient。Client是Frame类的子类,Client类的成员变量中有4种重要类型的对象:Choice、Checkbox、TextArea和Socket对象。DatabaseClient是客户端主类。效果如下图:2.2详细设计(1)、DatebaseServer类的设计DatebaseServer类是数据库通用查询系统服务器端的主类,负责响应客户的连接请求、建立和客户的套接字连接,并负责在服务端查询数据库。成员变量·server是ServerSocket对象,负责等待接受客户的套接字请求,当有客户请求套接字连接时,server将接受用户的请求,并调用accept()方法返回服务器端所建立的Socket对象you,即建立服务器端套接字和客户端套接字的连接。·you是Socket对象,该对象是驻留在服务器端的套接字对象,由server调用accept()方法所返回。·yourAddress是InetAddress对象,负责存放客户端的IP。方法·DatebaseServer()是构造方法。·DatebaseServer对象调用startServer(intport)方法响应客户的请求。·main方法是程序运行的入口方法。代码设计:import.*;importjava.util.*;importjava.io.*;publicclassDatabaseServer{ServerSocketserver;Socketyou;InetAddressyourAddress;publicDatabaseServer(){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundExceptione){System.out.println(e);}System.out.println("我是服务器端程序,负责处理用户的连接请求");}publicvoidstartServer(intport){while(true){try{server=newServerSocket(port);}catch(IOExceptione1){System.out.println("正在监听:");}try{System.out.println("等待用户呼叫.");you=server.accept();yourAddress=you.getInetAddress();System.out.println("客户的IP:"+yourAddress);}catch(IOExceptione){}if(you!=null){newServerThread(you).start();}elsecontinue;}}publicstaticvoidmain(Stringargs[]){DatabaseServerserver=newDatabaseServer();server.startServer(6666);}}(2)、ServerThread类的设计ServerThread类是Thread类的子类,当Server对象调用starServer()方法和一个请求套接字连接的用户建立套接字连接后,就使用ServerThread创建一个专门为该用户服务的线程。成员变量·con是Connection对象,负责和数据库建立连接。·stmt是Statement对象,负责向数据库发送SQL语句。·rs是ResultSet对象,负责存储从数据库查询到的记录。·socket是Socket对象。·yourAddress是IntAddress对象,负责存放客户端的IP.方法·ServerThread(Socket)是构造方法,当使用该构造方法创建线程时,通过该方法的参数将Server类中的对象传递给ServerThread类中的socket。·run()方法是ServerThread类重写父类Thread类中的方法,给出了怎样响应用户请求的具体内容。代码设计:importjava.io.*;import.*;importjava.util.*;importjava.sql.*;publicclassServerThreadextendsThread{InetAddressyourAddress;Socketsocket=null;DataOutputStreamout=null;DataInputStreamin=null;Connectioncon=null;Statementstmt=null;ResultSetrs;intnumber;ServerThread(Sockett){socket=t;try{con=DriverManager.getConnection("jdbc:odbc:myDataSouce","","");stmt=con.createStatement();}catch(SQLExceptione){System.out.println(e);}try{in=newDataInputStream(socket.getInputStream());out=newDataOutputStream(socket.getOutputStream());}catch(IOExceptione){}}publicvoidrun(){Strings="";intN=0;while(true){try{s=in.readUTF();System.out.println(s);if(s.startsWith("字段个数:")){Stringnumber=s.substring(s.lastIndexOf(":")+1);N=Integer.parseInt(number);}else{StringsqlCondition=null;String表名="",查询内容="",字段="",查询方式="";StringTokenizerfenxi=newStringTokenizer(s,":");if(fenxi.hasMoreTokens())表名=fenxi.nextToken();if(fenxi.hasMoreTokens())查询内容=fenxi.nextToken();if(fenxi.hasMoreTokens())字段=fenxi.nextToken();if(fenxi.hasMoreTokens())查询方式=fenxi.nextToken();if(查询方式.equals("完全一致")){sqlCondition="SELECT*FROM"+表名+"WHERE"+字段+"LIKE"+"'"+查询内容+"'";}elseif(查询方式.equals("前方一致")){sqlCondition="SELECT*FROM"+表名+"WHERE"+字段+"LIKE"+"'"+查询内容+"%'";}elseif(查询方式.equals("后方一致")){sqlCondition="SELECT*FROM"+表名+"WHERE"+字段+"LIKE"+"'%"+查询内容+"'";}elseif(查询方式.equals("中间包含")){sqlCondition="SELECT*FROM"+表名+"WHERE"+字段+"LIKE"+"'%"+查询内容+"%'";}try{rs=stmt.executeQuery(sqlCondition);number=0;while(rs.next()){number++;StringBufferbuff=newStringBuffer();for(intk=1;k<=N;k++){buff.append(rs.getString(k)+"");}out.writeUTF("\n"+newString(buff));}if(number==0)out.writeUTF("\n没有查询到任何记录\n");}catch(SQLExceptionee){out.writeUTF(""+ee);}}}catch(IOExceptione){try{socket.close();con.close();}catch(Exceptioneee){}System.out.p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专业人才服务承诺书9篇范文
- 网络交易平台数据安全承诺函7篇
- 工作汇报演示模板制作教程
- 2026年高考语文百校联考冲刺考试卷及答案(共三套)
- 2026年劳动合同备案手续情况说明
- 城市公共交通管理科2026年上半年工作总结
- 零售业HR招聘与面试策略探讨
- 方言特色保护推广承诺书(6篇)
- 2025 网络基础之 SNMP 协议的网络管理应用课件
- 2025 网络基础中网络传感器的通信协议选择课件
- 智能驾驶专题之四:2026智驾展望:向上升阶与向下平权的双轨渗透
- 2026年淮南职业技术学院单招职业适应性测试题库带答案详解
- 初中语文中考主旨探究与表达题知识清单
- 2026复工复产安全培训第9版
- 2026江苏徐州丰县综合检验检测中心招聘编外工作人员10人笔试备考题库及答案解析
- 2026年微机电系统(MEMS)设计原理
- (新版)ISO37301-2021合规管理体系全套管理手册及程序文件(可编辑!)
- 《TCSUS69-2024智慧水务技术标准》
- 电力变压器长时感应电压试验带局部放电测量试验作业指导书
- 社会责任验厂适用的法律法规清单
- 辽宁省“互联网+护理服务”试点工作
评论
0/150
提交评论