河南理工大学计算机科学与技术学院课程设计2011 — 2012学年第二学期课程名称C#Windows程序设计课设设计题目人事管理系统学生姓名学号专业班级软件工程.net指导教师2012 年6月7日目录封面...........................1 目录...........................21.设计任务书.......................41.1题目与要求.....................41.2本系统涉及的知识点.................4 2.功能设计........................4 3.数据库设计.......................53.1数据库概念设计(E-R图) ...............53.2数据库逻辑结构设计.................63.3数据库物理设计...................6 4.系统实现........................64.1界面设计及实现...................64.2部门信息管理设计及实现...............114.2.1添加部门信息...................114.2.2浏览部门信息...................134.2.3修改部门信息...................144.2.4删除部门信息...................16 5.总结..........................18 致谢...........................18 参考文献.........................181 设计任务书1.1 题目与要求本人计划(与XXX、XXX合作)编写一个员工管理系统,主要用来管理员工基本信息。
此系统使得管理人员对公司的工种进行分类,进而确定各个工种所对应的部门信息,在已有部门信息的基础上能够对所有的员工信息进行分类管理。
本系统的特点是可以对员工的个人信息、所属部门进行全方位的管理,可以实现工种的浏览、添加、删除和修改等操作,同时界面设计简单、操作方便。
其具体要求如下:1、工种种类设置。
・添加工种:添加公司的各种工种信息,包括工种编号、工种名称、工种描述。
・浏览工种:能够按照列表方式快速浏览公司的各种工种。
・修改工种:能够对工种的信息进行修改。
・删除工种:能够对于全部工种的信息进行删除。
2、员工个人信息管理。
・添加员工:添加一个员工的基本信息,包括姓名、性别、专业、籍贯、职称、所在工种、所在部门、学历、员工编号。
・浏览员工:能够对一个职员的信息进行删除按姓名进行删除。
・修改员工:对职员的信息进行修改。
・删除员工:能够对于全部职员的信息进行删除。
3、员工所属部门信息管理。
・添加部门:添加一个部门的基本信息,包括部门编号、部门名称、部门描述。
・浏览部门:能够按照列表方式快速浏览公司所有的部门。
・修改部门:能够对部门的信息进行修改。
・删除部门:能够对于全部部门的信息进行删除。
根据分工,本人的主要工作是完成第三模块,即员工所属部门信息管理,包括添加部门、浏览部门、修改部门、删除部门四个部分。
同时,需要对主界面进行设计及实现。
1.2 本系统涉及的知识点WinForm常用控件、属性、方法,技术。
2 功能设计本系统选用C#作为开发语言,采用结合后台SQLServer数据库的C/S结构开发模式,优化了程序代码及结构,提高了程序的运行效率。
系统在.NET环境中进行开发,该环境提供了大量可选择的数据对象,可以很方便地建立与数据库之间的连接,并在此连接的基础上利用各种常用数据库组件对数据库进行操作。
在本系统中,采用SqlConnection对象与后台数据库创建连接,所有针对数据库的操作都需要利用这个对象作为数据库连接对象。
在系统功能分析的基础上,考虑Microsoft Visual Studio 2008程序编制的特点,得到如图2-1所示的系统功能模块图。
图2-1 功能模块图3 数据库设计3.1 数据库概念设计(E —R 图)根据本系统的需要,可以归纳出一下实体:工种信息实体、部门信息实体、员工信息实体。
为了更好地理解各个实体及其含义,用E-R 图,即实体关系图对实体进行描述。
根据分工,本人任务模块部门信息实体如图3-1所示:图3-1 部门信息实体图3.2 数据库逻辑结构设计系统数据库名称为db_Person,数据库中包括:1.工种信息表(tb_JobInfo );2.部门信息表(tb_DepartInfo );3.员工信息表(tb_PersonInfo )。
下面列出部门信息表的数据结构,如表3-2所示。
表3-2 部门信息表(tb_DepartInfo)的数据结构DID int 部门编号(主键,自动编号)Dname varchar 部门名称Dleader varchar 部门领导Remark varchar 描述图3-2 部门信息表的数据结构3.3 数据库物理设计数据库物理设计,即设置表与表之间的关系。
员工信息表中的“部门”来源于部门信息表中现有的部门,员工信息表中的“工种”来源于公众信息表中现有的工种。
如果数据库中的信息不能满足正常的依赖关系就会破坏数据的完整性和一致性。
根据本系统需要,由E-R图模型进行分析,从而确定出哪些表之间的字段需要进行关联分析如下:1、员工信息表中的工种字段来源于工种信息表;2、员工信息表中的部门字段来源于部门信息表;根据本系统特点,需要依次设置员工信息表与工种信息表、员工信息表与部门信息表之间的关系。
4 系统实现4.1 界面设计及实现该界面提供的主菜单,用户可以分别实现对工种信息、员工信息、部门信息等功能的管理。
图4-1为员工管理系统的应用程序主界面。
图4-1 员工管理系统主界面此界面用于对各模块进行查询及编辑。
程序代码如下:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using PersonMIS.JobManage; //导入用于工种设置的命名空间using PersonMIS.DepartManage; //导入用于部门设置的命名空间using PersonMIS.IncomeManage; //导入用于员工收入的命名空间using PersonMIS.PersonManage; //导入用于员工个人信息的命名空间namespace PersonMIS{public partial class frmMain : Form{public frmMain(){InitializeComponent();}AddJob frmAddJob;private void meneAddJob_Click(object sender, EventArgs e) {if (frmAddJob == null || frmAddJob.IsDisposed){frmAddJob = new AddJob();for (int x = 0; x < this.MdiChildren.Length; x++) {Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}frmAddJob.MdiParent = this;frmAddJob.Show();}}AddDepart frmAddDepart;private void menuAddDepart_Click(object sender, EventArgs e) {if (frmAddDepart == null || frmAddDepart.IsDisposed){frmAddDepart = new AddDepart();for (int x = 0; x < this.MdiChildren.Length; x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}frmAddDepart.MdiParent = this;frmAddDepart.Show();}}AddDepart frmAddPerson;private void menuAddPerson_Click(object sender, EventArgs e) {if (frmAddPerson == null || frmAddPerson.IsDisposed){frmAddPerson = new AddPerson();for (int x = 0; x < this.MdiChildren.Length; x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}frmAddPerson.MdiParent = this;frmAddPerson.Show();}}AddDepart frmAddIncome;private void menuAddIncome_Click(object sender, EventArgs e) {if (frmAddIncome == null || frmAddIncome.IsDisposed){frmAddIncome = new AddIncome();for (int x = 0; x < this.MdiChildren.Length; x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}frmAddIncome.MdiParent = this;frmAddIncome.Show();}}BrowseJob frmBrowseJob;private void menuBrowseJob_Click(object sender, EventArgs e){if (frmBrowseJob == null || frmBrowseJob.IsDisposed){frmBrowseJob = new BrowseJob();for (int x = 0; x < this.MdiChildren.Length; x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}frmBrowseJob.MdiParent = this;frmBrowseJob.Show();}}BrowseDepart frmBrowseDepart;private void menuBrowseDepart_Click(object sender, EventArgs e) {if (frmBrowseDepart == null || frmBrowseDepart.IsDisposed) {frmBrowseDepart = new BrowseDepart();for (int x = 0; x < this.MdiChildren.Length; x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}frmBrowseDepart.MdiParent = this;frmBrowseDepart.Show();}}BrowsePerson frmBrowsePerson;private void menuBrowsePerson_Click(object sender, EventArgs e) {if (frmBrowsePerson == null || frmBrowsePerson.IsDisposed) {frmBrowsePerson = new BrowsePerson();for (int x = 0; x < this.MdiChildren.Length; x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}frmBrowsePerson.MdiParent = this;frmBrowsePerson.Show();}}BrowseIncome frmBrowseIncome;private void menuBrowseIncome_Click(object sender, EventArgs e) {if (frmBrowseIncome == null || frmBrowseIncome.IsDisposed) {frmBrowseIncome = new BrowseIncome();for (int x = 0; x < this.MdiChildren.Length; x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}frmBrowseIncome.MdiParent = this;frmBrowseIncome.Show();}}private void menuExitSystem_Click(object sender, EventArgs e) {Application.Exit();}About frmAbout;private void menuAbout_Click(object sender, EventArgs e){if (frmAbout == null || frmAbout.IsDisposed){frmAbout = new About();for (int x = 0; x < this.MdiChildren.Length; x++){Form tempChild = (Form)this.MdiChildren[x];tempChild.Close();}frmAbout.MdiParent = this;frmAbout.Show();}}private void timer1_Tick(object sender, EventArgs e){this.ttsTime.Text = "时间为:" + Datatime.Now.ToString();}}}4.2 部门信息管理设计及实现4.2.1添加部门信息添加部门信息界面用于部门基本信息的录入,包括部门名称、部门领导和备注。