期刊问答网 论文发表 期刊发表 期刊问答

java程序设计课程设计小论文

  • 回答数

    2

  • 浏览数

    360

wangfan2006
首页 > 期刊问答网 > 期刊问答 > java程序设计课程设计小论文

2个回答 默认排序1
  • 默认排序
  • 按时间排序

吕光束

已采纳
要求、目的、实现功能、设计思想、代码、流程图、模块划分、个人总结

java程序设计课程设计小论文

196 评论(11)

drkjqqz331

目 录一、概要设计……………………………………………………………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中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。在设计类的时候,考虑到简单明了,就用了两个类,一个主类和一个默认属性类作为程序的整体框架,所有的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。主类完成对象的实例化及显示。这们设计的优点是:条理清晰,容易理解,容易修改。这样设计的缺点是:不利于共享类中的方法。二、程序整体设计说明1、程序框架图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=JOptionPINFORMATION_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 //保存文件方法内部类类名:KeyEvents作用:实现菜单的事件的响应功能继承的父类:KeyAdapter主要成员变量:无成员方法:actionPerformed()、keyPressed() 内部类类名:FindKeyEvent作用:实现查找中各部件事件的响应功能继承的父类:无主要成员变量:无成员方法:actionPerformed ()内部类类名:fontEvent作用:实现字体中各部件事件的响应功能继承的父类:无主要成员变量:无成员方法:ItemListener(),ActionListener()(2)用户自定义类与Java类的继承关系图如下: 自定义类 Java 类线程使用说明3、实现接口方法本程序用到的方法有:schedule其方法描述如下:schedule(事件,启动时间,间隔时间);4、线程应用本程序为文本编辑器,为实现自动更新,应用到了线程,每隔1分钟对文件进行自动更新5、异常处理说明 (1)打开文件时的异常处理需要处理的异常:IOException处理方法:捕获异常后,显示捕获的异常(2)保存文件时的异常处理需要处理的异常:IOException处理方法:捕获异常后,显示捕获的异常6、程序运行效果及存在的问题(1)程序运行主要界面如下:a、主界面b、打开文件对话框c、保存文件对话框d、另存为文件对话框e、查找/替换对话框字体对话框程序尚还存在的问题我花费了近一个多星期的时间,查阅了许多相关的资料,终于把这个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(); myEinit(); //初始化 myEdisplayEdit(); //显示窗体 } //**************************************************** // 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=TDefaultToolkit()SystemClipboard(); //剪切板对象 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=JOptionPINFORMATION_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(); myFsetMenuBar(MBbar); Mfile=new Menu("文件"); Medit=new Menu("编辑"); Mformation=new Menu("格式"); Mhelp=new Menu("帮助"); MBadd(Mfile); MBadd(Medit); MBadd(Mformation); MBadd(Mhelp); //文件菜单 add File menu Madd(new MenuItem("新建",new MenuShortcut(KeyEVK_N))); Madd(new MenuItem("打开",new MenuShortcut(KeyEVK_O))); Madd(new MenuItem("保存",new MenuShortcut(KeyEVK_S))); Madd(new MenuItem("另存为")); MaddSeparator();//分隔线 Madd(new MenuItem("退出",new MenuShortcut(KeyEVK_E))); //编辑菜单 add Edit menu Madd(new MenuItem("剪切"));//,new MenuShortcut(KeyEVK_X))); Madd(new MenuItem("复制"));//new MenuShortcut(KeyEVK_C))); Madd(new MenuItem("粘贴"));//new MenuShortcut(KeyEVK_V))); Madd(new MenuItem("删除"));//new MenuShortcut(KeyEVK_D))); MaddSeparator();//分隔线 Madd(new MenuItem("查找/替换",new MenuShortcut(KeyEVK_F))); MaddSeparator();//分隔线 Madd(new MenuItem("全选",new MenuShortcut(KeyEVK_A))); //格式菜单 add Formation menu Madd(new MenuItem("字体",new MenuShortcut(KeyEVK_U))); //帮助菜单 add Formation menu Madd(new MenuItem("关于作者")); //----------------- menu add end ------------------------- //add Menu Action Listener MaddActionListener(new KeyEvents()); MaddActionListener(new KeyEvents()); MaddActionListener(new KeyEvents()); MaddActionListener(new FindKeyEvent()); //--------------------------- Find dialog----------------- myDlgFsetSize(350,115); myDlgFsetLocation(250,150); myDlgFsetLayout(new FlowLayout(FlowLCENTER)); myDlgFsetBackground(CLIGHT_GRAY); BsetEnabled(false); BsetEnabled(false); BsetEnabled(false); myDlgFadd(Lf); myDlgFadd(TFfind); myDlgFadd(Lr); myDlgFadd(TFreplace); myDlgFadd(Bfind); myDlgFadd(Breplace); myDlgFadd(Bnext); myDlgFadd(Bcancel); myDlgFaddWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ myDlgFsetVisible(false); }});//为查找对话框窗体注册事件监听 TFaddKeyListener(new KeyEvents());//注册事件监听 BaddActionListener(new FindKeyEvent()); BaddActionListener(new FindKeyEvent()); BaddActionListener(new FindKeyEvent()); BaddActionListener(new FindKeyEvent()); //--------------- end add action listener ------------ //================set font dialog ============== //font size text field TFfontSize = new TextField("8",14); TFfontSselectAll(); //font size list field LTfontSize = new List(5, false); LTfontSaddItemListener(new fontEvent()); for(int i = VIfontSizeMin; i <= VIfontSizeMax; i = i + VIfontSizeChangedStep) LTfontSadd(i + "");//添加字体大小 LTfontSselect(0); //two Button Ok Cancel BfontOK = new Button("确定"); BfontOKaddActionListener(new fontEvent()); BfontCancel = new Button("取消"); BfontCaddActionListener(new fontEvent()); //a TextField for demo the font TFfontDemo = new TextField("Java awt",37); TFfontDsetEditable(false); // my font dialog设置字体对话框 myDlgFsetLayout(new FlowLayout(FlowLLEFT)); myDlgFsetBackground(CLIGHT_GRAY); myDlgFadd(Ls); myDlgFadd(TFfontSize); myDlgFadd(BfontOK); myDlgFadd(BfontCancel); myDlgFadd(LTfontSize); myDlgFadd(TFfontDemo); myDlgFsetSize(300,200); myDlgFsetLocation(300,200); myDlgFsetResizable(false); myDlgFaddWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { myDlgFshow(false); } }); //为字体对话框窗体注册事件监听 //=============end set font dialog // =======set Edit frame设置编辑器窗休 myFadd(myText,BorderLCENTER); myFsetSize(500,400); myFsetBackground(ClightGray); myFaddWindowListener(this); myFsetSize(500,400); myFsetLocation(200,100); myFsetTitle("Java编辑器"); } //************************************************ //founction name:displayEdit() //parameter :none //attribute :public //founction :initial and display the frame //************************************************ public void displayEdit(){ //显示窗体 myFsetVisible(true); //---------------------- auto save --------------------- VTtime = new Timer(true); VTschedule(new 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 (ActionCommand()=="新建"){ //remind you JFrame aFrame=new JFrame(); aFsetDefaultCloseOperation(JFEXIT_ON_CLOSE); JOptionPane optionPane=new JOptionPane(); String choices[]={"是","否","取消"}; int n=optionPshowOptionDialog(aFrame,"文件正文已更改,是否保存更改","文本编辑器",JOptionPYES_NO_CANCEL_OPTION,JOptionPWARNING_MESSAGE,null,choices,choices[0]); //保存文件后新建 if(n==0){//若文件存在,保存在原文件中,再新建文件 try{ if(VFmyFxists()){ save(VSmyFileName); // call the save founction myTsetText(""); VIindex++; } else{//若文件不存在,则保存后再新建 myFDlg=new FileDialog(myFrm,"保存文件",FileDSAVE); myFDsetFile(VSmyFileName); myFDshow(); VSmyFileName=myFDDirectory()+myFDFile(); save(VSmyFileName); myTsetText(""); VIindex++; } } catch(Exception ne){} } //不保存文件新建 if(n==1){ myTsetText(""); VIindex++; } //取消新建 if(n==0){return;} } //打开菜单 Open Menu if (ActionCommand()=="打开") { myFDlg=new FileDialog(myFrm,"打开",FileDLOAD); myFDshow(); if (myFDFile()!="") { VFmyFile=new File(myFDDirectory()+myFDFile()); VSmyFileName=myFDDirectory()+myFDFile(); if( VFmyFxists()){ try{ FileReader fr=new FileReader(VFmyFile); BufferedReader br=new BufferedReader(fr); String text; myTsetText(""); while ((text=adLine())!=null) myTappend(text+"/r/n"); lose(); lose(); } catch(IOException ioe){ VStitle="提示"; VSmessage="打开文件出错"; JOptionPshowMessageDialog(myFrm,VSmessage,VStitle,VItype); } } } } //保存菜单 Save Menu if (ActionCommand()=="保存"){ myFDlg=new FileDialog(myFrm,"保存文件",FileDSAVE); myFDsetFile(VSmyFileName); myFDshow(); VSmyFileName=myFDFile(); if(VSmyFileName!=null){ VSmyFileName=myFDDirectory()+myFDFile(); save(VSmyFileName); } } //另存为菜单 SaveAs Menu if (ActionCommand()=="另存为"){ myFDlg=new FileDialog(myFrm,"文件另存为",1); myFDsetFile(VSmyFileName); myFDshow(); VSmyFileName=myFDFile(); if(VSmyFileName!=null){ VSmyFileName=myFDDirectory()+myFDFile(); save(VSmyFileName); } } //退出菜单 exit Menu if (ActionCommand()=="退出") Sxit(0); //编辑 Edit Menu if (ActionCommand()=="剪切"){ //Cut String text =myTSelectedText(); StringSelection selection = new StringSelection(text); myCBsetContents(selection, null); myTplaceRange("",myTSelectionStart(),myTSelectionEnd()); } if (ActionCommand()=="复制"){ //copy String text=myTSelectedText(); if(text!=null){ StringSelection selection=new StringSelect
291 评论(10)

相关问答