C#桌面办公应用-工资管理系统系列六

接前文系列五,本文将讲解自主开发的工资管理系统中的员工管理模块:主要包括“员工初始化信息加载”,“员工信息综合查询与分页查询”,“添加员工”,“修改员工信息”,“删除员工信息”;涉及到的技术包括:对SQL进行增删改操作,综合模糊查询,分页查询,图片的上传预览保存查看技术,18位身份证验证算法的实现与应用技术,将查询得到的结果集绑定到comboBox跟dataGridView中等技术。

若有朋友想索取我这自主开发的工资管理系统源码或者开发文档,可以加我QQ:1948831260进行交流,我愿意视情况出售给你,这个系统也可以当做毕业设计系统!当然了,目的主要还是希望能与诸位交流!

本文先介绍员工管理模块中的“员工初始化信息加载”,开发步骤是这样的:设计员工model,在数据库建立相应的员工表,设计并实现员工管理初始化界面,初始化查询绑定员工数据到dataGridView中,单击dataGridView中的某一行可以查看改行对应的员工的详细数据。下面将逐个实现该小模块的功能!

首先是员工表基本字段的建立,如下图所示:

接着是界面的设计与实现,如下图所示:

上图即为员工管理中初始化加载时候的界面:第一部分是“分页查询、增删改、综合模糊查询”;第二部分是“员工信息列表-采用dataGridView控件进行展示”;第三部分是“员工详细信息-各种基本控件以及图片展示空间pitureBox”。

紧接着是“初始化查询绑定员工数据到dataGridView”:主要是窗体的load事件:

        //窗体初始化加载事件private void frmEmployee_Load(object sender, EventArgs e){cmmPage.PageNo = 1;cmmPage.PageSize = pageSize;try{String employeeSQL = "select top "+cmmPage.PageSize+" empId as '员工编号',loginName as '登录用户名',powerName as '用户权限',empName as '员工姓名',age as '年龄',sex as '性别',partName as '所属部门',idCardNo as '身份证号',jobType as '职位类型',jobDate as '入职时间',imagePosition as '图片位置',tb_employee.memo as '备注信息' from tb_employee,tb_powerType,tb_part where tb_employee.powerId=tb_powerType.powerId and tb_employee.partID=tb_part.partID and empId not in (select top "+cmmPage.Start+" empId from tb_employee order by empId)order by empId";recordCount= employeeService.getCount("select COUNT(*) from tb_employee");pageCount = commonMessage.getTotalPage(pageSize, recordCount);bindPaginationQuery(employeeSQL,cmmPage,recordCount,pageCount,sender, e);this.textBoxCurrentPage.Text = "1";}catch (System.Exception ex){MessageBox.Show("初始化加载员工信息出错: \n" + ex.Message);}}

其中,cmmPage是分页工具类的实例,需要在窗体构造函数之后创建,除此之外,还有employeeService也是需要

在窗体构造函数之后创建:

        private EmployeeService employeeService = new EmployeeService();private CommonMessage commonMessage = new CommonMessage();private CommonUtils cmmUtils = new CommonUtils();

其中,employeeService代码如下,其代码需要调用DBOperate即Dao层的代码和CommonUtils工具类的代码,即所谓的MVC逐层调用!而DBOperate和CommonUtils中因为涉及到我自主开发的核心技术,所以在这里就不在贴出来,当然了,在前面已经有贴出一小部分了!如果你想获取我没贴出来的(还是有很多没贴出来的)代码,可以加我上面提供的QQ与我交流,我愿意出售给你!

    //员工服务层class EmployeeService{private DBOperate operate = new DBOperate();private CommonUtils cmmUtils = new CommonUtils();/// <summary>/// 绑定Sql语句查询的结果到dataGridView中/// </summary>/// <param name="sql"></param>/// <param name="dataGridView"></param>public void bindSqlResultToDatagridView(DataGridView dataGridView, String sql){operate.BindDataGridView(dataGridView, sql);#region MyRegion //设置好datagriview中的列的显示宽度dataGridView.Columns[0].Width = 140;dataGridView.Columns[1].Width = 160;dataGridView.Columns[2].Width = 160;dataGridView.Columns[3].Width = 140;dataGridView.Columns[4].Width = 140;dataGridView.Columns[5].Width = 140;dataGridView.Columns[6].Width = 180;dataGridView.Columns[7].Width = 180;dataGridView.Columns[8].Width = 180;dataGridView.Columns[9].Width = 180;dataGridView.Columns[10].Width = 120;dataGridView.Columns[11].Width = 220;#endregion}/// <summary>/// //绑定SQL查询语句中的指定列到下拉列表/// </summary>/// <param name="strTable">数据库表名</param>/// <param name="cb">ComboBox对象</param>/// <param name="i">指定数据列索引</param>public void bindSpecificColumnToComboBox(String strSQL, ComboBox cb){operate.BindDropdownlist(strSQL, cb, 0);}/// <summary>/// 用于判断指定的字段值 是否已经存在/// </summary>/// <param name="strSQL">其中sql语句为:select count(columnName) from ...格式</param>/// <returns></returns>public Boolean isExistSpecificObject(String strSQL){Boolean res = false;int i = operate.HumanNum(strSQL);if (i > 0){res = true;}return res;}/// <summary>/// 根据SQL获取数量值/// </summary>/// <param name="strSQL"></param>/// <returns></returns>public int getCount(String strSQL){return operate.HumanNum(strSQL);}/// <summary>/// 保存或者更新(删除,修改)员工信息/// </summary>/// <param name="strSQL"></param>public int saveOrUpdatePart(String strSQL){int i = operate.OperateData(strSQL);Console.WriteLine("操作的结果: " + i);return i;}/// <summary>/// 获取指定的数据库某一字段的值/// </summary>/// <param name="strObjectSQL">查询的SQL--指定了要查询的数据库字段</param>/// <param name="fieldNames">数据库字段数组</param>/// <returns></returns>public String getSpecificColumnValue(String strObjectSQL, String[] fieldNames){return operate.GetDatasFromSelectedTable(strObjectSQL, fieldNames)[0];}/// <summary>///  根据实际保存时员工相片的名称设置员工的相片的实际保存路径/// </summary>/// <param name="empPictureStoreName"></param>/// <returns>实际保存路径: 项目的debug目录\images\employee</returns>public String setEmpImageRealStoreLocation(String empPictureStoreName){String empImgStoreDestPath = Application.StartupPath.ToString() + "\\images\\employee\\" + empPictureStoreName;return empImgStoreDestPath;}/// <summary>/// 读取员工相片/// </summary>/// <param name="empImageName">数据库存储的员工的相片名:imagePosition</param>/// <param name="myImage"></param>public void readEmpImage(String empImageName, PictureBox myImage){String imageLocation = Application.StartupPath.ToString() + "\\images\\employee\\";try{String imageRealPath = imageLocation + empImageName;myImage.Image = Image.FromFile(imageRealPath);}catch (System.Exception ex){String imageRealPath = imageLocation + "default.jpg";myImage.Image = Image.FromFile(imageRealPath);Console.WriteLine("读取员工相片发生异常: " + ex.Message);}}/// <summary>/// 移除文件夹下指定的相片:当然只有上传了相片的才移除原先的相片/// </summary>/// <param name="removeImageName"></param>public void removeImage(String removeImageName){try{String empImageLocation = Application.StartupPath.ToString() + "\\images\\employee\\" + removeImageName;File.Delete(@empImageLocation);}catch (System.Exception ex){Console.WriteLine("移除员工相片发生异常: " + ex.Message);}}}

在里面,我们可以看到,已经包含了将查询得到的结果集绑定到comboBox跟dataGridView中等技术,当然啦,具体的实现还是Dao那一层代码,即DBOperate类中的代码!

下图是初始化加载员工信息列表时候的效果:

下面实现:“单击dataGridView中的某一行可以查看改行对应的员工的详细数据”,其实就是dataGridView的cellMouseClick事件,源代码如下:

        //鼠标单击事件private void dataGridViewEmployeeInfo_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e){try{textBoxYuanGongDengLuMing.Text = dataGridViewEmployeeInfo.CurrentRow.Cells[1].Value.ToString().Trim();textBoxYuanGongYongHuQuanXian.Text = dataGridViewEmployeeInfo.CurrentRow.Cells[2].Value.ToString().Trim();textBoxYuanGongXingMing.Text = dataGridViewEmployeeInfo.CurrentRow.Cells[3].Value.ToString().Trim();textBoxYuanGongNianNing.Text = dataGridViewEmployeeInfo.CurrentRow.Cells[4].Value.ToString().Trim();textBoxYuanGongXingBie.Text = dataGridViewEmployeeInfo.CurrentRow.Cells[5].Value.ToString().Trim();textBoxYuanGongSuoShuBuMeng.Text = dataGridViewEmployeeInfo.CurrentRow.Cells[6].Value.ToString().Trim();textBoxYuanGongShenFenZheng.Text = dataGridViewEmployeeInfo.CurrentRow.Cells[7].Value.ToString().Trim();textBoxYuanGongZhiWeiLeiXing.Text = dataGridViewEmployeeInfo.CurrentRow.Cells[8].Value.ToString().Trim();dateTimePickerYuanGongRuZhi.Text = dataGridViewEmployeeInfo.CurrentRow.Cells[9].Value.ToString().Trim();textBoxYuanGongBeiZhu.Text = dataGridViewEmployeeInfo.CurrentRow.Cells[11].Value.ToString().Trim();//iamgePosition要不是null:没上传图片 要不就是"位置信息"String imagePosition = dataGridViewEmployeeInfo.CurrentRow.Cells[10].Value.ToString().Trim();if (imagePosition==""){imagePosition = "default.jpg";}employeeService.readEmpImage(imagePosition, EmpPictureBox);}catch(System.Exception ex){employeeService.readEmpImage("default.jpg", EmpPictureBox);Console.WriteLine("鼠标单击发生异常: " + ex.Message);}}

在上面,其实涉及到“C#读取图片并显示在控件pitureBox”技术:

<span style="color:#ff0000;">employeeService.readEmpImage(imagePosition, EmpPictureBox);</span>

这是由employeeService服务类中提供的,当然啦,底层的实现还是有DBOperate实现的,即Dao层的代码!

好了,把效果贴出来吧:

好了,这一文就到这里吧!下来两篇博文就讲讲C#在winform下如何实现分页查询(很有用的哦)、综合模糊查询以及18位身份证号码验证算法的原理以及C#实现!

欢迎各位与我交流!

C#桌面办公应用-工资管理系统系列六相关推荐

  1. C#桌面办公应用-工资管理系统系列七

    C#桌面办公应用-工资管理系统系列七 接前文工资管理系统系列六,本文将介绍C# winform应用程序中的查询模块功能.其中,就包括了综合.模糊查询以及分页查询:值得说明的是,综合查询,其实就是多个条 ...

  2. C#桌面办公应用-工资管理系统系列五

    C#桌面办公应用-工资管理系统系列五 接前文系列四,本文将讲解实现工资管理系统的代码的层次结构.主要采用的是MVCS模式的代码层次结构,视图层(V):是各种winform窗体:控制层(C):主要是wi ...

  3. C#桌面办公应用-工资管理系统系列四

    C#桌面办公应用-工资管理系统系列四 已经好久没写博客了!!!今天就重拾旧业,继续我的博客之旅. 紧接着上面关于C#桌面办公应用-工资管理系统系列一到三的内容,博客接下来可能会有比较多的系列,用于介绍 ...

  4. 人事办公考勤工资管理系统(ssm,mysql)

    人事办公考勤工资管理系统(ssm,mysql)(毕业论文10000字以上,程序代码,MySQL数据库) [运行环境]  IDEA  JDK1.8 Mysql 代码下载网址:  链接:https://p ...

  5. 《vue3+ts+element-plus 后台管理系统系列》之微前端版本

    系列文章目录 <vue3+ts+element-plus 后台管理系统系列一>之简介 <vue3+ts+element-plus 后台管理系统系列二>之布局 <vue3+ ...

  6. vb和php一起开发,基于VB和PHP开发在线人事工资管理系统

    计 算机 科 学 消费 电子 年 月 下 基于 和 开发在线人事工资管理系统 孙 丽 娜 (哈 尔滨铁 道 职 业技 术 学 院 ,哈 尔滨 ) 摘 要 :人事 工资管理 系统越 来越 多的应 用于企 ...

  7. 计算机会计学ufo报表,计算机会计实践部分工资管理系统.ppt

    <计算机会计实践部分工资管理系统.ppt>由会员分享,可在线阅读,更多相关<计算机会计实践部分工资管理系统.ppt(22页珍藏版)>请在人人文库网上搜索. 1.计算机会计学,主 ...

  8. Web前端开发人员和设计师必读文章推荐【系列六】

    这篇文章收录了十一月份发布在梦想天空的优秀文章,特别推荐给Web开发人员和设计师阅读.梦天空博客关注前端开发技术,展示最新HTML5和CSS3技术应用,分享实用的jQuery插件,推荐优秀的网页设计案 ...

  9. 权限管理系统系列之序言

    权限管理系统我相信每个系统都会需要,所以设计一个好的权限管理系统会在系统开发中起到至关重要的作用,节省人力成本和资源,可以不用每次都为权限设计煞费心机.可能每个公司对权限的设计大体相同,略有不同,但是 ...

最新文章

  1. 转载:asp.net生成缩略图通用函数(支持多种生成方式)
  2. redhat linux新建用户,linux redhat 添加用户
  3. redis延迟消息队列不准时php,Redis实现延迟消息队列
  4. 开发日记-20190606 关键词 闲散度日
  5. android简单歌词,Yuan-LrcView
  6. httpd反代 + tomcat cluster + redis会话保持
  7. PHP数组的排序函数
  8. apiCloud中的API对象
  9. WPF Splash Screen 和启动速度相关资料
  10. 第 5 章 单例设计模式
  11. LInux下的交换分区以及相关查看命令
  12. 5个CSS3技术实现设计增强
  13. VB.NET外部程序调用总结下
  14. python3菜鸟教程100例-Python3
  15. 学习如何读论文的一些磨刀不误砍柴工
  16. (转)人工智能公司Kensho是如何改变华尔街的?
  17. html 滚动条自动最底,让DIV的滚动条自动滚动到最底部 - 4种方法
  18. 视频教程-Scratch趣味编程课堂-L1-其他
  19. java计算机毕业设计新疆旅游专列订票系统源码+mysql数据库+lw文档+系统+调试部署
  20. 微信小程序云开发|个人博客小程序

热门文章

  1. Blizzard Something
  2. 应用时间序列分析--有季节效应的非平稳序列分析-ARIMA乘法模型-R语言
  3. Codeforces - Zuma
  4. 服务器安装MQTT服务器并启用websockets,配置SSL
  5. 浅谈天线罩及设计要求
  6. 双向链表双向循环链表基础知识
  7. 嘴对嘴教你使用Gulp
  8. pyshp读取Shapefile方法
  9. 部署SSM项目到Linux
  10. 方法论只能用来避坑,提高下限