TDS-Java主控编写文档
使用Javadoc注释你的代码生成规范的文档
使用Javadoc注释你的代码生成规范的文档Javadoc是一种用于生成规范的Java代码文档的工具。
它不仅提供了代码的注释和解释,还可以生成HTML格式的代码文档。
在这篇文章中,我将解释如何使用Javadoc注释你的代码,并生成规范的文档。
首先,我们需要创建一个包含Java代码的项目。
在代码中,我们需要使用特殊的注释格式来为每个类、方法和字段提供相关的文档。
这些注释应该包含关于代码用途、功能、参数和返回值的详细说明。
这些注释将成为Javadoc生成文档的基础。
以下是一个示例代码来说明如何使用Javadoc注释:```/***这是一个计算两个数之和的方法*/public static int add(int a, int b)return a + b;```在代码中使用了Javadoc注释后,我们需要使用Javadoc工具来生成文档。
我们可以通过在命令行使用`javadoc`命令来执行此操作。
以下是一个使用Javadoc工具生成文档的示例命令:```javadoc -d docs -author -version src/```当我们执行上面的命令后,Javadoc工具将会解析所有的源代码文件,并生成HTML格式的代码文档。
生成的文档将会包含每个类、方法和字段的Javadoc注释。
我们可以在浏览器中打开生成的`index.html`文件来查看文档。
总结起来,Javadoc是一个非常有用的工具,可以帮助我们生成规范的Java代码文档。
通过使用特殊格式的注释,我们可以详细解释代码的功能和用法。
生成的文档可以有效地帮助其他开发人员了解代码的用途和使用方式。
因此,在开发Java项目时,我们应该养成良好的Javadoc注释习惯,并使用Javadoc工具生成规范的文档。
这样不仅可以提高代码的可读性和可维护性,还可以促进团队合作和知识共享。
JAVA开发规范文档
Java 开发规范文档一:目的使本组织能以标准的,规范的方式设计和编码。
通过建立编码规范,以使每个开发人员养成良好的编码风格和习惯;并以此形成开发小组编码约定,提高程序的可靠性,可读性,可修改性,可维护性和一致性等,增进团队间的交流,并保证软件产品的质量。
二:代码组织与风格1:长度:为便于阅读和理解,单个函数的有效代码长度当尽量在100行以内(不包括注释行),当功能模块过大时往往采用使用子函数将相应的功能抽取出来,这也有利于提高代码的重用度。
2:单个类不宜过大,当出现此类过大时当将相应功能的代码重构到其他类中,通过组合等方式来调用,建议单个类的长度包括注释行不超过1500行。
尽量避免使用大类和长方法。
3:间隔:类,方法及功能块间等应以空行相隔,以增加可读性,但不得有无规则的大片空行。
操作符两端应当各空一个字符以增加可读性。
三:注释1:注释应该增加代码的清晰度。
代码注释的目的时要使代码更易于被其他开发人员等理解。
2:保持注释的简洁。
3:注释信息应该包括代码的功能。
4:除变量定义等较短语句的注释使用行尾注释外,其他注释当避免使用行尾注释。
5:JavaDoc规范对类,方法,变量等注释需要符合javadoc规范,对每个类,方法都应详细说明其功能条件,参数等。
类注释中应当包含版本和作者信息。
1)类,接口注释在类,接口定义之前当对其进行注释,包括类,接口的目的,作用,功能,继承于何种父类,实现的接口,实现的算法,使用方法,示例程序等。
2)方法注释以明确该方法功能,作者,各参数含义以及返回值等。
3)其他注释应对重要的变量及不易理解的分支条件表达式加以注释,以说明其含义等。
四命名规范1:对变量,类,接口及包的命名应该使用英文。
严禁使用汉语拼音及不相关单词命名。
更不可以使用汉字来进行命名。
采用大小写混合,提高名字的可读性。
一般应该采用小写字母,但时类和接口的名称的首字母,以及任何中间单词的首字母应该大写。
包名全部小写。
教你用JAVA写文本编辑器(一)
教你⽤JAVA写⽂本编辑器(⼀)⽬录前⾔思路分析:具体实现总结前⾔这⾥⽤swing ,awt写的。
我们⼤概要做成⼀个电脑的记事本那样的⼀个编辑器。
可以调整字体,字号,颜⾊。
能够打开、保存⽂件,新建窗⼝,点击退出,还有⼀个关于介绍的窗⼝。
整体看起来功能不是很多,只要⼀部分⼀部分的去完成就很好办了。
思路分析:⼀、⾸先我们的⽬标模型就是电脑的记事本,打开编辑器可以看到结构:1、标题显⽰在窗⼝的title。
2、下⾯⼀⾏是⼀个⼯具栏,⾥⾯有⽂件、编辑、格式、查看、帮助。
这⾥我们就选⽂件、格式、帮助来做,⼤致的情况都差不多。
3、再下⾯就是⼀个屏占⽐超⾼的 TextArea了,他还有个特点是有滚动条。
⼆、⽂件菜单栏:这⾥有新建窗⼝,打开⽂件,保存⽂件,还有⼀个退出按钮。
其中的难点主要在打开和保存⽂件上,为什么呢。
因为我们点开打开和保存两个按钮,都会跳出⼀个⽂件选择的Dialog。
这东西是不是要⾃⼰画,如果要⾃⼰画,那就相当⿇烦了,要对磁盘进⾏遍历,然后贴到窗⼝中什么的。
所幸我们有封装好的⼯具JFileChooser。
三、格式菜单:弹出⼀个窗⼝,有⽂字的各种形式的属性选择,中间⼀个展⽰⽤的⽂本区域,下⾯两个按钮,确定即保存格式,修改主窗⼝的属性。
取消则关闭窗⼝,不改变属性。
四、帮助菜单:这个是最简单的,因为只有⼀个弹窗,⽤于显⽰⽂本,所以我们打算从这⾥开始做。
OK,对每个部分分析了⼀下感觉清晰了很多。
接下来我们来第⼀步,把主窗⼝画出来。
具体实现画主窗⼝,并把菜单栏按照各⾃的关系建好:这⾥⽤到JMenuBar,JMenu、JMenuItem。
顾名思义⼀个是菜单栏,⼀个是菜单,⼀个事菜单项。
下⾯看代码:public class test5 extends JFrame{private JMenuBar menuBar;//菜单栏private JMenu menu_File,menu_Edit,menu_Help,menu_Format;//菜单栏内的菜单private JMenuItem item_new,item_open,item_save,item_exit;//对于file菜单的⼦项private JMenuItem item_undo,item_cut,item_copy,item_stick,item_delete;//对于edit菜单的⼦项private JMenuItem item_about;//对于help菜单的⼦项private JMenuItem item_word_format;public test5() {initMenuBar();this.setJMenuBar(menuBar);this.setSize(800,600);this.setTitle("⾃定义⽂本编辑器");this.setVisible(true);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}/*** 对menubar进⾏初始化,这⾥有⼀些⼩的快捷⽅式的设置* ⼤家可以考虑对所有的组件都设置⼀下* 两种形式:* menu_File.setMnemonic('f'); 对menu* item_word_format.setAccelerator(KeyStroke.getKeyStroke('F',java.awt.Event.CTRL_MASK,false)); 对item*/public void initMenuBar() {menuBar = new JMenuBar();menu_File = new JMenu("⽂件(F)");menu_File.setMnemonic('f');//f+alt打开item_new = new JMenuItem("新建");item_open = new JMenuItem("打开");item_save = new JMenuItem("保存");item_exit = new JMenuItem("退出");menu_File.add(item_new);menu_File.add(item_open);menu_File.add(item_save);menu_File.add(item_exit);//File 菜单menu_Edit = new JMenu("编辑(E)");menu_Edit.setMnemonic('e');item_undo = new JMenuItem("撤销");item_cut = new JMenuItem("剪切");item_copy = new JMenuItem("复制");item_stick = new JMenuItem("粘贴");item_delete = new JMenuItem("删除");menu_Edit.add(item_undo);menu_Edit.add(item_cut);menu_Edit.add(item_copy);menu_Edit.add(item_stick);menu_Edit.add(item_delete);//Edit 菜单menu_Help = new JMenu("帮助(H)");menu_Help.setMnemonic('h');item_about = new JMenuItem("关于");menu_Help.add(item_about);//Help 菜单menu_Format = new JMenu("格式(O)");menu_Format.setMnemonic('o');item_word_format = new JMenuItem("字体(F)");item_word_format.setAccelerator(KeyStroke.getKeyStroke('F',java.awt.Event.CTRL_MASK,false));//给item添加快捷键menu_Format.add(item_word_format);menuBar.add(menu_File);menuBar.add(menu_Edit);menuBar.add(menu_Format);menuBar.add(menu_Help);}public static void main(String[] args) {test5 t5 = new test5();}}接下来就是菜单栏下⾯的⽂本编辑区域了,这⾥只需要⽤⼀个JTextArea就可以了,别忘了还有滚动条(JScrollPane):public class test5 extends JFrame{......private static JTextArea edit_text_area;//private JTextArea edit_text_area;//编辑区域private JScrollPane scroll_bar;//可滚动的pane ⾥⾯添加edit_text_area就可以变为⼀个可以滚动的⽂本框,JScrollPane是⼀个pane,同时可以设置⽅向public test5() {initMenuBar();initEditArea();this.setJMenuBar(menuBar);this.setSize(800,600);this.add(scroll_bar);this.setTitle("⾃定义⽂本编辑器");this.setVisible(true);this.setLocationRelativeTo(null);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}/*** 初始化编辑区域* ⽤scrollpane装textarea* 同时对pane设置⽅向*/public void initEditArea() {edit_text_area = new JTextArea();scroll_bar = new JScrollPane(edit_text_area);scroll_bar.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);}public void initMenuBar() {...}public static void main(String[] args) {test5 t5 = new test5();}}为了节省篇幅,我就把重复出现的代码删除⽤...代替了,相信没有影响⼤家的观看效果。
Java编辑器模块概要设计文档
JavaEditor模块设计文档一、引言1.1编写目的本文档是为了工具开发人员能系统化地进行开发提供思路和方法,避免大量的重复工作,为测试人员能快速查阅系统的设计思路和具体功能,对系统的整体架构有大概的了解。
1.2参考资料Java编辑器源码二、任务概述2.1功能描述功能列表1.关键字都呈红色高亮显示,注释为绿色高亮,输出引号内容和声明的变量为蓝色高亮,其他内容显示常规黑色;2.左侧标尺中可右键显示行号,添加断点,根据函数行折叠代码,打开当前编辑器的属性框等;3.编写过程中不断进行语法验证,检测的错误代码带高亮下划线,得到光标时弹出提示菜单;4.编辑过程中,使用未引入的包,高亮下划线提示,获取光标提供导入包选项;5.根据左括号,回车自动添加右括号,编写代码时,根据固定格式内嵌缩进;6.双击时,自动匹配括号内容选中,如果不是在括号左右双击,则选中单词;7.在编辑区域中提供右键菜单,可实现复制、粘贴、剪切、撤销、恢复、缩进、打开、保存、运行、属性框等功能;8.保存的文件,编辑器中所有属性都能保存,再次打开与保存前的状态相一致。
包含功能:编辑、打开保存、语法高亮、内容辅助。
2.2运行环境Eclipse运行环境三、功能实现3.1 设计问题●格式化JavaEditor是怎么样将文本安排到行和列上的?文本的缩进如何按定义的规则实现,哪些对象负责执行不同的格式策略?●修饰用户界面JavaEditor的用户见面包括滚动条和边界。
这些修饰有可能随着用户界面的演化而发生变化,因此在不影响其他方面的情况下,能自由增加和除去这些修饰就十分重要了。
●用户操作用户通过不同的用户界面来控制JavaEditor 包括按钮和下拉菜单等。
●智能辅助JavaEditor定义不同关键字的颜色,如注释的颜色、字符串的颜色等。
当输入代码时,可以在提示java语法中内置对象的内容提示功能。
本项目中已包含的类:3.2 格式化内容格式化格式化就是按照特定的规则对文档重新排版使之更具可读性。
Java编辑器模块概要设计文档
JavaEditoi模块设计文档一、引言1.1 编写目的本文档是为了工具开发人员能系统化地进行开发提供思路和方法,避免大量的重复工作,为测试人员能快速查阅系统的设计思路和具体功能,对系统的整体架构有大概的了解。
1.2 参考资料Java编辑器源码二、任务概述2.1 功能描述功能列表1.关键字都呈红色高亮显示,注释为绿色高亮,输出引号内容和声明的变量为蓝色高亮,其他内容显示常规黑色;2.左侧标尺中可右键显示行号,添加断点,根据函数行折叠代码,打开当前编辑器的属性框等;3.编写过程中不断进行语法验证,检测的错误代码带高亮下划线,得到光标时弹出提示菜单;4.编辑过程中,使用未引入的包,高亮下划线提示,获取光标提供导入包选项;5.根据左括号,回车自动添加右括号,编写代码时,根据固定格式内嵌缩进;6.双击时,自动匹配括号内容选中,如果不是在括号左右双击,则选中单词;7.在编辑区域中提供右键菜单,可实现复制、粘贴、剪切、撤销、恢复、缩进、打开、保存、运行、属性框等功能;8•保存的文件,编辑器中所有属性都能保存,再次打开与保存前的状态相一致包含功能:编辑、打开保存、语法高亮、内容辅助。
2.2运行环境Eclipse运行环境三、功能实现3.1设计问题格式化JavaEditor是怎么样将文本安排到行和列上的?文本的缩进如何按定义的规则实现,哪些对象负责执行不同的格式策略?修饰用户界面JavaEditor的用户见面包括滚动条和边界。
这些修饰有可能随着用户界面的演化而发生变化,因此在不影响其他方面的情况下,能自由增加和除去这些修饰就十分重要了。
用户操作用户通过不同的用户界面来控制JavaEditor包括按钮和下拉菜单等。
智能辅助JavaEditor定义不同关键字的颜色,如注释的颜色、字符串的颜色等。
当输入代码时,可以在提示java语法中内置对象的内容提示功能。
3.2格式化内容格式化格式化就是按照特定的规则对文档重新排版使之更具可读性。
java文本编辑器实验报告
Java考核课程名称Java程序设计题目名称文本编辑器的设计与实现学生学院计算机学院专业班级计算机17(2)班学号**********学生姓名李泽豪指导教师赵锐2018 年12 月11 日一、课程题目编程实现一个文本编辑器使其具有新建、打开、保存,编辑(查找、替换、大小写转换等)、统计(字数、行数、字符数等)、格式(字体设置、字体大小、字体颜色、背景颜色等)等功能。
要求:基于JFrame窗体设计、使用菜单进行功能选择。
提示:字体颜色,背景颜色的设置,可使用javax.swing包中的JColorChooser类的静态方法showDialog()调用标准颜色对话框来完成;文件操作可通过javax.swing包中JColorChooser类中的showSaveDialog()、showOpenDialog()方法调用标准的的文件对话框来完成。
二、题目分析与设计2.1开发环境使用Eclipse开发软件2.2需求分析简单的文本编辑器提供给用户基本纯文本的文字编辑功能,能够读取计算机本地磁盘中的文本内容,将用户文本导入到磁盘中之中,以及实现基本的字体设置(字体,字号,字体颜色)简单的编辑字体的功能,以及统计(字数,行数,字符数),增强视觉体验的背景颜色功能等,简单而实用。
而网络上的各种编辑器,有的功能不足(如自带的记事本),而有些编辑器功能太繁杂,仅以日常应用方面来说,一个文本编辑器只需要简单的功能就够了。
2.3功能构架本程序要构建的文本编辑器按照题目要求,分为四个方面:(1)“文件”菜单:包括“新建”并提示是否保存已编辑内容,“打开”计算机本地磁盘的文本文件,主动“保存”自己已经编辑好的内容到电脑的磁盘或“另存为”新的文件之中,以及“退出”并提示是否保存已编辑的内容。
(2)“编辑”菜单:包括对已编辑文本的一个“查找与替换”功能,对已编辑英文文本的一个“大小写转换”功能。
(3)“格式”菜单:实现对文本的“字体”设置,“字体大小”以及“字体颜色”,还有能优化视觉体验的“背景颜色”的改变。
Java写的简单文本编辑器代码(word文档良心出品)
import java.awt.*;import java.awt.event.*;import java.io.*;public class Notepad /*implements ActionListener , MouseListener , MouseMotionListener , WindowListener , ItemListener , KeyListener, TextListener */{//成员变量private Frame mainFrame;//主框架private MenuBar mb ; //菜单条private Menu mFile , mEdit , mFormat , mHelp ; //菜单:文件,编辑,格式,帮助private MenuItem miNew , miOpen , miSave , miSaveAs , miExit ;//文件菜单项:新建,打开,保存,另存为,退出private MenuItem miCut , miCopy , miPaste , miDelete ;//编辑菜单项:剪切,复制,粘贴,删除private MenuItem miFont, miLowtoCapital, miCapitaltoLow,miEncrypt, miDisencrypt;//格式菜单项:字体private MenuItem miAboutNotepad;//帮助菜单项:关于记事本private TextArea ta;//文本区private String tempString;//临时字符串,用于存储需要复制粘贴的字符串private boolean textValueChanged = false;private int id_font ;//字体String fileName = "";//上次保存后的文件名和地址//构造函数public Notepad(){//框架mainFrame = new Frame ("Notepad v0.99 by Launching");mb = new MenuBar ();ta = new TextArea (30 ,60);ta.setFont( new Font ( "Times New Rome" , Font.PLAIN , 15));ta.setBackground(new Color(0 , 250 , 200));//菜单条mFile = new Menu ( "文件");mEdit = new Menu ( "编辑");mFormat = new Menu ("格式t");mHelp = new Menu ("帮助");//"文件"miNew = new MenuItem ("新建");miOpen = new MenuItem ("打开");miSave = new MenuItem ("保存");miSaveAs = new MenuItem ("另存为");miExit = new MenuItem ("退出");//"编辑"miCut = new MenuItem ("剪切");miCopy = new MenuItem ("复制");miPaste = new MenuItem ("粘贴");miDelete = new MenuItem ("删除");//"格式"miFont = new MenuItem ("Font");miLowtoCapital = new MenuItem("Low to Capital"); miCapitaltoLow = new MenuItem("Capital to Low"); miEncrypt = new MenuItem("Encrypt");miDisencrypt = new MenuItem("Disencrypt");//"帮助"miAboutNotepad = new MenuItem ("关于 Notepad");//添加文件菜单项mFile.add(miNew);mFile.add(miOpen);mFile.add(miSave);mFile.add(miSaveAs);mFile.add(miExit);//添加编辑菜单项mEdit.add(miCut);mEdit.add(miCopy);mEdit.add(miPaste);mEdit.add(miDelete);//添加格式菜单项mFormat.add(miFont);mFormat.add(miLowtoCapital);mFormat.add(miCapitaltoLow);mFormat.add(miEncrypt);mFormat.add(miDisencrypt);//添加帮助菜单项mHelp.add(miAboutNotepad);//菜单条添加菜单mb.add(mFile);mb.add(mEdit);mb.add(mFormat);mb.add(mHelp);//框架添加菜单条mainFrame.setMenuBar( mb );//初始字符串赋为空tempString = "";//添加文本区mainFrame.add(ta, BorderLayout.CENTER);mainFrame.setSize(800 , 500);mainFrame.setLocation( 100 ,100);// 起始位置mainFrame.setResizable(true);//不可更改大小mainFrame.setVisible(true);//mainFrame.pack();/////////////////////////增加监视器////////////////////////主框架mainFrame.addWindowListener(new WindowAdapter (){ //关闭窗口public void windowClosing(WindowEvent e) {System.exit(0);}});//文本区ta.addKeyListener( new KeyAdapter(){public void KeyTyped(KeyEvent e){textValueChanged = true ; //键盘按键按下即导致文本修改}});////////////////"文件"菜单:////////////////////////新建miNew.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){ta.replaceRange("", 0 , ta.getText().length()) ;//清空文本区的内容fileName = "";//文件名清空}});//打开miOpen.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e) {FileDialog d=new FileDialog(mainFrame , "open file" ,FileDialog.LOAD );//打开文件对话框d.addWindowListener( new WindowAdapter(){ //关闭文件对话框窗口public void windowClosing(WindowEvent ee){System.exit(0);}});d.setVisible(true);File f = new File( d.getDirectory()+d.getFile() ); //建立新文件fileName = d.getDirectory()+d.getFile();//得到文件名char ch[] = new char [(int)f.length()];///用此文件的长度建立一个字符数组try//异常处理{//读出数据,并存入字符数组ch中BufferedReader bw = new BufferedReader( new FileReader(f) ); bw.read(ch);bw.close();}catch( FileNotFoundException fe ){System.out.println("file not found");System.exit(0);}catch( IOException ie){System.out.println("IO error");System.exit(0);}String s =new String (ch);ta.setText(s);//设置文本区为所打开文件的内容}});//保存miSave.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e) {if( fileName.equals("") ){ //如果文件没有被保存过,即文件名为空FileDialog d=new FileDialog(mainFrame , "save file" , FileDialog.SAVE );//保存文件对话框d.addWindowListener( new WindowAdapter(){ //关闭文件对话框窗口public void windowClosing(WindowEvent ee){System.exit(0);}});d.setVisible(true);String s = ta.getText();//得到所输入的文本内容try//异常处理{File f = new File( d.getDirectory()+d.getFile());//新建文件fileName = d.getDirectory()+d.getFile();//得到文件名BufferedWriter bw = new BufferedWriter( new FileWriter (f));//输入到文件中bw.write(s , 0 , s.length());bw.close();}catch(FileNotFoundException fe_){System.out.println("file not found");System.exit(0);}catch( IOException ie_){System.out.println(" IO error");System.exit(0);}}else//如果文件已经保存过{String s = ta.getText();//得到所输入的文本内容try//异常处理{File f = new File( fileName );//新建文件BufferedWriter bw = new BufferedWriter( new FileWriter (f));//输入到文件中bw.write(s , 0 , s.length());bw.close();}catch(FileNotFoundException fe_){System.out.println("file not found");System.exit(0);}catch( IOException ie_){System.out.println(" IO error");System.exit(0);}}}});//另存为miSaveAs.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e) {FileDialog d=new FileDialog(mainFrame , "save file" , FileDialog.SAVE );//保存文件对话框d.addWindowListener( new WindowAdapter(){ //关闭文件对话框窗口public void windowClosing(WindowEvent ee){System.exit(0);}});d.setVisible(true);String s = ta.getText();//得到所输入的文本内容try//异常处理{File f = new File( d.getDirectory()+d.getFile());//新建文件BufferedWriter bw = new BufferedWriter( new FileWriter (f));//输入到文件中bw.write(s , 0 , s.length());bw.close();}catch(FileNotFoundException fe_){System.out.println("file not found");System.exit(0);}catch( IOException ie_){System.out.println(" IO error");System.exit(0);}}});//退出miExit.addActionListener( new ActionListener(){ ///退出程序public void actionPerformed(ActionEvent e){System.exit(0);}});////////////////"编辑"菜单://////////////////////剪切miCut.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){tempString = ta.getSelectedText(); ///得到要复制的内容,暂存在tempString中StringBuffer tmp = new StringBuffer ( ta.getText());//临时存储文本int start = ta.getSelectionStart(); //得到要删除的字符串的起始位置int len = ta.getSelectedText().length(); //得到要删除的字符串的长度tmp.delete( start , start+len); ///删除所选中的字符串ta.setText(tmp.toString());//用新文本设置原文本}});//复制miCopy.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){tempString = ta.getSelectedText(); ///得到要复制的内容,暂存在tempString中}});//粘贴miPaste.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){StringBuffer tmp = new StringBuffer ( ta.getText());//临时存储文本int start = ta.getSelectionStart(); //得到要粘贴的位置tmp.insert(start , tempString);//查入要粘贴的内容ta.setText(tmp.toString());//用新文本设置原文本}});//删除miDelete.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){StringBuffer tmp = new StringBuffer ( ta.getText());//临时存储文本int start = ta.getSelectionStart(); //得到要删除的字符串的起始位置int len = ta.getSelectedText().length(); //得到要删除的字符串的长度tmp.delete( start , start+len); ///删除所选中的字符串ta.setText(tmp.toString());//用新文本设置原文本}});////////////////"格式"菜单://////////////////////字体miFont.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){final Dialog d = new Dialog ( mainFrame , "Font");//新建对话框 d.setLocation( 250 ,250);// 起始位置d.setLayout( new BorderLayout());//表格布局//////////////////////////上部分面板Label l_font = new Label ("font");//font标签Panel p_1 = new Panel();p_1.add(l_font);p_1.setVisible(true);//////////////////////////中部分面板List font_list = new List (6 , false);//字体列表//添加字体项目font_list.add("Plain");///普通字体font_list.add("Bold"); ///粗体font_list.add("Italic");//斜体font_list.addItemListener( new MyItemListener_font() ); //字体增加监视器Panel p_2 = new Panel();p_2.add(font_list);p_2.setVisible(true);//////////////////////////下部分面板Button ok = new Button ("OK");ok.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){d.dispose();}});ok.setSize( new Dimension (20 , 5) );Panel p_3 = new Panel();//下部分面板p_3.add(ok);p_3.setVisible(true);//添加三个面板d.add(p_1 , BorderLayout.NORTH);d.add(p_2 , BorderLayout.CENTER);d.add(p_3 , BorderLayout.SOUTH);d.pack();d.addWindowListener( new WindowAdapter(){ //关闭对话框窗口public void windowClosing(WindowEvent ee){d.dispose();}});d.setVisible(true);}});//小写字母转大写miLowtoCapital.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){String s = ta.getText();//得到所输入的文本内容StringBuffer temp = new StringBuffer("");for(int i = 0 ; i<s.length() ; i++){if((int)s.charAt(i)>=97 && (int)s.charAt(i)<=122 ){temp.append((char)((int)s.charAt(i)-32));}elsetemp.append(s.charAt(i));}s = new String(temp);ta.setText(s);}});//大写字母转小写miCapitaltoLow.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){String s = ta.getText();//得到所输入的文本内容StringBuffer temp = new StringBuffer("");for(int i = 0 ; i<s.length() ; i++){if((int)s.charAt(i)>=65 && (int)s.charAt(i)<=90 ){temp.append((char)((int)s.charAt(i)+32));}elsetemp.append(s.charAt(i));}s = new String(temp);ta.setText(s);}});//加密miEncrypt.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){String s = ta.getText();//得到所输入的文本内容StringBuffer temp = new StringBuffer("");for(int i = 0 ; i<s.length() ; i++){if(s.charAt(i)>=40 && s.charAt(i)<=125){if(i%2==0){temp.append((char)(s.charAt(i) + 1 ));}elsetemp.append((char)(s.charAt(i) - 1 ));}elsetemp.append(s.charAt(i));}s = new String(temp);ta.setText(s);}});//解密miDisencrypt.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){String s = ta.getText();//得到所输入的文本内容StringBuffer temp = new StringBuffer("");for(int i = 0 ; i<s.length() ; i++){if(s.charAt(i)>=40 && s.charAt(i)<=125){if(i%2==0){temp.append((char)(s.charAt(i) - 1 ));}elsetemp.append((char)(s.charAt(i) + 1 ));}elsetemp.append(s.charAt(i));}s = new String(temp);ta.setText(s);}});////////////////"帮助"菜单://////////////////////关于记事本miAboutNotepad.addActionListener( new ActionListener(){public void actionPerformed(ActionEvent e){final Dialog d = new Dialog ( mainFrame , "AboutNotepad");//新建对话框TextArea t = new TextArea("\nwelcome to use Notepad " + "\n\n" + "Copyright@Launching " + "\n\n" + "free software" + "\n\n" + "v0.99");//添加标签t.setSize( new Dimension ( 5 , 5));t.setEditable(false);d.setResizable(false);//不可调整大小d.add(t);d.pack();d.addWindowListener( new WindowAdapter(){ //关闭对话框窗口public void windowClosing(WindowEvent ee){d.dispose();}});d.setLocation( 100 ,250);// 起始位置d.setVisible(true);}});}class MyItemListener_font implements ItemListener { //字体监听器public void itemStateChanged(ItemEvent e) {id_font = ((java.awt.List)e.getSource()).getSelectedIndex();switch( id_font){case 0:{ta.setFont(new Font("Times New Roman",Font.PLAIN ,ta.getFont().getSize()) );//普通文字break;}case 1:{ta.setFont(new Font("Times New Roman" ,Font.BOLD ,ta.getFont().getSize()) );//粗体文字break;}case 2:{ta.setFont(new Font("Times New Roman" ,Font.ITALIC ,ta.getFont().getSize()) );//斜体文字break;}}}}//////////////////////主函数//////////////////////////////public static void main(String arg[]){Notepad test = new Notepad(); ///创建记事本}//////////////////////////////////////////////////////////////// }运行效果图:。
java代码设计文档
java代码设计文档Java代码设计文档是用于记录和描述Java程序的设计思路、功能模块、类和方法的用途以及实现细节的文档。
它旨在帮助开发人员和其他相关人员了解和理解Java程序的设计和实现过程。
本文将以一个简单的学生管理系统为例,展示如何编写Java代码设计文档。
# 1. 引言本文档旨在描述学生管理系统的设计和实现细节。
该系统用于管理学生的基本信息、课程信息和成绩信息。
# 2. 系统概述学生管理系统是一个基于Java的桌面应用程序,用于管理学生信息。
它提供了以下功能:- 添加学生信息:包括姓名、学号、性别、年龄等基本信息。
- 添加课程信息:包括课程名称、学分、教师等信息。
- 添加成绩信息:将学生与课程关联,并录入学生的成绩。
- 查询学生信息:根据学号或姓名查询学生的基本信息、课程信息和成绩信息。
- 修改学生信息:可以修改学生的基本信息、课程信息和成绩信息。
- 删除学生信息:可以删除学生的基本信息、课程信息和成绩信息。
# 3. 系统结构学生管理系统由以下几个模块组成:- 学生信息模块:用于管理学生的基本信息。
- 课程信息模块:用于管理课程的基本信息。
- 成绩信息模块:用于管理学生的成绩信息。
- 数据库模块:用于连接和操作数据库,存储和读取学生、课程和成绩信息。
# 4. 类设计## 4.1 学生类学生类表示学生的基本信息,包括姓名、学号、性别和年龄等属性。
它具有以下方法:- 构造方法:用于创建学生对象,初始化学生的基本信息。
- getter和setter方法:用于获取和设置学生的属性值。
## 4.2 课程类课程类表示课程的基本信息,包括课程名称、学分和教师等属性。
它具有以下方法:- 构造方法:用于创建课程对象,初始化课程的基本信息。
- getter和setter方法:用于获取和设置课程的属性值。
## 4.3 成绩类成绩类表示学生的成绩信息,包括学生、课程和成绩等属性。
它具有以下方法:- 构造方法:用于创建成绩对象,初始化成绩的基本信息。
java程序设计与实验指导书
java程序设计与实验指导书Java程序设计与实验指导书Java是一种广泛使用的计算机编程语言,它具有跨平台的特性,能够在多种操作系统上运行。
本指导书旨在帮助学生和开发者了解Java程序设计的基础概念、语法规则以及开发实践,并通过一系列实验来加深对Java编程的理解。
第一章:Java基础1.1 Java语言简介Java是一种面向对象的编程语言,由Sun Microsystems(现属于Oracle公司)于1995年发布。
Java的设计目标是“一次编写,到处运行”,即编写一次代码,可以在任何支持Java虚拟机(JVM)的平台上运行。
1.2 Java开发环境搭建要开始Java编程,首先需要安装Java开发工具包(JDK),并配置环境变量。
接着,可以使用文本编辑器或集成开发环境(IDE)如Eclipse或IntelliJ IDEA来编写Java程序。
1.3 基本语法Java的基本语法包括变量声明、数据类型、运算符、控制结构(如if语句、循环)等。
Java是强类型语言,变量在使用前必须声明其类型。
第二章:面向对象编程2.1 面向对象概念面向对象编程(OOP)是一种编程范式,它使用“对象”来设计软件。
对象可以包含数据(属性)和代码(方法)。
2.2 类和对象类是对象的蓝图,定义了对象的结构和行为。
对象是类的实例。
2.3 封装、继承和多态- 封装:隐藏对象的内部状态和实现细节。
- 继承:允许新类(子类)继承现有类(父类)的属性和方法。
- 多态:允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
第三章:Java核心API3.1 集合框架Java提供了一套丰富的集合类库,包括List、Set、Map等,用于存储和管理数据集合。
3.2 输入输出(I/O)Java的I/O系统允许程序读取和写入数据,包括文件、网络流等。
3.3 异常处理Java使用异常处理机制来处理程序运行中的错误情况。
第四章:Java高级特性4.1 泛型泛型允许在编译时进行类型检查,提高程序的安全性和灵活性。
java开发规范文档
java开发规范文档
以下是一个简单的Java开发规范文档:
1. 命名规范:
- 类名使用首字母大写的驼峰命名法,如:MyClass
- 方法名以小写字母开头的驼峰命名法,如:myMethod
- 变量名使用小写字母开头的驼峰命名法,如:myVariable - 常量名使用全大写字母和下划线的命名法,如:
MY_CONSTANT
2. 缩进和格式:
- 使用4个空格进行缩进
- 在每一行结束后使用分号
- 在大括号的前面留空格,如:if (condition) {
- 在逗号后面留空格,如:int a, b, c;
3. 注释规范:
- 使用JavaDoc格式注释解释类、方法和变量的功能和用法 - 在代码中适当添加注释,解释代码的实现逻辑
4. 异常处理:
- 使用try-catch-finally语句块来处理异常
- 不要使用空的catch块,尽量提供明确的异常处理逻辑
5. 最佳实践:
- 使用面向对象的思想设计代码结构
- 避免使用全局变量,尽量使用局部变量和参数传递数据
- 不要在循环中创建对象,尽量在循环外部创建对象
- 使用合适的数据结构和算法来提高性能
这只是一个简单的Java开发规范文档,实际中可以根据团队的需求和项目的特点进行适当的修改和补充。
JAVA技术架构及开发规范文档
JAVA技术架构及开发规范文档1引言1.1目的通过对系统整体架构和技术规范的描述.为下一步大规模设计开发提供基础和规范。
也希望广大JAVA项目开发的程序猿们提出宝贵的建议.不断完善。
1.2对象与范围架构师.高级工程师.项目经理.项目管理人员,开发人员.测试人员。
1.3概述系统实现方案,以实现功能为主.效率性能为辅. 但设计兼顾未来性能的扩展,以减少未来重构的工作量。
wcbapp按逻辑分为两层.第一层用户服务接入. 第二层内部服务。
第一层项目不分模块,以二级目录形式表示不同模块,第二层根据不同服务分模块,第一层和第二层之间使用hessian通信。
第一层和第二层独立部署.第二层的不同模块也可以独立部署。
下项目考虑第一层分模块的二级域名独立部署. 并实现单点登荥。
web app采用集群负载均衡,数据库采用负载均衡和读写分离.以满足一定的性能需求。
文档描述了各层结构和模块使用的技术和框架。
最后描述了开发的规范和用到的开发工具。
文档只是描述了项目的架构.2系统架构图系统架构如下3层次和模块3.1前端负载均衡Nginx是一个口碑很好的开源免费WEB服务器,国内很多大型网站都转选Nginx平台.比如將讯,豆瓣等。
Nginx可以实现动靜分离和web app的负载均衡。
3.1.1动静分离动靜分离可以很好得分担服务器的负载,有两种方式实现动靜分离。
1. 使用2级域名,配置专门的靜态文件服务器。
2. 利用Nginx的url转发功能,把静态请求转发到靜态服务器或在Nginx本地込理.动态请求转发到应用服务器。
我们目前部署上采用第二种方式.同时也实现第一种方式。
系统可以配置动态服务器地址和静态服务器地址,在生成页面时获取这两个地址.对图片、js脚本、css和靜态页面使用静态配置生成url,对ajax清求和动态页面使用动态服务器地址生成urlo3.1.2负载均衡Nginx可以配置upstream服务器组,实现组内的负载均衡。
Java编辑器模块概要设计文档
Java编辑器模块概要设计文档JavaEditoi模块设计文档一、引言1.1 编写目的本文档是为了工具开发人员能系统化地进行开发提供思路和方法,避免大量的重复工作,为测试人员能快速查阅系统的设计思路和具体功能,对系统的整体架构有大概的了解。
1.2 参考资料Java编辑器源码二、任务概述2.1 功能描述功能列表1.关键字都呈红色高亮显示,注释为绿色高亮,输出引号内容和声明的变量为蓝色高亮,其他内容显示常规黑色;2.左侧标尺中可右键显示行号,添加断点,根据函数行折叠代码,打开当前编辑器的属性框等;3.编写过程中不断进行语法验证,检测的错误代码带高亮下划线,得到光标时弹出提示菜单;4.编辑过程中,使用未引入的包,高亮下划线提示,获取光标提供导入包选项;5.根据左括号,回车自动添加右括号,编写代码时,根据固定格式内嵌缩进;6.双击时,自动匹配括号内容选中,如果不是在括号左右双击,则选中单词;7.在编辑区域中提供右键菜单,可实现复制、粘贴、剪切、撤销、恢复、缩进、打开、保存、运行、属性框等功能;8?保存的文件,编辑器中所有属性都能保存,再次打开与保存前的状态相一致包含功能:编辑、打开保存、语法高亮、内容辅助。
2.2运行环境Eclipse运行环境三、功能实现3.1设计问题格式化JavaEditor是怎么样将文本安排到行和列上的?文本的缩进如何按定义的规则实现,哪些对象负责执行不同的格式策略?修饰用户界面JavaEditor的用户见面包括滚动条和边界。
这些修饰有可能随着用户界面的演化而发生变化,因此在不影响其他方面的情况下,能自由增加和除去这些修饰就十分重要了。
用户操作用户通过不同的用户界面来控制JavaEditor包括按钮和下拉菜单等。
智能辅助JavaEditor定义不同关键字的颜色,如注释的颜色、字符串的颜色等。
当输入代码时,可以在提示java语法中内置对象的内容提示功能。
3.2格式化内容格式化格式化就是按照特定的规则对文档重新排版使之更具可读性。
java程序流程控制实验过程及步骤
java程序流程控制实验过程及步骤下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!Java程序流程控制实验过程及步骤一、实验简介Java是一种广泛应用的编程语言,掌握其流程控制对编程学习至关重要。
作业指导书Java编程入门
作业指导书Java编程入门作业指导书:Java编程入门一、引言Java是一种强大而广泛应用的编程语言,被用于开发多种类型的应用程序和平台。
本指导书旨在为初学者提供一个简明的入门指南,帮助您快速掌握Java编程的基础知识和技巧。
二、基础知识1. Java的概述Java是一种跨平台的面向对象编程语言,由SUN公司于1995年推出。
Java的设计初衷是为了解决嵌入式系统开发中碎片化语言的问题。
Java具有简单、灵活、安全、高性能等特点,广泛应用于Web开发、移动应用、大数据处理等领域。
2. Java开发环境的搭建在开始学习Java编程之前,您需要搭建Java开发环境。
首先,下载并安装Java开发工具包(JDK),然后配置Java环境变量。
接下来,您可以选择一个集成开发环境(IDE)来进行编码,如Eclipse、IntelliJ IDEA等。
3. 基本语法Java基本语法包括数据类型、变量、运算符、控制语句等。
了解这些基础知识是编写Java程序的基础。
例如,Java的数据类型包括整型、浮点型、字符型、布尔型等。
变量可以用来存储数据,运算符可以进行加减乘除等数学运算,控制语句可以控制程序的执行流程。
4. 面向对象编程Java是一种面向对象的编程语言,面向对象编程的核心概念是类和对象。
类是一种代码模板,用于创建对象。
对象是一个具体的实例,它具有自己的属性和行为。
学习面向对象编程可以更好地组织代码和提高代码的可维护性。
三、核心概念1. 方法和函数方法是Java中一个重要的概念,它用于组织和封装代码。
方法可以用来执行某个特定的任务,并可以接受输入参数和返回结果。
在Java中,也可以使用函数(Function)来执行类似的功能。
2. 类和对象类是Java中的一个基本组织单位,它由属性和方法组成。
属性用于描述对象的状态,方法用于描述对象的行为。
对象是类的一个实例,通过创建对象可以使用类的属性和方法。
3. 继承和多态继承是面向对象编程中一种重要的概念,它允许一个类继承另一个类的属性和方法。
Java代码编写规范
Java代码编程格式规范代码编程格式规范 Java代码编程格式规范目录1前言 (5)2适用范围 (5)3命名规范 (5)3.1 P ACKAGE 的命名 (5)3.2 C LASS 的命名 (5)3.3 C LASS 成员的命名 (5)3.4 S TATIC F INAL 变量的命名 (6)3.5 前后台变量名称 (6)3.6 参数的命名 (6)3.7 数组的命名 (6)3.8 方法的参数 (6)3.9 缩写 (6)3.10 标识符命名中应注意的问题 (7)3.10.1除局部循环变量外变量名禁止取单个字符 (7)3.10.2不用数字定义名字 (7)3.10.3用正确的反义词组命名 (7)3.10.4避免使用 (8)4样式 (8)4.1 J A V A 文件样式 (8)4.1.1版权信息 (8)4.1.2Package/Imports (9)4.2 C LASS的样式 (9)4.2.1Class的定义 (9)4.2.2Class Fields (9)4.2.3构造函数 (10)4.2.4克隆方法 (10)4.2.5类成员变量和方法的编写顺序 (11)4.2.6main 方法 (11)4.3 代码样式 (11)5注释 (11)5.1 一般情况下 (11)5.2 常规注释标记说明 (11)5.2.1@since (12)5.2.2@deprecated (12)5.2.3@see (12)5.2.4@link (13)5.3 类和接口注释说明 (13)5.4 方法注释说明 (13)6书写格式规范 (14)6.1 代码编写规范 (14)6.1.1缩进 (14)6.1.2页宽 (14)6.1.3空行 (15)6.1.4空格的使用 (15)6.1.5{}的用法 (16)6.1.6if等语句写法 (17)6.1.7循环、判断等语句 (17)6.1.8参数划分 (18)6.1.9一行只写一条语句 (19)6.2 变量编写规范 (19)6.2.1公共变量 (19)6.2.2局部变量 (20)6.3 程序编写规范 (20)6.3.1exit() (20)6.3.2异常 (20)6.3.3垃圾收集 (20)6.3.4final 类 (20)6.3.5访问类的成员变量 (21)7编程技巧 (21)7.1 一般性原则 (21)7.1.1检查所有参数输入的有效性。
java实现简易文本编辑器
java实现简易文本编辑器importjava.awt.某; importjava.awt.event.某; importjava 某.wing.某; importjava某.wing.event.某; importjava.util.某; importjava.io.某; importjava某.wing.filechooer.某; importjava某.wing.filechooer.FileFilter; importjava.awt.datatranfer.某; publicclaTe某te某tendJFrame { Te某tAreaarea; Stringname=null; Stringboard=null; privateClipboar dcb; publicTe某t()throwE某ception { etTitle("记事本"); Toolkitkit=Toolkit.getDefaultToolkit(); Imageimg=kit.getIm age("01.jpg"); etIconImage(img); JMenuBarjmb=newJMenuBar(); a dd(jmb); etJMenuBar(jmb); JMenufile=newJMenu("文件"); JMenuedit=newJMenu("编辑"); JMenuItemrebuild=newJMenuItem("新建"); JMenuItemave=newJMenuItem("保存"); JMenuItemopen=newJMenuItem("打开"); JMenuItemanotherSave=newJMenuItem("另存为"); file.add(rebuild); file.add(ave); file.add(open); file.a dd(anotherSave); rebuild.etAccelerator(KeyStroke.getKeyStroke(" ctrlN")); open.etAccelerator(KeyStroke.getKeyStroke("ctrlO")); ave.etAccelerator(KeyStroke.getKeyStroke("ctrlS")); anotherSa ve.etAccelerator(KeyStroke.getKeyStroke("ctrlA")); area=newTe 某tArea(); add(area); //JScrollPanecroldPane=newJScrollPane(area );//设置滚动轴//add(croldPane); ave.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { try{ aveTe某t(); }catch(E某ceptione某) { } } }); open.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { try{ openTe某t(); }catch(E某ceptione某) { } } }); rebuild.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { try{ area.etTe 某t(""); name=null; }catch(E某ceptione某) {} } }); anotherSave.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { anotherSaveTe 某t(); } }); JMenuItemcut=newJMenuItem("剪切"); JMenuItemcopy=newJMenuItem("复制"); JMenuItemplater=newJMenuItem("粘贴"); JMenuItemall=newJMenuItem("全选"); edit.add(cut); edit.add(copy); edit.add(plater); edit.ad d(all); cut.etAccelerator(KeyStroke.getKeyStroke("ctrl某")); copy.etAccelerator(KeyStroke.getKeyStroke("ctrlC")); plat er.etAccelerator(KeyStroke.getKeyStroke("ctrlV")); all.etAccele rator(KeyStroke.getKeyStroke("ctrlA")); cb=Toolkit.getDefaultTo olkit().getSytemClipboard(); cut.addActionLitener(newActionLite ner()//剪切{ publicvoidactionPerformed(ActionEvente) { board=area.ge tSelectedTe某t(); cb.etContent(newStringSelection(board),null); area.replaceRange("",area.ge tSelectionStart(),area.getSelectionEnd()); } }); copy.addActionLitener(newActionLitener()//复制{ publicvoidactionPerformed(ActionEvente) { board=area.getSelectedTe某t(); cb.etContent(newStringSelection(board),null); } }); pla ter.addActionLitener(newActionLitener()//粘贴{ publicvoidactionPerformed(ActionEvente) { try{ Tranfer ablecontent=cb.getContent(null); Stringt=(String)content.getTra nferData(DataFlavor.tringFlavor); area.replaceRange(t,area.getS electionStart(),area.getSelectionEnd()); }catch(E某ceptione 某) {} } }); all.addActionLitener(newActionLitener()//全选{ publicvoidactionPerformed(ActionEvente) { area.etSelect ionStart(0); area.etSelectionEnd(area.getTe某t().length()); } }); JMenuhelp=newJMenu("帮助"); JMenuItemabout=newJMenuItem("关于"); help.add(about); about.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { JFrameframe=new JFrame("关于"); frame.etSize(150,100); frame.etLocation(400,300); JTe某tAreaarea1=newJTe某tArea("制作人:杨杰\n制作时间:2022.8.03"); frame.add(area1); frame.etViible(true); } }); jmb.add(file); jmb.add(edit); jmb.add(help); etSize(600,400);etLocation(300,200); etViible(true); etDefaultCloeOperation( JFrame.E某IT_ON_CLOSE); } publicvoidopenTe某t()//打开{ JFileChooerchooer=newJFileChooer(); FileNameE某tenionFilterfilter=newFileNameE某tenionFilter("File","t某t","java"); chooer.etFileFilter(filter); chooer.etCurrentDirec tory(newFile(".")); intreult=chooer.howOpenDialog(Te某t.thi); if(reult==JFileChooer.APPROVE_OPTION) { name=chooer.g etSelectedFile().getPath(); etTitle(name); try{ BufferedReade rin=newBufferedReader(newFileReader(name)); Stringline=null; S tringdata=""; while((line=in.readLine())!=null) { if(data=="" ) { data=data+line; } ele { data=data+"\n"+line; } } ar ea.etTe某t(data); in.cloe(); }catch(E某ceptione某) { } } } publicvoidaveTe某t()//保存{ if(name==null) { JFileChooerchooer=newJFileChooer(); F ileNameE某tenionFilterfilter=newFileNameE某tenionFilter("File","t某t","java"); chooer.etFileFilter(filter); chooer.etCurrentDirec tory(newFile(".")); intreult=chooer.howSaveDialog(Te某t.thi); if(reult==JFileChooer.APPROVE_OPTION) { name=chooer.g etSelectedFile().getPath(); try{ OutputStreamout=newFileOutput Stream(name); Stringdata=area.getTe某t(); out.write(data.getByte()); out.cloe(); }catch(E某ceptione某) { } } } ele { try{ OutputStreamout=newFileOutputStre am(name); Stringdata=area.getTe某t() ; out.write(data.getByte()); out.cloe(); }catch(E某ceptione某) { } } } publicvoidanotherSaveTe某t()//另存为{ JFileChooerchooer=newJFileChooer(); FileNameE某tenionFilterfilter=newFileNameE某tenionFilter("File","t某t","java"); chooer.etFileFilter(filter); chooer.etCurrentDirec tory(newFile(".")); intreult=chooer.howSaveDialog(Te某t.thi); if(reult==JFileChooer.APPROVE_OPTION) { name=chooer.g etSelectedFile().getPath(); try{ OutputStreamout=newFileOutput Stream(name); Stringdata=area.getTe某t(); out.write( data.getByte()); out.cloe(); }catch(E某ceptione某) { } } } publictaticvoidmain(String[]arg)throwE 某ception { newTe某t(); } }。
java程序设计文档模板
d.对使用的逻辑所加的注释等等
限制条件
说明本程序运行中所受到的限制条件。
测试计划
说明对本程序进行单体测试的计划,包括对测试的技 术要求、输入数据、预期结果、进度安排、人员职责、设备 条件驱动程序及桩模块等的规定。
篇二:java程序设计报告
Course:Java programming report
接口
用图的形式说明本程序所隶属的上一层模块及隶属于 本程序的下一层模块、子程序,说明参数赋值和调用方式, 说明与本程序相直接关联的数据结构 (数据库、 数据文卷)。
存储分配
根据需要,说明本程序的存储分配。
注释设计
说明准备在本程序中安排的注释,如:a. 加在模块 首部的注释;b. 加在各分枝点处的注释;
double english=();
//read a integer variable
double history=();
//read a integer variable();
//end the input
Try{
("age:"+age);
("math"+math);
("english"+english);
输出项
给出对每一个输出项的特性,包括名称、标识、数据
的类型和格式、数据值的有效范围、输出的形式、数量和频 度、输出媒体、对输出图形及符号的说明、安全保密条件等 等。
算法
详细说明本程序所选用的算法,具体的计算公式和计 算步骤。
流程逻辑
用图表(例如流程流程图、判定表等)辅以必要的说 明来表示本程序的逻辑流程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TDS Java主控开发文档(TDS 1.0)产品研发部2012年11月文档信息及修订记录项目名称项目编号文档密级内部项目经理项目总监文档主送文档抄送修订人修订日期修订说明版本号马超2011-11-25 初稿 1.0填写说明:1、项目名称、项目编号、项目经理、项目总监按照本项目实际情况填写。
2、文档密级是该文档允许扩散的范围。
对于交通银行,机密文件必须由信息科技部经理室批准方可借阅;秘密文件必须由项目负责人批准方可借阅;内部文件经一般授权后可由在项目组内部传阅;公开文件不需经过授权,可自由进行阅读。
对于棠棣公司,机密文件、秘密文件必须由银行产品事业部经理室批准方可借阅;内部文件经一般授权后可由在公司内部和项目组内部传阅;公开文件不需经过授权,可自由进行阅读。
3、文档主送是指该文档应该主送的对象,双方项目总监、项目经理是该文档必须主送的对象之一。
4、文档抄送是指该文档应该抄送的对象,项目管理组是该文档应该抄送的对象之一。
5、版本号是指该文档的版本次序号,该文档首次发布时可确定为1.0,如果在上一版的基础上有细微的调整和修改,则可在小数点后次版本号加1;如果该文档内容总体上有重大变化或增加/删除了重要章节,则小数点主版本号加1。
目录1TDS Java主控开发 (4)1.1注解使用说明 (4)1.2主控编写注意 (4)1.3主控部署说明 (5)1.3.1生成的类存放 (5)1.3.2注意事项 (12)1TDS Java主控开发TDS平台是棠棣中间业务平台的简称。
该平台主要用于银行和第三方支付相关系统的基础平台,在此基础之上可用于如下平台或系统的架构:综合前置平台、设备前置平台、通讯前置平台、中间业务平台、支付结算业务平台、第三方支付网关等。
其中中间业务平台,用于实现银行方面的代收公共事业费,代理财政支付,财政非税代收等功能;支付结算业务平台,用于实现同城电子交换业务,电子商业汇票,现代化支付系统等功能。
1.1 注解使用说明定义方式:注解1:@Data示例:@Data String phone;@Data注解表示为Etf字段注解2:@tangdi.engine.DB使用说明:在交易定义上使用,则交易可以直接进行DB数据库操作注解3:@AroundInvoke注解的方法,将在交易调用前后调用;注解4:@code(“交易码”)注解的方法,即为主控交易1.2 主控编写注意常使用的方法已经在TdAtcForJava.jar中定义过,编辑器中开发时,新建主控文件后,将会自动生成一段代码,包括import常用的jar包方法;原子函数调用,用户直接Atc.方法名即可;普通表达式的调用,引入表达式包后,即可使用静态表达式函数进行处理;用户也可以自定义自己的方法,在主控类中自由使用;1.3 主控部署说明1.3.1生成的类存放用户在IDE开发环境中,编写完成自己的Java主控后,编译器会自动生成classes文件夹,将文件夹copy到TDS实例的app应用下即可;在app.xml里配置:注意事项:1:natures里添加javaengine;2:transactions交易节点中,配置新增加的class配置用<class> </class>配置,写法:包名全路径+文件名示例:<?xml version="1.0"encoding="UTF-8"?><application name="testCluster"desc="集群测试应用"natures="base,channel,webapp,javaengine,remote"><transactions><class> service.proxyService.Proxy</class></transactions></application>package service.proxyService;import java.util.List;import javax.annotation.PreDestroy;import javax.interceptor.AroundInvoke;import javax.interceptor.InvocationContext;import ng.StringUtils;import org.dom4j.Element;import tangdi.annotations.Code;import tangdi.atc.Atc;import tangdi.engine.context.Etf;import tangdi.engine.context.Msg;import tangdi.log.ILog;@tangdi.engine.DB/*** @{# Proxy.java Create on 2012-1-10 上午9:55:46** 类功能说明:* 代理商信息管理* <p>* Copyright: Copyright(c) 2012* </p>* <p>* Company: 上海棠棣* </p>* @Version 1.0* @Author <a href="mailto:wang_lj@">王龙军</a>**/public class Proxy {@PreDestroyvoid pre() {}@AroundInvokepublic Object around(InvocationContext ic) throws Exception {Msg.dump();Object obj = ic.proceed();Msg.dump(); // <after>return obj;}/*** code 466701* 代理商信息添加* @param logger*/@Code("466701")@tangdi.interceptor.Logpublic void createRole(ILog logger) {try {String sql = "insert into PRYPROXY(AGE_MERCH_ID,AGE_PWD,AGE_NAME,ADDRESS,POST_CODE,FLAG,EM AIL,COMM_PER,TELEPHONE,IP_LIMIT,AGE_DATE,SET_PER,LAST_DATE,LAST_PER,D ESCRIPTIONS) values('"+ Etf.getChildValue("AGE_MERCH_ID")+ "','"+ Etf.getChildValue("AGE_PWD")+ "','"+ Etf.getChildValue("AGE_NAME")+ "','"+ Etf.getChildValue("ADDRESS")+ "','"+ Etf.getChildValue("POST_CODE")+ "','"+ Etf.getChildValue("FLAG")+ "','"+ Etf.getChildValue("EMAIL")+ "','"+ Etf.getChildValue("COMM_PER")+ "','"+ Etf.getChildValue("TELEPHONE")+ "','"+ Etf.getChildValue("IP_LIMIT")+ "','"+ Etf.getChildValue("AGE_DATE")+ "','"+ Etf.getChildValue("SET_PER")+ "','"+ Etf.getChildValue("LAST_SAFT_DATE")+ "','"+ Etf.getChildValue("LAST_SAFT_PER")+ "','"+ Etf.getChildValue("DESCRIPTIONS") + "')";("%s", sql);("%s", "执行数据库添加操作");int count = Atc.ExecSql(null, sql);if (count == 0) {Etf.setChildValue("MsgTyp", "N");Etf.setChildValue("RspCod", "00000");Etf.setChildValue("RspMsg", "修改成功");}if (count == 2) {Etf.setChildValue("MsgTyp", "E");Etf.setChildValue("RspCod", "P0003");Etf.setChildValue("RspMsg", "执行本函数后改变数据表记录数为0");return;}if (count == 3) {Etf.setChildValue("MsgTyp", "E");Etf.setChildValue("RspCod", "P0002");Etf.setChildValue("RspMsg", "违反数据唯一性");}} catch (Exception ex) {Etf.setChildValue("MsgTyp", "E");Etf.setChildValue("RspCod", "P0005");Etf.setChildValue("RspMsg", "数据库字段不一致");}}/*** code 466702* 代理商信息删除:伪删除* @param logger*/@Code("466702")@tangdi.interceptor.Logpublic void delPry(ILog logger) {try {String sql = "update PRYPROXY set FLAG='"+ Etf.getChildValue("FLAG") + "' where AGE_MERCH_ID='"+ Etf.getChildValue("AGE_MERCH_ID") + "'";int count = Atc.ExecSql(null, sql);if (count == 0) {Etf.setChildValue("MsgTyp", "N");Etf.setChildValue("RspCod", "00000");Etf.setChildValue("RspMsg", "修改成功");}if (count == 2) {Etf.setChildValue("MsgTyp", "E");Etf.setChildValue("RspCod", "P0003");Etf.setChildValue("RspMsg", "执行本函数后改变数据表记录数为0");return;}} catch (Exception ex) {Etf.setChildValue("MsgTyp", "E");Etf.setChildValue("RspCod", "P0005");Etf.setChildValue("RspMsg", "数据库字段不一致");}}/*** code 466703* 代理商信息修改* @param logger*/@Code("466703")@tangdi.interceptor.Logpublic void updatePry(ILog logger) {try {String sql = "update PRYPROXY set AGE_PWD='"+ Etf.getChildValue("AGE_PWD") + "',AGE_NAME='"+ Etf.getChildValue("AGE_NAME") + "',ADDRESS='"+ Etf.getChildValue("ADDRESS") + "',POST_CODE='"+ Etf.getChildValue("POST_CODE") + "',FLAG='"+ Etf.getChildValue("FLAG") + "',EMAIL='"+ Etf.getChildValue("EMAIL") + "',COMM_PER='"+ Etf.getChildValue("COMM_PER") + "',TELEPHONE='"+ Etf.getChildValue("TELEPHONE") + "',IP_LIMIT='"+ Etf.getChildValue("IP_LIMIT") + "',AGE_DA TE='"+ Etf.getChildValue("AGE_DATE") + "',SET_PER='"+ Etf.getChildValue("SET_PER") + "',LAST_DATE='"+ Etf.getChildValue("LAST_SAFT_DATE") + "',LAST_PER='"+ Etf.getChildValue("LAST_SAFT_PER") + "',DESCRIPTIONS='"+ Etf.getChildValue("DESCRIPTIONS")+ "' where AGE_MERCH_ID='"+ Etf.getChildValue("AGE_MERCH_ID") + "'";int count = Atc.ExecSql(null, sql);if (count == 0) {Etf.setChildValue("MsgTyp", "N");Etf.setChildValue("RspCod", "00000");Etf.setChildValue("RspMsg", "修改成功");}if (count == 2) {Etf.setChildValue("MsgTyp", "E");Etf.setChildValue("RspCod", "P0003");Etf.setChildValue("RspMsg", "执行本函数后改变数据表记录数为0");return;}} catch (Exception ex) {Etf.setChildValue("MsgTyp", "E");Etf.setChildValue("RspCod", "P0005");Etf.setChildValue("RspMsg", "数据库字段不一致");}}/*** code 466704* 代理商信息查询按名称,代理商商户号,启用状态查询* @param logger*/@Code("466704")@tangdi.interceptor.Logpublic void selectPry(ILog logger) {try {StringBuffer sql = new StringBuffer("selectAGE_MERCH_ID,AGE_PWD,AGE_NAME,ADDRESS,POST_CODE,FLAG,EMAIL,COMM_ PER,TELEPHONE,IP_LIMIT,AGE_DATE,SET_PER,LAST_DATE,LAST_PER,DESCRIPTIO NS from PRYPROXY where 1=1");String idname = Etf.getChildValue("AGE_MERCH_ID");String flag = Etf.getChildValue("FLAG");String agename = Etf.getChildValue("AGE_NAME");("agename=%s", agename);("idname=%s", idname);("falg=%s", flag);if (StringUtils.isNotEmpty(idname)) {if (StringUtils.isNotEmpty(flag)) {if (StringUtils.isNotEmpty(agename)) {sql.append(" and AGE_MERCH_ID='" + idname+ "' and AGE_NAME='" + agename + "' and FLAG='"+ flag + "'");} else {sql.append(" and AGE_MERCH_ID='" + idname+ "' and FLAG='" + flag + "'");}} else {if (StringUtils.isNotEmpty(agename)) {sql.append(" and AGE_MERCH_ID='" + idname+ "' and AGE_NAME='" + agename + "'");} else {sql.append(" and AGE_MERCH_ID='" + idname + "'");}}} else {if (StringUtils.isNotEmpty(flag)) {if (StringUtils.isNotEmpty(agename)) {sql = sql.append(" and AGE_NAME='" + agename+ "' and FLAG='" + flag + "'");} else {sql = sql.append(" and FLAG='" + flag + "'");}} else {if (StringUtils.isNotEmpty(agename)) {sql = sql.append(" and AGE_NAME='" + agename + "'");}}}("sql=%s", sql.toString());int result = Atc.QueryInGroup(sql.toString(), null, "10");if (result == 0) {Etf.setChildValue("MsgTyp", "N");Etf.setChildValue("RspCod", "00000");Etf.setChildValue("RspMsg", "查询成功");} else if (result == 2) {Etf.setChildValue("MsgTyp", "E");Etf.setChildValue("RspCod", "P0004");Etf.setChildValue("RspMsg", "无记录");} else {Etf.setChildValue("MsgTyp", "E");Etf.setChildValue("RspCod", "P0001");Etf.setChildValue("RspMsg", "查询失败");}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** code 466705* 代理商信息浏览* @param logger*/@Code("466705")@tangdi.interceptor.Logpublic void findPry(ILog logger) {String sql = "select AGE_MERCH_ID,AGE_PWD,AGE_NAME,ADDRESS,POST_CODE,FLAG,EMAIL,COMM_ PER,TELEPHONE,IP_LIMIT,AGE_DATE,SET_PER,LAST_DATE,LAST_PER,DESCRIPTIO NS from PRYPROXY";try {int result = Atc.QueryInGroup(sql, null, "count");if (result == 0) {Etf.setChildValue("MsgTyp", "N");Etf.setChildValue("RspCod", "00000");Etf.setChildValue("RspMsg", "查询成功");} else if (result == 2) {Etf.setChildValue("MsgTyp", "E");Etf.setChildValue("RspCod", "P0004");Etf.setChildValue("RspMsg", "无记录");} else {Etf.setChildValue("MsgTyp", "E");Etf.setChildValue("RspCod", "P0001");Etf.setChildValue("RspMsg", "查询失败");}List list = Etf.childs("ROOT");for (int i = 0; i < list.size(); i++) {("list的长度=%s", list.size());("name=%s", list.get(i));Element em = (Element) list.get(i);("values[%s]", em.element("AGE_MERCH_ID").getText());}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}1.3.2注意事项1java代码编译问题由于多人协作开发,在开发的过程中,可能遇到同一应用的多个人在写代码,结果有人的代码编译不通过却上传到服务器端,服务器端重新加载新的字节码文件后找不到交易或者报类找不到错误等,此时应当保证代码处于编译通过状态便可以解决相关问题.2Java主控交易未执行的问题一个主控代码的java文件中必须有一个如下的方法@AroundInvokepublic Object around(InvocationContext ic) throws Exception {return ic.proceed();}否则不会调起相关的交易,可以这样理解,上面代码里的InvocationContextr的实例ic就是你的交易代码的一次封装,如果没有调用ic对象的proceed()方法则代表着交易并未正常执行.3Java主控中引用ETF树节点为空的问题如果当前java文件中定义的类属性,但在交易执行的时候在此属性上执行相关操作却发现节点值为空,这个时候我们得首先确认ETF树上有无此节点,如果ETF树上有此节点,那么我们接下来应当确定此属性上有没有加@Data注解,如果没有此注解,平台也不会将对应的ETF树上的节点值注入些属性中.。