软件工程数据库课程设计.docx
《软件工程数据库课程设计.docx》由会员分享,可在线阅读,更多相关《软件工程数据库课程设计.docx(37页珍藏版)》请在冰豆网上搜索。
软件工程数据库课程设计
1.功能
1)、员工:
可以对自己的员工密码就行修改、申请请假、查看加班情况与出勤情况,上下班打卡记录考勤
2)、管理员经理:
能够管理员工的基本信息、招聘员工、对员工的请假进行审核、对员工加班进行安排、做出员工出勤的统计,出差管理
员工管理系统应提供如下主要功能需求
1)、员工请假:
员工填写请假申请表,等待经理审核,查看自己工作情况,看自己请假、未出席情况。
2)、审核员工请假:
经理对于员工递交的请假申请表进行处理,同意请假后要进行记录,添加到员工工作情况中。
3)、统计员工出勤:
对于员工已有的出勤、请假、未出席等等情况进行统计,给员工查看自己的工作情况。
2.数据字典
数据字典是系统中各类数据描述的集合,是进行详细数据收集和数据分析所获得的主要成果,数据字典是对系统所用到的所有表结构的描述,具体表描述如下:
表1是员工信息表
列名
数据类型
备注
工号
Char(10)
主键
姓名
Varchar(20)
不为空
性别
Char(10)
不为空
年龄
Int(11)
可以为空
职务
Varchar(10)
可以为空
部门
Varchar(10)
可以为空
学历
Varchar(10)
可以为空
入职日期
Dt
可以为空
CREATETABLE`yuangong`(
`工号`char(10)NOTNULL,
`姓名`varchar(20)NOTNULL,
`性别`char(10)NOTNULL,
`年龄`int(11)DEFAULTNULL,
`职务`varchar(10)DEFAULTNULL,
`部门`varchar(10)DEFAULTNULL,
`学历`varchar(10)DEFAULTNULL,
`入职日期`datetimeDEFAULTNULL,
PRIMARYKEY(`工号`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8
表2是请假信息表
列名
数据类型
备注
工号
Char(10)
主键
日期
Dt
主键
开始日期
Dt
不为空
总时间
Int(11)
不为空
类型
Char(10)
不为空
状态
Char(10)
可以为空
备注
Varchar(10)
可以为空
CREATETABLE`qingjia`(
`工号`char(10)NOTNULL,
`日期`datetimeNOTNULL,
`开始日期`datetimeNOTNULL,
`总时间`int(11)NOTNULL,
`类型`char(10)NOTNULL,
`状态`char(10)DEFAULTNULL,
`备注`varchar(45)DEFAULTNULL,
PRIMARYKEY(`工号`,`日期`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8
表3是出差信息表
列名
数据类型
备注
工号
Char(10)
主键
日期
Dt
主键
开始日期
Dt
不为空
结束日期
Dt
不为空
总时间
Int(11)
可以为空
地点
Varchar(45)
不为空
CREATETABLE`chucai`(
`工号`char(10)NOTNULL,
`日期`datetimeNOTNULL,
`开始日期`datetimeNOTNULL,
`结束日期`datetimeNOTNULL,
`总时间`int(11)DEFAULTNULL,
`地点`varchar(45)NOTNULL,
PRIMARYKEY(`工号`,`日期`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8
表4是加班信息表
列名
数据类型
备注
工号
Char(10)
主键
日期
Dt
主键
开始时间
Char(10)
不为空
结束时间
Char(10)
不为空
总时间
Int(11)
可以为空
CREATETABLE`jiaban`(
`工号`char(10)NOTNULL,
`日期`datetimeNOTNULL,
`开始时间`char(10)NOTNULL,
`结束时间`char(10)NOTNULL,
`总时间`int(11)DEFAULTNULL,
PRIMARYKEY(`工号`,`日期`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8
表5是出勤信息表
列名
数据类型
备注
工号
Char(10)
主键
日期
Dt
主键
上班时间
Dt
可以为空
下班时间
Dt
可以为空
迟到
Char(3)
可以为空
早退
Char(3)
可以为空
CREATETABLE`chuqin`(
`工号`char(10)NOTNULL,
`日期`datetimeNOTNULL,
`上班时间`datetimeDEFAULTNULL,
`下班时间`datetimeDEFAULTNULL,
`迟到`char(3)DEFAULTNULL,
`早退`char(3)DEFAULTNULL,
PRIMARYKEY(`工号`,`日期`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8
表6是时间设置表
列名
数据类型
备注
上班时间
Char(10)
主键
下班时间
Char(10)
不为空
总时间
Char(10)
可以为空
CREATETABLE`shezhishijian`(
`上班时间`char(10)NOTNULL,
`下班时间`char(10)NOTNULL,
`总时间`char(10)DEFAULTNULL,
PRIMARYKEY(`上班时间`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8
表7是权限表
列名
数据类型
备注
工号
Char(10)
主键
密码
Char(10)
不为空
权限
Varchar(45)
不为空
CREATETABLE`login`(
`工号`char(10)NOTNULL,
`密码`char(10)NOTNULL,
`权限`varchar(45)NOTNULL,
PRIMARYKEY(`工号`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8
3.数据库实施
首先根据自己设计的模块建立一些逻辑关系,建立一些基本表:
员工信息表(工号,姓名,性别,年龄,职务,部门,学历,入职日期)
出差信息表(员工号,日期,开始日期,总时间,地点)
请假信息表(工号,日期,开始日期,总时间,类型,状态,备注)
加班信息表(工号,日期,开始时间,结束时间,总时间)
出勤信息表(工号,日期,上班时间,下班时间,迟到,早退)
权限表(工号,密码,权限)
时间设置表(上班时间,下班时间,总时间)
出差信息表
员工信息表
请假信息表
加班信息表
出勤信息表
权限表
时间设置表
4.程序源代码
1密码修改
namespace职工考勤管理系统.master2
{
publicpartialclassMmima:
Form
{
stringUserName;
stringPwd;
publicMmima(stringa,stringb)
{
UserName=a;Pwd=b;
InitializeComponent();
}
privatevoidMmima_Load(objectsender,EventArgse)
{
label5.Text=UserName;
}
privatevoidQueren_Click(objectsender,EventArgse)
{
if(Jiumima.Text==""||Xinmima.Text==""||Querenmima.Text=="")
{
MessageBox.Show("旧密码,新密码和确认新密码均不能为空!
\n请重新输入","提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
Jiumima.Text="";Xinmima.Text="";Querenmima.Text="";
Jiumima.Focus();
return;
}
else
{
if(Jiumima.Text==Pwd)
{
if(Xinmima.Text!
=Querenmima.Text)
{
MessageBox.Show("两次输入的新密码不一致!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
Xinmima.Text="";Querenmima.Text="";Xinmima.Focus();return;
}
else
{
boola=MyData.MySQL.updata("Updateloginset密码='"+Querenmima.Text+"'where工号='"+label5.Text+"'");
MyData.MySQL.CloseSQL();
if(a==true)
{
MessageBox.Show("密码修改成功!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
this.Close();
}
else
{
MessageBox.Show("密码修改操作失败!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
}
else
{
MessageBox.Show("旧密码输入错误!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
Jiumima.Text="";Xinmima.Text="";Querenmima.Text="";Jiumima.Focus();return;
}
}
}
privatevoidQuxiao_Click(objectsender,EventArgse)
{
this.Close();
}
}
}
2当日考勤
namespace职工考勤管理系统.master2
{
publicpartialclassMkaoqin:
Form
{
DateTimetime=Convert.ToDateTime(DateTime.Now.ToShortDateString());
publicMkaoqin()
{
InitializeComponent();
}
privatevoidcomboBox1_SelectedIndexChanged(objectsender,EventArgse)
{
}
privatevoidbutton3_Click(objectsender,EventArgse)
{
this.Close();
}
privatevoidMkaoqin_Load(objectsender,EventArgse)
{
DataSetDS2=MyData.MySQL.dataset("select*fromBumen","BM");
DataRowdr2=DS2.Tables["BM"].NewRow();
dr2["编号"]="0";
dr2["名称"]="";
DS2.Tables["BM"].Rows.InsertAt(dr2,0);
this.Bumen.DataSource=DS2.Tables["BM"];
this.Bumen.DisplayMember="名称";
this.Bumen.ValueMember="编号";
MyData.MySQL.CloseSQL();
}
privatevoidQueding_Click(objectsender,EventArgse)
{
if(Bumen.Text=="")
{
MessageBox.Show("请选择部门!
");Bumen.Focus();return;
}
else
{
try
{
stringsql1="selectYuangong.工号,姓名,Bumen.名称as部门fromYuangong,BumenwhereYuangong.工号notin(select工号fromChuqinwhere日期='"+time+"')andBumen.编号=(select编号fromBumenwhere名称='"+Bumen.Text.Trim()+"')andYuangong.部门=Bumen.编号";
DataSetDS1=MyData.MySQL.dataset(sql1,"WCQ");MyData.MySQL.CloseSQL();
dataGridView1.DataSource=DS1.Tables[0];
stringsql2="selectYuangong.工号,姓名,Bumen.名称as部门,迟到,早退fromYuangong,Bumen,ChuqinwhereYuangong.工号in(select工号fromChuqinwhere日期='"+time+"')andBumen.编号=(select编号fromBumenwhere名称='"+Bumen.Text.Trim()+"')andYuangong.工号=Chuqin.工号andYuangong.部门=Bumen.编号and日期='"+time+"'";
DataSetDS2=MyData.MySQL.dataset(sql2,"YCQ");MyData.MySQL.CloseSQL();
dataGridView2.DataSource=DS2.Tables[0];
}
catch(ExceptionE)
{
MessageBox.Show(E.Message);
}
}
}
privatevoidQuanti_Click(objectsender,EventArgse)
{
try
{
stringsql1="selectYuangong.工号,姓名,Bumen.名称as部门fromYuangong,BumenwhereYuangong.工号notin(select工号fromChuqinwhere日期='"+time+"')andYuangong.部门=Bumen.编号";
DataSetDS1=MyData.MySQL.dataset(sql1,"WCQ");MyData.MySQL.CloseSQL();
dataGridView1.DataSource=DS1.Tables[0];
stringsql2="selectYuangong.工号,姓名,Bumen.名称as部门,迟到,早退fromYuangong,Bumen,ChuqinwhereYuangong.工号in(select工号fromChuqinwhere日期='"+time+"')andYuangong.工号=Chuqin.工号andYuangong.部门=Bumen.编号and日期='"+time+"'";
DataSetDS2=MyData.MySQL.dataset(sql2,"YCQ");MyData.MySQL.CloseSQL();
dataGridView2.DataSource=DS2.Tables[0];
}
catch(ExceptionE)
{
MessageBox.Show(E.Message);
}
}
}
}
3.员工请假处理
namespace职工考勤管理系统.master2
{
publicpartialclassMqingjia:
Form
{
DateTimetime=Convert.ToDateTime(DateTime.Now.ToShortDateString());
publicMqingjia()
{
InitializeComponent();
}
privatevoidMqingjia_Load(objectsender,EventArgse)
{
view();
}
publicvoidview()
{
stringsql="selectQingjia.工号,Yuangong.姓名,日期as申请日期,开始日期,总时间as请假总天数,类型as请假类型,状态as是否批准,备注fromQingjia,YuangongwhereQingjia.工号=Yuangong.工号andDATEADD(dd,总时间,开始日期)>'"+time+"'";
DataSetDS=MyData.MySQL.dataset(sql,"QJ");
dataGridView1.DataSource=DS.Tables[0];
}
privatevoidQuxiao_Click(objectsender,EventArgse)
{
this.Close();
}
privatevoidPizhun_Click(objectsender,EventArgse)
{
intindex=dataGridView1.CurrentCell.RowIndex;boola=false;
stringhang=dataGridView1.Rows[index].Cells[0].Value.ToString();
DateTimeRiqi=Convert.ToDateTime(dataGridView1.Rows[index].Cells[2].Value.ToString());
stringsql="updateQingjiaset状态='是'where工号='"+hang+"'and日期='"+Riqi+"'";
a=MyData.MySQL.updata(sql);
if(a==true)
{
MessageBox.Show("员工请假已批准!
","提示",MessageBoxButtons.OK);
view();
}
}
}
}
4.部门信息管理
namespace职工考勤管理系统.master2
{
publicpartialclassMxinjianbumen:
Form
{
publicMxinjianbumen()
{
InitializeComponent();
}
privatevoidMxinjianbumen_Load(objectsender,EventArgse)
{
Bumenhao.Focus();
}
privatevoidTianjia_Click(objectsender,EventArgse)
{
if(Bumenhao.Text==""||Bumenming.Text==""||int.Parse(Bumenhao.Text)>10)
{
MessageBox.Show("请输入部门号和部门名!
\n(部门号在1--10之间)","提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
Bumenhao.Focus();Bumenhao.Text="";Bumenming.Text="";return;
}
else
{
if(null!
=MyData.MySQL.sereach("select*fromBumenwhere编号='"+int.Parse(Bumenhao.Text)+"'"))
{
MessageBox.Show("部门号重复!
请重新输入!
","提示");
Bumenhao.Text="";Bumenhao.Focus();return;
}
else
{
if(null!
=MyData.MySQL.sereach("select*fromBumenwhere名称='"+Bumenming.Text+"'"))
{
MessageBox.Show("部门名称重复!
请重新输入!
","提示");
Bumenming.Text="";Bumenming.Focus();return;
}
else
{
boola=MyData.MySQL.updata("insertintoBumen(编号,名称,备注)values('"+int.Parse(Bumenhao.Text)+"','"+Bumenming.Text+"','"+Bumenbeizhu.Text+"')");
if(a==true)
{
MessageBox.Show("部门新建成功!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);this.Close();
}
}
}
}
}
privatevoidFanhui_Click(objectsender,EventArgse)
{
this.Close();
}
}
}
namespace职工考勤管理系统.master2
{
publicpartial