欢迎来到沃文网! | 帮助中心 分享知识,传播智慧!
沃文网
全部分类
  • 教学课件>
  • 医学资料>
  • 技术资料>
  • 学术论文>
  • 资格考试>
  • 建筑施工>
  • 实用文档>
  • 其他资料>
  • ImageVerifierCode 换一换
    首页 沃文网 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于MVC模式的人事工资管理系统.doc

    • 资源ID:872207       资源大小:2.08MB        全文页数:34页
    • 资源格式: DOC        下载积分:10积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要10积分
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,下载更划算!
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于MVC模式的人事工资管理系统.doc

    1、东北石油大学本科生课程设计(论文)目 录第1章 概 述11.1 系统目的和意义11.2 系统开发环境11.3 系统开发模式及基本功能1第2章 系统设计32.1系统的模块划分32.2数据库设计4第3章 系统的详细设计及实现63.1数据库底层访问类63.2 登录模块83.3 系统首页面导航123.4 员工信息管理123.5 工资信息管理233.6 请假信息管理263.7 前台浏览模块293.8 修改密码模块30结 论32参考文献33第1章 概 述1.1 系统目的和意义本次课程设计的题目是“基于MVC模式的人事工资系统”的设计与实现,该设计是对于本学期所学的JSP程序设计课程的巩固和深入探索,同时结

    2、合Java语言、JSP技术进行Web程序设计,利用前面学过的知识来解决实际问题,提高解决问题的能力和动手编程的能力。同时该系统使用目前企业实际开发中比较成熟的MVC模式进行系统的整体架构设计,有效分离模块、功能之间的代码耦合关系,并逐步理解软件开发步骤和软件工程思想1。1.2 系统开发环境1 本系统采用Browser/Server体系结构。2 系统开发环境1) 开发平台:MyEclipse5.5.1 GA2) 开发语言:JSP、Java3) 数据库:Microsoft SQLServer20053 系统运行环境客户端:浏览器:桔子浏览器服务器端:数据库:Microsoft SQLServer2

    3、005应用程序系统1.3 系统开发模式及基本功能本系统是基于MVC模式设计和开发的,MVC模式是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式。Model(模型)表示应用程序核心,是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据;View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的;Controller(控制器)处理输入,是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。基于MVC模式的人事工资系统主要实现前台和后台两部分功能设计

    4、,其中前台主要实现员工查看个人基本信息、员工查看本月工资信息、系统评价和修改密码等功能。在查看个人基本信息当中,员工可以查看账号、身份证号、姓名、性别、入公司时间、学历、毕业院校、专业、所属部门名称、职位、联系方式、备注等基本个人信息;在查看本月工资信息当中,员工可以查看底薪、奖金、养老保险、失业险、医疗保险、住房公积金、个人所得税、罚金等工资信息。后台主要实现员工信息管理、工资信息管理、请假信息管理、系统评价等功能。其中员工信息管理包括添加员工信息和浏览、修改、删除员工信息;工资信息管理包括添加员工奖金信息和浏览工资信息;请假信息管理包括添加请假信息和浏览、修改、删除请假信息。第2章 系统设

    5、计2.1系统的模块划分人事工资系统是一种通常由管理员管理、用于记录和更新员工个人基本信息和工资情况的网站。员工的个人信息由管理员录入,基本工资按照国家统一计算方法计算,奖金以及罚金由管理员另外录入。参照一般的人事工资系统,为本系统设计了以下几个功能模块:1用户登录模块用户登录前根据用户类型分别进行登录验证,如果账号和密码正确,并且验证码无误则进入系统。2员工信息管理模块管理员可以对员工信息进行添加、浏览、修改和删除等操作,3工资信息管理模块管理员可以添加员工的奖金,同时浏览员工本月工资,4请假信息管理模块管理员可以添加员工请假信息,同时录入罚金数额。5友情链接模块用户通过点击链接可以进入到相关

    6、网站浏览信息。6前台浏览模块普通员工可以个人信息进行浏览以及个人本月工资情况。系统功能模块图如图2-1所示。人事工资系统员工信息管理工资信息管理请假信息管理友情链接前台浏览用户登录图2-1 系统功能模块图2.2数据库设计数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过DBMS进行数据库的维护工作。它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。数据库的设计是整个系统成败的一个重要环节。合理的数据库设计能够给系统带来很高的效

    7、率。而且能够使得各个功能模块的设计变得非常简单而且模块间的关系特别明确,从而提高系统的可维护性。本系统的数据库是在SQL Server2005中创建的。根据前面的分析,人事工资系统数据库共包含6个表,包括管理员信息表(tbAdmin)、员工信息(tbEmployee)、职位工资信息表(tbSalary)、员工详细工资信息表(tbSalaryDetail)、请假信息表(tbRest)和系统评估信息表(tbEvaluation)。表的结构、表字段的数据类型及相关说明如下:表1管理员信息表列名说明数据类型约束id管理员账号varchar(20)主键psw管理员密码varchar(20)非空表2 员工

    8、信息表列名说明数据类型约束id员工账号varchar(20)主键psw员工密码varchar(20)非空idNumber身份证号varchar(18)非空name姓名varchar(10)非空sex性别varchar(2)非空inDate入公司时间datetimedegree文化程度varchar(6)college毕业院校varchar(20)major专业varchar(20)deptName所属部门名称varchar(10)posId职位编号varchar(20)非空tel联系方式varchar(15)note备注varchar(300)表3 岗位工资表列名说明数据类型约束posId岗位

    9、编号varchar(20)主键posName岗位名称varchar(20)非空basePay基本工资decimal(10,4)非空edmRate养老金标准decimal(10,4)uepRate失业险标准decimal(10,4)healthRate医疗险标准decimal(10,4)phfRate公积金标准decimal(10,4)表4 员工工资详细信息表列名说明数据类型约束id员工账号varchar(20)主键monthTime月份datetime(10,4)非空basepay基本工资decimal(10,4)非空bonus奖金decimal(10,4)edmInsur养老保险decima

    10、l(10,4)uepInsur失业险decimal(10,4)healthInsur医疗保险decimal(10,4)phf住房公积金decimal(10,4)incomeTax个人所得税decimal(10,4)fine罚金decimal(10,4)表5 请假信息表列名说明数据类型约束id员工账号varchar(20)主键restDate请假日期datetime非空fine罚款decimal(10,4)非空note备注varchar(300)num序号int主键,自动编号以上就是人事工资系统所需的数据表,按照这些表结构设计,在Microsoft SQLServer2005中创建数据库Empl

    11、oyeeDatabase,并创建相应的表。第3章 系统的详细设计及实现3.1数据库底层访问类本系统的设计使用基于Servlet的MVC架构模式,将系统的各个功能的实现过程严格的划分为视图(View)、控制(Controller)、模型(Model),其中View负责界面的显示,Controller负责请求的转发和响应,Model负责逻辑业务对象实体和业务实体。由于本系统是一种信息管理系统,在这三层之下,还要建立数据库访问层,该层完成数据库的连接、SQL语句的具体执行等操作。这一层由MVC模式中的Model层里的业务实体进行调用,从而完成逻辑业务的信息维护操作。3.1.1JDBC数据库访问技术J

    12、DBC(Java Data Base Connectivity, java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,程序员就不必针对不同数据库分别编写程序,而只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍

    13、程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。简单来说,JDBC可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。为实现数据库连接,需将事先下载的sqljdbc.jar拷贝到lib目录下。3.1.2添加DBManager公共类首先创建包nepu.syx.tools,在该包下创建名为DBManager的类,该类得职责用于提供访问、操作数据库的公共方法。添加公共类的方法和步骤如下:在工程中的nepu.syx.tools包上点右键,选择【New】-【Class】菜单项,将弹出【New Java Class】对话框,保留默认的选择,在Name文本框中输入

    14、DBManager,点击Finish按钮。3.1.3编写公共方法3.1.2小节为项目添加了一个DBManager类,该类用于存放连接、操作数据库的公共方法,本小节介绍如何编写这些公共方法。首先为DBManager类声明几个公共变量,其中conn为数据库连接对象,定义形式为:private Connection conn=null;stmt用于向数据库发送要执行的sql语句,定义形式为:private Statement stmt=null;rs为结果集,定义形式为:private ResultSet rs=null;uri为要连接的URL,定义形式为:String uri=jdbc:sqlse

    15、rver:/localhost:1433; DatabaseName= EmployeeDatabase;user为数据库用户名,定义形式为:String user=sa;psw为数据库登录密码,定义形式为:String psw=111。1、数据库连接方法getConnection()首先利用Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);注册驱动程序,之后获取数据库链接,并进行相应异常处理。getConnection方法的关键代码如下:public Connection getConnection() try Class

    16、.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);conn=DriverManager.getConnection(uri,user,psw);if(conn=null) System.out.println(数据库连接失败!); catch (ClassNotFoundException e) e.printStackTrace ();System.out.println(驱动加载错误!); catch (SQLException e) e.printStackTrace ();System.out.print(获取数据库连接错误!

    17、);return conn;2、数据库查询方法executeQuery()用conn链接创建一个Statement对象,stmt调用executeQuery(sql)方法来进行数据查询,进行相应异常处理,返回类型为ResultSet。executeQuery()方法的关键代码如下:public ResultSet executeQuery(String sql)try stmt=conn.createStatement();rs=stmt.executeQuery(sql); catch (SQLException e) e.printStackTrace();System.out.print

    18、(执行sql语句错误!);return rs;3、数据库增删改的操作方法executeUpdate()用conn链接创建一个Statement对象,stmt调用executeUpdate (sql)方法来进行数据更新,进行相应异常处理,返回更新行数,类型为int。executeUpdate()方法的关键代码如下:public int executeUpdate(String sql)int count=0;trystmt=conn.createStatement();count=stmt.executeUpdate(sql);catch(SQLException e)e.printStackT

    19、race();return count;3.2 登录模块登录是每一个成功项目中不可缺少的模块,好的登录模块可以保证系统的可靠性和安全性。本节首先严格按照MVC架构模式为人事工资系统制作了一个简单的登录模块,根据用户类型不同,进入到不同操作页面,另外本节还详细介绍了主页面的设计。按照MVC模式进行构建登录功能的开发,对该模块的文件构建说明如下(1)Model层:在nepu.syx.DAO包中添加业务Javabean,类名为UserDAO。(2)Controller层:在nepu.syx.Servlet中添加类UserServlet,该servlet主要负责参数的接收以及用户相关操作的流程控制,例

    20、如,用户登录,修改密码等功能。(3)View层:在WebRoot文件夹下添加名为index.jsp和image.jsp的JSP文件。3.2.1 View层构建首先在MyEclipse的项目的WebRoot目录下index.jsp页面中编写表单代码,其中注意表单的action属性为该表单信息提交的服务端URL地址,method属性为提交方式。在这里由于是按照MVC模式,将信息提交给Servlet,因此method必须post。同时为避免复杂的URL的路径逻辑关系,统一使用绝对路径。值得注意的是,验证码图片的src设置为”image.jsp”,onclick事件设置为”this.src=this.

    21、src+? +Math.random();”页面设计如图3-1所示。图3-1 登录界面设计3.2.2 Model层构建在业务Javabean类UserDAO中建立方法adminLoginCheck()和employeeLoginCheck(),该方法的主要功能是判断用户是否存在,并且密码是否正确,该方法需要接收由servlet传递过来2个参数,一个是用户账号id,另一个是密码psw,调用DBManger数据库底层操作类的executeQuery()方法实现sql查询,如果用户类型是管理员,sql语句如下:String sql = select * from tbAdmin where id=+

    22、id+ and psw=+psw+; 如果用户类型是员工,sql语句如下: String sql = select * from tbEmployee where id=+id+ and psw=+psw+;执行该sql语句后,将返回一个结果集ResultSet,判断该结果集中的记录的条数,并使用变量count记录,如果count的值大于0,则表示用户存在,登录成功,返回一个布尔类型的值true,否则返回false。获取结果集后方法的核心代码如下:ResultSet rs = db.excuteQuery (sql);if(rs.next() return true;return false;

    23、3.2.3 Controller层构建在UserServlet添加方法doLogin(),在该方法中完成登录的逻辑判断。首先需要通过方法request.getParameter()来接收由index.jsp页面传递过来的参数id、psw、rand和checkNum,首先判断验证码是否正确,之后调用Model层的业务javaBean UserDAO的登录方法实现登录判定,登录成功后需要注意将账号用session进行存储,这样,在用户多次请求和响应之后都可以由session中取出用户名展示或判断用户是否登录。最后,在servlet中使用forward方法跳转到对应用户的首页面。UserServel

    24、t中的doLogin()方法关键代码如下:HttpSession session = request.getSession();String id = request.getParameter(id);String psw = request.getParameter(psw);String userType = request.getParameter(user);String checkNum = request.getParameter(checkNum);String rand = (String)session.getAttribute(rand);UserDAO uDAO = ne

    25、w UserDAO();boolean t = false;RequestDispatcher rd =null;try if(checkNum.equals(rand)if(userType.equals(admin) /用户是管理员t = uDAO.adminLoginCheck(id, psw);/判断管理员信息是否正确if(t) rd = request.getRequestDispatcher(admin/AdminIndex.jsp);else /用户是员工t=uDAO.employeeLoginCheck(id,psw);/判断员工信息是否正确rd = request.getRe

    26、questDispatcher(employee/EmployeeIndex.jsp);session.setAttribute(userType, userType);session.setAttribute(id, id);if(t=false)/用户不存在request.setAttribute( message,用户名或密码不正确!请重新输入!);rd = request.getRequestDispatcher(index.jsp);elserequest.setAttribute( message,验证码不正确!请重新输入!);rd = request.getRequestDisp

    27、atcher(index.jsp); catch (SQLException e) e.printStackTrace();rd.forward(request, response); 3.3 系统首页面导航人事工资的界面设计采用左侧导航结构,如图3-2所示,系统内几乎所有的jsp页面都具有大致类似的页面结构和风格,例如,相同的页面头部、左侧导航和页脚,因此,为了编码的方便和提高代码的可重用性,系统设计了一些公用的页面文件,主要包括AdminTop.jsp、AdminLeft.jsp、AdminEnd.jsp,其他的页面如后台管理的首页面AdminIndex.jsp则直接通过include指令

    28、标记将AdminEnd.jsp、AdminTop.jsp、AdminLeft.jsp包含到自身页面的相应位置即可,这样,编码工作将主要集中在左侧导航AdminLeft.jsp页面。其他新增的功能页面的设计思路类似,在此不再赘述。AdminIndex.jsp界面的浏览效果如图3-2所示:图3-2 后台管理首页面浏览效果3.4 员工信息管理本节首先严格按照MVC架构模式为人事工资系统制作了一个简单的员工信息管理模块,该模块包括添加员工信息和浏览/修改/删除员工信息两个部分,根据管理员的不同选择,可以进入不同操作页面。按照MVC模式进行构建登录功能的开发,对该模块的文件构建说明如下:(1)Model

    29、层:在nepu.syx.model包中添加文章类别的实体Javabean,类名为EmployeeModel和SalaryModel。在nepu.jsp.dao包中添加业务Javabean,类名为EmployeeDAO和SalaryDAO。其中EmployeeModel类包含12个属性,分别是账号、身份证号、姓名、性别、入公司时间、学历、毕业院校、专业、所属部门名称、职位编号、联系方式和备注,同时在该类中添加属性的set、get方法,EmployeeModel类的属性定义部分代码如下:public class EmployeeModel String id = ;String idNumber

    30、= ;String name = ;String sex = ;String inDate = ;String degree=;String college = ;String major = ;String deptName = ;String posId = ;String tel = ;String note = ;其中SalaryModel类包含12个属性,分别是账号、身份证号、姓名、月份、基础工资、奖金、养老保险、失业险、医疗保险、住房公积金、个人所得税、罚金和工资总计,同时在该类中添加属性的set、get方法,SalaryModel类的属性定义部分代码如下:public class

    31、 SalaryModel public String id =;public String name =;public String monthTime =;public double basepay = 0.0;public double bonus = 0.0;public double edmInsur =0.0;public double uepInsur =0.0;public double healthInsur =0.0;public double phf =0.0;public double incomTax = 0.0;public double fine =0.0;publ

    32、ic double total =0.0;(2)Ctroller层:在nepu.jsp.servlet中添加类EmployeeServlet,该servlet主要负责参数的接收以及进行与员工信息相关操作流程的控制,例如:增加员工信息、查询员工信息、更新员工信息等。(3)View层:在Webroot/admin文件夹下添加名为AdminAddUser.jsp、AdminQuery.jsp、AdminUpdateUser.jsp、EmployeeList.jsp四个 JSP文件。3.4.1 添加员工信息1、View层构建首先在MyEclipse的项目的WebRoot目录中建立admin文件夹,在其

    33、下建立AdminAddUser.jsp页面。页面设计如图3-3所示。图3-3 添加员工信息界面2、Model层构建(1)在业务Javabean类EmployeeDAO中建立方法getEmployeeList(),该方法主要功能是将结果集中的员工信息数据处理为ArrayList类型,该方法需要接收sql语句查询到的结果集。其主要代码如下:private ArrayList getEmployeeList(ResultSet rs) throws SQLException ArrayList al= new ArrayList();while(rs.next()EmployeeModel empl

    34、oyee = new EmployeeModel();employee.setId(rs.getString(id);employee.setIdNumber(rs.getString(idNumber);employee.setName(rs.getString(name);employee.setSex(rs.getString(sex);employee.setInDate(rs.getString(inD);employee.setDegree(rs.getString(degree);employee.setMajor(rs.getString(major);employee.set

    35、College(rs.getString(college);employee.setDeptName(rs.getString(deptName);由于结果集中存储的posId是职位编号,在员工基本信息中需转变为部门名称,调用DBManager数据库底层操作类的excuteQuery()方法实现更新,sql语句如下:String sql = select posName from tbSalary where posId=+rs.getString(posId)+;查询出结果集返回rs1,继续设置employee属性,将employee添加到al中,最终返回ArrayList类型变量al,代码

    36、如下:employee.setPosId(rs1.getString(posName);employee.setTel(rs.getString(tel);employee.setNote(rs.getString(note);al.add(employee);return al;(2)在业务Javabean类EmployeeDAO中建立方法getEmployee(),该方法主要功能是在数据库中查询对应id的员工,该方法需要接收由servlet传过来的id,调用DBManager数据库底层操作类的excuteQuery()方法实现更新,sql语句如下:String sql = select i

    37、d,idNumber,name,sex,convert(varchar(10),inDate,20) as inD, degree,major,college,deptName,posId,tel,note from tbEmployee where id=+id+;执行sql语句后将返回一个ResultSet类型,用rs接收,之后调用getEmployeeList()方法返回ArrayList类型变量al,代码如下:ArrayList al = getEmployeeList(rs);return al;(3)在业务Javabean类EmployeeDAO中建立方法addEmployee()

    38、,该方法主要功能是添加新员工信息,该方法需要接收由servlet传过来的EmployeeModel类型参数employee,首先获取employee属性值,主要代码如下:String id = employee.getId();String idNumber = employee.getIdNumber();String name = employee.getName();String sex = employee.getSex();String inDate = employee.getInDate();String degree=employee.getDegree();String co

    39、llege = employee.getCollege();String major = employee.getMajor();String deptName = employee.getDeptName();String posId = employee.getPosId();String tel = employee.getTel();String note = employee.getNote();之后调用DBManager数据库底层操作类的executeUpdate()方法实现更新,sql语句如下:String sql1 = insert into tbEmployee values

    40、(+id+,+id+,+idNumber+, +name+,+sex+ ,+inDate+,+degree+,+college+,+major+ ,+deptName+ ,+posId+,+tel+,+note+);执行该sql语句后,将返回一个int型变量并使用变量count记录,如果count的值大于0,则表示添加成功,返回一个布尔类型的值true,否则返回false。获取结果集后方法的核心代码如下:DBManager db = new DBManager();int count = db.executeUpdate(sql1);if(count0) return true;return

    41、false;(4)在业务Javabean类SalaryDAO中建立方法getIncomTax(),该方法功能是按照国家制定的计算个人所得税方法计算个人所得税,需接收SalaryModel类型变量来进行计算,首先定义double类型变量incomTax记录个人所得税,再定义double类型变量tax = salary.getBasepay()-salary.getEdmInsur()-salary.getPhf()- salary.getHealthInsur()-salary.getUepInsur()-3500.0来记录缴税部分数值,计算个人所得税代码如下:if(tax=0)incomTax

    42、 = 0;else if(tax=1500)incomTax = tax*0.03;else if(tax=4500)incomTax = tax*0.1-105;else if(tax=9000)incomTax = tax*0.2-555;else if(tax=35000)incomTax = tax*0.25-1005;else if(tax=55000)incomTax = tax*0.3-2755;else if(tax=80000)incomTax = tax*0.35-5505;elseincomTax = tax*0.45-13505;(5)在业务Javabean类Salar

    43、yDAO中建立方法calSalary(),该方法功能是获取用户的详细工资信息,需接收由SalaryServlet或EmployeeServlet传来的SalaryModel类型变量salary,调用sql语句查询该用户的详细工资信息,sql语句如下:String sql= select s.basepay,s.edmRate,s.uepRate,s.healthRate,s.phfRate,tr.fine from tbSalary s,tbEmployee e,(select sum(fine) fine from tbRest where id=+salary.getId()+) tr w

    44、here s.posId=e.posId and e.id=+salary.getId()+;通过调用excuteQuery()方法得到结果集后通过set()方法设置salary属性,其中incomTax属性需调用getIncomTax()方法来获取。(6)在业务Javabean类SalaryDAO中建立方法updateSalary()方法,该方法主要实现更新员工工资信息功能,如果用户已经存在,则更新奖金和罚金信息,如果用户不存在,则根据职位添加工资信息。该方法需接收servlet传来的SalaryModel类型变量salary和double类型变量bonus,首先通过get()方法获取基本工资信息,工资总计total= basepay-edmInsur-uepInsur-healthInsur-incomeTax,之后调用sql语句查询用户是否已经存在,并且查询奖金和罚金信息,sql语句如下:String sql= select bonus,fine from tbSalaryDetail where id=


    注意事项

    本文(基于MVC模式的人事工资管理系统.doc)为本站会员(精***)主动上传,沃文网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知沃文网(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给沃文网发消息,QQ:2622162128 - 联系我们

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

    Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1

    陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922