JAVA程序设计课程设计报告-高考管理系统的开发.doc_第1页
JAVA程序设计课程设计报告-高考管理系统的开发.doc_第2页
JAVA程序设计课程设计报告-高考管理系统的开发.doc_第3页
JAVA程序设计课程设计报告-高考管理系统的开发.doc_第4页
JAVA程序设计课程设计报告-高考管理系统的开发.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

java程序设计 课程设计报告课 题: 高考管理系统的开发 姓 名: 学 号: 同组姓名: 专业班级: 计算机科学与技术 指导教师: 设计时间: 2011.2.283.4 评阅意见:评定成绩: 指导老师签名: 年 月 日 目录一、课程设计目的和意义 .1二、高考信息管理系统数据库结构设计 .21、建立文科数据表.22、建立文科从数据表.33、理科数据表的设计.4三、主控界面的设计.4四、理科成绩录入系统设计6五、理科成绩查询模块的设计 .9六、文科成绩录入与查询窗体的设计 .10 1、文科成绩录入窗体设计10 2、文科成绩查询窗体的开发.11 3、文科成绩查询窗体的开发.11七、运行与调试 11八、实验小结心得体会 .15参考文献 .16附录:部分源代码 .16一、课程设计目的和意义高考成绩的统计和查询工作是非常重要的。高考成绩面向的是全国范围内的考生,它涉及的面比较广、数量大,如果在设计上出现什么问题,都会在社会上产生巨大的影响。在这次试验里,并不是要开发出一套系统的完整的高考管理系统。这里只是简单地做一个高考成绩查询与统计的小系统,并没考虑安全性的问题。主要是学习完java程序设计课程后进行的一次全面的综合练习。其目的在于通过课程设计,使学生能够得到较系统的技能训练,从而巩固和加深对java 编程的基础理论知识的理解,对java开发数据库系统有更深刻的认识,培养学生综合运用所学理论解决实际问题的能力,使学生成为具有扎实的计算机理论基础和较强的独立动手能力的复合型、应用型人才。 高考成绩管理系统包括两大模块:1、 高考成绩录入。高考成绩录入包括成绩的添加、修改、编辑和自动统计的功能。目前高考主要包括两各方面:文科和理科。文科成绩录入和理科成绩录入分别是两个不同的模块。2、 高考成绩查询。成绩的查询也分为理科查询和文科查询两个部分。 成绩查询系统最好是应用准考证号进行查询,这是因为准考证号是全国统一的 每一个考生只有一个准考证号,这样就避免了同名同姓出现查询重复的问题。 见图1:所示,在这个系统中,包含4个模块:理科成绩录入、理科成绩查询、文科成绩录入和文科成绩查询。其中,理科成绩录入和文科成绩录入、理科成绩查询和文科成绩查询两个模块的设计思路基本一致。 3、建立理(文)科成绩录入和查询界面。建立一个理科数据库表,用来记录准考证号(作为这个数据库表的主键,唯一标识)、学生考号和姓名。另外在建立一个理科数据库表,用来记录学生姓名、考号之外的其他信息,并记录各科的成绩。同理文科的界面和理科的界面设计比较相似。 4、本系统查询与成绩统计。系统设计要求在考生查询的同时自动进行统计工作,这是一种人性化的需求,统计和查询只需要一个事件代码和一个执行动作即可完成。高考信息管理系统高考信息管理系统主界面理科成绩录入理科成绩查询文科成绩录入文科成绩查询 图1 高考系统模块设计二、高考信息管理系统数据库结构设计1、建立文科数据表建立文科数据表,如表1所示。 表1 文科主数据表的结构字段名字段类型字段大小说明cardidbigint8准考证号studentnamevarchar50学生姓名schoolbeforevarchar50考前学校 数据库结构设计如图2所示。该结构说明在数据表的结构创建时,设置了准考证号为关键字段,即在cardid的左边有一个钥匙的符号,是关键字的符号。另外添加了学生姓名,还设计了该考生的考前学校,这样,当查询到该考号时就可以知道该生所在学校。 图2 文科数据库表 2、建立文科从数据表 从表的字段主要包括4个字段,科目序号、考试成绩、准考证号和考试科目,如表2、图3所示。 表2 文科从数据表字段名字段类型字段大小说明subjectidbigint8cardidbigint8subjectvarchar50achievementint4subjectnameidbigint8与考试科目相对应(数学 1;英语 2;;语文 3;政治 4;历史 5) 图3 文科从数据表 在表中建立一个科目序号,主要显示个学生的科目排列,并将其按照关键字进行设置。另外,要求从表中的准考证号与主表中的准考证号与相互关联,需要在从表中为从表的准考证号建立关系。如图4所示。 图4 建立art和art2表之间的关系3、理科数据表的设计 理科数据表的设计应该与理科表的设计方式基本上一致,在这里就不详细介绍了。唯一的区别就是在数据库中存储的数据不同,如高考文科为数学、英语、语文、政治、历史,理科考试科目为数学、英语、语文、物理、化学。三、主控界面的设计 主界面主要用来调用其他界面,这个界面的主要作用是显示理科成绩录入、理科成绩查询、文科成绩录入、文科成绩查询4个界面,可以根据需要对其进行选择。它的基本结构如图5所示。 图5 主控界面图1、放入控件与窗体布局 (1)在控件中放入一个jpanel1,将布局方式改为xylayout。 (2)在控件中放入一个4个jlabel:jlabel1、jlabel2、jlabel3、jlabel4,主要是用来设计整个界面的布局。(3)在控件中放入4个jradiobutton:rdbinputsanacn(理科成绩录入)、rdbqueryscnach(理科成绩查询)、rdbinputartach(文科成绩录入)、rdbqueryartach(文科成绩查询)(4)添加鼠标单击事件rdbinputscnach_mouseclicked(mouseevent e)、rdbqueryscnach_mouseclicked(mouseevent e) 、rdbinputartach_mouseclicked(mouseevent e)、rdbqueryartach_mouseclicked(mouseevent e)。2、主控界面设计和事件发生代码下面是主控界面设计属性以及事件发生代码/显示理科成绩录入界面 void rdbinputscnach_mouseclicked(mouseevent e) /调用理科成绩录入界面对话框 scienceachievement dlg = new scienceachievement(); dimension dlgsize = dlg.getpreferredsize(); dimension frmsize = getsize(); point loc = getlocation(); dlg.setlocation(frmsize.width - dlgsize.width) / 2 + loc.x, (frmsize.height - dlgsize.height) / 2 + loc.y); dlg.setmodal(true); dlg.pack(); dlg.show(); /显示理科成绩查询界面 void rdbqqueryscnach_mouseclicked(mouseevent e) /调用理科成绩查询界面对话框 sciencequery dlg = new sciencequery(); dimension dlgsize = dlg.getpreferredsize(); dimension frmsize = getsize(); point loc = getlocation(); dlg.setlocation(frmsize.width - dlgsize.width) / 2 + loc.x, (frmsize.height - dlgsize.height) / 2 + loc.y); dlg.setmodal(true); dlg.pack(); dlg.show(); /显示文科成绩录入界面 void rdbinputartach_mouseclicked(mouseevent e) /调用文科成绩录入界面对话框 artsachievement dlg = new artsachievement(); /显示文科成绩查询界面 void rdbqueryartach_mouseclicked(mouseevent e) /调用文科成绩查询界面对话框 artsquery dlg = new artsquery(); 四、理科成绩录入系统设计 理科成绩录入窗体是承担整个录入过程的窗体,要将数据录入并保存在数据表中,就需要一系列的数据库相关空间将其连接起来。另外,在进行成绩录入时,增加了一个对话框进行成绩的录入(其准考证号为在界面中输入的值),这样就能够完成对理科成绩的录入。另外,还应该添加的控件进行属性设置。 理科成绩录入窗体设计如下:(1) 加入一个jpanel1,并将其设置为xylayout1。(2) 加入4个jlabel,用来布置整个窗体的布局。(3) 在控件中加入3个jlabel控件:jlabel3、jlabel4、jlabel5,代表的含义分别是“准考证号”、“学生姓名”、“考前学校”。(4) 加入3个jtextfield:jtextfield1、jtextfield2、jtextfield3.(5) 在jlabel6中加入jbutton1,将其文本标签设置为成绩录入。(6) 加入数据库控件jdbtable1.(7) 加入数据库控件database1.(8) 加入数据库控件querydataset1. 如图6所示为理科成绩录入主界面 图6 理科成绩录入主界面理科成绩录入模块的代码如下: database1.setconnection(new com.borland.dx.sql.dataset.connectiondescriptor(jdbc:odbc:local, sa, , false, sun.jdbc.odbc.jdbcodbcdriver); database1.setdatabasename(); querydataset1.setmetadataupdate(metadataupdate.tablename); querydataset1.setschemaname(dbo); querydataset1.setsort(new com.borland.dx.dataset.sortdescriptor(, new string cardid, studentname, schoolbefore, new boolean true, false, false, , null, 0); querydataset1.settablename(science); querydataset1.setquery(new com.borland.dx.sql.dataset.querydescriptor(database1, select * from science, null, true, load.all); jdbtable1.setdataset(querydataset1); querydataset1.setcolumns(new column column1, column3, column4); getcontentpane().add(panel1); void jbutton1_actionperformed(actionevent e) scienceacn dlg = new scienceacn(); dimension dlgsize = dlg.getpreferredsize(); dimension frmsize = getsize(); point loc = getlocation(); dlg.setlocation(frmsize.width - dlgsize.width) / 2 + loc.x, (frmsize.height - dlgsize.height) / 2 + loc.y); dlg.setmodal(true); dlg.pack(); dlg.show(); querydataset1.refresh(); jdbtable1.setdataset(querydataset1);在上述程序段中,语句scienceacn dlg = new scienceacn()的作用是调用一个对话框,主要功能是输入考试的各科成绩。对话框的代码如下(对话框如图7所示): 图7 理科成绩录入的对话框 database1.setconnection(new com.borland.dx.sql.dataset.connectiondescriptor(jdbc:odbc:local, sa, , false, sun.jdbc.odbc.jdbcodbcdriver); void jbutton1_actionperformed(actionevent e) scienceachievement scienceachievement = new scienceachievement() ; int cardid = scienceachievement.cardid() ; string studentname = scienceachievement.studentname() ; string studentbefore = scienceachievement.studentbefore() ; int math = math() ; int english = english() ; int chinese = chinese() ; int physics = physics() ; int chemistry = chemistry() ; int mathid = 1 ; int englishid = 2 ; int chineseid = 3 ; int physicsid = 4 ; int chemistryid = 5 ; string mathname = 数学 ; string englishname = 英语 ; string chinesename = 语文 ; string physicsname = 物理 ; string chemistryname = 化学 ; statement sql = database1.createstatement() ; string stmt = insert into science values(+cardid+, +studentname+ , +studentbefore+) ; string stmt1 = insert into science2 values(+cardid+,+mathid+,+mathname+,+math+) ; string stmt2 = insert into science2 values(+cardid+,+englishid+,+englishname+,+english+) ; string stmt3 = insert into science2 values(+cardid+,+chineseid+,+chinesename+,+chinese+) ; string stmt4 = insert into science2 values(+cardid+,+physicsid+,+physicsname+,+physics+) ; string stmt5 = insert into science2 values(+cardid+,+chemistryid+,+chemistryname+,+chemistry+) ; try sql.executeupdate(stmt) ; sql.executeupdate(stmt1) ; sql.executeupdate(stmt2) ; sql.executeupdate(stmt3) ; sql.executeupdate(stmt4) ; sql.executeupdate(stmt5) ; catch(sqlexception www) 五、理科成绩查询模块的设计 录入成绩只是高考成绩管理的一部分,但是录入部分的内容仅仅是面向管理员,而高考信息系统的主要目的是让广大考生能够及时查询高考结果。录入部分并不是整个系统最重要的部分,重要的是对录入信息的开发利用,查询信息是一个重要的工具,因此,进行查询窗体的开发是很有必要的。 理科成绩查询模块窗体属性及事件的设计如下:(1) 加入jpanel1,并设布局方式为xylayout1.。(2) 加入两个jlabel,对窗体进行整体布局。jlabel1的文本标题设置为“理科成绩查询”;jlabel2在整体布局时只是起到装饰的作用。(3) 加入一个jlabel3,文本标题为“准考证号”。(4) 加入一个jtextfield,将其命名为jtfcardid。(5) 加入一个jbutton,将其命名为jbnquery,文本设置为“执行查询”。(6) 加入一个jlabel4,将文本标题设置为“总成绩”。(7) 加入一个jdbtextfield1(8) 加入一个jbutton,将其命名为jbvexit。(9) 加入一个数据库控件database1,用于连接数据库。(10) 加入一个数据库控件querydataset1,用于执行sql语句。(11) 加入一个jdbtable1数据库控件。理科成绩查询模块代码如下: /连接数据库(local) database1.setconnection(new com.borland.dx.sql.dataset.connectiondescriptor(jdbc:odbc:local, sa, , false, sun.jdbc.odbc.jdbcodbcdriver); void jbnquery_actionperformed(actionevent e) /进行数据查询 try /获得准考证号 int cardid1 = integer.parseint(jtfcardid.gettext().trim(); /查询学习成绩 querydataset1.setquery(new com.borland.dx.sql.dataset.querydescriptor(database1, select *from science2 where science2.cardid = +cardid1+, null, true, load.all); / querydataset1.setcolumns(new column column2, column3, column4, column5, column1); /加入到jdbtable1中 jdbtable1.setdataset(querydataset1); /执行sum语句,获得成绩总分 querydataset2.setquery(new com.borland.dx.sql.dataset.querydescriptor(database1, select sum(achievement) as sum_achievement from science2n + where science2.cardid =+cardid1+, null, true, load.all); /在jdbtextfield1中加入一列 jdbtextfield1.setcolumnname(sum_achievement); /把数据集加入到jdbtextfield1中 jdbtextfield1.setdataset(querydataset2); catch(exception sql) joptionpane.showmessagedialog(this,准考证不存在,请重试); 六、文科成绩录入与查询窗体的设计 1、文科成绩录入窗体设计(1)加入一个jpanel1,并将其设置为xylayout1。(2)加入4个jlabel,用来布置整个窗体的布局。(3)在控件中加入3个jlabel控件:jlabel3、jlabel4、jlabel5,代表的含义分别是“准考证号”、“学生姓名”、“考前学校”。 (4)加入3个jtextfield:jtextfield1、jtextfield2、jtextfield3.(5)在jlabel6中加入jbutton1,将其文本标签设置为成绩录入。(6)加入数据库控件jdbtable1.(7)加入数据库控件database1.(8)加入数据库控件querydataset1.文科成绩录入模块的代码设计与理科成绩录入模块基本一致,在这里不再详细叙述。2、 文科成绩查询窗体的开发 文科查询窗体与理科查询窗体一样,只是标签的标题和数据库控件的数据源不同而已,为保持案例的完整起见,下面进行简单说明。文科成绩查询模块窗体属性及事件的设计如下:(1) 加入jpanel1,并设布局方式为xylayout1.。(2) 加入一个jlabel1,将文本设置为“文科成绩查询”。(3) 加入两个jlabel,jlabel2、jlabel4用来作为界面布局。(4) 加入一个jlabel3,文本标题为“准考证号”。(5) 加入一个jtextfield1。(6) 加入一个jbutton,文本设置为“执行查询”。(7) 加入一个jlabel5,将文本标题设置为“总成绩”。(8) 加入一个jdbtextfield1(9) 加入一个jbutton,将其设置为“退出”。3、文科成绩查询代码设计文科成绩查询模块的代码设计与理科成绩查询模块功能基本一致七、运行与调试 八、实验小结与心得体会本案例通过实现一个高考管理系统;以及对数据库的查询、添加使读者更加深入理解jdbc技术。同时,要设计实现整个数据库的应用程序的类图,培养读者的设计能力。由于管理系统之间有相似性,因此熟悉了这一管理系统,读者在实践中在遇到相关管理系统的开发也相对容易了。在这次试验中我了解了如何在java中编写程序代码将java程序语言同数据库连接起来,知道了如何利用java程序代码对数据库表中的内容进行增、删、查、改等操作,也理解了程序中的一些函数代码,了解了有些系统函数在系统中的功能以及不同的数据库坏境当连接数据库时java程序代码也会相应的有所改变,sql2000与sql2005使用时,java程序编码在连接数据库时就有细微差别。例如:sql2000 环境下:string drivername=”com.microsaft.jdbc.sqlserver.sqlserverdriver”;string dburl=”jdbc:microsoft:sqlserver:/localhost:14433;databasename=sample”;在sql2005环境下: string drivername=”com.microsaftsqlserver.sqlserverdriver”;string dburl=”jdbc:sqlserver:/localhost:14433;databasename=sample”;而database1.setconnection(new com.borland.dx.sql.dataset.connectiondescriptor(jdbc:odbc:local, sa, , false, sun.jdbc.odbc.jdbcodbcdriver);也是一种连接数据库的方法。连接数据库前要先建立数据源,选择要处理的数据库。mouseclicked(mouseevent e)是以个鼠标单击事件;querydataset1.refresh();为刷新数据集querydataset1;jdbtable1.setdataset(querydataset1);表示为在jdbtable1中显示数据集querydataset1;scienceachievement dlg=new scienceachievement();是调用理科成绩录入界面对话框;dlg.show();作用是将对象显示出来,如将理科成绩录入界面对话框显示出来;dispose();代表销毁窗口;trim()系统函数表示消除格。如:当输入的数据中有空格也能因将空格忽略而显示相应的数据。在源程序中因有些键单击后没反应,故做了些相应的修改。如:文科成绩录入对话框中jbutton2(取消)键没反应,故添加了jbutton响应事件 jbutton2.addactionlistener(new java.awt.event.actionlistener() public void actionperformed(actionevent e) jbutton2_actionperformed(e); );void jbutton2_actionperformed(actionevent e) cancel() ; 因为该实验中用到了数据源(odbc),故该程序中的一些代码必须做相应的改变。如将程序中类似info.dbo.science的代码中的info.dbo.去掉,因为环境不能够识别。另外,在查询时不应该只查询特定的一项,应将源代码querydataset2.setquery(new com.borland.dx.sql.dataset.querydescriptor(database1, select sum(achievement) as sum_achievement from info.dbo.art2n + where art2.cardid = 10000001, null, true, load.all); 改为querydataset2.setquery(new com.borland.dx.sql.dataset.querydescriptor(database1, select sum(achievement) as sum_achievement from art2n + where art2.cardid = +cardid1+, null, true, load.all);再此实验中遇到了一些问题,如在对文理科进行成绩录入时,出现异常。成绩录入主界面中的数据无法传从到成绩录入对话框,输入的数据丢失,成绩录入主界面的数据为空值,从而导致函数调用时,无法对空值转化为整形而出现异常。将一些关键字设为全局变量即可解决此问题。通过本案例的学习,是操作者强化了所学的知识,加强了动手能力的同时,了解相关的业务,为后续工作打下了坚实的基础。参考文献1、黄晓东,java课程设计案例精编,中国水利水电出版社,2007。 2、崔晓静、严小舟,java语言程序设计,中国铁道出版社,2007.12附录:部分源代码package infomanagement;import java.awt.*;import javax.swing.*;import com.borland.jbcl.layout.*;import com.borland.dx.dataset.*;import com.borland.dbswing.*;import com.borland.dx.sql.dataset.*;import java.awt.event.*;public class artsachievement extends jdialog private jpanel panel1 = new jpanel(); private borderlayout borderlayout1 = new borderlayout(); private jpanel jpanel1 = new jpanel(); private xylayout xylayout1 = new xylayout(); private jlabel jlabel1 = new jlabel(); private jlabel jlabel2 = new jlabel(); private jlabel jlabel3 = new jlabel(); private jlabel jlabel4 = new jlabel(); private jlabel jlabel5 = new jlabel(); private jtextfield jtextfield1 = new jtextfield(); private jtextfield jtextfield2 = new jtextfield(); private jtextfield jtextfield3 = new jtextfield(); private jlabel jlabel6 = new jlabel(); private jbutton jbutton1 = new jbutton(); private jdbtable jdbtable1 = new jdbtable(); private database database1 = new database(); private querydataset querydataset1 = new querydataset(); public artsachievement(frame frame, string title, boolean modal) super(frame, title, modal); try jbinit(); pack(); catch(exception ex) ex.printstacktrace(); public artsachievement() this(null, , false); private void jbinit() throws exception panel1.setlayout(borderlayout1); jpanel1.setlayout(xylayout1); jlabel1.setfont(new java.awt.font(dialog, 0, 23); jlabel1.setforeground(color.red); jlabel1.setborder(borderfactory.createetchedborder(); jlabel1.settext( 文科成绩录入); jlabel2.setborder(borderfactory.createetchedborder(); jlabel3.settext( 准考证号); jlabel4.settext( 学生姓名); jlabel5.settext( 考前学校); jlabel6.setborder(borderfactory.createetchedborder(); jbutton1.settext(成绩录入); jbutton1.addactionlistener(new java.awt.event.actionlistener() public void actionperformed(actionevent e) jbutton1_actionperformed(e); ); jdbtable1.setborder(borderfactory.createetchedborder(); database1.setconnection(new com.borland.dx.sql.dataset.connectiondescriptor(jdbc:odbc:local, sa, , false, sun.jdbc.odbc.jdbcodbcdriver); jtextfield1.settext(0); querydataset1.setquery(new com.borland.dx.sql.dataset.querydescriptor(database1, select * from art, null, true, load.all); getcontentpane().add(panel1); panel1.add(jpanel1, borderlayout.center); jpanel1.add(jlabel1, new xyconstraints(0, 0, 399, 48); jpanel1.add(jlabel3, new xyconstraints(30, 50, 114, 21); jpanel1.add(jlabel4, new xyconstraints(150, 50, 108, 23); jpanel1.add(jlabel5, new xyconstraints(270, 50, 104, 23); jpanel1.add(jlabel2, new xyconstraints(0, 46, 399, 76); jpanel1.add(jtextfield1, new xyconstraints(40, 81, 90, 20); jpanel1.add(jtextfield2, new xyconstraints(160, 81, 90, 20); jpanel1.add(jtextfield3, new xyconstraints(280, 81, 90, 20); jpanel1.add(jlabel6, new xyconstraints(1, 119, 397, 50); jpanel1.add(jbutton1, new xyconstraints(280, 134, 90, 20); jpanel1.add(jdbtable1, new xyconstraints(2, 172, 396, 215); public int cardid() int card = integer.parseint(jtextfield1.gettext().trim() ; return card ; public string studentname() return jtextfield2.gettext().trim().tostring() ; public string studentbefore() return jtextfield3.gettext().trim().tostring(); void jbutton1_actionperformed(actionevent e) artacn dlg = new artacn(); dimension dlgsize = dlg.getpreferredsize(); dimension frmsize = getsize(); point loc = getlocation(); dlg.setlocation(frmsize.width - dlgsize.width) / 2 + loc.x, (frmsize.height - dlgsize.height) / 2 + loc.y); dlg.setmodal(true); dlg.pack(); dlg.show(); querydataset1.refresh(); jdbtable1.setdataset(querydataset1); package infomanagement;import java.awt.*;import javax.swing.*;import com.borland.jbcl.layout.*;import java.awt.event.*;import com.borland.dx.sql.dataset.*;import java.sql.* ;public class artacn extends jdialog private jpanel jpanel1 = new jpanel(); private xylayout xylayout1 = new xylayout(); private jlabel jlabel1 = new jlabel(); private jlabel jlabel2 = new jlabel(); private jlabel jlabel3 = new jlabel(); private jtextfield jtextfield1 = new jtextfield(); private jlabel jlabel4 = new jlabel(); private jtextfield jtextfield2 = new jtex

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论