已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
人事管理系统 一 系统需求分析 2 1 系统的功能设计 2 2 系统功能结构 2 3 数据库设计 2 二 功能模块开发 3 1 查询人员信息界面 3 2 添加员工界面 3 3 修改员工信息界面 4 4 删除员工界面 5 5 员工考核界面 5 6 员工考核历史记录界面 6 三 各个类说明 6 四 程序代码 9 1 Manager 9 2 CardEmploy 11 3 SelEmploy 12 4 AddEmploy 14 5 ReviseEmploy 16 iUpdDialog 18 6 DelEmploy 21 7 AllEmploy 22 8 Examine 23 9 History 27 10 EmployModel 28 11 AppraisalModel 30 12 SqlHelper 33 2 一 系统需求分析 1 系统的功能设计 i员工信息管理 员工信息管理包括对员工基本信息和情况进行查询 添加 删除和修改及部门管理 ii员工考核管理 包括对员工的考核情况进行操作 还可以对历史考核 情况进行浏览 2 系统功能结构 人事管理的系统结构功能结构如图所示 3 数据库设计 员工基本表 Employinfo 名称字段名称数据类型主键非空 工号Empnovarchar 10 YesYes 姓名Enamevarchar 10 No yes 性别Sexvarchar 4 No yes 出生年月BirthdayDatetimeNo Yes 部门DeptNoChar 10 No Yes 职务EjobChar 20 No Yes 工资SalfloatNo Yes 员工考核表 Appraisal 名称字段名称数据类型主键非空 工号Empnovarchar 10 yesyes 考核Consequencevarchar 10 noyes 3 变更日期RegDatedatetimeNo Yes 考核历史记录 History 名称字段名称数据类型主键非空 流水号JourNoIntYesyes 工号Empnovarchar 10 noyes 姓名Enamevarchar 10 No Yes 上次考核OldInfovarchar 10 No Yes 本次考核NewInfovarchar 10 No Yes 变更日期RegDatedatetimeNo Yes 二 功能模块开发 1 查询人员信息界面 实例一个 SelEmploy 类 当点击 查询 时调用 EmployModel 类的 queryEmploy 方法实现查询 2 添加员工界面 4 实例一个 AddEmploy 类当点击 添加 时调用 EmployModel 类的 updEmploy 方法实现添加功能 3 修改员工信息界面 实例一个ReviseEmploy类当点击 修改 时 先调用UpdDialo 弹跳出一个修改信息对话框 信息修改完毕后 调用 EmployModel 类的 updEmploy 方法实现修改功能 5 4 删除员工界面 实例一个 DelEmploy 类当点击 删除 时调用 EmployModel 类 的 updEmploy 方法实现删除功能 5 员工考核界面 实例一个 Examine 类当点击 确认 时调用 AppraisalModel 类的 6 updAppraisal 方法来完成考核功能 6 员工考核历史记录界面 实例一个 History 类当点击时调用 AppraisalModel 类的 updAppraisal 方法来完成考核功能 三 各个类说明 类之间的关系图 7 1 Manager 类 Manager 类的一个实例 从而生成了人事管理系统的界面 用 JSplitPane 类 将整个界面分为左右两个部分 其中左侧实现了人事管理系统的功能树 采用 JTree 类构建 同时实现了 TreeSelectionListener 接口 定义了该接口 所必须实现的 valueChanged TreeSelectionEvent e 方法 JSplitPane 右边加 入卡卡片片布布局局 CardEmploy 类 当 JTree 的 TreeSelectionEvent 事件发生时 调 用 CardEmploy 的 c show 方法 切换不同卡片 实现不同的管理界面 2 CardEmploy类 CardEmploy 为卡片布局类的面板 主要功能是添加各个界面的卡片 当 JTree 的 TreeSelectionEvent 事件发生时 切换不同的卡片 3 EmployModel AppraisalModel类 这两个类继承了 AbstractTableModel 主要实现的功能是 存放调用 sqlhelper 类得到的数据 可以通过调用 sqlhelper 实现 增 删 查 改 功能 4 SqlHelper 类 主要就是连接数据库的一些基础操作是 方便代码修改 重复使用 5 SelEmploy 8 这个类继承 Panel 为 查询员工 的界面 实现了 Actionlistener 接口 当 ActionEvent 事件发生时 调用 EmployModel 类的 queryEmploy 方法实现查询 6 AddEmploy ReviseEmploy DelEmploy类 这些类继承 Pane 分别为 添加员工信息 修改员工信息 删除员工信 息 的界面 这些类实现了 Actionlistener 接口 当 ActionEvent 事件发生时 调用 EmployModel 类的 updEmploy 方法实现添加 查询 删除 功能 7 Examine类 这个类继承 Panel 为 考核员工 界面 这个类实现了 Actionlistener 接 口 当 ActionEvent 事件发生时 1 先通过调用 AppraisalModel 的 queryAppraisal 获取上次考核成绩 2 修改 Appraisal 表的考核成绩 3 再把上次考核成绩跟本次考核成绩加到 History 表中 8 History 这个类主要是把 History 表中的信息显示到界面上 9 四 程序代码 1 Manager package com Manager import java awt import javax swing import javax swing event TreeSelectionEvent import javax swing event TreeSelectionListener import javax swing tree import java awt event public class Manager extends JFrame implements TreeSelectionListener JPanel jp JSplitPane js JScrollPane jsp JTree tree DefaultMutableTreeNode root t1 t2 t1 1 t1 2 t1 3 t1 4 t1 5 t2 1 t2 2 CardEmploy ae EmployModel em public static void main String args Manager manager new Manager public Manager 给树的各个结点赋值 root new DefaultMutableTreeNode 人事管理系统 t1 new DefaultMutableTreeNode 基本信息管理 t1 1 new DefaultMutableTreeNode 查询员工 t1 2 new DefaultMutableTreeNode 添加员工 t1 3 new DefaultMutableTreeNode 修改员工信息 t1 4 new DefaultMutableTreeNode 删除员工资料 t1 5 new DefaultMutableTreeNode 查询全体员工 t2 new DefaultMutableTreeNode 人员考核管理 10 t2 1 new DefaultMutableTreeNode 人员考核 t2 2 new DefaultMutableTreeNode 考核历史查询 t1 add t1 1 t1 add t1 2 t1 add t1 3 t1 add t1 4 t1 add t1 5 t2 add t2 1 t2 add t2 2 root add t1 root add t2 tree new JTree root 对树进行监听 tree addTreeSelectionListener this 实例化CardEmploy面板 并加到jsplitpane的边 ae new CardEmploy js new JSplitPane js setLeftComponent tree js setRightComponent ae this getContentPane add js this setTitle 人事管理系统 this setVisible true this setSize 600 500 this setDefaultCloseOperation JFrame EXIT ON CLOSE public void valueChanged TreeSelectionEvent e 获取点击结点名称 DefaultMutableTreeNode dpath DefaultMutableTreeNode tree getLastSelectedPathComponent 通过点击不同结点切换不同界面 if dpath equals t1 1 ae c show ae 1 else if dpath equals t1 2 11 ae c show ae 2 else if dpath equals t1 3 ae c show ae 3 else if dpath equals t1 4 ae c show ae 4 else if dpath equals t1 5 ae c show ae 5 else if dpath equals t2 1 ae c show ae 6 else if dpath equals t2 2 ae c show ae 7 2 CardEmploy 用卡片布局设置各个界面 package com Manager import javax swing import java awt public class CardEmploy extends Panel CardLayout c 查询表 SelEmploy selE 添加表 AddEmploy addE 修改员工信息表 ReviseEmploy revE 删除员工表格 DelEmploy delE 所有员工信息 AllEmploy allE 员工考核表 Examine exaE 历史记录界面 12 History His public CardEmploy 查询员工表 selE new SelEmploy 添加员工表 addE new AddEmploy 修改员工信息 revE new ReviseEmploy 删除员工表格 delE new DelEmploy 所有员工信息 allE new AllEmploy 员工考核表 exaE new Examine 历史记录界面 His new History JPanel jp new JPanel 定义cardemploy面板 为卡片布局 把各个面板加入到C的卡片布局中 c new CardLayout this setLayout c this add selE 1 this add addE 2 this add revE 3 this add delE 4 this add allE 5 this add exaE 6 this add His 7 3 SelEmploy 13 SelEmploy 类 设置查询员工界面 package com Manager import java awt import javax swing import java awt event public class SelEmploy extends Panel implements ActionListener EmployModel em JLabel jl JTextField jtf JButton jb JTable jt JScrollPane jsp JPanel jp1 public SelEmploy 北部 jp1 new JPanel jl new JLabel 输入员工号 jtf new JTextField 20 jb new JButton 查询 对查询按钮监听 jb addActionListener this jp1 add jl jp1 add jtf jp1 add jb 中部 em new EmployModel String paras 1 em queryEmploy select from Employinfo where 1 paras jt new JTable em jsp new JScrollPane jt this setLayout new BorderLayout this add jp1 BorderLayout NORTH this add jsp BorderLayout CENTER 14 public void actionPerformed ActionEvent e if e getSource jb String name this jtf getText trim String sql select from Employinfo where Empno String paras name em new EmployModel em queryEmploy sql paras 查找成功更新表 jt setModel em 4 AddEmploy package com Manager import java awt import javax swing import java awt event public class AddEmploy extends Panel implements ActionListener JLabel jl jl1 jl2 jl3 jl4 jl5 jl6 jl7 JButton jb1 jb2 JTextField jtf1 jtf2 jtf3 jtf4 jtf5 jtf6 jtf7 JPanel jp1 jp2 jp3 jp4 EmployModel em public AddEmploy jl1 new JLabel 工号 jl2 new JLabel 姓名 jl3 new JLabel 性别 jl4 new JLabel 出生年月 jl5 new JLabel 部门 jl6 new JLabel 职位 jl7 new JLabel 工资 jtf1 new JTextField 20 jtf2 new JTextField 20 jtf3 new JTextField 20 15 jtf4 new JTextField 20 jtf5 new JTextField 20 jtf6 new JTextField 20 jtf7 new JTextField 20 jb1 new JButton 添加 jb2 new JButton 取消 监听 添加 取消 按钮 jb1 addActionListener this jb2 addActionListener this jp1 new JPanel new GridLayout 7 1 jp2 new JPanel new GridLayout 7 1 jp3 new JPanel jp1 add jl1 jp1 add jl2 jp1 add jl3 jp1 add jl4 jp1 add jl5 jp1 add jl6 jp1 add jl7 jp2 add jtf1 jp2 add jtf2 jp2 add jtf3 jp2 add jtf4 jp2 add jtf5 jp2 add jtf6 jp2 add jtf7 jp3 add jb1 jp3 add jb2 jp4 new JPanel new BorderLayout jp4 add jp1 BorderLayout WEST jp4 add jp2 BorderLayout EAST jp4 setSize 300 300 this setLayout new FlowLayout this add jp4 this add jp3 16 public void actionPerformed ActionEvent e if e getSource jb1 调用EmployModel 里的updEmploy 方法 实现对表格的添加 String sql insert into Employinfo values String paras jtf1 getText jtf2 getText jtf3 getText jtf4 getText jtf5 getText jtf6 getText jtf7 getText em new EmployModel if em updEmploy sql paras 当添加新员工成功时 则弹出 添加成功 的对话框 JOptionPane showMessageDialog this 添加成功 else if em updEmploy sql paras JOptionPane showMessageDialog this 添加失败 当新员工加入成功后 要把新加入员工的工号加到考核表 AppraisalModel temp new AppraisalModel String sql1 insert into Appraisal Empno values String paras1 jtf1 getText temp updAppraisal sql1 paras1 else if e getSource jb2 jtf1 setText jtf2 setText jtf3 setText jtf4 setText jtf5 setText jtf6 setText jtf7 setText 5 ReviseEmploy 17 package com Manager 修改员工界面 import java awt import java awt event import javax swing public class ReviseEmploy extends Panel implements ActionListener JTable jt JScrollPane jsp JButton jb1 jb2 JPanel jp1 jp2 EmployModel em JLabel jl1 public ReviseEmploy jl1 new JLabel 修改员工信息 JLabel CENTER jl1 setFont new Font 宋体 Font BOLD 28 jp2 new JPanel jp2 add jl1 em new EmployModel String paras 1 em queryEmploy select from Employinfo where 1 paras jt new JTable em jsp new JScrollPane jt jb1 new JButton 修改 jb2 new JButton 刷新 对两个按钮进行监听 jb1 addActionListener this jb2 addActionListener this this setLayout new BorderLayout jp1 new JPanel jp1 add jb1 jp1 add jb2 this add jp2 BorderLayout NORTH this add jsp BorderLayout CENTER this add jp1 BorderLayout SOUTH 18 public void actionPerformed ActionEvent e if e getSource jb1 int rowNum this jt getSelectedRow if rowNum 1 JOptionPane showMessageDialog this 请选择一行 return 弹出修改对话框 new UpdDialog em rowNum else if e getSource jb2 刷新修改界面中的表格 em new EmployModel String paras1 1 em queryEmploy select from Employinfo where 1 paras1 jt setModel em iUpdDialog package com Manager 弹出修改界面 import javax swing import java awt import java awt event public class UpdDialog extends JDialog implements ActionListener JLabel jl1 jl2 jl3 jl4 jl5 jl6 jl7 JButton jb1 jb2 JTextField jtf1 jtf2 jtf3 jtf4 jtf5 jtf6 jtf7 JPanel jp1 jp2 jp3 public UpdDialog EmployModel em int rowNums jl1 new JLabel 工号 19 jl2 new JLabel 姓名 jl3 new JLabel 性别 jl4 new JLabel 出生年月 jl5 new JLabel 部门 jl6 new JLabel 职位 jl7 new JLabel 工资 jtf1 new JTextField 20 jtf2 new JTextField 30 jtf3 new JTextField 30 jtf4 new JTextField 30 jtf5 new JTextField 30 jtf6 new JTextField 30 jtf7 new JTextField 30 初始化jtextfield数据 jtf1 setText String em getValueAt rowNums 0 jtf1 setEditable false jtf2 setText String em getValueAt rowNums 1 jtf3 setText String em getValueAt rowNums 2 jtf4 setText String em getValueAt rowNums 3 jtf5 setText String em getValueAt rowNums 4 jtf6 setText String em getValueAt rowNums 5 jtf7 setText String em getValueAt rowNums 6 jb1 new JButton 修改 jb2 new JButton 取消 对两个按钮监听 jb1 addActionListener this jb2 addActionListener this jp1 new JPanel jp2 new JPanel jp3 new JPanel 设置布局 jp1 setLayout new GridLayout 7 1 jp2 setLayout new GridLayout 7 1 添加组件 jp1 add jl1 jp1 add jl2 jp1 add jl3 20 jp1 add jl4 jp1 add jl5 jp1 add jl6 jp1 add jl7 jp2 add jtf1 jp2 add jtf2 jp2 add jtf3 jp2 add jtf4 jp2 add jtf5 jp2 add jtf6 jp2 add jtf7 jp3 add jb1 jp3 add jb2 this add jp1 BorderLayout WEST this add jp2 BorderLayout CENTER this add jp3 BorderLayout SOUTH this setSize 300 250 this setVisible true this setLocation 200 200 this addWindowListener new WindowAdapter public void windowClosing WindowEvent e dispose public void actionPerformed ActionEvent e if e getSource jb1 修改员工信息的 sql 语句 paras 为待注入的值 String sql update Employinfo set Ename Sex Birthday DeptNo Ejob Sal where Empno String paras jtf2 getText jtf3 getText jtf4 getText jtf5 getText jtf6 getText jtf7 getText jtf1 getText EmployModel temp new EmployModel 21 如果修改语句运行成功 则弹出 修改成功 对话框 if temp updEmploy sql paras JOptionPane showMessageDialog this 修改成功 this dispose else if e getSource jb2 关闭对话框 this dispose 6 DelEmploy 删除员工 package com Manager import javax swing import java awt import java awt event public class DelEmploy extends Panel implements ActionListener JTable jt JScrollPane jsp JButton jb1 jb2 JPanel jp1 jp2 JLabel jl1 EmployModel em public DelEmploy 北部 jl1 new JLabel 删除员工 JLabel CENTER jl1 setFont new Font 黑体 Font BOLD 30 jp2 new JPanel jp2 add jl1 中部 22 em new EmployModel String paras 1 em queryEmploy select from Employinfo where 1 paras jt new JTable em jsp new JScrollPane jt 南部 jp1 new JPanel jb1 new JButton 删除 jb2 new JButton 取消 jb1 addActionListener this jp1 add jb1 jp1 add jb2 this setLayout new BorderLayout this add jp2 BorderLayout NORTH this add jsp BorderLayout CENTER this add jp1 BorderLayout SOUTH public void actionPerformed ActionEvent e if e getSource jb1 返回用户点中的行 int rowNum this jt getSelectedRow if rowNum 1 JOptionPane showMessageDialog this 请选择一行 return 得到学生编号 String Empno String em getValueAt rowNum 0 删除记录的sql语句 String sql delete from Employinfo where Empno String paras Empno EmployModel temp new EmployModel temp updEmploy sql paras 删除员工成功后 更新员工表 em new EmployModel String paras1 1 em queryEmploy select from Employinfo where 1 23 paras1 jt setModel em 7 AllEmploy 遍历所有员工 package com Manager import java awt import javax swing public class AllEmploy extends Panel EmployModel em JTable jt JScrollPane jsp JLabel jl1 JPanel jp public AllEmploy 北部 jp new JPanel jl1 new JLabel 全体员工 JLabel CENTER jl1 setFont new Font 黑体 Font BOLD 30 jp add jl1 中部 em new EmployModel String paras 1 em queryEmploy select from Employinfo where 1 paras jt new JTable em jsp new JScrollPane jt this setLayout new BorderLayout this add jp BorderLayout NORTH this add jsp BorderLayout CENTER 24 8 Examine 员工考核界面 package com Manager import java awt import java awt event import java sql ResultSet import java util Vector import java sql import javax swing public class Examine extends Panel implements ActionListener JLabel jl1 jl2 jl3 jl4 JTable jt JScrollPane jsp JTextField jtf1 jtf2 Choice ch JButton jb1 jb2 JPanel jp1 jp2 jp3 jp4 AppraisalModel am SqlHelper sqh public Examine 北部 为标题文字 jp4 new JPanel jl1 new JLabel 员工考核 JLabel CENTER jl1 setFont new Font 黑体 Font BOLD 30 jp4 add jl1 中部 am new AppraisalModel am queryAppraisal select E Empno E Ename A Consequence A RegDate from Employinfo as E Appraisal as A where E Empno A Empno jt new JTable am jsp new JScrollPane jt 25 监听jtable 点击表格时获取点击的行数 并通过鼠标点击事件给 jtf1 jtf2 赋值 jt addMouseListener new MouseAdapter public void mouseClicked MouseEvent e int rowNum jt getSelectedRow jtf1 setText String am getValueAt rowNum 0 jtf2 setText String am getValueAt rowNum 1 jl2 new JLabel 工号 jl3 new JLabel 姓名 jl4 new JLabel 考核 jtf1 new JTextField 10 jtf2 new JTextField 10 jtf1 setEditable false jtf2 setEditable false 实例单选框组件 并赋值 ch new Choice ch add 未考核 ch add 不合格 ch add 合格 ch add 优秀 jp1 new JPanel jp1 add jl2 jp1 add jtf1 jp1 add jl3 jp1 add jtf2 jp1 add jl4 jp1 add ch jp2 new JPanel new BorderLayout jp2 add jsp BorderLayout CENTER jp2 add jp1 BorderLayout SOUTH 南部 jb1 new JButton 确认 jb2 new JButton 刷新 jp3 new JPanel 26 jb1 addActionListener this jb2 addActionListener this jp3 add jb1 jp3 add jb2 this setLayout new BorderLayout this add jp4 BorderLayout NORTH this add jp2 BorderLayout CENTER this add jp3 BorderLayout SOUTH public void actionPerformed ActionEvent e if e getSource jb1 String Empno jtf1 getText String Ename jtf2 getText String Consequence ch getSelectedItem 先获取上次考核记录 String sql select Consequence from Appraisal where Empno String paras Empno String OldInfo try sqh new SqlHelper ResultSet rs sqh queryExecute sql paras rs next OldInfo rs getString 1 catch Exception e1 e1 printStackTrace finally sqh close 对考核表进行修改 修改考核记录的sql语句 String sql1 update Appraisal set Consequence where Empno String paras1 Consequence Empno AppraisalModel temp new AppraisalModel if temp updAppraisal sql1 paras1 JOptionPane showMessageDialog this 考核成功 27 再把 上次考核记录 以及 本次操作记录 插入到 history表中 String sql2 insert into History Empno Ename OldInfo NewInfo values String paras2 Empno Ename OldInfo Consequence AppraisalModel temp1 new AppraisalModel temp1 updAppraisal sql2 paras2 else if e getSource jb2 刷新员工考核表 am new AppraisalModel String paras3 1 am queryAppraisal select E Empno E Ename A Consequence A RegDate from Employinfo as E Appraisal as A where E Empno A Empno this jt setModel am 9 History 历史记录界面 package com Manager import java awt import java awt event import javax swing public class History extends Panel implements ActionListener AppraisalModel am JTable jt JScrollPane jsp JLabel jl1 JPanel jp jp1 jp2 JButton jb1 jb2 28 public History 北部 jp new JPanel jl1 new JLabel 员工考核历史记录 JLabel CENTER jl1 setFont new Font 黑体 Font BOLD 30 jp add jl1 中部 am new AppraisalModel String paras 1 am queryHistory select from History where 1 paras jt new JTable am jsp new JScrollPane jt 南部 jp2 new JPanel jb1 new JButton 清空 jb2 new JButton 刷新 jb1 addActionListener this jb2 addActionListener this jp2 add jb1 jp2 add jb2 this setLayout new BorderLayout this add jp BorderLayout NORTH this add jsp BorderLayout CENTER this add jp2 BorderLayout SOUTH public void actionPerformed ActionEvent e if e getSource jb1 删除历史记录 并更新表 am new AppraisalModel String paras 1 am updAppraisal delete History where 1 paras am queryHistory select from History where 1 paras this jt setModel am else if e getSource jb2 刷新表格 am new AppraisalModel String paras 1 am queryHistory select from History where 1 29 paras this jt setModel am 10 EmployModel 重写TableModel package com Manager import javax swing table import java sql import java util public class EmployModel extends AbstractTableModel Vector rowData columnNames 实现查询 public void queryEmploy String sql String paras SqlHelper sqh null 用columnNames 存放 表的列名 columnNames new Vector columnNames add 工号 columnNames add 姓名 columnNames add 性别 columnNames add 出生年月 columnNames add 部门 columnNames add 职位 columnNames add 工资 rowData 存放表格的各行数据 rowData new Vector try sqh new SqlHelper ResultSet rs sqh queryExecute sql paras 30 while rs next Vector hang new Vector hang add rs getString 1 hang add rs getString 2 hang add rs getString 3 hang add rs getString 4 hang add rs getString 5 hang add rs getString 6 hang add rs getString 7 rowData add hang catch Exception e e printStackTrace finally sqh close 实现 表格 增 修 改 功能 public boolean updEmploy String sql String paras SqlHelper sqh new SqlHelper return sqh updExecute sql paras public int getRowCount return this rowData size public String getColumnName int column return String this columnNames get column public int getColumnCount return this columnNames size public Object getValueAt int row int column 获得某一个单元格的数值 return Vector this rowData get row get column 31 11 AppraisalModel 重写TableModel 为考核类的table模板 package com Manager import javax swing table import java sql import java util public class AppraisalModel extends AbstractTableModel Vector rowData columnNames 实现查询 public void queryAppraisal String sql SqlHelper sqh null 用columnNames 存放 表的列名 columnNames new Vector columnNames add 工号 columnNames add 姓名 columnNames add 上次考核 colu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论