#员工管理信息系统的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机科学和工程学院
课程设计报告
题目全称:员工管理信息系统的设计和实现—岗位和薪金信息管理
学生学号:2606005011姓名:李伟德
指导老师:刘勇国职称:副教授
指导老师评语:
课程设计成绩:
设计过程表现设计报告质量
签字:总分
一、实验室名称:计算机学院软件实验室
二、实验项目名称:员工管理信息系统的设计和实现—岗位和薪
金信息管理
一、实验学时:32
二、实验原理:
员工管理信息系统是由员工管理,部门管理,岗位管理以及薪金管理四部分组成。
系统前台采用Visual Stdio2005工具开发而成,开发语言是C#程序设计语言,主要是因为C#是微软为.NET平台量身定做的编程语言,它是一种现代面向对象程序设计语言,使程序员能够快速地在.NET平台上开发种类丰富的使用程序,它继承了C++和Java的语法,去掉了C++中的许多复杂和容易引起问题的东西,是由C和C++发展而来的一种“简单、高效、面向对象、类型安全”的程序设计语言,其综合了Visual Basic的高效率和C++的强大功能。
系统后台的数据库采用Miscrosoft Access 2003数据库,主要依据是考虑到系统的数据
规模并不大,如果用SQL Server2005等数据库会造成浪费,而且维护起来比较难。
而Access数据库是一个轻量级的数据库,其具有简单,方便的特性,已经满足我们的需求。
五、实验目的:
1.使学生掌握数据库的实现原理,了解SQL的查询命令,并能在实践中使用。
2.使学生学会使用C#语言进行程序设计,了解V istual Stdio 2005的开发工具的原理,并
设计出实际可行的项目。
3.加强学生的动手能力,把课堂上学到得东西,融入到实际的项目,达到学以致用的目的。
4.
锻炼学生的思维能力,使学生能够领略计算机编程的实现方法,达到举一反三的效果。
六、实验内容:
在员工信息管理系统中完成“岗位”和“薪金”信息管理功能。
岗位信息管理功能包括:
1.添加岗位:可以添加岗位名称,岗位描述等信息。
2.删除岗位:可以删除岗位名称,岗位描述等信息。
3.修改岗位:可以修改指定岗位的岗位名称,岗位描述等信息。
4.查询岗位:可以查询指定岗位的岗位名称,岗位描述等信息。
薪金信息管理功能包括:
1.添加员工薪金信息:可以添加员工姓名,月份,备注,薪金等信息。
2.删除员工薪金信息:可以删除指定员工的姓名,月份,备注,薪金等信息。
3.修改员工薪金信息:可以修改指定员工的姓名,月份,备注,薪金等信息。
4.查询员工薪金信息:可以查询指定员工的薪金等信息。
七、实验器材(设备、元器件):
1.一台Windows XP平台或以上的PC机;
2.Vistual Stdio 2005开发软件及Microsoft ACCESS2003数据库软件;
八、实验步骤:
1、设计系统结构组成
系统提供了一套员工综合信息管理平台,使得系统管理人员对公司的岗位进行分类,进而确定各个岗位所对应的部门信息,在已有部门信息的基础上能够对所有员工信息进行分类管理。
主要功能有:岗位设置、员工个人信息管理、员工所属部门信息管理、员工薪金信息管理。
系统模块设计划分如下:
员工薪金信息模块:可以删除、添加、修改和查询员工薪金信息;
岗位设置模块:可以删除、添加、修改和查询岗位;
它们之间既是相互联系同时又是彼此独立的,整个框架结构如图1所示。
员工信息管理系统
员工薪金管理岗位管理
员工薪金员
工
薪
金
员
工
薪
金
员
工
薪
金
岗
位
添
加
岗
位
删
除
岗
位
修
改
岗
位
查
询
信息添加信
息
删
除
信
息
修
改
信
息
查
询
图1系统整体框架
本课程设计实现岗位和薪金管理模块功能:
(1)岗位设置模块
岗位设置模块功能包括:添加岗位、删除岗位、修改岗位、查询岗位。
基于上面的需求分析,我们可以列出用户操作的模块,其中的每一个模块对于一个功能,如图2所示。
添加岗位
删除岗位
修改岗位
用户
查询岗位
图2岗位设置模块用例图
(2)薪金管理模块
薪金管理模块功能包括:添加员工薪金信息、删除员工薪金信息、修改员工薪金信息、查询员工薪金信息。
基于上面的需求分析,我们可以列出用户操作的模块,其中的每一个模块对于一个功能,如图3所示。
添加薪金
信息
删除薪金
信息
修改薪金
信息
用户
查询薪金
信息
图3薪金信息管理模块用例图
2、数据库的设计和实现
数据库是员工信息管理系统的后台,存储着所有的信息,在员工信息管理系统中有着很重要的地位。
数据库设计的好和坏,直接影响到这个系统的运行效率。
良好的数据库设计,可以提高数据信息的存储效率,确保数据信息的完整性和一致性。
在仔细调研员工信息管理过程的基础上,通过对管理内容的分析,设计的数据项和数据结构如下:
岗位信息表:包含岗位编号、岗位名称、描述等信息;
员工薪金表:薪金编号、月份、员工编号、薪金、备注等信息;
有了上面的数据项和数据结构,就可以进行数据库的设计了。
设计过程主要分为两个阶段,即数据库概念结构设计和逻辑结构设计。
基于对数据库需求的分析,在这一阶段可以设计出能够满足用户需求的各种实例以及它
们之间的关系,为下一阶段的逻辑设计打下基础。
岗位信息实体
图4岗位信息实体E-R图
图5员薪工金薪信金息信实息体实体E-R图
岗位编号岗位名称岗位描述有了上面的实例以及实例之间的关系,再针对员工信息管理系统的需求,通过对系统的整体分析,为本系统设计如下的数据项和数据结构:
表1相关信息表设计
薪金编号库名
(EmployeeMIS)
月份员工编号薪金备注
员工薪金信息表(income)
字段IID Imonth 类型
自动编号
数字
说明
薪金编号
月份
大小
2
是否为空
NOT NULL
NOT NULL
PID Income Remark 文本
文本
文本
员工编号
薪金
备注
20
500
NOT NULL
NOT NULL
岗位信息表(Jobinfo)
字段JobID Jobname Remarks 类型
自动编号
文本
文本
说明
岗位编号
岗位名称
备注描述
大小
20
500
是否为空
NOT NULL
NOT NULL
NOT NULL
3.设计系统各模块
3.1岗位设置模块设计
添加岗位
在主窗口中点击“添加岗位”按钮,即可弹出如下对话框,依次填写岗位名称,岗位
描述后,点击“确定”按钮,将弹出添加成功的提示。
删除岗位
在浏览岗位的对话框中,首先选择要删除的行,然后点击“删除”按钮,删除成功后,将弹出删除成功的提示。
修改岗位
在浏览岗位对话框中,选择要修改的行,然后点击修改按钮,即可弹出新的对话框,在此对话框可以进行岗位编号,岗位名称,岗位描述的修改,修改成功后,将得到相应的提示信息。
查询岗位
依次在主窗口中点击岗位浏览,即可弹出岗位浏览对话框。
3.2薪金信息管理模块设计
添加薪金信息
在主窗口中选择员工薪金管理,再点击“添加薪金”,就会弹出添加薪金信息对话框,依次填写员工姓名,月份,备注,薪金等信息,按确定后,系统先检查信息完整性,如果满足要求,就可添加成功,并给出相关提示。
删除薪金信息
在浏览员工的对话框窗口,先选择要删除的行,然后点击删除,如果删除成功,则会给
出“删除员工‘XXX’成功”的提示信息。
修改薪金信息
在浏览员工薪金的对话框中,选择要修改的员工信息,然后点击“修改”按钮,即可弹出新的对话框,在这对话框可以更改月份,薪金,和备注这三项信息。
查询薪金信息
在员工薪金信息浏览的对话框中,先在选择员工的下拉框中选择要查看的员工,之后点
击“开始查询”,系统将会把所选员工的所有薪金信息显示出来。
九、实验数据及结果分析:
1. 岗位设置模块设计运行结果
1.1添加岗位
在主窗口中点击“添加岗位”按钮,即可弹出如下对话框,依次填写岗位名称,岗位描述后,点击“确定”按钮,将弹出添加成功的提示,如图6所示。
图6岗位添加
1.2删除岗位
在浏览岗位的对话框中,首先选择要删除的行,然后点击“删除”按钮,删除成功后,将弹出删除成功的提示。
如图7所示。
图7删除岗位
1.3修改岗位
在浏览岗位对话框中,选择要修改的行,然后点击修改按钮,即可弹出新的对话框,在此对话框可以进行岗位编号,岗位名称,岗位描述的修改,修改成功后,将得到相应的提示信息。
如图8所示,实习生岗位名称改成“普通员工”岗位的修改过程。
图8修改岗位
1.4查询岗位
依次在主窗口中点击岗位浏览,即可弹出岗位浏览对话框,如图9所示。
图9修改岗位
2. 薪金信息管理模块设计
2.1添加薪金信息
在主窗口中选择员工薪金管理,再点击“添加薪金”,就会弹出添加薪金信息对话框,依次填写员工姓名,月份,备注,薪金等信息,按确定后,系统先检查信息完整性,如果满足要求,就可添加成功,并给出相关提示,如图10所示。
图10添加薪金信息
2.2删除薪金信息
在浏览员工的对话框窗口,先选择要删除的行,然后点击删除,如果删除成功,则会给
出“删除员工‘XXX’成功”的提示信息。
执行效果如图11所示。
图11删除员工薪金信息
2.3修改员工薪金信息
在浏览员工薪金的对话框中,选择要修改的员工信息,然后点击“修改”按钮,即可弹出新的对话框,在这对话框可以更改月份,薪金,和备注这三项信息。
效果如图12所示。
图12修改薪金信息
2.4查询员工薪金信息
在员工薪金信息浏览的对话框中,先在选择员工的下拉框中选择要查看的员工,之后点击“开始查询”,系统将会把所选员工的所有薪金信息显示出来。
执行结果如图13所示。
图13查询薪金信息
十、实验结论:
由实验结果分析可知,岗位设置和薪金信息管理两个模块能正确地运行。
可以实现基本的添加,删除,修改和查询等操作。
在前台设计上,展现了C#语言的简单,高效,面向对象的特点,其可视化的设计方式,更让程序员能把注意力集中到设计实现上来。
在后台的数据库方面,再次验证了Access能胜任本次实验的所有功能需求。
十一、总结及心得体会:
本次实验是我第一次使用C#程序设计语言和Microsoft Office Access数据库系统进行对实际的项目的模拟实现。
由于是初次运用,实验过程中遇到了不少困难,但每一次我都会认真分析问题所在,积极的搜集资料,和老师同学相互讨论,最终把问题一一的解决了。
在
这过程中,不仅把平常老师在上课中讲的理论知识结合到实际中来,还学会了如何去解决问
题,更重要的是它增强了我对程序设计的兴趣。
另一方面,在设计的过程中,我对Vistual Stdio2005的实现原理有了更进一步的了解,通过C#语言的使用,我深深的体会到了其简单,高效的特性,它具有V istual Basic的可视化设计方式,又结合了C++的严谨,高效,面向对象的运行机制。
而在Microsoft Access方面,我认识到了SQL命令的编程实现方式,学会了如何在C#程序中调用Access数据库。
十二、对本实验过程及方法、手段的改进建议:
本实验实现了员工管理信息系统的岗位和薪金管理这两个模块,并经过初步的测试,其实现了所要求的功能。
但一个投入运行的员工管理系统不仅要求在功能上,还要要求在细节,用户使用习惯上都得符合用户的需求,而且需要经过更加严谨的测试,本次实验中的测试的数据是人工输入的,数据量比较小,可以开发一个辅助插件来模拟用户的大量数据的输入,以便更好地分析其在数据量大的时候的运行效果。
源代码:(因为代码较多,在此只给出核心实现代码)
1 岗位设置模块代码:
1.1 添加岗位代码
private void button1_Click(object sender, System.EventArgs e)
{
if(textBox1.Text.Trim()==""||textBox2.Text.Trim()=="")
MessageBox(0,"请输入岗位名称和描述!","提示",0);
else
{
oleDbConnection1.Open();
OleDbCommand cmd=new OleDbCommand("select*from jobinfo where JobName='"+textBox1.Text.Trim()+"'",oleDbConnection1);
if(cmd.ExecuteScalar() !=null)
MessageBox(0,"岗位名称重复,请重新输入!","提示",0);
else
{
string sql="insert into jobinfo(JobName,Remark)values ('"+textBox1.Text.Trim()+"','"+textBox2.T ext.Trim()+"')";
mandText =sql;
cmd.ExecuteNonQuery();
MessageBox(0,"添加岗位信息成功!","提示",0);
textBox1.Clear();
textBox2.Clear();
}
oleDbConnection1.Close();
}
1.2删除岗位
1)删除岗位函数实现代码:
private void button3_Click(object sender, System.EventArgs e)
{
if(dataGrid1[dataGrid1.CurrentCell]!=null)
{
string sql="select JobName from jobinfo where JobID="+ds.Tables["job"].Rows[dataGrid1.CurrentCell.RowNumber][0].ToString().Trim()+" and JobID not in(select distinct jobinfo.JobID from personinfo inner join jobinfo on personinfo.JobName=jobinfo.JobName)";
OleDbCommand cmd=new OleDbCommand(sql,oleDbConnection1);
OleDbDataReader dr;
dr=cmd.ExecuteReader();
if(!dr.Read())
{
MessageBox.Show("删除岗位'"+ds.Tables["job"].Rows[dataGrid1.CurrentCell.RowNumber][1].ToString().Trim()+"'失败,请先删除和此岗位相关的员工","提示");
dr.Close();
}
else
{
dr.Close();
sql="delete *from jobinfo where JobName not in(select distinct JobName from personinfo)and JobID="+ds.Tables["job"].Rows[dataGrid1.CurrentCell.RowNumber][0].ToString().Trim();
mandText=sql;
cmd.ExecuteNonQuery();
MessageBox.Show("删除岗位'"+ds.Tables["job"].Rows[dataGrid1.CurrentCell.RowNumber][1].ToString().Trim()+"'成功","提示");
}
}
}
1.3修改岗位
1)修改岗位信息函数代码实现:
private void button1_Click(object sender, System.EventArgs e)
{
if((textBox1.Text.Trim()=="") || (textBox2.Text.Trim()==""))
MessageBox.Show("提示","请输入完整的岗位信息");
else
{
cn.Open();
OleDbCommand cmd=new OleDbCommand("select*from jobinfo where JobName='"+textBox1.Text.Trim()+"' and JobID<>"+this.Tag.T String().Trim(),cn);
if(null!=cmd.ExecuteScalar())
MessageBox.Show("岗位名称发生重复","提示");
else
{
string sql="update jobinfo JobName='"+textBox1.Text.Trim()+"',Remark='"+textBox2.Text.Trim()+"' JobID="+this.Tag.ToString().Trim();
mandText=sql;
cmd.ExecuteNonQuery();
MessageBox.Show("岗位信息修改成功","提示");
}
cn.Close();
}
}
1.4查询岗位
1)浏览岗位代码实现函数:
private void BrowseSpecialtyl_Load(object sender,System.EventArgs e) {
set where
oleDbConnection1.Open();
string sql="select JobID as编号,JobName as岗位名称,Remark as描述from jobinfo";
OleDbDataAdapter adp=new OleDbDataAdapter(sql,oleDbConnection1);
ds=new DataSet();
ds.Clear();
adp.Fill(ds,"job");
dataGrid1.DataSource=ds.Tables[0].DefaultView;
}
//当DataGrid1中当前单元格发生变化时,将对应的岗位名称显示在DataGrid1标题中private void dataGrid1_CurrentCellChanged(object sender,System.EventArgs e)
{
oleDbConnection1.Open();
string sql="select JobID as编号,JobName as岗位名称,Remark as描述from jobinfo";
OleDbDataAdapter adp=new OleDbDataAdapter(sql,oleDbConnection1);
ds=new DataSet();
ds.Clear();
adp.Fill(ds,"job");
dataGrid1.DataSource=ds.Tables[0].DefaultView;
dataGrid1.CaptionText=dataGrid1[dataGrid1.CurrentRowIndex,1].ToString();
}
2 薪金信息管理模块代码:
2.1 添加薪金信息
添加薪金信息函数代码实现:
private void button1_Click(object sender, System.EventArgs e)
{
if(textBox2.Text.Trim()=="" ||comboBox1.Text.Trim()=="" ||textBox3.Text.Trim()=="" || textBox4.Text.Trim()=="")
MessageBox(0,"请填写完整的信息","提示",0);
else
{
string strSQL="select* from income where PID="+comboBox1.SelectedValue.ToString()+"";
OleDbCommand cmd=new OleDbCommand(strSQL,oleDbConnection1);
//if (null!=cmd.ExecuteScalar())
//MessageBox(0,"员工姓名重复","提示",0);
//else
//{
string sql1,sql2,sql;
sql1="insert into income(Imonth,Remark,Income,PID";
sql2="values
('"+textBox2.Text.ToString()+"','"+textBox3.Text.ToString()+"','"+textBox4.T xt.ToString()+"' ,"+comboBox1.SelectedValue.ToString();
sql=sql1+") "+sql2+")";
mandText=sql;
cmd.ExecuteNonQuery();
MessageBox(0,"薪金信息添加成功","提示",0);
//}
}
}
2)添加薪金信息初始化函数代码:
private void AddIncome_Load(object sender,System.EventArgs e)
{
oleDbConnection1.Open();
OleDbDataAdapter adp=new OleDbDataAdapter("select PID,Pname from personinfo",oleDbConnection1);
DataSet ds=new DataSet();
adp.Fill(ds,"person");
comboBox1.DisplayMember="Pname";
comboBox1.ValueMember="PID";
comboBox1.DataSource=ds.Tables[0].DefaultView;
}
2.2 删除薪金信息
1)删除员工薪金实现函数代码:
private void button4_Click(object sender, System.EventArgs e)
{
if(dataGrid1.CurrentRowIndex>=0&& dataGrid1.DataSource!=null&& dataGrid1[dataGrid1.CurrentCell]!=null)
{
string sql="delete*from income where PID='"+ds.Tables["income"].Rows[dataGrid1.CurrentCell.RowNumber][0].ToString().Trim( )+"'";
OleDbCommand cmd=new OleDbCommand(sql,oleDbConnection1);
mandText=sql;
cmd.ExecuteNonQuery();
MessageBox.Show("删除员工'"+ds.Tables["income"].Rows[dataGrid1.CurrentCell.RowNumber][4].ToString().Trim()+"'成功","提示");
}
else
MessageBox.Show("没有指定的员工信息","提示");
}
2.3修改薪金信息
1)修改薪金函数:
private void button1_Click(object sender, System.EventArgs e)
{
string sql;
sql="select *from income where PID='"+comboBox1.SelectedValue.ToString()+"'and IID<>"+this.Tag.T oString().Trim();
OleDbCommand cmd=new OleDbCommand(sql,oleDbConnection1);
if(null!=cmd.ExecuteScalar())
MessageBox.Show("月份重复","提示");
else
{
sql="update income set Imonth='"+textBox2.Text.ToString()+"',Remark='"+textBox3.T ext.ToString()+"',Income='"+t extBox4.Text.ToString()+"',PID='"+comboBox1.SelectedValue.T String()+"'";
//if (textBox8.Text.Trim()!="")
//sql=sql+",Remark='"+textBox8.Text.Trim()+"'";
sql=sql+" where IID="+this.Tag.ToString().Trim();
mandText=sql;
cmd.ExecuteNonQuery();
MessageBox.Show("员工薪金修改成功","提示");
}
oleDbConnection1.Close();
}
private void button2_Click(object sender, System.EventArgs e)
{
this.Close();
}
2)修改薪金初始化函数:
private void ModifyIncome_Load(object sender,System.EventArgs e)
{
oleDbConnection1.Open();
OleDbDataAdapter adp=new OleDbDataAdapter("select PID,Pname from personinfo",oleDbConnection1);
DataSet ds=new DataSet();
adp.Fill(ds,"person");
comboBox1.DisplayMember="personinfo";
comboBox1.ValueMember="PID";
comboBox1.DataSource=ds.Tables[0].DefaultView;
comboBox1.Text=label6.T ext.Trim();
}
2.4查询薪金信息
1)查询薪金函数代码实现:
private void button1_Click(object sender, System.EventArgs e)
{
string sql="select income.PID as员工编号,income.Imonth as月份,income.Income as薪金,income.Remark as备注,personinfo.Pname as员工姓名,income.IID as自动编号from income inner join personinfo on income.PID=personinfo.PID where personinfo.Pname='"+comboBox1.Text.ToString()+"'order by IID";
OleDbDataAdapter adp=new OleDbDataAdapter(sql,oleDbConnection1);
ds=new DataSet();
ds.Clear();
adp.Fill(ds,"income");
if(ds.Tables[0].Rows.Count!=0)
{
dataGrid1.DataSource=ds.Tables[0].DefaultView;
dataGrid1.CaptionText="共有"+ds.Tables[0].Rows.Count+"条查询结果";
}
else
{
dataGrid1.CaptionText="没有您所查找的员工薪金信息";
dataGrid1.DataSource=null;
}。