某公司需要做一个SQL人事管理系统,请做一份数据库的设计

某公司需要做一个SQL人事管理系统,请做一份数据库的设计,第1张

这个系统最终实现的主要功能如下:

员工基本信息部分:主要完成对员工基本信息的添加、修改、删除、查询等管理。

员工档案信息部分:主要完成对员工档案信息的添加、修改、删除、查询等管理。

员工部门信息部分:主要完成对对员工所属部门的添加、修改、删除、查询等管理。

员工工资信息部分:主要完成对员工工资信息的添加、修改、删除、查询等管理。

员工保险信息部分:主要完成对员工保障信息的添加、修改、删除、查询等管理。

员工合同信息部分:主要完成员工与企业签订合同的一系列信息的添加、修改、删除、查询管理。

员工配偶信息(工号,配偶姓名, 出生年月,工作单位,电话)的工号参照员工基本信息的工号。

员工学历信息(工号,员工姓名,学历,毕业学校,专业,毕业时间,外语情况)的工号参照员工基本信息的工号。

企业工作岗位信息(工号,学历,部门,职位)的工号参照员工基本信息的工号,部门参照企业部门信息的部门

员工基本信息与员工配偶信息建立关于工号的父子关系。

员工基本信息与员工学历信息建立关于工号的父子关系。

员工基本信息与企业工作岗位信息建立关于工号的父子关系

。 企业工作岗位信息与员工基本信息建立关于工号的父子关系。

企业工作岗位信息与企业部门信息建立关于部门的父子关系。

采纳吧

1. 管理信息系统综述

1.1 概述

管理信息系统(Management Information System,简称MIS)是一个由管理人员和计算机组成的用以进行信息的收集、传输、加工、存储、维护和使用的系统。它是一门综合了管理科学,系统理论,计算机科学的系统性边缘科学。

管理信息系统的物理组成:

(1) 计算机硬件系统:包括主机、外部存储器、输入输出设备等。

(2) 计算机软件系统:包括系统软件和应用软件两大部分。

(3) 通信系统:包括线路等通信设施和与计算机网络、数据通信有关的软件等。

(4) 工作人员:包括系统分析员、程序设计员、维护人员、管理员、 *** 作人员等。

1.2 管理信息系统的发展

管理信息系统通过对企业当前运行的数据进行处理来获得有关信息,以控制企业的行为;利用过去和现在的数据及相应的模型,对未来的发展进行预测;能从全局目标出发,对企业的管理决策活动予以辅助。

1.3 目前我国人事管理的现状

我国的计算机应用于企业管理,只是在70年代末期以后才逐渐开展起来的。目前,计算机辅助管理已在我国的各行各业得到了广泛地应用,但总的来说,计算机在我国管理中的应用,还处于初级阶段,尽管近两年发展较快,但还需要不断地探索和研究。尤其是计算机辅助人事管理仅是近几年才在我国得到普及和发展,而在许多发达国家计算机辅助人事管理已十分普及,因此对这方面的研究是必要的,它将推动我国企业的发展和人事管理信息处理的现代化。

1.4 人事管理信息系统建设的好处

科技是第一生产力,离开了科学技术的企业是不会长远发展的,科技的载体是人,没有人也说无所谓科学技术,因此人力资源的开发和管理是十分重要的。随着时代的发展,人才在我国各行各业中的地位日趋重要,各类人才肩负着企业发展的重任,所以人事管理的好坏,决定着一个企业的兴衰成败,因此,开发人事管理信息系统对企业的管理及人才素质的提高具有重大的社会意义,具体到某一企业,可以提高该企业管理的现代化水平,提高人事管理的工作效率。

1、改变了工作方式,提高了工作效率

2、提高了经济效益

3、强化了企业的科学管理

1.5 开发管理信息系统的几点建议

开发系统不必贪大求全,力争简单实用。应从大处着眼,小处着手,循序渐进,逐步完善。对开发过程中的各种文档应当注意保存。

2. 开发方法

2.1系统开发方法概述

建立一个管理信息系统,是一项复杂的软件工程的实施。近30多年来,软件工程发展成为新科学,至今已经成为IT产业的重要支柱。一开始,人们往往使用手工作坊式的软件开发方法,靠个人的力量编写各种小型程序;但是随着计算机硬件技术的飞速发展,计算机软件在各个领域中的作用日益突出,那种多年来被人们沿用的手工作坊式的开发方法,已经在软件产品的质量、成本及开发时间等方面无法满足需求。

2.2 结构化生命周期法简介

结构化生命周期法是一种传统的管理信息系统开发方法,其基本思想是把整个系统开发过程分成若干个阶段,每个阶段进行若干活动,每项活动应用一系列标准、规范、方法和技术,完成一个或多个任务,形成符合给定规范的产品。

2.3 快速原型法简介

快速原型法是80年代发展起来的,旨在缩短开发周期,提高开发效率和用户对系统的满意程度。其基本思想是在系统开发的初期,尽快构造出系统的原型,使用户能及早地运行这个系统原型,通过使用它、熟悉它,受到启发并取得经验,然后对系统的目标和功能提出更精确、具体的要求,研制人员据此逐渐修改和完善原型,使它满足用户的需求,最后完成系统的开发。该方法大大提高了系统开发效率,弥补了结构化生命周期法开发时间长的缺陷。

2.4 本系统开发方法的选择

基于以上开发方法的优劣和本系统的实际情况,本系统总体上采用结构化生命周期法进行系统规则、系统分析和系统设计,但在系统实施阶段采用原型法。

3. 开发平台和工具

3.1开发平台的选择

考虑到本系统的性能要求,和现有的条件,我们选择了WINDOWSXP中文版作为开发、测试和运行的平台。因为WINDOWS *** 作系统是目前应用最广的 *** 作系统,它以全新的图形界面,简单快捷的 *** 作方式,支持多媒体功能等特点而成为软件发展的流行趋势,选用它作为开发平台,易于功能的扩展和软件升级。

3.2 开发工具的选择

针对目前世界上流行的大量软件和开发工具,经过认真分析其优缺点,结合计量器具管理系统的需要和目前的硬件环境,我们选用微软WINDOWS平台下的Visual FoxPro 6.0(简写为VF6.0)作为软件开发工具。

3.2.1 开发语言介绍

现在,市场上可以选购的应用开发产品很多,流行的也有数十种。目前在我国市场上最为流行、使用最多、最为先进的可用作做作企业级开发工具的产品有:

Microsoft公司的Visual FoxPro

4.系统规划和分析

系统规划,应根据组织的目标和发展战略以及管理信息系统建设的客观规律,并考虑到组织面临的内外部环境,科学地制定管理信息系统的发展战略和总体方案,合理安排系统建设的进程;它是管理信息系统(MIS)生命周期的第一个阶段,是MIS的概念形成时期,这一阶段的主要目标,就是制定出MIS的长期发展方案,决定MIS在整个生命周期内的发展方向、规模和发展进程。它的主要任务是:制定MIS的发展战略、确定组织的主要信息需求,形成MIS的总体方案、制定系统建设的资源分配计划。

4.1 系统的可行性分析

可行性分析是系统分析阶段的第二项活动,可行性分析能使新系统达到以最小的开发成本取得最佳的经济效益。可行性分析的目的,是根据开发管理信息系统的请求,通过初步调查,对要开发的管理信息系统从技术上、经济上、资源上和管理上进行是否可行的研究分析。这是一项保证资源合理使用、避免失误和浪费的重要工作。

1、经济上的可行性。

2、技术上的可行性。

3、资源上的可行性。

4、管理上的可行性。

4.2 系统的详细调查

系统的详细调查目标是在可行性分析的基础上进一步对原有系统进行全面、深入的调查和分析,弄清原有管理信息系统的运行状况,发现其薄弱环节,找出要解决问题的实质,确保新系统比原系统更加有效、可靠。具体内容包括:管理业务状况的调查分析、数据流程的调查分析。

详细调查之后,绘制出人事管理子系统的业务流程图,如下图:

查询要求

查询结果

用户设置 统计要求

表单维护 统计结果

4.3 系统逻辑模型的提出

为了实现管理信息系统的计算机化,仅仅用业务流程图形象地描述信息的流动和存储还远远不够,还要进一步调查分析舍去物质流,抽象出信息流,绘制出数据流程图,并对各种数据的属性和各项处理功能进行详细分析。系统分析的主要成果是系统的逻辑模型。本系统主要是以数据流图、数据字典为主要描述工具来勾画系统的概貌。

5.3.1 数据流图(DFD)

数据流图(Data Flow Diagram),是描述系统逻辑模型的主要工具之一,它是在对系统的业务流程图进行分析的基础上用少数几种符号综合地反映出信息在系统中的流动、存储和处理等情况,并能将信息处理功能和彼此之间的联系,自上而下,逐层分解,从逻辑上精确地描述出系统应具有的数据加工功能、数据输入输出、数据存储、数据来源和去向等项目。

1、计量器具管理子系统的关联图如下:

各单位 F1 F2

人事管理 部门 F3

职工 F4

注:F1基本信息表; F2信息管理; F3 招聘人员、职员人事档案; F4 人员信息管理

4.3.2 数据字典(DD)

数据字典(Data Dictionary),是数据流图(DFD)上所有成分的定义和解释的文字集合。它是系统分析阶段的重要文档,它的作用是将数据流图中全部数据流及其组成部分的数据元素、数据存储、数据加工外部项等,通过数据字典描述清楚,以便于以后系统设计时使用。

5. 系统设计

管理信息系统设计阶段的主要目的是将系统分析阶段所提出的反映了用户信息需求的系统逻辑方案转换成可以实施的基于计算机与通信系统的物理(技术)方案。

5.1 系统设计的依据

1、系统分析的成果

2、现行技术

3、现行信息管理和信息技术的标准、规范和有关法律制度

4、用户需求

5、系统运行环境

5.2 系统总体结构设计

总体流程图如下:

按照结构化的系统设计方法,分析企业人事管理系统的总体流程图如下:

5.3 系统的详细设计

5.3.1 代码设计

代码,就是用来表征客观事物的实体类别,以及属性的一个或一组易于计算机识别和处理的特定符号或记号。它的作用是描述对象状态,便于统计和检索对象。

代码设计的原则:适应计算机处理、简单明了、具有可扩充性、系统性、便于识别和记忆等。

本系统对所有数据库表中的主码和外来码均采用“汉字名称”作为代码。

5.3.2 数据库设计

数据库设计是要在一个给定的应用环境(DBMS)中,通过合理的逻辑设计和有效的物理设计,构造较优的数据库模式、子模式,建立数据库和设计应用程序,满足用户的各种信息需求。

基于以上设计原则,本系统中相关数据库(人事管理)包括以下几个表现将表结构设计举例如下:

jbxx表

jyjl表

grjl表

gwbd表

jc表

ltdj表

ypxx表

lqqk表

pxap表

pxqk表

 数据库的安全性、完整性、并发控制和恢复

信息数据是企业中非常重要的资源,因此保证数据库的安全可靠、正确有效是非常重要的问题。一般的数据库管理系统(DBMS)都有提供了一定的数据保护功能。数据库保护也称为数据控制,主要包括数据的安全性、完整性、并发控制和数据库的恢复等。

(1)数据库的安全性

数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。由于数据库系统中存放着大量的数据,且为许多用户所共享,因此安全性问题是必须首先要解决的。一般计算机系统中的安全措施是按照“用户标识和鉴别”、“DBMS存取控制”、“OS级安全控制”、“DB密码存储”来一级一级设置的。

在现在流行的数据库系统中一般都提供以下两种控制:用户标识和鉴别、数据存取控制。

(2)数据完整性

为了保证数据库数据的正确性和相容性,数据库管理系统(DBMS)都提供了一种机制来检查数据库中的数据,看它是否满足语义的规定条件,DBMS称这种机制为“数据完整性检查”。一般的DBMS中是通过完整性约束和数据库触发器来实现这一机制的。

(3)并发控制

在多用户数据库环境中,多个用户程序可并行存取数据库中的数据,为了以正确的方式调度该并发 *** 作,避免造成“丢失修改”、“不能重读”、“读脏数据”等不一致的情况,DBMS引入了“并发控制”这一机制。

并发控制的主要方法是采用封锁机制,一般采用两种封锁机制:共享机制和排它机制来实现。

(4)数据库后备与恢复

主要使用转储、日志等方法进行数据库的恢复。

5.3.3 用户界面设计

用户界面是指软件系统与用户之间交互的接口,通常包括输出,输入,人机对话的界面与方式等。由于本系统的最终用户是那些对计算机技术并不算很精通的管理人员,因此本系统采用了基于菜单选择,用户名与密码的填写登陆和页框、按钮及d出表单等友好的用户界面交互方式。

 系统安全性验证用户界面设计

用户登录窗口界面是用户看到的第一幅画面,也是进入系统之前必须经过的一道“关口”。因此,简洁、实用、友好、美观、安全是设计时应当考虑到的风格。

用户登录本系统,登录画面为:

 系统主画面屏幕区域设计

进行系统的主画面屏幕区域设计时,是将整个屏幕划分为三个区域,如下图所示:

主 菜 单 区

工 作 区

状 态 信 息 区

在屏幕的最上方是主菜单区,显示本系统的功能主菜单。用户可以有鼠标左键来选择相应的菜单,也可以用快捷键进行 *** 作,然后用同样的方法在相应菜单下拉出该项的二级菜单(如果有的话),如果还有三级菜单,用户可在二级菜单选择相应的功能项,系统会自动d出三级菜单。

当通过菜单选择了所要进行的工作以后,系统进入相应的业务处理功能,这时业务处理活动在屏幕中间区域即工作区进行。在整个业务处理过程中,主菜单区始终存在以使用户明确当前正在进行的处理,当用户为业务处理完毕后,系统返回主菜单。

5.3.4处理过程设计

处理过程设计要根据模块划分以及结构化设计的基本原则,对每一程序处理模块中的详细处理过程进行设计。常用的设计工具包括程序流程图、过程化设计语言、判定表、判定树等。

6. 系统的运行

管理信息系统在完成系统实施、投入正常运行之后,就进入了系统运行与维护阶段。

6.1 系统的配置

1、硬件配置要求:

CPU:PII200以上。

内存:32MB以上。

硬盘:2.1GB以上(可用空间最好在160MB以上)。

打印机:推荐EPSON LQ-1600KII

2、软件配置要求:

WINDOWS95/98/2000/XP中文版 *** 作系统。

6.2 系统的运行

本系统运行:首先启动WindowsXP,将本系统拷贝到硬盘相应地目录下,运行“企业人事管理.EXE”即可。

本系统的主要菜单功能简介如下:

(1)系统管理:用户名输入,修改密码,退出系统等。

(2)人员信息管理:包括职员基本信息、职员教育经历、职员个人简历、职员岗位变动、职员奖惩登记、职员离退休登记。

(3)招聘信息管理:包括招聘人员基本信息、应聘人员录取情况。

(4) 培训信息管理:各部门培训安排、员工培训情况信息。

下面简要介绍一下各种功能源码实现:

用户登陆:

确定进入系统:command2_click()

i=i+1

if thisform.text2.value=123456

keyb'{CTRL+F4}'

modi wind screen titl'人力资源管理系统'

do form rsgl\renshi

else

if i<3

messagebox(密码错,请重新输入!)

thisform.text2.value=

thisform.text2.setfocus

else

messagebox(密码错,禁止进入系统!)

thisform.release

endif

endif

do form rsgl\renshi

退出系统:

command1_click()

YN=MESSAGEBOX(确定退出系统,4+32,用户登录)

IF YN==6

CLEAR EVENTS

QUIT

ENDIF

进入人事管理系统界面:

人员信息管理:page1:

职员基本信息:command1_click()

do form rsgl\jibenxinxi

职员教育经历:command2_click()

do form rsgl\jiaoyujingli

职员个人简历:command3_click()

do form rsgl\zhiyuangerenjianli

职员岗位变动:command4_click()

do form rsgl\zhiyuangangweibiandong

职员奖惩登记:command5_click()

do form rsgl\zhiyuanjiangchengdengji

职员离退休登记:command6_click()

do form rsgl\zhiyuanlituixiudengji

招聘信息管理:page2:

招聘人员基本信息:command1_click()

do form rsgl\zhaopinrenyuanjibenxinxi

应聘人员录取情况:command2_click()

do form rsgl\yingpinrenyuanluquqingkuang

培训信息管理:page3:

各部门培训安排:command1_click()

do form rsgl\gebumenpeixunanpai

员工培训情况信息:command2_click()

do form rsgl\yuangongpeixunqingkuangxinxi

退出:

thisform.release

点击按钮分别d出各表单:

增加新记录:command1_click()

thisform.commandgroup1.enabled=.F.

thisform.command2.enabled=.F.

thisform.command3.enabled=.F.

thisform.command4.enabled=.T.

if thisform.command1.caption='增加新记录'

thisform.txt职员编号.enabled=.T.

thisform.txt姓名.enabled=.T.

thisform.txt性别.enabled=.T.

thisform.txt出生日期.enabled=.T.

thisform.txt民族.enabled=.T.

thisform.txt文化程度.enabled=.T.

thisform.txt毕业学校.enabled=.T.

thisform.txt政治面貌.enabled=.T.

thisform.txt家庭地址.enabled=.T.

thisform.txt家庭电话.enabled=.T.

append blank

thisform.command1.caption='增加确认'

thisform.refresh

thisform.txt职员编号.setfocus

else

get职员编号=alltrim(thisform.txt职员编号.value)

get姓名=alltrim(thisform.txt姓名.value)

get性别=alltrim(thisform.txt性别.value)

get出生日期=alltrim(thisform.txt出生日期.value)

get民族=alltrim(thisform.txt民族.value)

get文化程度=alltrim(thisform.txt文化程度.value)

get毕业学校=alltrim(thisform.txt毕业学校.value)

get政治面貌=alltrim(thisform.txt政治面貌.value)

get家庭地址=alltrim(thisform.txt家庭地址.value)

get家庭电话=alltrim(thisform.txt家庭电话.value)

if empty(get职员编号) or empty(get姓名) or empty(get性别) or empty(get出生日期) or empty(get民族) or empty(get文化程度) or empty(get毕业学校) or empty(get政治面貌) or empty(get家庭地址) or empty(get家庭电话)

messagebox(资料不足,48,错误)

else

thisform.command1.caption='增加新记录'

tableupdate(.t.)

thisform.txt职员编号.enabled=.F.

thisform.txt姓名.enabled=.F.

thisform.txt性别.enabled=.F.

thisform.txt出生日期.enabled=.F.

thisform.txt民族.enabled=.F.

thisform.txt文化程度.enabled=.F.

thisform.txt毕业学校.enabled=.F.

thisform.txt政治面貌.enabled=.F.

thisform.txt家庭地址.enabled=.F.

thisform.txt家庭电话.enabled=.F.

thisform.commandgroup1.enabled=.T.

thisform.command2.enabled=.T.

thisform.command3.enabled=.T.

thisform.command4.enabled=.F.

endif

endif

修改记录:command2_click()

thisform.command1.enabled=.F.

thisform.command3.enabled=.F.

thisform.command4.enabled=.T.

thisform.commandgroup1.enabled=.F.

if thisform.command2.caption='修改记录'

thisform.txt职员编号.enabled=.T.

thisform.txt姓名.enabled=.T.

thisform.txt性别.enabled=.T.

thisform.txt出生日期.enabled=.T.

thisform.txt民族.enabled=.T.

thisform.txt文化程度.enabled=.T.

thisform.txt毕业学校.enabled=.T.

thisform.txt政治面貌.enabled=.T.

thisform.txt家庭地址.enabled=.T.

thisform.txt家庭电话.enabled=.T.

thisform.command2.caption='修改确认'

thisform.refresh

thisform.txt职员编号.setfocus

else

thisform.command2.caption='修改记录'

tableupdate(.t.)

thisform.txt职员编号.enabled=.F.

thisform.txt姓名.enabled=.F.

thisform.txt性别.enabled=.F.

thisform.txt出生日期.enabled=.F.

thisform.txt民族.enabled=.F.

thisform.txt文化程度.enabled=.F.

thisform.txt毕业学校.enabled=.F.

thisform.txt政治面貌.enabled=.F.

thisform.txt家庭地址.enabled=.F.

thisform.txt家庭电话.enabled=.F.

thisform.command1.enabled=.T.

thisform.command3.enabled=.T.

thisform.command4.enabled=.F.

thisform.commandgroup1.enabled=.T.

endif

删除记录:command3_click()

get职员编号=alltrim(thisform.txt职员编号.value)

thisform.txt职员编号.controlsource=''

thisform.txt姓名.controlsource=''

thisform.txt性别.controlsource=''

thisform.txt出生日期.controlsource=''

thisform.txt民族.controlsource=''

thisform.txt文化程度.controlsource=''

thisform.txt毕业学校.controlsource=''

thisform.txt政治面貌.controlsource=''

thisform.txt家庭地址.controlsource=''

thisform.txt家庭电话.controlsource=''

use jbxx exclusive

set order to 职员编号

seek get职员编号

delete

pack

thisform.txt职员编号.controlsource='jbxx.职员编号'

thisform.txt姓名.controlsource='jbxx.姓名'

thisform.txt性别.controlsource='jbxx.性别'

thisform.txt出生日期.controlsource='jbxx.出生日期'

thisform.txt民族.controlsource='jbxx.民族'

thisform.txt文化程度.controlsource='jbxx.文化程度'

thisform.txt毕业学校.controlsource='jbxx.毕业学校'

thisform.txt政治面貌.controlsource='jbxx.政治面貌'

thisform.txt家庭地址.controlsource='jbxx.家庭地址'

thisform.txt家庭电话.controlsource='jbxx.家庭电话'

thisform.refresh

thisform.txt职员编号.enabled=.F.

thisform.txt姓名.enabled=.F.

thisform.txt性别.enabled=.F.

thisform.txt出生日期.enabled=.F.

thisform.txt民族.enabled=.F.

thisform.txt文化程度.enabled=.F.

thisform.txt毕业学校.enabled=.F.

thisform.txt政治面貌.enabled=.F.

thisform.txt家庭地址.enabled=.F.

thisform.txt家庭电话.enabled=.F.

取消 *** 作:command4_click()

if thisform.command1.caption='增加确认'

thisform.command1.caption='增加新记录'

thisform.command2.enabled=.T.

thisform.command3.enabled=.T.

thisform.commandgroup1.enabled=.T.

tablerevert(.f.)

endif

if thisform.command2.caption='修改确认'

thisform.command2.caption='修改记录'

thisform.command1.enabled=.T.

thisform.command3.enabled=.T.

tablerevert(.f.)

endif

thisform.txt职员编号.enabled=.F.

thisform.txt姓名.enabled=.F.

thisform.txt性别.enabled=.F.

thisform.txt出生日期.enabled=.F.

thisform.txt民族.enabled=.F.

thisform.txt文化程度.enabled=.F.

thisform.txt毕业学校.enabled=.F.

thisform.txt政治面貌.enabled=.F.

thisform.txt家庭地址.enabled=.F.

thisform.txt家庭电话.enabled=.F.

thisform.commandgroup1.enabled=.T.

thisform.command4.enabled=.F.

thisform.refresh

退出:command5_click()

thisform.release

命令按钮组commandgroup1:

上页:command1_click()

skip -1

if bof()

messagebox(已是第一个记录,48,信息窗口)

this.parent.command1.enabled=.f.

this.parent.command3.enabled=.f.

skip

else

this.parent.command1.enabled=.t.

this.parent.command3.enabled=.t.

endif

this.parent.command2.enabled=.t.

this.parent.command4.enabled=.t.

thisform.refresh

下页:command2_click()

skip

if eof()

messagebox(已是最后一条记录,48,信息窗口)

skip -1

this.parent.command2.enabled=.f.

this.parent.command4.enabled=.f.

else

this.parent.command2.enabled=.t.

this.parent.command4.enabled=.t.

endif

this.parent.command1.enabled=.t.

this.parent.command3.enabled=.t.

thisform.refresh

第一页:command3_click()

goto top

this.parent.command1.enabled=.f.

this.parent.command2.enabled=.t.

this.parent.command4.enabled=.t.

thisform.refresh

最后一页:command4_click()

goto bottom

this.parent.command2.enabled=.f.

this.parent.command1.enabled=.t.

this.parent.command3.enabled=.t.

thisform.refresh

其它几个表单的程序也依次这样列举出来.故不重复描述.

基本信息表:ID,姓名,出生年月,性别,家庭住址,联系方式,Email

职工信息表:ID,职位,班级,科目,直属领导

工资表:ID,工资,奖金,日期(ID与日期主键)

考勤表:ID,考勤记录,日期(ID与日期主键)

绩效表:ID,绩效,日期(ID与日期主键)

记录字典表:字典属性,字典值,字典值翻译


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6770839.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存