数据库系统课程设计报告之教学与学生信息管理.doc_第1页
数据库系统课程设计报告之教学与学生信息管理.doc_第2页
数据库系统课程设计报告之教学与学生信息管理.doc_第3页
数据库系统课程设计报告之教学与学生信息管理.doc_第4页
数据库系统课程设计报告之教学与学生信息管理.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

科技大学数据库系统课程设计课程设计题目: 教学管理系统 .指导教师:学生院系:学生班级:学生姓名: 学生学号: 目录一、任务书2二、相关技术与环境介绍(分析)3三、需求分析4四、概念结构设计7五、逻辑结构设计8六、数据库物理设计9七、数据库实施9八、系统测试方案和测试报告11九、系统的主要功能和使用说明11十、系统安装说明20十一、课程设计心得20十二、附录22一、 任务书1.课程设计的题目与内容教学管理系统【1】信息需求:(1) 学生信息:学号、姓名、班级编号、性别、年级、政治面貌编号、民族编号、籍贯编号、身份证号、学籍编号;(2) 班级信息:班级编号、年级、班级名称、班级简称、人数、班主任;(3) 课程信息:课程编号、课程名称、课程简称、拼音码、本学期课程、教师、开课系别、学分;(4) 成绩信息:编号、学号、课程编号、成绩、考试次数、是否补修、是否重考、是否已确定成绩。【2】处理需求:(1) 学生基本信息管理 学生信息录入; 学生信息查询:按学号或姓名查询出指定学生的相关学籍信息 学生信息修改:按学号或姓名查询出指定学生的信息并做信息修改;或者通过直接点击学生信息进行修改。(2) 班级信息管理:对班级的基本信息输入、修改、删除(3) 课程信息管理:课程信息的输入、修改、删除(4) 学生成绩信息管理:成绩信息的输入、修改、删除(6) 学生成绩统计管理 统计不合格人数 统计学生考试成绩总分 统计某一课程的最高分、平均分。(7) 信息查询 学生信息查询:按学号或姓名查询出指定学生的相关学籍信息 学生成绩查询(8) 统计报表成绩登记表,内容包括课程基本信息(课程号、课程名称、任课教师号、学时、学分、上课时间、上课地点、考试时间),每个学生的平时成绩(空格)、考试成绩(空格)和总评成绩(空格),按学号排序:顺序输出所有课程的成绩登记表。1.设计分工情况:略二、 相关技术与环境介绍(分析)对使用的RDBMS和应用开发工具作简单的介绍,及运行环境介绍。2. 1.使用的RDBMS:SQLServer2012数据库SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。Microsoft SQL Server近年来不断更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出,目前最新版本是2015年份推出的SQL SERVER 2015。SQL Server 2012具备很强的可伸缩性、更加可靠以及前所未有的高性能;而Power View为用户对数据的转换和勘探提供强大的交互操作能力,并协助做出正确的决策。增加Power View数据查找工具和数据质量服务,企业版本则提高安全性可用性,以及从大数据到StreamInsight复杂事件处理,再到新的可视化数据和分析工具等,都将成为SQL Server 2012最终版本的一部分。2. 2.应用开发工具:C+ Builder C+Builder是由Borland公司推出的一款可视化集成开发工具。C+ Builder具有快速的可视化开发环境:只要简单地把控件(Component)拖到窗体(Form)上,定义一下它的属性,设置一下它的外观,就可以快速地建立应用程序界面;C+ Builder内置了100多个完全封装了Windows公用特性且具有完全可扩展性(包括全面支持ActiveX控件)的可重用控件;C+ Builder具有一个专业C+开发环境所能提供的全部功能:快速、高效、灵活的编译器优化,命令行工具等。它实现了可视化的编程环境和功能强大的编程语言(C+)的完美结合。C+ Builder可以编译所有符合ANSI/ISO标准的原代码,支持最新ANSI C+/C语言特征:模板(Templates)、异常(Exceptions)、运行类型信息(Runtime Type Information)、Namespaces(命名空间)等,另外它还可以使用标准C+库且支持标准模板库(STL),以前的所有C+/C原代码可以不经过修改,直接移植到C+ Builder环境下来。C+ Builder完全支持32位长文件名、多线程程序设计,且允许程序员直接调用任何Win95和NT API函数。2. 3.运行环镜:C+ BuilderC+ Builder集成开发环境包含可视化窗体设计器,对象观察器、组件面板、工程治理器、源代码编辑器、调试程序以及安装工具等。三、 需求分析数据字典(包括数据项、数据结构、数据流、数据存储和数据处理,参考数据库教材和软件工程教材)和数据流图(参考软件工程教材);3. 1.此系统中的部分参数名词解释(数据项):3. 1.1.系统数据表及其用途:数据表名称数据表用途班级信息表保存班级基本信息学生信息表保存学生的基本信息课程信息表保存课程的基本信息成绩表用于保存学生的考试成绩3. 1.2.学生信息表:对象名称属性名称设置值学号Char(10)Not Null姓名Char(8)Null班级编号Char(14)Null性别Char(2)Null年级IntNull政治面貌编号Char(13)Not Null民族编号Char(10)Not Null籍贯编号Char(2)Not Null身份证号Char(20)Null学籍编号Char(2)Not Null3. 1.3.班级信息:对象名称属性名称设置值班级编号Char(14)Not Null年级Char(4) Null班级名称Char(40)Null班级简称Char(20)Null人数Numeric(3,0) Null班主任Char(8)Null3. 1.4.课程信息:对象名称属性名称设置值课程编号IntNot Null课程名称Char(40)Not Null课程简称Char(40)Not Null拼音码Char(6)Null本学期课程IntNot Null教师Char(13)Not Null开课系别Char(30)Not Null学分IntNot Null3. 1.5.成绩信息:对象名称属性名称设置值编号Int IDENTITY(1,1)Not Null学号Char(20)Not Nul课程编号Int Not Nul成绩Int Not Nul考试次数IntNull是否补修Char(2)Null是否重考Char(2)Null是否已确定成绩Char(2)Null3. 2.数据流图图3-1 系统功能数据流图3. 3.安全性和完整性要求随着这些年电脑计算机的速度质的提高,成本的下降,IT互联网大众趋势的发展。我们使用电脑的高效率才处理数据信息成为可能。 学生学籍管理系统的出现,正是管理人员与信息数据,计算机的进入互动时代的体现。友好的人机交互模式,清晰简明的图形界面,高效安全的操作使得我们对成千上万的信息的管理得心应手。学生学籍管理系统,以SQL数据库作为后台信息存储,以C+ Builder作为前台系统的语言。提供了对学生信息添加,查询,修改,删除的功能。实现了最基本的信息管理。同时SQL Server 2012具备很强的可伸缩性、更加可靠以及前所未有的高性能;而Power View为用户对数据的转换和勘探提供强大的交互操作能力,并协助做出正确的决策。在完整性跟安全性上存在很强的优越性。四、 概念结构设计E-R图。图4-1 详细介绍的功能模块图4-2 系统流程E-R图五、 逻辑结构设计 概念结构设计所得的E-R模型是对用户需求的一种抽象的表达形式,它独立于任何一种具体的数据模型,因而也不能为任何一个具体的DBMS所支持。为了能够建立起最终的物理系统,还需要将概念结构进一步转化为某一DBMS所支持的数据模型,然后根据逻辑设计的准则、数据的语义约束、规范化理论等对数据模型进行适当的调整和优化,形成合理的全局逻辑结构,并设计出用户子模式这就是数据库逻辑设计所要完成的任务。数据库逻辑结构的设计分为两个步骤:首先将概念设计所得的E-R图转换为关系模型;然后对关系模型进行优化。关系模型是由一组关系(二维表)的结合,而E-R模型则是由实体、实体的属性、实体间的关系三个要素组成。所以要将E-R模型转换为关系模型,就是将实体、属性和联系都要转换为相应的关系模型。六、 数据库物理设计数据库在物理上的存储结构与存储方法称为数据库的物理结构,它依赖于选定的数据库管理系统。为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是物理结构设计。数据库的物理结构设计通常分为两步:(1)确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构;(2)对物理结构进行评价,评价的中的是时间和空间效率。七、 数据库实施创建数据库及数据库对象,实现及应用程序编码如下:create table 班级信息(班级编号 varchar(4) not null,年级 varchar(4) null,班级名称 varchar(30) null,班级简称 varchar(16) null,人数 numeric(3,0) null,班主任 varchar(8) null)create table 学生信息(学号 varchar(14) not null,姓名 varchar(8) null,班级编号 varchar(14) null,性别 varchar(2) null,年级 int null,政治面貌编号 varchar(2) null,民族编号 varchar(2) not null,籍贯编号 varchar(2) not null,身份证号 varchar(15) null,学籍编号 varchar(2) not null)create table 课程信息(课程编号 int not null,课程名称 char(40) not null,课程简称 char(40) not null,拼音码 char(6) null,本学期课程 char(2) null,教师 char(10) null,开课系别 char(30) null,学分 int null)create table 成绩表(编号 int not null,学号 varchar(14) not null,课程编号 int not null,成绩 int not null,是否补修 varchar(2) null,是否重考 varchar(2) null,是否已确定成绩 varchar(2) null)INSERT INTO 成绩表values(1,14020301,1,90,null,null,null);INSERT INTO 成绩表values(2,14020301,2,59,null,null,null);INSERT INTO 成绩表values(3,14020301,3,80,null,null,null);INSERT INTO 成绩表values(4,14010302,1,91,null,null,null);INSERT INTO 成绩表values(5,14010302,2,80,null,null,null);INSERT INTO 成绩表values(6,14010302,3,80,null,null,null);INSERT INTO 成绩表values(7,14030203,2,60,是,是,是);INSERT INTO 成绩表values(8,14030203,1,32,null,null,null);INSERT INTO 成绩表values(9,14030203,3,72,null,null,null);INSERT INTO 课程信息values(1,数据结构,数据结构,sjjg,a,胡杏,信息与计算科学,3);INSERT INTO 课程信息values(2,数据库系统概论,数据库,sjk,a,刘缅芳,信息与计算科学,3);INSERT INTO 课程信息values(3,数值分析,数值分析,szfx,a,谭敏,信息与计算科学,4);INSERT INTO 学生信息values(14010302,谢露,140103,男,2014,2,1,10,112233445567,2);INSERT INTO 学生信息values(14020301,路毅恒,140203,女,2014,1,1,4,112233445566,1);INSERT INTO 学生信息values(14030203,王五,140302,男,2015,2,2,6,223344556677,3);INSERT INTO 班级信息values(1,2014,信息与计算科学3班,信计3班,26,刘佩);INSERT INTO 班级信息values(2,2014,数学与计算数学3班,数学3班,28,张三);ISERT INTO 班级信息values(3,2014,数学与应用统计2班,统计2班,29,李四);八、 系统测试方案和测试报告总体来讲,我们每编写一个模块,就会进行相应的测试,当当前的所有功能测试完毕而且能正常运行时,我们才继续进行下一模块的编写。我们用到的测试方法大概有如下几种:8. 1.1黑盒测试:黑盒测试又称功能测试或者数据驱动测试。黑盒测试是根据软件的规格对软件进行的测试,这类测试不考虑软件内部的运作原理,因此软件对用户来说就像一个黑盒子。软件测试人员以用户的角度,通过各种输入和观察软件的各种输出结果来发现软件存在的缺陷,而不关心程序具体如何实现的一种软件测试方法。释);8. 1.2静态测试:静态测试指测试不运行的部分,例如测试产品说明书,对此进行检查和审阅.。静态方法是指不运行被测程序本身,仅通过分析或检查源程序的文法、结构、过程、接口等来检查程序的正确性。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导8. 1.3动态测试:动态测试是指通过运行软件来检验软件的动态行为和运行结果的正确性。 回归测试: 回归测试是指在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。根据修复好了的缺陷再重新进行测试。回归测试的目的在于验证以前出现过但已经修复好的缺陷不再重新出现。一般指对某已知修正的缺陷再次围绕它原来出现时的步骤重新测试。通常确定所需的再测试的范围时是比较困难的,特别当临近产品发布日期时。因为为了修正某缺陷时必需更改源代码,因而就有可能影响这部分源代码所控制的功能。所以在验证修好的缺陷时不仅要服从缺陷原来出现时的步骤重新测试,而且还要测试有可能受影响的所有功能。8.1.4单元测试:单元测试是最微小规模的测试;以测试某个功能或代码块。典型地由程序员而非测试员来做,因为它需要知道内部程序设计和编码的细节知识。这个工作不容易做好,除非应用系统有一个设计很好的体系结构; 还可能需要开发测试驱动器模块或测试套具。8.2 测试报告 8.2.1 登录界面测试报告 在对学生成绩统计表测试结果运行报告如下图所示:九、 系统的主要功能和使用说明我们采用BCB中的BDE功能与通过SQL Server2012建立的ODBC数据源建立连接,从而实现访问数据库的功能。其次,我们使用BCB中“数据库”菜单中的“窗体创建向导”来生成多个窗体。如下:1、首先,登录功能:只有正确的账户和密码才能登录,保证数据的基本安全性。2、登录界面,可视化操作界面从而方便操作。3、学生信息查询与维护功能。包括查询首记录、上记录、下记录、尾记录、新增、删除(同时会提示用户再次确认)、编辑、完成、放弃、撤销;根据学号或者姓名查询,当没有符合条件的结果时,系统会返回空白,当查询条件为空时,系统会返回全部内容。同时,界面下方还会显示所选中记录的各种信息。4、班级信息查询与维护功能,和学生信息查询与维护功能相似。包括查询首记录、上记录、下记录、尾记录、新增、删除(同时会提示用户再次确认)、编辑、完成、放弃、撤销;根据课程名称号或课程简称名查询,当没有符合条件的结果时,系统会返回空白,当查询条件为空时,系统会返回全部内容。同时,界面下方还会显示所选中记录的各种信息。5成绩信息查询与维护功能,和学生信息查询与维护功能相似,包括查询首记录、上记录、下记录、尾记录、新增、删除(同时会提示用户再次确认)、编辑、完成、放弃、撤销;根据课程名称号或课程简称名查询,当没有符合条件的结果时,系统会返回空白,当查询条件为空时,系统会返回全部内容。同时,界面下方还会显示所选中记录的各种信息。同时同时嵌入式SOL语言实现统计各种数据的功能。如图片的右方所示。十、 系统安装说明1、打开SQL sever,导入数据表脚本文件并重启2、在安装了SQL Sever的Windows平台上即可运行本系统3、输入正确的数据库访问账户与密码即可开始使用系统。(初始界面)(登录界面)十一、 课程设计心得通过此次课程设计,使我更加扎实的掌握了有关信息管理系统方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。 课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。本次课程设计虽然很辛苦,实在是受益匪浅。本来这门课的知识学的就不够扎实,本次课程设计,在设计过程中碰到了很多问题,刚开始要设计的时候,还真不知道从哪里下手但最终在图书、同学和老师的帮助下都得到了解决,让我学会了好多书本上没有的东西,通过本次课程设计我也能将课本上的知识融会贯通,起到了很好的辅助学习的效果,但是我发现我学到的知识比整整一个学期学到的都多。理论和实践的相结合是学习最有效的方法。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论.十二、 附录#include #pragma hdrstop#include#include Unit1.h#include Unit2.h#include Unit3.h#include Unit4.h#include Unit5.h#include db.cpp#pragma package(smart_init)#pragma resource *.dfmTForm1 *Form1;_fastcall TForm1:TForm1(TComponent* Owner) : TForm(Owner)void _fastcall TForm1:Button1Click(TObject *Sender) Form2-Show();/-void _fastcall TForm1:Button2Click(TObject *Sender) Form3-Show();void _fastcall TForm1:Button3Click(TObject *Sender) Form4-Show();void _fastcall TForm1:Button4Click(TObject *Sender) Form5-Show(); void _fastcall TForm1:N2Click(TObject *Sender) Form1-Button1-Click();void _fastcall TForm1:N6Click(TObject *Sender) Form1-Button2-Click();void _fastcall TForm1:N4Click(TObject *Sender) Form1-Button4-Click();void _fastcall TForm1:N5Click(TObject *Sender) Form1-Close(); Form2-Close(); Form3-Close(); Form4-Close(); Form5-Close();void _fastcall TForm1:N3Click(TObject *Sender) Form1-Button3-Click();void _fastcall TForm1:Label1Click(TObject *Sender) Form1-Button1-Click(); void _fastcall TForm1:Label2Click(TObject *Sender) Form1-Button2-Click(); void _fastcall TForm1:Label3Click(TObject *Sender) Form1-Button3-Click(); void _fastcall TForm1:Label4Click(TObject *Sender) Form1-Button4-Click();void _fastcall TForm1:FormCreate(TObject *Sender) Form1-Button4-Visible=false; Form1-Button3-Visible=false; Form1-Button2-Visible=false; Form1-Button1-Visible=false;void _fastcall TForm1:N1Click(TObject *Sender) ShowMessage(待开发.); void _fastcall TForm1:Image1Click(TObject *Sender)#include #pragma hdrstop#include#includedb.cpp#include Unit1.h#include Unit5.h#pragma resource *.dfmTForm5 *Form5;_fastcall TForm5:TForm5(TComponent *Owner): TForm(Owner)void _fastcall TForm5:FormCreate(TObject *Sender) Table1-Open(); Label9-Caption=首记录 ; Label10-Caption=上记录 ; Label11-Caption=下记录 ; Label12-Caption=尾记录 ; Label13-Caption=新增 ; Label14-Caption=删除 ; Label15-Caption=编辑 ; Label16-Caption=完成 ; Label17-Caption=放弃 ; Label18-Caption=撤销 ; DBEdit1-Text=; DBEdit2-Text=; DBEdit3-Text=; DBEdit4-Text=; DBEdit5-Text=; DBEdit6-Text=; DBEdit7-Text=;void _fastcall TForm5:Button1Click(TObject *Sender) Table1-Filtered=false; if(Edit1-Text.Length()=0) Table1-Filter=; else Table1-Filter=学号=+Edit1-Text+*; Table1-Filtered=true;void _fastcall TForm5:Button2Click(TObject *Sender) Table1-Filtered=false; if(Edit2-Text.Length()=0) Table1-Filter=; else Table1-Filter=课程编号=+Edit2-Text+; Table1-Filtered=true;void _fastcall TForm5:Button3Click(TObject *Sender) String str; Query1-Close(); Query1-SQL-Add(Select Count(distinct 学号) as temp from 成绩表 where 成绩Open() ; str=Query1-FieldByName(temp)-AsString; Edit3-Text=str;void _fastcall TForm5:Button4Click(TObject *Sender) String str; Query1-SQL-Clear(); Query1-SQL-Add(Select sum(成绩) as temp from 成绩表 ); Query1-Open() ; str=Query1-FieldByName(temp)-AsString; Edit4-Text=str;void _fastcall TForm5:Button5Click(TObject *Sender) String str; Query1-SQL-Clear(); Query1-SQL-Add(Select avg(成绩) as temp from 成绩表 ); Query1-Open() ; str=Query1-FieldByName(temp)-AsString; Edit5-Text=str;void _fastcall TForm5:Button6Click(TObject *Sender) String str; Query1-SQL-Clear(); Query1-SQL-Add(Select max(成绩) as temp from 成绩表 where 课程编号=1 ); Query1-Open() ; str=Query1-FieldByName(temp)-AsString; Edit6-Text=str;void _fastcall TForm5:Button8Click(TObject *Sender) String str; Query1-SQL-Clear(); Query1-SQL-Add(Select avg(成绩) as temp from 成绩表 where 课程编号=2 ); Query1-Open() ; str=Query1-FieldByName(temp)-AsString; Edit8-Text=str;void _fastcall TForm5:Button7Click(TObject *Sender) String str; Query1-SQL-Clear(); Query1-SQL-Add(Select avg(成绩) as temp from 成绩表 where 课程编号=1 ); Query1-Open() ; str=Query1-FieldByName(temp)-AsString; Edit7-Text=str;#include #pragma hdrstop#include Unit4.h#pragma resource *.dfmTForm4 *Form4;_fastcall TForm4:TForm4(TComponent *Owner): TForm(Owner)void _fastcall TForm4:FormCreate(TObject *Sender)Table1-Open(); Label8-Caption=首记录 ; Label9-Caption=上记录 ; Label10-Caption=下记录 ; Label11-Caption=尾记录 ; Label12-Caption=新增 ; Label13-Caption=删除 ; Label14-Caption=编辑 ; Label15-Caption=完成 ; Label16-Caption=放弃 ; Label18-Caption=撤销 ; DBEdit1-Text=; DBEdit2-Text=; DBEdit3-Text=; DBEdit4-Text=; DBEdit5-Text=; DBEdit6-Text=;void _fastcall TForm4:Button1Click(TObject *Sender) Table1-Filtered=false; if(Edit1-Text.Length()=0) Table1-Filter=; else Table1-Filter=班级简称=+Edit1-Text+*; Table1-Filtered=true;void _fastcall TForm4:Button2Click(TObject *Sender) Table1-Filtered=false; if(Edit2-Text.Length()=0) Table1-Filter=; else Table1-Filter=班级编号=+Edit2-Text+; Table1-Filtered=true;#include #pragma hdrstop#include Unit3.h#pragma resource *.dfmTForm3 *Form3;_fastcall TForm3:TForm3(TComponent *Owner): TForm(Owner)void _fastcall TForm3:FormCreate(TObject *Sender)Table1-Open(); Label10-Caption=首记录 ; Label11-Caption=上记录 ; Label12-Caption=下记录 ; Label13-Caption=尾记录 ; Label14-Caption=新增 ; Label15-Caption=删除 ; Label16-Caption=编辑 ; Label17-Caption=完成 ; Label18-Caption=放弃 ; Label19-Caption=撤销 ; DBEdit1-Text=; DBEdit2-Text=; DBEdit3-Text=; DBEdit4-Text=; DBEdit5-Text=; DBEdit6-Text=; DBEdit7-Text=; DBEdit8-Text=;void _fastcall TForm3:Button1Click(

温馨提示

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

评论

0/150

提交评论