版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中南大学Java课程设计报告题 目 打字游戏 学生姓名 窦立阳 指导教师 陈丽萍 学 院 信息科学与工程学院 专业班级 计科1204 完成时间 2015年1月15日 目录第一章 实验要求.3第2章 总体设计2.1 界面设计 .42.2 运行流程 .42.3 逻辑设计 .42.4 积分设计 .4第3章 详细设计3.1 主面板 .53.1.1 两个按键 .53.1.2 相关全局变量 .53.1.3 全局变量说明 .5 3.1.4 相关全局函数 .73.2 字符下落模块 .73.2.1 WordLabel .73.2.2 WordFallControl .83.2.3 WordFallLabel .
2、83.3 速度控制模块 .83.4 按键模块设计 .83.5 键盘监听事件 .93.6 积分模块设计 .93.7 事件模块设计 .10第4章 调试分析4.1 第一次调试 .114.2 第二次调试 .114.3 第三次调试 .12第5章 运行结果 .13第6章 课程设计总结 .17第7章 参考文献 .19第8章 附录:带注释的源代码8.1 Wordfall .208.1.1 WordFallControl类 .208.1.2 WordLabel类 .228.1.3 WordFallLabel类 .238.2 ScoreLabel类 .248.3 StartButton类 .258.4 TimeL
3、abel类 .268.5 AAAAA类:程序的主函数入口 .288.6 Maintain类 .30第1章 实验要求【问题描述】设计实现一个打字游戏,界面参见图2-2,具备如下功能:l 点击“开始”按钮,产生随机字符从屏幕上方下落;l 点击键盘上按钮,如果正确,当前的字符消失,产生新的按钮从上方继续落下。l 提供速度调整和积分功能。图2-2 打字游戏界面第2章 总体设计2.1 界面设计根据实验要求中的图2-2,在主面板中,1.1.1 有一个模块控制各个字符的生成并且控制他们的自动下落,并在正确触发时,字符不可见;1.1.2有一个模块用于设置下落速度;1.1.3有两个按键,分别为“开始”和“结束”
4、,用于字符下落的开始和结束;1.1.4整个面板处于键盘事件监听中,所以还有一个模块负责监听键盘事件;1.1.5相应的,根据要求,会有一个模块用于将键盘事件和下落的字符进行操作,并且计算出积分。2.2 运行流程1.2.1 程序启动,程序等待按键“开始”的事件的触发;1.2.2 当“开始”键触发后,负责字符下落的模块,将持续产生字符,并使其下落;1.2.3 键盘开始被监听,从键盘的按键触发,向程序返回值;1.2.3 积分模块开始工作,将字符下落模块的字符和键盘事件返回的值进行比较,得出积分,并且将积分值显示在面板上;1.2.4 如果点击“停止”按键,所有模块停止工作,等待程序关闭,或者等待“开始”
5、按键事件的再次触发,从1.2.1继续这一流程。 2.3 逻辑设计1.3.1 字符不断产生并且下降,需要一个线程控制产生字符,然后还应该有一个线程对面一个字符,控制其下落。1.3.2 键盘被按下后,立刻会有值返回到程序中,积分模块会每隔一段时间将,键盘事件返回的值,和当前需要按下的值进行比较。2.4 积分说明当开始产生字符后,会有很多字符都是可输入的,但是当前可输入的字符只有一个,所以可以考虑设计一个链表,没当产生一个字符,便将该字符存入链表中,并且有一个指针永远指向当前需要输入的值。由于界面大小有限,当字符持续下落超过界面大小时,不能够通过玩家来猜测,已经不见的当前需要输入字符,所以当界面上字
6、符超过十个时,便认为该玩家反应时间过长,判定其为错误,并且将当前需要输入的字符设置为下一个。并且从游戏角度考虑,当这种情况出现3次后,便可以判定本轮游戏结束。第3章 详细设计3.1 主面板public class GameFrame extends JFrame主面板中主要涉及的是两个按键,各个组件在面板上的布置,以及其他的全局变量的设置。3.1.1两个按键 JButton btnStart = new JButton() JButton btnStop= new JButton() ScoreLabel scoreLabel KeyEventPanel keyEventPanel WordF
7、allLabel wordFallLabel JSlider slider3.1.2相关的全局变量boolean START_FLAG = false;ArrayList<Integer> CODE_LIST = new ArrayList<Integer>();ArrayList<WordLabel> wordLabels = new ArrayList<WordLabel>();int CHAR_VALUE = 0;int KEY_VALUE = 0;int POINTER = 0;int MAXFALSE = 3;int SUCCESSTI
8、ME = 0;int TRYTIME = 3;int SPEED = 1400;public static void init()CODE_LIST.clear(); wordLabels.clear();CHAR_VALUE = 0;KEY_VALUE = 0;POINTER = 0;MAXFALSE = 3;SUCCESSTIME = 0;TRYTIME = 3;3.1.3全局变量说明:START_FLAG:由于在程序启动时,各个组件就已经开始工作,用START_FLAG使他们通过if语句,不做任何动作,当START_FLAG = true时,便可以开始进行游戏,避免了反复启动线程可能会造
9、成意外情况的麻烦。CODE_LIST:在游戏线程启动后,会产生很多的字符,这些字符若存放在局部空间内,很有可能会出现其他组件需要调用该值并且需要通过一系列传值过程才能实现,将这些值放在一个公共空间内的列表中,虽然会出现安全上面的问题,但是无疑为程序的实现减少了很多的工作,宽且这也只是一个游戏,在安全上的问题可以忽略。wordLabels:这个全局变量的设置,主要是为了实现下落字符的消失。产生的字符会放在label中,通过控制label的行为来控制字符的行为。将每一个WordLabel实例放在该列表中,可以通过在其他空间的控制来实现自己的想法。CHAR_VALUE:里面存放的是产生的字符的值,每
10、一个字符都可以通过ASCII码转变为一个整数类型的值,通过比较整数值来确定是否匹配。KEY_VALUE:存放了最近一次从键盘内获得的值,由于可能出现连续出现相同字符的情况,KEY_VALUE里的值必须定时清空,考虑之后,与每次在每次比较完之后进行清空操作比较合适。POINTER:在CODE_LIST中会有很多数,但是当前正确的值,只有一个,那就是POINTER指向的位置,通过判断KEY_VALUE和CHAR_VALUE的值,对POINTER进行操作,具体操作会在ScoreLabel中说明。MAXFALSE,TRYTIME:最大失误次数,当超过这个次数时,当局游戏就会结束。SUCCESSTIME
11、:本轮当前成功次数,统计成功次数用来积分。SPEED:控制字符下落速度,这个值会与难度条上的值具有映射关系。3.1.4全局方法说明:public static void init();在新的一轮游戏开始前,全局变量中的值任然是上一轮的数据,需要对其中的数据进行初始化,设置为公共方法便于调用,其中的操作都是必须的操作,无多余也无漏缺。3.2 字符下落模块3.2.1 public class WordLabel extends JLabel:这个类主要负责创建一个下落的字符。由于共有26个字母和10个数字会在游戏中被记为字符,通过随机函数(int)(Math.random()*35) 产生36个随
12、机数,根据ASCII码的规则,字符0-9对应的职位48-57,根据产生的值加上48,便可以得到字符0-9,同理字符A-Z对应的值为65-90,根据产生的值,由于是从10开始,所以加上55,就可以得到对应的字母字符,每产生一个字符,便将该字符添加到CODE_LIST中,以作他用。3.2.2 public class WordFallControl extends Thread:在WordLabel被实例化后,需要有个方法控制其下落,由于会产生喝多字符,对众多字符进行统一管理,并且还要考虑到字符在其他情况下的动作,太过复杂,所以在这个组件中,只考虑字符的下落,每个字符交由一个控制对象控制。每过SD
13、.SLEEP 毫秒的时间,WordLabel的位置便会下移一个单位,这个单位设置为50 。交由线程使其实现持续下降。3.2.3 public class WordFallLabel extends JLabel implements unnable:将前两个组件进行组合便是这个类的作用,只要这个实例运行正常,那么出现问题就不会是该模块的问题,除非是出现对字符的艺术化或是下落的幅度的改变这一类的需求。3.3 下落速度模块JSlider slider = new JSlider();JSlider自带的方法个头getValue()可以获得滑块的值,向滑块添加监听事件addChangeListene
14、r(),在滑块移动时,可以将改变之后的值映射到SD.SPEED上,以控制速度的变化。滑块只能在一轮游戏开始前滑动,从程序实现角度考虑的理由是,当移动滑块时,整个面板的焦点便会由按键转移到滑块上来,这是键盘事件监听的对象也会转移到这个滑块部件上来,这时候有两种方法:一是在游戏中不允许移动滑块,二是在滑块中添加键盘监听事件。相比较之下第一种简单而且符合大多数人的操作习惯,完全可以施行。 3.4 按键模块设计同上一小节所说的焦点的转移问题,将“开始”和“结束”设计为一个键,使整个面板的焦点可以在游戏开始到游戏结束都一直在同一个部件上,而且实现也很简单,只要持续监听START_FLAG的值,分辨当前的
15、游戏状态,就能确定是该显示“开始”或是”结束“了。 3.5 键盘监听设计键盘事件不是要向text area 之类的部件中输入字符,而是向KEY_VALUE赋值,重写KeyListener类,使键盘按下事件的响应设置为KEY_VALUE = event.getKeyCode()。3.6 积分模块设计public class ScoreLabel extends JLabel implements Runnable该模块涉及到的变量有KEY_VALUE,CHAR_VALUE,CODE_LIST,POINTER,SUCCESSTIME,TRYTIME。此时键盘事件监听中,只要有按键被按下,就会给KE
16、Y_VALUE赋一个值,POINTER指向一个位置,将CODE_LIST.get(POINTER)的值与KEY_VALUE比较如果相等,则POINTER的值加一,指向列表中的下一个值(如果列表中还有的话),SUCCESSTIME加一;如果不相等,考虑这个值存在时间是否太长了,每个值都只有10个单位周期的生命这个可以通过列表的长度判断出来,每个单位周期,都会向列表中添加一个新的字符,当CODE_LIST.size()-POINTER > 9时,POINTER自加一,指向下一个,TRYTIME减一,否则不进行任何操作。3.7 时间模块设计这部分主要是为了熟悉一边线程的用法public cla
17、ss TimeLabel extends JLabel implements Runnable/* * */private static final long serialVersionUID = 1L;private Date date = new Date();private SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");public TimeLabel()new Thread(this).start();Overridepublic void run() / TODO
18、Auto-generated method stubint i = 0;while(i < 10)try date = new Date();this.setText(sdFormat.format(date);new Thread();Thread.sleep(1000); catch (Exception e) / TODO: handle exceptione.printStackTrace();第4章 调试分析几乎每写一个类就会调试一次,类里面的修改也是很多的,下面只是找了三次比较大的改动进行说明。4.1 第一次调试:第一次调试没有,加入按钮和难度条,主要是为了确定程序的主体部分
19、能够正确执行。发现的问题有。一超出范围异常:在所有线程启动后,记分板会不断调用CODE_LIST.get(POINTER)的方法,在第一次成功输入后由于记分板线程的sleep时间短于,WordLabel产生线程的sleep时间,所以,列表内还没有第二个值的时候便会要取第二个,所以出现这个问题。二 START_FLAG在线程执行的过程中何时判断的问题,开始时是放在第一位进行测试的,但是线程会在进行到START_FLAG为false就结束,除非重新实例化各个线程,但是,重新实例化又会在面板上添加新部件,导致新建一个游戏面板,所以让游戏进程一直执行,遇到START_FLAG为false是不做任何操作
20、,线程并不中断。4.2 第二次调试:第二次调试也可以说是第二次大修改的主题内容就是全局变量的设计。随着整个程序添加的不见越来越多,将各部分产生的值保存在局部,并且调用get和set方法去获得值显得越来越麻烦,而且很多地方涉及到部件之间的相互取值,如score label和word fall control 两块,score 需要里面的字符的值,而word fall 需要score里面对值的判断情况,以便字符在被按下后及时消失。需要在两个类中添加太多static数据和方法,同时,静态变量和方法的调用又出现了很多限制问题。最后决定如3.1.1中列出的一系列全局变量,大大简化了调用复杂度,也使整个程
21、序显得简洁明了。4.3 第三次调试:第三次调试是这次试验中最简单的问题,也是最复杂的问题,经验问题。在一步一步添加完所有部件,并且对所有部件单独测试后,我发现只要点击开始按钮后,不能够正常监听键盘事件了。开始时,键盘监听事件是放在WordLabel中执行的,在单独测试时不会有任何问题。多方面查找资料也没有发现类似的问题。于是从书本上的实例翻起,不经意想到,如果两个文本框同时显示却只能向获得焦点的那个文本框内输入字符这个情况,瞬间清楚了问题所在。在进行调整后,重新执行程序,已经能够完成预期目标。第5章 运行结果主在程序调试完成后,可使用的稳定版本的使用情况如下:图6-1 打字游戏开始界面如图 6
22、-1显示。程序开始时,左上角为记分板,没有任何数据显示;右上角为显示当前时间;中间部分使游戏的主要界面,用来显示下落的字符,由于游戏尚未开始,没有任何显示;左下角是游戏开始的按钮,当前显示为“开始,”在点击后,变为“结束”,并且记分板开始积分,游戏住界面开始下落字符,参照图6-2;右下角为难度调整框可以设置难度,左低右高。图6-2 打字游戏进行中如图 6-2显示。游戏正常开始后,记分板开始积分,会记录正确的个数,如果超出时间为按下正确的字符,剩余机会就会减少一次,在记分板的最后面,会有提示当前应当输入的正确字符;游戏主界面会有字符持续落下,当按下正确的字符后,该字符消失,正确字符更新;左下角的
23、按钮在点击使游戏开始后,变为“结束”按钮;右下角的难度条,可以在游戏前移动,游戏中不可以移动,具体原因参照在第三章详细设计中,设计键盘监听事件的时候已经说明。图6-3 打字游戏正常退出如图 6-3 显示。当点击结束按钮后,左下角的按钮将会变为“开始”按钮;记分板保持显示,用于玩家查看此次游戏的成绩,游戏主界面上不会在产生下落字符,直到下轮游戏的开始;该轮游戏产生的字符继续下落完毕,但是此时已经可以开始进行下轮游戏了。这点是设计上的缺憾,在以后会进行修改使其更加完善。图6-4 打字游戏错误过多退出如图 6-4 显示。此次本轮游戏结束的原因是错误过多,没有剩余机会了。玩家仍然可以在记分板上查看到自
24、己的成绩。左下角的按钮也适时变为了”开始“按钮。第6章 课程设计总结本次实验的内容选取的是打字游戏,最后完成了实验要求内的全部内容。实验过程中,没有借助外力,参考内容也只是Java 的API文档,在这一点上自己还是比较满意的。实验完成后,与其他同学比较的情况是,美工不足,界面只是按照实验要求上的例图设计的,没有添加更有意思的东西。这次试验有两个小的收获。一是加深的对线程的理解。在设计之初,出现的一个最大问题就是在一个线程内添加了另外一个线程,而且副线程不是自启动的,在主线程中断时,副线程也是出于终端状态,没有被执行到,经过多次断点测试发现了这个问题,这个结论可能是错误的,但是的确适用于我遇到的
25、情况。二是发现编程这个东西,跟技术有60%的关系,跟知识储备有30%的关系,剩下的10%就要看个人的经验。30%看看书,查查资料就行。60%注重的是对代码量的考验。10%是对代码复杂度的考验,相似的代码敲一万遍,也还是那样,时间长了不做,就忘了,各个组件都能正常运行,组合在一起后却会出现焦点变化的问题,如果不是这次遇到,并且发现了,以后遇到类似的问题,我还是不知道。这个问题虽然简单,我也一直迟迟没有请教老师或同学,一是觉得放不下脸,二也是锻炼一下自己的思维能力,可能第一次解决没有遇到过的问题会花费一天两天,第二次可能就是半天,而且自己发现问题所在,在自己的闹钟印象更加深刻,自己也更加有成就感。
26、大的收获是,自己这次尝试着从结构层次的角度考虑程序的设。将整个程序分为各个组件,最后通过组件的结合形成整个程序。程序简单,并没有很多层次,而且层次对程序的重要性也不是那么明显,但是尝试着这么做,并且在以后的每一次都向这方面努力,我想对我程序员生活的提升是会有很大的帮助的。实验只需要选取一个实验完成,但是其他实验也是老师花费心思,想出来的题目,比如说图形编辑系统,好像很少有人选,但是看上去也是挺有意思的,决定在寒假的时候,着手实现以下,虽然java的优势并不在于此,但是从以上所说的各个方面也很有必要。第7章 参考文献JDK1.5API_CN(全).chm:C:UsersadminDesktopA
27、PIJDK1.5API_CN(全).chm第8章 附录:带注释的源代码本章附上整个课程设计的游戏源代码,以及相关测试代码。 相关组件:Component包: 8.1 Wordfall子包: 8.1.1 wordFallControl类:字符下落的规律package release.conponent.wordfall;import javax.swing.JLabel;import release.SD;public class WordFallControl extends Threadprivate JLabel jLabel;private WordLabel wordLabel;pri
28、vate int x = 0;private int y = (int)(Math.random()*10);/control word label fall,where,who and howpublic WordFallControl(JLabel jLabel,WordLabel wordLabel)this.jLabel = jLabel;this.wordLabel = wordLabel;this.jLabel.add(this.wordLabel);this.wordLabel.setBounds( y*SD.WORD_LABEL_WIDTH,x*SD.WORD_LABEL_HE
29、IGHT+50, SD.WORD_LABEL_WIDTH, SD.WORD_LABEL_HEIGHT );new Thread(this).start();Overridepublic void run() / TODO Auto-generated method stubwhile(x<10)try / in every SD.SPEED_ms,word label will fall one 50,x+;this.wordLabel.setBounds(y*SD.WORD_LABEL_WIDTH/5, x*SD.WORD_LABEL_HEIGHT, SD.WORD_LABEL_WID
30、TH, SD.WORD_LABEL_HEIGHT );if(x = 9)/when word label is beyond the frame,no one can see it,it contains nothingthis.wordLabel.setText(null);sleep(SD.SPEED); catch (Exception e) e.printStackTrace();super.run();package release.conponent.wordfall;import javax.swing.JLabel;import release.SD;public class
31、WordFallLabel extends JLabel implements Runnable/* * */private static final long serialVersionUID = 1L;public WordFallLabel()setSize(500,500);new Thread(this).start();System.out.println("world fall start");Overridepublic void run() / TODO Auto-generated method stubint repeat = 0;/thread go
32、es on constantly,if thread runs 100 times,it will stopwhile(0<1&&repeat<100)/if SD.START_FLAG is false,the thread will do nothing,just skip itif(SD.START_FLAG)/characters and fallnew WordFallControl(this, new WordLabel();repeat+;try new Thread();Thread.sleep(SD.SPEED); catch (Exception
33、 e) / TODO: handle exceptione.printStackTrace();else try new Thread();Thread.sleep(SD.SPEED); catch (Exception e) / TODO: handle exceptione.printStackTrace();8.1.2 wordFall类:产生可控制下落的字符package release.conponent.wordfall;import javax.swing.ImageIcon;import release.SD;public class WordLabel extends JLa
34、bel/* * version 1.0 */private static final long serialVersionUID = 1L;/初始化word label对象,里面的值为用随机数产生的字符public WordLabel()setText(getChar().toString();setVisible(true);SD.wordLabels.add(this);private Character getChar()/以相同概率获得一个数字int random_integer = (int)(Math.random()*35);/将该数字通过ASCII码转为对应的字符char in
35、t_to_char = random_integer>9?(char)(random_integer+55):(char)(random_integer+48);/向SD.CODE_LIST里面添加一个新生成的word labelSD.CODE_LIST.add(random_integer>9?random_integer+55:random_integer+48);return int_to_char;8.1.3 WordFallLabel类:整合字符下落这个过程package release.conponent.wordfall;import javax.swing.JLab
36、el;import release.SD;public class WordFallLabel extends JLabel implements Runnable/* * */private static final long serialVersionUID = 1L;public WordFallLabel()setSize(500,500);new Thread(this).start();System.out.println("world fall start");Overridepublic void run() / TODO Auto-generated me
37、thod stubint repeat = 0;/thread goes on constantly,if thread runs 100 times,it will stopwhile(0<1&&repeat<100)/if SD.START_FLAG is false,the thread will do nothing,just skip itif(SD.START_FLAG)/characters and fallnew WordFallControl(this, new WordLabel();repeat+;try new Thread();Thread
38、.sleep(SD.SPEED); catch (Exception e) / TODO: handle exceptione.printStackTrace();else try new Thread();Thread.sleep(SD.SPEED); catch (Exception e) / TODO: handle exceptione.printStackTrace();8.2 ScoreLabel类:用于记录得分package release.conponent;import javax.swing.JLabel;import release.SD;public class Sco
39、reLabel extends JLabel implements Runnable/* * */private static final long serialVersionUID = 1L;/ initialize the label public ScoreLabel()setText("天下武功,唯快不破");new Thread(this).start();System.out.println("scroe start");Overridepublic void run() / TODO Auto-generated method stub/使
40、线程持续执行while(0<1)try new Thread();Thread.sleep(300); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();if(SD.START_FLAG)/当游戏开始执行时,SD.CODE_LIST里面才会有值,否则会报空指针异常if(SD.CODE_LIST.size()>0)/将键盘输入值和应当输入的值进行比较if(SD.KEY_VALUE = SD.CODE_LIST.get(SD.POINTER)/如果匹配,则成功次数加一,
41、指向的字符的位置也会向下挪一位SD.SUCCESSTIME+;SD.wordLabels.get(SD.POINTER).setVisible(false);SD.KEY_VALUE = 0;SD.POINTER+;else if(SD.CODE_LIST.size()-SD.POINTER)>9)/如果不匹配,当该字符从产生到超过界面时如果还没有被正确按下,剩余尝试次数减一,指向的字符的位置也会向下挪一位,超过三次,停止计分SD.POINTER+;SD.TRYTIME-;if (SD.TRYTIME = 0) SD.START_FLAG = false;setText("天下
42、武功,唯快不破");/显示当前成绩和应当键入的字符char c = 'd'int i = SD.CODE_LIST.get(SD.POINTER);c = (char)i;setText("正确:"+SD.SUCCESSTIME+" 剩余机会:"+SD.TRYTIME+"正确字符:"+c);else 8.3 StartButton类:用于控制游戏开始和结束package release.conponent;import javax.swing.JButton;import release.SD;public
43、class StartButton extends JButton implements Runnablepublic StartButton()new Thread(this).start();Overridepublic void run() / TODO Auto-generated method stub/根据监视的游戏状态,控制按键字符的显示while(0<1)if (SD.START_FLAG) this.setText("结束");else this.setText("开始");try new Thread();Thread.slee
44、p(1000); catch (Exception e) / TODO: handle exceptione.printStackTrace();8.4 TimeLabel类:用于显示当前时间package release.conponent;import java.text.SimpleDateFormat;import java.util.Date;import javax.swing.JLabel;public class TimeLabel extends JLabel implements Runnable/* * */private static final long serial
45、VersionUID = 1L;private Date date = new Date();private SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");public TimeLabel()new Thread(this).start();Overridepublic void run() / TODO Auto-generated method stubint i = 0;while(i < 10)try date = new Date();this.setText
46、(sdFormat.format(date);new Thread();Thread.sleep(1000); catch (Exception e) / TODO: handle exceptione.printStackTrace();8.5 AAAAA:整个程序的主面板package release.maintain;import java.awt.EventQueue;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JLabel;import release.SD;import release.conponent.StartButton;import javax.swing.JSlider;import javax.swing.event.ChangeListener;imp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一(上)数学期末:破十法练习题
- 人教版小学一年级暑假作业口算练习题(每日100题)
- D图像的基本操作电子教案
- 特殊教育学校校医招聘合同
- 招投标信息安全与合同管理课件
- 电子产品环境测试管理办法
- 消防安全严禁参与违规作业承诺书
- 保定市物业管理人员素质
- 挖掘机考古挖掘施工协议
- 水坝建设钻探施工合同
- 中国教师培训白皮书
- 瓦克液体硅胶材料
- 《动物疾病防治》课程整体教学设计方案-禽病防治
- 大地构造学(中国大地构造概要)课件
- 化工设计概论(第二版)完整版课件(全)
- 新药药效学研究方法和技术要求
- 资料员岗位培训ppt课件(PPT 36页)
- 团务知识培训课件
- 危险源辨识与风险评价记录文本表
- 中国人民财产保险股份有限公司雇主责任保险条款(2004版)
- 煤矿建设项目安全设施设计审查和竣工验收规范
评论
0/150
提交评论