数据库学生管理系统

发布时间:   来源:文档文库   
字号:
数据库原理实训
――学生管理系统
班级:
成员:指导老师:开发时间:
一.需求分析
1、编写目的为了明确软件需求、安排项目规划与进度、组织软件开发与测试,
撰写本文档。本文档供项目经理、设计人员、开发人员参考。
2、项目背景使用计算机对学生信息进行管理,拥有手工管理所无法比拟的优点。
例如:检索迅速、查找方便、可靠性高、存储量大、成本低等。这些优点能够极大地提高学生信息的效率,也是管理科学化、正规化的重要支撑。
学生信息管理系统能够方便地查询和变更学生的基本数据(包括学籍数据和成绩数据),节省大量工作时间,有效地提高学生信息管理的效率。而查询信息的直观显示将有助于系统的用户一目了然地掌握学生的情况。

3、开发计划分阶段完成任务:第一阶段实现快速界面原型,并进行相应的补充修
改以满足客户的需求;第二阶段完成界面的进一步设计求精,形成最终的设计样式;第三阶段:完成数据库的开发;第四阶段:整合管理系统并进行各项测试改正出现的各种问题。
4、实现的内容
学生信息管理系统属于应用系统。学生信息管理系统的使用者是教务处管理员和学生。它的功能就是教师通过输入用户名和口令登陆到教学管理数据库中,从而实现对各门选课人数限制,对学生信息的维护限制。每个新学年的开始,都有新生的进入,和毕业生离校,每个学期学生的课程会发生改变以及有些学生因为不同的原因离校或者有新来的转校生。系统要对这些情况做相应的改变。离校的将学生信息删除,新来的要将学生信息存入系统,课程改变了,要将其修改。教务处访问该系统将学生信息填入、删除或修改,学生可以在系统上查询本人信息。该系统是一个集成多功能的信息管理系统,有教师资料管理、学生管理、班级管理、院系管理、课程管理和成绩管理功能模块。本系统将大大提高学生信息的管理效率,带来数据共享、网络查询和网络管理等便利,实现学生信息管理的数字化和智能化。
教师管理模块:本模块主要对教师的资料信息进行查询,删除,修改和添加
学生管理模块:本模块主要对学生资料信息进行相应的查询,删除,修改和加。添加了学生所在院系资料与学生所在专业资料,同时可对院系资料与专业资料进行相应的添加,修改,查询。
课程管理模块:本模块主要对课程资料进行管理,对其进行查询,添加,修改和删除。又详细划分了课程类别资料,对其进行如上操作。
成绩管理模块:本模块对学生成绩进行查询操作,如发现成绩有输入错误,可对其进行相应的修改,还可对学生的成绩进行录入
班级管理模块:本模块班级资料信息进行管理,对其进行相应的查询,修改,除和添加。
根据实际问题,本系统要实现以下功能:
1)用户认证。本系统用户有教务处管理员和学生,所以用户必须通过认证才能登入系统。系统能够自动识别用户类型,能够给不同的用户分配不同的权限。教务处管理员用户成功登入后可以进入操作界面,学生成功登入后即可进入学生本人信息界面。2)数据维护。可以对学生的成绩和课程等数据进行维护。
3)信息管理。允许教务处管理员修改学生信息,允许学生在任何时候登入查询本人信息。
如图所示:


概念结构设计
概念结构所涉及的数据是独立于硬件和软件系统的,它的目标是以用户可以理解的形式来表达信息的流程,从而可以和不熟悉计算机的用户交换意见。它要充分地反映实体之间的关系,成为反映现实的概念数据模型。这是各种基本数据模型的共同基础,易于向关系模型转变。
通过需求分析得到的数据项和数据结构,可以设计出各种实体以及它们之间的关系图,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。
根据上面的设计规划处的实体有:学院实体,专业实体,年级实体,班级实体,学生实体、课程实体,教师实体。
1)一个学院有多个专业,一个专业只能属于一个学院,因此学院与专业

之间具有一对多关系。
2—个专业有多个年级,一个年级有多个专业,因此学院与专业之间具多对多关系。
3—个专业有多个班级,一个班级只能属于一个专业,因此专业与班级间具有一对多关系。
4一个班级有多个学生,一个学生只能属于一个班级,因此班级与学生间具有一对多关系。
5—个学生可以选修多门课程,一门课程可以被多个学生选修,因此学与课程之间是多对多的联系。用成绩来表示学生和课程之间联系的属性。6—个学院有多个教师,一个教师只能属于一个学院,因此学院与教师有一对多的联系。
7—个教师可以任教多门课程,一门课程可以被多个教师任教,因此课与教师具有多对多的联系。学生信息系统ER图如图所示:

学院
专业
m
专业一年级
年级
学院一教师
年级一班级
n
教师
班级
m
1
教师一课程
班级一学生
P
n
m
课程
学生一课程
学生



三、逻辑结构设计
此阶段的任务是把概念结构转换成SQLServer2005数据库管理系统能处理的数据模型。在进行这种转换时,是把实体类型和联系类型分别转换成一个个关系模式,这中间存在着多种可能组合,必须从中选择一个性能好的关系模式集作为关系数据库的模式。
学生管理系统的关系模式集如下:
1学生信息表(学生学号,学生姓名,性别,年龄,学院名称,专业名称,年级,
班级名称,电话),主键为学生学号。
2课程数据表(课程号,课程名称,学院名称,学分),主键为课程号。3学生选课表(学号,课程号,老师工号,成绩),主键为学号,课程号。4教师数据表(老师工号,老师姓名,性别,年龄,学院名称,教研室名称,电
话),主键为老师工号。5学院数据表(学院名称,学员编号),主键为学院名称。6专业数据表(专业名称,专业编号,学院名称),主键为专业名称。7年级一班级数据表(年级,学院名称,专业名称,班级名称),主键为年级,班级名称。8教师教研室表(教研室名称,教研室编号,学院名称),主键为教研室名称。9教师任课数据表(课程号,课程名称,教师工号),主键为课程号,教师工号。
四、物理结构设计
物理结构设计是指对给定的基本数据模型选择一个最适合应用环境的物理结构的过程。数据库的物理结构主要是指数据库的存储记录格式、存储记录安排和存取方法。
确定数据库的存储结构,主要是指确定数据的存放位置和存储结构,包括确定关系、索引、系统存储参数的配置,确定数据库的存储方法。
1.数据结构:设置每一张数据表的属性的属性名,类型和宽度每张数据表的属性的属性名,类型和宽度如表所示。
学生信息表student
名称学号姓名性别年龄学院名称专业名称年级班级名称

字段
sno
studentnamesexsagecollegenamemajornamegradeclasstel
类型
charvarcharchar

长度
10102

是否为空

备注主键

smallint

varcharvarchar

20

外键外键外键外键

20

intcharvarchar
1016

电话
课程数据表course

字段
】田千口i=r.程号课程名称学院名称

别名
enocoursenamecollegenameCredit
类型
charvareharVarcharint

长度
102020

是否为空

备注主键外键

学分
学生选课表selectcourse
字段
学号
】田千口i=r.程号工号

别名
snoCno
类型
charchar
长度
1010

是否为空
备注主键外码主键(外码)外键

TeacherIDScore
varcharint

10
成绩

教师数据表teachers
名称工号姓名性别年龄学院名称教研室名称

字段
teacherIDteachernamesexsagecollegenamedepartmenttel
类型
varcharvarcharcharsmallintvarcharvarcharvarchar

长度
10102

是否为空

备注主键

202016

外键外键


电话

学院数据表college
名称学院名称

字段
collegenamecollegeID
类型
varcharint

长度
20
是否为空

备注主键
学院编号
专业数据表major
名称专业名称专业编号
学院名称
字段
majornamemajorIDcoolegename
类型
varchar

长度
20
是否为空

备注主键外键
intvarchar
20

班级数据表class
名称年级学院名称专业名称
班级名称
字段
gradecollegenamemajornameclass
类型
intvarcharvarcharchar

长度是否为空
备注外键外键外键主键
202010

年级数据表grade
名称年级学院名称

字段
gradecollegenamemajorname
类型
intvarcharvarchar

长度是否为空
备注主键外键外键
2020
专业名称
教师教研室表depart
名称教研室名称教研至编号

字段
departmentdepartIDcollegename
类型
varchar

长度
20

是否为空

备注主键外键
intvarchar
20
学院名称
教师任课数据表teachercourse
名称
】田千口i=r.程号课程名称工号
字段
eno
类型
char
长度
10
是否为空

备注主键(外码)
coursenameteacherlD
varcharvarchar
2010
主键(外码)
2.设置参照属性
1学生信息表(学生学号,学生姓名,性别,年龄,学院名称,专业名称,年级,班
级名称,电话)中的学院名称,专业名称,年级,班级名称分别参照学院数据表中学院名称,专业数据表中的专业名称,年级一班级数据表中的年级,班级名称。
2课程数据表(课程号,课程名称,学院名称,学分)中的学院名称参照学院数据表
中学院名称。
3学生选课表(学号,课程号,老师工号,成绩)中的学号,课程号,老师工号分别
参照学生信息表中的学号,课程数据表中的课程号,教师数据表中的老师工号。4教师数据表(老师工号,老师姓名,性别,年龄,学院名称,教研室名称,电
话)中的学院名称,教研室名称分别参照学院数据表中的学院名称,教师教研室表中的教研室名称。
5专业数据表(专业名称,专业编号,学院名称)中的学院名称参照学院数据表中
学院名称。
6年级一班级数据表(年级,学院名称,专业名称,班级名称)中的学院名称,专
业名称分别参照学院数据表中的学院名称,专业数据表中的专业名称。
7教师教研室表(教研室名称,教研室编号,学院名称)中的学院名称参照学院数
据表中学院名称。
8教师任课数据表(课程号,课程名称,教师工号)中的课程号,工号分别参照课
程数据表中的课程号,教师数据表中的教师工号。
3.索引
在成绩上创建索引scorendex
在学生年龄上创建索引student_sage_index在老师成绩上创建索引teachers_sage_index

4.设置视图为学生信息创建视图student_view创建各院系学生的视图
college_major_s创建各班级视图class_s为各学院课程创建视图college_course为各班的学生选课成绩创建视图selectcourse_s为各班学生的学号及平均成绩创建视图avg_s为老师信息创建视图teachers_view为教研室创建视图depart_view为老师任课创建视图teachercourse_view为各学院所拥有的专业创建视图c_major_view
5.设置存储过程
a创建一个存储过程,输入学号可以查询该学生的各科成绩
b.创建一个存储过程,输入课程名显示该门课程的平均成绩和选课人次
c.创建一个存储过程,输入学院名称显示该学院的代号,学院名称以及包含的
各个专业的代号和名称,并统计该学院包含专业的数目
d.创建一个存储过程,输入学院名称专业名称,年级,班级显示该班级所有学生的信息,并统计该班的人数
e.创建一个存储过程,输入老师姓名,显示该老师所教的所有课程编号,课程名称,并显示这位老师的ID号,所属院系,教研室名称6.设置触发器
(1要求学生选课课程表中的课程号被删除时,学生选课成绩表中的对应的课程号的信息也被删除。
(2要求学生信息表中的学好被修改时,学生选课成绩表、学生公共课成绩表中的学号自动修改。
(3触发器ttrigger:要求教师信息表中老师的职工号修改,则教师选课信息的职工号也会被修改
触发器ttrigger:要求若输入的学号或者课程号与数据库中数据不符则不插入选课成
绩表中
(5触发器insert_student:如果学生表中有新的学生插入,则触发该触发器,使得该学生信息插入
(6触发器insert_classes:如果有新的班级被添加,则触发该触发器使得该班级信息添加进来
(7触发器insert_college:如果有新的学院被添加,则触发该触发器使得该学院信息添加进来
(8触发器insert_course:如果有新的课程被添加,则触发该触发器使得该课程相关信息添加进来
(9触发器insert_depart:如果有新的教师研究室被添加,则触发该触发器使得该教师研究室的相关信息添加进来(10触发器insert_major:如果有新的专业被添加,则触发该触发器使得该专业的相关信息被添加进来
(11
触发器
insert_selectcourse:insert_teachercourse:
如果有某位同学新选的课程需要添加进如果有某位教师的选课信息要添加,

来,则触发该触发器使得该学生选择的这门课程的相关信息被添加进来
(12
触发器
则触发该触发
器使得相关信息被添加进来
(13触发器insert_teachers:如果有新老师要被添加,则触发该触发器使得该教师的相关信息被添加进来
五、实施阶段现在我们可以根据物理设计的结果产生一个具体的数据库,并把原始数据
输入数据库中。利用SQLServer2005数据库系统中的SQL查询分析器来实现。下

给出具体的实现过程。
1创建学生信息管理数据库
createdatabasestudentmanagesystemonprimary
(name='studentmanagement'
,
,
filename='D:\DATA\studentmanagesystem.mdf'size=3,
maxsize=unlimited,filegrowth=1logon
(name='studentmanagesystem_log'
,
filename='D:\DATA\studentmanagesystem_log.ldf'size=1,
maxsize=2,filegrowth=10%
,
2创建数据表文件学院数据表college
CREATETABLE
(collegenamecollegeID


college

varchar(20primaryintnotnull
keynotnull


专业数据表major
CREATETABLEmajor
(majornamevarchar(20primarykeynotnull,majorIDintnotnull,collegenamevarchar(20notnull,
FOREIGNKEY(collegenameREFERENCEScollege(collegename,;


年级数据表grades
CREATETABLEgrades

(gradeintnotnullprimary
varchar(20notKEY(collegenameKEY(majorname

keynull,

collegenamemajornameFOREIGNFOREIGN
varchar(20notnull,
REFERENCEScollege(collegename
(majorname
REFERENCESmajor

,

班级数据表classes
CREATETABLEclasses
(classchar(10notnullprimarykey,gradeintnotnull,
collegenamevarchar(20notnull,majornamevarchar(20notnull,FOREIGNKEY(collegenameREFERENCEScollege(collegename,FOREIGNKEY(majornameREFERENCESmajor(majorname,FOREIGNKEY(gradeREFERENCESgrades(grade

学生信息表student
createtablestudent
(snochar(10primarykeynotnull,
varchar(10notnull,studentnamesexchar(2,
sagesmallint,collegenamevarchar(20,majornamevarchar(20,gradeint,classchar(10,telvarchar(16,
foreignkey(collegenamereferencesforeignforeignforeign

college(collegename,
key(majornamereferenceskey(gradereferenceskey(classreferences
major(majorname,grades(grade,
classes(class
课程数据表course

createtablecourse
(cnochar(10primarykeynotnull,coursenamevarchar(20notnull,collegenamevarchar(20,
Creditintnotnull,
foreignkey(collegenamereferences

college(collegename
教师教研室表depart
CREATETABLEdepart
(departmentvarchar(20notnullprimarykey,departIDintnotnull,collegenamevarchar(20,
FOREIGNKEY(collegenameREFERENCEScollege(collegename,;
教师数据表teachers
createtableteachers
varchar(10primarykeynotnull,(teacherI
D
teachernamevarchar(10notnull,sexchar(2,
sagesmallint>


collegenamedepartmenttelvarcharforeignkey
foreignkey

varchar(20,varchar(20,

(16,
(collegenamereferences(departmentreferences
college(collegename,depart(department


学生选课及成绩表selectcourse
createtableselectcourse(snochar(10notnull,
Cnochar(10notnull,teacherIDvarchar(10,scoreint,primaryforeignforeign



key(sn,cno,
o
key(snreferences
o
key(cnreferences
o

student(sno,course(cno,

foreignkey(teacherIDreferences

teachers(teacherID,
教师任课数据表teachercourse
CREATETABLEteachercourse(cnochar(10notnull,





coursename
teacherIDPRIMARYforeignkeyforeignkey
;
varchar(20notnull,


varchar(10,
KEY(cno,,
teacherID
(cnoreferencescourse(cno,(teacherID
references
teachers(teacherID
3创建索引在成绩上创建索引score_indexcreatenonclusteredindexscore_indexon
selectcourse(scoredesc在学生年龄上创建索引student_sage_indexcreate
nonclusteredindexstudent_sage_indexonstudent(sagedesc在老师成绩上创建索引
teachers_sage_indexcreatenonclusteredindexteachers_sage_indexonteachers(sage
desc
4创建视图为学生信息创建视图student_viewcreateviewstudent_viewasselect*fromstudent创建各院系学生的视图college_major_screateviewcollege_major_sas
selectsno,studentname,collegename,majorname,telfromstudent
groupbycollegename,majorname,sno,studentname,tel创建各班级视图class_screateviewclass_sas
selectsno,studentname,grade,class,telfromstudentgroupbycollegename,majorname,grade,class,sno,studentname
,tel

为各学院课程创建视图college_course
createas
selectfromcourse
*
viewcollege_course
groupbycollegename,cno,coursename,credit
为各班的学生选课成绩创建视图selectcourse_s
createasselect

viewselectcourse_s(sno,cno,teacherID,scoreselectcourse.sno,
fromselectcourse,class_s
whereselectcourse.sno=class_s.sno
为各班学生的学号及平均成绩创建视图avg_s
createas

viewavg_s(sno,grade,class,gavg
selectselectcourse.sno,grade,class,avg(score
fromselectcourse,class_swhere

selectcourse.sno=class_s.snobygrade,class,selectcourse.sno
group
为老师信息创建视图teachers_view
createas
select
fromteachers
*
viewteachers_view
groupbycollegename,department,teacherID,teachername,sex,sage,tel
为教研室创建视图depart_view
createas
select
fromdepart
groupbycollegename,departID,department
*
viewdepart_view

为老师任课创建视图teachercourse_view
createas

viewteachercourse_view
select
fromteachercourse
*
groupbyteacherID,cno,coursename为各学院所拥有的专业创建视图c_major_viewcreateviewc_major_view(collegename,collegeID,majorname,majorIDasCIO
collegeID,college.collegename,majorID,majorname
selectfromcollege,major
wheremajor.collegename=college.collegename

5创建存储过程
(1创建一个存储过程,输入学号可以查询该学生的各科成绩
createprocscoreproc@snochar(10asbegin
selectstudent.sno,studentname,coursename,score,creditfromstudent,course,selectcourse
wherestudent.sno=selectcourse.snoandcourse.cno=selectcourse.cnoandstudent.
sno=@sno
endgo用户请输入:execscoreproc'
输入您需要查询的学号
'
(2创建一个存储过程,输入课程名显示该门课程的平均成绩和选课人次
createprocavgscoreproc
@cnamechar(20,@avgintoutput,@countsmallintoutputasbegin
select@avg=avg(grade,@count=count(*fromcourse,selectcourse
wherecourse.cno=selectcourse.cnoandcoursename=@cname
endgo用户请输入:declare@aint,@bsmallintexecavgscoreproc'output,@boutputselect@aas
平均成绩
输入您要查找的课程名
',@a
,@bas
选课人次

(3创建一个存储过程,输入学院名称显示该学院的代号,学院名称以及包含的各个专
业的代号和名称,并统计该学院包含专业的数目
createprocmajorproc
@collegenamechar(20,@countmajorintoutputasbegin
selectcollege.collegeID,collegename,majorID,majornamefromcollege,majorwherecollege.collegename=major.collegenameandcollege.collegename=@collegenameselect@countmajor=count(*frommajor
wherecollegename=@collegenameendgo
用户请输入:
declare@aint
execmajorproc'输入您要查找寻的学院名字',@aoutputselect@aas
专业数目

(4创建一个存储过程,输入学院名称,专业名称,年级,班级显示该班级所有学生
的信息,并统计该班的人数createprocclassproc
@collegenamechar(20,@majornamechar(20,@gradeint,@classchar(10,@numintoutputasbegin

select*fromstudentwhere
collegename
=@collegenameand

majorname



=@majorname

and
grade=@gradeandselect
class=@class
@num=count(*fromstudent
=@collegenameclass=@class
and

wherecollegenamegrade=@gradeandendgo
majorname=@majorname


and
用户请输入:
declar
@xint
'输入学院名称,专业名称,年级,',@xoutput

班级人数select@xas
execclassprco
(5创建一个存储过程,输入老师姓名,显示该老师所教的所有课程编号,课程
称,并显示这位老师的ID号,所属院系,教研室名称
createprocteacherproc
@teacherchar(10,@IDchar(10output,@collegechar(10outchar,@departmentchar(20outputasbegin
selectcno,coursenamefromteachers,teachercourse
whereteachers.teacherID=teachercourseteachername=@teacher
select@ID=teacherID,@college=collegename,@department=departmentfromteachers
whereteachername=@teacherendgo用户请输入:declare@xchar(10,@ychar(20,@zchar(10execteacherproc'@z
请输入您要查找的老师姓名
.teacherIDand
',@xoutput,@youtput,@zoutputselect@x,@y,
6创建触发器
⑴触发器ctrigger:要求学生选课课程表中的课程号被删除时,学生选课成绩表中的
对应的课程号的信息也被删除。
create

trigger

asbegin
ctrig

oncourseafterdelete





delete

SCwhere

cnoindeleted


(selectcnofromEnd
用户输入:delete

Cwhere
cno=(输入您要删除的课
程号
(2触发器strigger:要求学生信息表中的学号被修改时,学生选课成绩表、学生公共课成绩表中的学号自动修改。
createtriggerctrigonstudentafterupdateasbegin

updateselectcoursewheresnoin(select

set

snoin(selectsnofrominserted





snofromdeleted
end
用户输入:updatestudentsetsno='请输入您要修改的新学wheresno='请输入该学生的旧学号'
(3触发器ttrigger:要求教师信息表中老师的职工号修改,则教师选课信息的职工号也会被修改
createtriggerttrigonteachersafterupdate
as





beginupdate
teachercoursesetteacherIDin(selectteacherID
where
teacherIDin(
select
teacherID
fromdeleted
end
用户输入:
updateteacherssetteacherID='
请输入您要修改的新职工号
'whereteacherID='
输入原来的旧职工号
'frominserted






(4触发器ttrigger:要求若输入的学号或者课程号与数据库中数据不符则不插入选课成绩表中createtriggercheck_trigonselectcourseafterinsertasbegin
ifexists(
select*frominserted
wheresnonotin(selectsnofromsorcnonotin(selectcnofromcourserollbackendgo
用户输入:
insertselectcoursevalues('
输入学生的学号
','
输入学生选修的课程号
','
输入该门成绩
'
(5触发器insert_student:器,使得该学生信息插入
afterinsertasbegin
insertintostudentvalues
如果学生表中有新的学生插入,则触发该触发
createtriggerinsert_studentonstudent
('sno','studentname','sex','sage','collegename','majorname','grade','class','tel'End
(6触发器insert_classes:如果有新的班级被添加,则触发该触发器使得班级信息添加进来
createtriggerafterinsertasbegin
insert_classesonclasses
insertintoclassesvalues('class','grade','collegename','majorname'end
(
7
触发器
insert_college:
如果有新的学院被添加,则触发该触发器使得
oncollege
该学院信息添加进来createtrigger
insert_collegeafterinsertasbegininsertintocollegevalues('collegename','collegeID'end
(8触发器insert_course:如果有新的课程被添加,则触发该触发器使得该课程相
关信息添加进来
createtriggerinsert_courseoncourseafterinsertasbegin
insertintocoursevalues
('cno','coursename','collegename','credit'

end
(9触发器insert_depart:
insert_depart




如果有新的教师研究室被添加,则触发该触发
ondepart
器使得该教师研究室的相关信息添加进来
create

trigge
afterras

begin

insertend
intodepartvalues
,'departID','collegename'
('department'
(10触发器insert_major:该专业的相关信息被添加进来
createtriggerinsert_majoronmajorafterinsertasbegin
insertintomajorvalues
如果有新的专业被添加,则触发该触发器使得
('majorname','majorID','collegename'end

(11触发器insert_selectcourse:如果有某位同学新选的课程需要添加进来,则
触发该触发器使得该学生选择的这门课程的相关信息被添加进来
create

trigge

insert_selectcourseonselectcourse

r
afterinsertas


begin
insertintoselectcourse('sno
,'cno','teacherID'
'end


values,'score'

77
(12触发器insert_teachercourse:如果有某位教师的选课信息要添加,则触发
该触发器使得相关信息被添加进来
createtriggerinsert_teachercourseonteachercourseafterinsertasbegin
insertintoteachercoursevalues('cno','coursename','teacherID'end
触发器进来
(13

insert_teachers:

如果有新老师要被添加,则触发该触发器使得该教师的相关信息被添加
insert_teachers
onteachers
createtrigge
r


afterinsert





as





begin



insertl'end
intoteachersvalues
'sex','age','collegename'
,'department'
,'te
('teacherID','teachername',

本文来源:https://www.2haoxitong.net/k/doc/3f856ed1bcd5b9f3f90f76c66137ee06eef94e21.html

《数据库学生管理系统.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式