04748JAVA语言程序设计实践考试复习
考完试了,复习内容全部作废。
考题是两道题,一个半小时时间特别紧张
一进考场会发一张纸,上面有考题,怎么保存什么的不重要,因为还得删。考完试之后老师会过来让你运行一遍看一下效果。这时候就是最重要的时候了,你要发挥一小段演讲,现场评分,评完删除项目走人就结束了。
能运行是最重要的
能运行是最重要的
能运行是最重要的
其次是能完美的正确运行。
写的再多最后测试没完成,不能运行一点用都没有,切记切记。
我的感受
1.这个世界没有什么是绝对的,比如考题
2.鼠标巨难用,用的我手抖
重点是
无论复习的怎么样考试题目才是最重要的,考前临时背除非是原题不然就特别不明智的,尽量在考试之前清空一下脑袋迎接试题
至于考题答案,太简单了,我就不再写一遍了。
第一题类似源码:
package KT;import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;//6.Frame的使用,比如设置窗口大小,可见,创建并添加文本与按钮public class FrameTest {public static void main(String[] args) {Frame frame = new Frame();TextField textField = new TextField();Button button = new Button("确定");frame.setBounds(300,500,400,500);frame.setLayout(new FlowLayout());frame.add(button);frame.add(textField);frame.addWindowListener(new WindowListener() {@Overridepublic void windowOpened(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowIconified(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowDeiconified(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowDeactivated(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowClosing(WindowEvent e) {// TODO Auto-generated method stubSystem.exit(0);}@Overridepublic void windowClosed(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowActivated(WindowEvent e) {// TODO Auto-generated method stub}});button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubSystem.out.println(textField.getText());}});frame.setVisible(true);}}
**作废内容**
- 考试情况
java语言程序设计实践是在北邮考,北邮有考试指导
文档下载: https://download.csdn.net/download/grandaunt/10762461
据我估计考题应该是补充重点代码型的,至于真实情况,我考完试再来补充分享。
2. 考前复习情况
但是四道小题,一道大题一共一个半小时还是比较紧张,熟练的才好,记得带支笔,听说传闻中有画图的
如果实在不会,就运行看系统提示,或者把鼠标放在错误出,看看会不会弹出建议选择主要看书里例题,然后拿样题试着调试,需要带笔:笔是用来记第二次登录密码的,以备突然死机用去了别听老师讲话,先登录界面,输入该输入的,把该建的文件夹建了,省时间,离开别忘了删掉建立的文件,清空回收站
截图键:Alt+Prtsc
按CTRL+V键即可粘贴。
Eclipse使用问题(安装问题什么的就略过吧~)
经典代码
1.鼠标画椭圆
https://blog.csdn.net/xietansheng/article/details/55669157
2.输出文件目录
package KT;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.File;
//14.自行设计程序界面,在选定目录后,显示该目录及其子孙目录下的文件信息
public class file {
public static void main(String[] args) {new MyDirFile();
}
public static class MyDirFile{private Frame frame= new Frame();private Button button = new Button("转到");private TextField textfield = new TextField(50);private TextArea textArea= new TextArea(50,70);MyDirFile(){Init();}private void Init() {// TODO Auto-generated method stubframe.setBounds(200, 400, 500, 400);frame.setLayout(new FlowLayout());frame.add(button);frame.add(textfield);frame.add(textArea);MyEvent();frame.setVisible(true);}private void MyEvent() {// TODO Auto-generated method stubframe.addWindowListener(new WindowListener() {@Overridepublic void windowOpened(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowIconified(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowDeiconified(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowDeactivated(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowClosing(WindowEvent e) {// TODO Auto-generated method stubSystem.exit(0);}@Overridepublic void windowClosed(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowActivated(WindowEvent e) {// TODO Auto-generated method stub}});button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubshouDir();}});textfield.addKeyListener(new KeyListener() {@Overridepublic void keyTyped(KeyEvent e) {// TODO Auto-generated method stub}@Overridepublic void keyReleased(KeyEvent e) {// TODO Auto-generated method stubif(e.getKeyCode() == e.VK_ENTER) {shouDir(); }}@Overridepublic void keyPressed(KeyEvent e) {// TODO Auto-generated method stub}});}private void shouDir() {// TODO Auto-generated method stubString dir = textfield.getText();File file = new File(dir);if(file.exists()&&file.isDirectory()) {//清空文本区域内容textArea.setText("");String[] strings = file.list();for(String str :strings) {textArea.append(str+"\n");}}textfield.setText("");}
}
}
3.连接到数据源并输出
package KT;
import java.sql.*;
//9.连接到数据源并输出
public class ODBC {
public static void main(String[] args) throws Exception {
DatabaseConnection databaseConnection = new DatabaseConnection();
}
}
//定义一个数据库连接类
class DatabaseConnection
{//创建连接对象Connection ct = null;//创建用于发生sql语句的对象PreparedStatement ps = null;//创建用于接受结果集的对象ResultSet rs = null;//构造函数public DatabaseConnection(){try {//加载驱动Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//得到连接ct = DriverManager.getConnection("jdbc:odbc:vote","root","root");//进行crud操作//增加操作ps = ct.prepareStatement("insert into student(Sno,Sname,Ssex) values('1513220146','马云','男')");ps.executeUpdate();//删除操作ps = ct.prepareStatement("delete from student where Sname = '马云'");ps.executeUpdate();//修改操作ps = ct.prepareStatement("update student set Sname = '岳云鹏' where Sname = '鹿晗'");ps.executeUpdate();//查询操作ps = ct.prepareStatement("select * from student");//将结果输入到结果集中rs = ps.executeQuery();//循环输出while(rs.next()){String a = rs.getString(2);String b = rs.getString(3);//输出结果System.out.println(a + " " + b);}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}finally{try {//关闭资源if(rs != null){rs.close();}if(ps != null){ps.close();}if(ct != null){ct.close();}} catch (Exception e2) {// TODO: handle exceptione2.printStackTrace();}}}
}
线程控制Thread sleep
package KT;import java.util.Scanner;//1.线程控制Thread sleep的使用
public class Thread1 {public static void main(String args[]){ Thread t=new Thread(new Ss());t.start();try { Thread.sleep(2000); }catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("I am main!"); } public static class Ss implements Runnable{ public void run(){System.out.println(Thread.currentThread());} } }
实践指导考题答案(题目详情见考试指导):
样题一:
一、纠正程序“c1.java”的语法错误,然后回答问题(25分)
(1)纠正程序中的语法错误。
答:
(2)程序的功能是什么?如果向程序中输入数据7,程序运行的结果是什么?请把程序运行结果的贴图存储到ans.doc中。
答:
二、程序中有若干空白,请完善程序题目,并回答问题(40分)
(1)程序A21的功能是判断2~N之间哪些整数是质数(n从键盘输入)。请完善程序,并把程序运行结果的贴图存储到ans.doc中。
答:
cc=JOptionPane.ShowInputDialog(‘请输入一个二位整数:‘);改成 cc=JOptionPane.showInputDialog("请输入一个二位整数:");n=Integer.ParseInt(cc);改成 n=Integer.parseInt(cc);System.out.println(‘运算结果是:’+ee);改成double jiech(int x){加static 变成 static double jiech(int x){
(2)程序A22的功能是单击按钮【求平方】,就能够输出文本框中输入数据的平方,请把程序补充完整,并把程序运行结果的贴图存储到ans.doc中。
答: public Button btn = new Button(“求平方”);
三:程序设计(35分)
编写数组处理程序a3.java。要求定义整型数组,并从键盘上输入10个数据,然后求出其中的最大者和所有数据的总和。
答:
样题二
一、纠正程序“c1.java”的语法错误,然后回答问题(25分)
(1)纠正程序中的语法错误。
答:
(2)程序的功能是什么?如果向程序中输入数据153,程序运行的结果是什么?向程序中输入数据128,程序的运行结果是什么?,并把程序运行结果的贴图存储到ans.doc中。
二、程序中有若干空白,请完善程序题目,并回答问题(40分)
(1)程序b21的功能是判定某一年是否闰年。请完善程序,并把程序运行结果的贴图存储到ans.doc中。
答:
(2)程序b22的功能是在监控台上每隔一秒钟显示一个字符串“Hello!”,请填空把程序补充完整,并把程序运行结果的贴图存储到ans.doc中。
答:
三:程序设计(35分)
已知:系统中有ODBC数据源xytest,其中有数据表xsb,结构为:学号,姓名,性别,生日,单位。
请编写程序b3.java,使之能够连接数据源xytest,并输出数据表xsb的所有内容。
答:
样题三:
一、纠正程序“c1.java”的语法错误,然后回答问题(25分)
(1)纠正程序中的语法错误。
答:
(2)程序的功能是什么?如果向程序中输入数据100,程序运行的结果是什么?向程序中输入数据300,程序的运行结果是什么?并把程序运行结果的贴图存储到ans.doc中。
答:
二、程序中有若干空白,请完善程序题目,并回答问题(40分)
(1)程序C21.java的目的是进行复数运算。现在需要计算复数(3+5.8i)和复数(17-6.5i)的和、差、积,请把程序补充完整(程序中所需的数据不需要键盘输入),并把程序运行结果的贴图存储到ans.doc中。
答:
(2)程序C22的功能是:输入一个姓名,程序运行后,输出“姓名Welcome you!”.例如,输入“张三Welcome you !”。请在下面横线处填入正确的方法名,使程序可以正确运行,并把程序运行结果的贴图存储到ans.doc中。
答:
三:程序设计(35分)
设计一个加法器程序c3.java。要求在窗口中有三个文本框和两个按钮。第一个按钮上的文字为“加法”,第二个按钮上的文字为“关闭”。当单击按钮“加法”时,能够把前两个文本框中的数据相加并存放在第三个文本框中。单击按钮“关闭”,则程序结束。
答:
参考资料:
第一道大题:
主要考画图:
学会这个文件夹当中的文件就差不多了。但考试只要求用一个文件。
知识点参考:
P127,第六章 6.6鼠标事件
P140,第七章 7.2绘图
第二道大题参考:
主要考运算:
知识点参考:
P76,第四章 (9)、(10)、(11)
P104-105,例5.9
1.线程控制Thread sleep的使用
2.按钮动作的使用
3.ActionListener 和ActionPerformed
4.尤其是大小写是JAVA爱考的
5.简单的类和函数的调用关系
6.Frame的使用,比如设置窗口大小,可见,创建并添加文本与按钮
7.文本用SetText GetText
8.还有字符串与double float int 的转换
9.连接到数据源并输出
这个虽然没考,但是在范围内:
10.链接到数据库,读取并输出已在数据库的表信息
package KT;
/*鼠标画椭圆/
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.JSeparator;
import javax.swing.JToggleButton;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;import com.ljheee.paint.component.DrawPanel;
import com.ljheee.paint.shape.AirBrush;
import com.ljheee.paint.shape.Curve;
import com.ljheee.paint.shape.DottedRectangle;
import com.ljheee.paint.shape.Eraser;
import com.ljheee.paint.shape.Line;
import com.ljheee.paint.shape.MyPolygon;
import com.ljheee.paint.shape.Oval;
import com.ljheee.paint.shape.Pencil;import com.ljheee.paint.shape.RoundRect;
import com.ljheee.paint.shape.Shape;
import com.ljheee.paint.shape.ShapeList;
import com.ljheee.paint.shape.Word;
import com.ljheee.paint.ui.about.About;
import com.ljheee.paint.shape.Rectangle;
import javafx.scene.shape.CubicCurve;//13.编写一个GUI程序,程序允许用户在窗体上执行按下鼠标、拖动鼠标和松开鼠标的动作,在动作结束时,程序以适当的顶点坐标、长度和宽度绘制一个椭圆。
public class GUI extends JFrame{private DrawPanel drawPanel = null;//�м�Ļ���Graphics2D g = null;int x0=0,y0=0,xEnd=0,yEnd=0;int xPX = 0,yPX = 0;String commandTool = "pencil";//ѡ��ġ�����ָ�Color commandColor = Color.black;//��ǰ��ɫShape shape = null;//��ǰ����[����]��ͼ��ShapeList shapelist = new ShapeList();
Curve curve = null;//����
MyPolygon myPolygon = null;//�����int step = 0;int curveX0,curveY0,curveXEnd,curveYEnd;int cx1,cy1,cx2,cy2;private JLabel leftInfo = new JLabel("״̬��:");private JLabel pathInfo = new JLabel(" ");private JLabel timeInfo = new JLabel(" ");public GUI() {super("PaintingTool");this.setSize(900, 700);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setLocationRelativeTo(null);g = (Graphics2D) this.getGraphics();JPanel topJPanel = new JPanel();topJPanel.setLayout(new GridLayout(2, 1));JRootPane rootPane = new JRootPane();rootPane.setBackground(Color.gray);// center--drawingPaneldrawPanel = new DrawPanel(shapelist);drawPanel.addMouseListener(new MouseListenerImpl());drawPanel.addMouseMotionListener(new MouseMotionImpl());this.add(drawPanel);this.setVisible(true);}class MouseListenerImpl implements MouseListener{@Overridepublic void mouseClicked(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mouseEntered(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mousePressed(MouseEvent arg0) {// TODO Auto-generated method stubx0 = arg0.getX();y0 = arg0.getY();g = (Graphics2D)drawPanel.getGraphics();if(commandTool.equals("word")){//����String input;input = JOptionPane.showInputDialog("Please input the text you want!");Word word = new Word(x0, y0, xEnd, yEnd, commandColor);word.text = input;shape = word;shape.draw(g);repaint();shapelist.addShape(shape);}if(commandTool.equals("curve")){//����if(step == 0||step == -1||curve==null){step = 1;//�����һ��������ֱ��curveX0 = arg0.getX();curveY0 = arg0.getY();} }}// 假设鼠标一直停留在A点,往下按然后放开,此时触发的是 mouseClicked 事件
// 鼠标被按下,一直不松手,不论停留在原处还是移动,此时触发的是 mousePressed 事件
// mouseReleased 最复杂,因为它必须发生在 mousePressed 和 mouseDragged 之后:
//
// 假设鼠标在A点被按下,然后一直不松开,然后移动到 B 点, 松开,此时触发的是 mouseReleased 事件,在 mouseReleased 事件之前,一定会有 mousePressed 和mouseDragged 事件
// @Overridepublic void mouseReleased(MouseEvent e) {xEnd = e.getX();yEnd = e.getY();g = (Graphics2D)drawPanel.getGraphics();if(commandTool.equals("air_brush")){//����ͰAirBrush airBrush = new AirBrush(x0, y0, xEnd, yEnd, commandColor);shape = airBrush;airBrush.flag = 1;shape.draw(g);repaint();shapelist.addShape(shape);return;}if(commandTool.equals("polygon")){//�����if(myPolygon == null){myPolygon = new MyPolygon(x0, y0, xEnd, yEnd, commandColor);}myPolygon.npoints++;myPolygon.xpoints[myPolygon.npoints-1] = xEnd;myPolygon.ypoints[myPolygon.npoints-1] = yEnd;shape = myPolygon;}if(commandTool.equals("curve")){//����if(step == 1){curveXEnd = e.getX();curveYEnd = e.getY();step = 2;//��һ������ͷţ�ֱ����ɡ��ڶ�����ȷ��ctrlPoint1return;} else if(step == 2){cx1 = e.getX();cy1 = e.getY();
// curve.cubicCurve2D.ctrlx1 = e.getX();
// curve.cubicCurve2D.ctrly1 = e.getY();step = 3;//��������ȷ��ctrlPoint2return;} else if(step == 3){
// curve.cubicCurve2D.ctrlx2 = e.getX();
// curve.cubicCurve2D.ctrly2 = e.getY();cx2 = e.getX();cy2 = e.getY();curve.cubicCurve2D.setCurve(curveX0, curveY0, cx1, cy1, cx2, cy2, curveXEnd, curveYEnd);shape.draw(g);repaint();shapelist.addShape(shape);step = -1;curve = null;return;}}switch (commandTool) {case "line": //ֱ直线 shape.draw(g);
// repaint();shapelist.addShape(shape);break;case "rect"://方块 shape.draw(g);repaint();shapelist.addShape(shape);break;case "round_rect": //圆角方块 shape.draw(g);repaint();shapelist.addShape(shape);break;case "dot_rect"://虚线方块 shape.draw(g);repaint();shapelist.addShape(shape);break;case "oval": //椭圆 shape.draw(g);repaint();shapelist.addShape(shape);break;case "pencil": //铅笔 shape.draw(g);repaint();shapelist.addShape(shape);break;// case "polygon":
// shape.draw(g);
// repaint();
// shapelist.addShape(shape);
// break;}}}/*** ����϶�* @author ljheee**/class MouseMotionImpl implements MouseMotionListener{@Overridepublic void mouseDragged(MouseEvent e) {xEnd = e.getX();yEnd = e.getY();g = (Graphics2D)drawPanel.getGraphics();//Ǧ�ʻ���Ƥ��if(commandTool.equals("pencil")||commandTool.equals("eraser")){xEnd = e.getX();yEnd = e.getY();shape = new Pencil(x0, y0, xEnd, yEnd, commandColor);if(commandTool.equals("eraser")){shape = new Eraser(x0, y0, xEnd, yEnd, Color.white);}shape.draw(g);repaint();shapelist.addShape(shape);//��������x0 = xEnd;y0 = yEnd;}switch (commandTool) {case "line": //ֱ直线shape = new Line(x0, y0, xEnd, yEnd, commandColor);shape.draw(g);repaint();break;case "rect": //方块shape = new Rectangle(x0, y0, xEnd, yEnd, commandColor);shape.draw(g);repaint();break;case "round_rect": //圆角方块shape = new RoundRect(x0, y0, xEnd, yEnd, commandColor);shape.draw(g);repaint();break;case "dot_rect": //��߾��� shape = new DottedRectangle(x0, y0, xEnd, yEnd, commandColor);shape.draw(g);repaint();break;case "oval": //椭圆 shape = new Oval(x0, y0, xEnd, yEnd, commandColor);shape.draw(g);repaint();break;
// case "curve": //曲线
// if(step == 1&&curve==null){
// curve = new Curve(curveX0, curveY0, xEnd, yEnd, commandColor);
// curve.cubicCurve2D.setCurve(curveX0, curveY0, curveX0, curveY0, xEnd, yEnd, xEnd, yEnd);
// curve.draw(g);
// } else if(step == 2){
// curve.cubicCurve2D.setCurve(curveX0, curveY0, xEnd, yEnd, xEnd, yEnd, curveXEnd, curveYEnd);
// } else if(step == 3){
// curve.cubicCurve2D.setCurve(curveX0, curveY0, cx1, cy1, xEnd, yEnd, curveXEnd, curveYEnd);
// }
//
// shape = curve;
// shape.draw(g);
// repaint();
// break;default:break;}xPX = e.getX();yPX = e.getY();pathInfo.setText(" "+xPX+","+yPX);//״̬����ʾ�����������Ϣ��}@Overridepublic void mouseMoved(MouseEvent e) {xPX = e.getX();yPX = e.getY();pathInfo.setText(" "+xPX+","+yPX);//״̬����ʾ�����������Ϣ��}}public static void main(String[] args) {new GUI();}}