版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于 C#+Oracle 的考勤管理系统的设计与开发基于 C#+Oracle 的考勤管理系统的设计与开发年 学 姓 院 专级:号: 名: 系: 业:第1 页共47 页基于 C#+Oracle 的考勤管理系统的设计与开发基于 C#+Oracle 的考勤管理系统的设计与开发一、系统设计基本情况1 系统设计目标 利用计算机管理考勤信息,在很大程度上减轻了统计的工作量,实现企业员工考勤管理 的规范化,考勤数据统计的自动化。2 设计思想 除了能够手工录入员工的考勤记录外, 还能与考勤机相配合, 实现考勤信息录入自动化; 考勤类型灵活设定,以便用户随时调整应具有报表功能, 查询统计时能够直接生成相关员工的
2、考勤报表, 报表能导出系统应采用模块程序设计,便于组合和修改综合考虑,确定本系统采用 C/S 工作模式,以 oracle 作为后台数据库, C#为前台程序 开发语言。3 系统功能模块划分3.1 员工信息管理模块第2 页共47 页基于 C#+Oracle 的考勤管理系统的设计与开发3.2 考勤类型的设定模块3.3 员工考勤信息手工录入模块3.4 员工考勤情况统计报表生成模块第3 页共47 页基于 C#+Oracle 的考勤管理系统的设计与开发、数据库设计1 数据库需求分析与用户结合,调查用户需求操作的资料,弄清用户怎样处理各种数据资料,理清数据库中各数据之间的关系。通过分析,设计数据集和数据项如
3、下:1.1 员工信息数据集,数据项为员工号,员工姓名,员工性别,员工所属部门。1.2 考勤类型数据集:数据项为类型号,类型名称1.3 员工考勤情况数据集: 数据项为考勤日期, 员工号, 考勤类型号, 备注。2 数据库结构设计2.1 员工信息实体 E-R 图第 4 页 共 47 页基于 C#+Oracle 的考勤管理系统的设计与开发2.22.3考勤类型实体 E-R 图员工考勤实体 E-R 图2.4 实体与实体间的关系 E-R 图3 各表格数据库设计代码( Oracle 平台)3.1 考勤类型表格CREATE TABLE KQLXB(BH VARCHAR(4) NOT NULL PRIMARY K
4、EY,LX VARCHAR(20) NULL);3.2 员工信息表格第5 页共47 页基于 C#+Oracle 的考勤管理系统的设计与开发CREATE TABLE YGB(BH VARCHAR(8) NOT NULL PRIMARY KEY,XM VARCHAR(12) NOT NULL,XB VARCHAR(2) NOT NULL,BM VARCHAR(20);3.3 考勤情况管理表格CREATE TABLE KQGLB(KQRQ DATE NOT NULL,YGBH VARCHAR(8) NOT NULL,LXBH VARCHAR(4) NOT NULL,BZ VARCHAR(60) ,
5、CONSTRAINT KQGLBPRI PRIMARY KEY(KQRQ,YGBH);3.4 外键设计ALTER TABLE KQGLB ADD (CONSTRAINT KQGL_BH_FK FOREIGN KEY(LXBH) REFERENCES KQLXB(BH),CONSTRAINT YG_BH_FK FOREIGN KEY(YGBH) REFERENCES YGB(BH);3.5 触发器CREATE or REPLACE TRIGGER delete_ygbAFTER DELETE ON ygb FOR EACH ROWBEGINDELETE FROM kqglb WHERE kqgl
6、b.ygbh=:old.bh;END delete_ygb;CREATE or REPLACE TRIGGER update_ygbBEFORE UPDATE ON ygb FOR EACH ROW BEGINUPDATE kqglb SET kqglb.ygbh=:new.bh where kqglb.ygbh=:old.bh;END update_ygb;第 6 页 共 47 页基于 C#+Oracle 的考勤管理系统的设计与开发CREATE or REPLACE TRIGGER delete_kqlxbAFTER DELETE ON kqlxb FOR EACH ROW BEGINDEL
7、ETE FROM kqglb WHERE kqglb.lxbh=:old.bh;END delete_kqlxb;CREATE or REPLACE TRIGGER update_kqlxbBEFORE UPDATE ON kqlxb FOR EACH ROW BEGINUPDATE kqglb SET kqglb.lxbh=:new.bh where kqglb.lxbh=:old.bh;END update_kqlxb;三、系统设计页面1. 主界面:2. 员工信息管理界面:第7 页共47 页基于 C#+Oracle 的考勤管理系统的设计与开发3. 考勤类型管理界面:4. 考勤信息录入界面:
8、第8 页共47 页基于 C#+Oracle 的考勤管理系统的设计与开发5. 考勤统计报表界面:四、系统编程的实现1. 主界面模块 功能:打开各个操作界面。 / 自定义变量第9 页共47 页基于 C#+Oracle 的考勤管理系统的设计与开发publicfrm_ygxx ygxx =null/员工信息窗体变量publicfrm_kqlx kqlx =null/考勤类型窗体变量publicfrm_kqgl kqgl =null/考勤管理窗体变量publicfrm_kqtj kqtj =null/考勤统计窗体变量/ / 窗体加载事件/ private void frm_kqglxt_Load( ob
9、ject sender, EventArgs e) pBtn.Left = (Width - pBtn.Width) / 2;/ / 各子窗体状态处理事件/ private void CloseFrm() (ygxx !=null) ygxx.WindowState =FormWindowState.Minimized;(kqlx !=null) kqlx.WindowState =FormWindowState.Minimized;(kqgl !=null) kqgl.WindowState =FormWindowState.Minimized;(kqtj !=null) kqtj.Wind
10、owState =FormWindowState.Minimized;/ / 员工信息按钮事件/ private void btnYGXX_Click( object sender, EventArgs e) CloseFrm();if (ygxx = null )ygxx = new frm_ygxx (); ygxx.MdiParent =thisygxx.Show();第 10 页 共 47 页基于 C#+Oracle 的考勤管理系统的设计与开发elseygxx.WindowState = FormWindowState .Normal; ygxx.Activate();ygxx.Loc
11、ation = new Point (0, 30);/ / 考勤类型按钮事件/ private void btnKQLX_Click( object sender, EventArgs e) CloseFrm();if (kqlx = null )kqlx = new frm_kqlx (); kqlx.MdiParent = this ;kqlx.Show();elsekqlx.WindowState = FormWindowState .Normal; kqlx.Activate(); kqlx.Location = new Point (0, 30);/ / 考勤管理按钮事件/ priv
12、ate void btnKQGL_Click( object sender, EventArgs e) CloseFrm();if (kqgl = null )kqgl = new frm_kqgl (); kqgl.MdiParent =this ;第 11 页 共 47 页基于 C#+Oracle 的考勤管理系统的设计与开发kqgl.Show();elsekqgl.WindowState = FormWindowState .Normal; kqgl.Activate();kqgl.Location =new Point (0, 30);/ / 考勤统计按钮事件/ private void
13、 btnKQTJ_Click( object sender, EventArgs e) CloseFrm();if (kqtj = null )kqtj = new frm_kqtj (); kqtj.MdiParent = this ; kqtj.Show();elsekqtj.WindowState = FormWindowState .Normal; kqtj.Activate(); kqtj.Location =new Point (0, 30);并可以进行员工信息增、 改、删的操作。2. 员工信息管理模块功能:操作当前员工信息表,/ 自定义变量privatestring type =
14、 ;/ 按钮禁用判断标记privateDataTable table =null ; / 封装数据privatebool isbj = false; / 状态标记/ 第 12 页 共 47 页基于 C#+Oracle 的考勤管理系统的设计与开发/ 窗体加载事件/ private void frm_ygxx_Load( object sender, EventArgs e) table = Program .ConnRead( select * from YGB);dgvYG.DataSource = table; ChangeButton( JZ );/ / 数据表行选择更改事件/ priva
15、te void dgvYG_SelectionChanged( object sender, EventArgs e)try tbBH.Text = dgvYG.SelectedRows0.Cells0.Value.ToString();tbXM.Text = dgvYG.SelectedRows0.Cells1.Value.ToString();cbXB.Text = dgvYG.SelectedRows0.Cells2.Value.ToString();tbBM.Text = dgvYG.SelectedRows0.Cells3.Value.ToString(); catch / / 窗体
16、按钮是否禁用处理事件/ private void ChangeButton( string type)if (type = XG) tbBH.Enabled = !isbj;elsetbBH.Enabled = isbj;第 13 页 共 47 页基于 C#+Oracle 的考勤管理系统的设计与开发tbXM.Enabled = isbj; cbXB.Enabled = isbj; tbBM.Enabled = isbj;dgvYG.Enabled = !isbj; btnZJ.Enabled = !isbj;if (dgvYG.Rows.Count = 0) btnXG.Enabled = f
17、alse btnSC.Enabled = false elsebtnXG.Enabled = !isbj;btnSC.Enabled = !isbj; btnTC.Enabled = !isbj; btnBC.Enabled = isbj; btnQX.Enabled = isbj;/ / 编号文本框输入格式检查事件/ private void tbBH_TextChanged( object sender, EventArgs e)if (tbBH.Text.Length = 0)return if (! char .IsNumber(tbBH.Text, tbBH.Text.Length
18、- 1)tbBH.Text = tbBH.Text.Substring(0, tbBH.Text.Length - 1);if (tbBH.Text.Length 0) tbBH.Select(tbBH.Text.Length, 0);/ 第 14 页 共 47 页基于 C#+Oracle 的考勤管理系统的设计与开发/ 判断是否清空文本框数据事件/ private void btnZJ_Click( object sender, EventArgs e) type = ZJ ;isbj = true ; tbBH.Text = ; tbXM.Text = ; cbXB.Text = 男 ; t
19、bBM.Text = ;ChangeButton( ZJ );/ / 修改数据事件/ private void btnXG_Click( object sender, EventArgs e) if (tbBH.Text = ) return ;type = XG;isbj = true ;ChangeButton( XG );/ / 保存数据事件/ EventArgs e), 提示 , MessageBoxButtons .OK,private void btnBC_Click( object sender, tbBH.Text = tbBH.Text.Trim(); tbXM.Text =
20、 tbXM.Text.Trim();tbBM.Text = tbBM.Text.Trim();if (tbBH.Text = )MessageBox.Show( 编号不能为空。MessageBoxIcon .Error);第 15 页 共 47 页基于 C#+Oracle 的考勤管理系统的设计与开发tbBH.Focus();return ;else if (tbBH.Text.Length 8)MessageBox.Show( 编号长度不能少于位。 , 提示 , MessageBoxButtons .OK, MessageBoxIcon .Error);tbBH.Focus();return
21、;elseif (type != XG)for ( int i = 0; i 0)if (type = ZJ )table.Rows.Add(tbBH.Text, tbXM.Text, cbXB.Text, tbBM.Text);dgvYG.DataSource = table;dgvYG.RowsdgvYG.Rows.Count - 1.Selected = true ;MessageBox.Show( 添加成功。 , 提示 , MessageBoxButtons .OK, MessageBoxIcon .Information);elsefor ( int i = 0; i table.R
22、ows.Count; +i)if (table.Rowsi0.ToString() =dgvYG.SelectedRows0.Cells0.Value.ToString()table.Rowsi1 = tbXM.Text;table.Rowsi2 = cbXB.Text;table.Rowsi3 = tbBM.Text; dgvYG.DataSource = table; break ;MessageBox.Show( 修改成功。 , 提示 , MessageBoxButtons .OK, MessageBoxIcon .Information);type = ;isbj = false ;第
23、 17 页 共 47 页基于 C#+Oracle 的考勤管理系统的设计与开发ChangeButton( BC); else if (type = ZJ )MessageBox.Show( 添加失败,请重新添加。 , 提示 MessageBoxButtons .OK, MessageBoxIcon .Information);elseMessageBox.Show( 修改失败,请重新修改。 , 提示 MessageBoxButtons .OK, MessageBoxIcon .Information);/ / 取消事件/ private void btnQX_Click( object send
24、er, EventArgs e)trytbBH.Text = dgvYG.SelectedRows0.Cells0.Value.ToString();tbXM.Text = dgvYG.SelectedRows0.Cells1.Value.ToString();cbXB.Text = dgvYG.SelectedRows0.Cells2.Value.ToString();tbBM.Text = dgvYG.SelectedRows0.Cells3.Value.ToString();catch type = ; isbj = falseChangeButton( QX ); 第 18 页 共 4
25、7 页基于 C#+Oracle 的考勤管理系统的设计与开发/ / 删除数据事件/ private void btnSC_Click( object sender, EventArgs e) if ( MessageBox.Show( 确定要删除? , 提示, MessageBoxButtons .YesNo, MessageBoxIcon .Asterisk).ToString() =Yes )string sql = delete from YGB where BH = + tbBH.Text + ;if ( Program .ConnNonRead(sql) 0) for ( int i
26、= 0; i 0)if (dgvYG.SelectedRows.Count = 0)dgvYG.RowsdgvYG.Rows.Count - 1.Selected =truetbBH.Text = dgvYG.SelectedRows0.Cells0.Value.ToString();tbXM.Text = dgvYG.SelectedRows0.Cells1.Value.ToString(); cbXB.Text = dgvYG.SelectedRows0.Cells2.Value.ToString();tbBM.Text = dgvYG.SelectedRows0.Cells3.Value
27、.ToString();第 19 页 共 47 页基于 C#+Oracle 的考勤管理系统的设计与开发ChangeButton( SC );MessageBox.Show( 删除成功。 , 提示 , MessageBoxButtons .OK, MessageBoxIcon .Information);elseMessageBox.Show( 删除失败,请重新修改。 , 提示 ,MessageBoxButtons .OK, MessageBoxIcon .Information);/ / 退出事件/ private void btnTC_Click( object sender, EventA
28、rgs e) Close();/ / 退出判断事件/ private void frm_ygxx_FormClosing( object sender, FormClosingEventArgs e)if (isbj)MessageBox.Show( 请先关闭编辑。 , 提示 , MessageBoxButtons .OK, MessageBoxIcon .Asterisk);e.Cancel = true ;/ / 退出后处理主界面变量事件/ private void frm_ygxx_FormClosed( object sender, FormClosedEventArgs e)第 20
29、 页 共 47 页基于 C#+Oracle 的考勤管理系统的设计与开发Program.kqglxt.ygxx = null并可以进行考勤类型增、 改、删的操作。3. 考勤类型管理模块功能:操作当前考勤类型表,/ 自定义变量privatestring type = ;/ 按钮禁用判断标记privateDataTable table =null ; / 封装数据privatebool isbj = false; / 状态标记/ / 窗体加载事件/ private void frm_kqlx_Load( object sender, EventArgs e) table = Program .Con
30、nRead( select * from KQLXB );dgvKQ.DataSource = table; ChangeButton( JZ );/ / 数据表行选择更改事件/ private void dgvKQ_SelectionChanged( object sender, EventArgs e)try tbBH.Text = dgvKQ.SelectedRows0.Cells0.Value.ToString();tbLX.Text = dgvKQ.SelectedRows0.Cells1.Value.ToString();catch 第 21 页 共 47 页基于 C#+Oracl
31、e 的考勤管理系统的设计与开发/ / 编号文本框输入格式检查事件/ private void tbBH_TextChanged( object sender, EventArgs e)if (tbBH.Text.Length = 0) return if (! char .IsNumber(tbBH.Text, tbBH.Text.Length - 1)tbBH.Text = tbBH.Text.Substring(0, tbBH.Text.Length - 1);if (tbBH.Text.Length 0) tbBH.Select(tbBH.Text.Length, 0);/ / 窗体按钮
32、是否禁用处理事件/ private void ChangeButton( string type) if (type = XG)tbBH.Enabled = !isbj;elsetbBH.Enabled = isbj; tbLX.Enabled = isbj;dgvKQ.Enabled = !isbj; btnZJ.Enabled = !isbj; if (dgvKQ.Rows.Count = 0) btnXG.Enabled = false btnSC.Enabled = false elsebtnXG.Enabled = !isbj; btnSC.Enabled = !isbj;第 22
33、页 共 47 页基于 C#+Oracle 的考勤管理系统的设计与开发btnTC.Enabled = !isbj; btnBC.Enabled = isbj; btnQX.Enabled = isbj;/ / 增加数据事件/ private void btnZJ_Click( type = ZJ ; isbj = true ; tbBH.Text = ; tbLX.Text = ;object sender,EventArgs e)ChangeButton( ZJ );/ / 修改数据事件/ private void btnXG_Click( object sender,if (tbBH.Tex
34、t = ) return ;type = XG;isbj = true ;ChangeButton( XG );/ / 保存数据事件/ private void btnBC_Click( object sender, EventArgs e)EventArgs e)tbBH.Text = tbBH.Text.Trim(); tbLX.Text = tbLX.Text.Trim();第 23 页 共 47 页基于 C#+Oracle 的考勤管理系统的设计与开发if (tbBH.Text = )MessageBox.Show( 编号不能为空。 , 提示 , MessageBoxButtons .O
35、K, MessageBoxIcon .Error);tbBH.Focus();return ;elseif (type != XG)for ( int i = 0; i 0)if (type = ZJ )table.Rows.Add(tbBH.Text, tbLX.Text);dgvKQ.DataSource = table;dgvKQ.RowsdgvKQ.Rows.Count - 1.Selected = true ;MessageBox.Show( 添加成功。 , 提示 , MessageBoxButtons .OK, MessageBoxIcon .Information);elsefo
36、r ( int i = 0; i table.Rows.Count; +i)if (table.Rowsi0.ToString() =dgvKQ.SelectedRows0.Cells0.Value.ToString()table.Rowsi1 = tbLX.Text; dgvKQ.DataSource = table; break ;MessageBox.Show( 修改成功。 , 提示 , MessageBoxButtons .OK, MessageBoxIcon .Information);type = ;isbj = false ;ChangeButton( BC);elseif (t
37、ype = ZJ )MessageBox.Show( 添加失败,请重新添加。 , 提示 MessageBoxButtons .OK, MessageBoxIcon .Information);第 25 页 共 47 页基于 C#+Oracle 的考勤管理系统的设计与开发elseMessageBox.Show( 修改失败,请重新修改。 , 提示 MessageBoxButtons .OK, MessageBoxIcon .Information);/ / 取消事件/ private void btnQX_Click( object sender, EventArgs e)trytbBH.Text
38、 = dgvKQ.SelectedRows0.Cells0.Value.ToString();tbLX.Text = dgvKQ.SelectedRows0.Cells1.Value.ToString();catch type = ;isbj = false ;ChangeButton( QX );/ / 删除数据事件/ private void btnSC_Click( object sender, EventArgs e) .YesNo,if ( MessageBox.Show( 确定要删除? , 提示 , MessageBoxButtons MessageBoxIcon .Asteris
39、k).ToString() = Yes )string sql = delete from KQLXB where BH = + tbBH.Text +第 26 页 共 47 页基于 C#+Oracle 的考勤管理系统的设计与开发if ( Program .ConnNonRead(sql) 0) for ( int i = 0; i 0)if (dgvKQ.SelectedRows.Count = 0)dgvKQ.RowsdgvKQ.Rows.Count - 1.Selected =truetbBH.Text = dgvKQ.SelectedRows0.Cells0.Value.ToStrin
40、g();tbLX.Text = dgvKQ.SelectedRows0.Cells1.Value.ToString();ChangeButton( SC );MessageBox.Show( 删除成功。 , 提示 , MessageBoxButtons .OK, MessageBoxIcon .Information);elseMessageBox.Show( 删除失败,请重新修改。 , 提示 , MessageBoxButtons .OK, MessageBoxIcon .Information);/ / 退出事件/ 第 27 页 共 47 页基于 C#+Oracle 的考勤管理系统的设计与
41、开发private void btnTC_Click( object sender, EventArgs e) Close();/ / 退出判断事件/ private void frm_yglx_FormClosing(object sender, FormClosingEventArgs e) if (isbj)MessageBox.Show( 请先关闭编辑。 , 提示 , MessageBoxButtons .OK, MessageBoxIcon .Asterisk);e.Cancel = true ;/ / 退出后处理主界面变量事件/ private void frm_kqlx_Form
42、Closed( object sender, FormClosedEventArgs e)Program.kqglxt.kqlx =null4. 员工考勤信息录入模块功能:操作当前考勤信息表, 并可以进行考勤信息增、 改、删的操作。/ 自定义变量privatestring type = ;/按钮禁用判断标记privateDataTabletable1 =null; /封装数据privateDataTabletable2 =null; /封装数据privateDataTabletable3 =null; /封装数据privatebool isbj =false ;/状态标记/ 第 28 页 共
43、47 页基于 C#+Oracle 的考勤管理系统的设计与开发/ 窗体加载事件/ private void frm_kqgl_Load( object sender, EventArgs e)type = JZ ;table2 = Program.ConnRead( select BH, XM from YGB ); foreach ( DataRow row in table2.Rows)cbYG.Items.Add(row BH.ToString() + + row XM.ToString();table3 = Program.ConnRead( select * from KQLXB ); foreach ( DataRow row in table3.Rows)cbCQQK.Items.Add(row BH.ToString() + + row LX .ToString();string time = dtpTIME.Value.Day +- + dtpTIME.Value.Month + 月- +dtpTIME
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教学式课程设计
- 教务信息系统课程设计
- 非常好的外贸团队管理制度
- 故事形式穿插课程设计
- 改造老旧小区施工方案
- 粮食工厂设计课程设计
- 播音技巧培训课程设计
- 美术课程设计海报
- 面包加工教学课程设计
- 搪玻璃反应釜课程设计
- 浅埋暗挖施工方法大全图文PPT课件
- 聚丙烯Spherizone工艺技术及产品介绍
- 托卡马克装置原理2[1]
- “模拟法庭”在高中法律教学中的应用与探究
- 江苏自考数学教育学知识点
- [二手房买卖合同正式版] 二手房买卖合同最新版
- 部编版五年级语文上册第四单元集体备课教学计划和全部教案
- 五年级语文上册 第六单元 22《蝉》课后练习 北京版-北京版小学五年级上册语文试题
- 最新部编版五年级道德与法治上册第四单元教材分析
- 课程设计 基于电阻应变片的S型称重传感器设计
- 中国血液透析用血管通路专家共识
评论
0/150
提交评论