




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、河南理工大学c#程序设计实训报告河南理工大学计算机科学与技术学院课程设计2011 2012学年 第二学期课程名称 c#windows程序设计课设设计题目 人事管理系统 学生姓名 学 号 专业班级 软件工程.net 指导教师 2012 年6月7日目录封面 1目录 21设计任务书41.1题目与要求 41.2本系统涉及的知识点 42功能设计43数据库设计5 3.1数据库概念设计(e-r图) 5 3.2数据库逻辑结构设计 6 3.3数据库物理设计 64 系统实现6 4.1界面设计及实现 6 4.2部门信息管理设计及实现11 4.2.1添加部门信息11 4.2.2浏览部门信息13 4.2.3修改部门信息
2、14 4.2.4删除部门信息165总结18致谢 18参考文献 181 设计任务书1.1 题目与要求 本人计划(与xxx、xxx合作)编写一个员工管理系统,主要用来管理员工基本信息。此系统使得管理人员对公司的工种进行分类,进而确定各个工种所对应的部门信息,在已有部门信息的基础上能够对所有的员工信息进行分类管理。本系统的特点是可以对员工的个人信息、所属部门进行全方位的管理,可以实现工种的浏览、添加、删除和修改等操作,同时界面设计简单、操作方便。其具体要求如下:1、 工种种类设置。 添加工种:添加公司的各种工种信息,包括工种编号、工种名称、工种描述。 浏览工种:能够按照列表方式快速浏览公司的各种工种
3、。 修改工种:能够对工种的信息进行修改。 删除工种:能够对于全部工种的信息进行删除。2、 员工个人信息管理。 添加员工:添加一个员工的基本信息,包括姓名、性别、专业、籍贯、职称、所在工种、所在部门、学历、员工编号。 浏览员工:能够对一个职员的信息进行删除按姓名进行删除。 修改员工:对职员的信息进行修改。 删除员工:能够对于全部职员的信息进行删除。3、 员工所属部门信息管理。 添加部门:添加一个部门的基本信息,包括部门编号、部门名称、部门描述。 浏览部门:能够按照列表方式快速浏览公司所有的部门。 修改部门:能够对部门的信息进行修改。 删除部门:能够对于全部部门的信息进行删除。根据分工,本人的主要
4、工作是完成第三模块,即员工所属部门信息管理,包括添加部门、浏览部门、修改部门、删除部门四个部分。同时,需要对主界面进行设计及实现。1.2 本系统涉及的知识点winform常用控件、属性、方法,ado.net技术。2 功能设计本系统选用c#作为开发语言,采用结合后台sqlserver数据库的c/s结构开发模式,优化了程序代码及结构,提高了程序的运行效率。系统在.net环境中进行开发,该环境提供了大量可选择的数据对象,可以很方便地建立与数据库之间的连接,并在此连接的基础上利用各种常用数据库组件对数据库进行操作。在本系统中,采用sqlconnection对象与后台数据库创建连接,所有针对数据库的操作
5、都需要利用这个对象作为数据库连接对象。 在系统功能分析的基础上,考虑microsoft visual studio 2008程序编制的特点,得到如图2-1所示的系统功能模块图。员工信息管理系统部门信息管理工种种类管理员工信息管理浏览部门添加部门修改部门删除部门浏览员工添加员工修改员工删除员工删除工种修改工种添加工种浏览工种图2-1 功能模块图3 数据库设计3.1 数据库概念设计(er图)根据本系统的需要,可以归纳出一下实体:工种信息实体、部门信息实体、员工信息实体。为了更好地理解各个实体及其含义,用e-r图,即实体关系图对实体进行描述。根据分工,本人任务模块部门信息实体如图3-1所示:部门描述
6、部门编号部门名称部 门图3-1 部门信息实体图3.2 数据库逻辑结构设计系统数据库名称为db_person,数据库中包括:1.工种信息表(tb_jobinfo);2.部门信息表(tb_departinfo);3.员工信息表(tb_personinfo)。下面列出部门信息表的数据结构,如表3-2所示。表3-2 部门信息表(tb_departinfo)的数据结构didint部门编号(主键,自动编号)dnamevarchar部门名称dleadervarchar部门领导remarkvarchar描述图3-2 部门信息表的数据结构3.3 数据库物理设计数据库物理设计,即设置表与表之间的关系。员工信息表中
7、的“部门”来源于部门信息表中现有的部门,员工信息表中的“工种”来源于公众信息表中现有的工种。如果数据库中的信息不能满足正常的依赖关系就会破坏数据的完整性和一致性。根据本系统需要,由e-r图模型进行分析,从而确定出哪些表之间的字段需要进行关联分析如下:1、 员工信息表中的工种字段来源于工种信息表;2、 员工信息表中的部门字段来源于部门信息表;根据本系统特点,需要依次设置员工信息表与工种信息表、员工信息表与部门信息表之间的关系。4 系统实现4.1 界面设计及实现 该界面提供的主菜单,用户可以分别实现对工种信息、员工信息、部门信息等功能的管理。图4-1为员工管理系统的应用程序主界面。图4-1 员工管
8、理系统主界面 此界面用于对各模块进行查询及编辑。程序代码如下:using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.text;using system.windows.forms;using personmis.jobmanage; /导入用于工种设置的命名空间using personmis.departmanage; /导入用于部门设置的命名空间using personmis.incomemana
9、ge; /导入用于员工收入的命名空间using personmis.personmanage; /导入用于员工个人信息的命名空间namespace personmis public partial class frmmain : form public frmmain() initializecomponent(); addjob frmaddjob; private void meneaddjob_click(object sender, eventargs e) if (frmaddjob = null | frmaddjob.isdisposed) frmaddjob = new add
10、job(); for (int x = 0; x < this.mdichildren.length; x+) form tempchild = (form)this.mdichildrenx; tempchild.close(); frmaddjob.mdiparent = this; frmaddjob.show(); adddepart frmadddepart; private void menuadddepart_click(object sender, eventargs e) if (frmadddepart = null | frmadddepart.isdisposed
11、) frmadddepart = new adddepart(); for (int x = 0; x < this.mdichildren.length; x+) form tempchild = (form)this.mdichildrenx; tempchild.close(); frmadddepart.mdiparent = this; frmadddepart.show(); adddepart frmaddperson; private void menuaddperson_click(object sender, eventargs e) if (frmaddperson
12、 = null | frmaddperson.isdisposed) frmaddperson = new addperson(); for (int x = 0; x < this.mdichildren.length; x+) form tempchild = (form)this.mdichildrenx; tempchild.close(); frmaddperson.mdiparent = this; frmaddperson.show(); adddepart frmaddincome; private void menuaddincome_click(object send
13、er, eventargs e) if (frmaddincome = null | frmaddincome.isdisposed) frmaddincome = new addincome(); for (int x = 0; x < this.mdichildren.length; x+) form tempchild = (form)this.mdichildrenx; tempchild.close(); frmaddincome.mdiparent = this; frmaddincome.show(); browsejob frmbrowsejob; private voi
14、d menubrowsejob_click(object sender, eventargs e) if (frmbrowsejob = null | frmbrowsejob.isdisposed) frmbrowsejob = new browsejob(); for (int x = 0; x < this.mdichildren.length; x+) form tempchild = (form)this.mdichildrenx; tempchild.close(); frmbrowsejob.mdiparent = this; frmbrowsejob.show(); br
15、owsedepart frmbrowsedepart; private void menubrowsedepart_click(object sender, eventargs e) if (frmbrowsedepart = null | frmbrowsedepart.isdisposed) frmbrowsedepart = new browsedepart(); for (int x = 0; x < this.mdichildren.length; x+) form tempchild = (form)this.mdichildrenx; tempchild.close();
16、frmbrowsedepart.mdiparent = this; frmbrowsedepart.show(); browseperson frmbrowseperson; private void menubrowseperson_click(object sender, eventargs e) if (frmbrowseperson = null | frmbrowseperson.isdisposed) frmbrowseperson = new browseperson(); for (int x = 0; x < this.mdichildren.length; x+) f
17、orm tempchild = (form)this.mdichildrenx; tempchild.close(); frmbrowseperson.mdiparent = this; frmbrowseperson.show(); browseincome frmbrowseincome; private void menubrowseincome_click(object sender, eventargs e) if (frmbrowseincome = null | frmbrowseincome.isdisposed) frmbrowseincome = new browseinc
18、ome(); for (int x = 0; x < this.mdichildren.length; x+) form tempchild = (form)this.mdichildrenx; tempchild.close(); frmbrowseincome.mdiparent = this; frmbrowseincome.show(); private void menuexitsystem_click(object sender, eventargs e) application.exit(); about frmabout; private void menuabout_c
19、lick(object sender, eventargs e) if (frmabout = null | frmabout.isdisposed) frmabout = new about(); for (int x = 0; x < this.mdichildren.length; x+) form tempchild = (form)this.mdichildrenx; tempchild.close(); frmabout.mdiparent = this; frmabout.show(); private void timer1_tick(object sender, eve
20、ntargs e) this.ttstime.text = "时间为:" + datatime.now.tostring(); 4.2 部门信息管理设计及实现4.2.1添加部门信息添加部门信息界面用于部门基本信息的录入,包括部门名称、部门领导和备注。该界面如图4-2所示。图4-2 添加部门信息界面添加部门信息的代码如下:添加部门信息窗口程序adddepart.cs public static string strconn = "data source = (local);initial catalog = db_person;integrated security
21、 = ture" private void btnok_click(object sender, eventargs e) if (this.txtdepname.text.trim() = "" | this.txtdepleader.text.trim() = "") messagebox.show("请输入完整信息!","提示",0); else using(sqlconnection con = new sqlconnection(strconn) if(con.state = connectio
22、nstate.closed) con.open(); ; try sqlcommand cmd = new sqlcommand(select * from tb_departinfo where dname = '" + txtdepname.text.trim() + "'",con); if(cmd.executescalar()!= null) messagebox.show("部门名称重复输入,请重新输入!","提示",0); else string sql = "insert into
23、tb_departinfo(dname, dleader,remark)values('" + this.txtdepname.text.trim() + "','" + this.txtdepleader.text.trim() + "','" + this.txtremark.text.trim()+ "'); cmd.commandtext = sql; cmd.executenonquery(); messagebox.show("添加部门信息成功!",&qu
24、ot;提示",0); this.txtdepname.clear(); this.txtdepleader.clear(); this.txtremark.clear(); catch(exception ex) messagebox.show("错误:" + ex.message,"错误提示",messagebox buttons.okcancel,messageboxicon.error); finally if(con.state = connectionstate.open) con.close(); con.dispose(); 4.
25、2.2浏览部门信息在浏览部门信息界面中,用户可以按照列表的方式快速查看公司所有的部门,并可以在该界面中完成修改和删除操作。浏览部门信息界面如图4-3所示。图4-3 浏览部门信息界面浏览部门信息的代码如下:浏览部门信息窗口程序browsedepart.cspublic static string strconn = "data source = (local);initial catalog = db_person;integrated security = ture"private void browsedepart_load(object sender, eventarg
26、s e) showinf();/<summary>/在datagridview控件上显示记录/</summary>private void showinf() using(sqlconnection con = new sqlconnection(strconn) if(con.state = connectionstate.closed) con.open(); ; try string sql = "select did as 编号,dname as 部门名称,dleader as 部门领导,remark as 描述 from tb_departinfo
27、order by did" sqldataadapter adp = new sqldataadapter(sql,con); dataset ds = new dataset(); ds.clear(); adp.fill(ds,"depart"); this.dgvdepartinfo.datasource = ds.tables0.defaultview; catch(exception ex) messagebox.show("错误:" + ex.message,"错误提示",messageboxbuttons.ok
28、cancel,messageboxicon.error); finally if(con.state = connectionstate.open) con.close(); con.dispose(); 4.2.3修改部门信息修改部门信息界面与添加部门信息界面相似,但在实现方法上有一定的区别,并且在修改部门信息时需要避免部门名称的重复,修改部门信息界面如图4-4所示:图4-4 修改部门信息界面作为update语句的限定条件,程序需要确保部门名称修改后不能与现有部门名称发生重复,如果发生此情况,弹出提示对话框,结束流程。 修改部门信息的代码如下:修改部门信息窗口程序modifydepart.c
29、sprivate void btnupdate_click(object sender, eventargs e) if (this.txtdname.text.trim() = "" | this.txtdleader.text.trim() = "") messagebox.show("请输入完整信息!","提示",0); else using(sqlconnection con = new sqlconnection(strconn) if(con.state = connectionstate.closed
30、) con.open(); ; try sqlcommand cmd = new sqlcommand(select * from tb_departinfo where dname = '" + txtdepname.text.trim() + "'and did<>" + this.tag.tostring().trim(),con); if(cmd.executescalar()!= null) messagebox.show("部门名称发生重复,请重新输入!","提示"); else st
31、ring sql = "update tb_departinfo set dname = '" + txtdname.text.trim() + "',dleader = '" + txtdleader.text.trim() + "',remark = '" + txtremark.text.trim() + "'where did =" + this.tag.tostring().trim(); cmd.commandtext = sql; cmd.execute
32、nonquery(); messagebox.show("部门信息修改成功!","提示",0); catch(exception ex) messagebox.show("错误:" + ex.message,"错误提示",messageboxbuttons.okcancel,messageboxicon.error); finally if(con.state = connectionstate.open) con.close(); con.dispose(); 4.2.4删除部门信息 删除部门信息之前,应该判定是
33、否存在与当前部门相关的其他记录,如果没有则可以删除部门信息记录,否则给出提示信息。而本系统中存在部门信息表与员工信息表之间的依赖关系,因而不能直接删除掉部门信息,需要判定员工信息表中是否有与该部门相关的信息。 修改部门信息的代码如下:修改部门信息窗口程序modifydepart.csprivate void bntdelete_click(object sender, eventargs e) using(sqlconnection con = new sqlconnection(strconn) if(con.state = connectionstate.closed) con.open(
34、); ; try if(this.dgvdepartinfo.currentcell ! = null) string sql = "select dname from tb_departinfo where did = " + this.dgvdepartinfo0,this.dgvdepartinfo.currentcell.rowindex.value.tostring().trim() + " and did not in (select distinct tb_departinfo.did from tb_personinfo inner join tb
35、_departinfo on tb_personinfo.did = tb_departinfo did)" sqlcommand cmd = new sqlcommand(sql,con); sqldatareader dr; dr = cmd.executereader(); if(!dr.read() messagebox.show("删除部门'" + this.dgvdepartinfo0,this.dgvdepartinfo.currentcell.rowindex.value.tostring().trim() + "'失败,
36、请先删除与此部门相关的员工!","提示"); dr.close(); else dr.close(); sql = "delete from tb_departinfo where did = " + this.dgvdepartinfo0,this.dgvdepartinfo.currentcell.rowindex.value.tostring().trim() + " and did not in (select distinct did from tb_personinfo)" cmd.commandtext = sql; cmd.executenonquery(); messagebox.show("删除部门'" + this.dgvdepartinfo0,this.dgvdepartinfo.currentcell.rowindex.value.tostring().trim() +"'成功","提示"); catch(exception ex) messagebox.show("错误:" + ex.message,"错
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 辽宁省沈文新高考研究联盟2024-2025学年高二下学期开学检测语文试题(解析版)
- 教师考核考勤提案会发言稿
- 2024年特许金融分析师考试团队合作试题及答案
- 高中语文知识
- 广西钦州市第四中学2024-2025学年高一下学期2月考试地理试卷(解析版)
- 预防军人自杀
- 2024年特许金融分析师考试重点突破试题及答案
- 2024年特许金融分析师考试焦虑应对策略试题及答案
- 2024年特许金融分析师考试全站试题及答案
- 特许金融分析师考试准备试题及答案
- 新能源充电桩创业计划书
- 2019温泉小镇规划方案
- 《无人机概论》第1章 无人机概述
- 村医基药培训课件
- 食品新产品开发 课件 第三章 食品新产品开发配方设计
- 诊所消防安全培训课件
- 小学语法专项-be动词练习(含答案)
- 油橄榄主要病虫害及防治
- 霞浦县沙江水闸除险加固工程环境影响报告
- 卖油翁说课稿
- 智慧酒店数字智能化整体解决方案
评论
0/150
提交评论