




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、生活需要游戏,但不能游戏人生;生活需要歌舞,但不需生活需要游戏,但不能游戏人生;生活需要歌舞,但不需 醉生梦死;生活需要艺术,但不能投机取巧;生活需要勇气,醉生梦死;生活需要艺术,但不能投机取巧;生活需要勇气, 但不能鲁莽蛮干;生活需要重复,但不能重蹈覆辙。但不能鲁莽蛮干;生活需要重复,但不能重蹈覆辙。 -无名 湖湖 南南 农农 业业 大大 学学 Java 课程设计报告课程设计报告 计算器软件设计计算器软件设计 学生姓名:学生姓名: 学学 号:号: 年级专业:年级专业: 指导老师:指导老师: 学学 院:院: 湖南长沙 提交日期:2007 年 12 月 目目 录录 1. 前言前言2 2概要设计概
2、要设计3 2.1 开发环境开发环境3 2.2 计算器功能计算器功能3 2.3 界面设计界面设计3 2.4 类类 UML 图图4 3. 详细设计详细设计4 3.1 使用的使用的 JAVA 类的说明类的说明4 3.2 类的主要方法类的主要方法5 3.2.1 处理按了运算符后的计算处理按了运算符后的计算5 3.2.2 处理输入字符处理输入字符6 3.2.3 进制的转换进制的转换6 3.2.4 设计总体认识设计总体认识7 3.2.5 程序流程图程序流程图8 4. 运行结果运行结果8 5. 测试分析测试分析9 5.1 程序运行情况程序运行情况9 5.2 程序异常处理程序异常处理9 6. 源程序源程序9
3、参考文献参考文献27 致致 谢谢27 摘要:摘要:该程序是一个图形界面的简单的 java 计算器,具有良好的界面,使 用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低 了数字计算的难度和节约了时间,对人们的生活有一定的帮助。可以进行简单 的四则运算(加、减、乘、除,以及开平方)但仅限于十进制下,还可以进行 (八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入 19 位数, 十进制最多可以输入 18 位数,十六进制最多可以输入 14 位数,backspace 表示 退格, clear 表示初始化,sqrt 表示开平方,界面为灰白对称。 关键字:关键字:java、计算
4、器类、方法、事件 1 前言前言 随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺 少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了 Java 语言之后,我决定使用 Java 语言编写一个简单的计算器,可以实现简单的运 算功能,满足日常基本的工作学习和娱乐需要。 Java 是由 Sun 公司开发的新一代纯面向对象的网络编程语言。其目标是建 立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的 “程序写一次,到处运行”的目标。正因为如此,Java 已成为当今 Internet 上最流行、最受欢迎的一种程序开发语言。 Java 开发小组把 Java 按
5、特性分为基本版、移动版、企业版,每个版本有 一个软件开发包。Java 基本版本叫 Java 2 标准版(Java 2 Standard Edition,J2SE),它包含建立 Java 应用程序或者是 Applet 所需的应用程序编程 接口(API) 。Java 2 移动版(The Java 2 Mobile Edition,J2ME)包含创建 无线 Java 应用程序的 API。还有 Java 2 企业版(The Java 2 Enterprise,J2EE)是 J2SE 的增强版本,包含建立多层架构应用程序 API。 Java 语言是由 C+语言发展起而来的,是一种彻底的面向对象的程序设计
6、 语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。 Java 语言去掉了 C+语言的一些容易引起错误的特性。Java 语言的特点有:面 向对象、跨平台、安全性、多线程和图形功能强。 2 概要设计概要设计 2.1 开发环境开发环境 开发平台:Microsoft Windows XP Professional Service Pack 2 开发工具:JBuilder 2007 + JDK 1.6.0_02 2.2 计算器功能计算器功能 功能 1:按下数字键在液晶平上会显示数字,这时计算器最基本的功能。 功能 2:在任何时候按下“”键,计算器文本框上的数字置反号。 功能 3:第一次
7、按下“运算”键,再按下数字键,将重新输入第二个数字。再次按下 “运 算”键,将算出前两个数字运算的结果,然后按下数字,将又重新输入新的数字。 功能 4:输入数字后,按下“等于”键,将仍输出原来的数 输入运算符和第二个数字 后再按下“=”键,将得到二者运算的结果,然后又重复功能 3 和功能 4 。 功能 5:按下清除“C”键,数据被全部清楚。 2.32.3 界面设计界面设计 图 2.3 计算器面板 2.4 类类 UML 图图 ArrayStackChar UML 图如图 2.3A 所示: ArrayStackDouble UML 图如图 2.3B 所示 图 2.4A 图 2.4B 3 详细设计详
8、细设计 3.1 计算器使用的计算器使用的 Java 类的说明类的说明 类名: This_number_too_big 作用: 自定义的异常类,用来处理计算结果溢出 继承的父类: Exception 类 实现的接口: 没有 class This_number_too_big extends Exception /自定义的一个结果溢出异常类 类名: Jsp2003 作用: 主类。 继承的父类: Frame 类 实现的接口: ItemListener 类,ActionListener 类 class Jsp2003 extends Frame implements ItemListener,Acti
9、onListener public int number=0,length=18; /number 是用来记录输入的数字个数, /length 是用来设置在不同进制下允许输入的最多数字位数,默认为十 进 制 public char mark=n; /设置运算符号为没有即为n,它的值是+-*/ public double data=0; /设置运算数据为零 public char ch; /用来临时存放所按按钮的第一个字符 public boolean Refresh=false; /设置 lab 是否要在输入数据的时候刷新,初始为否 程序的设计参考了 Sun Java 网站里的大量实例,比如
10、Layout 的使用、 Event 的处理、Components 的添加与应用等等。其中: public class NewCalc extends JFrame implements ActionListener 语句实现了 ActionListener 接口,因此可以调用 addActionListener(this) 方法对按钮进行点击监听,在下面的 public void actionPerformed(ActionEvent e)方法里面对各个点击事件进行处理。 3.2 类的主要方法 3.2.1 处理按了运算符后的计算: public void js() throws This_nu
11、mber_too_big if (mark=n) mark=ch; / data=Double.parseDouble(lab.getText(); Refresh=true; else switch (mark) case +: data+=Double.parseDouble(lab.getText(); break; case -: data-=Double.parseDouble(lab.getText(); break; case *: data*=Double.parseDouble(lab.getText(); break; case /: data/=Double.parseD
12、ouble(lab.getText(); break; lab.setText(Double.toString(data); mark=ch; Refresh=true; number=lab.getText().length(); / System.out.println(lab.getText(); if (dataDouble.MAX_VALUE) throw new This_number_too_big(); 3.2.2 处理输入字符: if(Refresh=true) lab.setText(0); number=0; Refresh=false; if(lab.getText()
13、.charAt(0)=0 number+; else if(numberlength) number+;lab.setText(lab.getText()+ch); 3.2.3 八进制或十六进制转换成十进制 I: public String goto_10(String s,long l) /参数 s: 是要转换的字符串,由于输入的控制,保证了字符串的合法 性; /参数 l: 使用来设置是将 8 进制还是 16 进制转换成 10 进制,它的有 效值为 8 或 16; String str=s; /用来转换的字符串 long j=l; /表示进制 long lg=0,jing=1;/lg 用来记
14、录权乘和,jing 用来记录位权 char cha;/临时记录要转换的字符 for(int i=1;i=str.length();i+) cha=str.charAt(str.length()-i); switch(cha) case 1: lg=lg+1*jing;break; case 2: lg=lg+2*jing;break; case 3: lg=lg+3*jing;break; case 4: lg=lg+4*jing;break; case 5: lg=lg+5*jing;break; case 6: lg=lg+6*jing;break; case 7: lg=lg+7*jin
15、g;break; case 8: lg=lg+8*jing;break; case 9: lg=lg+9*jing;break; case A: lg=lg+10*jing;break; case B: lg=lg+11*jing;break; case C: lg=lg+12*jing;break; case D: lg=lg+13*jing;break; case E: lg=lg+14*jing;break; case F: lg=lg+15*jing;break; jing*=j; /位权升一级,为下次使用做好准备 return Long.toString(lg); /end Stri
16、ng goto_10() method 3.2.4 设计的总体认识 JAVA 设计的摘要 JAVA 设计的目录结构 JAVA 设计的概要和详细设计 JAVA 设计的版权意识 JAVA 设计需要编译的环境 JAVA 设计的实用性 3.2.5 程序流程图程序流程图 计算结果显示 接受用户输入 是否再 次计算 退出 是 否 处理异常 图 3 绘制计算器方法 PAD 图 开始 选择你要计算运行的进制 10.8.16 十六进制八进制默认十进制 进制转换 刷新 4 运行结果运行结果 图 4 计算结果显示 5 测试分析测试分析 5.1 程序运行情况程序运行情况: 程序正常的响应按钮事件,输入的数值长度受变量
17、 length 的限定,进行混合四 则运算的时候,结果如果不是很大,可以正常显示,但如果结果很大,就可能 采用科学记数方式,这样带来了进制转换时的麻烦,需要特殊的处理科学记数 里的 E ,当结果太大的时候,有可能超出可能表示的最大值, (结果溢出) ,这 个时候就要对结果进行必要的异常处理,我在输出结果的方法内设置 if 语句, 如果结果大于某一个值就抛出一个 This_number_too_big 类型的类,再使用 try-catch,捕捉输出结果的方法抛出的异常对象。然后进行,重制归零的处理。 5.2 程序异常处理程序异常处理: 当结果超出 Double.MAX_VALUE 时,将抛出一个
18、 This_number_too_big 类 的异常对象,这个是我自定义的一个异常类它继承自 Exception 类,然后使 用 try-catch 去捕捉这个异常,异常的处理如下: try js(); catch(This_number_too_big e) lab.setText(0); number=0; mark=n; Refresh=false; System.out.println(The number is too big); /如果出现异常则初始化效果如同 clear 键 6 6 程序清单:程序清单: import java.awt.*; import java.awt.eve
19、nt.*; class This_number_too_big extends Exception / 自定义的一个结果溢出异常类 / ActionLintsner 是所有监听器的父类,其它监听器可以监听的事件都可以被 它捕获 / ItemListener 用于捕获带有 item 的组件产生的事件,如 ComboBox,CheckBox,RadioButton,ToggleButton class hejiang extends Frame implements ItemListener, ActionListener public hejiang() addWindowListener(ne
20、w WindowAdapter() public void windowClosing(WindowEvent e) dispose(); System.exit(0); / 给窗口注册一个事件监听器,当你点了窗口右上方的叉号时, 此方法被调用 ); static hejiang mainFrame = new hejiang(); / 创建一个 mainFrame static Label lab1 = new Label(0); static Label lab = new Label(0); static Panel pnl1 = new Panel(new GridLayout(4,
21、3, 3, 3); / 创建新 的面板.布局管理 static Panel pnl2 = new Panel(new GridLayout(4, 1, 3, 3); static Panel pnl3 = new Panel(new GridLayout(1, 2, 3, 3); static Panel pnl4 = new Panel(new GridLayout(6, 1, 3, 3); static Button bt9 = new Button(9); static Button bt8 = new Button(8); static Button bt7 = new Button(
22、7); static Button bt6 = new Button(6); static Button bt5 = new Button(5); static Button bt4 = new Button(4); static Button bt3 = new Button(3); static Button bt2 = new Button(2); static Button bt1 = new Button(1); static Button bt0 = new Button(0); static Button btdot = new Button(.); static Button
23、btequ = new Button(=); static Button btadd = new Button(+); static Button btsub = new Button(-); static Button btmul = new Button(*); static Button btdev = new Button(/); static Button btA = new Button(A); static Button btB = new Button(B); static Button btC = new Button(C); static Button btD = new
24、Button(D); static Button btE = new Button(E); static Button btF = new Button(F); static Checkbox ckb8 = new Checkbox(八进制); static Checkbox ckb10 = new Checkbox(十进制); static Checkbox ckb16 = new Checkbox(十六进制); static Button btc = new Button(clear); static Button btt = new Button(backspace); public i
25、nt number = 0, length = 18; / number 是用来记录输入的数字个数,length 是用来设置在不同进制下允许 输入的最多数字位数,默认为十进制 public char mark = n; / 设置运算符号为没有即为n ,它的值是 + - * / public double data = 0; / 设置运算数据为零 public char ch; / 用来临时存放所按按钮的第一个字符 public boolean Refresh = false;/ 设置 lab 是否要在输入数据的时候刷新, 初始为否 public static void main(String
26、args) System.out.println(Starting hejiang.); lab.setAlignment(Label.RIGHT); / 对齐方式 lab.setBackground(Color.lightGray); / 背景色 lab.setForeground(Color.BLUE); / 前景色 lab.setFont(new Font(Serief, Font.BOLD, 18);/ 字体设置 lab.setBounds(14, 33, 216, 40); lab1.setAlignment(Label.RIGHT); / 对齐方式 lab1.setBackgrou
27、nd(Color.lightGray); / 背景色 lab1.setForeground(Color.BLUE); / 前景色 lab1.setFont(new Font(Serief, Font.BOLD, 18);/ 字体设置 lab1.setBounds(14, 75, 216, 40); mainFrame.add(lab); mainFrame.add(lab1); CheckboxGroup grp = new CheckboxGroup(); ckb8.setCheckboxGroup(grp); ckb10.setCheckboxGroup(grp); ckb16.setCh
28、eckboxGroup(grp); ckb8.setBounds(14, 115, 55, 25); / setBounds()方法是可以设定 控件的大小和位置 ckb10.setBounds(69, 115, 55, 25); ckb16.setBounds(124, 115, 65, 25); ckb8.setState(false); ckb10.setState(true); ckb16.setState(false); mainFrame.add(ckb8); mainFrame.add(ckb10); mainFrame.add(ckb16); pnl1.setBounds(18,
29、 180, 120, 150); pnl2.setBounds(144, 180, 40, 150); pnl3.setBounds(14, 140, 170, 36); pnl4.setBounds(190, 140, 40, 190); pnl1.add(bt7); pnl1.add(bt8); pnl1.add(bt9); pnl1.add(bt4); pnl1.add(bt5); pnl1.add(bt6); pnl1.add(bt1); pnl1.add(bt2); pnl1.add(bt3); pnl1.add(bt0); pnl1.add(btdot); pnl1.add(bte
30、qu); pnl2.add(btadd); pnl2.add(btsub); pnl2.add(btmul); pnl2.add(btdev); pnl3.add(btt); pnl3.add(btc); pnl4.add(btA); pnl4.add(btB); pnl4.add(btC); pnl4.add(btD); pnl4.add(btE); pnl4.add(btF); btA.enable(false); btB.enable(false); btC.enable(false); btD.enable(false); btE.enable(false); btF.enable(f
31、alse); mainFrame.add(pnl1); mainFrame.add(pnl2); mainFrame.add(pnl3); mainFrame.add(pnl4); mainFrame.setResizable(false); / 窗口可以最小化和关闭,但是不 能被任意改变大小 mainFrame.setLayout(null); mainFrame.setSize(240, 350); mainFrame.setTitle(小型计算器); mainFrame.setVisible(true); / 组件可见 ckb8.addItemListener(mainFrame); c
32、kb10.addItemListener(mainFrame); ckb16.addItemListener(mainFrame); / 把事件聆听者向各个组键注册 bt1.addActionListener(mainFrame); bt2.addActionListener(mainFrame); bt3.addActionListener(mainFrame); bt4.addActionListener(mainFrame); bt5.addActionListener(mainFrame); bt6.addActionListener(mainFrame); bt7.addAction
33、Listener(mainFrame); bt8.addActionListener(mainFrame); bt9.addActionListener(mainFrame); bt0.addActionListener(mainFrame); btadd.addActionListener(mainFrame); btsub.addActionListener(mainFrame); btmul.addActionListener(mainFrame); btdev.addActionListener(mainFrame); btt.addActionListener(mainFrame);
34、 btc.addActionListener(mainFrame); btdot.addActionListener(mainFrame); btequ.addActionListener(mainFrame); btA.addActionListener(mainFrame); btB.addActionListener(mainFrame); btC.addActionListener(mainFrame); btD.addActionListener(mainFrame); btE.addActionListener(mainFrame); btF.addActionListener(m
35、ainFrame); / end main() mothed / checkbox 事件的处理 public void itemStateChanged(ItemEvent e) mark = n; Refresh = false; / 规定当进制转换时以前输入的运算符失效 if (ckb8.getState() = true) btA.enable(false); btB.enable(false); btC.enable(false); btD.enable(false); btE.enable(false); btF.enable(false); bt9.enable(false); b
36、t8.enable(false); btdot.enable(false); btadd.enable(false); btmul.enable(false); btsub.enable(false); btdev.enable(false); btequ.enable(false); / 在八进制的情况下对有些按件的管理 if (length = 18) lab.setText(goto10_8(lab.getText(); number = lab.getText().length(); if (length = 14) lab.setText(goto_10(lab.getText(),
37、 16L); lab.setText(goto10_8(lab.getText(); number = lab.getText().length(); / 将其他进制转换成八进制 length = 19; / 在八进制下允许输入数字个数最多为 19 位 if (ckb10.getState() = true) btA.enable(false); btB.enable(false); btC.enable(false); btD.enable(false); btE.enable(false); btF.enable(false); bt9.enable(true); bt8.enable(t
38、rue); btdot.enable(true); btadd.enable(true); btmul.enable(true); btsub.enable(true); btdev.enable(true); btequ.enable(true); / 在十进制的情况下对有些控件的管理 if (length = 19) lab.setText(goto_10(lab.getText(), 8L); number = lab.getText().length(); if (length = 14) lab.setText(goto_10(lab.getText(), 16L); number
39、= lab.getText().length(); if (length = 19) lab1.setText(goto_10(lab1.getText(), 8L); number = lab1.getText().length(); if (length = 14) lab1.setText(goto_10(lab1.getText(), 16L); number = lab1.getText().length(); length = 18; if (ckb16.getState() = true) btA.enable(true); btB.enable(true); btC.enabl
40、e(true); btD.enable(true); btE.enable(true); btF.enable(true); bt9.enable(true); bt8.enable(true); btdot.enable(false); btadd.enable(false); btmul.enable(false); btsub.enable(false); btdev.enable(false); btequ.enable(false); / 在十六进制的情况下对有些按件的管理 if (length = 18) lab.setText(goto10_16(lab.getText(); n
41、umber = lab.getText().length(); if (length = 19) lab.setText(goto_10(lab.getText(), 8L); lab.setText(goto10_16(lab.getText(); number = lab.getText().length(); / 将其他进制转换成十六进制 length = 14; / 在十六进制下允许输入数字个数最多为 14 位 / end itemStateChanged(ItemEvent e) method / 按钮事件的处理 public void actionPerformed(ActionE
42、vent m) / 鼠标点激就触发事件监 听 Button btn = (Button) m.getSource(); ch = btn.getLabel().charAt(0); deposit(ch); switch (ch) case c: lab.setText(0); number = 0; mark = n; Refresh = false; break;/ 初始化 case 1: enter(); break; case 2: enter(); break; case 3: enter(); break; case 4: enter(); break; case 5: enter
43、(); break; case 6: enter(); break; case 7: enter(); break; case 8: enter(); break; case 9: enter(); break; case 0: if (Refresh = true) lab.setText(0); number = 0; Refresh = false; if (lab.getText().charAt(0) = 0 if (number length) number+; lab.setText(lab.getText() + ch); else break; break; case A:
44、enter(); break; case B: enter(); break; case C: enter(); break; case D: enter(); break; case E: enter(); break; case F: enter(); break; case .: if (Refresh = true) lab.setText(0); number = 0; Refresh = false; if (lab.getText().indexOf(.) = -1) number+; lab.setText(lab.getText() + ch); else break; br
45、eak; case b: if (number = 0) break; else if (-number = 0) lab.setText(0); number = 0; else if (number != 1) lab.setText(lab.getText().substring(0, number); else lab .setText(Character.toString(lab.getText() .charAt(0); break; case +: try js(); catch (This_number_too_big e) lab.setText(0); number = 0
46、; mark = n; Refresh = false; System.out.println(The number is too big); break; / 如果出现异常则初始化效果如同 clear 键 case -: try js(); catch (This_number_too_big e) lab.setText(0); number = 0; mark = n; Refresh = false; System.out.println(The number is too big); break; / 如果出现异常则初始化效果如同 clear 键 case *: try js();
47、catch (This_number_too_big e) lab.setText(0); number = 0; mark = n; Refresh = false; System.out.println(The number is too big); break; / 如果出现异常则初始化效果如同 clear 键 case /: try js(); catch (This_number_too_big e) lab.setText(0); number = 0; mark = n; Refresh = false; System.out.println(The number is too
48、big); break; / 如果出现异常则初始化效果如同 clear 键 case =: try js(); catch (This_number_too_big e) lab.setText(0); number = 0; mark = n; Refresh = false; System.out.println(The number is too big); break; / 如果出现异常则初始化效果如同 clear 键 / end actionPerformed(ActionEvent e) method / 八进制或十六进制转换成十进制 I public String goto_10
49、(String s, long l) / 参数 s: 是要转换的字符串,由于输入的控制,保证了字符串的合法性; / 参数 l: 使用来设置是将 8 进制还是 16 进制转换成 10 进制,它的有效值 为 8 或 16; String str = s; / 用来转换的字符串 long j = l; / 表示进制 long lg = 0, jing = 1;/ lg 用来记录权乘和,jing 用来记录位权 char cha;/ 临时记录要转换的字符 for (int i = 1; i = 16) ch = lg % 16; k = (int) ch; switch (k) case 10: st
50、= A + st; break; case 11: st = B + st; break; case 12: st = C + st; break; case 13: st = D + st; break; case 14: st = E + st; break; case 15: st = F + st; break; default: st = Long.toString(ch) + st; lg = lg / 16; k = (int) lg; switch (k) case 10: st = A + st; break; case 11: st = B + st; break; cas
51、e 12: st = C + st; break; case 13: st = D + st; break; case 14: st = E + st; break; case 15: st = F + st; break; default: st = Long.toString(lg) + st; return st; / end goto10_16() method / 十进制转换成八进制? public String goto10_8(String s) / 参数 s: 是要转换的字符串,由于输入的控制,保证了字符串的合法性; String str = s; if (str.charAt
52、(0) = -) / 如果有负号则出去负号 str = str.substring(1, str.length() - 1); if (str.indexOf(E) != -1)/ 如果是科学计数值则出去小数点和 E 后面的数 str = str.charAt(0) + str.substring(2, str.indexOf(E); if (str.indexOf(.) != -1)/ 如果有小数点则出去小数点及小数点 后面的内容 str = str.substring(0, str.indexOf(.); lg = Long.parseLong(str); while (lg = j) c
53、h = lg % j; st = Long.toString(ch) + st; lg = lg / j; st = Long.toString(lg) + st; return st; / end goto10_8() method / 输入字符 public void enter() if (Refresh = true) / 如果已经设置了 运算符则在下一次输入数据的时候要把以前 lab 的 内容清除掉 lab.setText(0); number = 0; Refresh = false; if (lab.getText().charAt(0) = 0 number+; else if (number Double.MAX_VALUE) / 如果 data 超过 double 类型的最大值则抛出自定义的一个异常 类 throw new This_number_too_big()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纺织企业人力资源管理的应用考核试卷
- 质量检测服务采购合同
- 续签劳动合同时的单位规定
- 五金产品售后服务体系构建考核试卷
- 矿山生产计划与调度策略考核试卷
- 工艺美术品行业竞争格局分析考核试卷
- 畜牧良种繁殖中微量元素的营养调控考核试卷
- 电子材料在印刷电子技术中的应用考核试卷
- 竹材采运过程中的质量控制考核试卷
- 涂料店铺营销新模式考核试卷
- 2024上海市招聘社区工作者考试题及参考答案
- 2024年河北省初中学业水平适应性测试生物学试卷
- 玻璃水汽车风窗玻璃清洗剂检验报告单
- 机动车驾驶人考试场地及其设施设置规范-
- DB37-T 2673-2019 医疗机构能源消耗定额标准-(高清版)
- 2023届毕业论文格式要求(福建农林大学)
- 玻璃工艺学:第8章 玻璃的熔制
- 黄元御“下气汤十二方”治诸多内科杂病疑难重症
- 肝硬化-本科授课课件
- 《蒋勋眼中的宋词》阅读练习及答案
- 全回转钻机在国内的发展与应用(课堂PPT)
评论
0/150
提交评论