************* 人事工资管理系统09地理信息系统一.开发背景企业在发展中不断地壮大,员工也随之增加。
对于人事管理部门来说,迫切地需要一个操作方便、功能简单实用,可以满足企业对员工的档案及工资信息进行管理系统。
在企业选择人事工资管理系统时,主要存在以下几个方面的要求:(1)对企业员工的档案进行管理(2)系统的功能要符合本企业的基本情况(3)系统的功能操作要简单、实用、操作方便,不要出现复杂的操作。
(4)可以方便地对工资信息进行打印。
二.需求分析通过实际调查,要求本系统具有以下功能:良好的人机界面。
方便的添加和修改数据功能。
方便的数据查询功能。
方便的数据打印功能。
在相应的窗体中,可方便地删除数据。
三.系统设计1.系统目标(1)界面友好、操作方便(2)可以对员工档案进行管理,包括增、删、改、查。
(3)实现奖罚管理。
(4)可以使用操作员管理修改口令和更改操作员。
、(5)系统运行稳定、安全可靠。
2.系统预览3.业务流程图人事工资管理系统的业务流程如图:4.数据库概念设计应用程序开发过程中,对数据库的操作时必不可少的,数据库设计师根据程序的需求及其实现功能所制定的,数据库设计得是否合理将直接影响程序的开发进程。
(1)数据库设计在系统开发中占有非常重要的比重,它是通过管理系统的整体需求而制定的,数据库设计的好坏直接影响到系统的后期开发。
下面对本系统中具有代表性的数据库设计做详细说明。
在本系统中,为了提高系统的安全性,每一个用户都要使用正确的用户名和密码才能进入主窗体,而且还需要根据指定的用户名提供相应的权限,为了能够验证正确的用户名和密码得到相应的权限,应在数据库中创建登录表。
登录用户信息表的实体E-R图:员工档案信息表的实体E-R图:员工工资信息表的实体E-R图:(2)数据库逻辑结构设计根据上面设计好的E-R图,可以在数据库中创建相应的数据表四.公共类设计项目开发过程中,通常会以类的形式来组织、封装一些常用的方法和事件,这样做不仅可以提高代码的重用率,也大大方便了用户对代码的管理。
在本系统中,主要建立了两个公共类,分别为DBConnection类和DBOperate类。
DBConnection类主要用于连接数据库;在DBOperate类中则定义了一些操作数据库的公用方法,分别用于实现各种功能,下面详细介绍这两个类。
1.DBConnection公共类DBConnection类是数据库连接类,此类主要用于连接SQL Server数据库,在连接数据库时,只需调用此类中的MYConnection即可,其实现代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.SqlClient;namespace PMSClass{class DBConnetion{public static SqlConnection MYConnection(){ return new SqlConnection(@"server=.;database=db_PMS;user=sa;pwd=123"); } }}2.DBOperate公共类DBOperate类中建立了多个方法用于执行不同的SQL语句using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;using System.Data;namespace WindowsFormsApplication1{class DBOperate{SqlConnection conn = PMSClass.DBConnetion.MYConnection();public int OperateData(string strSql){conn.Open();SqlCommand cmd = new SqlCommand(strSql, conn);int i = (int)cmd.ExecuteNonQuery();conn.Close();return i;}public DataSet gettable(string sql){DataSet ds = new DataSet();SqlDataAdapter sda = new SqlDataAdapter(sql, conn);sda.Fill(ds);ds.Dispose();return ds;}public void BindDataGridView(DataGridView dgv, string sql){DataSet ds = new DataSet();SqlDataAdapter sda = new SqlDataAdapter(sql, conn);sda.Fill(ds);dgv.DataSource = ds.Tables[0];ds.Dispose();}}}下面对该类中的方法进行讲解(1)OperateData()方法用于对数据库执行SQL语句public int OperateData(string strSql){conn.Open();SqlCommand cmd = new SqlCommand(strSql, conn);int i = (int)cmd.ExecuteNonQuery();conn.Close();return i;}(2)gettable()方法用于根据指定的SQL查询语句返回相应的dataset对象public DataSet gettable(string sql){DataSet ds = new DataSet();SqlDataAdapter sda = new SqlDataAdapter(sql, conn);sda.Fill(ds);ds.Dispose();return ds;}(3) BindDataGridView()方法用于将数据库中的数据绑定到datagridview控件public void BindDataGridView(DataGridView dgv, string sql){DataSet ds = new DataSet();SqlDataAdapter sda = new SqlDataAdapter(sql, conn);sda.Fill(ds);dgv.DataSource = ds.Tables[0];ds.Dispose();}五.登录模块设计using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace WindowsFormsApplication1{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){try{if (textBox1.Text == "" || textBox2.Text == ""){ MessageBox.Show("用户名或密码不能为空!", "提示", MessageBoxButtons.OK, rmation); return; }else{SqlConnection conn = PMSClass.DBConnetion.MYConnection();conn.Open();string s = "select * from db_User where UserName='" +textBox1.Text.ToString().Trim() + " 'and UserPwd='" + textBox2.Text.Trim() + "'";SqlCommand cmd = new SqlCommand(s, conn);SqlDataReader sdr = cmd.ExecuteReader();sdr.Read();if (sdr.HasRows){this.Hide();conn.Close();Form2 main = new Form2();er = textBox1.Text.ToString().Trim();main.Show();}else{textBox1.Text = "";textBox2.Text = "";MessageBox.Show("用户名或密码错误!", "提示", MessageBoxButtons.OK, rmation);}}}catch (Exception ex){MessageBox.Show(ex.Message);}}private void button2_Click(object sender, EventArgs e){this.Close();}}}在登录窗体中,单击登录按钮,程序调用DBConnection类中的MYCconnection()方法连接数据库,然后通过sqldatareader对象的hasrows属性判断用户输入的用户名和密码是否正确,如果正确,则登录系统,并将用户名传到下个窗体中,否则,弹出用户名或密码错误信息提示,登录按钮事件代码如下:private void button1_Click(object sender, EventArgs e){try{if (textBox1.Text == "" || textBox2.Text == ""){ MessageBox.Show("用户名或密码不能为空!", "提示", MessageBoxButtons.OK, rmation); return; }else{SqlConnection conn = PMSClass.DBConnetion.MYConnection();conn.Open();string s = "select * from db_User where UserName='" +textBox1.Text.ToString().Trim() + " 'and UserPwd='" + textBox2.Text.Trim() + "'";SqlCommand cmd = new SqlCommand(s, conn);SqlDataReader sdr = cmd.ExecuteReader();sdr.Read();if (sdr.HasRows){this.Hide();conn.Close();Form2 main = new Form2();er = textBox1.Text.ToString().Trim();main.Show();}else{textBox1.Text = "";textBox2.Text = "";MessageBox.Show("用户名或密码错误!", "提示", MessageBoxButtons.OK, rmation);}}}catch (Exception ex){MessageBox.Show(ex.Message);}}六.员工信息模块设计using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace WindowsFormsApplication1{public partial class Form2 : Form{public Form2(){InitializeComponent();}public string User;DBOperate operate = new DBOperate();private void Form2_Load(object sender, EventArgs e){// TODO: 这行代码将数据加载到表“db_PMSDataSet.db_employee”中。