您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > JAVA课程设计报告(绘制散点图)
JAVA课程设计报告设计题目:绘制散点图小组成员:1.程序功能:功能一:打开一个文本文件,读取其中的坐标数值并绘制出散点图,并同时在控制台中输出读取的坐标功能二:根据用户输入的点数,随机绘制散点图2.设计思路和框图:首先创建一个框架窗口,在其上添加菜单栏,在菜单项上增加打开文件和随机生成散点图。在具体程序中,创建窗口的类为Diagram,在类中写入paintComponent函数,直接在容器上绘图,获取参数时用getGraphics()。画坐标线是用drawLine(),画坐标点用drawString()。因为小程序有两个功能,所以paintComponent()中有两个方法,一个用来绘制读取的文件中得坐标,另一个绘制Math.random()函数产生的随机数坐标,坐标数由输入对话框获得。因为要设置一个参数来判断调用哪一个方法。对于菜单项“打开”和“随机生成散点图”分别添加事件监听器,用JFileChooser类来实现文件的打开功能,用文件输入流FileReader和缓冲字符输入流BufferedReader来读取文件中得内容,当点击“随机生成散点图”菜单项时用showInputDialog()函数创建输入对话框,对话框中的文本框输入用户要生成的散点数。3.程序实现的关键点:在程序执行过程中repaint()函数的调用;调用paintComponents()函数时用getGraphics()获得参数;因为坐标线绘制时不是以容器中的零点开始,所以读取文件中的坐标值和随机生成坐标值时数值要做相应的调整以适应容器。4.程序代码及执行结果:packagescatter.update;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.*;importjavax.swing.*;publicclassScatterUpdate{publicstaticinta;/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubDiagramdia=newDiagram();}}classDiagramextendsJFrameimplementsActionListener{JMenuBarmenu=newJMenuBar();JMenufile=newJMenu(文件);JMenuItemopen=newJMenuItem(打开);JMenuItemrand=newJMenuItem(随机生成散点图);Containercon=getContentPane();inta,c=1;String[]num;JFileChooserchooser=newJFileChooser();Diagram(){super(散点图绘制小程序V1.1);this.setBounds(500,200,400,400);setJMenuBar(menu);menu.add(file);file.add(open);file.add(rand);rand.addActionListener(this);open.addActionListener(this);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}@OverridepublicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstubif(e.getSource()==rand){con.repaint();Strings=JOptionPane.showInputDialog(null,输入点数,随机生成散点图,JOptionPane.QUESTION_MESSAGE);a=Integer.parseInt(s);c=1;paintComponents(getGraphics());}elseif(e.getSource()==open){con.repaint();choice();c=0;paintComponents(getGraphics());}}publicvoidpaintComponents(Graphicsg){//super.paintComponents(g);if(c==1){g.setColor(Color.DARK_GRAY);g.drawLine(30,70,30,370);g.drawLine(30,370,330,370);g.drawString(0,15,380);g.drawString(300,325,385);g.drawString(300,8,65);//Graphicsg2=(Graphics)g;intx,y,b=0;while(ba){x=(int)(Math.random()*301)+30;y=(int)(Math.random()*301)+70;g.setColor(Color.MAGENTA);g.drawString(*,x,y);b++;}}elseif(c==0){//Graphics2Dg2=(Graphics2D)g;g.setColor(Color.RED);g.drawLine(30,70,30,370);g.drawLine(30,370,330,370);g.drawString(0,15,380);g.drawString(300,325,385);g.drawString(300,8,65);intx,y,i=0;while(inum.length){x=Integer.parseInt(num[i]);y=Integer.parseInt(num[i+1]);i=i+2;g.setColor(Color.BLUE);g.drawString(*,x+30,400-y);}}}voidchoice(){inti=0;if(chooser.showOpenDialog(this)==JFileChooser.APPROVE_OPTION){Filefile=chooser.getSelectedFile();try{FileReaderfread=newFileReader(file);BufferedReaderbread=newBufferedReader(fread);Stringline=bread.readLine();num=line.split([,]);//line=bread.readLine();while(inum.length){System.out.println((+num[i]+,+num[i+1]+));i=i+2;}}catch(FileNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}}5.本次课程设计的收获:锻炼了独自分析和解决问题的能力,增加了JAVA编程实践的经验。初步掌握了JAVA绘图函数的使用及JFileChooser类的初次尝试。6.程序的不去及需改进的地方:程序总体的UI不够美观;使用JFileChooser类弹出文件打开框时,如果不选择文件直接退出会出现异常;绘图过程中画面显示有时不够稳定;程序的文件读取功能需要进一步加强。
本文标题:JAVA课程设计报告(绘制散点图)
链接地址:https://www.777doc.com/doc-2879100 .html