欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOCX文档下载
 

SQL数据库课程设计

  • 资源ID:227412039       资源大小:266.33KB        全文页数:19页
  • 资源格式: DOCX        下载积分:18积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要18积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

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

SQL数据库课程设计

、引言1.1 选题目的及意义 人事管理系统是一个比较复杂的工作,管理人事要跟公司的具体情况结合起来。一般说来,公 司都会分比较多的部门,每一个员工都属于一个部门,担任不同的职务,在人事管理系统时都要考 虑各种情况。在现实生活中,公司部门的调整,员工的聘请、辞退、升迁是很平常见,为了了解各 种情况,在数据库中不仅要保存员工的基本资料,同时这些变动也要能反映到数据库中。作为计算机应用的一部分,使用计算机对人事进行管理,具有着手工管理所无法比拟的优点.例 如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极 大地提高商场人事管理的效率,也是科学化、正规化管理的重要条件。1.2 主要内容概要 经过简单的分析,初步确定系统的主要功能:(1)友好的用户界面,操作简单。(2)具有良好的安全措施,能够保证系统数据不被非法使用。(3)按照某种条件,查询、统计符合条件的员工信息。(4)能动态更新部门,人事资料。1.3系统功能结构图及其相关模块描述功能模块名:员工资料管理模块 模块功能:作为本系统的核心模块,为了方便处理,人事变更如调动、离职等操作都放在这 个模块的修改中,当然在实用系统中,这些功能可能会独立实现。功能模块名:数据库管理模块 模块功能:主要实现数据库备份。 注:由于篇幅有限,本课程设计只实现了具有代表性和在系统中占核心地位的员工资料管理 模块,同时也讲解了如何实现数据库备份。1.4系统的数据字典A. 员工基本资料(描述员工的考勤信息,便于查询、操作):员工号,员工名,性别, 年龄,部门,职务,合同开始时间结束时间,工作状态,住址,联系电话,手机, 邮箱,备注B. 人事更新表(描述员工的人事变动信息):记录号、工号、原部门、新部门、原职务、 新职务、操作、日期C. 部门表(描述员工所在部门):部门号、部门名称、上级部门D. 职务表(描述员工所属部门):职务二、数据库概念模型设计2.1数据实体关系图系统的概念结构设计设计就是将需求分析得到的用户需求抽象为信息结构即概念模型的过程。 设计概念结构通常有四类方法,它们分别是自顶向下、自底向下、逐步扩张、混合策略。在本系统 中把需求分析中得到的数据图抽象,通过选择局部应用、逐一设计分E-R图,设计出人事管理系统 的概念模型,用 E-R 模型来描述概念结构。人事管理系统实体关系 E-R 图:2.2数据实体描述用户密码表(用户名、用户密码、用户权限)员工资料表(员工号,员工名,性别,年龄,部门,职务,合同开始时间结束时间,工作 状态,住址,联系电话,手机,邮箱,备注)人事更新表(记录号、工号、原部门、新部门、原职务、新职务、操作、日期)部门表(部门号、部门名称、上级部门)职务表(职务)三、数据库逻辑模型设计逻辑结构设计是独立于任何一种数据模型的信息结构。逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与用户选用DBMS产品所支持的数据模型相符合的逻辑结构。根据前面的概念结构设计出来的 E-R 图,将实体间的联系转换为关系模式,本系统通过 E-R 图转换成的关系模式如下:用户密码表职务表用户名char30职务char30用户密码char30人事变更表用户权限char30记录号int4工号char30部门表原部门char30部门号char30新部门char30部门名称char30新职务char30上级部门char30操作char30员工资料表日期datetime8员工号char20合同结束时间datetime8员工名char30工作状态char20性别int4住址char20年龄int4联系电话char15部门char30手机char15职务char30邮箱char30四、系统的实现4.1设计登录模块设置登录界面是保障系统安全的一种手段,一般的数据应用系统都需要进行登录才能进入系统。在这个模块 里,主要处理的是输入的用户名和密码,程序根据用户名和密码编写SQL语句,然后执行,查询该用户名和密 码是否与用户密码表的某条记录相符。新建一个工程,在窗体中添加控件,然后调整界面,如图:用户名* jadmin人力资源管理系统an power更改用户名对应的文本框的Name为Edit2,同时Password属性值改为*,表示键盘输入密码都显示为*。 在文件一新建一DataModule新建一个DataModule设计器,更改其名Mydata,添加Database组件,Query 组件Data Source组件,双击登录按钮,进入它的响应函数编辑区,添加代码如下: procedure Tlogin.SpeedButtonlClick(Sender: TObject);beginwith mydata.Queryl do/使用关闭roUeiTyso否属性能写入sql语句beginwit *SQkdobegin/先清除SQL属性中的内容,以免影响下面的操作clear;/添加SQL代码,使用参数化方法,注意在参数前面一定要用:号 Add('select *from 用户密码表 where 用户名二:uname and 用户密码二:upassword');/给各参数赋值 ParamByname('uname').AsS tri ng:二tr im(Ed itl .Tex t);ParamByname('upassword').AsS tri ng:二tr im(Ed it 2.Tex t);end;open;/执行SQL语句f (myda ta.Queryl.FindLas t)t hen/判断查询结果是否为空begin/如果用户名和密码正确,则隐藏登录窗体,显示主窗体,main为主窗体名main.Show();login.Hide;end;elsebegin/提示出错信息showmessage('用户名或密码错误,请重新输入');end;end;end;双击退出按钮,建立它的响应函数,并添加代码如下: procedure Tlogin.SpeedButton2Click(Sender: TObject);begin/结束程序,回收所有资源application .Free; end;4.2设计主窗体当登录成功后,进入主窗口。新建一个form,然后将其命名为Main。窗体如图:Main.Hide;4.3设计员工资料管理模块添加用户子模块由于这个模块的数据结构比较复杂,先来构建员工子模块。 新建一个form对象,添加需要的组件,窗口如图:xl员工号员工名性别年龄部门职务ALILILI1孙奉永121董爭会董爭长-IAi:H:H:i2袁善磊122人力资源部总经理A0003王莉莉020审计部部门主管B0001刘暗暗019文化和培训部部门主管BLll:il:i2宋伟122企划瞎户关丟窟总经理 1 |员工名工号年龄性别部门合同开始住址手机职务备注r男合同结束联丟电话电子邮箱最新精品文档,知识共享! 图中的数据输入框有文本框,单选框,组合框等,Delphi中的组件相对容易控制,可以方便的将 各控件的内容读取出来。各控件的属性及类型,如表格:Cption属性Name属性控件类型工号CodeTEdit员工名Stuff nameTedit性别man ,wome nTradioButt on年龄ageTEdit部门partme ntTComboBox职务jobTComboBox合同开始starttimeTDateTimePicker合同结束en dtimeTDateTimePicker住址addressTEdit联系电话teleph oneTEdit手机mobileTEdit电子邮箱mailTEdit备注remarkTMemo部门和职务对应的组合框的内容都是通过数据表的内容动态更新,添加员工资料时可以直接在 组合框里选择。工作状态输入框虽然也是组合框,但它的内容是在程序中设定,主要是在职,离职 等一些相对固定的状态。合同开始时间和合同结束时间的输入框是时间日期拾取器,DataTimePicker,使用这个控件 的Date属性可以获取的日期,然后调用Datetostr函数把他转化成字符串。备注对应的输入框是一个多行文本输入框memo控件,它与一般的文本输入框的区别是可以 多行输入在这个子模块中,由于部门和职务组合框的数据是由数据表提供,所以除了各按钮控件的响应 函数外,还需要一个初始化过程oninit(),在type部分声明procedure oninit();然后在inplementation 中实现这个函数如下:procedure TForm5. onin it();var temp:stri ng;beginma n.Checked:=true;初始选择男选择query_depart用来读取部门资料表内容选择query组件可以是任意的,只要不影响其他操作with mydata.query_depart dobeginclose;with sql dobegin clear;add('select部门名称from部门资料表');en d;ope n;first;partme nt.Clear;while (eof=false) dobegintemp:=fieldb yn ame('部门名称').AsStr ing;partme nt.ltems.Appe nd(temp);n ext;en d;en d;with mydata.query_job dobeginclose;with sql dobeginclear;add ('select * from 职务表');en d;ope n;first;job.Clear;while (eof=false) dobegintemp:=fieldby name('职务').AsStri ng;job .I tems.Appe nd(temp);n ext;en d;en d;en d;实现“添加用户”按钮的响应函数,程序如下:procedure TForm5.AddstuffClick(Se nder: TObject);vartemp:stri ng;begi n判断输入内容是否完整,如果不完整则要求用户输入完整后在执行下一步操作if (trim(code.Text)=' ')or(trim(stuff name.Text)=' ')or(trim(age.Text)=' ')or (trim(partme nt.Text)=' ')or(trim(job.Text)=' ')or(trim(address.Text)=' ')or (trim(teleph on e.Text)=' ')or(trim(mobile.Text)=' ')or(trim(mail.Text)=' ')or (trim(jobstate.Text)=' ') the nbeginshowmessage('请输入完整资料');end elsebeginwith mydata.query_stuff dobeginclose;with SQL dobeginclear;add ('select * from 员工资料表 where 员工号=:stuffcode'); ParamByName ('stuffcode').AsStri ng:=trim(code.Text);en d;ope n;if(fi ndlast() the nbeginshowmessage('该工号已经有人使用,请重新输入工号);with sql dobeginclear;add ('select * from 员工资料表');en d;ope n;end elsebeginclose;with SQL dobeginclear;Add('insert into 员工资料表 values(:code,: name,:sex,:age,:partme nt,:job,:start,:e nd,:state,:address,:teleph on e,:mobile,:email,:remark)');ParamByName('code').AsStri ng:=trim(code.Text);ParamByName(' name').AsStr in g:=trim(stuff name.Text);if man. Checked the nbeginparamByName('sex').As In teger:=1;end else beg inparamByName('sex').As In teger:=0;en d;ParamByName('age').AsI nteger:=strtoi nt(trim(age.Text);ParamByName('partme nt').AsStri ng:=trim(partme nt.Text);ParamByName('job').AsStr in g:=trim(job.Text);ParamByName('start').AsStri ng:=datetostr(starttime.Date);ParamByName('e nd').AsStri ng:=datetostr(e ndtime.Date);ParamByName('address').AsStr in g:=trim (address.Text);ParamByName('teleph on e').AsStri ng:=trim (teleph on e.Text);ParamByName('mobile').AsStri ng:=trim (mobile.Text);ParamByName('email').AsStri ng:=trim (mail.Text);ParamByName('state').AsStri ng:=trim (jobstate.Text);ParamByName('remark').AsStri ng:=trim (remark.Text);en d;tryExecSQL;exceptshowmessage(' un success');en d;close;with sql dobeginclear;add('select * from 员工资料表');en d;ope n;en d;en d;en d;en d;清除输入的函数代码如下:procedure TForm5.ClearClick(Se nder: TObject);var temp:stri ng;begincode.Text:=”;stuff name.Text:="man .Checked:=true;age.Text:='0'address.Text:=”;teleph on e.Text:=”;mobile.Text:="mail.Text:="jobstate.Text:=”;remark.Text:="en d;44查询员工子模块查询员工并不需要根据所有字段进行查询,有时可能是查询所有,有时可能只需要对某几个字 段条件进行查询,这就是需要对SQL语句进行合适的处理。在条件选择上,可以使用Cleck Box 组件进行选择判断,每选择一项,则在SQL语句中添加一个条件,查询子模块的窗体,如图:在查询子模块窗体内容与添加员工子模块类似,只是在添加员工子模块中的Label组件改为 Check Box 组件。双击查询按钮建立它的响应函数,如下:procedure TForm6.SearchstuffClick(Se nder: TObject);var sig n: boolea n;value:I nteger;beginsig n:=false;标准前面是否选择查询条件with mydata.query_stuff dobeginclose;with sql dobeginclear;add('select * from 员工资料表');if (checkcode.Checked ) the n如果选择查询工号beginadd('where员工号=:code');添加查询条件ParamByName('code').AsStri ng:=trim(code.text);sig n:=true;en d;if checkname.Checked then判断是否选择名字查询beginif sign then如果已经有其他条件查询,则用and还是wherebeginadd('and 员工名=:name');end elsebeginadd('where 员工名=:name');sig n:=true;en d;ParamByName(' name').AsStri ng:=trim(stuff name.text);en d;if checksex.Checked thenbeginif man. Checked the nbeginvalue:=1;end elsebeginvalue:=0;en d;if sig n the nbeginadd('and 性别=:sex');end elsebeginadd('where 性别=:sex');sig n:=true;en d;ParamByName('sex').As In teger:=value;en d;if checkage.Checked the nbeginif sig n the nbeginadd('and 年龄=:age');end elsebeginadd('where 年龄=:age');sig n:=true;en d;ParamByName('age').AsStri ng:=trim(age.text);en d;if checktime.Checked the nbeginif en dtime.Datevstarttime.Date the nbeginshowmessage('结束时间不能小于开始时间');end elsebeginif sig n the nbeginadd('a nd');end elsebeginadd('where');sig n:=true;en d;add('合同开始时间=:sdata and合同结束时间=:edate');ParamByName('sdate').AsStri ng:=datetostr(starttime.Date);ParamByName('edate').AsStri ng:=datetostr(e ndtime.Date); en d;en d;if checkstate.Checked the nbeginif sig n the nbeginadd('and 工作状态=:state');end elsebeginadd('where 工作状态=:state');sig n:=true;en d;ParamByName('state').AsStri ng:=trim(jobstate.Text);en d;if checkaddress.Checked the nbeginif sig n the nbeginadd('and 住址=:address');end elsebeginadd('where 住址=:address');sig n:=true;en d;ParamByName('address').AsStr in g:=trim(address.Text); en d;if checktel.Checked the nbeginif sig n the nbeginadd('and 联系电话=:telephone');end elsebeginadd('where 联系电话=:telephone');sig n:=true;en d;ParamByName('teleph on e').AsStri ng:=trim(teleph on e.Text); en d;if checkmobile.Checked the nbeginif sig n the nbeginadd('and 手机=:mobile');end elsebeginadd('where 手机=:mobile');sig n:=true;en d;ParamByName('mobile').AsStri ng:=trim(mobile.Text); en d;if checkmail.Checked the nbeginif sig n the nbeginadd('and 邮箱=:mail');end elsebeginadd('where 邮箱=:mail');sig n:=true;en d;ParamByName('mail').AsStr in g:=trim(mail.Text); en d;if checkremark.Checked the nbeginif sig n the nbeginadd('and 备注 like :remark ');end elsebeginadd('where 备注 like :remark');en d;ParamByName('remark').AsStri ng:=trim('%'+remark.Text+ '%');en d;en d;ope n;en d;en d;44更新员工资料子模块在人事管理系统中更新资料相对比较频繁,在实际使用中,人事更新的操作类型有许多种,但 在数据库操作方面来说,只是更新员工资料表,同时插入相应的记录。因而人事更新操作其实可以 集中在一个资料更新模块中,当执行一些特定的操作,如更改部门职务,则需要在人事调动表添加 一条记录,表明人事结构发生变化。在执行更新操作之前,要先输入工号,然后判断该工号是否存在于数据库中,如果存在,则读 取数据库中的相关数据,并将它们显示在各组件中。输入工号按钮对应的函数,如下:procedure TForm7.BitBt n1Click(Se nder: TObject);var sig n: boolea n;beginsig n:=false;with mydata.Query1 dobeginclose;with sql dobeginclear;add('select * from 员工资料表 where 员工号=:code');ParamByName('code').AsStri ng:=trim(code.text);en d;ope n;if fin dlast() then判断工号是否存在与数据库中beginstuff name.Text:=FieldByName('员工号').AsStr ing;if (FieldByName('性别').AsI nteger=1) the nbeginman .Checked:=true;end elsebeginman. Checked:=false;en d;age.Text:=FieldByName(年龄').AsStri ng;partme nt.Text:=FieldByName('部门').AsStri ng; job.Text:=FieldByName('职务').AsStri ng; starttime.DateTime:=FieldByName('合同开始时间').AsDateTime; en dtime.DateTime:=FieldByName('合同结束时间').AsDateTime; address.Text:=FieldByName(住址').AsStr ing;telepho ne.Text:=FieldByName('联系电话').AsStr ing; mobile.Text:=FieldByName(手机').AsStr ing;mail.Text:=FieldByName('邮箱').AsStri ng;jobstate.Text:=FieldByName('工作状态').AsStr ing; remark.Text:=FieldByName('备注').AsStri ng;end else beginshowmessage('员工号不正确');en d;en d;en d;输入工号后,可以选择任意项进行更新,如果没有任何选项中,则给出提示信息,不做数据库更新操作,更 新按钮的响应函数及其代码如下:procedure TForm7.UpdatestuffClick(Se nder: TObject);var sig n: boolea n; begi nsig n:=false;with mydata.Query1 do beginclose;开始无更新选项with sql dobeginclear;add('update 员工资料表 set'); if check name.Checked the n beginadd('员工名=:name');使用 Query1设置SQL属性开始添加更新资料的SQL语句ParamByName(' name').AsStr in g:=trim(stuff name.Text); sig n:=true;en d;if Checksex.Checked the n beginif sig n the nbeg in如果前面已经有其他字段更新,则需要在赋值语句前加上“,”号add(',');en d;sig n:=true;add('性别=:sex');if man. Checked the n beginParamByName('sex').As In teger:=1; end else beginParamByName('sex').As In teger:=0;en d;en d;if checkage.Checked the nbeginif sig n the nbeginadd(',');en d;add('年龄=:age');sig n:=true;ParamByName('age').AsStri ng:=trim(age.Text); en d;if checkdepart.Checked the nbeginif sig n the nbeginadd(',');en d;sig n:=true;add('部门=:depart');ParamByName('depart').AsStri ng:=trim(partme nt.Text); en d;if checkjob.Checked the nbeginif sig n the nbeginadd(',');en d;sig n:=true;add('职务=:job');ParamByName('job').AsStr in g:=trim(job.Text); en d;if checkstart.Checked the nbeginif sig n the nbeginadd(',');en d;sig n:=true;add('合同开始时间=:startdate');ParamByName('startdate').AsStri ng:=datetostr(starttime.Date); en d;if checke nd.Checked the nbeginif sig n the nbeginadd(',');en d;sig n:=true;add('合同结束时间=:e ndtime');ParamByName('e ndtime').AsStri ng:=datetostr(e ndtime.Date); en d;if checkstate.Checked the nbeginif sig n the nbeginadd(',');en d;sig n:=true;add('工作状态=:state');ParamByName('state').AsStri ng:=trim(jobstate.Text);en d;if checkaddress.Checked the nbeginif sig n the nbeginadd(',');en d;sig n:=true;add('住址=:address');ParamByName('address').AsStr in g:=trim(address.Text); en d;if checktel.Checked the nbeginif sig n the nbeginadd(',');en d;sig n:=true;add('联系电话=:telepho ne');ParamByName('teleph on e').AsStri ng:=trim(teleph on e.Text); en d;if checkmobile.Checked the nbeginif sig n the nbeginadd(',');en d;sig n:=true;add('手机=:mobile');ParamByName('mobile').AsStri ng:=trim(mobile.Text);en d;if checkmail.Checked the nbeginif sig n the nbeginadd(',');en d;sig n:=true;add('邮箱=:mail');ParamByName('mail').AsStr in g:=trim(mail.Text);en d;if checkremark.Checked the nbegin if sig n the n begin add(',');en d;add('备注=:remark');ParamByName('remark').AsStri ng:=trim(remark.Text);en d;add('where 员工号=:code');ParamByName('code').AsStr in g:=trim(code.Text);en d;if sig n the nbeginExecSQL;如果有更新选项,则执行更新语句end elsebegin showmessage('没有更新选项');en d;en d;with mydata.query_stuff domydata.query_stuff 中的 SQL 可以读取员工资料表内容beginclose;先将它关掉open;/将其打开,从而更新DBGrid组件中显示的数据en d;en d;4.5数据库备份出于安全性和管理方便等原因的考虑,数据库应用程序一般要求在程序中提供数据库备份,这 些备份文件可以放在磁盘中的任何路径上,当系统发生问题或者是需要在别的机器上更新数据库时 可以很方便地使用备份文件。虽然SQL Server2000的企业管理器或者使用查询分析器执行SQL 语句也可以实现数据库备份,但对用户来说,这种操作是及其繁琐的,因而有必要在程序中实现数 据库备份。用程序实现数据库备份也比较简单,首先确定备份文件存放路径,然后调用backup语句进行 备份。在Delphi中可以使用SavaDialog组件来获取文件路径名,数据库备份模块的界面,如图:可以看到,在按钮旁边有一个保存文件的图标,它是位于Dialog栏中的SaveDialog组件,使 用它可以调出保存文件对话框,自动获取文件路径,数据库备份按钮的响应函数如下:procedure TForm8.BitBtnlClick(Sender: TObject);beginif savefile.Execute thenbeginwith mydata.Queryl dobeginclose;with sql dobeginadd('backup database 人事管理系统 to disk =:path');ParamByName('pa th').AsS tri ng:二savefile.FileName;end;execsql;end;end;end;五、课程设计总结及心得:本次课程设计实用 Delphi 实现了人事管理系统,由于篇幅有限,在本课程设计中只实现了具 有代表性和在系统中站核心地位的员工资料管理模块,同时也实现了数据库备份。学习最好的方法 就是参照成功的例子。在数据库应用系统中,很多数据库操作其实就是执行 SQL 语句,不同的编程 语言有不同的实现SQL语句的方法。Delphi的某些控件其实就是完美的运用了 SQL语句来完成对 数据库的操作,与之有异曲同工之效。通过本次的课程设计,我感觉学到了很多关于 Delphi 的知识。程序主要是利用 delphi 加上SQL Server 2000来实现对学校的人事管理。 经过此次数据库课程设计我对的 delphi 语言有了一 定的了解,界面设计较简单和代码编译速度相对也较快,正如书中所说的“编程高手用VC+,聪明 的人用Delphi”,为我们下学期即将开设的Delphi做了良好的心理准备,使我有了浓厚的兴趣。在编程的过程中遇到了许多问题,通过我自己翻书,上网查资料及向老师同学们请教,这些问 题也得到了解决。这次课程设计,不仅对我的学习提供了帮助,而且使我在各方面也得到了锻炼。 没有足够的耐力和信心就很难坚持对课程设计每一步的顺利进行,同时感谢和我合作的同学,在开 发系统的过程中,我们团结合作,充分发挥了集体的力量,很好的完成了此次的课程设计。

注意事项

本文(SQL数据库课程设计)为本站会员(feng****ing)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!