收藏 分销(赏)

网络数据库技术与应用实验部分.doc

上传人:仙人****88 文档编号:7730811 上传时间:2025-01-14 格式:DOC 页数:23 大小:1.03MB
下载 相关 举报
网络数据库技术与应用实验部分.doc_第1页
第1页 / 共23页
网络数据库技术与应用实验部分.doc_第2页
第2页 / 共23页
点击查看更多>>
资源描述
·269· 附 录 附 录 实验一 数据库的建立及修改 实验目的和要求 1. 学习创建和修改用户数据库的方法。 2. 掌握数据库的创建和修改操作。 3. 掌握SQL Server 2005的Management Studio的使用。 实验内容 分别使用SQL Server 2005 Management Studio和T-SQL语句,按下列要求创建和修改用户数据库。 创建一个数据库,要求如下: 1)数据库名“TestDB”。 2)数据库中包含一个数据文件,逻辑文件名为TestDB_data,磁盘文件名为TestDB_data. mdf,文件初始容量为5MB,最大容量为15MB,文件容量递增为1MB。 3)事务日志文件。逻辑文件名为TestDB_log,磁盘文件名为TestDB_log.ldf,文件初始容量为5MB,最大容量为10MB,文件容量递增为1MB。 对该数据库做如下修改: 1)添加一个数据文件,逻辑文件名为TestDB2_data,实际文件名为TestDB2_data.ndf, 文件初始容量为1MB,最大容量为6MB,文件容量递增值为1MB。 2)日志文件的最大容量增加为15MB,递增值改为2MB。 实验步骤 方法一:使用Management Studio创建和修改数据库TestDB 1. 设置“常规”选项卡 1)启动SQL Server 2005的Management Studio。 2)在对象资源管理器中选择节点“数据库”,单击鼠标右键,再弹出的快捷菜单中选择“新建数据库”命令。 3)在出现的“新建数据库”对话框中设置新建数据库的“常规”选项卡,在“数据库名称”文本框中输入数据库名称“TestDB”。 2. 设置数据文件和事务日志文件 在“数据库文件”后的表格中分别数据文件。 1)在“逻辑名称”中输入数据文件逻辑文件名“TestDB_data”,“文件类型”为“数据”。 2)设置该文件“初始大小”为5MB。 3)选择“自动增长”后的按钮 ,在出现的对话框中选中“启用自动增长”复选框,设置文件容量递增值为1 MB。在“最大文件大小”选项组中选择“限制文件增长(MB)”单选按钮,并设值为15。 3. 设置事务日志文件 在“数据库文件”后的表格中设置事务日志文件。 1)在“逻辑名称”字段中输入事务日志文件的逻辑文件名“TestDB_log”,“文件类型”为“日志”。设置该文件的初始大小为5MB。 2)选择“自动增长”后的按钮 ,在出现的对话框中选中“启用自动增长”复选框,设置文件容量递增值为1 MB。在“最大文件大小”选项组中选择“限制文件增长(MB)”单选按钮,并设值为10。 3)单击“确定”按钮,完成数据库的创建。 4. 修改事务日志文件属性 1)在对象资源管理器中找到刚刚创建的数据库TestDB,单击鼠标右键,从弹出的快捷菜单中选择“属性”命令,打开数据库TestDB的“数据库属性”窗口。 2)打开“文件”页。在该页中添加数据文件TestDB2_data,方法是:在“逻辑名称”字段中键入数据文件逻辑文件名“TestDB2_data,设置该文件的初始大小为1MB,然后定义“文件自动增长”,设置文件容量递增值为1MB, 在“最大文件大小”选项组中选择“限制文件增长(MB)”单选按钮,并设值为6。 3)修改“日志”文件的定义,在选项卡中将事务日志文件的最大容量改为15,递增量改为2。 方法二:使用T-SQL语句创建和修改数据库TestDB。 1)创建数据库TestDB。 CREATE DATABASE TestDB ON (NAME=TestDB_data, FILENAME='D:\mysql\TestDB_data.mdf', SIZE=5, MAXSIZE=15, FILEGROWTH=1 ) LOG ON ( NAME=TestDB_log, FILENAME='D:\mysql\TestDB_log.ldf', SIZE=5, MAXSIZE=10, FILEGROWTH=1 ) 2)修改数据库TestDB ALTER DATABASE TestDB ADD FILE ( NAME=TestDB2_data, FILENAME='D:\mysql\TestDB2_data.ndf', SIZE=1, MAXSIZE=6, FILEGROWTH=1 ) 3)修改数据库TestDB ALTER DATABASE TestDB MODIFY FILE ( NAME=TestDB_log, MAXSIZE=15, FILEGROWTH=2 ) 实验二 表的建立维护 实验目的和要求 ● 熟悉有关数据表的创建和修改等操作。 ● 理解主键的概念。 ● 熟练使用Management Studio对数据表进行操作。 ● 熟练使用CREATE TABLE、ALTER TABLE等T-SQL语句对数据表进行操作。 ● 完成对表中的记录的添加、更新、删除等操作。 实验内容 分别使用Management Studio和Transact-SQL语句在“TestDB”中按下列要求创建两个数据表:附表1为学生信息表,附表2为学生成绩表,并按照步骤完成对表的相关修改。 附表1 学生信息表 字 段 名 字段的数据类型 说 明 Stu_id Varchar(16) 学号,主键 Stu_name Varchar(10) 姓名长度为10 Sex Varchar(2) 性别 Birth Datetime 出生日期 Jiguan Varchar(50) 籍贯 Score Int 入学成绩 附表2 学生成绩表 字 段 名 数据类型 注 释 Stu_id Varchar(16) 学号,主键 Stu_name Varchar(10) 姓名,长度为10 Wangluo Int 计算机网络课程成绩 Shujk Int 网络数据库课程成绩 Weihu Int 网络管理与维护课程成绩 实验步骤 1. 建立数据表结构 方法一:使用Management Studio创建数据表。 1)打开对象资源管理器,找到数据库节点TestDB,并选中其下一级节点“表”。 2)单击鼠标右键,从弹出的快捷菜单中选择“新建表”命令,打开表设计窗口,在窗口中按照“实验内容”中所列的“学生信息表”的字段及要求输入列名、数据类型及长度等属性,并将“stu_id”设置为主键。 3)单击“保存”按钮,在弹出的对话框重新输入表名称“学生信息表”,关闭表设计窗口,完成表“学生信息表”的创建。 4)重复(1)~(3)步,创建另一个数据表“学生成绩表”。 方法二:使用T-SQL语句创建数据表,并添加约束。 1)创建学生信息表 USE TestDB GO CREATE TABLE 学生信息表 ( stu_id Varchar(16) NOT NULL, stu_name varchar(10) NOT NULL, sex varchar(2), birth datetime, jiguan Varchar(50), score int, PRIMARY KEY (stu_id) ) 2)创建学生成绩表 USE TestDB GO CREATE TABLE 学生成绩表 ( stu_id Varchar(16) NOT NULL, stu_name varchar(10) NOT NULL, wangluo int, Shujk int, Weihu int PRIMARY KEY (stu_id) ) 2. 向数据表中添加记录 向数据库TestDB中的两个数据表“学生信息表”和“学生成绩表”中添加记录,数据内容如附表3及附表4所示。然后用T-SQL语句对表中记录进行编辑操作。 附表3 学生信息表 Stu_id Stu_name Sex Birth Jiguan Score 340201 340202 340203 340204 340205 340206 340207 340208 340209 3402010 王月华 戚华 张叶 刘清 陈刚 程家计 郝辉 段亮 张小美 张滔 女 女 女 女 男 男 男 男 女 男 03/12/1985 04/06/1984 06/17/1985 09/01/1983 03/12/1984 04/06/1984 06/17/1982 09/01/1985 03/12/1982 04/06/1983 陕西西安 陕西渭南 山西运城 新疆 陕西西安 陕西咸阳 甘肃兰州 陕西西安 陕西西安 甘肃兰州 360 318 320 347 319 341 300 324 329 330 附表4 学生成绩表 Stu_id Stu_name Wangluo Shujk Weihu 340201 340202 340203 340204 340205 340206 340207 340208 340209 3402010 王月华 戚华 张叶 刘清 陈刚 程家计 郝辉 段亮 张小美 张滔 83 75 91 67 66 79 53 64 60 78 68 82 73 74 75 57 64 86 81 67 67 68 71 73 68 62 56 76 79 81 实验三 视图与查询 实验目的和要求 ● 掌握使用T-SQL语句创建视图的方法。 ● 熟练掌握查询语句SELECT的用法。 实验内容 1)在数据库“TestDB”中,基于表“学生信息表”和“学生成绩表”创建视图,要求如下: ● 视图名为“stu_view”。 ● 学生信息表”中包含字段“stu_id”,“stu_name”,“sex”和“birth”。 ● “学生成绩表”中字段别名分别是“stu_id”,“wangluo”,“Shujk”,“weihu”。 2)练习进行各种SQL查询。 实验步骤 1)打开对象资源管理器,用T-SQL语句创建视图。 在查询窗口书写CREATE VIEW语句创建视图,并制定字段别名: USE TestDB GO --创建视图 CREATE VIEW stu_view AS SELECT a.stu_id,a.stu_name,a.sex,a.birth, b.wangluo,b.shujk,b.weihu FROM 学生信息表 AS a INNER JOIN 学生成绩表 AS b ON a.stu_id =b.stu_id WHERE a.stu_id =b.stu_id GO 2)进行T-SQL查询。 ① 书写语句查询学生信息表中的所有内容,并查看查询结果。 参考答案: SELECT * FROM 学生信息表 ② 书写语句查询入学成绩score高于320的同学的姓名。 参考答案: SELECT stu_name FROM 学生信息表 WHERE score>320 ③ 书写语句查询来自陕西的学生姓名。 参考答案: SELECT stu_name FROM 学生信息表 WHERE jiguan LIKE ′%陕西%′ ④ 书写语句查询每个同学的入学成绩,结果集按照入学成绩从高到低排序。 参考答案: SELECT * FROM学生信息表 ORDER BY score DESC ⑤ 使用外向连接输出所有学生姓名和这学期所开设的各门课程成绩。 参考答案: SELECT 学生信息表.stu_name,学生成绩表.* FROM 学生信息表 LEFT JOIN 学生成绩表 ON 学生信息表.stu_id=学生成绩表.stu_id ⑥ 将所有来自“陕西西安”的学生的jiguan更改为“陕西省西安市”。 参考答案: UPDATE 学生信息表 SET jiguan=′陕西省西安市′ WHERE jiguan=’ 陕西西安’ ⑦ 郝辉同学已退学,请从学生信息表和学生成绩表中将他的记录删除。 参考答案: DELETE 学生信息表 WHERE stu_name=′郝辉′ DELETE 学生成绩表 WHERE stu_name=′郝辉′ 实验四 创建索引和存储过程 实验目的和要求 ● 掌握使用Management Studio和T-SQL语句创建索引的方法。 ● 理解存储过程的概念和作用,掌握创建和调用存储过程的方法。 实验内容 1)在“学生成绩表”中基于字段“stu_name”创建索引,要求索引名为“IDX_Name”,。 2)在数据库“TestDB”中创建名为score_avg的存储过程,要求返回指定学生的各门课程成绩的平均值,其中学生的名称作为存储过程的输入参数进行传递。 实验步骤 (1)建立索引 方法一:使用Management Studio。 1)打开对象资源管理器,展开数据库节点TestDB,并选择其下一级节点“表”。 2)展开“学生信息表”,选择其下一级节点“索引”并单击鼠标右键,在弹出的快捷菜单中选择命令 “新建索引”,打开“新建索引”对话框。 3)在“新建索引”对话框的“索引名称”文本框中输入索引名称“IDX_Name”,索引类型为非聚集索引,然后单击“添加”按钮,选择字段“stu_name”。 4)设置索引选项以后,单击“确定”按钮,完成索引的创建。 方法二:使用T-SQL语句。 USE TesDB GO CREATE INDEX IDX_Name ON 学生成绩表(stu_name) GO (2)建立存储过程 步骤如下: 1)使用CREATE PROCEDRUE Transact-SQL语句创建存储过程score_avg,带有一个输入参数@name用于传递名称,一个输出参数@avescore用于传递输出结果。 CREATE PROCEDURE score_avg @name varchar(10), @avescore int OUTPUT AS SELECT @avescore=(wangluo+shujk+weihu)/3 FROM 学生成绩表 WHERE stu_name=@name; 2)调用存储过程,查询指定学生的平均成绩。 Declare @avescore int Exec score_avg ’刘华’,@avescore output PRINT ‘该学生的平均成绩为:’+CONVERT(varchar, @avescore) GO 练习:使用存储过程,分别计算各位同学的平均成绩。 实验五 HTML语言的使用 实验目的和要求 ● 理解网页制作的一般过程。 ● 掌握HTML文档的结构及常用HTML标记的作用。 ● 掌握超级链接的使用。 实验内容 设计一个唐诗欣赏页面。 实验步骤 1)建立网页文件“实验5.htm”。 在“记事本中”输入以下代码: <html><head><title>唐诗欣赏</title></head> <body bgcolor="#CCFFFF"> <p align="center"><font face="华文行楷" size="6">唐诗欣赏</font></p> <p align="center"><a href="minong.htm">悯农</a>    <a href="songyr.html">送友人</a>  <a href="chunxiao.html">春晓</a> </p> <p align="center"><a href="jiangnan.html">江南逢李龟年</a> &nbsp; <a href="guoguren.html">过故人庄</a>   </p> </body> </html> 2)在浏览器IE中运行效果如附图1所示。 3)练习:分别制作唐诗“悯农”、“送友人”的网页文件minong.htm和songyr.html,在其中定义与“实验5.htm”页面间的超级链接,并保存于和“实验5.htm”相同路径下,体会超链接的作用。 附图1 “唐诗欣赏”页面 实验六 VBScript脚本的使用 实验目的和要求 ● 理解脚本语言的作用,掌握在网页中嵌入脚本语言的方法。 ● 理解并使用VBScript丰富网页。 ● 通过实验,掌握Windows内置对象及内置函数的基本使用方法。 实验内容 1)设计一个与用户交互的界面。页面上有一个按钮,欢迎用户链接到某个网站。当用户单击按钮时,弹出输入对话框,等待用户输入姓名。用户输入姓名后,单击“确定”按钮,弹出消息框,欢迎用户光临。确定后,弹出确认框,询问用户是否链接到网站,单击“确定”按钮,将链接到网站;单击“取消”按钮,则弹出对话框,出现“再见!欢迎用户下次光临”的提示信息。运行界面如附图2所示。 2)设计一个程序。要求在客户端能够验证用户名和密码,如果用户输入的用户名或密码有错误,则弹出“输入错误”的提示框。若用户名和密码都正确,则出现“欢迎来到网易”的提示信息。本例中设定的用户名为:ws,密码为888。通过调用自定义函数form1_onsubmit()完成验证过程。运行界面如附图3所示。 程序中的instr()函数用于完成字符的比较。其详细用法请参阅相关资料。 附图 2 应用程序1运行结果 实验步骤 1) 建立HTML文件“实验6.htm”。 在记事本中输入以下代码: <html> <head><title>VBScript应用举例</title> <script language="vbscript"> sub winopen() myname=inputbox("请输入姓名:","欢迎!","您的姓名?") msgbox(myname&"你好,欢迎光临!") loadpage=window.confirm("链接到西安航空职业技术学院?") if loadpage=true then window.open "" else window.alert "再见!欢迎下次光临,谢谢!" end if end sub </script> </head> <body> <BUTTON onclick=winopen()> <h3> 欢迎光临西安航空职业技术学院!</h3> </BUTTON> </body> </html> 2)在浏览器IE中运行效果如附图2所示。 3)建立客户端用户名和密码验证文件“实验6.2.htm”。 在记事本中输入以下代码: <html><head><title>身份验证</title> <script language="vbscript"> <!-- function form1_onsubmit() set myform=document.form1 ‘若用户名和密码为空,要求重新输入 if (myform.control1.value="")and(myform.control2.value="") then msgbox "请输入用户名和密码",0,"请输入" myform.control1.focus() myform.control2.focus() exit function end if checkok1="ws" ‘判断用户名是否有误 checkstr1=myform.control1.value allvalid1=true for i=1 to len(checkstr1) ch=mid(checkstr1,i,1) if (instr(checkok1,ch)=0) then allvalid1=false exit for end if next checkok2="888" ‘判断密码是否有误 checkstr2=myform.control2.value allvalid2=true for i=1 to len(checkstr2) ch=mid(checkstr2,i,1) if (instr(checkok2,ch)=0) then allvalid2=false exit for end if next if (not allvalid1) or (not allvalid2) then msgbox "请再输入",0,"输入错误!" myform.control1.focus() myform.control2.focus() exit function end if ‘用户名和密码都正确 if (strcomp(checkok1,checkstr1,0)=0) and (strcomp(checkok2,checkstr2,0)=0) then document.write "<a href=" & "''" & ">欢迎来到网易</a>" end if end function --> </script> </head> <body> <form name="form1" method="post" action=""> <p>用户名: <input type="text" size=20 name="control1"> <p>密码:&nbsp;&nbsp; <input type="password" size=20 name="control2"> <p>&nbsp; <input type="submit" name="B1" value="提交">&nbsp;&nbsp; <input type="reset" name="B2" value="复位"> <p> </form> </body> </html> 该例在浏览器IE中运行效果如附图3所示。 附图3 应用程序2运行结果 实验七 用ASP技术访问数据库 实验目的和要求 ● 理解动态网页的结构及其工作过程。 ● 了解ASP技术的应用方法。 ● 掌握服务器端脚本技术。 ● 掌握ADO访问数据库技术的实现方法。 实验内容 设计一个网页,实现用户的身份验证,当输入的用户名正确时,可以进入查询学生成绩页面;若输入有误,则给出相应的提示信息。 实验步骤 1)新建一个数据库student,将“实验二”中的“表B2学生成绩表”添加到该数据库中。 2)在该库中建立一个数据表usertable,用于存放用户的信息。 可以使用下面的T-SQL语句建立: create table usertable ( user_name varchar(20) not null, password varchar(10) not null, primary key (user_name) ); 在SQL Server的查询分析器中执行该语句,结果如附图4所示。然后添加用户记录。 附图4 建立用户信息表usertable 3)配置ODBC数据源。 该数据源连接到student数据库,数据源名为xscj。配置结果如附图5所示。 4)建立登录页面index.htm,并保存在d:\mysite文件夹中。 在记事本或中输入以下代码: 附图5 配置的xscj数据源 <html> <head><title>::::西航院成绩查询系统::::</title></head> <BODY > <div id="Layer1" style="position:absolute; left:133px; top:17px; width:516px; height:130px; z-index:1"> <table width="99%" border="0" height="131"> <tr> <td><img src="image/qw.gif" width="520" height="128"></td> </tr> <tr> <td> <div align="center"><font size="2" color="#FF0000">请您输入正确的用户名及密码以便登录系统进行成绩查询!</font></div> </td> </tr> </table> </div> <p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><table width="71%" border="0" align="center" height="192"> <tr> <th bgcolor="#FFFFFF" nowrap> <form name="form1" method="post" action="yanzheng.asp"> <p align="center"><font color="#0000FF"><b>用 户 : <input type="text" name="textfield"> </b></font><b><font color="#0000FF">密 &nbsp;&nbsp;码:</font></b> <input type="password" name="textfield2"> </p> <p align="center"> <input type="submit" name="Submit" value="填好了提交"> <input type="reset" name="Submit2" value="放弃查询 "> </p> </form> </th> </tr> </table> <p>&nbsp;</p> <p>&nbsp;</p> <script language=vbscript></script> </BODY> </HTML> 该页面效果如附图6所示。 附图6 登录页面 用户填写了用户名和密码后,单击“填好了提交”按钮,激活服务器端的“yanzheng.asp”应用程序,接收并处理表单信息。 5)建立服务器端应用程序yanzheng.asp,并保存在d:\mysite文件夹中。 在记事本或在FrontPage 2000中输入以下代码: <%@language=vbscript%> <% dim customer_name,password dim con_user,rs_user customer_name=request.form("textfield") password=request.form("textfield2") if trim(customer_name)<>""then set con_user=server.createobject("adodb.connection") con_user.connectionstring="dsn=xscj;uid=sa;pwd=computer" con_user.open set rs_user=server.createobject("adodb.recordset") rs_user.open "select user_name,password from usertable where user_name='"&customer_name&"'",con_user if not rs_user.eof then if password=rs_user("password")then response.redirect "newindex.htm" response.write "<p><font color=blue>恭喜你-"&rs_user ("user_name")&",登录成功!</font></p>" else response.write "<font color=red>对不起,你输入的密码有误!</font)" end if else response.write "<font color=red>对不起,没有这个用户名为"&customer_name&"的用户,你不能查询成绩!</font>" end if else response.write "<font color=red>对不起,用户名不能为空!</font>" end if con_user.close set con_user=nothing %> <html> <head> <title>欢迎登录使用此成绩查询系统</title> </head> <body bgcolor="fffff" topmargin="0" marginheight="0"> </body> </html> 该程序取得从index.htm中传递过来的参数用户名customer_name=request.form("textfield")和密码password=request.form("textfield2"),与后台usertable中的用户信息进行比较,若用户信息正确,则进入成绩查询newindex.htm页面;若用户信息有误,则给出相应的提示。 6)启动WEB服务器IIS,并设置d:\mysite为默认目录。 7)启动浏览器IE,在其地址栏中输入“http://127.0.0.1”,就可以查看该例的运行结果。 实验八 创建触发器 实验目的和要求 ● 理解触发器的触发过程和类型。 ● 掌握使用企业管理器和Transact-SQL语句创建触发器的方法。 实验内容 在数据库“TestDB”的表“学生信息表”和“学生成绩表”中分别创建触发器。 实验步骤 (1)用T-SQL语句创建触发器 步骤如下: 1)打开查询分析器。 2)在查询窗口书写CREATE TRIGGER语句,基于表“学生信息表”创建AFTER INSERT触发器Trigger_Newstud,将插入新记录的入学成绩score值限制在300分以上。 USE TestDB GO CREATE TRIGGER Trigger_Newstud ON 学生信息表 AFTER INSERT AS IF (SELECT score FROM inserted)<300 BEGIN PRINT ’学生的入学成绩不能低于300分!’ ROLLBACK TRANSACTION END GO 3)执行该SQL语句,并在“学生信息表”中插入一条记录,观察输出结果。 4)在查询分析器窗口书写CREATE TRIGGER语句,基于表“学生成绩表”创建AFTER UPDATE触发器Trigger_Changestore,课程成绩字段的值不能超过100分。 CREATE TRIGGER Trigger_Changestore ON 学生成绩表 AFTER UPDATE AS IF UPDATE(wangluo) BEGIN IF ( SELECT insered.wangluo FROM inserted JOIN deleted ON inserted.stu_id=deleted.stu_id)>100 BEGIN PRINT ’ 课程成绩取值不能超过100分!’ ROLLBACK TRANSACTION END END 5)执行该SQL语句,并在“学生成绩表”中修改某个记录,观察输出结果。 实验九 网络数据库的综合应用 实验目的和要求 ● 理解动态网页的结构及其工作过程。 ● 掌握ASP技术的应用方法。 ● 熟练掌握服务器端脚本技术。 ● 熟练掌握ADO访问数据库技术的实现方法。 实验内容 设计一个学生成绩查询页面。能够实现根据输入的学生学号信息,查询该学生的课程成绩;若学号有误,则给出相应的提示信息。 实验步骤 1)使用“实验七”中的数据库student,其中含有用户信息表user和学生成绩表xsch。 2)使用在实验七中配置好的数据源xscj。 3)建立成绩查询页面newindex.htm,并保存在d:\mysite文件夹中。 在记事本或在FrontPage 2000中输入以下代码: <html> <head><title> 西航院成绩查询系统:</title></head> <BODY > <div id="Layer1" style="position:absolute; left:133px; top:17px; width:516px; height:130px; z-index:1"> <table width="99%" border="0" height="131"> <tr> <td><img src="image/qw.gif" width="520" height="128"></td> </tr> <
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服