1、 毕业设计(论文)题 目 员工工资管理系统 目录第1章 绪论51.1研究课题的背景51.2 开发工具简介61.3数据库管理系统6第2章 员工工资管理系统分析与设计72.1 应用需求分析72.2系统功能模块划分8第3章 数据库管理系统设计93.1 数据库中表的建立和设计93.2 数据库中各个表的触发器的建立12第4章 应用程序设计154.1欢迎界面154.2 登录模块设计164.2.1 身份验证164.3 主窗体设计184.4 信息录入管理窗体设计194.4.1 录入模块设计194.5信息查询管理窗体设计214.5.1 查询模块设计214.6信息修改模块234.6.1 修改模块设计244.7 数
2、据导出模块设计25第5章 系统测试325.1 测试目的325.2 测试方法325.3 测试结论33第6章 结束语34致 谢36参考文献37摘 要企业的员工管理是公司管理的一个重要内容。随着企业人员数量增加,企业的员工管理工作也变得越来越复杂。员工管理既涉及到企业劳动人事的管理,企业财务管理等。员工管理需要和人事管理相联系,同时连接工时考勤和医疗保险等等,来生成企业每个职工的基本工资、津贴、医疗保险、保险费、实际发放工资等。早期的员工统计和发放都是使用人工方式处理纸质材料,不仅花费财务人员大量的时间且不易保存,往往由于个人的因素抄写不慎或计算疏忽,出现员工统计错误的现象。早期员工管理多采取纸质材
3、料和具有较强的时间限制。基于以上原因,企业员工管理系统使用电脑安全保存、快速计算、全面统计,实现员工管理的系统化、规范化、自动化。企业员工管理系统是典型的信息管理系统(MIS),前台程序开发工具采用DELPHI,后台数据库采用SQL SERVER 2000数据库。DELPHI开发工具,具有组件丰富、语言简单、功能强大的优点。 SQL数据库具有与DELPHI无缝连接、操作简单、易于使用的优点。运行结果证明,本企业员工管理系统极大提高了工作效率,节省了人力和物力,最终满足企业员工管理等需要,同时也成为现代化企业管理的标志。【关键字】员工信息系统,数据库,工资管理,实体关系图(E-R图),数据字典,
4、数据流图。Abstract Enterprise staff management is an important aspect of management. With the increase in the number of enterprises, corporate management staff has become more and more complex. Both staff management and personnel involved in labor management, enterprise financial management. Staff manage
5、ment needs and associated personnel management, working hours, attendance at the same time to connect and medical insurance, etc., to generate business for each of the basic wages of workers, allowance, medical insurance, insurance, wages actually paid. Early release of statistics and the staff are
6、using artificial methods to deal with paper-based materials, not only the financial officers spent a lot of time and difficult to preserve, often transcription factors as a result of personal carelessness or negligence of the calculation, there is the wrong statistics staff. Early management staff t
7、o take paper-based materials and many have strong time constraints. For these reasons, the enterprise management system for staff to preserve the use of computer security, and rapid calculation, comprehensive statistics, staff management to achieve the systematic, standardized and automated. Employe
8、e Management System is a typical management information system (MIS), development tools for the future use of DELPHI, back-end database using SQL SERVER 2000 database. DELPHI development tools, has a component rich in simple language and powerful advantages. SQL database with the DELPHI seamless, si
9、mple operation, easy-to-use advantages. The results prove that the enterprise management system staff have greatly improved work efficiency, saving human and material resources, and ultimately meet the needs of enterprises, such as staff management, but also become a symbol of the modernization of e
10、nterprise management 【Keywords】 staff information system, database, payroll management, entity relationship diagram (ER diagram), data dictionary, data flow diagram.第1章 绪论1.1研究课题的背景借助现代信息技术和管理理论,建立员工管理信息系统是当今社会的重要趋势。党和政府根据知识经济时代的特点,对国民经济建设提出了“用信息化带动工业化”的指导思想。对企业而言,全面开发和应用计算机管理信息系统就是近期不能回避的问题。在企业管理中,
11、人力资源是企业最宝贵的资源,也是企业的“生命线”,因此员工管理是企业的计算机管理信息系统重要组成部分。而员工管理又是人力资源管理的重中之重。实行电子化的员工管理,可以让人力资源管理人员从繁重琐碎的案头工作解脱出来,去完成更重要的工作。员工管理信息系统的实现可以减轻比较繁琐的手工员工管理。现在应用在大中型企业的管理信息系统中,几乎都包括了员工管理模块。有些环境中是由作为大型ERP软件中的一个模块引进的,有些是作为企业的财务系统的一部分。这些根据规范的西方的管理制度设计的员工管理软件,在很多时候还不能完全解决中国特色的中小企业的问题,本文介绍的毕业设计的研究工作就是要为这些具有中国特色的中小企业解
12、决他们在员工管理方面的问题。通过在本单位经过一周的调研,并参考其他同行设计员工管理软件,我基本上搞清楚了小型企业对系统的需求,如果能够设计一套针对类似本单位的小型国有企业的员工管理系统特别有意义,并且是现行的其他管理软件代替不了的。在和指导老师多次交流后,确定实现方案的要点和工作计划。本系统的实现的主要功能有:员工信息管理、工资管理、部门信息管理、员工考勤管理等功能。1.2 开发工具简介开发工具采用Delphi7.0。Delphi7.0是目前较为广泛的、易学易用的开发工具。Delphi7.0也提供了大量的控件,这些控件可用于设计界面和实现各种功能,减少了编程人员的工作量,也简化了界面设计过程,
13、从而有效的提高了应用程序的运行效率和可靠性。因此,本系统使用Delphi7.0开发。1.3数据库管理系统数据库开发工具采用Sql Server 2000。借助Sql Server 2000的数据库管理系统对数据库进行一切操作,包括定义各种更新和控制。在数据库领域中通常把数据模型分为三种:层次模型(Hierarchical Model)、网状模型(Network Model)和关系模型(Relational Model)。Sql Server 2000就是一种关系型数据库管理系统。关系模型是数据库系统中最重要的模型,关系模型中数据的逻辑结构是一张二维表。使用表格来描述实体之间的关系,用外键表示实
14、体间联系。关系模型是由若干个关系模式组成的集合。关系模式相当于前面提到的记录类型,每个关系实际上是一张二维表格。关系模型和层次、网状模型的最大判别是用关键码而不是用指针导航数据,表格简单用户易懂,编程时并不涉及存储结构,访问技术等细节。SQL语言是关系型数据库的标准化语言,已得到了广泛的应用。第2章 员工工资管理系统分析与设计2.1 应用需求分析需求分析的过程可以说是一个对具体问题的反复理解和抽象的过程。理解就是对现实问题的理解,要弄清楚究竟需要解决什么问题。抽象就是除去问题的表面,提取问题的本质,建立问题的逻辑模型,以便于以后阶段的系统的设计实现。需求分析阶段是软件产品生存命期中的一个重要阶
15、段,其根本任务是确定用户对软件系统的需求。所谓需求是指用户对软件的功能和性能的要求,就是用户希望软件能什么事情,完成什么样的功能,达到什么性能。通常需求分为两种类型:一种是功能性需求,一种是非功能性需求,这一点也需要有一种清楚的认识。功能性需求是指需要计算机系统解决的问题,也就是对数据的处理要求,这是一类最主要的需求。非功能性需求是指实际使用环境所要求的需求,往往是一些限制要求,例如:性能要求,可靠性要求,安全保密要求,等等。软件需求一般包含三个层次业务需求、用户需求和功能需求,还包括非功能需求。业务需求:反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。用
16、户需求:描述了用户使用产品必须要完成的任务和具备的功能,这在使用实例文档或方案脚本说明中予以说明。功能需求:定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足其业务需求。2.2系统功能模块划分开发这个系统的目的就是帮助企业的主管部门提高工作效率,实现企业员工信息管理的系统化、规范化和自动化。能够和工资管理系统、考勤管理系统相结合,真正实现企业高效、科学、现代化的员工管理。系统最终实现的主要功能如图2-1所示:工资管理系统信息录入信息修改打 印信息查询员工信息录入员工工资录入部门信息录入员工工资查询部门信息查询部门信息修改员工信息修改员工工资修改添加管理员员工信息查询所有员工工
17、资修改打印员工信息打印员工工资图2-1 系统结构图1)部门管理:能够维护体现部门间的组织关系,反映部门的基本信息,能够进行部门的增加撤消,以及部门信息(如部门名称、负责人名称等)的修改。2)用户管理:能够对系统中已有的用户进行编辑、修改权限或删除,并能添加其他的用户。用户管理是该系统中最为安全的地方,他设置权限问题,不同的权限设置相应的操作权限。这对一个企业来说是至关重要的。是该系统中设置安全问题最为复杂的。3)员工信息的管理:维护员工的基本信息,用户可以进行员工档案信息的录入及更改,其中包括员工的基本信息,要求这些员上档案信息可以进行新增、删除、修改操作,同时可以进行浏览和查询的操作。该模块
18、是本系统的重点,用户可以通过该模块为单位建立一个比较完整的人事档案系统,同时可以比较方便地对档案进行查看。4)员工工资信息管理:维护员工的工资信息,可以对员工的工资信息进行查找,和相应的新增、删除、修改等操作,同时也可进行浏览查询的操作。该模块也是该系统中设置安全问题比较多的,员工工资直接关系到一个企业财务问题,所以他不允许不具有权限的员工进行修改。同时他的总和是计算机自动计算的,避免了出现不必要的错误。5)员工考勤信息管理:维护员工考勤信息,可以对员工的考勤信息进行修改、添加、删除等操作,同时具备对指定员工考勤信息的查询浏览功能的操作。第3章 数据库管理系统设计3.1 数据库中表的建立和设计
19、所用SQL SERVER是一个后台数据库管理系统,它功能强大操作简便,目前很多开发工具都提供了与SQL SERVER的接口。SQL SERVER不但可以应用于大中型数据库管理中,建立分布式关系数据库,也可以开发桌面数据库。SQL SERVER数据库处理的基本结构,采取关系型数据库模式,但在它的数据库处理方式上,则是使用面向对象的操作方式,也就是说,SQL SERVER的所有功能,都可以基于系统已经建立好的一些对象来达成,是相当OO(面向对象)的一个系统结构。SQL SERVER 企业管理器是 SQL SERVER的主要管理工具,这也是作者在开发这个人事管理系统所用到的一个重要工具。 数据库设计
20、主要是进行数据库逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照DBMS提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型表3-1 用户表列名数据类型长度是否为空用户名Char10否密码Char10否权限Nchar15否说明:这张表存放的目前用户的权限信息,其中用户名设为主键。每个登录用户必定属于以上一个权限。该权限直接关系到在系统中所具有的权限,并且用户名必须唯一并不能为空。表3-2 员工基本信息表列名数据类型长度是否为空员工编
21、号Char10否员工姓名Nvarchar10否性别Nvarchar10否出生年月Smalldatetime4否参加工作时间smalldatetime4否部门名称Nvarchar20否政治面貌Nvarchar20否婚姻状况Nvarchar20否说明:员工信息表中包含了员工的基本信息,其中员工编号是该表的主键。字段出生年月和参加工作时间必须按照相应的时间格式(yyyy-mm-dd)进行填写否则将出现字符转换的错误。表3-3 员工工资信息表(wages)列名数据类型长度是否为空员工编号Char10否时间datetime8否基本工资Int4否岗位工资Int4否住房补贴Int4否津贴Int4否工会会费I
22、nt4否水电费Int4否住房公积金Int4否养老保险Int4否奖金Int4否罚金Int4否应发金额Int4是应扣金额Int4是实发金额Int4是说明:员工工资信息表包含该企业所有员工的工资信息,包括每位员工所得得每项奖励和罚款,其中员工编号是根据员工信息表中的员工编号一致的。字段应发金额、应扣金额、实发金额都是根据前面的值进行自己计算的。这就省去了人工计算的麻烦和相应的错误。表3-4 部门信息表列名数据类型长度是否为空部门编号Char20否部门名称Nvarchar20否部门负责人Nrarchar20否部门人数int4否说明:部门信息表中包含了改企业中所有的部门和该部门的管理人和名称。其中部门人
23、数是根据员工信息管理中各部门人数自动累加的。3.2 数据库中各个表的触发器的建立 触发器是保证数据完整性的有效方法。在很多情况下,用户希望把一行数据插入表中后,某个业务规则能够建立立即执行;或者,用户删除一行数据后,应该立即把其他表中与该行数据相关的数据也删除掉;或者更新某个表中的一条数据后,能立即实现所有相关数据的必要更新。要实现这些目的,一个很有效的手段就是触发器。员工管理系统要求员工信息必须是同步的,当员工信息表中添加员工信息时相应的员工工资信息表、考勤信息表中也应该添加相应的数据。1.当员工信息表中发生变化时,比如删除员工基本信息,对应的员工基本工资信息表里的员工信息也应该删除。这是就
24、需要delete触发器:CREATE trigger employee_delete on dbo.员工基本信息表for deleteasdeclare num intselect num=部门信息表.部门人数 from 部门信息表,deleted where 部门信息表.部门编号=deleted.部门编号begin update 部门信息表 set 部门人数=部门人数-1 from 部门信息表,deleted where 部门信息表.部门编号=deleted.部门编号 delete 员工工资信息表 from deleted where deleted.员工编号=员工工资信息表.员工编号 de
25、lete 用户表 from deleted where deleted.员工编号=用户表.用户名end2.当员工信息表中添加员工信息时,部门人数应该增加所以应该有insert触发器:create trigger employee_insert on dbo.员工基本信息表for insertasdeclare num intselect num=部门信息表.部门人数 from 部门信息表,inserted where 部门信息表.部门编号=inserted.部门编号begin update 部门信息表 set 部门人数=部门人数+1 from 部门信息表,inserted where 部门信息
26、表.部门编号=inserted.部门编号end3.如果部门信息表里记录的部门人数不正确,数据库应该有自动计算出人数并修改的功能,这就需要Update触发器:CREATE TRIGGER employee_update ON dbo.员工基本信息表 FOR UPDATEASupdate 部门信息表 set 部门人数=( select count(员工基本信息表.员工编号) from 员工基本信息表,inserted where 员工基本信息表.部门编号=inserted.部门编号) from 部门信息表,insertedwhere 部门信息表.部门编号=inserted.部门编号update 部
27、门信息表 set 部门人数=( select count(员工基本信息表.员工编号) from 员工基本信息表,deleted where 员工基本信息表.部门编号=deleted.部门编号) from 部门信息表,deletedwhere 部门信息表.部门编号=deleted.部门编号第4章 应用程序设计4.1欢迎界面系统启动后,先显示封面,突出系统主题,如图4-1。图4-1欢迎界面是系统设计中经常用到的,他利用系统在正常启动所用的时间,而对用户表达本系统的一些相应的讯息,同时解除用户在等待是的无聊时光在Form1上放置一Image控件,并将其Picture属性设置为需要的图片,将此窗体的B
28、orderstyle、Position和FormStyle三个属性的值设置为bsNone、poDesktopCenter和fsStayOnTop,以便使封面窗体没有标题且显示在屏幕中央所有窗口的上方。该登录界面使用Playsoundplaysound(c:windowsmediaWindows XP 启动.wav,0,SND_SYNC);组件,调用系统音乐主要源码:Application.Initialize; Application.CreateForm(TForm1, Form1); Form1.Show;Form1.Update; playsound(c:windowsmediaWind
29、ows XP 启动.wav,0,SND_SYNC); Form1.Free; Application.CreateForm(TForm2, Form2);4.2 登录模块设计系统封面显示完毕后,系统创建主窗体,即登陆界面。登陆界面包含用户名、密码、用户登录按钮、职工登录按钮,注册按钮,如下图所示:图4-24.2.1 身份验证输入:输入用户名称,填写正确的密码。处理:(1)用户登录窗体启动。(2)用户填写用户名并输入密码。(3)从用户清单表中检查是否有相应的用户名和密码。(4)如果输入的用户名或相应密码错误,进行提示。(5)如果输入的用户名和相应密码正确,判断用户的权限并且进入主控制平台输出:主
30、控制平台 除了必要的控件外还需要一数据库控件TADTable,设置ConnectionString连接到工资管理数据库。登陆验证部分代码为: form2.ADOTable1.Locate(用户名;密码;权限,VarArrayOf(edit1.Text,edit2.Text,管理员)/Button1按钮事件(管理员),验证用户登录信息由于管理员和职工进入的主界面相同,所以只需要设置一些按钮的Enable为false即可,这样做减少了窗体,相应的程序所占用的空间也减少。因为“良好的交互性有利于提高人机匹配效率“,所以,除以上代码之外,还需设置提醒信息:如“登陆失败”,“请重新登陆”等字样,这样,出
31、现错误的时候可以友好的提示用户。4.3 主窗体设计用户登录后进入系统的主界面,如图4-3所示:图4-3在这个项目中,选择使用多文档界面。使用这个窗体的好处是可以使程序更加有条理。对于一个多任务的应用程序,使用多文档窗体还可以减少占用的系统资源。主窗体设计的界面是用菜单编辑器做的,主要信息录入、信息查询、信息修改、信息打印四部分组成。主窗体是进行相关操作的主界面。该界面是系统的主界面,通过主界面进入其他的功能界面。其中用户能够显示登录的用户名而权限显示的该用户所具有的权限。如果是管理员权限能够对整个系统进行所有的操作,而普通用户权限只能进入信息查寻、录入和修改自己的信息。 在住窗体中进入信息录入
32、(员工信息录入,员工工资录入,部门信息录入)时,进入的是同一个窗体(Form4),所以在单击菜单编辑器时就需要用代码对Format4窗体进行必要的修改,如Form4的Caption,ADOTabel连接的数据表,还有Edit和Label的可见度和Label的Caption,Form4的大小等。4.4 信息录入管理窗体设计信息录入窗体员工信息录入,如图4-4:图4-44.4.1 录入模块设计该窗体时由三个窗体集合而成Form5,包括员工信息录入,员工工资录入,部门信息录入三个部分。当员工进入时只能用员工信息录入。其他二个功能的Enable为false不可用。主要源码:A 判断录入信息是否完整:i
33、f (form5.Edit1.Text=) or (form5.Edit2.Text=) or (form5.Edit3.Text=) then showmessage(信息不完整)B 连接数据库:if form5.Caption=员工信息录入 then/根据标题确定连接的数据表 begin form5.ADOTable1.Connection:=Form2.ADOConnection1; Form5.ADOTable1.Close; form5.ADOTable1.TableName:=员工基本信息表;/连接的数据表 form5.ADOTable1.Open; form5.ADOTable1
34、.Active:=true;C系统进入录入状态:form5.ADOTable1.Insert;D录入三种数据类型数据的转换:1.字符串型:form5.ADOTable1.FieldByName(员工编号).AsString:=edit1.Text; 2.时间型:form5.ADOTable1.FieldByName(出生年月).AsDateTime:=strtodatetime(edit4.Text); 3.数据类型:form5.ADOTable1.FieldByName(岗位工资).AsInteger:=strtoint(edit4.Text); E录入成功保存:form5.ADOTable
35、1.Post; showmessage(录入成功);4.5信息查询管理窗体设计信息查询窗体员工信息查询,图4-5图4-54.5.1 查询模块设计该窗体是三个窗体集成的窗体Form6,它包括:员工信息查询,员工工资查询,部门信息查询三个部分。管理员和员工进入这个界面时的操作时相同的在查询到信息时还可以把所查询的信息进行打印。通过该窗体,企业可以掌握员工的姓名,出生日期,参加工作时间等,这有助于对员工的了解,同时员工可以通过该窗体自己的个人信息和工资信息进行确认,了解部门信息等在该窗体中查询的设计总共用到两次:指定相应信息的查询设计和查询所有的信息。使用Radiobutton设置了不同的选择条件,
36、当选择员工编号时,其他的信息输入栏变为不可用,同样选择其他的另外两个不可用,查询时根据选定的Radiobutton而判断查询的条件。主要源码:if form6.Caption=员工信息查询 then/确定标题用于连接数据表 begin form6.ADOTable1.Close; form6.ADOTable1.Open; form6.ADOTable1.Active:=true; if form6.RadioButton1.Checked then/判断查询的方式 begin /按员工编号查询 if form6.ADOTable1.Locate(员工编号,edit1.Text,) then
37、showmessage(找到信息) else showmessage(没有此项记录); end; if form6.RadioButton2.Checked then/按姓名查询 begin if form6.ADOTable1.Locate(姓名,edit2.Text,) then showmessage(找到信息) else showmessage(没有此项记录); end; end;4.6信息修改模块 信息修改模块员工基本信息修改,图4-6和图4-7图4-6图4-74.6.1 修改模块设计该窗体也是三个窗体集成与一个窗体Form7,包括:员工基本信息修改,员工工资信息修改,部门信息修改三
38、个部分。当职工进入时如果要修改就必须通过员工姓名查找出该员工(图4-6),如果输入的员工名字是正确的Edit表中就有内容,否则,出现提示信息没有该员工的记录。当管理员进入时(图4-7),会有DBGrid表,单击这张表中的内容会自动赋值到Edit中部分代码:A查找出要修改的员工:if form7.Caption=员工信息修改 then begin if Form7.ADOTable1.Locate(员工姓名,edit13.Text,) then begin edit1.Text:=DBGrid1.Fields0.AsString;/省略 end else showmessage(没有该员工的记录
39、);BDBGrid的单击事件(单击DBGrid把内容赋值到Edit):if form7.ADOTable1.TableName=员工工资信息表 then begin edit1.Text:=DBGrid1.Fields0.AsString;/省略 end;C修改,保存:form7.ADOTable1.Edit;/系统进入修改状体 form7.ADOTable1.FieldByName(员工编号).AsString:=edit1.Text;/字符串类型修改 form7.ADOTable1.FieldByName(出生年月).AsDateTime:=strtodatetime(edit4.Text
40、);/时间类型修改 ADOTable1.Post;/修改后保存 showmessage(修改成功);4.7 数据导出模块设计数据导出时必不可少的功能,同样数据的导入也必须有的。该系统设计并没有设计打印功能,而是设计了数据的导出。导出的数据是直接导入到Excel,这样又可以对数据进行进一步的整理,同时也可利用Excel的打印和打印预览功能 。这样减少了系统所耗得系统资源。有利于系统的快速运行,优化了系统。导出分导出所有和导出单条,其中导出所有就是导出员工信息表中所有的数据而导出单条是建立在查询的基础上的,也就是说首先需要查询,当你查询到某条数据后,在可以导出所查到得数据。导出的源代码如下:pro
41、cedure TForm3.N15Click(Sender: TObject);var h,k:integer; Excelid: OleVariant; s: string;begin try Excelid := CreateOLEObject(Excel.Application); except Application.MessageBox(Excel没有安装!, 提示信息, MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL); Exit; end; try ADOQuery1.Close; ADOQuery1.SQL.Clear; ADO
42、Query1.SQL.Add(select * from 员工基本信息表); ADOQuery1.Open; k:=ADOQuery1.RecordCount; Excelid.Visible := True; Excelid.WorkBooks.Add; Excelid.worksheets1.rangeA1:i1.Merge(True); Excelid.WorkSheets1.Cells1,1.Value :=员工基本信息表 ; Excelid.worksheets1.Rangea1:a1.HorizontalAlignment := $FFFFEFF4; Excelid.workshe
43、ets1.Rangea1:a1.VerticalAlignment := $FFFFEFF4; Excelid.WorkSheets1.Cells2,1.numberFormat:=1-1; Excelid.WorkSheets1.Cells2,1.Value := 员工编号; Excelid.WorkSheets1.Cells2,2.Value := 姓 名; Excelid.WorkSheets1.Cells2,3.Value := 性 别; Excelid.WorkSheets1.Cells2,4.ColumnWidth:=10; Excelid.WorkSheets1.Cells2,4
44、.Value := 出生年月; Excelid.WorkSheets1.Cells2,5.ColumnWidth:=10;Excelid.WorkSheets1.Cells2,5.Value := 参加工作时间;Excelid.WorkSheets1.Cells2,6.Value := 部门编号;Excelid.WorkSheets1.Cells2,7.Value := 职 务;Excelid.WorkSheets1.Cells2,8.Value := 政治面貌;Excelid.WorkSheets1.Cells2,9.Value := 婚姻状况; Excelid.worksheets1.RangeA1:i1.Font.Name