Java程序设计案例教程模块.ppt

上传人:wuy****n92 文档编号:80452716 上传时间:2023-03-23 格式:PPT 页数:80 大小:693.50KB
返回 下载 相关 举报
Java程序设计案例教程模块.ppt_第1页
第1页 / 共80页
Java程序设计案例教程模块.ppt_第2页
第2页 / 共80页
点击查看更多>>
资源描述

《Java程序设计案例教程模块.ppt》由会员分享,可在线阅读,更多相关《Java程序设计案例教程模块.ppt(80页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、模块九单机版考试系统的整合与测试模块九单机版考试系统的整合与测试 目标目标 该考试系统对各专业课程的问卷进行整理入库,以便在需要的时该考试系统对各专业课程的问卷进行整理入库,以便在需要的时候能够及时、方便、快速的对学生进行各级测试,从而使考试过程候能够及时、方便、快速的对学生进行各级测试,从而使考试过程趋于简单化,减少教师在这方面的工作负担。趋于简单化,减少教师在这方面的工作负担。学习本模块涉及哪些重要内容?本模块导读本模块导读本模块是单机版考试系统的整合。主要介绍的是学生单机考试程本模块是单机版考试系统的整合。主要介绍的是学生单机考试程序的设计过程,提供了试题选取,查看分数,计时器,试题显示

2、序的设计过程,提供了试题选取,查看分数,计时器,试题显示读取试题,计算分数等功能。该考试系统对各专业课程的问卷进读取试题,计算分数等功能。该考试系统对各专业课程的问卷进行整理入库,以便在需要的时候能够及时、方便、快速的对学生行整理入库,以便在需要的时候能够及时、方便、快速的对学生进行各级测试,从而使考试过程趋于简单化,减少教师在这方面进行各级测试,从而使考试过程趋于简单化,减少教师在这方面的工作负担。的工作负担。在以往的教学中,教师通过考试来检验学生的学习成果,而这就在以往的教学中,教师通过考试来检验学生的学习成果,而这就需要教师进行大量的工作,编写试题,排版,印刷,还要对学生需要教师进行大量

3、的工作,编写试题,排版,印刷,还要对学生的考卷进行解析,不仅耗费了大量的时间也花费了大量的精力。的考卷进行解析,不仅耗费了大量的时间也花费了大量的精力。这种繁重的工作严重的影响了教师的工作效率,这些都成为教学这种繁重的工作严重的影响了教师的工作效率,这些都成为教学现代化发展的严重阻碍。在此情况下,急需一个应用计算机来进现代化发展的严重阻碍。在此情况下,急需一个应用计算机来进行标准化考试的系统来实现教务工作的自动化或半自动化管理。行标准化考试的系统来实现教务工作的自动化或半自动化管理。学习本模块涉及哪些重要内容?本模块要点本模块要点单机版考试系统的设计单机版考试系统的设计单机版考试系统的开发单机

4、版考试系统的开发单机版考试系统的发布单机版考试系统的发布单机版考试系统的测试单机版考试系统的测试任务一任务一单机版考试系统的设计单机版考试系统的设计 子任务子任务1 1 设计内容设计内容 本系统适用各级院校的考试项目,其主要功能分为:本系统适用各级院校的考试项目,其主要功能分为:身份验证身份验证可以检测用户的身份。可以检测用户的身份。试题选择试题选择在此可以对考试题进行选择,找到你所要的试题类在此可以对考试题进行选择,找到你所要的试题类型。型。查分系统查分系统用于教师或学生对所答题进行核对。用于教师或学生对所答题进行核对。计时系统计时系统对考试的时间进行规定,可以根据所需来自己制定对考试的时间

5、进行规定,可以根据所需来自己制定试题显示试题显示对考生多进行的考试内容惊醒显示的区域。对考生多进行的考试内容惊醒显示的区域。本系统适合各级院校的标准考试,可以有效的提高教师本系统适合各级院校的标准考试,可以有效的提高教师的工作效率。的工作效率。整个系统的开发过程严格遵循软件工程的要求,做到模整个系统的开发过程严格遵循软件工程的要求,做到模块化设计。块化设计。任务一任务一单机版考试系统的设计单机版考试系统的设计 子任务子任务2 2 设计要求设计要求 根据本系统的需要本系统可以进行任何标准化考试,提根据本系统的需要本系统可以进行任何标准化考试,提供了试题选取,查看分数,计时器,试题显示读取试题,供

6、了试题选取,查看分数,计时器,试题显示读取试题,计算分数等功能。此考试系统,对各专业课程的问卷进计算分数等功能。此考试系统,对各专业课程的问卷进行整理入库,以便在需要的时候能够及时、方便、快速行整理入库,以便在需要的时候能够及时、方便、快速的对学生进行各级测试,从而使考试过程趋于简单化,的对学生进行各级测试,从而使考试过程趋于简单化,减少教师在这方面的工作负担。减少教师在这方面的工作负担。用户可以选择一套标准化考试试题用户可以选择一套标准化考试试题 每套试题的考试用时由试题文件或试题数据库给出。每套试题的考试用时由试题文件或试题数据库给出。开始读取试题后,计时器开始计划时,用户提交答案后,可以

7、开始读取试题后,计时器开始计划时,用户提交答案后,可以读取下一道题目。读取下一道题目。一个提示栏显示所剩余的考试时间,当规定时间用尽后,用户一个提示栏显示所剩余的考试时间,当规定时间用尽后,用户将不能再读取任何题目。将不能再读取任何题目。任务一任务一单机版考试系统的设计单机版考试系统的设计 子任务子任务2 2 总体设计总体设计 试题文件试题文件文件内容必须遵守如下的书写规范:文件内容必须遵守如下的书写规范:试题文件的第一行是全部试题的答案,答案之间不可以有空格。试题文件的第一行是全部试题的答案,答案之间不可以有空格。第二行是试题文件的考试用时,如第二行是试题文件的考试用时,如0:36:45第道

8、题目之间用第道题目之间用“*”开头的字符串分割。开头的字符串分割。最后一行是最后一行是endend试题文件信息表设置需如下字段:试题文件信息表设置需如下字段:TXTID试题文件编号,文本类型。试题文件编号,文本类型。TXT试题文件名字,文本类型。试题文件名字,文本类型。TIME试题文件考试用时,数字类型。试题文件考试用时,数字类型。任务二任务二单机版考试系统的开发单机版考试系统的开发 子任务子任务1 1 身份验证身份验证LoginLogin类类 成员变量成员变量成员变量的定义见表成员变量的定义见表9-1。表表9-1 9-1 主要成员变量主要成员变量任务二任务二单机版考试系统的开发单机版考试系统

9、的开发 子任务子任务1 1 身份验证身份验证LoginLogin类类 成员方法成员方法成员方法的定义见表成员方法的定义见表9-29-2。表表9-2 9-2 主要成员方法主要成员方法任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务1 1 身份验证身份验证LoginLogin类类 部分代码段部分代码段trytrystmt=con.createStatement();stmt=con.createStatement();ps=con.prepareStatement(select PWD from LoginRecord where ID=?);ps=con.prepareState

10、ment(select PWD from LoginRecord where ID=?);ps.setString(1,ID);ps.setString(1,ID);rs=ps.executeQuery();rs=ps.executeQuery();if(rs.next()if(rs.next()if(rs.getString(PWD).equals(PWD)if(rs.getString(PWD).equals(PWD)new JavaTest();new JavaTest();System.out.println(OK);System.out.println(OK);任务二任务二单机版考试

11、系统的开发单机版考试系统的开发子任务子任务1 1 身份验证身份验证LoginLogin类类 else elseJOptionPane.showMessageDialog(null,JOptionPane.showMessageDialog(null,你输入的密码错误!你输入的密码错误!,登录失败登录失败,JOptionPane.ERROR_MESSAGE);,JOptionPane.ERROR_MESSAGE);else elseJOptionPane.showMessageDialog(null,JOptionPane.showMessageDialog(null,你输入的用户名错误!你输入

12、的用户名错误!,登录失败登录失败,JOptionPane.ERROR_MESSAGE);,JOptionPane.ERROR_MESSAGE);catch(final SQLException e)catch(final SQLException e)System.err.println(SQLException:+e.getMessage();System.err.println(SQLException:+e.getMessage();finally finallyif(stmt!=null)if(stmt!=null)trytry任务二任务二单机版考试系统的开发单机版考试系统的开发子任务

13、子任务1 1 身份验证身份验证LoginLogin类类 stmt.close();stmt.close();catch(final SQLException e)catch(final SQLException e)if(con!=null)if(con!=null)trytrycon.close();con.close();catch(final SQLException e)catch(final SQLException e)任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务2 2 考试系统考试系统JavaTestJavaTest类类 成员变量成员变量成员变量的定义见表成员

14、变量的定义见表9-39-3。表表9-3 9-3 主要成员变量主要成员变量任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务2 2 考试系统考试系统JavaTestJavaTest类类 成员方法成员方法成员方法的定义见表成员方法的定义见表9-49-4。表表9-4 9-4 主要成员方法主要成员方法任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务2 2 考试系统考试系统JavaTestJavaTest类类 部分代码部分代码import java.awt.*;import java.awt.*;import java.awt.event.*;import java.awt

15、.event.*;import javax.swing.*;import javax.swing.*;public class JavaTest extends JFrame implements ActionListenerpublic class JavaTest extends JFrame implements ActionListenerTestArea testPanel=null;TestArea testPanel=null;Container con=null;Container con=null;private JMenu File=new JMenu(private JM

16、enu File=new JMenu(文件文件););private JMenu Edit=new JMenu(private JMenu Edit=new JMenu(编辑编辑););private JMenu Help=new JMenu(private JMenu Help=new JMenu(帮助帮助););任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务2 2 考试系统考试系统JavaTestJavaTest类类 部分代码部分代码JMenuItem Open=new JMenuItem(JMenuItem Open=new JMenuItem(打开打开););JMen

17、uItem Exit=new JMenuItem(JMenuItem Exit=new JMenuItem(退出退出););public JavaTest()public JavaTest()super(super(标准化模拟考试标准化模拟考试););testPanel=new TestArea();testPanel=new TestArea();con=getContentPane();con=getContentPane();con.add(testPanel,BorderLayout.CENTER);con.add(testPanel,BorderLayout.CENTER);addW

18、indowListener(new WindowAdapter()addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)public void windowClosing(WindowEvent e)System.exit(0);System.exit(0);任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务2 2 考试系统考试系统JavaTestJavaTest类类 部分代码部分代码 setVisible(true);setVisible(true);setBounds(60,4

19、0,660,460);setBounds(60,40,660,460);con.validate();con.validate();validate();validate();/添加菜单栏添加菜单栏JMenuBar JMB=new JMenuBar();JMenuBar JMB=new JMenuBar();File.add(Open);File.add(Open);File.add(Exit);File.add(Exit);JMB.add(File);JMB.add(File);JMB.add(Edit);JMB.add(Edit);任务二任务二单机版考试系统的开发单机版考试系统的开发子任务

20、子任务2 2 考试系统考试系统JavaTestJavaTest类类 部分代码部分代码JMB.add(Help);JMB.add(Help);setJMenuBar(JMB);setJMenuBar(JMB);Open.addActionListener(this);Open.addActionListener(this);Exit.addActionListener(this);Exit.addActionListener(this);/添加结束添加结束 任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务3 3 考试区域考试区域TestAreaTestArea类类 成员变量成员变

21、量任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务3 3 考试区域考试区域TestAreaTestArea类类 成员方法成员方法成员方法的定义见表成员方法的定义见表9-69-6。表表9-6 9-6 主要成员方法主要成员方法任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务3 3 考试区域考试区域TestAreaTestArea类类 文本文件方式部分代码文本文件方式部分代码 public TestArea()public TestArea()list=new Choice();list=new Choice();String currentdir=System.ge

22、tProperty(user.dir);String currentdir=System.getProperty(user.dir);System.out.println(currentdir);System.out.println(currentdir);File dir=new File(currentdir);File dir=new File(currentdir);FileName fileTxt=new FileName(txt);FileName fileTxt=new FileName(txt);String fileName=dir.list(fileTxt);String

23、fileName=dir.list(fileTxt);for(int i=0;ifileName.length;i+)for(int i=0;ifileName.length;i+)list.add(fileNamei);list.add(fileNamei);任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务3 3 考试区域考试区域TestAreaTestArea类类 文本文件方式部分代码文本文件方式部分代码 testplay=new JTextArea(15,12);testplay=new JTextArea(15,12);testplay.setLineWrap(true

24、);testplay.setLineWrap(true);testplay.setWrapStyleWord(true);testplay.setWrapStyleWord(true);testplay.setFont(new Font(TimesRoman,Font.PLAIN,14);testplay.setFont(new Font(TimesRoman,Font.PLAIN,14);testplay.setForeground(Color.blue);testplay.setForeground(Color.blue);messagearea=new JTextArea(8,8);me

25、ssagearea=new JTextArea(8,8);messagearea.setForeground(Color.blue);messagearea.setForeground(Color.blue);messagearea.setLineWrap(true);messagearea.setLineWrap(true);messagearea.setWrapStyleWord(true);messagearea.setWrapStyleWord(true);countTime=new Thread(this);countTime=new Thread(this);String s=A,

26、B,C,D;String s=A,B,C,D;任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务3 3 考试区域考试区域TestAreaTestArea类类 文本文件方式部分代码文本文件方式部分代码 box=new JCheckBox4;box=new JCheckBox4;for(int i=0;i4;i+)for(int i=0;i4;i+)boxi=new JCheckBox(si);boxi=new JCheckBox(si);pauseorcontinuetime=new JButton(pauseorcontinuetime=new JButton(暂停计时暂停计时)

27、;);pauseorcontinuetime.addActionListener(this);pauseorcontinuetime.addActionListener(this);commitresult=new JButton(commitresult=new JButton(提交该题答案提交该题答案););readnext=new JButton(readnext=new JButton(读取第一题读取第一题););readnext.setForeground(Color.blue);readnext.setForeground(Color.blue);commitresult.setF

28、oreground(Color.blue);commitresult.setForeground(Color.blue);任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务3 3 考试区域考试区域TestAreaTestArea类类 文本文件方式部分代码文本文件方式部分代码 viewscore=new JButton(viewscore=new JButton(查看分数查看分数););viewscore.setForeground(Color.blue);viewscore.setForeground(Color.blue);commitresult.setEnabled(fal

29、se);commitresult.setEnabled(false);commitresult.addActionListener(this);commitresult.addActionListener(this);readnext.addActionListener(this);readnext.addActionListener(this);viewscore.addActionListener(this);viewscore.addActionListener(this);list.addItemListener(this);list.addItemListener(this);rea

30、dtests=new ReadTestquestion();readtests=new ReadTestquestion();JPanel pAddbox=new JPanel();JPanel pAddbox=new JPanel();for(int i=0;i4;i+)for(int i=0;i4;i+)pAddbox.add(boxi);pAddbox.add(boxi);任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务3 3 考试区域考试区域TestAreaTestArea类类 文本文件方式部分代码文本文件方式部分代码 Box boxH1=Box.createVerti

31、calBox(),Box boxH1=Box.createVerticalBox(),boxH2=Box.createVerticalBox(),boxH2=Box.createVerticalBox(),baseBox=Box.createHorizontalBox();baseBox=Box.createHorizontalBox();boxH1.add(new JLabel(boxH1.add(new JLabel(选择试题文件选择试题文件););boxH1.add(list);boxH1.add(list);boxH1.add(new JScrollPane(messagearea);

32、boxH1.add(new JScrollPane(messagearea);boxH1.add(viewscore);boxH1.add(viewscore);timeShow=new JTextField(20);timeShow=new JTextField(20);timeShow.setHorizontalAlignment(SwingConstants.RIGHT);timeShow.setHorizontalAlignment(SwingConstants.RIGHT);timeShow.setEditable(false);timeShow.setEditable(false)

33、;JPanel p1=new JPanel();JPanel p1=new JPanel();任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务3 3 考试区域考试区域TestAreaTestArea类类 文本文件方式部分代码文本文件方式部分代码 p1.add(new JLabel(p1.add(new JLabel(剩余时间:剩余时间:););p1.add(timeShow);p1.add(timeShow);p1.add(pauseorcontinuetime);p1.add(pauseorcontinuetime);boxH1.add(p1);boxH1.add(p1);b

34、oxH2.add(new JLabel(boxH2.add(new JLabel(试题内容:试题内容:););boxH2.add(new JScrollPane(testplay);boxH2.add(new JScrollPane(testplay);JPanel p2=new JPanel();JPanel p2=new JPanel();p2.add(pAddbox);p2.add(pAddbox);p2.add(commitresult);p2.add(commitresult);p2.add(readnext);p2.add(readnext);boxH2.add(p2);boxH2

35、.add(p2);baseBox.add(boxH1);baseBox.add(boxH1);任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务3 3 考试区域考试区域TestAreaTestArea类类 文本文件方式部分代码文本文件方式部分代码 baseBox.add(boxH2);baseBox.add(boxH2);setLayout(new BorderLayout();setLayout(new BorderLayout();add(baseBox,BorderLayout.CENTER);add(baseBox,BorderLayout.CENTER);welcome

36、Label=new JLabel(welcomeLabel=new JLabel(欢迎考试欢迎考试,提高英语水平提高英语水平,JLabel.CENTER);,JLabel.CENTER);welcomeLabel.setFont(new Font(welcomeLabel.setFont(new Font(隶书隶书,Font.PLAIN,24);,Font.PLAIN,24);welcomeLabel.setForeground(Color.blue);welcomeLabel.setForeground(Color.blue);add(welcomeLabel,BorderLayout.NO

37、RTH);add(welcomeLabel,BorderLayout.NORTH);public void itemStateChanged(ItemEvent e)public void itemStateChanged(ItemEvent e)任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务3 3 考试区域考试区域TestAreaTestArea类类 文本文件方式部分代码文本文件方式部分代码 timeShow.setText(null);timeShow.setText(null);iclosetime=false;iclosetime=false;ipausetime=f

38、alse;ipausetime=false;pauseorcontinuetime.setText(pauseorcontinuetime.setText(暂停计时暂停计时););String name=(String)list.getSelectedItem();String name=(String)list.getSelectedItem();readtests.setFilename(name);readtests.setFilename(name);readtests.settestover(false);readtests.settestover(false);time=readt

39、ests.getTime();time=readtests.getTime();if(countTime.isAlive()if(countTime.isAlive()iclosetime=true;iclosetime=true;countTime.interrupt();countTime.interrupt();任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务3 3 考试区域考试区域TestAreaTestArea类类 文本文件方式部分代码文本文件方式部分代码 countTime=new Thread(this);countTime=new Thread(this);me

40、ssagearea.setText(null);messagearea.setText(null);testplay.setText(null);testplay.setText(null);readnext.setText(readnext.setText(读取第一题读取第一题););commitresult.setEnabled(false);commitresult.setEnabled(false);readnext.setEnabled(true);readnext.setEnabled(true);welcomeLabel.setText(welcomeLabel.setText(

41、欢迎考试欢迎考试,你选择的试题你选择的试题:+readtests.getFilename();:+readtests.getFilename();public void actionPerformed(ActionEvent e)public void actionPerformed(ActionEvent e)if(e.getSource()=readnext)if(e.getSource()=readnext)任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务3 3 考试区域考试区域TestAreaTestArea类类 文本文件方式部分代码文本文件方式部分代码 readnex

42、t.setText(readnext.setText(读取下一题读取下一题););commitresult.setEnabled(true);commitresult.setEnabled(true);String contentTest=readtests.getTestContent();String contentTest=readtests.getTestContent();testplay.setText(contentTest);testplay.setText(contentTest);messagearea.setText(null);messagearea.setText(n

43、ull);readnext.setEnabled(false);readnext.setEnabled(false);trytrycountTime.start();countTime.start();catch(Exception event)catch(Exception event)任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务3 3 考试区域考试区域TestAreaTestArea类类 文本文件方式部分代码文本文件方式部分代码 if(e.getSource()=commitresult)if(e.getSource()=commitresult)readnext.se

44、tEnabled(true);readnext.setEnabled(true);commitresult.setEnabled(false);commitresult.setEnabled(false);String answer=?;String answer=?;for(int i=0;i4;i+)for(int i=0;i4;i+)if(boxi.isSelected()if(boxi.isSelected()answer=boxi.getText();answer=boxi.getText();boxi.setSelected(false);boxi.setSelected(fals

45、e);break;break;任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务3 3 考试区域考试区域TestAreaTestArea类类 文本文件方式部分代码文本文件方式部分代码 readtests.setSelection(answer);readtests.setSelection(answer);if(e.getSource()=viewscore)if(e.getSource()=viewscore)int score=readtests.getScore();int score=readtests.getScore();String messages=readtes

46、ts.getMessages();String messages=readtests.getMessages();messagearea.setText(messagearea.setText(分数分数:+score+n+messages);:+score+n+messages);if(e.getSource()=pauseorcontinuetime)if(e.getSource()=pauseorcontinuetime)if(ipausetime=false)if(ipausetime=false)pauseorcontinuetime.setText(pauseorcontinueti

47、me.setText(继续计时继续计时););ipausetime=true;ipausetime=true;else if(ipausetime=true)else if(ipausetime=true)任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务3 3 考试区域考试区域TestAreaTestArea类类 文本文件方式部分代码文本文件方式部分代码 pauseorcontinuetime.setText(pauseorcontinuetime.setText(暂停计时暂停计时););ipausetime=false;ipausetime=false;countTime.i

48、nterrupt();countTime.interrupt();public synchronized void run()public synchronized void run()while(true)while(true)if(time=0)if(time=1)else if(time=1)time=time-1000;time=time-1000;long leftTime=time/1000;long leftTime=time/1000;long leftHour=leftTime/3600;long leftHour=leftTime/3600;long leftMinute=

49、(leftTime-leftHour*3600)/60;long leftMinute=(leftTime-leftHour*3600)/60;long leftSecond=leftTime%60;long leftSecond=leftTime%60;timeShow.setText(+leftHour+timeShow.setText(+leftHour+小时小时+leftMinute+leftMinute+分分+leftSecond+leftSecond+秒秒););任务二任务二单机版考试系统的开发单机版考试系统的开发子任务子任务3 3 考试区域考试区域TestAreaTestArea

50、类类 文本文件方式部分代码文本文件方式部分代码 trytryThread.sleep(1000);Thread.sleep(1000);catch(InterruptedException ee)catch(InterruptedException ee)if(iclosetime=true)if(iclosetime=true)return;return;while(ipausetime=true)while(ipausetime=true)trytrywait();wait();catch(InterruptedException ee)catch(InterruptedException

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁