资源描述
课 程 论 文
题 目: 人事管理系统
学 院: 计 算 机 学 院
班级名称:
学 号:
学生姓名:
组员姓名:
指导教师:
年 月 日
摘要
随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现企业人事管理势在必行。本系统结合公司实际的人事管理制度,经过实际的需求分析,采用功能强的Visual Studio2008作为开发工具而开发出来的单机版人事管理系统。整个系统从符合操作简便、界友好、灵活、实用、安全的要求出发,完成人事管理的全过程,包括新进员工加入时人事档的建立、老员工的转出、职位等的变动引起职工信息的修改、员工信息查询、统计等人事管理工作以及新进员的新增、老员工修改等管理工作。经过实际使用证明,本文所设计的人事管理系统可以满足公司人事管理方面的需要。
关键词:VS、数据库、窗体、测试
目录
第一章 引言 3
第二章 系统调研及可行性分析 5
2.1系统调研 5
2.2 可行性分析概述 5
2.3 技术可行性分析 6
第三章 系统分析 7
3.1 系统需求分析 7
3.2系统目标 8
第四章 系统总体设计 9
4.1系统概述 9
4.2系统功能模块图 9
4.3模块功能介绍 10
4.4界面设计 11
第五章 详细设计 12
5.1 系统数据库设计 12
5.2用户管理模块设计 16
5.3用户管理后台代码 一八
5.4人事变动模块设计 22
5.5人事变动后台代码 23
小结 33
参考文献 34
第一章 引言
在这个信息迅速膨胀的社会,各行各业所要管理、涉及的数据信息量越来越多、越来越大。随着当前许多的中、小型企业的发展壮大,员工的数量也在不断的增加。随之而来的管理成本也在不断的提高。考虑到当前大量企业的人事管理尚处于手工作业阶段,不但效率低下,还常常因为管理的不慎而出现纰漏。因此根据部分企业提供的需求,设计此企业人事管理系统,以帮助企业达到人事管理办公自动化、节约管理成本、提高企业工作效率的目的。
国外专家学者对人事管理系统的研究起步比较早,发达国家的企业非常注重自身人事管理系统的开发。特别是一些跨国公司,更不惜花费大量的人力和物力来开发相应的人事管理系统,通过建立一个业务流的开发性系统实现真正意义上的人事管理目标,挑选和留住最佳人才,同时不断提高这些人才的工作效益。例如:苹果公司的企业员工人事管理系统便是一个很好的典范。
我国的信息管理系统是九十年代初开始快速发展的。经过十余年的发展,我国的数据库管理技术也广泛的应用于各个领域,并且形成了产业化。但是,我们的工厂、企业对信息管理系统的应用比起世界先进水平还相当落后。主要表现在:人事管理系统范围使用相对狭窄、人事管理系统功能相对欠缺、稳定性较差、功能相对单一等。
人事管理系统是典型的管理信息系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。企业人事管理系统可以提供丰富的功能,降低企业人事管理工作的强度,提高企业人事管理工作的效率,并依靠系统的网络功能为人事管理的使用创造良好的条件,从而能够适应企业人事管理的要求,推动企业人事管理的信息化建设。根据大多数企业人事管理的需求,本论文就该人事管理系统的设计与实现进行了分析探讨:首先对系统的需求分析做了叙述,然后介绍了系统的设计和实现,最后进行了系统测试。该企业人事管理系统采用基于客户端/服务端(C/S)模式开发,服务端采用SQL Server2008数据库服务器作为数据处理和存储平台,客户端应用程序采用Visual Stdio.NET 2008进行开发,开发语言选用C#。用户必须使用客户端应用程序才能对服务端数据进行操作。
人事管理系统是一个面向企业人事部门工作人员,为其提供服务的综合信息管理系统。企业员工通过本系统完成相关的日常工作,这些工作也是平常较为繁重的工作。员工的个人信息等都记录在人事系统里进行管理。企业下设人事部门,全权处理企业内部一切人事事物。
第二章 系统调研及可行性分析
2.1系统调研
正式开发管理信息系统之前进行调研是非常必要的,其必要性主要表现在以下几个方面:
(1)明确用户的要求,以根据调查结果进行可行性分析,确认系统的开发是否可行。
(2)提出新系统的人员并不都是系统研究人员,有些人对于其功能和处理数据的方法没有明确的认识。它们只是根据自己业务工作的需要提出了要求,系统开发人员要对此进行详细的调查和分析,确认用户的要求可以通过现有的计算机技术实现,保证开发的管理信息系统的功能与用户提出的要求相吻合。
(3)企业的现行系统可能是手工系统,也可能是使用和计算机的系统,无论是何种情况,都要详细地调查现行系统中信息处理的具体情况,系统内部功能结构,以便设计出一个合理的、好的新系统逻辑模型,为新系统的设计工作打好基础,保证整个系统开发的质量。 总之,必要对现行系统进行详细的调查,明确用户需求,保证开发的新系统的功能与用户的要求相吻合,避免耗费大量的人力、物力、财力,新系统的开发却失败的悲剧发生。
2.2 可行性分析概述
可行性分析是在用户的要求和系统调研的基础上进行的,对新系统的开发从社会、技术、经济、管理等方面进行分析,并得出新系统的开发工作可行、不可行、需要修改、追加投资、暂缓开发、分步实施等方案和结论,最后完成可行性分析。 可行性分析一般可定义为:可行性分析是在建设的前期对工程项目的一种考察和鉴定,对拟议中的项目进行全面与综合的技术、经济能力的调查,判断它是否可行。 可行性分析阶段的主要工作包括以下几个方面:
①新系统目标可行性分析: 分析新系统的目标是否符合企业的现状和发展的需要。
②社会可行性分析: 社会可行性分析主要是指管理信息系统的开发是否符合国家法律、下策,是否能够与社会大系统实现良好的对接。
③技术可行性分析: 技术可行性分析是根据新系统的目标来衡量是否具备所需要的技术,包括系统开发人员数量和水平,硬件方面,软件方面及其它应用技术。
④经济可行性分析 经济可行性分析主要是对开发新系统所投入的资金与系统投入使用后所带来的经济效益进行比较,确认新系统是否会给企业带来一定的经济效益。
⑤管理可行性分析: 管理可行性分析主要是分析企业现行的管理体制和企业领导是否具有现代化的管理意识和管理水平。
2.3 技术可行性分析
技术可行性分析主要包括四个方面:目前有关的技术能否支持所开发的新系统;新系统开发人员的数量和水平,即人力资源;硬件和软件资源。
(1)技术支持: 首先根据新系统的目标,考虑目前有关的技术能否支持所开发的新系统。这里讨论的技术必须是已经普遍使用的,而不是待研究的或正在研究的。
(2)硬件资源: 开发管理信息系统所需的硬件资源包含以下两个方面: 系统开发人员在管理信息系统的开发过程中所需要的计算机设备及其有关的外部设备;管理信息系统开发成功投入使用后,使用单位所应具备的计算机设备及其有关的外围设备。对硬件资源进行可行性分析时主要考虑计算机的主机内存、类型、功能、联网能力、安全保护措施以及输入/输出设备,外存储器和联网数据通信设备的配置、功能、效率等指标是否符合系统方案设计要求,同时还要考虑计算机的性能/价格比。
(3)软件资源 软件资源的可行性分析主要考虑以下几点是否满足用户的要求: ①操作系统的选择; ②编译系统的选择; ③数据库管理系统的选择; ④高级编程语言的选择; ⑤汉字处理系统的选择; ⑥应用软件包的选择。
本系统在开发前,与中心的领导和有关的操作人员密切沟通,认真听取他们的意见,并吸收他们的积极观点,使本系统的开发在相当大的程度上具有一定的先进性和合理性。
第三章 系统分析
3.1 系统需求分析
系统分析是开发管理信息系统的关键性阶段,是一个从不断认识和逐步细化的过程,是下一阶段的工作基础,是为下一阶段进行物理方案设计、解决“怎么做”提供依据,基关键性主要体现在“理解需求”和“表达需求”两方面。 通过对现行系统的详细调研,主要是从系统的角度理解用户的需要,确定新系统的综合要求,并提出这些需求的实现条件以及需求应达到的标准,也就是确定新系统要做什么,做到什么程度。这些需求包括:
3.1.1 功能需求
功能需求。确定新系统应做什么,这是最主要的需求。
①用户管理:
用户管理主要实现用户的分类注册以及用户信息的修改等。
用户信息里是员工的基本信息如姓名、部门、职务、进场日期、出生年月等信息。
②人事变动管理
人事变动管理可以查看职工的人事变动的情况。
③奖惩情况
可以对职工的奖惩进行记录,以便用户的查看与修改,便于用户的对用户进行管理。
3.1.2性能需求
给出所开发的新系统的技术性能指标,包括存储容量限制、运行时间限制、安全保密性等。为了保证系统能够长期、安全、稳定、可靠、高效的运行,人事信息管理系统应该满足以下的性能需求:
1.系统处理的准确性和及时性
系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足学校对信息处理的需求。
2.系统的开放性和系统的可扩充性
人事信息管理系统在开发过程中,应该充分考虑以后的可扩充性。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。
3.系统的易用性和易维护性
人事信息管理系统使用人员往往对计算机并不是非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的帮助,缩短用户对系统熟悉的过程。
3.1.3 环境需求
这是对系统运行以及所处环境的要求。例如,在硬件方面采用什么机型、有什么硬件设备等;在软件方面,采用什么支持系统运行的系统软件(指操作系统、数据库管理系统)。
3.2系统目标
根据企业对人事管理的要求,制定企业人事管理系统具体目标如下:
(1)员工基本档案、员工简历、等相关界面的添加、修改、删除操作。
(2)全方位的模糊查询功能的实现。
(3)按相应条件对员工的奖惩等进行统计。
(4)针对不同用户的权限管理。
(5)员工考勤信息的数字化显示,以方便企业对员工进行年终考核。
(6) 系统运行良好,兼容性强。
第四章 系统总体设计
4.1系统概述
本系统主要针对中小企业的人事管理人员和企业管理人员设计,以帮助其实现企业人事管理的信息化和自动化。基于其他企业人事管理系统的不足,本系统更好地完成了数据的添加、修改、删除操作,并且可以将员工信息添加到Excel文档,这样,不但利于保存,还可以通过Excel文档进行打印。
通过本系统,人事管理人员可以实现员工档案管理,员工离职管理,员工奖惩的录入和查询管理。由于公司管理人员需要对企业人事信息进行系统的了解,本系统采用了模糊查询的功能,企业管理人员可以清晰地了解部门人员分配、员工年龄、文化程度、婚姻状况等信息。同时,人事管理人员还可以将相应的数据通过Excel等形式予以打印,最终实现办公流程的系统化。为满足不同员工对本系统的特殊要求,系统添加了权限设置的功能,针对不同的企业员工,分配了不同的权限,以便更有利于企业的规范化管理。
4.2系统功能模块图
人事管理系统
员工基本信息管理
奖惩基本信息管理
人事变动管理
用户信息
管理
登陆管理
图4-1 人事管理系统模块
4.3模块功能介绍
登录本窗体也即主窗体可以看到四个模块:用户管理模块、职工信息管理模块、人事信息管理模块和奖惩信息管理模块。管理员身份又分为管理员用户和超级用户两种,所对应的权限是不一样的,管理员用户可以对主窗体的内的系统管理模块进行所有操作、对个人信息管理模块和帮助模块进行完全操作。下面来详细讲下这五个模块:
一. 系统管理模块包括:登录、登录信息管理和退出本系统三个部分。
1. 登录:实现系统管理员登录。
2. 登录信息管理又包括:更改密码、更改权限和添加用户三个部分。
1) 更改权限:实现更改管理员用户权限。
2) 更改密码:实现更改管理员用户密码
3) 添加用户:实现添加管理员用户。
3. 退出本系统:实现正常退出本系统。
二. 职工信息管理模块包括:修改职工信息、添加职工信息和查看详细信息三个部分。
1. 修改职工信息:实现管理员查看个人基本信息和修改。
2. 添加职工信息:实现管理员去更更新职工信息。
3. 查看详细信息:实现管理员去更查看详细职工信息
三. 职工信息管理模块包括:修改人事信息和添加人事信息两个部分。
1. 修改职工信息:实现管理员查看人事信息和修改。
2. 添加职工信息:实现管理员去更添加人事信息。
四. 职工信息管理模块包括:修改奖惩信息和添加奖惩信息两个部分。
1. 修改职工信息:实现管理员查看奖惩信息和修改。
2. 添加职工信息:实现管理员去添加奖惩信息。
4.4界面设计
虽然说程序设计最核心的地方是程序的功能,但程序的界面设计是不可忽视的,它直接影响到程序的易用性。尤其在Windows时代,一个良好的应用界面会给你的程序锦上添花,甚至有画龙点睛之韵味。
用户界面:又称人机界面,实现用户与计算机之间得通信,以控制计算机或进行用户和计算机之间得数据传送得系统部件。
本企业人事管 理系统严格遵守用户界面设计规范.系统坚持图形用户界面(GUI)设计原则,界面直观、对用户透明,用户接触软件后对界面上对应的功能一目了然、不需要多少培训就可以方便使用本应用系统。该企业人事管理系统在界面设计中也保持了界面的一致性。一致性既包括使用标准的控件,也指使用相同的信息表现方法,如在字体、标签风格、颜色、术语、显示错误信息等方面确保一致。
对系统有了深刻分析之后,确定了此企业人事管理系统的界面主要由5部分组成:
1.用户登录界面
2.用户信息管理界面
3员工信息管理界面
4.人事变动管理界面
5.奖惩信息管理界面
第五章 详细设计
详细设计得出对目标系统的精确描述,给出各个模块的详细过程性描述。从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。同时展现其袭设计效果。
5.1 系统数据库设计
1、用户登录表:登记管理人员的用户名、密码及登录权限。
创建一个users命名的表,如图5-1所示
图5-1
图5-2
用户登录表
字段名
数据类型
数据长度
NULL
Primarykey
ID
biginy
10
N
Y
UID
varchar
50
N
N
UPassword
varchar
50
Y
N
UPower
varhar
10
Y
N
2、用户信息表:登记用户或职工的相关信息
创建一个personal-information命名的表,如图5-3所示
图5-3
图5-4
用户信息表
字段名
数据类型
数据长度
NULL
Primarykey
UID
Varchar
50
N
Y
UName
Varchar
50
Y
N
UBirthday
Datetime
-
Y
N
UMarriage
char
10
Y
N
UWorktime
char
10
Y
N
UIntime
Datetime
-
Y
N
UDepartment
verchar
50
Y
N
UPosition
verchar
50
Y
N
UPhone
Char
10
Y
3、奖惩信息表:该表存储个人基本奖惩信息
创建一个personnel_rewardpunishment命名的表,如图5-4所示
图5-4 奖惩信息表信息
图5-5 奖惩信息表信息
字段名
数据类型
数据长度
NULL
Primarykey
ID
bigint
-
N
Y
UID
char
19
N
N
UTime
Datetime
-
Y
N
URewardPunishment
verchar
50
Y
N
UDetail
verchar
50
Y
N
4、人员变动信息表:存储员工的基本信息
创建一个personnel_transfer命名的表,如图5-6所示
图5-6 人员信息表信息
图5-7 人员信息表信息
字段名
数据类型
数据长度
NULL
Primarykey
ID
bigint
-
N
Y
UID
char
19
N
N
Transfer_time
Datetime
-
Y
N
Transfer_reson
verchar
50
Y
N
Transfer_department
verchar
50
Y
N
Transfer_position
verchar
50
Y
N
5.2用户管理模块设计
模块简介
此模块主要用于用户的管理,能够方便管理员的查询和修改用户权限等一些操作。
模块界面设计
图5-8 用户信息界面
该界面可以对用户进行修改和管理,方便管理员的操作,然而超级用户和普通用户是没有权限查看该界面的,如图所示:
添加用户界面:
图5-9添加用户界面
5.3用户管理后台代码
using System;
using System.Collections;
using SystemxponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
namespace PMS
{
/// <summary>
/// users 的摘要说明
/// </summary>
public class users : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid Dgd_userinformation;
protected System.Web.UI.WebControls.TextBox Tbx_uid;
protected System.Web.UI.WebControls.Label Lbl_show;
protected System.Web.UI.WebControls.Button Btn_search;
protected System.Web.UI.WebControls.Button Btn_add;
SqlConnection cn;
private void Page_Load(object sender, System.EventArgs e)
{
//判断用户是否为合法用户
try
{
if(Session["userpower"].ToString ()=="1") ;
else
{
Response.End ();
}
}
catch
{
Response.Write ("您不是合法用户,请登录后再操作,<a href='default.aspx'>返回</a>");
Response.End ();
}
// 在此处放置用户代码以初始化页面
string strconn= ConfigurationSettings.AppSettings["dsn"];
cn=new SqlConnection(strconn);
if(!IsPostBack)
{
Bindgrid();
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Btn_search.Click += new System.EventHandler(this.Btn_search_Click);
this.Btn_add.Click += new System.EventHandler(this.Btn_add_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
public void DataGrid_cancel(object sender,DataGridCommandEventArgs e)
{
Dgd_userinformation.EditItemIndex=-1;
Bindgrid();
}
public void DataGrid_edit(object sender,DataGridCommandEventArgs e)
{
Dgd_userinformation.EditItemIndex=(int)e.Item.ItemIndex;
Bindgrid();
}
public void DataGrid_update(object sender,DataGridCommandEventArgs e)
{
string strsql="update users set UID=xuid,UPassword=xpassword,UPower=xkind where ID=xuserid";
SqlCommand cm=new SqlCommand(strsql,cn);
cm.Parameters.Add(new SqlParameter("xuid",SqlDbType.VarChar,50));
cm.Parameters.Add(new SqlParameter("xpassword",SqlDbType.VarChar,50));
cm.Parameters.Add(new SqlParameter("xkind",SqlDbType.Int,4));
cm.Parameters.Add(new SqlParameter("xuserid",SqlDbType.BigInt,8));
string colvalue=((TextBox)e.Item.Cells[3].Controls[0]).Text;
cm.Parameters["xuid"].Value=colvalue;
colvalue=((TextBox)e.Item.Cells[4].Controls[0]).Text;
cm.Parameters["xpassword"].Value=colvalue;
colvalue=((TextBox)e.Item.Cells[5].Controls[0]).Text;
cm.Parameters["xkind"].Value=colvalue;
cm.Parameters["xuserid"].Value=Dgd_userinformation.DataKeys[(int)e.Item.ItemIndex];
cm.Connection.Open();
try
{
cm.ExecuteNonQuery();
Lbl_show.Text="编辑成功";
Dgd_userinformation.EditItemIndex=-1;
}
catch(SqlException)
{
Lbl_show.Text="编辑失败,请检查输入!";
Lbl_show.Style["color"]="red";
}
cm.Connection.Close();
Bindgrid();
}
public void DataGrid_delete(object sender,DataGridCommandEventArgs e)
{
string strsql="delete from users where ID=xuserid";
SqlCommand cm=new SqlCommand(strsql,cn);
cm.Parameters.Add(new SqlParameter("xuserid",SqlDbType.BigInt,8));
cm.Parameters["xuserid"].Value=Dgd_userinformation.DataKeys[(int)e.Item.ItemIndex];
cm.Connection.Open();
try
{
cm.ExecuteNonQuery();
Lbl_show.Text="删除成功";
}
catch(SqlException)
{
Lbl_show.Text="删除失败";
Lbl_show.Style["color"]="red";
}
cm.Connection.Close();
Bindgrid();
}
public void Bindgrid()
{
SqlDataAdapter da=new SqlDataAdapter("select * from users",cn);
DataSet ds=new DataSet();
da.Fill(ds);
Dgd_userinformation.DataSource=ds;
Dgd_userinformation.DataBind();
}
private void Btn_search_Click(object sender, System.EventArgs e)
{
string strsql="select * from users where UID=xuid";
SqlCommand cm=new SqlCommand(strsql,cn);
cm.Parameters.Add(new SqlParameter("xuid",SqlDbType.VarChar,50));
cm.Parameters["xuid"].Value=Tbx_uid.Text;
cn.Open();
SqlDataReader dr=cm.ExecuteReader();
Dgd_userinformation.DataSource=dr;
Dgd_userinformation.DataBind();
cn.Close();
}
private void Btn_add_Click(object sender, System.EventArgs e)
{
Response.Redirect("addusers.aspx");
}
}
}
5.4人事变动模块设计
模块简介
此模块主要用于人事变动情况的管理,能够方便用户的查询和修改等一些操作。
不同的用户会有不同权限操作:
管理员能够查看和修改用户的人事变动情况
图5-10 人事变动情况的界面
图5-11 添加人事变动情况
超级用户不能添加人事变动
图5-12超级用户人事变动
普通用户只能看见自己的人事变动
图5-一三个人的人事变动
5.5人事变动后台代码
人事变动查看后台代码
using System;
using System.Collections;
using SystemxponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Configuration;
namespace PMS
{
/// <summary>
/// personnel_transfer 的摘要说明
/// </summary>
public class personnel_transfer : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox Tbx_uid;
protected System.Web.UI.WebControls.DataGrid Dg_transfer;
protected System.Web.UI.WebControls.Label Lbl_note;
protected System.Web.UI.WebControls.Button Btn_addtransfer;
protected System.Web.UI.WebControls.Button Btn_search;
SqlConnection cn;
string number;
string position;
protected System.Web.UI.WebControls.Button Btn_exit;
string department;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string strconn= ConfigurationSettings.AppSettings["dsn"];
cn=new SqlConnection(strconn);
if(!IsPostBack)
{
Bindgrid();
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Btn_search.Click += new System.EventHandler(this.Btn_search_Click);
this.Btn_addtransfer.Click += new System.EventHandler(this.Btn_addtransfer_Click);
this.Btn_exit.Click += new System.EventHandler(this.Btn_exit_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
public void DataGrid_cancel(object sender,DataGridCommandEventArgs e)
{
Dg_transfer.EditItemIndex=-1;
Bindgrid();
}
public void DataGrid_edit(object sender,DataGridCommandEventArgs e)
{
if((int)Session["userpower"]==2)
{
Lbl_note.Text="对不起,您没有权限!";
}
else
{
Dg_transfer.EditItemIndex=(int)e.Item.ItemIndex;
Bindgrid();
}
}
展开阅读全文