基于java的课程设计(谁教教我怎么写JAVA的课程设计论文)
本文目录
谁教教我怎么写JAVA的课程设计论文
目 录一、概要设计……………………………………………………………3二、程序整体设计说明…………………………………………….…..4三、程序部分源代码及注释…………………………………………….9四、测试结果………………………………………………………….24五、设计心得…………………………………………………………25六、致 谢…………………………………………………………25七、参考文献…………………………………………………………25【摘 要】该程序是一个图形界面的java文档器,其界面主要采用了awt包, 程序实现了文本器的基本功能有:新建文件、打开文件、文件保存、文件另存为、剪切、复制、粘贴、删除、查找/替换、改变字体大小,另外还利用Time类的schedule方法实现了文件的定时自动更新功能,并创建备份文件,由于该器是用的awt包,所以在技术上没有实现将Java的关键字以不同颜色显示功能。【关键字】java 器一、概要设计Java程序器是:图形界面、线程、流与文件等技术的综合应用。图形界面的实现:考虑到简单、实用、高效等特点,就选择了AWT来完成实现,在选择组件上,文本区就选用了TaxtArea作为主要的部件。线程实现文件自动保存:在相关的参考书上查阅到在Time类中有一个schedule方法可以在后台自动完成一定的功能,而且调用起来相当简单,于是就用了Time类中的schedule方法来实现文件自动保存及备份功能。文件操作的实现:利用了字符文件流FileReader和FileWriter类来实现。由于Java的特性,可能用任何一个器来,于是就将Windows中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。在设计类的时候,考虑到简单明了,就用了两个类,一个主类和一个默认属性类作为程序的整体框架,所有的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。主类完成对象的实例化及显示。这们设计的优点是:条理清晰,容易理解,容易修改。这样设计的缺点是:不利于共享类中的方法。二、程序整体设计说明2.1、程序框架图2.2、程序中所用类说明(1)用户自定义类类名:EditInstantiation作用:实例化对象继承的父类:WindowAdapter主要成员变量:Frame myFrm // 定义主窗体TextArea myText // 定义文本区Dialog myDlgFind,myDlgFindont //查找及设置字体对话框TextField TFfind, TFreplace, TffontSize//查找对话框和字体窗体中的文本行Button BfontOK, Bfind, Breplace, Bnext, Bcancel //定义和创建各按钮Label Lf, Lr, Ls //定义和创建各标签MenuBar Mbbar //定义和创建主菜单Menu Mfile,Medit,Mformation,Mhelp //定义和创建主菜单中的选项 Toolkit toolKit Clipboard myCB //剪切板对象 FileDialog myFDlg //定义文件对话框 Choice ChfontName //定义和创建字体选择框 private int VIindex = 1; //构成文件名后缀变量 private String VSsubFixStr=".java"; //构成文件名扩展名变量 private String VSmyFileName = "Document1",VSmyBFileName; //文件名及备份文件名变量 private File VFmyFile=new File(VSmyFileName+VIindex+".java"); //文件名变量 private int VIsearchPosition=0; //查找位置指针 private Timer VTtime; //实例化一个Time类 private int VImin=1; // schedule方法中的一个时间参数 private int VItype=JOptionPane.INFORMATION_MESSAGE; //提示对话框类型 private String VStitle; //提示对话框标题 private String VSmessage; //提示对话框信息 private boolean VBchanged = true; //改变字体的一个标识 private int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2; //设置字体大小及步长 主要成员方法:public void init() //初始化各部件菜单的定义和事件的监听public void displayEdit ()//显示窗体及调用Time中的schedule方法public void windowClosing () //关闭窗体public void save //保存文件方法a.内部类类名:KeyEvents作用:实现菜单的事件的响应功能继承的父类:KeyAdapter主要成员变量:无成员方法:actionPerformed()、keyPressed() b.内部类类名:FindKeyEvent作用:实现查找中各部件事件的响应功能继承的父类:无主要成员变量:无成员方法:actionPerformed ()c.内部类类名:fontEvent作用:实现字体中各部件事件的响应功能继承的父类:无主要成员变量:无成员方法:ItemListener(),ActionListener()(2)用户自定义类与Java类的继承关系图如下: 自定义类 Java 类线程使用说明2.3、实现接口方法本程序用到的方法有:schedule其方法描述如下:schedule(事件,启动时间,间隔时间);2.4、线程应用本程序为文本器,为实现自动更新,应用到了线程,每隔1分钟对文件进行自动更新2.5、异常处理说明 (1)打开文件时的异常处理需要处理的异常:IOException处理方法:捕获异常后,显示捕获的异常(2)保存文件时的异常处理需要处理的异常:IOException处理方法:捕获异常后,显示捕获的异常2.6、程序运行效果及存在的问题(1)程序运行主要界面如下:a、主界面b、打开文件对话框c、保存文件对话框d、另存为文件对话框e、查找/替换对话框f.字体对话框2.7.程序尚还存在的问题我花费了近一个多星期的时间,查阅了许多相关的资料,终于把这个Java器,程序基本实现了该课程设计的基本要求。但由于自己水平有限,使得程序还有不是很完善,首先,最重要的一点是该设计的最重要的功能自动改变java关键字的颜色没有实现。 三、程序部分源代码及注释//**************************************************** // class name :Edit // implements :none // extends :none // attribute :public // founction :entrance of the class //***************************************************** public class Edit{ //主类 public static void main(String args){ EditInstantiation myEdit= new EditInstantiation(); myEdit.init(); //初始化 myEdit.displayEdit(); //显示窗体 } //**************************************************** // class name :EditInstantiation // implements :none // extends :WindowAdapter // attribute :default // founction :EditInstantiation of the main class //***************************************************** class EditInstantiation extends WindowAdapter{ //默认属性类 //define sources 定义各部件 Frame myFrm=new Frame("我的器"); //定义窗体 TextArea myText=new TextArea(); //定义窗体 Dialog myDlgFind=new Dialog(myFrm,"查找",true); //定义查找对话框 Dialog myDlgFindont=new Dialog(myFrm,"字体",true); //定义字体对话框 TextField TFfind=new TextField(30);//定义查找对话中的查找输入框 TextField TFreplace=new TextField(30); //定义查找对话中的替换输入框 TextField TFfontSize,TFfontDemo;//定义字体大小文本框和示例框 Choice CHfontName;//定义字体大小选择框 List LTfontSize; //定义字体大小标签 Button BfontOK,BfontCancel; //定义字体大小对话中的确定及取消按钮 Button Bfind=new Button("查找");//定义查找对话中的查找按钮 Button Breplace=new Button("替换");//定义查找对话中的替换及取消按钮 Button Bnext=new Button("下一个");//定义查找对话中的下一个及取消按钮 Button Bcancel=new Button("取消");//定义查找对话中的确定及取消按钮 Label Lf=new Label("查找内容:"); Label Lr=new Label("替换为: "); Label Ls=new Label("字体大小:"); FileDialog myFDlg; Clipboard myCB=Toolkit.getDefaultToolkit().getSystemClipboard(); //剪切板对象 Menu Mfile,Medit,Mformation,Mhelp; MenuBar MBbar; //define varities //定义各变量 private int VIindex = 1; private String VSsubFixStr=".java"; private String VSmyFileName = "Document1",VSmyBFileName; private File VFmyFile=new File(VSmyFileName+VIindex+".java"); private int VIsearchPosition=0; private Timer VTtime; private int VImin=1; // parameter in time schedul private int VItype=JOptionPane.INFORMATION_MESSAGE; private String VStitle; private String VSmessage; // flag of the changeing private boolean VBchanged = true; // the scope of the font private int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2; //************************************************ //founction name:init() //parameter :none //attribute :public //founction :initia all compont //************************************************ public void init(){ //初始化各部件 //------------------ set menu ------------------ MBbar=new MenuBar(); myFrm.setMenuBar(MBbar); Mfile=new Menu("文件"); Medit=new Menu(""); Mformation=new Menu("格式"); Mhelp=new Menu("帮助"); MBbar.add(Mfile); MBbar.add(Medit); MBbar.add(Mformation); MBbar.add(Mhelp); //文件菜单 add File menu Mfile.add(new MenuItem("新建",new MenuShortcut(KeyEvent.VK_N))); Mfile.add(new MenuItem("打开",new MenuShortcut(KeyEvent.VK_O))); Mfile.add(new MenuItem("保存",new MenuShortcut(KeyEvent.VK_S))); Mfile.add(new MenuItem("另存为")); Mfile.addSeparator();//分隔线 Mfile.add(new MenuItem("退出",new MenuShortcut(KeyEvent.VK_E))); //菜单 add Edit menu Medit.add(new MenuItem("剪切"));//,new MenuShortcut(KeyEvent.VK_X))); Medit.add(new MenuItem("复制"));//new MenuShortcut(KeyEvent.VK_C))); Medit.add(new MenuItem("粘贴"));//new MenuShortcut(KeyEvent.VK_V))); Medit.add(new MenuItem("删除"));//new MenuShortcut(KeyEvent.VK_D))); Medit.addSeparator();//分隔线 Medit.add(new MenuItem("查找/替换",new MenuShortcut(KeyEvent.VK_F))); Medit.addSeparator();//分隔线 Medit.add(new MenuItem("全选",new MenuShortcut(KeyEvent.VK_A))); //格式菜单 add Formation menu Mformation.add(new MenuItem("字体",new MenuShortcut(KeyEvent.VK_U))); //帮助菜单 add Formation menu Mhelp.add(new MenuItem("关于作者")); //----------------- menu add end ------------------------- //add Menu Action Listener Mfile.addActionListener(new KeyEvents()); Medit.addActionListener(new KeyEvents()); Mformation.addActionListener(new KeyEvents()); Mhelp.addActionListener(new FindKeyEvent()); //--------------------------- Find dialog----------------- myDlgFind.setSize(350,115); myDlgFind.setLocation(250,150); myDlgFind.setLayout(new FlowLayout(FlowLayout.CENTER)); myDlgFind.setBackground(Color.LIGHT_GRAY); Bfind.setEnabled(false); Breplace.setEnabled(false); Bnext.setEnabled(false); myDlgFind.add(Lf); myDlgFind.add(TFfind); myDlgFind.add(Lr); myDlgFind.add(TFreplace); myDlgFind.add(Bfind); myDlgFind.add(Breplace); myDlgFind.add(Bnext); myDlgFind.add(Bcancel); myDlgFind.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ myDlgFind.setVisible(false); }});//为查找对话框窗体注册事件监听 TFfind.addKeyListener(new KeyEvents());//注册事件监听 Bfind.addActionListener(new FindKeyEvent()); Breplace.addActionListener(new FindKeyEvent()); Bcancel.addActionListener(new FindKeyEvent()); Bnext.addActionListener(new FindKeyEvent()); //--------------- end add action listener ------------ //================set font dialog ============== //font size text field TFfontSize = new TextField("8",14); TFfontSize.selectAll(); //font size list field LTfontSize = new java.awt.List(5, false); LTfontSize.addItemListener(new fontEvent()); for(int i = VIfontSizeMin; i 《= VIfontSizeMax; i = i + VIfontSizeChangedStep) LTfontSize.add(i + "");//添加字体大小 LTfontSize.select(0); //two Button Ok Cancel BfontOK = new Button("确定"); BfontOK.addActionListener(new fontEvent()); BfontCancel = new Button("取消"); BfontCancel.addActionListener(new fontEvent()); //a TextField for demo the font TFfontDemo = new TextField("Java awt",37); TFfontDemo.setEditable(false); // my font dialog设置字体对话框 myDlgFindont.setLayout(new FlowLayout(FlowLayout.LEFT)); myDlgFindont.setBackground(Color.LIGHT_GRAY); myDlgFindont.add(Ls); myDlgFindont.add(TFfontSize); myDlgFindont.add(BfontOK); myDlgFindont.add(BfontCancel); myDlgFindont.add(LTfontSize); myDlgFindont.add(TFfontDemo); myDlgFindont.setSize(300,200); myDlgFindont.setLocation(300,200); myDlgFindont.setResizable(false); myDlgFindont.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { myDlgFindont.show(false); } }); //为字体对话框窗体注册事件监听 //=============end set font dialog // =======set Edit frame设置器窗休 myFrm.add(myText,BorderLayout.CENTER); myFrm.setSize(500,400); myFrm.setBackground(Color.lightGray); myFrm.addWindowListener(this); myFrm.setSize(500,400); myFrm.setLocation(200,100); myFrm.setTitle("Java器"); } //************************************************ //founction name:displayEdit() //parameter :none //attribute :public //founction :initial and display the frame //************************************************ public void displayEdit(){ //显示窗体 myFrm.setVisible(true); //---------------------- auto save --------------------- VTtime = new Timer(true); VTtime.schedule(new java.util.TimerTask(){ public void run(){ if(VSmyFileName!=null){ save(VSmyFileName+".java"); VSmyBFileName=VSmyFileName+".bak"; } //添加自动保存功能 save(VSmyBFileName); } }, VImin*60*1000,VImin*60*1000); //parament 1 the task //parament 2 when to start the task //parament 3 set the interval time } //**************************************************** // class name :KeyEvents // implements :ActionListener // extends :KeyAdapter // attribute :default // founction :implement the mouse and key action //***************************************************** class KeyEvents extends KeyAdapter implements ActionListener{ //******************************************************** //founction name:actionPerformed() //parameter :none //attribute :public //return :void //founction :realize the key action in the menu //********************************************************* public void actionPerformed(ActionEvent e){ //完成菜单事件的功能 // File Menu if (e.getActionCommand()=="新建"){ //remind you JFrame aFrame=new JFrame(); aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JOptionPane optionPane=new JOptionPane(); String choices={"是","否","取消"}; int n=optionPane.showOptionDialog(aFrame,"文件正文已更改,是否保存更改","文本器",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE,null,choices,choices); //保存文件后新建 if(n==0){//若文件存在,保存在原文件中,再新建文件 try{ if(VFmyFile.exists()){ save(VSmyFileName); // call the save founction myText.setText(""); VIindex++; } else{//若文件不存在,则保存后再新建 myFDlg=new FileDialog(myFrm,"保存文件",FileDialog.SAVE); myFDlg.setFile(VSmyFileName); myFDlg.show(); VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile(); save(VSmyFileName); myText.setText(""); VIindex++; } } catch(Exception ne){} } //不保存文件新建 if(n==1){ myText.setText(""); VIindex++; } //取消新建 if(n==0){return;} } //打开菜单 Open Menu if (e.getActionCommand()=="打开") { myFDlg=new FileDialog(myFrm,"打开",FileDialog.LOAD); myFDlg.show(); if (myFDlg.getFile()!="") { VFmyFile=new File(myFDlg.getDirectory()+myFDlg.getFile()); VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile(); if( VFmyFile.exists()){ try{ FileReader fr=new FileReader(VFmyFile); BufferedReader br=new BufferedReader(fr); String text; myText.setText(""); while ((text=br.readLine())!=null) myText.append(text+"\r\n"); br.close(); fr.close(); } catch(IOException ioe){ VStitle="提示"; VSmessage="打开文件出错"; JOptionPane.showMessageDialog(myFrm,VSmessage,VStitle,VItype); } } } } //保存菜单 Save Menu if (e.getActionCommand()=="保存"){ myFDlg=new FileDialog(myFrm,"保存文件",FileDialog.SAVE); myFDlg.setFile(VSmyFileName); myFDlg.show(); VSmyFileName=myFDlg.getFile(); if(VSmyFileName!=null){ VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile(); save(VSmyFileName); } } //另存为菜单 SaveAs Menu if (e.getActionCommand()=="另存为"){ myFDlg=new FileDialog(myFrm,"文件另存为",1); myFDlg.setFile(VSmyFileName); myFDlg.show(); VSmyFileName=myFDlg.getFile(); if(VSmyFileName!=null){ VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile(); save(VSmyFileName); } } //退出菜单 exit Menu if (e.getActionCommand()=="退出") System.exit(0); // Edit Menu if (e.getActionCommand()=="剪切"){ //Cut String text =myText.getSelectedText(); StringSelection selection = new StringSelection(text); myCB.setContents(selection, null); myText.replaceRange("",myText.getSelectionStart(),myText.getSelectionEnd()); } if (e.getActionCommand()=="复制"){ //copy String text=myText.getSelectedText(); if(text!=null){ StringSelection selection=new StringSelect
高分急求:基于java模拟龟兔赛跑 课程设计!!!
import java.awt.*;import javax.swing.*;import java.net.*;import java.awt.event.*;public class Race extends JApplet implements ActionListener{ JButton b=new JButton("开始"); JButton b1=new JButton("复位"); JPanel p=new JPanel(); JLabel message=new JLabel(); JLabel message1=new JLabel(); int rx=0,tx=0; Image tortoise,rabbit; int h,w; Thread t,r; public void init(){ Container c=getContentPane(); c.setLayout(new GridLayout(3,1)); b.addActionListener(this); b1.addActionListener(this); b1.setEnabled(false); p.add(b1); p.add(b); p.add(message); p.add(message1); c.add(p); try{ tortoise=getImage(getDocumentBase(),"gui.jpg"); rabbit=getImage(getDocumentBase(),"tu.jpg"); }catch(Exception e){} h=getHeight(); w=getWidth(); r=new Rabbit(this); t=new Tortoise(this); } public void paint(Graphics g){ super.paint(g); g.drawImage(tortoise,tx,60,h/3,h/3,this); g.drawImage(rabbit,rx,120,h/3,h/3,this); if(rx》=w-h/3&℞》tx)message.setText("兔子赢得比赛!"); if(tx》=w-h/3&&tx》rx)message1.setText("乌龟赢得比赛!"); if(tx》=w-h/3&℞》=w-h/3)b1.setEnabled(true); } public void start(){ } public void setM(String m){ message.setText(m); } public void setRx(int x){ rx=x; } public void setTx(int x){ tx=x; } public int getRx(){ return rx; } public int getTx(){ return tx; } public void actionPerformed(ActionEvent e){ String str=e.getActionCommand(); if(str.equals("开始")){ t.start(); r.start(); b.setEnabled(false); } else{ r=new Rabbit(this); t=new Tortoise(this); b.setEnabled(true); b1.setEnabled(false); rx=0; tx=0; repaint(); message.setText(""); message1.setText(""); } }}class Rabbit extends Thread{ Race race; int rx=0; boolean wake=true; public Rabbit(Race r){ race=r; } public void run(){ while(true){ int flag=(int)(Math.random()*40); rx=rx+5; race.setRx(rx); race.repaint(); if(race.getRx()》=race.getWidth()-race.getHeight()/3)break; try{ if(flag!=2){ if(!wake){ race.setM("兔子醒了!"); wake=true; } Thread.sleep(50); } else{ race.setM("兔子睡着了!"); wake=false; Thread.sleep(3000); } }catch(Exception e){} } }}class Tortoise extends Thread{ Race race; int tx=0; public Tortoise(Race r){ race=r; } public void run(){ while(true){ tx=tx+2; race.setTx(tx); race.repaint(); if(race.getTx()》=race.getWidth()-race.getHeight()/3)break; try{ Thread.sleep(50); }catch(Exception e){} } }}这是源代码希望能采纳
更多文章:
android大型游戏(什么安卓手机玩大型游戏不仅不卡流畅,还便宜)
2024年6月13日 06:35
智通人才网怎么设置一个人两份简历?找工作上智通人才网,效果怎样
2024年5月24日 20:58
adobe photoshop cs6(如何在笔记本电脑上安装PhotoshopCS6)
2024年10月12日 19:40
合金弹头攻略(合金弹头反击队伍怎么强化 合金弹头反击队伍强化攻略)
2024年6月25日 23:01