




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学 号200710165114武 汉 科 技 大 学 城 市 学 院课 程 设 计 报 告 课程设计名称 Java课程设计 题 目采用Java网络通信技术实现基于C/S模式的聊天室 院 系 信息工程学部 专 业 信息管理与信息系统 班 级 1班 姓 名 张峰 指导教师 于海平 2010年01月07日编号:036题目:采用Java网络通信技术实现基于C/S模式的聊天室1 课程设计教学条件要求 eclipse/ netbeans/ Jbuilder 2 课程设计任务编写一个简易CS版聊天室,多个客户端可以同时发送信息,服务器端监听并显示到客户端页面。1要求可以实现多人同时在线聊天。2要求客户端和服务器端的界面采用Swing或SWT实现3服务器可以向多个客户进行广播通信。3 课程设计报告书主要内容1 需求分析2 总体设计 21 设计的总体思想与算法描述 22 模块结构图 23 各功能模块的功能与处理流程描述 24 界面设计3 各功能模块程序设计按照功能模块的功能与处理流程描述给出详细的程序代码,并给出重点语句的注释.4 小结4 课程设计要求1 按时到机房签到,在指定机位上机。遵守机房纪律。 2 独立完成课程设计任务。指导教师到机位上指导学生和分时段验收学生完成的程序。 3 按时提交打印的课程设计报告书。5 课程设计参考书1 许文宪 懂子建. Java程序设计教程与实训. 北京:北京大学出版社,2005.2 辛运帏 .Java程序设计.北京:清华大学出版社, 20043 美Echel,B .Java编程思想(第三版).北京:机械工业出版社,2005撰写者:江伟 指导老师:于海平目 录1 需求分析12 总体设计221 设计的总体思想与算法描述222 模块结构图22. 3界面设计32.3.1 管理员界面32.3.2 登陆界面32.3.3 聊天界面42.3.4 文件发送界面52.3.5 接受提示界面52.3.6 选择保存界面62.3.7 传输成功提示界面63程序设计74 小结22参考文献231 需求分析本系统是实现c/s模式的聊天室 首先要建立侦听服务,这个需求是服务器端的需求。其次还应实现:用户登录,包括客户端请求登录以及服务器端响应登录两个过程。收发聊天信息,包括客户端发送聊天信息以及服务器端转发聊天信息两个过程。收发系统信息,由服务器端发送给客户端的信息。用户下线,包括客户端请求下线以及服务器响应请求两个过程,这个与用户登录类似,服务器关闭。其中我还加入了文件传输功能,方便了用户文件的共享。2 总体设计21 设计的总体思想与算法描述依据需求分析的结果,该系统应设计成一个可以实现多人同时在线聊天功能的聊天软件,下面从软件的整体结构设计、界面设计、变量设计等方面阐述一下系统的总体设计。依据需求分析结果,设计应实现多人同时在线聊天,就应该分为服务端和用户端两个端口。用户端把信息发送到服务端,而后服务端再把信息分发到各个用户端。22 模块结构图图2.1 模块结构图2. 3界面设计2.3.1 管理员界面图2.2 管理员界面2.3.2 登陆界面图2.3登陆界面2.3.3 聊天界面图2.4聊天界面2.3.4 文件发送界面图2.5文件发送界面2.3.5 接受提示界面图2.6接受提示界面2.3.6 选择保存界面图2.7选择保存界面2.3.7 传输成功提示界面图2.8传输成功提示界面3 程序设计package com.ff;import java.io.*;import .*;import java.util.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;public class StartServer public static void main(String args) StartServer startServer = new StartServer();StartServer.Server serverFrame=startServer.new Server(); class Server extends JFrame private JScrollPane jp_rec;private JScrollPane jp_send;private JScrollPane jp_list;private JTextArea jta_rec;private JTextArea jta_send;private JLabel lbl_rec;private JLabel lbl_edit;private JList jlist;private JButton btnSend;/ 发送消息按钮private JButton btnT;private DefaultListModel listModel;private HashMap allUserLink = new HashMap();public Server() init();try ServerSocket server_socket = new ServerSocket(9999);while (true) Socket client_socket = server_socket.accept();SocketThread dealThread = new SocketThread(client_socket);new Thread(dealThread).start(); catch (Exception ex) ex.printStackTrace();public void init() this.setTitle(管理员平台);this.setSize(800, 400);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setLocationRelativeTo(this);Container c = this.getContentPane();c.setLayout(null);jta_rec = new JTextArea();jta_send = new JTextArea();jp_rec = new JScrollPane();jp_send = new JScrollPane();jp_list = new JScrollPane();lbl_rec = new JLabel(-消息记录-);lbl_edit = new JLabel(-文本编辑-);btnSend = new JButton(发送);btnT = new JButton(T除成员);listModel=new DefaultListModel();jlist = new JList(listModel);jlist.setBorder(BorderFactory.createTitledBorder(在线成员);jp_rec.getViewport().add(jta_rec);jp_send.getViewport().add(jta_send);jp_list.getViewport().add(jlist);jta_rec.setLineWrap(true);jta_send.setLineWrap(true);jta_rec.setEditable(false);lbl_rec.setBounds(30, 10, 80, 20);jp_rec.setBounds(30, 30, 450, 100);lbl_edit.setBounds(30, 130, 80, 20);jp_send.setBounds(30, 150, 450, 100);btnSend.setBounds(350, 260, 80, 20);jp_list.setBounds(500, 30, 120, 220);btnT.setBounds(520, 260, 80, 20);c.add(lbl_rec);c.add(lbl_edit);c.add(jp_rec);c.add(jp_send);c.add(btnSend);c.add(jp_list);c.add(btnT);this.setVisible(true);class SocketThread extends BaseTrans private boolean threadON=true;public SocketThread(Socket client_socket) super(client_socket);btnSend.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) messageEvent(code=001;msg=公告 +new Date().toLocaleString()+rn+jta_send.getText();jta_send.setText(););btnT.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) if(jlist.getSelectedValue()!=null)SocketThread st=allUserLink.get(jlist.getSelectedValue().toString().trim();allUserLink.remove(jlist.getSelectedValue().toString().trim();st.sendMessage(code=0);messageEvent(code=001;msg=公告 +new Date().toLocaleString()+rn+jlist.getSelectedValue()+被管理员踢了出去!);st.closeLink();threadON=false;listModel.remove(jlist.getSelectedIndex(););public void messageEvent(String msg) StringUtil stringUtil = new StringUtil();stringUtil.AnalysisMessage(msg);String code = stringUtil.getValueByKey(code);if (code.equalsIgnoreCase(000) System.out.println(进入了001);listModel.addElement(stringUtil.getValueByKey(userName);for (Iterator it =allUserLink.keySet().iterator(); it.hasNext();) allUserLink.get(it.next().sendMessage(code=001;msg=公告 +new Date().toLocaleString()+rn+stringUtil.getValueByKey(userName) +进入了聊天室,大家欢迎他(她)吧!);allUserLink.put(stringUtil.getValueByKey(userName),this);jta_rec.setText(jta_rec.getText()+rn+公告 +new Date().toLocaleString()+rn+stringUtil.getValueByKey(userName)+进入了聊天室,大家欢迎他(她)吧!);jta_rec.setCaretPosition(jta_rec.getText().length(); else if (code.equalsIgnoreCase(001) System.out.println(进入了001);for (Iterator it =allUserLink.keySet().iterator(); it.hasNext();) allUserLink.get(it.next().sendMessage(msg);jta_rec.setText(jta_rec.getText()+rn+stringUtil.getValueByKey(msg);jta_rec.setCaretPosition(jta_rec.getText().length(); else if (code.equalsIgnoreCase(010) System.out.println(进入了010);this.setFileName(stringUtil.getValueByKey(fileName);this.setFileLength(Integer.parseInt(stringUtil.getValueByKey(fileSize);initFileOutputStream(./);sendMessage(code=011); else if (code.equalsIgnoreCase(012) System.out.println(进入了012);sendMessage(code=013);setSendFileFlag(true); else if (code.equalsIgnoreCase(014) System.out.println(进入了014);for (Iterator it =allUserLink.keySet().iterator(); it.hasNext();) if (this != allUserLink.get(it.next() SocketThread st=allUserLink.get(it.next();st.setFileName(getFileName();st.setFileLength(getFileLength();st.sendMessage(code=015;username=+ stringUtil.getValueByKey(username)+ ;fileName=+ getFileName()+ ;fileSize=+ getFileLength(); else if (code.equalsIgnoreCase(016) System.out.println(进入了016);sendFileData(./ + this.getFileName();sendMessage(code=018); else if (code.equalsIgnoreCase(017) for (Iterator it =allUserLink.keySet().iterator(); it.hasNext();) if (this != allUserLink.get(it.next() allUserLink.get(it.next().initNet();public void run() while (threadON) receive();客户端代码package com.ff;import java.io.*;import .*;import java.util.Date;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class StartClient public static void main(String args)StartClient sc=new StartClient();StartClient.Client client=sc.new Client();class Clientpublic Client()init();public void init()trySocket client_socket=new Socket(InetAddress.getLocalHost(),9999);new Thread(new ChatPanel(client_socket).start();catch(Exception ex)ex.printStackTrace();class ChatPanel extends BaseTransprivate String userName;private JFrame jThis;private JLabel lbl_rec;private JLabel lbl_edit;private JTextArea jta_rec;/接收消息框private JTextArea jta_send;/发送消息框private JTextField jtxt_file;private JScrollPane jp_rec;private JScrollPane jp_send;private JButton btnSelFile;/选择文件private JButton btnSend;/发送消息按钮private JFileChooser jfc;/文件选择器public ChatPanel(Socket client_socket)super(client_socket);userName=JOptionPane.showInputDialog(请输入用户名:);init();public void init()jThis=new JFrame();jThis.setTitle(你好:+userName+ 欢迎进入聊天程序);jThis.setSize(600,400);jThis.setDefaultCloseOperation(jThis.EXIT_ON_CLOSE);jThis.setLocationRelativeTo(jThis);Container c=jThis.getContentPane();c.setLayout(null);lbl_rec=new JLabel(-消息记录-);lbl_edit=new JLabel(-文本编辑-);jtxt_file=new JTextField();jta_rec=new JTextArea();jta_send=new JTextArea();jp_rec=new JScrollPane();jp_send=new JScrollPane();btnSelFile=new JButton(文件.);btnSend=new JButton(发送);jfc=new JFileChooser();jp_rec.getViewport().add(jta_rec);jp_send.getViewport().add(jta_send);jta_rec.setLineWrap(true);jta_send.setLineWrap(true);jtxt_file.setEditable(false);jta_rec.setEditable(false);jfc.setDialogTitle(请选择要传送的文件.);lbl_rec.setBounds(30,10,80,20);jp_rec.setBounds(30,30, 450, 100);lbl_edit.setBounds(30,130,80,20);jp_send.setBounds(30,150,450,100);jtxt_file.setBounds(30,260,150,20);btnSelFile.setBounds(180,260,80,20);btnSend.setBounds(350,260,80,20);btnSelFile.addActionListener(new ActionListener()public void actionPerformed(ActionEvent ae)jfc.showOpenDialog(null);jtxt_file.setText(jfc.getSelectedFile().getPath()+););c.add(lbl_rec);c.add(lbl_edit);c.add(jp_rec);c.add(jp_send);c.add(jtxt_file);c.add(btnSelFile);c.add(btnSend);btnSend.addActionListener(new ActionListener()public void actionPerformed(ActionEvent ae)sendMessage(code=001;msg=+userName+ +new Date().toLocaleString()+rn+jta_send.getText();jta_send.setText();if(jtxt_file.getText().length()4)File file=new File(jtxt_file.getText().trim();sendMessage(code=010;fileName=+file.getName()+;fileSize=+file.length();sendMessage(code=000;username=+userName);jThis.setVisible(true);public void messageEvent(String msg) StringUtil stringUtil=new StringUtil();stringUtil.AnalysisMessage(msg);String code=stringUtil.getValueByKey(code);if(code.equalsIgnoreCase(0)this.closeLink();JOptionPane.showMessageDialog(jThis,您已近被管理员T走了,再见!);jThis.dispose();System.exit(0);else if(code.equalsIgnoreCase(001)System.out.println(进入到001);jta_rec.setText(jta_rec.getText()+rn+stringUtil.getValueByKey(msg);jta_rec.setCaretPosition(jta_rec.getText().length();else if(code.equalsIgnoreCase(011)System.out.println(进入到011);sendMessage(code=012);else if(code.equalsIgnoreCase(013)System.out.println(进入到了013);sendFileData(jtxt_file.getText().trim();this.initNet();jtxt_file.setText();sendMessage(code=014;username=+userName);else if(code.equalsIgnoreCase(015)System.out.println(进入到了015);setFileName(stringUtil.getValueByKey(fileName);setFileLength(Integer.parseInt(stringUtil.getValueByKey(fileSize);int result=JOptionPane.showConfirmDialog(null,userName+,+stringUtil.getValueByKey(username)+发文件【+getFileName()+】给你,要接受吗?,提示,JOptionPane.OK_CANCEL_OPTION);if(result=JOptionPane.OK_OPTION)JFileChooser jfc=new JFileChooser();jfc.setDialogTitle(请选择保存的目录.);jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);jfc.showOpenDialog(jThis);String path=jfc.getSelectedFile().getPath();initFileOutputStream(path+/);sendMessage(code=016);setSendFileFlag(true);else if(result=JOptionPane.CANCEL_OPTION)sendMessage(code=017);else if(code.equalsIgnoreCase(018)JOptionPane.showMessageDialog(jThis,userName+,文件【+getFileName()+】传输成功,提示,JOptionPane.INFORMATION_MESSAGE);/jta_rec.setText(jta_rec.getText()+rn+msg);public void run() while(true)receive(); 4 小结 每次课程设计都是一个学习的升华,这次我做的课题是网络通信技术实现基于C/S模式的聊天室程序设计。为了使课程设计能够顺利的进行,刚拿到任务书,我就开始复习课本和软件工程中的相关知识,并去图书馆查阅了很多资料,大致熟悉了课题所需要的知识点。然后拟定JAVA设计的框架,全面布局设计的界面。准备工作完成之后开始编写代码了,事实远超出了我当初想象的那样简单。在实际的代码设计中,我碰到了很多难以解决的困难。首先是不知道怎么构建框架,等大致有了框架,却不知道怎么让这个框架有血有肉,去实现应有的功能。幸亏有指导老师的热情辅导和鼓励,为我迷途指津,才使得我的课程设计不至于夭折。所谓万事开头难,开始许多的小问题都会造成我的进程的停止,比如大小写没注意,括号没打好,常常一个小小的问题都会让我停滞不前,于是与同学们讨论。在这样浓浓的氛围中,学习效率极高,不到一个星期我就构建好了框架,并做了一些后续准备。因为有了开始的准备工作,后来的事情就简单多了。之前我上网查询相似代码学习借鉴,现在就把那些代码用上了,虽然常常出些问题,但是因为有老师的指导,一切都迎刃而解,课程设计不久就完成了。最后我想说感谢老师和同学们,使他们的帮助才使得我的课程设计如此顺利的完成。但是完成之后我还是觉得有些遗憾,但是我努力了。所以我期望下次课程设计有更好的表现。 参考文献1孙卫琴.JAVA面向对象编程M.北京:电子工业出版社.20062彭晨阳.Java实用系统开发指南M.北京:机械工业出版社.2008 3朱仲杰. Palm应用程序设计使用Java语言M.北京:中国电力出版社4迪特尔.Java程序设计教程/国外经典教材M.北京:清华大学出版社5蔡翠平 .Java程序设计.北京:清华大学出版社,2003.课程设计评分表评分标准:1. 学生是否严格遵守课程设计纪律,按照规定时间完成设计任务(占30%)2. 程序设计的质量与规范:(占40%)(1)是否采用了良好的设计方法,独立完成程序设计(2)程序界面设计是否合理、美观(3)数据库设计是否合理,具有良好的扩展性(4)程序是否运行正常,未见运行错误3. 课程设计报告书的质量与规范 (占30%)教师评分:1.学生出勤得分: _2.程序设计得分: _3.设计报告得分: _ 总分:_教师评语: 根据该生在课程设计期间,是否严格遵守课程设计纪律,按照规定时间完成设计任务,完成的程序设计的质量与规范,提交的课程设计报告书的质量与规范等多方面的评分,该生本次课程设计的评分为:_ 教师签名: 日期: 年 月 日袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教学课件使用情况表
- 环保设备微波处理工艺考核试卷及答案
- 洗涤剂除垢效果改进方案工艺考核试卷及答案
- 怎么在教学课件里做动画
- 薯类种植种植土壤重金属吸附工艺考核试卷及答案
- 密封膏搅拌工艺考核试卷及答案
- 2025年黑龙江省法院书记员招聘考试笔试试题含答案
- 刀具涂层耐低温脆化测试工艺考核试卷及答案
- 涌泉灌溉工艺考核试卷及答案
- 灯具组装自动化改造工艺考核试卷及答案
- 阿尔茨海默病药物治疗指南(2025)解读
- 心脏永久起搏器植入术病人护理查房
- 粮油保管员(高级)职业技能鉴定参考试题(附答案)
- GB/T 196-2025普通螺纹基本尺寸
- 新课标下初高中数学教学的衔接研究
- 2024-2025学年人教版二年级体育下册全册教案
- 2025年初升高高中自主招生考试化学试卷试题(含答案详解)
- 劳务施工施工方案
- 新部编版五年级语文上册第八单元课件
- 中国急性缺血性卒中诊治指南(2023)解读
- 加入音乐家协会申请书
评论
0/150
提交评论