2022年停车场管理系统_ .pdf

上传人:Che****ry 文档编号:30536477 上传时间:2022-08-06 格式:PDF 页数:24 大小:1.21MB
返回 下载 相关 举报
2022年停车场管理系统_ .pdf_第1页
第1页 / 共24页
2022年停车场管理系统_ .pdf_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《2022年停车场管理系统_ .pdf》由会员分享,可在线阅读,更多相关《2022年停车场管理系统_ .pdf(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、上海海洋大学信息学院软件工程作业报告设计题目:停车场管理系统学院:信息学院专业:空间信息与数字技术班级: 1、2 班学生姓名:代雪 1353247 (组长)魏梓桐1353204、刘亚松1353147 刘花 1353209、吴仪 1353113 程梦雪1353115 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 24 页 - - - - - - - - - 概要设计说明书第 2 页 共 24 页1.引言21 世纪以来,现代化产业高速发展,汽车作为日常交通工具已经普及社会的

2、每一个角落,给人们的日常生活带来了极大的便利。但是随着汽车拥有量的急剧增加,车辆停放的问题随之而来, 如果没有合理的停放规则和秩序,势必引起许多不必要的麻烦,反而给生活带来不便。停车场作为交通设施的组成部分,随着交通运输的繁忙和不断发展,人们对其管理的要求也不断提高, 都希望管理能够达到方便、快捷以及安全的效果。然后目前的许多停车场还处于一种纯人工的管理的模式,在车辆的管理上效率低下,而且十分容易出错。因此需要一种合适的管理系统来解决这些问题,达到高效,简易的效果,给广大人民的出行带来方便。本论文旨在设计一个简单、高效且实用的停车场管理系统,希望能解决目前管理上存在的一些问题。系统的设计过程经

3、过了需求分析阶段、概念设计阶段、逻辑结构设计阶段、数据库物理设计阶段、数据库的实施和维护以及系统的调试与测试,最终完成了一个比较完善的收费停车场管理系统。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 24 页 - - - - - - - - - 概要设计说明书第 3 页 共 24 页2. 需求分析需求分析是设计数据库的起点,需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用。目前停车场的管理方式比较落后,已经不能

4、适应现代社会的实际需求,本系统的开发能给管理上带来新鲜的活力,提高管理的效率,具有较高的实用性和开发价值。通过调查了解分析停车管理的现状,弄清用户对开发的数据库应用系统的确切要求,以及停车场管理的流程,系统的具体功能和数据库中数据信息。2.1 处理对象系统处理的对象包括车辆信息、固定车位信息、 自由车位信息、 停车车辆信息以及收费记录等五个方面。即固定车位信息:车位编号、车位位置、车牌号码、车主姓名、车辆品牌、车辆颜色、车辆照片、联系地址、联系方式、车位余额;自由车位信息:车位编号、车位位置;车辆信息:车牌号码、车辆品牌、车辆颜色;停车信息: 车位编号、 车牌号码、 进入时间、 离开时间、 时

5、间段、 车位类型、 在位情况、收费费率;收费记录:车位编号、车牌号码、停车时间、停车费用、发票编号。2.2 功能要求整个系统具体包括三个子系统,分别为: 停车处理子系统、车位综合管理子系统以及收费子系统。处理的功能包括:车辆信息的查询以及更新;空闲车位信息的查询;固定车位信息的查询;进出车辆记录的更新和收费信息的查询与更新等。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 24 页 - - - - - - - - - 概要设计说明书第 4 页 共 24 页2.3 业务流程

6、图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 24 页 - - - - - - - - - 概要设计说明书第 5 页 共 24 页2.4 数据流图2.5 数据字典数据项:表 2-1 数据项说明数据项编号数据项名数据项含义与其它数据项的关系存储结构别名DI-1 Cwno 车位编号char(10) 编号DI-2 Carno 车牌号码char(10) 车牌DI-3 Carname 车主姓名char(10) 姓名名师资料总结 - - -精品资料欢迎下载 - - - - - -

7、 - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 24 页 - - - - - - - - - 概要设计说明书第 6 页 共 24 页数据项编号数据项名数据项含义与其它数据项的关系存储结构别名DI-4 Carcolor 车辆颜色char(4) 颜色DI-5 Carpho 车辆照片bit 照片DI-6 Caradd 联系地址char(20) 地址DI-7 Cartel 联系方式char(20) 电话DI-8 Carat 在位情况char(4) DI-9 Carin 进入时间datetime DI-10 Carout 离开时间datetim

8、e DI-11 Carmon 车位余额float 余额DI-12 Montime 收费费率float 费率DI-13 Moneypay 停车费用float 收费DI-14 Cwtype 车位类型char(4) DI-15 Cartime 停车时间float 时间DI-16 Piece 发票编号char(20) Dl-17 Carsb 车辆品牌char(10) 车名Dl-18 Cwpace 车位位置char(10) 位置Dl-19 Timetype 时间段char(6) 2.6 逻辑描述表 2-3 处理逻辑描述处理编号处理功能处理过程PR-1 判断用户查询涉及的功能模块固定车位信息模块、自由车位

9、信息模块、停车车辆信息模块、进出车辆记录信息模块、收费记录模块:先确定查询所涉及的功能模块;然后,确定要查询的内容,确定查询数据流向;最后显示查询结果。PR-2 判断用户修改要涉及的模块,同时把相固定车位信息模块、自由车位信息模块、停车车辆信息名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 24 页 - - - - - - - - - 概要设计说明书第 7 页 共 24 页应的修改数据传到相应的模块之中模块、进出车辆记录信息模块、收费记录模块:先确定更新所涉及的功能模块;

10、然后,把更新信息传送到相应的模块中;最后,进行相应的更新操作。3.概念设计3.1 目标概念结构设计师是将需求分析得到的用户需求抽象为信息结构即概念模型的过程。它是整个数据库设计的关键。概念结构设计步骤分为两步:第一步是抽象数据并设计局部视图,第二步是集成局部视图,得到全局的概念结构。3.2 设计过程(1)选择中层数据流为切入点,通常选择实际系统中的子系统;(2)设计分E-R 图,即各子模块的E-R 图;(3)生成初步E-R 图,通过合并方法,做到各子系统实体、属性、联系统一;(4)生成全局E-R 图,通过消除冲突等方面。通过分析系统的业务流图与数据流图,得到系统围绕“车辆”与“车位”之间的相互

11、关系。3.3 阶段成果分 E-R 图:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 24 页 - - - - - - - - - 概要设计说明书第 8 页 共 24 页全局 E-R 图:4.逻辑设计4.1 目标逻辑结构设计的任务是把概念结构设计阶段设计好的基本E-R 图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。逻辑结构设计时一般要分为3 步进行: 将概念结构转换为一般的关系、网状、层次模型;将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换

12、;对数据模型进行优化。4.2 任务与结果4.2.1 数据组织(1)将 E-R 模型转换为关系模型转换的原则是: 一个实体型转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有以下不同的情况:一个 1:1 联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。 三个或三个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。一个 1:n 联系可以转换为一个独立的关系模式,也可以与n 端对应的关系模式合并。名师资料总结 - - -精品资料欢迎下载 - - -

13、- - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 24 页 - - - - - - - - - 概要设计说明书第 9 页 共 24 页如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。一个 m :n 联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。 3 个或 3 个以上实体间的一个多元联系可以转换位一个关系模型。与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关

14、系的码或关系码的一部分。4.2.2 功能模块图图 9. 系统功能模块图5.物理设计5.1 目标物理设计就是为一个给定的逻辑数据结构模型选取一个最合适应用要求的物理结构的过程。 物理设计通常分为两步:确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构; 对物理结构进行评价,评价的重点是时间和空间效率。如果评价结果满足原设计要求, 则可进入到物理实施阶段,否则,就需要重新设计或修改物理结构,有时甚至要返回逻辑设计阶段修改数据模型。物理设计的内容包括:为关系模型选择存取方法;设计关系、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -

15、- - 名师精心整理 - - - - - - - 第 9 页,共 24 页 - - - - - - - - - 概要设计说明书第 10 页 共 24 页索引等数据库文件的物理存储结构。5.2 任务5.2.1 数据存取方面由于经常需要判断是否有空余车位,所以要经常查询停车信息,因此在Stop 表的 Cwno上建立聚簇索引以提高查询效率。为了方便查询各个车辆的收费记录,在 Moneynote 表的 Carno 上建立聚簇索引以提高查询效率5.2.2 功能模块图(1)车位信息查询及更新模块图:图 10. 车位信息查询及更新模块图(2)停车信息查询及更新模块图:名师资料总结 - - -精品资料欢迎下载

16、 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 24 页 - - - - - - - - - 概要设计说明书第 11 页 共 24 页图 11. 停车信息查询及更新模块图(3)收费费率查询及更新模块图:图 12. 收费费率查询及更新模块图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 24 页 - - - - - - - - - 概要设计说明书第 12 页 共 24 页6.部分功能代码

17、实现系统界面车辆进场名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 24 页 - - - - - - - - - 概要设计说明书第 13 页 共 24 页信息查询出场结算/* 用于实现登录的界面*/ package com.view; import com.model.LoginModel; import com.model.SellModel; import com.mytools.*; import com.sun.awt.AWTUtilities; import

18、java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionAdapter; import javax.imageio.ImageIO; import javax.swing.*; 名师资料总结 - - -精品

19、资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 24 页 - - - - - - - - - 概要设计说明书第 14 页 共 24 页import javax.swing.border.MatteBorder; import java.io.*; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.ut

20、il.Map; import java.util.Vector; SuppressWarnings(serial) public class Park extends JFrame implements MouseListener /全局的位置变量,用于表示鼠标在窗口上的位置static Point origin = new Point(); / 定义组件ImagePanel bkim = null; JButton min, close, loginqueding,carIn, carOut, Search, Exit; JComboBox user; JPasswordField pass

21、word; JPanel contentPane=new JPanel( ); String allparas = 1; int count = ParkPojo.getCarCount(); String indate = null; static String userId = getRandomString(8); SuppressWarnings(unused) public static void main(String args) / TODO Auto-generated method stub Park login1 = new Park(); public void setb

22、utton(JButton jb) jb.setContentAreaFilled(false); jb.setBorderPainted(false); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 24 页 - - - - - - - - - 概要设计说明书第 15 页 共 24 页jb.setFocusPainted(false); jb.addMouseListener(this); jb.setOpaque(false); / 窗口操作控制菜单public

23、void windowsmenu() min = new JButton(new ImageIcon(image/Loginmin.png); min.setBounds(346, 0, 27, 21); min.setRolloverIcon(new ImageIcon(image/LoginminC.png); setbutton(min); min.setToolTipText( 最小化 ); close = new JButton(new ImageIcon(image/Loginclose.png); close.setBounds(370, 0, 29, 21); close.se

24、tRolloverIcon(new ImageIcon(image/LogincloseC.png); setbutton(close); close.setToolTipText( 关闭 ); /bkim.add(min); /bkim.add(close); / 构造函数public Park() / 设置窗体的样式为当前系统的样式try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName(); catch (Exception e) / TODO: handle exception Image loginbk

25、= null; try 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 24 页 - - - - - - - - - 概要设计说明书第 16 页 共 24 页loginbk = ImageIO.read(new File(image/pc1.jpg); catch (IOException e) / TODO: handle exception e.printStackTrace(); / 窗口背景面板bkim = new ImagePanel(loginbk); bk

26、im.setLayout(null); carIn = new JButton(new ImageIcon(image/carin.png); carIn.setBounds(100, 36, 180, 60); carIn.setRolloverIcon(new ImageIcon(image/carin.png); setbutton(carIn); carIn.setToolTipText( 车辆进场 ); carOut = new JButton(new ImageIcon(image/carout.png); carOut.setBounds(100, 100, 180, 60);

27、carOut.setRolloverIcon(new ImageIcon(image/carout.png); setbutton(carOut); carOut.setToolTipText( 出场结算 ); Search = new JButton(new ImageIcon(image/infoquery.png); Search.setBounds(100, 160, 180, 60); Search.setRolloverIcon(new ImageIcon(image/infoquery.png); setbutton(Search); Search.setToolTipText(

28、信息查询 ); Exit = new JButton(new ImageIcon(image/exit.png); Exit.setBounds(100, 220, 180, 60); Exit.setRolloverIcon(new ImageIcon(image/exit.png); setbutton(Exit); Exit.setToolTipText( 退出 ); bkim.add(carIn); bkim.add(carOut); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -

29、- 第 16 页,共 24 页 - - - - - - - - - 概要设计说明书第 17 页 共 24 页bkim.add(Search); bkim.add(Exit); windowsmenu(); this.setUndecorated(true); WindowMove(); setOpacity(); this.add(bkim); this.setSize(400, 290); this.setVisible(true); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_

30、CLOSE); / 窗体移动函数public void WindowMove() /设置没有标题的窗口可以拖动this.addMouseListener(new MouseAdapter() public void mousePressed(MouseEvent e) /按下( mousePressed 不是点击,而是鼠标被按下没有抬起)origin.x = e.getX(); /当鼠标按下的时候获得窗口当前的位置origin.y = e.getY(); ); this.addMouseMotionListener(new MouseMotionAdapter() public void mo

31、useDragged(MouseEvent e) Point p =getLocation(); /当鼠标拖动时获取窗口当前位置名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 24 页 - - - - - - - - - 概要设计说明书第 18 页 共 24 页/设置窗口的位置/窗口当前的位置+ 鼠标当前在窗口的位置- 鼠标按下的时候在窗口的位置setLocation(p.x + e.getX() - origin.x, p.y + e.getY() - origin.

32、y); ); Override public void mouseClicked(MouseEvent e) / TODO Auto-generated method stub if(e.getSource() = min) setState(JFrame.ICONIFIED); if(e.getSource() = close) dispose(); if(e.getSource() = loginqueding) String userid = user.getSelectedItem().toString().trim(); String upassword = new String(t

33、his.password.getPassword(); if (userid.equals() JOptionPane.showMessageDialog(this, 请输入用户再登录); return; if (upassword.equals() JOptionPane.showMessageDialog(this, 请输入密码再登录); return; if (userid.equals(admin) | upassword.equals(418218) new UserMainWindows(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -

34、 - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 24 页 - - - - - - - - - 概要设计说明书第 19 页 共 24 页this.dispose(); return; if (!LoginModel.checkid(userid) JOptionPane.showMessageDialog(this, 抱歉  +userid+ 没有登录此系统的权限); return; if (LoginModel.checkpassword(userid, upassword) new UserMainWindows(); else JOpt

35、ionPane.showMessageDialog(this, 密码不正确,请重新输入密码); this.password.setText(); return; else if(e.getSource() = carIn) if(count0) if(indate = null) count-; ParkPojo.setCarCount(count); Date date=new Date(); DateFormat format=new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); String time=format.format(date); indate

36、 = time; JOptionPane.showMessageDialog(this, 车 辆 已 停 入 , 剩 余 车 位+count+, 现在时间: +time); else JOptionPane.showMessageDialog(this, 您已停入 ); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 24 页 - - - - - - - - - 概要设计说明书第 20 页 共 24 页 else JOptionPane.showMessageDialo

37、g(this, 已无车位 ); else if(e.getSource() = carOut) Date date=new Date(); DateFormat format=new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); String time=format.format(date); if(indate = null) JOptionPane.showMessageDialog(this, 未停入车辆 ); else count+; ParkPojo.setCarCount(count); int thour = Integer.parseInt(da

38、teDiff(indate,time,yyyy-MM-dd HH:mm:ss).get(hour).toString()+1; JOptionPane.showMessageDialog(this, 共 停 放 +thour+ 小 时 ,费 用 是 :+(thour*ParkPojo.getA()+元); indate = null; else if(e.getSource() = Search) if(indate = null) JOptionPane.showMessageDialog(this, 未停入车辆 ); else new ParkQuery(indate); else if(

39、e.getSource() = Exit) dispose(); Override 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 24 页 - - - - - - - - - 概要设计说明书第 21 页 共 24 页public void mouseEntered(MouseEvent e) / TODO Auto-generated method stub Override public void mouseExited(MouseEvent e) / TODO A

40、uto-generated method stub Override public void mousePressed(MouseEvent e) / TODO Auto-generated method stub Override public void mouseReleased(MouseEvent e) / TODO Auto-generated method stub / 窗口淡入淡出函数public void setOpacity() / 窗口设置淡入淡出代码段AWTUtilities.setWindowOpacity(Park.this, 0f); ActionListener

41、lisener = new ActionListener() float alpha = 0; Override public void actionPerformed(ActionEvent e) / TODO Auto-generated method stub if (alpha 0.9) AWTUtilities.setWindowOpacity(Park.this, alpha+=0.1); else AWTUtilities.setWindowOpacity(Park.this, 1); Timer source = (Timer) e.getSource(); 名师资料总结 -

42、- -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 24 页 - - - - - - - - - 概要设计说明书第 22 页 共 24 页source.stop(); ; / 设置线程控制new Timer(50, lisener).start(); /* * 计算两个日期相差几天* author ym * date Nov 12, 2013 2:30:38 PM * param startTime * param endTime * param format 格式*/ private Ma

43、p dateDiff(String startTime, String endTime, String format) / TODO Auto-generated method stub / 按照传入的格式生成一个simpledateformate 对象SimpleDateFormat sf = new SimpleDateFormat(format); long nd = 1000 * 24 * 60 * 60;/ 一天的毫秒数long nh = 1000 * 60 * 60;/ 一小时的毫秒数long nm = 1000 * 60;/ 一分钟的毫秒数long ns = 1000;/ 一秒钟

44、的毫秒数long diff; Map diffMap = new HashMap(); try diff = sf.parse(endTime).getTime() - sf.parse(startTime).getTime(); long day = diff / nd;/ 计算差多少天long hour = diff % nd / nh;/ 计算差多少小时long min = diff % nd % nh / nm;/ 计算差多少分钟名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第

45、 22 页,共 24 页 - - - - - - - - - 概要设计说明书第 23 页 共 24 页long sec = diff % nd % nh % nm / ns;/ 计算差多少秒/ 输出结果System.out.println( 时间相差: + day + 天 + hour + 小时 + min + 分钟 + sec + 秒。 ); diffMap.put(day, String.valueOf(day); diffMap.put(hour, String.valueOf(hour); / diffMap.put(min, String.valueOf(min); / diffMa

46、p.put(sec, String.valueOf(sec); catch (Exception e) / TODO Auto-generated catch block e.printStackTrace(); return diffMap; public static String getRandomString(int length) String str=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789; java.util.Random random = new java.util.Random(); Str

47、ingBuffer sb = new StringBuffer(); for(int i = 0 ; i length; +i) int number = random.nextInt(62);/0,62) sb.append(str.charAt(number); return sb.toString(); public static String getRandomString2(int length) java.util.Random random = new java.util.Random(); StringBuffer sb = new StringBuffer(); for(in

48、t i = 0; i length; +i) int number = random.nextInt(3); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 24 页 - - - - - - - - - 概要设计说明书第 24 页 共 24 页long result = 0; switch(number) case 0: result = Math.round(Math.random() * 25 + 65); sb.append(String.valueOf(char

49、)result); break; case 1: result = Math.round(Math.random() * 25 + 97); sb.append(String.valueOf(char)result); break; case 2: sb.append(String.valueOf(new java.util.Random().nextInt(10); break; return sb.toString(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 24 页 - - - - - - - - -

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

当前位置:首页 > 教育专区 > 高考资料

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

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