




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java语言程序课程设计报告1课程设计目的31.1熟练掌握java面向对象编程。31.2选择合适的数据结构实现需求。31.3熟练使用各种控制结构。31.4GUI组件、事件处理技术。32课程设计任务42.1设计一个简易的计算器,可以进行四则运算:加、减、乘、除等(限于十进制下)42.2程序要求:42.2.1应具有相应的界面,可参考Windows操作系统自带的计算器界面。42.2.2操作符号定为:“+”,“-”,“*”,“/”,“+/-”等。(按国际惯例设计)42.2.3用户通过点击程序界面上按钮,实现数字、运算符的输入操作。42.2.4以上部分为必须完成的内容。42.3选作部分:43具有操作符号“1/x”,“sqrt”(开方),“.”(小数功能)等。43.1设计一个简易的文本编辑器,可以实现文本文件的“新建”、“保存”、“复制”、“粘贴”、字体设置等功能。53.2程序要求:53.2.1应具有相应的程序界面,可参考Windows操作系统自带的记事本界面。53.2.2通过菜单选择,能够实现对文本文档的“新建”,“打开”,“保存”,“另存为”和“退出”功能。53.2.3能够实现对所选文字进行复制、粘贴和剪切功能。53.3选作部分:54能够实现对字体的字形、大小和粗细进行设置。55开发工具与平台56设计思路67逻辑设计68程序测试69实验总结610附录(程序代码)6 1 课程设计目的1.1 熟练掌握java面向对象编程。1.2 选择合适的数据结构实现需求。1.3 熟练使用各种控制结构。1.4 GUI组件、事件处理技术。2 课程设计任务2.1 设计一个简易的计算器,可以进行四则运算:加、减、乘、除等(限于十进制下)2.2 程序要求:2.2.1 应具有相应的界面,可参考Windows操作系统自带的计算器界面。2.2.2 操作符号定为:“+”,“-”,“*”,“/”,“+/-”等。(按国际惯例设计)2.2.3 用户通过点击程序界面上按钮,实现数字、运算符的输入操作。2.2.4 以上部分为必须完成的内容。2.3 选作部分:3 具有操作符号“1/x”,“sqrt”(开方),“.”(小数功能)等。3.1 设计一个简易的文本编辑器,可以实现文本文件的“新建”、“保存”、“复制”、“粘贴”、字体设置等功能。3.2 程序要求:3.2.1 应具有相应的程序界面,可参考Windows操作系统自带的记事本界面。3.2.2 通过菜单选择,能够实现对文本文档的“新建”,“打开”,“保存”,“另存为”和“退出”功能。3.2.3 能够实现对所选文字进行复制、粘贴和剪切功能。3.3 选作部分:4 能够实现对字体的字形、大小和粗细进行设置。5 开发工具与平台5.1.1.1 开发工具Eclipse默认是一个和Jbuilder类似的Java开发工具,但它不仅仅只是Java开发工具,只要装上相应的插件,eclipse也可作为其他语言的开发工具,如C/C+插件(CDT).5.1.1.2 开发平台JDK1.56 设计思路6.1.1.1 界面设计 计算机的界面设计界面设计要求用GUI,界面设计中有用到swing组件的TestFild和Butten,用到awt中的BoardLayout和GridLayoud布局管理方式,用Jmenu制作菜单,菜单包括“文件”“编辑”“格式”“帮助”,其图形界面如下:7 逻辑设计为了能够得到我们想要的操作,比如让那些数字参与运算,做什么运算等,我们就需要为每个按钮添加响应事件,通过响应事件来完成我们预想的结果,以下我们来分析下重要的事件是如何响应的:import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;public class xxxx extends JFrame implements ActionListener private JTextField tsfResult;/定义用于显示操作结果的文本框private boolean newDigital = true; /用于表示是否是输入的数的标志private double d1; /创建用于二元运算的前操作数private double d2; /创建用于二元运算的后操作数private int optionValue; /创建用于区别加减乘除运算的变量public xxxx()/整个计算机显示放在构造方法中super(计算器);/*设置用于显示运算结果的文本框*/tsfResult = new JTextField(0,30); /创建用于显示操作结果的文本框0表示显示在文本框初始值,30表示长度 tsfResult.setEditable(false);/设置文本框里的内容不可编辑 tsfResult.setBackground(Color.white); JPanel ResultTextPanel = new JPanel();/创建用于存放显示操作结果的文本框的面板 ResultTextPanel.add(tsfResult);/将显示操作结果文本框放入面板中 /*设置用于控制的数字的数字键*/ JButton b1 = new JButton(Backspace); /创建Backspace键 JButton b2 = new JButton(C); /创建C键 JPanel ControlPanel = new JPanel();/创建用于存放面板的控制键 ControlPanel.setLayout(new GridLayout(1,2,2,2);/设置网格布局管理器1行2列每个容器之间的行间距列间距都为2 ControlPanel.add(b1); /将Backspace键放入到面板中 ControlPanel.add(b2); /将C键放入到面板中 b1.addActionListener(this); /为了实现按钮的功能向Backspace键添加监听方法 b2.addActionListener(this); /向C键添加监听方法 /*设置数字和运算符键*/ String dcKey = 7,8,9,/,4,5,6 ,*,1,2,3,-,0,.,+,=;/全放到数组中 JPanel dcKeyPanel = new JPanel(); /创建用于存放数字和运算符键的面板 dcKeyPanel.setLayout(new GridLayout(4,4,2,2);/设置网格布局管理器 for(int i = 0; i 16; i+) / JButton b = new JButton(dcKeyi);/创建数字和运算符键按钮 dcKeyPanel.add(b); /将数字和运算符键按钮放入到布局管理器中由于设置了4行4列 b.addActionListener(this); /向数字和运算符键添加监听方法 Container ct = this.getContentPane(); /创建一个窗体窗体的内容面板对象ct.setLayout(new BorderLayout(); /设置边界布局管理器ct.add(ResultTextPanel,BorderLayout.NORTH); /将显示结果文本框放到常提的上部ct.add(ControlPanel,BorderLayout.CENTER); /将控制键放入到窗体中央ct.add(dcKeyPanel,BorderLayout.SOUTH); /将数字和运算符键放入到窗体的下部pack();/为了能在窗体上显示pack方法调整此窗口的大小setVisible(true);/方法设置窗体是否显示setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置窗体关闭的处理方式public void actionPerformed(ActionEvent e) /在acfionperforme方法实现按钮的功能对应priveted1、都d2那几个String s = (e.getActionCommand(); /要定义两个string变量返回与此动作相关的命令字符串判断点击的是那个按钮是加法减法String str = tsfResult.getText(); /获取运算结果文本框中的字符串if(s.equals(Backspace)String s1 = tsfResult.getText(); /获取文本框中的字符串tsfResult.setText(s1.substring(0,s1.length()-1); /截取最后一个数字if(s.equals(C)tsfResult.setText(0); /把显示屏清零 optionValue = 0; /将用于表示运算符的变量设置为0 newDigital = true; /将表示是否是新输入的数的标设置为true/*数字键*/if(s.equals(0)|s.equals(1)|s.equals(2)|s.equals(3)|s.equals(4)|s.equals(5)|s.equals(6)|s.equals(7)|s.equals(8)|s.equals(9)if(!newDigital)/判断是否是新数tsfResult.setText(str+s);/获取文本框中的字符串elsetsfResult.setText(s);/设置文本框中的字符串newDigital = false;/将是否为新数的标志设置为falsereturn;newDigital = true;if(s.equals(+)d1 = Double.parseDouble(tsfResult.getText();/按下按钮获取前操作数的值optionValue = 1; /设置运算符标志 if(s.equals(-)d1 = Double.parseDouble(tsfResult.getText();/获取前操作数的值optionValue = 2; /设置运算符标志 if(s.equals(*)d1 = Double.parseDouble(tsfResult.getText();/获取前操作数的值optionValue = 3; /设置运算符标志 if(s.equals(/)d1 = Double.parseDouble(tsfResult.getText();/获取前操作数的值optionValue = 4; /设置运算符标志 if(s.equals(=)d2 = Double.parseDouble(tsfResult.getText();/获取后操作数的值/*根据运算符标志的不同值确定计算结果*/switch(optionValue)case 1:tsfResult.setText(String.valueOf(d1+d2);/加法运算break;case 2:tsfResult.setText(String.valueOf(d1-d2);/减法运算break;case 3:tsfResult.setText(String.valueOf(d1*d2);/乘法运算break;case 4:if(d2!=0)tsfResult.setText(String.valueOf(d1/d2);/除法运算elsetsfResult.setText(除数不能为零);/如果该值为0不能进行除法运算return;break;optionValue = 0;/清空运算符/*小数点if(s.equals(.)if(tsfResult.getText().indexOf(.) = -1)/如果不存在小数点/*判断数字是否以0开头*/if(tsfResult.getText().trim().startsWith(0)tsfResult.setText(0.);/设置文本框中的字符串newDigital = false;/看是否为新数的标志设置为falseelsetsfResult.setText(str+.);/设置文本框中的字符串return;/public static void main(String args) new xxxx();整个记事本分为两块,菜单栏和内容输入区,本程序首先定义一个Notepad类继承Jframe作为最底层容器(1) Testcontent为程序文本区(2) Menu为菜单栏(3) AboutDiolog为关于对话框(4) 要想记事本完成需求分析中相应的功能,必须添加事件监听器,事件监听不仅需要加在菜单栏和内容输入区还需加在容器中,本程序中8 程序测试9 实验总结通过这次课程设计实训,让我对java程序设计语言以及数据有了更深刻的了解,增强了程序的编写能力,巩固了专业知识,也让我对程序的模块化观念也由模糊逐渐变的清晰了。当然,在程序的运行与调试过程中也出现了很多错误,通过反复地复习课本上的相关知识,不停地修改与调试,最终完成了这两个程序,在调试的过程中,让我认识到了数据结构的灵活性与严谨性,同一个功能可以由不同的语句来实现,但是,在编写程序时要特别注意细节方面的问题,因为一个小小的疏忽就能导致整个程序不能运行。从中让我也认识到了自己的薄弱之处,如对API文档的不够了解,一些类名方法运用的不熟练,所以我们要在学习的过程中集中精力,端正态度,争取把知识学得更扎实,更全面。10 附录(程序代码)计算器程序代码import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.GridLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;public class xxxx extends JFrame implements ActionListener private JTextField tsfResult;/定义用于显示操作结果的文本框private boolean newDigital = true; /用于表示是否是输入的数的标志private double d1; /创建用于二元运算的前操作数private double d2; /创建用于二元运算的后操作数private int optionValue; /创建用于区别加减乘除运算的变量public xxxx()/整个计算机显示放在构造方法中super(计算器);/*设置用于显示运算结果的文本框*/tsfResult = new JTextField(0,30); /创建用于显示操作结果的文本框0表示显示在文本框初始值,30表示长度 tsfResult.setEditable(false);/设置文本框里的内容不可编辑 tsfResult.setBackground(Color.white); JPanel ResultTextPanel = new JPanel();/创建用于存放显示操作结果的文本框的面板 ResultTextPanel.add(tsfResult);/将显示操作结果文本框放入面板中 /*设置用于控制的数字的数字键*/ JButton b1 = new JButton(Backspace); /创建Backspace键 JButton b2 = new JButton(C); /创建C键 JPanel ControlPanel = new JPanel();/创建用于存放面板的控制键 ControlPanel.setLayout(new GridLayout(1,2,2,2);/设置网格布局管理器1行2列每个容器之间的行间距列间距都为2 ControlPanel.add(b1); /将Backspace键放入到面板中 ControlPanel.add(b2); /将C键放入到面板中 b1.addActionListener(this); /为了实现按钮的功能向Backspace键添加监听方法 b2.addActionListener(this); /向C键添加监听方法 /*设置数字和运算符键*/ String dcKey = 7,8,9,/,4,5,6 ,*,1,2,3,-,0,.,+,=;/全放到数组中 JPanel dcKeyPanel = new JPanel(); /创建用于存放数字和运算符键的面板 dcKeyPanel.setLayout(new GridLayout(4,4,2,2);/设置网格布局管理器 for(int i = 0; i 16; i+) / JButton b = new JButton(dcKeyi);/创建数字和运算符键按钮 dcKeyPanel.add(b); /将数字和运算符键按钮放入到布局管理器中由于设置了4行4列 b.addActionListener(this); /向数字和运算符键添加监听方法 Container ct = this.getContentPane(); /创建一个窗体窗体的内容面板对象ct.setLayout(new BorderLayout(); /设置边界布局管理器ct.add(ResultTextPanel,BorderLayout.NORTH); /将显示结果文本框放到常提的上部ct.add(ControlPanel,BorderLayout.CENTER); /将控制键放入到窗体中央ct.add(dcKeyPanel,BorderLayout.SOUTH); /将数字和运算符键放入到窗体的下部pack();/为了能在窗体上显示pack方法调整此窗口的大小setVisible(true);/方法设置窗体是否显示setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置窗体关闭的处理方式public void actionPerformed(ActionEvent e) /在acfionperforme方法实现按钮的功能对应priveted1、都d2那几个String s = (e.getActionCommand(); /要定义两个string变量返回与此动作相关的命令字符串判断点击的是那个按钮是加法减法String str = tsfResult.getText(); /获取运算结果文本框中的字符串if(s.equals(Backspace)String s1 = tsfResult.getText(); /获取文本框中的字符串tsfResult.setText(s1.substring(0,s1.length()-1); /截取最后一个数字if(s.equals(C)tsfResult.setText(0); /把显示屏清零 optionValue = 0; /将用于表示运算符的变量设置为0 newDigital = true; /将表示是否是新输入的数的标设置为true/*数字键*/if(s.equals(0)|s.equals(1)|s.equals(2)|s.equals(3)|s.equals(4)|s.equals(5)|s.equals(6)|s.equals(7)|s.equals(8)|s.equals(9)if(!newDigital)/判断是否是新数tsfResult.setText(str+s);/获取文本框中的字符串elsetsfResult.setText(s);/设置文本框中的字符串newDigital = false;/将是否为新数的标志设置为falsereturn;newDigital = true;if(s.equals(+)d1 = Double.parseDouble(tsfResult.getText();/按下按钮获取前操作数的值optionValue = 1; /设置运算符标志 if(s.equals(-)d1 = Double.parseDouble(tsfResult.getText();/获取前操作数的值optionValue = 2; /设置运算符标志 if(s.equals(*)d1 = Double.parseDouble(tsfResult.getText();/获取前操作数的值optionValue = 3; /设置运算符标志 if(s.equals(/)d1 = Double.parseDouble(tsfResult.getText();/获取前操作数的值optionValue = 4; /设置运算符标志 if(s.equals(=)d2 = Double.parseDouble(tsfResult.getText();/获取后操作数的值/*根据运算符标志的不同值确定计算结果*/switch(optionValue)case 1:tsfResult.setText(String.valueOf(d1+d2);/加法运算break;case 2:tsfResult.setText(String.valueOf(d1-d2);/减法运算break;case 3:tsfResult.setText(String.valueOf(d1*d2);/乘法运算break;case 4:if(d2!=0)tsfResult.setText(String.valueOf(d1/d2);/除法运算elsetsfResult.setText(除数不能为零);/如果该值为0不能进行除法运算return;break;optionValue = 0;/清空运算符/*小数点if(s.equals(.)if(tsfResult.getText().indexOf(.) = -1)/如果不存在小数点/*判断数字是否以0开头*/if(tsfResult.getText().trim().startsWith(0)tsfResult.setText(0.);/设置文本框中的字符串newDigital = false;/看是否为新数的标志设置为falseelsetsfResult.setText(str+.);/设置文本框中的字符串return;/public static void main(String args) new xxxx();记事本程序代码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 ;/格式菜单项:字体private MenuItem miAboutNotepad;/帮助菜单项:关于记事本private TextArea ta;/文本区private String tempString;/临时字符串,用于存储需要复制粘贴的字符串private boolean textValueChanged = false;private int id_font ;/字体 String fileName = ;/上次保存后的文件名和地址/构造函数public Notepad() /框架 mainFrame = new Frame (记事本); 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 (格式); 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 (字体); /帮助 miAboutNotepad = new MenuItem (关于记事本); /添加文件菜单项 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); /添加帮助菜单项 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 , 打开文件 , 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(没有找到文件); System.exit(0); catch( IOException ie) System.out.println(拼写错误); 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 , 保存文件 , 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(没有找到文件); System.exit(0); catch( IOException ie_) System.out.println(拼写错误); 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(没有找到文件); System.exit(0); catch( IOException ie_) System.out.println(拼写错误); System.exit(0); ); /另存为 miSaveAs.addActionListener( new ActionListener() public void actionPerformed(ActionEvent e) FileDialog d=new FileDialog(mainFrame , 保存文件 , 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()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 台阶坡道改建方案范本
- 审计部门年度工作总结
- 情志护理与养生
- 单招综评政策解读
- 教官培训工作述职报告
- 2026届福建省龙岩市北城中学英语九年级第一学期期末调研试题含解析
- 早教教师述职报告
- 新人销售技巧培训
- 2026届四川省成都西蜀实验英语九上期末学业质量监测试题含解析
- 江苏省徐州市市区部分2026届化学九年级第一学期期中学业水平测试试题含解析
- 2025-2030滑雪培训行业市场发展分析及前景趋势预测与投资可行性评估报告
- 课堂高效学习的主阵地 教学设计-2023-2024学年高中上学期主题班会
- 2025年放射工作人员培训考试试题(附答案)
- 高考熟词生义解密(复习讲义)-2026年高考英语一轮复习(北京专用)挖空版
- 2025年北京市中考英语试卷(含答案与解析)
- 浙江名校协作体(G12)2025年9月2026届高三返校联考英语(含答案)
- 2025年环保法律法规基础知识考试卷及答案
- 2026届新人教版高考物理一轮复习讲义:静电场及其应用(含答案)
- 检测基础知识培训课件
- 骨科手术分级目录
- 审计局工程结算审计报告模板
评论
0/150
提交评论