学生选课系统分析、设计与实现2013刘~_第1页
学生选课系统分析、设计与实现2013刘~_第2页
学生选课系统分析、设计与实现2013刘~_第3页
学生选课系统分析、设计与实现2013刘~_第4页
学生选课系统分析、设计与实现2013刘~_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、10计算机3班 刘* 100*学生选课系统分析、设计与实现【摘要】 学生选课管理系统是一个典型的信息管理系统。学生选课作为一种信息资源的集散地,包含很多的信息数据的管理,由于数据繁多,容易丢失,且不易查找。本系统使学生选课信息管理工作规范化、系统化和程序化,避免学生选课管理的随意性,提高信息处理的速度和准确性,能够及时准确、有效的查询和修改选课情况。【关键词】选课 学生 数据库 查询1概述 在高等学校的教务管理工作中,课程表的编排是一项十分复杂、棘手的工作。在排课过程中,除了满足大量的制约条件以外,还必须解决许多冲突与矛盾。学生选课系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者

2、来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段。 1.1编写需求规格说明书的目的 详细、准确和全面定义“学生选课系统”的用户需求,指导软件系统后续开发工作。(1)在系统目标方面为用户和开发人员之间建立共同协议创造基础。对要实现的软件功能做总体描述,帮助用户判断所规定的软件是否符合他们的要求或者怎样修改才符合他们的要求。(2)提高开发效率。是系统开发人员在开发之前能周密地思考系统的全部需求从而减少时后重新设计、编码、测试的活动。(3)为成本计划和编制计划进度提供基础,为系统提供一个验收基准。预期读者: 系统的最终用户,包括教务处管理人员等。2. 需求分析 2.1用户

3、特征 该系统的操作人员都是所用该系统的学校的学生、教师、教务处管理人员。 2.2限制与约束 (1)系统中所有账户能够供用户使用,完成各自授权活动。 (2)安全可靠,建立系统使用日志。 (3)该系统必须确保对数据进行完全保护,以避免未以授权的访问,所有的远程访问都要登录,并且每个登录用户只能根据角色所授权限进行访问。(4)界面友好、操作简便。2.3用户需求及功能(1)系统管理员 系统管理员登录系统之后,管理员可以对学生、教师、课程、成绩进行相应的管理以及设置选课时间段。学生管理,检索、修改、删除、录入学生的基本信息并且也可以按条件对检索学生的信息、录入学生班级信息;教师管理,检索、修改、删除、录

4、入教师的信息,以及教师所属那个部门;课程管理,检索、修改、删除、录入课程的信息,检索到教师所授课程的地点、上课时间等信息;系统管理员通过此项功能设置选课时段,只有在选课时间段里,学生才可以选择课程,超过次时间段,学生选课信息被自动所定,不得修改。(2)教师用户教师用户登录系统后可以检索个人信息,如姓名,电话等;检索所授课的信息,如所授课那些课程、在哪专业、班级上课等信息;还可以检索所授教的学生的信息,如学号、姓名、专业、班级等信息。 (3)学生用户学生登录系统后,检索个人信息,可以查看学生的个人信息,如学号、姓名、性别、电话、专业、院系等;查看必修课程,可以查看所有的必修课程,查看该课程的信息

5、,上课时间地点,开课教师信息等;选择选修课程,在所有选修课程中可以选择至少两门选修课程,同时可以查看相关信息。 2.4可行性分析 (1)技术可行性:学生选课系统,它采用基于.net的软件环境,数据库方面采用SQL 2005因为.net不是一种语言,它提供环境来运行脚本。因此技术是可行的。 (2)经济可行性:随着网络技术的发展,各高校纷纷建立自己的高速校园网,并建有属于的学生选课系统,利用计算机对学生的信息进行管理,减少了人力的投资;而且学校对选课系统大力支持,开发经费没有问题。从长远来看,其好处是乐观的。 (3)操作可行性:界面设计时充分考虑管理人员的习惯,使得操作简单;数据录入迅速、规范、可

6、靠;统计准确;制表灵活;适应力强;容易扩充。 2.5功能模块设计 学生选课系统必须能够完成学生管理、管理员管理,教师管理,公共管理。按照用户需求,可将“学生选课管理系统”设计成以下层次:学生选课系统学生模块查询学生信息选修课程查询学生信息课程信息管理教师信息管理学生信息管理修改密码登录与注销查询所授课程教师模块公共模块管理员模块图1 学生选课管理系统层次结构图管理员系统学生系统登录学生选修课程管理管理员查询查询学生信息查询教师查询管理查询教师信息登录教师系统管理登录管理员信息1nn1nmnmnmnmmnnmn1n1n1n1图2 学生选课管理系统ER图 通过分析,得到“学生管理系统”的数据流图:

7、学生教师管理员学生选课系统学生信息教师信息管理员信息课程信息学生信息教师信息管理员信息查询/管理图3 学生选课管理系统顶层数据流图用户名密码用户名密码学生信息教师信息课程安排课程信息所选课程信息所申请课程信息课程安排课程安排课程统计信息录入教师开课教师学生用户登录管理员选课系统学生选课图4 学生选课管理系统第一层数据流图学生登录用户名密码审核有效登录失败无效登录失败提示学生信息表表查询选课系统选课课程信息表表选课信息表表图5 学生选课管理系统第一层数据流图教师审核有效登录失败无效登录失败提示用户名密码登录选课系统查询课程信息表表学生信息表表图6 学生选课管理系统第一层数据流图3.数据库设计 3

8、.1创建数据库 学生管理系统采用了SQL Server作为数据库管理系统。启动“企业管理器”程序。创建名为“XKGL”的数据库。 数据库在一个信息管理系统中占有非常重要的地位,数据库设计的好坏讲影响到系统的效率以及系统实现的效果。合理的数据库设计可以提高数据存储的效率,保证数据完整的一致性,合理的数据库结构将有利于程序的实现,用户的需求具体体现在各种信息的录入、保存、更新和查询上。 3.2静态数据及其数据字典(1)数据库表表3-1 数据库表序号数据库表数据表存储的内容1Student存储学生的信息2Teacher存储教师的信息3Users存储管理员的信息4Elect存储选课的信息5Cource

9、存储课程的信息(2)学生表Student的详细数据字段:表3-2 Student学生用户表序号字段名字段类型说明备注1Stu_IDNvarchar(20)not null学生学号关键字2Stu_PwdNvarchar(20)not null学生密码3Stu_NameNvarchar(50)not null学生姓名4Stu_DepartNvarchar(20)学生院系5Stu_GradeNvarchar(50)学生年级6Stu_ClassNvarchar(50)学生班级(3)教师表Teacher的详细数据字段:表3-3Teacher教师用户表序号字段名字段类型说明备注1Tea_IDnvarcha

10、r(20)not null教师编号关键字2Tea_Pwdnvarchar(20)not null教师密码3Tea_Namenvarchar(50)not null教师姓名4Tea_Departnvarchar(50)教师院系(4)课程表Course的详细数据字段:表3-4 Course课程信息表序号字段名字段类型说明备注1CourseIDnvarchar(20)not null课程编号关键字2TeaIDnvarchar(20)not null教师编号关键字3CourseNamenvarchar(50) not null课程名称4CourseTimenvarchar(20)上课时间5Course

11、Addressnvarchar(50)上课地点6CourseScorenvarchar(20)学分(5)选课表Elect的详细数据字段:表3-5 Elect选课信息表序号字段名字段类型说明备注1StuIDnvarchar(20)not null学生学号关键字2CourseIDnvarchar(20)not null课程编号关键字3TeaIDnvarchar(20)not null教师编号关键字(6)系统管理员表Users的详细数据字段:表3-6 Admin管理员表序号字段名字段类型说明备注1AdminIDnvarchar(20)not null系统管理员号关键字2AdminPwdnvarcha

12、r(20)not null系统管理员密码3AdminNamenvarchar(50)not null管理员姓名3.3数据库结构的实现数据库逻辑结构设计完成以后,就可以在DBMS上创建数据库和数据表了。一般情况下可以根据DBMS的SQL语法建立相应的SQL语句,相对于直接操作建立数据库而言,通过SQL创建数据库的好处是便于数据库的重复创建。本系统中数据库文件命名为“学生选课管理系统”。在数据库建完后,需建立数据源,本系统建立了一个名为XK的数据源。4.系统概要设计4.1系统的开发环境及运行环境:l 普通PC及主频在1GHz以上档次微机、笔记本电脑、各种品牌兼容机,最佳档次为主频在2GHz以上微机

13、。l 128MB或256MB以上内存,最好配1GB以上内存。l 彩色或液晶显示器。l 20GB以上硬盘。l 通用打印机。软件环境如下: 系统采用面向对象的视窗数据库系统SQLSever进行开发。服务器配置操作系统:推荐Microsoft Windows Sever 2003或其他服务器版本。数据库服务器:Microsoft SQL Sever 2000 Enterprise Edition。Web服务器:IIS6或更高。.NET平台:.NET Framework 2.0版本。4.2总体设计1)处理流程(1)系统启动,进入身份验证。(2)初始化系统,导入数据库。(3)进入消息循环状态,通过事件驱

14、动激活各模块,执行各任务。(4)一旦任务执行完毕重新进入消息循环状态。(5)通过事件驱动退出系统。2)系统总体结构和模块设计4.3系统建模学生选课系统主要满足来自三方面的需求,这三个方面分别是学生用户、教师用户和管理员用户这三类用户角色。l 学生用户是主要的需求者,主要需求功能是查询可选课程、查看自己选课情况及进行选课、退课操作等。l 教师用户主要需求功能是查看自己所教授的课程、课程有哪些学生选修等。l 管理员用户的功能需求较为复杂,包括对学生信息、教师信息、课程信息进行管理。在学生信息管理子模块中,实现对学生信息的添加、修改、删除操作,还可以输入查询条件进行查询操作。在教师管理子模块中,实现

15、对教师信息的添加、修改、删除、查询等操作。实现对课程信息的添加,添加时为其分配任课教师、上课时间和地点,实现对课程的修改、删除、查看某个课程的详细信息等。本系统将管理员用户、教师用户、学生用户的身份及权限进行严格的划分,让管理员拥有最高权限,可以查看、维护系统中的所有信息,如添加学生,添加课程,修改课程信息等;让教师拥有查看自己开设的课程的信息,以及提交所开设课程成绩的权限;让学生拥有选课和退选的权限;而修改密码模块的权限每个用户都可拥有,用以修改自己的密码信息。通过进行严格的权限划分,可以更好地进行管理,也可更好地保护用户信息安全。用例图:图7 学生选课管理系统用例图用例图说明:学生管理用例

16、:学生用户可见的功能,包含了选课、退课和查看选课三个用例功能。教师管理用例:教师用户可见的功能,包含了查看学生选课和提交成绩两个用例功能。信息管理用例:管理员可见的功能,这个用例进一步分为三个用例:学生信息管理用例、教师信息管理用例和课程信息管理用例。学生信息管理用例:信息管理用例可见的功能,实现学生信息的管理功能,包含了添加学生、修改学生信息和删除学生三个用例。教师信息管理用例:信息管理用例可见的功能,实现教师信息的管理功能,包含了添加教师、修改教师信息和删除教师三个用例。课程信息管理用例:信息管理用例可见的功能,实现课程信息的管理功能,包含了添加课程、修改课程信息和删除课程三个用例。修改密

17、码用例:所有用户都可见的功能,用于修改用户的密码信息。系统用例之间的关系:学生管理用例与选课、查看选课、退课三用例之间是包含关系。教师管理用例与查看学生选课、提交成绩两用例之间是包含关系。信息管理用例与学生信息管理用例、教师信息管理用例和课程信息管理用例之间是包含关系。学生信息管理用例与添加学生、修改学生信息和删除学生三个用例之间是包含关系。教师信息管理用例与添加教师、修改教师信息和删除教师三个用例之间是包含关系。课程信息管理用例与添加课程、修改课程信息和删除课程三个用例之间是包含关系。4.4性能需求为了保证系统能够长期、安全、稳定、可靠、高校地运行,学生选课管理系统应该满足以下几个性能需求。

18、1) 数据精确度系统对数据处理的准确性和精度要求高。2) 适应性(运行环境、计划发生变化等应具有的适应能力)在开发过程中,应该充分考虑以后的可扩充性。例如管理系统的方式的改变,用户查询的需求也会不断地更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成。即系统应是一个开放系统,可以在符合一定规范的前提下,简单的加入和减少系统的模块,配置系统的硬件,通过软件的修补、替换完成系统的升级和更新换代。3) 出错处理系统中涉及到的数据是学校重要的信息,系统要提供方便的手段供系统维护人员进行数据的辈分,日常的安全管理系统意外崩溃时的数据恢复等工作。(

19、1) 系统应具有相当健壮性,避免或降低由系统错误所造成的数据库损坏。(2) 对关键性操作,如删除等警告和确认机制。4) 安全系统提供严格的身份验证机制和密码管理。5) 维护系统严格按照设计规范进行设计,并保持各阶段文档的完整性,为以后对软件的维护打好基础。5.系统详细设计系统设计是系统过程中重要的一个环节,它是对系统分析的具体描述,设计的如何,也关乎到系统的实用性,它的具体任务是依据系统分析工作得到的系统功能和信息需求设计系统的处理流程,确定系统的应用软件结构,并对系统应用软件结构的每一功能模块给出其实现的输入、输出及处理的设计5。 界面设计就是对系统功能模块的具体实现,它的设计关乎系统应用软

20、件结构的每一功能模块的输入、输出及处理的过程。学生选课系统主要分成用户登录模块、管理员管理模块、学生系统模块、教师系统模块,接下来将阐述这三个模块的相关界面的分析与设计。5.1用户登录设计功能:完成各类用户的登录功能。输入项目:用户名、密码和角色。输出项目:进入到具有各自权限的界面。测试要点:各类用户能够正确地登录。技术要点:通过选择的角色判断调用数据库中哪张表进入各自的子系统中。“用户登录”界面如图所示图8用户登录界面登录代码如下: public static string name = "" /定义全局变量为后续窗口调用登录用户名做铺垫private void butt

21、on1_Click(object sender, EventArgs e) DataAccess data = new DataAccess(); string username, password,role; if (textBox1.Text.Trim() != "" && textBox2.Text.Trim() != "" ) username = textBox1.Text.Trim(); password = textBox2.Text.Trim(); role = comboBox1.Text; if (data.Check

22、Admin(username, password, role) Constants.Username = textBox1.Text.Trim(); name = textBox1.Text; if (role = "管理员") FrmAdmin frmgly = new FrmAdmin(); frmgly.Show(); this.Hide(); else if (role = "教师") FrmTea frmtea = new FrmTea(); frmtea.Show(); this.Hide(); else if (role = "学

23、生") FrmStu frmstu = new FrmStu(); frmstu.Show(); this.Hide(); else MessageBox.Show("登录角色错误或密码错误!请重新登录!"); textBox1.Text = "" textBox2.Text = "" 5.2窗体设计 各主要窗体名称及功能说明窗体名称功能Login用户登录模块FrmStu学生子系统模块FrmStuMmxy密码修改模块FrmStuMsg学生个人信息查询模块FrmXkLb学生选课模块FrmXkJg学生选课结果显示模块FrmXky

24、q选课要求模块FrmTea教师子系统模块FrmTeaMmxy密码修改模块FrmTeaMsg教师个人信息查询模块FrmTeaCourse查询教师所授课程信息模块FrmTeaStu查询教师所教学生信息模块FrmAdmin管理员子系统模块FrmAdmMmxy密码修改模块FrmAdmMsg管理员个人信息查询模块FrmAdmAddSc管理员添加课程信息模块FrmAdmAddStu管理员添加学生信息模块FrmAdmAddTea管理员添加教师信息模块FrmAdminElect查询所有学生选课情况模块FrmAdmSc查询或删除课程信息模块FrmAdmStu查询或删除学生信息模块FrmAdmTea查询或删除教师

25、信息模块5.2学生选课系统学生子系统功能:学生查询自己信息、选修课程和退选课程。输入项目:无 输出项目:各个学生功能子模块测试要点:各功能子模块都能显示技术要点:通过选项能够进入不同功能模块,如查询自己信息、修改密码、选修课程和退选课程。 图9学生子系统界面图10学生个人信息界面 private void FrmStuMsg_Load(object sender, EventArgs e) string n = L; string sql = "select * from Student where Stu_ID='" + n+"'

26、;" SqlDataReader dr; DataAccess dataaccess = new DataAccess(); dr = dataaccess.GetReader(sql); if (dr.Read() = true) textBox1.Text = dr"Stu_ID".ToString(); textBox1.ReadOnly = true; textBox2.Text = dr"Stu_Name".ToString(); textBox2.ReadOnly = true; textBox3.Text = dr"St

27、u_Depart".ToString(); textBox3.ReadOnly = true; textBox4.Text = dr"Stu_Grade".ToString(); textBox4.ReadOnly = true; textBox5.Text = dr"Stu_Class".ToString(); textBox5.ReadOnly = true; else/若不能读到相应数据报错 MessageBox.Show("出错了哦!"); 5.2密码修改功能:修改密码输入项目:用户ID、原密码、新密码、确认密码输出

28、项目:提示密码修改是否成功测试要点:密码修改是否成功图11密码修改界面 private void button1_Click(object sender, EventArgs e) DataAccess data = new DataAccess(); string n = L; string sql = String.Format("select Stu_ID,Stu_Pwd from Student where Stu_ID=0", n); DataSet ds = new DataSet(); ds = data.GetDataSet(sql, &q

29、uot;Student"); if (ds.Tables0.Rows.Count > 0) textBox1.Text = ds.Tables0.Rows0"Stu_ID".ToString(); if (textBox2.Text != ds.Tables0.Rows0"Stu_Pwd".ToString() MessageBox.Show("原密码不正确!", "提示"); this.textBox2.Focus(); return; if (this.textBox3.Text != this

30、.textBox4.Text) MessageBox.Show("确认密码不正确!", "提示"); this.textBox3.Focus(); return; try string stuid = textBox1.Text; string stupwd = this.textBox3.Text; string sql1 = "update Student set Stu_Pwd='" + stupwd + "' " + "where Stu_ID='" + stui

31、d + "'" if (data.ExecuteSQL(sql1) MessageBox.Show("修改成功!", "提示"); else MessageBox.Show("修改失败!", "错误"); return; catch (Exception ex) ex.ToString(); MessageBox.Show("修改失败!", "错误"); 图12学生选课界面private void button2_Click(object send

32、er, EventArgs e) string sql = "select CourseID 课程编号,TeaID 教师编号, CourseName 课程名称,CourseTime 上课时间,CourseAddress 上课地点,CourseScore 学分 from Course" ds = data.GetDataSet(sql, "Course"); dataGridView1.DataSource = ds.Tables0; private void button1_Click(object sender, EventArgs e) string

33、 n=L; int index = dataGridView1.CurrentRow.Index; if (index < 0) MessageBox.Show("请选择要选修的课程!", "提示"); return; else if (MessageBox.Show("确认要选修这门课吗?", "选修", MessageBoxButtons.YesNo) = DialogResult.Yes) string courseid = ds.Tables0.Rowsindex"课程编号

34、".ToString(); string teaid=ds.Tables0.Rowsindex"教师编号".ToString(); string sql = "insert into Elect(StuID,CourseID,TeaID) values(" + "'" + n + "'," + "'" + courseid + "'," + "'" + teaid + "')"

35、if (data.ExecuteSQL(sql) MessageBox.Show("选修成功!", "提示"); else MessageBox.Show("选修失败!", "错误"); 图13学生选课结果界面 private void button1_Click(object sender, EventArgs e) string sql = "select Course.CourseID 课程编号,Elect.TeaID 教师编号, Course.CourseName 课程名称,Course.Cour

36、seTime 上课时间,Course.CourseAddress 上课地点,Course.CourseScore 学分 from Course,Elect where Course.CourseID=Elect.CourseID and Elect.StuID='" + n + "'" ds = data.GetDataSet1(sql); dataGridView1.DataSource = ds.Tables0; private void button2_Click(object sender, EventArgs e) int index =

37、 dataGridView1.CurrentRow.Index; if (index < 0) MessageBox.Show("请选择要退选的课程!", "提示"); return; else if (MessageBox.Show("确认要退选这门课吗?", "选修", MessageBoxButtons.YesNo) = DialogResult.Yes) string courseid = ds.Tables0.Rowsindex"课程编号".ToString(); string

38、teaid = ds.Tables0.Rowsindex"教师编号".ToString(); string sql = string.Format("delete Elect where CourseID='0'",courseid); if (data.ExecuteSQL(sql) MessageBox.Show("退选成功!", "提示"); else MessageBox.Show("退选失败!", "错误"); 图14教师子系统图15查询所授课程信息

39、private void button1_Click(object sender, EventArgs e) DataSet ds = new DataSet(); string sql = String.Format("select CourseID 课程编号,TeaID 教师编号, CourseName 课程名称,CourseTime 上课时间,CourseAddress 上课地点,CourseScore 学分 from Course where TeaID='0'", n); ds = data.GetDataSet(sql, "Course

40、"); dataGridView1.DataSource = ds.Tables0; 图16查询所授学生信息图17管理员子系统图18添加课程信息界面private void button1_Click(object sender, EventArgs e) string kcid = textBox1.Text; string teaid = textBox2.Text; string kcname = textBox3.Text; string sctime = textBox4.Text; string scplace = textBox5.Text; string score

41、= textBox6.Text; string sql = "insert into Course(CourseID,TeaID,CourseName,CourseTime,CourseAddress,CourseScore) values (" + "'" + kcid + "'," + "'" + teaid + "'," + "'" + kcname + "'," + "'"

42、 + sctime + "'," + "'" + scplace + "'," + "'" + score + "')" if (data.ExecuteSQL(sql) MessageBox.Show("添加成功!", "提示"); textBox1.Text = "" textBox2.Text = "" textBox3.Text = "" textB

43、ox4.Text = "" textBox5.Text = "" textBox6.Text = "" else MessageBox.Show("添加失败!", "错误"); 图19添加学生信息界面图20添加教师信息界面图21查询/删除课程信息private void button1_Click(object sender, EventArgs e) string ConnectionString = ConfigurationSettings.AppSettings"Connect

44、ionString" SqlConnection con = new SqlConnection(DataAccess.ConnectionString); string sql = "select CourseID 课程编号,TeaID 教师编号, CourseName 课程名称,CourseTime 上课时间,CourseAddress 上课地点,CourseScore 学分 from Course" dataAdapter = new SqlDataAdapter(sql, con); ds = new DataSet(); dataAdapter.Fill

45、(ds, "Course"); dataGridView1.DataSource = ds.Tables0; private void button2_Click(object sender, EventArgs e) SqlCommandBuilder builder = new SqlCommandBuilder(dataAdapter); dataAdapter.Update(ds, "Course"); private void button3_Click(object sender, EventArgs e) this.Hide(); FrmA

46、dmin aa = new FrmAdmin(); aa.Show(); private void button4_Click(object sender, EventArgs e) DataAccess data = new DataAccess(); int index = dataGridView1.CurrentRow.Index; if (index < 0) MessageBox.Show("请选择要删除的课程信息!", "提示"); return; else if (MessageBox.Show("确认要删除此课程的信息吗?", "删除", MessageBoxButtons.YesNo) = DialogResult.Yes) string courseid = ds.Tables0.Rowsindex"课程编号".ToString(); string sql = string.Format("delete Course where CourseID='0'", courseid); if (data.Execut

温馨提示

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

评论

0/150

提交评论