学生信息管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:效率低、保密性差,人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着来越重要的作用。
作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条件。
二、需求分析
学生信息管理系统是各大中专院校不可缺少的一部分,是一个VF数据库开发应用程序,它主要包括用户登录、学生档案查询、学生档案管理以及学生成绩管理、学生成绩查询、系统用户管理等几个模块,因而该系统具有较强的实用性,进一步提高了办学效益和现代化水平,帮助广大教师提高工作效率,实现学生信息管理工作流程的系统化、规范化和自动化。
1. 对功能的规定
针对学生信息的管理,本系统要实现以下功能: (1)信息更新
拥有对系统中的学生档案、成绩及用户密码等信息增加、修改、删除、查
询等操作的功能。
(2)查询管理
拥有对系统中学生档案、成绩等信息进行查询的功能。可以按照学生学号、姓名等条件对学生具体信息进行模糊/精确查询。
(3)选课系统
拥有查询选课信息及学生进行学科的功能,可按照课程名进行查找课程信息。
(4)用户管理
拥有密码修改、用户管理的功能。密码修改供当前登录用户修改自己的密码,修改时需要对新密码提供二次输入校对。用户管理提供用户的添加,修改,删除。用户名使用的是学生的学号及管理人员的编号。
2. 对性能的规定
为保证本系统能够长期、安全、稳定、可靠、高效的运行,系统须满足以下性能要求:
(1)实用性:本系统应能够系统,便捷,快速的实现对学生信息的管理,从而保障学校的高效运营。
(2)操作简单:本系统应适用于不同计算机水平的使用者,系统的操作尽可能简单易行。
(3)技术先进:产品的系统设计和开发应紧跟计算机的发展潮流,产用目前较先进的设计思想,利用最先进的开发技术和开发工具。
(4)安装使用简便:服务器端安装简洁明了,客户机无需再装任何软件,可直接使用。
(5)适应性和可扩充性:应能广泛使用与不同的教育机构,开发过程中,应充分考虑可扩充问题。
3. 数据管理能力的要求
为保证企业使用本系统中数据的完整性,须满足以下数据管理要求: (1)尽可能减少故障的发生,保障好数据的备份,数据的备份采用数据库服务器的备份功能实现。
(2)当系统发生故障时,当重新启动的时候,系统能够正常运行,若有数据遗失,能够通过备份来还原。
(3)要保证数据的安全性,只有管理人员才能进入系统进行相应的操作。 (4)发现有错误的数据,及时地进行修改。
三、系统总体分析与设计
1. 解决方案
为学校中的学生分别分配一个用户号和密码及相应角色,学生可用该用户名和密码登录进入学生信息管理系统。不同的角色对应有不同的使用权限:学生可以进入系统可以对各类信息进行查询以及对自己的登录密码进行修改;管理人员除拥有学生所有权限外,还可对学生信息及用户进行添加,修改,删除的操作。
2.系统功能模块设计
学生登录有五个模块:主菜单模块,登录模块,密码修改模块,查询管理模块,退出系统模块。具体的功能结构图如下图所示:
管理人员登录有六个模块:主菜单模块,登录模块,档案管理模块,成绩管理模块,用户管理模块,退出系统模块。具体的功能结构图如下图所示:
查询管理 学生信息管理系统 成绩查询 密码修改 档案查询 学生登录 选课系统 退出系统
学生档案管理 学生档案查询 学生档案更新 学生信息管理系统
本系统采用Visualfoxpro技术,以及SQL Server数据管理技术进行主要的
退出系统 成绩管理 添加用户 用户管理 删除用户 密码修改 选课情况 管理人员登录 设计,数据库用SQL Server进行设计和管理。
四、数据库设计
(1) dl(登录信息表)
登录信息表主要存放登录信息,具体字段信息如表4-13。
表4-13 登录信息表
字段 mz mm qx 名称 名称 密码 权限 类型 C C N 长度 10 10 2 索引 ↑ (2) xs(学生信息表)
学生信息表主要存放学生的基本信息,具体字段信息如表3-1。
表3-1 学生信息表
字段 xh xm bjbh zy jtzz xb sm csrq dh zp zxf
名称 学号 姓名 班级编号 专业 家庭住址 性别 说明 出生日期 电话号码 相片 总学分 类型 C C C C C L M D N G N 长度 10 6 6 20 15 1 4 8 11 4 5.1 索引 ↑ (3) bj(班级表)
班级表主要存放班级称号信息,被学生信息表所调用,具体字段信息如表4-9。
表4-9 班级表
字段 bjbh bjmc
名称 班级编号 班级名称 类型 C C 长度 6 20 索引 ↑ ↑ (4) kc(课程信息表)
课程信息表主要存放课程相关信息,具体字段信息如表4-11。
表4-11 课程信息表
字段 kch kcm xf sksj xkrs 名称 课程号 课程名 学分 上课时间 选课人数 类型 C C N N N 长度 6 16 2 4 4 索引 ↑ ↑ (5) Yxkc(已选课程信息表)
已选课程信息表主要存放学生已选课程相关信息,具体字段信息如表4-12。
表4-12 课程信息表
字段 kch kcm xf sksj 名称 课程号 课程名 学分 上课时间 类型 C C N N 长度 6 16 2 4 索引 ↑ ↑ (6) cj(成绩信息表)
成绩信息表主要存放学生成绩信息,具体字段信息见表4-13。
表4-13 加班记录表
字段 bjbh xh xm xq kch kcm cj bkcj 名称 班级编号 学号 姓名 学期 课程号 课程名 成绩 补考成绩 类型 C C C N C C N N 长度 7 10 10 1 6 15 3 3 索引 ↑ ↑ ↑
五、系统的实现
系统设计中的界面设计不同于一般的平面设计,拥有自身的设计特征。网页设计应时刻围绕“信息传达”这一主题来进行。界面力求清晰、准确、有力地传达信息。
本系统主要采用的的界面模板主要包括:登录界面、主菜单界面、档案查询界面、档案更新界面、成绩管理界面、成绩查询界面、用户管理界面、密码修改界面。
(1)登录界面
运行本系统后,出现如图4-1的登录界面,输入用户名和密码,选择用户角色,点击“登录”按钮,如果输入的信息不正确,会有“用户名或密码错误,请检查!”的错误提醒 ,如果三次登陆错误,会有“不能使用本系统!”的错误提醒,即每次登录,最多允许有三次登录错误的机会。当所有信息都输入正确后,可以登录到主界面,不用的用户角色进入的主界面中的功能菜单不同。登录界面允许效果图如图4-1。
4-1 登录界面
“登录”按钮的click事件添加如下的代码: if (N>2)
=messagebox(\"登录信息三次输入错误,不能使用本系统\信息提示\") thisform.release
return &&退出 ,不执行下面语句 endif
set order to tag mz
seek thisform.text1.value &&定位数据表中的用户名 if (thisform.text2.value=dl.mm);
and (ThisForm.Optiongroup1.value=dl.qx) &&检查密码和权限是否正确 thisform.release
do form 主界面 with dl.qx &&打开主界面,并传达权限值 else
=messagebox(\"输入错误,请重新输入!\信息提示\") thisform.text1.setfocus &&将光标移到用户名框 N=N+1 &&错误次数N+1 endif
“退出”按钮的click事件添加如下的代码:
a=messagebox(\"您确定要退出学生信息管理系统吗?\学生信息管理系统\") if a=6
thisform.release endif
clear events
(2). 成绩查询界面
学生用户登录后,可在主菜单上点击“查询管理”下的“成绩查询”即可打开成绩查询界面查询自己的成绩。成绩查询界面如图4-2
图4-2 成绩查询界面
“查询”按钮的click事件添加如下的代码: select cj use cj
set order to xq
seek thisform.combo1.value
if allt(thisform.combo1.value)==\"\" go top
messagebox(\"请输入学期!\提示\") thisform.grid1.recordsource='cj' else
a=val(thisform.combo1.value) do case case a=1
thisform.grid1.recordsource='cj1.qpr' thisform.grid1.refresh case a=2
thisform.grid1.recordsource='cj2.qpr' thisform.grid1.refresh endcase endif
thisform.combo1.value=\"\" Thisform.refresh
(3).档案界面
学生登录后可在主菜单上点击“查询管理”下的档案查询即可打开档案界面查看学生基本情况。档案界面如图4-3。
图4-3档案界面
(4)选课系统界面
学生登录后在主菜单上点击“选课系统”,即可进入到如下图4-4选课系统界面,在界面中学生可进行选课操作。选课系统界面如图4-4
图4-4选课系统界面
“查询”按钮的click事件添加如下的代码: thisform.grdkc.recordsource=\"\" select kc use kc
set order to kcm
seek thisform.text1.value
if kc.kcm!=alltrim(thisform.text1.value) go top
messagebox(\"课程名不存在!\信息窗口\") thisform.grdkc.recordsource=\"kc\" else
thisform.grdkc.recordsource=\"kc\" thisform.grdkc.refresh
endif
thisform.text1.value=\"\"
“选课”按钮的click事件添加如下的代码: thisform.grdkc.recordsource=\"\" thisform.grdyxkc.recordsource=\"\" select yxkc use yxkc
set order to kch
seek thisform.text4.value
if yxkc.kch=alltrim(thisform.text4.value) messagebox(\"该课程已选!\信息窗口\") go top
thisform.grdkc.recordsource=\"kc\" thisform.grdyxkc.recordsource=\"yxkc\" thisform.grdkc.refresh thisform.grdyxkc.refresh else
select kc use kc
copy to aa for kc.kch=alltrim(thisform.text4.value) kch,kcm,xf,sksj select yxkc use yxkc
append from aa fields kch,kcm,xf,sksj thisform.grdkc.recordsource=\"kc\" thisform.grdyxkc.recordsource=\"yxkc\" go top
thisform.grdkc.refresh thisform.grdyxkc.refresh Endif
“退选”按钮的click事件添加如下的代码: ThisForm.grdyxkc.recordsource=\"\" select yxkc use yxkc
fields
a=messagebox(\"确定退选当前课程?\删除记录\") if a==6
delete next 1 pack
ThisForm.grdyxkc.recordsource=\"yxkc\" ThisForm.grdyxkc.refresh else if a==7
ThisForm.grdyxkc.recordsource=\"yxkc\" ThisForm.grdyxkc.refresh endif endif
(5)密码修改界面
学生登录后在主菜单上点击“密码修改”,即可进入到如下图4-5密码修改界面,在界面中学生可重新设置密码。密码修改界面如图4-5
图4-5成绩管理界面
“输入确定”按钮的click事件添加如下的代码:
use dl
a=alltrim(thisform.text1.value) b=alltrim(thisform.text2.value) set order to mz seek a
if alltrim(dl.mz)<>a or len(a)=0
messagebox(\"用户名错误,请重新输入\信息提示\") c=messagebox(\"用户名错误,请重新输入\信息提示\") do case case c=6
thisform.text1.value='' thisform.text1.setfocus case c=7
messagebox(\"用户名错误,请重新输入\信息提示\") thisform.release endcase else
if alltrim(dl.mm)<>b or len(b)=0
d=messagebox(\"密码错误,请重新输入\信息提示\") do case case d=6
thisform.text2.value='' thisform.text2.setfocus case d=7
messagebox(\"密码错误,请重新输入\信息提示\") thisform.release endcase endif endif
thisform.text3.enabled=.t. thisform.text4.enabled=.t. thisform.command3.enabled=.t.
“修改确定”按钮的click事件添加如下的代码:
if
len(alltrim(thisform.text3.value)+alltrim(thisform.text4.value))=0 messagebox(\"请输入密码\信息提示\") else
if alltrim(thisform.text3.value)!=alltrim(thisform.text4.value) c=messagebox(\"密码输入有误,请重新输入\信息提示\") do case case c=6
thisform.text3.value='' thisform.text4.value='' thisform.text3.setfocus case c=7
messagebox(\"用户名错误,请重新输入\信息提示\") thisform.release endcase else
b=alltrim(thisform.text3.value) a=alltrim(thisform.text1.value) update dl set mm=b where mz=a
messagebox(\"密码修改成功\信息提示\") thisform.text1.value='' thisform.text2.value='' thisform.text3.value='' thisform.text4.value='' thisform.text3.enabled=.f. thisform.text4.enabled=.f. thisform.command3.enabled=.f. endif Endif
“取消”按钮的click事件添加如下的代码:
c=messagebox(\"是否取消本次操作?\信息提示\") if c=6
thisform.text1.value=''
thisform.text2.value='' thisform.text3.value='' thisform.text4.value='' thisform.text1.setfocus endif
(6)成绩管理界面
管理人员登录后在主菜单上点击“成绩管理查询”,即可进入到如下图4-6成绩管理界面,在界面中可对学生的成绩进行查询与编辑等。成绩管理界面如图4-6
图4-6 成绩管理界面
(7) 档案查询界面
管理人员登录后在主菜单上点击“档案管理”下的“档案查询”,即可进入到如下图4-7档案查询界面,在界面中可对学生的基本情况进行查询。档案查询界面如图4-7
图4-7档案查询界面
“查询”按钮的click事件添加如下的代码:
aa=thisform.pageframe1.page1.Text1.value sele xs
if allt(thisform.pageframe1.page1.text1.value)==\"\" messagebox(\"请输入学号或姓名!\提示\") thisform.pageframe1.page1.text1.setfocus else locate for xh=allt(thisform.pageframe1.page1.text1.value).or.xm=allt(thisform.pageframe1.page1.text1.value) if eof()
messagebox(\"本班级没有此人,请重新输入!\提示\") thisform.pageframe1.page1.text1.value=\"\" thisform.pageframe1.page1.text1.setfocus else
if xh=allt(thisform.pageframe1.page1.text1.value) set order to xh seek allt(aa) else
if xm=allt(thisform.pageframe1.page1.text1.value) locate for allt(aa)$ xm if not eof()
thisform.pageframe1.page1.chkxb.refresh thisform.refresh
thisform.pageframe1.page1.Command2.enabled=.t. else
thisform.pageframe1.page1.Command2.enabled=.f. endif endif endif endif endif
thisform.refresh
thisform.pageframe1.page1.text1.value='' thisform.pageframe1.page1.text1.setfocus
自定义方法“butt” lparameter L
ThisForm.Commandgroup1.buttons(1).enabled=L ThisForm.Commandgroup1.buttons(2).enabled=L ThisForm.Commandgroup1.buttons(3).enabled=not L ThisForm.Commandgroup1.buttons(4).enabled=not L
命令按钮组的“click”事件代码: n=this.value do case case n=1 go top
thisform.butt(.f.) case n=2 skip -1 if bof() go top
thisform.butt(.f.) endif
this.buttons(3).enabled=.t. this.buttons(4).enabled=.t. case n=3 skip 1 if eof() go bottom
thisform.butt(.t.) endif
this.buttons(1).enabled=.t. this.buttons(2).enabled=.t.
case n=4 go bottom
thisform.butt(.t.) endcase
if ThisForm.Pageframe1.activepage=2 ThisForm.Pageframe1.Page2.grdXs.setfocus else
thisform.refresh endif
thisform.refresh
(8)档案更新界面
管理人员登录后在主菜单上点击“档案管理”下的“档案更新”,即可进入到如下图4-8档案更新界面,在界面中可对学生的基本情况进行编辑等。但档案更新界面如图4-8
图4-8档案更新界面
自定义方法“disi” Lparameters L
ThisForm.Pageframe1.Page1.setall(\"enabled\ThisForm.Pageframe1.Page1.setall(\"enabled\up\")
ThisForm.Pageframe1.Page1.setall(\"enabled\ThisForm.Pageframe1.Page2.GrdXs.enabled=iif(L,.t.,.f.) ThisForm.CommandGroup1.enabled=iif(L,.f.,.t.)
“添加”按钮的“click”事件代码: if this.caption=\"添加\" this.caption=\"保存\"
This.parent.Command2.caption=\"取消\" thisform.disi(.t.) thisform.tag=str(recno()) append blank else
this.caption=\"添加\"
This.parent.Command2.caption=\"编辑\" thisform.disi(.f.) endif
ThisForm.refresh
“编辑”按钮的“click”事件代码: if this.caption=\"编辑\" this.caption=\"取消\"
This.parent.Command1.caption=\"保存\" thisform.disi(.t.) thisform.tag=str(recno()) else
this.caption=\"编辑\"
This.parent.Command1.caption=\"添加\" Tablerevert() thisform.disi(.f.) endif
go val(thisform.tag) ThisForm.refresh
“删除”按钮的“click”事件代码:
a=messagebox(\"是否确定删除当前记录?\删除记录\") if a=6 delete pack
thisform.refresh endif
(9)选课情况界面
管理人员登录后在主菜单上点击“选课情况”,即可进入到如下图4-9选课情况界面,在界面中可对学生的选课情况进行查询。选课情况界面如图4-9
图4-9选课情况界面
(10)用户管理界面
管理人员登录后在主菜单上点击“用户管理”,即可进入到如下图4-10用户管理界面,在界面中可对用户信息进行增删操作及修改密码。用户管理界面如图4-10
图4-10用户管理界面(1)
“输入确定”按钮的“click”事件代码: use dl
a=alltrim(thisform.pageframe1.page1.text1.value) b=alltrim(thisform.pageframe1.page1.text2.value) set order to mz seek a
if alltrim(dl.mz)<>a or len(a)=0
messagebox(\"用户名错误,请重新输入\信息提示\") c=messagebox(\"用户名错误,请重新输入\信息提示\") do case case c=6
thisform.pageframe1.page1.text1.value='' thisform.pageframe1.page1.text1.setfocus case c=7
messagebox(\"用户名错误,请重新输入\信息提示\") thisform.release endcase else
if alltrim(dl.mm)<>b or len(b)=0
d=messagebox(\"密码错误,请重新输入\信息提示\") do case case d=6
thisform.pageframe1.page1.text2.value='' thisform.pageframe1.page1.text2.setfocus case d=7
messagebox(\"密码错误,请重新输入\信息提示\") thisform.release endcase endif endif
thisform.pageframe1.page1.text3.enabled=.t. thisform.pageframe1.page1.text4.enabled=.t. thisform.pageframe1.page1.command4.enabled=.t. “修改确定”按钮的“click”事件代码: If
len(alltrim(thisform.pageframe1.page1.text3.value)+alltrim(thisform.pageframe1.page1.text4.value))=0 messagebox(\"请输入密码\信息提示\") else if
alltrim(thisform.pageframe1.page1.text3.value)!=alltrim(thisform.pageframe1.page1.text4.value)
e=messagebox(\"密码输入有误,请重新输入\信息提示\") do case case e=6
thisform.pageframe1.page1.text3.value='' thisform.pageframe1.page1.text4.value='' thisform.pageframe1.page1.text3.setfocus case e=7
messagebox(\"密码错误,请重新输入\信息提示\")
thisform.release endcase else
b=alltrim(thisform.pageframe1.page1.text3.value) a=alltrim(thisform.pageframe1.page1.text1.value) update dl set mm=b where mz=a
messagebox(\"密码修改成功\信息提示\") thisform.pageframe1.page1.text1.value='' thisform.pageframe1.page1.text2.value='' thisform.pageframe1.page1.text3.value='' thisform.pageframe1.page1.text4.value='' thisform.pageframe1.page1.text3.enabled=.f. thisform.pageframe1.page1.text4.enabled=.f. thisform.pageframe1.page1.command4.enabled=.f. endif Endif
“放弃”按钮的“click”事件代码:
c=messagebox(\"是否放弃本次修改?\信息提示\") if c=6
thisform.pageframe1.page1.text1.value='' thisform.pageframe1.page1.text2.value='' thisform.pageframe1.page1.text3.value='' thisform.pageframe1.page1.text4.value='' thisform.pageframe1.page1.text3.enabled=.f. thisform.pageframe1.page1.text4.enabled=.f. thisform.pageframe1.page1.command4.enabled=.f. endif
图4-10用户管理界面(2)
“确定”按钮的“click”事件代码:
a=alltrim(thisform.pageframe1.page2.text1.value) b=alltrim(thisform.pageframe1.page2.text3.value) c=val(alltrim(thisform.pageframe1.page2.combo1.value)) If
alltrim(thisform.pageframe1.page2.text3.value)<>alltrim(thisform.pageframe1.page2.text4.value)
messagebox(\"用户密码输入错误,请重新输入\信息提示\") thisform.pageframe1.page2.text3.value='' thisform.pageframe1.page2.text4.value='' else use dl append blank replace mz with a replace mm with b replace qx with c
messagebox(\"添加用户成功\信息提示\") thisform.pageframe1.page2.text1.value='' thisform.pageframe1.page2.text3.value='' thisform.pageframe1.page2.text4.value='' thisform.pageframe1.page2.combo1.value='' endif
图4-10用户管理界面(3)
“确定”按钮的“click”事件代码:
a=alltrim(thisform.pageframe1.page3.combo1.value) b=messagebox(\"确定要删除吗?\信息提示\") use dl excl if b=6
delete from dl where mz=a pack
messagebox(\"成功删除用户\"+a,48,\"信息提示\") thisform.pageframe1.page3.combo1.value='' endif
六、总结
1、设计心得
经过几个星期来的设计,“学生信息管理信息系统”已经基本设计完成。在本次设计的全过程中,我对本学期所学的知识有了一个比较系统的认识和理解。在本次设计中我深知自己掌握的知识还远远不够,掌握的一些理论知识应用到实践中去,总会出现这样或那样的问题,不是理论没有掌握好,而是光知道书本上的知识是远远不够的,一定要把理论知识和实践结合起来。把学到的知识应用到实践中去,多做多练,才可以把理论的精华发挥出来。知识不是知道,了解就好,一定要去应用它,发展它,让它在现实生活中得到充分的应用,从而解决一些问题,这才是学习的根本目的。而且知识又不是单一的,它是互相联系的,学科与学科之间都有着内在的联系。计算机是一门非常复杂且庞大的学科,一项课题往往需要多项技术才可以完成的。在设计阶段,通过对课题的深入分析与研究,迫使我对软件设计有了一定的了解,也涉及了各方面的知识,大大扩展了我的知识面,同时使我学会了如何使用所学的知识去解决一些实际的问题。
其中我对以下几点有较深刻的体会:
(1)编程中定义的窗体及变量的名称,一定要规范,必要时加上注解,标准的定义方式,有助于其他编程人员更易看懂程序代码,便于以后对系统进行维护。
(2)在进行系统设计的过程中,要查找相关资料,且要多与同学进行沟通交流,会拓宽自己的思路,一个人想问题难免会存在局限性,应认真听取他人给予的意见和建议。
(3)编程的方法固然重要,程序的使用界面也要注意美观,布局要合理,主题要突出,风格要统一,要让用户使用到系统中的功能时能够一目了然。
(4)在程序编好后,对程序的调试时极其重要的一步,调试程序可以逐步
完善、修正程序中的错误。调试是一个漫长的过程,需要注意每个使用的细节,这样才能尽量减少BUG的产生。
2、设计的优点与不足
本次设计存在以下几个优点: (1)系统界面简洁明了,操作简单;
(2)数据输入方面,尽量提供给用户选择,避免错误输入,产生数据上的逻辑错误,易于使用;
(3)对系统用户进行角色管理,并设置相应权限,每类用户只能看到自己权限范围内的页面,便于对用户的操作权限进行管理;
由于时间仓促,系统还存在着一些问题和不足之处: (1)系统异常处理还不够完善,还有待改进;
(2)系统还未实现可以查看用户登录后,访问了哪些模块,对哪些模块进行了操作等,只实现了查看到用户的登录时间和退出时间。
七、参考文献
[1] Visual foxpro 管理信息系统开发案例 武新华等编著 西安电子科技大
学出版社,2004年.
[2] Visual foxpro 程序设计教程 刘瑞新等著 机械工业出版社,2005年. [3] Visual foxpro 数据库系统开发实例导航 邵洋等著 人民邮电出版社,
2003年.
[4] Visual foxpro 典型系统实战与解析 傅翠娇等著 电子工业出版社,2007
年.
因篇幅问题不能全部显示,请点此查看更多更全内容