书签 分享 收藏 举报 版权申诉 / 64
上传文档赚钱

类型图形用户界面的设计与实现课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:2518105
  • 上传时间:2022-04-28
  • 格式:PPT
  • 页数:64
  • 大小:166KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《图形用户界面的设计与实现课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    图形 用户界面 设计 实现 课件
    资源描述:

    1、图形用户界面的设计与实现77.1 图形用户概述; 7.7 单、复选按钮;7.2 用户自定义成份; 7.8 滚动条;7.3 Java的事件处理; 7.9 鼠标、键盘;7.4 GUI标准组件; 7.10 布局设计;7.5 标签、按钮; 7.11 Panel与容器事件;7.6 文本与文本事件; 7.12 Frame与窗口事件;图形用户界面的设计。7.1 一、GUI的定义:使用图形的方式借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形方式显示给用户。 二、Java的AWT库:abstract windows toolkit。 三、图形用

    2、户界面的构成:是一组图形界面成份和界面元素的有机组合。 四、容器:用来组织其它界面成份和元素的单元。 五、控制组件:是图形用户界面的最小单位。 六、用户自定义成份:是用户绘制的几何图形、图案组成的,它们只起装作用,不能响应事件。用户自定义成份。7.2 一、Graphics类与用户自定义成份: Graphics类提供了很多绘制图形和文字的方法。这些方法主要是通过方法:paint(Graphics g)来实现的。 在这里要注意图形坐标与平面坐标的区别。 二、绘制简单图形: 1、画直线: 方法是:void drawLine(int startx,int starty,int endx,int end

    3、y);(讲例Linedemo.java) 2、画矩形: 方法是:void drawRect(int top,int left,int width,int height); void fillRect(int top,int left,int width,int height); 2、画矩形: 方法是:void drawRect(int top,int left,int width,int height);void fillRect(int top,int left,int width,int height);void drawRoundRect(int top,int left,int wid

    4、th,int height,int xDiam,int yDiam);void fillRoundRect(int top,int left,int width,int height,int xDiam,int yDiam);void draw3DRect(int top,int left,int width,int height,boolean d);void fill3DRect(int top,int left,int width,int height,boolean d);(讲例:Rect.java) 3、画圆和椭圆: 方法是:void drawOval(int x,int y,int

    5、 width,int height);void fillOval(int x,int y,int width,int height);(讲例:Ellipse.java) 4、画弧: 方法是:void drawArc(int x,int y,int width,int height,int startAngle,int endAngle);void fillArc(int x,int y,int width,int height, int startAngle,int endAngle);(讲例:Arcs.java) 5、画多边形: 方法是:void drawPolygon(int x,int

    6、y,int numpoints);void fillPolygon(int x,int y,int numpoints);(讲例:HourGlass.java和HourGlass1.java) 三、绘制文本: Graphics类提供了三个与绘制文本有关的方法: drawByte()、drawChars()、drawString()。 这三个方法一般要和Font、FontMetrics类一起使用。用Font类可以设定字体、字体的样式及大小;用FontMetrics则可以记录和获取当前字体的规格等说明。 Font类有关的方法有: Font(String name,int style,int siz

    7、e):创建字体; setFont(Font obj):设置字体; getFont():获得当前Graphics上所使用的字体; String getFontList():返回当前系统可用字体名称数组; getSize()、getStyle()、isPlain()、isBold()、isItalic();(讲例SampleFonts.java和ShowFonts.java) 四、设置颜色: Java的颜色类:Color允许用户任意选择自己所需要的颜色。Color类中定义了一些常用的颜色实例,如下表所示:颜色名称RGB值白色Color.white255.255.255黑色Color.blank0.

    8、0.0淡灰Color.lightGray192.192.192灰色Color.gray128.128.128暗灰Color.darkGray64.64.64红色Color.red255.0.0绿色Color.green0.255.0蓝色Color.blue0.0.255黄色Color.yellow255.255.0紫红Color。Magenta255.0.255青蓝Color.cyan0.255.255粉红Color.pink255.175.175橘色Color.orange255.200.0 Color类中提供了以下方法: Color(int red,int green.int blue);

    9、 Color(int rgbValue); Color(float red,float green,float blue); setForeground(); setBackground(); setColor(); getColor(); getRed()、getGreen()、getBlue()、getRGB()。(讲例:ColorBar.java) 五、显示图像: Java中处理图像的类是:Image,它也是AWT中的类库之一。Java目前支持的图像格式有:GIF和JPEG两种。对图像操作一般可为三步:创建、加载和显示。1、图像的创建:可利用以下方法: Image createImage

    10、(ImageProducer imgProd); Image createImage(int width,int height);2、图像的加载:可利用以下方法: Image getImage(URL url); Image getImage(URL url,String imageName);3、图像的显示:利用的方法为: boolean drawImage(Image imgObj,int x,int y,ImageObserver imgOb);其中: imgOb是一个ImageObserver接口对象,它用来监测图像加载的过程。(讲例:SimpleImageLoad.java) 六、动

    11、画制作: Java不仅提了对图形、图像的支持,而且还允许用户实现连续图像的播放,即动画技术。 Java对动画的处理是:首先动画图像一次性从网络上下载完毕或在不影响动画效果的前提下分若干次下载,下载后的图像存放于数组或向量中,用一指针顺序提取,然后逐一显示到屏幕上。 当然动画制作过程中会出现一些意想不到的效果。闪烁便是其中之一。克服它的技术有二: 一是改写update()方法,内定的update()方法是先清除整个画面,然后再调用方法paint()显示图像,改写之后的update()方法为: public void update(Graphics g) paint(g); 二是利用双缓冲技术,双

    12、缓冲技术如下: 1、在图形缓冲区内创建将要使用的图形对象:offscreenimage; 2、在Applet的init()方法中,实例化offscreenimage对象; 3、将要画到屏幕上的图像,转画到offscreenimage上; 4、将offscreenimage上的图像,一次性的画到Applet的画面上; 5、改写update()方法。(讲例:Animation.java)Java的事件处理。7.3 一、Java事件处理机制:事件委托处理。 事件处理是GUI编程的核心,Java中的事件就是对象。Java.awt.event包中定义了丰富的事件类型层次。面向对象编程的一个基本原则就是让

    13、最适合完成任务的对象完成任务。指定一个对象处理组件事件的过程称为委托(delegation)。事件处理对象称为听众(Listener)。 要让组件的某个活动事件的处理委托给某个听众,就要执行这个组件的addActionListener()方法,传递所要听众的引用。每个组件类都针对该组件产生的每种事件有个addxxxListener()方法。 如下面的程序:(ButtonDelegateTest.java) import java.awt.*; import java.awt.event.*; public class ButtonDelegateTest extends java.applet

    14、.Applet public void init() Button b=new Buttob(“I have a listener!”); add(b); ActionListener listener=new TestListener(); b.addActionListener(listener); class TestListener implements ActionListener public void actionPerformed(ActionEvent e) System.out.println(“Listener here:the button was clicked.”)

    15、; 上面的程序就使用了事件委托模型:听众:listener是一个实现了接口ActionListener的类对象。接口ActionListener很简单,只有一个方法,它的实现为: public interface ActionListener extends EventListener public abstract void actionPerformed(ActionEvent e); addActionListener()方法的声明要求听众参数实现这个接口: public void addActionListener(ActionListener listener); 由于听众要实现这个

    16、接口,所以知道动作事件何时发生,系统可以安全地对听众调用actionPerformed()方法,因为听众必定有actionPerformed()方法。 当然,事件也可以委托给自己,即自我包含类实现事件的听众,构造器把自己作为听众加进行。如: import java.awt.*; import java.awt.event.*; public class SelfButton2 extends Button implements ActionListener public SelfButton2(String Label) super(label); addActionListener(this

    17、); public void actionPerformed(ActionEvent e) System.out.println(“Action!”); 二、Java事件的类型: Java所有的事件类和处理事件的监听者接口都定义在java.awt.event包中,其中事件的层次为:EventObjectAWTEventActionEventTextEventAdjustmentEventComponentEventItemEventContainerEventWindowEventFocusEventInputEventPaintEventMouseEventKeyEvent三、Java事件的

    18、监听接口: 在java.awt.event包中,有11个事件监听接口,每个接口内部都包含了若干处理相关事件的抽象方法。每个事件类都有一个监听者接口与之相对应,而事件类的每个具体事件类型都有一个具体的抽象方法与之相对应,当事件发生时,这个事件将被封装成一个事件类的对象作为实现参数传递给与之对应的具体方法,由这个方法负责响应并处理发生的事件。如:与ActionEvent类相对应的接口为ActionListener,那么凡是处理ActionEvent事件的类都必须实现这个接口,重载actionPerformed()方法,并由这个方法处理事件。 当然,InputEvent类由于它不对应具体事件,所以它

    19、没有接口;而MouseEvent类有两个接口与之相对应,一个是MouseListener,处理单击事件,另一个是MouseMotionListener,处理移动和拖动事件。GUI标准组件概述。7.4 GUI标准组件都定义在java.awt包中,它们的层次关系为:ComponentButtonCanvasContainerChoiceCheckboxTextComponentLabelScrollbarListPanelScrollPanelWindowTextAreaTextFieldAppletFrameDialogFileDialog容器组件名 使用基本组件的步骤为:1、创建基本组件;2、

    20、放置到合适位置;3、创建组件对象的监听者。 由于Component类是所有awt组件的抽象父类,它的常用方法为: public void add(PopupMenu popup): public Color getBackground(): public Font getFont(): public Color getForeground(): public Graphics getGraphics(): public void repaint(): public void setBackground(): public void setFont(): public void setSize(

    21、): public void setVisible():标签、按钮与动作事件。7.5 一、标签(Label):它的常用方法有 Label(): Label(String str): Label(String str,int alignment):其中alignment的取值为:LEFT、CENTER、RIGHT。 public void setText(String str): public String getText(): public int getAlignment(): public void setAlignment(int alignment):它不能发生事件。(如例:Label

    22、Demo.java) 二、按钮(Button):它的作用是用来触发某个事件。按钮在屏幕上显示的外形依赖于Java运行系统所在有具体平台,在AWT中用户无法改变按钮的外形,但在AWT中实现了一个标准按钮的外观和行为。用户可以通过调用它的方法来改变按钮的字体、文本、前景色和背景色。它的常用方法有: Button(): Button(String str): public void setLabel(String str): public String getLabel(): 按钮可以引发动作事件:ACTION_EVENT,具体响应由实现了接口ActionListener的监听者的actionPer

    23、formed(ActionEvent e)方法实现。在该方法中,我们可以通过e.getSource()获取引发动作事件的按钮的引用,也可以通过e.getActionCommand()方法获取按钮的标签或事先为这个按钮设置的命令名。(如例:BtnLabelAction.java和ButtonDemo.java) 三、动作事件(ActionEvent):ActionEvent类只包含一个事件,即:ACTION_PERFORMED。能引发这个事件的动作有: 点击按钮、双击列表框中的选项、选择菜单项、在文本框中按回车键等。ActionEvent类的主要方法有:1、public String getAc

    24、tionCommand():它返回引发动作事件的命令名。命令名可以通过setActionCommand()方法实现。如: Button btn=new Button(“按钮标签”); btn=setActionCommand(“命令名”); btn.addActionListener(this);那么在监听者按口的方法可以是: public void actionPerformed(ActionEvent e) if(e.getActionCommand()=“命令名”) 当然我们也可以不专门设置命令名,此时命令名就是对象的标签名。2、public int getModifiers():如果引

    25、发动作时,用户也按了功能键,那么此方法返回功能键。即: ALT_MASK、CTRL_MASK、SHIFT_MASK、META_MASK.文本框、文本域与文本事件。7.6 Java中用于文本处理的基本组件有:TextFiled和TextArea,它们都是TextComponent类的子类。 一、文本事件(TextEvent): TextEvent类只包含一个事件,即代表文本区域中文本变化的事件TEXT_VALUE_CHANGED,在文本域中改变文本时都将引发这个事件。 二、文本域的创建: public TextField(): public TextField(int cols): public

    26、 TextField(String str): public TextField(String str,int cols): 三、文本区的创建: public TextArea(): public TextArea(int rows,int cols): public TextArea(String str): public TextArea(String str,int rows,int cols): 四、公共文本部件的特性: public void setText(String newText): public String getText(): public String getSele

    27、ctedText(): public int getSelectionStart(): public int getSelectionEnd(): public void Select(int selectionStsrt,int selectionEnd): public void selectAll(): public void setEditable(): public boolean isEditable(): 五、文本域的特性: public void setEchoChar(char ch): public char getEchoChar(): public boolean ec

    28、hoCharIsSet(): public int getColumns(): 六、文本区的特性: public void appendText(String textToAdd): public void insertText(String newText,int position): public void replaceText(String str,int start,int end): public int getColumns(): public int getRows(): 七、事件响应:1、TextComponent的事件:TextEvent.2、TextField的事件:Te

    29、xtEvent、ActionEvent;3、TextArea的事件:TextEvent.4、对TextEvent的处理过程为: textField1.addTextListener(this); 而听众类需实现的方法为: public void textValueChanged(TextEvent e);也可以通过e.getSoure()获得引发事件的文本对象的引用。(讲例:TextFieldExample.java和TextComponentEvent.java)单、复选按钮,列表与选择事件。7.7一、选择事件(ItemEvent): ItemEvent类只包含一个事件,即代表选择项的选中状

    30、态发生变化的事件:ITEM_STATE_CHANGED。引发这个事件的动作有:1、改变列表框类List对象选项的选中或不选中;2、改变下拉列表框类Choice对象选项的选中或不选中;3、改变复选按钮类Checkbox对象选项的选中或不选中;4、改变菜单项CheckboxMenuItem对象选项的选中或不选中;ItemEvent类的主要方法有:1、public ItemSelectable getItemSelectable():2、public Object getItem():3、public int getStateChange():ItemEvent.SELECTED、 ItemEven

    31、t.DESELECTED.二、复选按钮(Checkbox):1、创建复选按钮: public Checkbox(): public Checkbox(String label): public Checkbox(String label,boolean state): public Checkbox(String label,boolean initialState,CheckboxGroup group):2、检查和设置复选按钮的状态:用public boolean getState()方法。如: if(myCheckbox.getState() else 则public void setS

    32、tate(boolean state)用来设置状态。3、监听复选按钮的变化:实现ItemListener接口。具体方法为: addItemListener(ItemListener): removeItemListener(ItemListener): ItemListener接口中有一个方法: public void itemStateChanged(ItemEvent evt).(CheckBoxExample.java)三、单选按钮(CheckboxGroup):单选按钮是复选框的特例,用户可以把一组复选框放置在同一个复选框组中就可以创建单选按钮组。创建复选框组的方法为: public

    33、CheckboxGroup():然后用户使用下列方法向复选组中加入单选按钮: public Checkbox(String label,boolean initialState,CheckboxGroup group):(RadioExample.java)用户可以使用对每个复选框调用getState()方法或对CheckboxGroup组调用getSelectedCheckbox().而getSelectedCheckbox()返回的是当前被选中的复选框的引用。 单选按钮的事件响应和复选框一样。(RadioExample1.java)四、下拉列表框(Choice):它是多选一的界面1、创建下

    34、拉列表框:有创建和添加选项两个步骤。 Choice size=new Choice(); size.add(“10”); size.add(“20”); size.add(“30”);2、常用方法: public int getSelectedIndex(): public String getSelectedItem(): public void select(int index): public void select(String item): public void add(String item): public void insert(String item,int index):

    35、 public void remove(int index): public void remove(String item): public void removeAll():3、事件响应:下拉列也产生ItemEvent事件,所以实现ItemnListener即可。在方法: public void itemStateChanged(ItemEvent e)中,可以通过调用 e.getItemSelectable()获得引发当前事件的下拉列框的引用,然后再通过方法: getSelectedItem()获取具体的选择项。(TestChoice.java)五、列表框(List):它是多选多的界面1

    36、、创建列表框:有创建和添加选项两个步骤。 List size=new List(); size.add(“10”); size.add(“20”); size.add(“30”);它的构造方法: public List(): public List(int rows): public List(int rows,boolean multipleMode):2、常用方法: public int getSelectedIndex(): public int getSelectedindexs(): public String getSelectedItem(): public String get

    37、SelectedItems(): public void select(int index): public void deselect(int index): public void add(String item): public void add(String item,int index): public void remove(String item): public void remove(int index):3、事件响应:它产生两种事件,即: 单击时的ItemEvent事件和双击时的ActionEvent事件。通常在itemStateChanged(ItemEvent e)方法

    38、里,调用e.getItemSelectable()方法获得引发事件的列表框的引用,再利用列表框的getSelectedIndex()或getSelectedItem()就可以得到具体的项目。 而在actionPerformed(ActionEvent e)方法里可以利用 e.getSource()得到产生事件的列表框的引用。调用方法: e.getActionCommand()可以获得选项的字符串。但要注意:双击不能覆盖单击。(TestList.java)滚动条与调整事件。7.8一、调整事件(AdjustmentEvent): AdjustmentEvent类只包含一个事件,即代表组件状态发生连

    39、续变化的事件:ADJUSTMENT_VALUE_CHANGED。引发这个事件的动作有:1、操纵滚动条(Scrollbar)改变其滑块位置;2、操纵用户自定义的Scrollbar对象的子类组件,改变其滑块位置;AdjustmentEvent类的主要方法有:1、public Adjustable getAdjustable():获得引发事件的Scrollbar引用。2、public int getAdjustmentType:返回状态变化的类型,其值在:AdjustmentEvent.BLOCK_DECREMENT、 AdjustmentEvent.BLOCK_INCREMENT、 Adjustm

    40、entEvent.TRACK、 AdjustmentEvent.UNIT_DECREMENT、 AdjustmentEvent.UNIT_INCREMENT.3、public int getValue():返回滑块对应的当前数值。二、滚动条(Scrollbar):1、创建滚动条: public Scrollbar(): public Scrollbar(int orientation): public Scrollbar(int orientation,int position,int pageIncrement,int mininum,int maxinum):其中orientation的取

    41、值为:Scrollbar.HORIZONTAL、Scrollbar.VERTICAL.2、常用方法: public void setUnitIncrement(int increment): public int getUnitincrement(): public void setBlockIncrement(int increment): public int getBlockIncrement(): public int getMininum():、public int getMaxinum(): public void setValue(int increment):、public i

    42、nt getValue():3、使用滚动条: Scrollbar类产生AdjustmentEvent事件,并将事件发送给实现AdjustmentListener接口的对象。接口AdjustmentListener内唯一方法为:public void adjustmentValueChanged(AdjustmentEvent evt). 在该方法内,通过对象evt的方法调用来实现事件响应。如: evt.getAdjustable(): evt.getValue(): evt.getAdjustmentType()的返回值与下列常量比较: AdjustmentEvent.BLOCK_DECREM

    43、ENT: AdjustmentEvent.BLOCK_INCREMENT: AdjustmentEvent.TRACK: AdjustmentEvent.UNIT_DECREMENT: AdjustmentEvent.UNIT_INCREMENT:即可知发生的事件。(TestSlider.java)画布与鼠标、键盘事件。7.9一、鼠标事件(MouseEvent): 在Java 2中有两个不同的接口用于处理鼠标事件,即MouseListener和MouseMotionListener。 在MouseListener中定义了与鼠标移动无关的方法,即: public abstract void mo

    44、usePressed(MouseEvent e): public abstract void mouseReleased(MouseEvent e): public abstract void mouseClicked(MouseEvent e): public abstract void mouseEntered(MouseEvent e) public abstract void mouseExited(MouseEvent e): 在MouseMotionListener中定义了与鼠标移动有关的方法,即: public abstract void mouseMoved(MouseEven

    45、t e): public abstract void mouseDragged(MouseEvent e): MouseEvent类中封闭了若干个与鼠标有关的事件和常量。 常量有: MOUSE_CLICKED: MOUSE_DRAGGED: MOUSE_ENTERED: MOUSE_EXITED: MOUSE_MOVED: MOUSE_PRESSED: MOUSE_RELEASED: 方法有: public int getID():返回上面的常量之一; public int getX(): public int getY(): public Point getPoint(): public i

    46、nt getClickCount():另外,也可以利用InputEvent类的方法getModifiers()的返回值与以下常量比较: ALT_MASK: CTRL_MASK: SHIFT_MASK: META_MASK: BUTTON1_MASK: BUTTON2_MASK: BUTTON3_MASK:从而得知按下的功能键或单击鼠标的那个键。(ResponseToMouse.java) 二、键盘事件(KeyEvent): 在Java 2中用于处理鼠标事件的接口为:KeyListener。 在KeyListener中定义了与键盘有关的三个方法,即: public abstract void k

    47、eyPressed(KeyEvent e): public abstract void keyReleased(KeyEvent e): public abstract void keyTyped(KeyEvent e): 其中: keyTyped(KeyEvent e)方法是前现两个方法的组合。KeyEvent类的主要方法有: public char getKeyChar(): public String getKeyText():KeyEvent类的主要常量有: KEY_PRESSED: KEY_RELEASED: KEY_TYPED :键盘被击。 三、画布(Canvas): 画布类是一个

    48、没有特殊功能的部件。它主要用于创建自定义图形部件,在画布里可以像在Applet一样绘制各种图形,也可以响应事件。它的创建如: Canvas myCanvas=new Canvas(); 接着应用方法:size()来调整它的大小。 它常用的方法为: public void paint(Graphics g). 它响应的事件的鼠标和键盘事件。(TestCanvas.java)布局设计。7.10 在java的GUI界面中,每一个容器都有一个与之相连的布局管理器。我们可以用方法:setLayout()为之设置相应的布局管理器。布局管理的作用是为容器内的组件的排列提供咨询。setLayout()的完整表

    49、达为: void setLayout(LayoutManager LayoutObj) 当容器增加组件、大小改变时都要根据LayoutObj来调整组件的设置。一、FlowLayout(流线型布局管理器): 它的缺省的布局管理器,构造方法为: FlowLayout(): FlowLayout(int how): FlowLayout(int how,int horz,int vert):参数how为对齐方式,horz和vert规定了组件之间的行间距和列间距。(FlowLayoutDemo.java)二、BorderLayout(方位型布局管理器): 它的构造方法为: BorderLayout()

    50、: BorderLayout(int how,int horz,int vert):参数how为对齐方式,horz和vert规定了组件之间的行间距和列间距。当使用BorderLayout布局管理器时,要使用以下方法向容器中添加组件: Component add(String name,Component compObj):其中name为方位名,compObj为组件名。(BorderLayoutDemo.java)三、GridLayout(网格型布局管理器): 它的构造方法为: GridLayout(): GridLayout(int numRows,int numCols):(GridLayo

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:图形用户界面的设计与实现课件.ppt
    链接地址:https://www.163wenku.com/p-2518105.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库