《DatabaprogrammingwithRDBMS》课程设
计
职工工资管理统
指导老师:郭小芳
学号:1441904103
姓名:高嘉威
《DatabaprogrammingwithRDBMS》考查命题
1、根据周围的实际情况,自选一个小型的数据库应用项目,并深入到应用
项目中调研,进行分析和设计。例如可选择职工工资管理系统、人事管理系统、
教材管理系统和小型超市商品管理系统和图书管理系统等。要求写出数据库设计
报告。
一、功能需求
系统的基本流程是:用户登入—>主界面—>选择各项子系统。
模块设计和功能说明
(一)权限说明:
对于不同的用户可以对其赋予不同的权限级别。部门主管拥有最高的权
限,能够对员工的资料进行增删,对部门的信息进行增删。?
1)用户登入:填入用户名称,填写正确的密码,选择用户类型。?
2)用户登入后,可以对自己的密码进行修改。?
3)用户可以查看个人资料。
以下是各部门主管所特有的权限,其他员工均没有该权限,不能实现一
下的操作。?
4)部门主管可以对员工信息进行浏览、查询、编辑、插入、删除。?
5)部门主管可以对该公司的部门信息进行浏览、查询、编辑、插入、删除。?
(二)系统的要求:
职工工资管理系统开发时,应该满足以下几点?
1)方便,容易操作,快捷的原则。
2)对于不同的用户,应该有不同的使用权限。?
3)各主管的任务是管理部门、职工、工资信息,即时更新、登记、发布
信
息,普通职工可以查询、核对自己的基本信息和工资信息。
整个系统模块划分如下图:
系统管理:
1)用户登录:普通用户登录:只可查询信息,不可插入、修改、删除;?
主管登录:可插入、修改、查询、删除信息;
2)修改密码:凡是该系统的用户都可以修改自己的密码;?
3)退出系统
信息管理:
1)部门信息管理:主管可以插入,删除,更改部门信息;
2)员工信息管理:主管可以插入,删除,更改员工的基本信息和薪资信息;?
信息查询:?
普通员工可以查询自己的基本信息和薪资信息;
职工工资管理系
系统管理信息管理
信息查询
用
户
登
退
出
系
修
改
密
部门信
员工信
基本信
薪资信
基本信
薪资
二、E-R图
三、关系模型:?
1.部门信息(部门编号,部门名称)
2.员工信息(员工编号,姓名,性别,学历,出生日期,职务,部门编号,密
码)?
3.薪资信息(账号,员工编号,基本工资,福利,缺勤时间及原因,惩罚金
额,应缴税费,总薪资)
2、如创建职工工资管理系统中,一个名称为factory的数据库,要求:
(1)将主数据库文件放置在H:DBF文件夹中,其文件大小自
动增长为按5MB增长。
(2)将事务日志文件factory_放置在H:DBF文件夹中,其文件大
小自动增长为按1MB增长。
createdatabafactory
on
(
name=factory,
FILENAME='H:',
size=3mb,
filegrowth=5mb
)
logon
(
name=factory_log,
FILENAME='H:DBFfactory_',
size=1mb,
filegrowth=1mb
)
3、在上机面所创建的数据库factory中,完成如下各题操作。
(1)用create语句建立职工表worker,其结构为:职工号,int;姓名,
char(8);性别,char(2);出生日期,datetime;党员否char(2);参加工作,
datetime;部门号,int。其中“职工号”为主键。并用inrt语句在worker
表中输入如下记录:
职工号姓名性别出生日
期
党员否参加工
作
部门号
1孙华男01/03/5是10/10/7101
20
2陈明男05/08/4
5
否01/01/6
5
102
3程西女06/10/8
0
否07/10/0
2
101
4孙天奇女03/10/6
5
是07/10/8
7
102
5刘夫文男01/11/4
2
否08/10/6
0
102
6刘欣男10/08/5
2
否01/07/7
0
101
7余慧男12/04/8
0
否07/10/0
2
103
8张旗男11/10/8
0
否07/10/0
2
102
ufactory
go
createtableworker
(职工号intprimarykey,
姓名char(8),
性别char(2),
出生日期datetime,
党员否char(2),
参加工作datetime,
部门号int,
);
inrtintoworker
values(1,'孙华','男',01/03/52,'是',10/10/70,101),
(2,'陈明','男',05/08/45,'否',01/01/65,102),
(3,'程西','女',06/10/80,'否',07/10/02,101),
(4,'孙天奇','女',03/10/65,'是',07/10/87,102),
(5,'刘夫文','男',01/11/42,'否',08/10/60,102),
(6,'刘欣','男',10/08/52,'否',01/07/70,101),
(7,'余慧','男',12/04/80,'否',07/10/02,103),
(8,'张旗','男',11/10/80,'否',07/10/02,102)
(2)用create语句建立部门表depart,其结构为:部门号,int;部门名,
char(10)。其中,“部门号”为主键。并用inrt语句在depart表中输入如下
记录:
部门号部门名
101财务处
102人事处
103市场部
ufactory
go
createtabledepart
(部门号intprimarykey,
部门名char(10)
);
inrtintodepart
values(101,'财务处'),
(102,'人事处'),
(103,'市场部')
(3)用create建立职工工资表salary,其结构为:职工号,int;姓名,
char(8);日期,datetime;工资,decimal(6,1)。其中,“职工号”和“日期”
为主键。并用inrt语句在salary表中输入如下记录:
职工号姓名日期工资
1孙华01/04/041201.5
2陈明01/04/041350.6
3程西01/04/04750.8
4孙天奇01/04/04900.0
5刘夫文01/04/042006.8
6刘欣01/04/041250.0
7余慧01/04/04725.0
8张旗01/04/04728.0
ufactory
go
createtablesalary
(职工号intprimarykey,
姓名char(8),
日期datetime,
工资decimal(6,1)
);
inrtintosalary
values(1,'孙华',01/04/04,1201.5),
(2,'陈明',01/04/04,1350.6),
(3,'程西',01/04/04,750.8),
(4,'孙天奇',01/04/04,900.0),
(5,'刘夫文',01/04/04,2006.8),
(6,'刘欣',01/04/04,1250.0),
(7,'余慧',01/04/04,725.0),
(8,'张旗',01/04/04,728.0)
(4)建立worker、depart和salary3个表之间的关系。
4、在建立的factory数据库上,完成如下各题的程序,要求以文本格式显示结果。
(1)显示所有职工的年龄,并按职工号递增排序。
USEfactory
GO
SELECT职工号,YEAR(参加工作)-YEAR(出生日期)AS年龄FROMworker
ORDERBY职工号ASC
GO
(2)求出各部门的党员人数。
USEfactory
GO
SELECT部门号,COUNT(党员否)AS党员人数FROMworker
GROUPBY部门号
GO
(3)显示所有职工的姓名和2004年1月份的工资。
USEfactory
GO
SELECTworker.姓名,工资FROMworker,salary
WHEREworker.职工号=salary.职工号
GO
(4)显示所有职工的职工号、姓名和平均工资。
USEfactory
GO
SELECTworker.职工号,worker.姓名,AVG(工资)AS平均工资FROM
worker,salary
GROUPBYworker.职工号,worker.姓名
GO
(5)显示所有职工的职工号、姓名、部门名和2004年2月份的工资,并按部门
名的顺序排列。
USEfactory
GO
SELECTworker.职工号,worker.姓名,部门名,工资FROM
worker,depart,salary
WHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号
ORDERBY部门名
GO
(6)显示各部门名和该部门的所有职工平均工资。
USEfactory
GO
SELECT部门名,AVG(工资)AS平均工资FROMworker,depart,salary
WHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号
GROUPBY部门名
GO
(7)显示所有平均工资高于1200的部门名和对应的平均工资。
USEfactory
GO
SELECT部门名,AVG(工资)AS平均工资FROMworker,depart,salary
WHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号
GROUPBY部门名
HAVINGAVG(工资)>1200
GO
(8)显示所有职工的职工号、姓名和部门类型,其中财务部和人事部属于
管理部门,市场部属于市场部门。
USEfactory
GO
SELECT职工号,姓名,部门类型=
CASE
WHEN部门名='财务处'THEN'管理部门'
WHEN部门名='人事处'THEN'管理部门'
WHEN部门名='市场部'THEN'市场部门'
END
FROMworker,depart
WHEREworker.部门号=depart.部门号
GO
(9)若存在职工号为10的职工,则显示其工作部门名称,否则显示相应提
示信息。
USEfactory
GO
IFEXISTS
(SELECT*FROMworker
WHERE职工号=10)
BEGIN
SELECT部门名FROMworker,depart
WHEREworker.部门号=depart.部门号AND职工号=10
END
ELSE
PRINT'不存在职工号为‘’的员工。'
GO
(10)求出男女职工的平均工资,若男职工平均工资高出女职工平均工资
50%,则显示“男职工比女职工的工资高多了”的信息;若男职工平均工资与女
职工平均工资比率在1.5~0.8之间,则显示“男职工跟女职工的工资差不多”
的信息;否则显示“女职工比男职工的工资高多了”的信息。
USEfactory
GO
SELECT性别,AVG(工资)AS平均工资FROMworker,salary
WHEREworker.职工号=salary.职工号
GROUPBY性别
GO
DECLARE@mdecimal
DECLARE@fdecimal
SELECT@m=AVG(工资)FROMworker,salary
WHEREworker.职工号=salary.职工号AND性别='男'
SELECT@f=AVG(工资)FROMworker,salary
WHEREworker.职工号=salary.职工号AND性别='女'
IF((@m-@f)/@f>=0.5)
PRINT'男职工比女职工的工资高多了。'
ELSEIF(@m/@f>=0.8AND@m/@f<=1.5)
PRINT'男职工跟女职工的工资差不多。'
ELSE
PRINT'女职工比男职工的工资高多了。'
GO
5、在上机实验题4建立的factory数据库上,完成如下各题(所有SELECT
语句的查询结果以文本格式显示)。
(1)删除factory数据库上各个表之间建立的关系。
ALTERTABLEsalary
DROPCONSTRAINTFK_salary_worker
GO
ALTERTABLEworker
DROPCONSTRAINTFK_worker_depart
GO
(2)显示各职工的工资记录和相应的工资小计。
ufactory
go
lect职工号,姓名,工资fromsalary
orderby职工号
computesum(工资)by职工号
go
(3)按性别和部门名的所有组合方式列出相应的平均工资。
USEfactory
GO
SELECT性别,部门名,AVG(工资)AS平均工资FROMworker,depart,salary
WHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号
GROUPBY性别,部门名
GO
(4)在worker表中使用以下语句插入一个职工记录:
INSERTINTOworkerVALUES(20,'陈立','女
','55/03/08',1,'75/10/10',4)
在depart表中使用以下语句插入一个部门记录:
INSERTINTOdepartVALUES(5,'设备处')
对worker和depart表进行全外连接显示职工的职工号、姓名和部门名,然
后删除这两个插入的记录。
USEfactory
GO
INSERTINTOworkerVALUES('20','陈立','55/03/08',1,'75/10/10',4)
INSERTINTOdepartVALUES('5','设备处')
GO
SELECT职工号,姓名,部门名FROMworker
FULLOUTERJOINdepartONworker.部门号=depart.部门号
GO
DELETEFROMworker
WHERE职工号=20
GO
DELETEFROMdepart
WHERE部门号=5
GO
(5)显示最高工资的职工的职工号、姓名、部门名、工资发放日期和工资。
USEfactory
GO
SELECTworker.职工号,worker.姓名,部门名,salary.日期,工资FROM
worker,depart,salary
WHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号
AND工资=
(SELECTMAX(工资)FROMsalary)
GO
(6)显示最高工资的职工所在的部门名。
USEfactory
GO
SELECT部门名FROMworker,depart,salary
WHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号
AND工资=
(SELECTMAX(工资)FROMsalary)
GO
(7)显示所有平均工资低于全部职工平均工资的职工的职工号和姓名。
USEfactory
GO
SELECTworker.职工号,worker.姓名FROMworker,salary
WHEREworker.职工号=salary.职工号AND工资<
(SELECTAVG(工资)FROMsalary)
GO
(8)采用游标方式实现(6)小题的功能。
USEfactory
GO
DECLARE@s_maxCHAR(10)
DECLAREst_cursorCURSOR
FORSELECT部门名FROMworker,depart,salary
WHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号
AND工资=
(SELECTMAX(工资)FROMsalary)
OPENst_cursor
FETCHNEXTFROMst_cursorINTO@s_max
PRINT'部门名'
WHILE@@FETCH_STATUS=0
BEGIN
PRINTCAST(@s_maxASchar(10))
FETCHNEXTFROMst_cursorINTO@s_max
END
CLOSEst_cursor
DEALLOCATEst_cursor
GO
(9)采用游标方式实现(7)小题的功能。
USEfactory
GO
DECLARE@c_noint,@s_namevarchar(10)
DECLAREst_cursorCURSOR
FORSELECTworker.职工号,worker.姓名FROMworker,salary
WHEREworker.职工号=salary.职工号AND工资<
(SELECTAVG(工资)FROMsalary)
OPENst_cursor
FETCHNEXTFROMst_cursorINTO@c_no,@s_name
PRINT'职工号'+''+'姓名'
WHILE@@FETCH_STATUS=0
BEGIN
PRINTCAST(@c_noASvarchar(10))+''+@s_name
FETCHNEXTFROMst_cursorINTO@c_no,@s_name
END
CLOSEst_cursor
DEALLOCATEst_cursor
GO
(10)先显示worker表中的职工人数,开始一个事务,插入一个职工记录,
再显示worker表中的职工人数,回滚该事务,最后显示worker表中的职工人数。
USEfactory
GO
SELECTCOUNT(*)AS职工人数FROMworker
GO
BEGINTRANSACTION
INSERTINTOworker
VALUES(11,'小明','女','1955/03/08','1','1975/10/10','4')
SAVETRANSACTIONTRAN1
SELECTCOUNT(*)AS职工人数FROMworker
GO
ROLLBACKTRANSACTION
SELECTCOUNT(*)AS职工人数FROMworker
GO
6、在factory数据库上,使用T-SQL语句完成如下各题:
(1)在worker表中的“部门号”列上创建一个非聚集索引;若该索引已存
在,则删除后重建。
CREATENONCLUSTEREDINDEXbmh_indexONworker(部门号)
GO
(2)在salary表的“职工号”和“日期”列创建聚集索引,并且强制唯一
性。
CREATEUNIQUECLUSTEREDINDEXzgh_rq_indexONsalary(职工号,日期)
GO
7、在factory数据库上,使用T-SQL语句完成如下各题:
(1)建立视图view1,查询所有职工的职工号、姓名、部门名和2004年2
月份工资,并按部门名顺序排列。
USEfactory
GO
CREATEVIEWview1
AS
SELECTworker.职工号,worker.姓名,部门名,工资FROM
worker,depart,salary
WHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号
GO
(2)建立视图view2,查询所有职工的职工号、姓名和平均工资。
USEfactory
GO
CREATEVIEWview2
AS
SELECTworker.职工号,worker.姓名,AVG(工资)AS平均工资FROM
worker,salary
GROUPBYworker.职工号,worker.姓名
GO
(3)建立视图view3,查询各部门名和该部门的所有职工平均工资。
USEfactory
GO
CREATEVIEWview3
AS
SELECT部门名,AVG(工资)AS平均工资FROMworker,depart,salary
WHEREworker.部门号=depart.部门号ANDworker.职工号=salary.职工号
GROUPBY部门名
GO
(4)显示视图view3的定义。
USEfactory
GO
EXECsp_helpview3
GO
8、在factory数据库上,使用T-SQL语句完成如下各题:
(1)修改worker表的结构,添加“E_mailvarchar(20)”字段。
USEfactory
GO
ALTERTABLEworker
ADDE_mailvarchar(20)
GO
(2)将上例中worker表中“E_mail”字段的数据类型改为varchar(30)
USEfactory
GO
ALTERTABLEworker
ALTERCOLUMNE_mailvarchar(30)
GO
(3)删除worker表中的“E_mail”字段
USEfactory
GO
ALTERTABLEworker
DROPCOLUMNE_mail
GO
(4)将worker表中姓名为“陈明”的部门号改为“101”。
USEfactory
GO
UPDATEworker
SET部门号='101'
WHERE姓名='陈明'
GO
(5)删除工资表salary中姓名为“陈明”的记录。
USEfactory
GO
DELETEFROMworker
WHERE姓名='陈明'
GO
(6)实施worker表的“性别”列默认值为“男”的约束。
USEfactory
GO
ALTERTABLEworker
ADDCONSTRAINTdefault_xb
DEFAULT'男'FOR性别
GO
(7)实施salary表的“工资”列值限定在0~9999的约束。
USEfactory
GO
ALTERTABLEsalary
ADDCONSTRAINTcheck_gz
CHECK(工资>=0AND工资<=9999)
GO
(8)实施depart表的“部门号”列值唯一的非聚集索引的约束。
USEfactory
GO
ALTERTABLEdepart
ADDCONSTRAINTunique_bmh
UNIQUENONCLUSTERED(部门号)
GO
(9)为worker表建立外键“部门号”,参考表depart的“部门号”列。
USEfactory
GO
ALTERTABLEworker
ADDCONSTRAINTwj_worker_depart
FOREIGNKEY(部门号)REFERENCESdepart(部门号)
GO
(10)建立一个规则x:@性别='男'OR@性别='女',将其绑定到worker
表的“性别”列上。
USEfactory
GO
CREATERULEx
AS@性别='男'OR@性别='女'
GO
EXECsp_bindrule'x','worker.性别'
GO
(11)删除(1)小题所建立的约束。
USEfactory
GO
ALTERTABLEworker
DROPCONSTRAINTdefault_xb
GO
(12)删除(2)小题所建立的约束。
USEfactory
GO
ALTERTABLEsalary
DROPCONSTRAINTcheck_gz
GO
(12)删除(3)小题所建立的约束。
USEfactory
GO
ALTERTABLEdepart
DROPCONSTRAINTunique_bmh
GO
(14)删除(4)小题所建立的约束。
USEfactory
GO
ALTERTABLEworker
DROPCONSTRAINTwj_worker_depart
GO
(15)解除(5)小题所建立的绑定并删除规则x。
EXECsp_unbindrule'worker.性别'
GO
DROPRULEx
GO
9、在的factory数据库上,使用T-SQL语句完成如下各题:
(1)创建一个为worker表添加职工记录的存储过程Addworker。
CREATEPROCEDUREAddworker
@numberint,
@namechar(8),
@genderchar(2),
@birthdaydatetime,
@partychar(2),
@starttimedatetime,
@departnumberint
AS
BEGIN
INSERTINTOworker
VALUES(@number,@name,@gender,@birthday,@party,@starttime,@departnumbe
r)
END
GO
(2)创建一个存储过程Delworker删除worker表中指定职工号的记录。
USEfactory
GO
CREATEPROCEDUREDelworker
@numberint
AS
BEGIN
DELETEFROMworker
WHERE职工号=@number
END
GO
(3)显示存储过程Delworker。
USEfactory
GO
EXECsp_helptextDelworker
GO
(4)删除存储过程Addworker和Delworker。
USEfactory
GO
DROPPROCEDUREAddworker,Delworker
GO
10、在factory数据库上,使用T-SQL语句完成如下各题:
(1)在表depart上创建一个触发器depart_update,当更改部门号时同步
更改worker表中对应的部门号。
USEfactory
GO
CREATETRIGGERdepart_updateONdepart
FORUPDATE
AS
IFUPDATE(部门号)
BEGIN
DECLARE@number1int,@number2int
SELECT@number1=deleted.部门号,@number2=inrted.部门号
FROMdeleted,inrted
UPDATEworker
SET部门号=@number1
WHERE部门号=@number2
END
GO
(2)在表worker上创建一个触发器worker_delete,当删除职工记录时同
步删除salary表中对应职工的工资记录。
USEfactory
GO
CREATETRIGGERworker_deleteONworker
FORDELETE
AS
BEGIN
DELETEFROMsalary
WHERE职工号=
(SELECT职工号FROMdeleted)
END
GO
(3)删除触发器depart_update。
DROPTRIGGERdepart_update
GO
(4)删除触发器worker_delete。
DROPTRIGGERworker_delete
GO
11、在SQLServer管理控制器中完成如下操作:
(1)创建一个登录账号XYZ/123(其默认的工作数据库为factory;其“服
务器角色”设置为sysadmin;将“映射到此登录名的用户”设置为Factory,使
其具有public权限;设置安全对象LCB-PC服务器具有ConnectSQL权限)。
CREATELOGINXYZ
WITHPASSWORD='123',
DEFAULT_DATABASE=factory
GO
EXECsp_addsrvrolemember'XYZ','sysadmin'
GO
CREATEUSERFactory
FORLOGINXYZ
GO
GRANTpublicTOFactory
GO
GRANTConnectSQLTOLCB_PC
GO
(2)修改(1)中为factory数据库创建的用户账号XYZ的属性,使XYZ
登录账号对factory数据库具有db_owner权限。
12、使用SQLServer管理控制器对factory数据库执行完全备份(备份到
H:DBFbackup1文件中)和恢复操作。
13、使用SQLServer管理控制器生成数据库factory的脚本文件
H:,并显示该文件的内容。
USE[master]
GO
/******Object:Databa[factory]ScriptDate:12/23/2015
12:51:34******/
CREATEDATABASE[factory]ONPRIMARY
(NAME=N'factory',FILENAME=N'G:',SIZE=3072KB,
MAXSIZE=UNLIMITED,FILEGROWTH=5120KB)
LOGON
(NAME=N'factory_log',FILENAME=N'G:DBFfactory_',SIZE
=1024KB,MAXSIZE=2048GB,FILEGROWTH=1024KB)
GO
ALTERDATABASE[factory]SETCOMPATIBILITY_LEVEL=100
GO
IF(1=FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC[factory].[dbo].[sp_fulltext_databa]@action='enable'
end
GO
ALTERDATABASE[factory]SETANSI_NULL_DEFAULTOFF
GO
ALTERDATABASE[factory]SETANSI_NULLSOFF
GO
ALTERDATABASE[factory]SETANSI_PADDINGOFF
GO
ALTERDATABASE[factory]SETANSI_WARNINGSOFF
GO
ALTERDATABASE[factory]SETARITHABORTOFF
GO
ALTERDATABASE[factory]SETAUTO_CLOSEOFF
GO
ALTERDATABASE[factory]SETAUTO_CREATE_STATISTICSON
GO
ALTERDATABASE[factory]SETAUTO_SHRINKOFF
GO
ALTERDATABASE[factory]SETAUTO_UPDATE_STATISTICSON
GO
ALTERDATABASE[factory]SETCURSOR_CLOSE_ON_COMMITOFF
GO
ALTERDATABASE[factory]SETCURSOR_DEFAULTGLOBAL
GO
ALTERDATABASE[factory]SETCONCAT_NULL_YIELDS_NULLOFF
GO
ALTERDATABASE[factory]SETNUMERIC_ROUNDABORTOFF
GO
ALTERDATABASE[factory]SETQUOTED_IDENTIFIEROFF
GO
ALTERDATABASE[factory]SETRECURSIVE_TRIGGERSOFF
GO
ALTERDATABASE[factory]SETDISABLE_BROKER
GO
ALTERDATABASE[factory]SETAUTO_UPDATE_STATISTICS_ASYNCOFF
GO
ALTERDATABASE[factory]SETDATE_CORRELATION_OPTIMIZATIONOFF
GO
ALTERDATABASE[factory]SETTRUSTWORTHYOFF
GO
ALTERDATABASE[factory]SETALLOW_SNAPSHOT_ISOLATIONOFF
GO
ALTERDATABASE[factory]SETPARAMETERIZATIONSIMPLE
GO
ALTERDATABASE[factory]SETREAD_COMMITTED_SNAPSHOTOFF
GO
ALTERDATABASE[factory]SETHONOR_BROKER_PRIORITYOFF
GO
ALTERDATABASE[factory]SETREAD_WRITE
GO
ALTERDATABASE[factory]SETRECOVERYFULL
GO
ALTERDATABASE[factory]SETMULTI_USER
GO
ALTERDATABASE[factory]SETPAGE_VERIFYCHECKSUM
GO
ALTERDATABASE[factory]SETDB_CHAININGOFF
GO
本文发布于:2023-01-04 06:46:05,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/89266.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |