数据库课程设计_第1页
数据库课程设计_第2页
数据库课程设计_第3页
数据库课程设计_第4页
数据库课程设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

福建农林大学计算机与信息学院计算机类

课程设计结果评定任务下达日期:2010.1.2任务下达日期:2010.1.2评定内容评定指标等级成绩设计质量1.设计方案具有可行性和创新性,设计思路清晰(满分15分)优良中差2.独立进行设计工作;能运用所学知识和技能去发现与解决实际问题,设计质量较高(满分20分)优良中差3.设计需求合理,功能完善,代码简洁,结构清晰(满分20分)优良中差4.按期完成规定的任务,工作量饱满,难度较大(满分15分)优良中差报告质量1.设计报告格式规范、文字通顺,符号统一,编号齐全,书写工整规范,图表完备、整洁、正确(满分15分)优良中差2.设计报告内容充实,详细设计描述具体,各项内容合乎软件文档撰写要求(满分15分)优良中差评定结果总成绩(满分100分)指导教师签字:

评定日期:TOC\o"1-5"\h\z\o"CurrentDocument"设计目的 2\o"CurrentDocument"设计要求 2\o"CurrentDocument"设计方案 2\o"CurrentDocument"设计内容 3需求分析 3数据库概念结构设计[1] 3数据库逻辑结构设计[1] 5功能模块 6系统使用说明 11测试/运行维护 12\o"CurrentDocument"总结 13\o"CurrentDocument"参考文献 13附录主要代码 14人事管理系统设计目的人事、工资、考勤管理是每个企业必不可少的。人事、工资、考勤管理系统一般包括对人事档案、部门信息、考勤记录的统计、查询、更新、报表输出等功能。如果人工直接统计的话,工作量将十分庞大,特别是如果企业员工较多时,这更是个十分困难的工作,要额外花费大量的人力、物力,给企业带来不必要的经济和人力负担,人工统计将变得不可能想象。用计算机可使人们从繁重而又单调的统计运算中解脱出来,仅用一些简单的操作便可及时准确地获得需要的信息。设计要求该人事管理系统主要面向中小型企业,旨在企业人事、工资、考勤管理信息化。本系统将用户分为两个级别:管理员,一般用户。1) 管理员权限:具有该系统的最高权限,可对数据库进行系统所提供的所有操作。具体内容:查询、增加、删除、修改、备份。2) 一般用户权限:查询。设计方案本系统采用的设计方案是使用VC开发,对数据库有强大的支持。后台数据库使用SQLServer2000数据库,以保证数据的安全和执行高效。人力资源管理系统是一个典型的数据库应用程序,由系统开始界面,员工管理,部门管理,考勤管理,工资管理,系统设置等组成,具体的功能模块如下:1) 系统开始界面系统开始界面模块的主要功能是实现签到,签离,管理,管理和退出。2) 员工管理员工管理模块主要功能是对员工信息进行增加,修改,查询,删除,并且统计在职人数。3) 部门管理部门管理模块主要功能是实现对部门的增加,修改和删除。4)考勤管理考勤管理模块主要是:员工进行请假、出差处理,用一个标签控件显示几个标签页,分别是所有考勤记录、迟到记录、缺勤记录、请假记录、出差记录。5) 工资管理工资管理模块可以设置某个级别的基本工资,可以设置某个指定员工的资金,还可以查询指定员工的工资信息。也可以显示本公司的工资表。6) 系统设置系统设置模块主要是设置公司的上下班时间以及迟到的罚款数额,罚款单位为“元/分钟”。设置信息保存在数据库中的一个专门的表中。设计内容4.1需求分析>能够输入职工的综合情况的输入、修改以及删除;>能够实现对职工信息的浏览;>能够实现对职工进行查询;>设计系统封面并由计时器控制;>系统安全、可靠;>功能齐全;>操作方便、界面友好;>易于维护和扩充。>资料维护:系统维护包括对各种表记录的修改、删除、添加等操作。>资料维护:对数据表中的信息进行浏览。>系统查询:可以按职工编号、姓名等相关信息进行详细或模糊查询。>报表统计:包括统计职工编号、职工姓名、职工性别、所在部门、职工年龄、工作日期、>基本工资、职称、职务和简历等字段。>其它操作:系统封面、计时器控制与人性化提示信息。4.2数据库概念结构设计[1]根据上面的数据流图分析,规划出的实体有:员工信息实体,部门信息实体,工资信息实体,考勤信息实体,系统设置信息实体,考勤状态信息实体。各信息实体的E-R图如下:

员工年龄图2-1员工信息实体图2-4考勤信息实体图2-6考勤状态信息实体4.3数据库逻辑结构设计[1]人事管理信息系统数据库中各个表的设计结构如下所示:(每个表格表示在数据库里的一个表)表2-1 worker员工信息表列名数据类型可否为空说明WidcharNotnull员工工号wnamecharnull员工姓名WtimedatetimeNotnull加入时间WlevelIntNotnull员工级别didcharNotnull部门编号waddresscharNotnull居住地址AgeIntNull年龄SexCharNotnull性别PsdCharNotnull员工密码BonusIntNotnull员工奖金PhoneCharNull员工电话表2-2 dept部门信息表列名数据类型列名数据类型可否为空说明DidCharNotnull部门编号DnameCharnull部门名称表2-3 msalary工资信息表列名数据类型可否为空说明WlevelIntNotnull级别编号MsalIntNotnull基本工资JobChrNotnull级别名称表2-4 check考勤信息表列名数据类型可否为空说明WidCharNotnull员工工号IntimeDatetimeNull签到时间OuttimeDatetimeNull签离时间StatnumIntNull考勤状态编号表2-4 settings设置信息表列名数据类型可否为空说明IntimeDatetimeNotnull上班时间OuttimeDatetimeNotnull下班时间FakuanIntNotnull罚款数额表2-4 state考勤状态信息表列名数据类型可否为空说明StatnullCharNotnull状态编号StatnameCharNotnull状态名称4.4功能模块1.系统开始界面2.签到/签离3.员工管理人事管理系魏2SJ 堂正」,员工管理I部门管理I考勒管理I工资管理I时间设置I增加返回 退出4.部门管理5.考勤管理6.工资管理魏计2<J工号券省 基本工寅奖金忌工资►10013000-30027001002王一1500一2500-8324172002E二1500-10913913001况1一2500-1662334确定7.系统设置4.5系统使用说明软件运行环境操作系统:Windows2000/XP开发工具:VC数据库:SQLServer2000硬件配置:CPU:600MHz以上的处理器内存:64MB,推荐128MB以上硬盘:100MB以上磁盘空间数据库配置及安装“人力资源管理系统”采用SQLServer数据库开发,在程序首次启动时会检查所需的数据库是否已经安装。4.5.3手动配置数据库附加数据库的步骤如下:将程序目录data下的db_manpowerinfo_Data.MDF和db_manpowerinfo_Log.LDF文件拷贝到SQLServer2000安装路径下的“MSSQL”/“Data”目录下。4.6测试/运行维护1.签到.正常输入输出用户名:1001密码:1001提示签到成功非正常输入输出用户名:1001密码:1001提示“您已经签到”2.签离。正常输入输出用户名:1001密码:1001提示签离成功非正常输入输出用户名:1001密码:1001提示“您已经签离”2.增加员工。正常输入输出工号:1003姓名:刘三性别:男部门:办公室级别:组长密码:1003提示增加成功非正常输入输出不输入密码提示“带*号的为必填项”2.删除员工。正常输入输出工号:1003提示删除成功非正常输入输出不输入工号提示“请输入要删除的工号”总结本程序大体实现了人事管理的功能,可以进行签到签离,可以对员工和部门进行增、删、改,可以管理考勤记录,可以管理员工的工资。但也存在很多不足,如没有显示企业所有员工的功能,每天只签到签离一次。但总体上来说我对自己的工作还是比较满意的。其实我已经好久没编过程序了,只是在大一学Java时认真地编过一个简单的系统。以后的时间里没有好好学习,荒废了学业。进入大三后,我决定要好好学习编程,以有一技之长。我听说VC功能非常强大,效率也高,于是我就自学VC。在学习中我发现VC确实很难学,在写本系统时很多东西我都是现学的,或者从网上搜资料,或者从图书馆找资料。虽然这次我只做了个比较简单的系统,并且还很不完美,但在做的过程中我确实尝到了很多有用的东西,因此我对自己的努力和成果还是很满意的。在指导教师的精心教导下,我们学会了如何工程化地编写一个系统软件。首先要对软件的需求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。软件实现上,设计了人性化的系统封面,将各个功能独立出来采用功能模块的设计思想。我们编写程序的过程是辛苦与快乐的,软件设计思想很重要,只要我们在编程,就必须学习新的先进设计思想。参考文献王珊萨师煊著.数据库系统概论(第四版).高等教育出版社2006:P209-227宋昆、李严等著.SQLServer数据库开发实例解析.机械工业出版社2006年1月附录主要代码签到:专门设计一个登录类,它可以弹出一个登录窗口,得到并返回用户的输入。每当需要用户输入用户名和密码时都创建一个这个类的对象。点击签到按钮时系统会隐藏并弹出一个登录对话框,要求用户输入用户名和密码。得到用户输入的用户名和密码后就可以查询数据库,看数据库中是否有此用户。如果有此用户再查看密码是否正确,若密码正确则插入一条考勤记录,签到时间为系统当前时间;若密码不正确则弹出提示。若没有此用户也弹出提示。还要判断用户是否已经签到以防止重复签到,若重复签到则弹出警告。根据用户签到的时间来判断用户的状态是正常还是迟到或者缺勤,并做出相应处理。代码如下:ShowWindow(SW_HIDE);Loginlgn;intflag=lgn.DoModal();if(flag==IDOK)(CStringuid=lgn.GetUid();CStringpsd=lgn.GetPsd();ADOConnectioncon;CString constr="Provider二SQLOLEDB.1;IntegratedSecurity二SSPI;Persist Security Info二False;InitialCatalog二manage;DataSource二.";con.Open(constr);_RecordsetPtrrst1=con.Execute("selectpsdfromworkerwherewid=,〃+uid+〃,〃);if(rst1->adoEOF)MessageBox("请输入正确的用户名!〃,〃错误!");else(_RecordsetPtrrst2二con.Execute(〃selectwidfrom[check]wherewid=,"+uid+",and year(intime)二year(getdate()) andmonth(intime)二month(getdate())\andday(intime)=day(getdate())〃);if(rst2->adoEOF)(rst2->Close();CStringspsd=(rst1->GetCollect(〃psd〃)).bstrVal;spsd.TrimLeft();spsd.TrimRight();if(psd==spsd)(con.Execute("insertinto[check](wid,intime)values('〃+uid+〃’,getdate())〃);rst2=con.Execute("selectdatepart(hh,intime)ashour,datepart(n,intime)asminfromsettings");intintimehour=(rst2->GetCollect("hour")).intVal;intintimemin=(rst2->GetCollect("min")).intVal;rst2->Close();rst2=con.Execute("selectdatepart(hh,getdate())ashour,datepart(n,getdate())asmin");inthour=(rst2->GetCollect("hour")).intVal;intmin=(rst2->GetCollect("min")).intVal;rst2->Close();if((hour-intimehour)>1)(con.Execute("update[check]setstatnum=4wherewid='"+uid+"'andyear(intime)二year(getdate())andmonth(intime)二month(getdate())andday(intime)=day(getdate())");con.Execute("update worker setbonus二bonus-(selectmsalfrommsalary,workerwherewid='〃+uid+〃'andmsalary.wlevel二worker.wlevel)/30wherewid='〃+uid+〃'〃);}elseif((hour-intimehour)==1)(if(min>intimemin)(con.Execute("update[check]setstatnum=4wherewid='〃+uid+〃'andyear(intime)二year(getdate())andmonth(intime)二month(getdate())andday(intime)=day(getdate())〃);con.Execute("updateworkersetbonus二bonus-(selectmsalfrommsalary,workerwherewid='〃+uid+〃'andmsalary.wlevel二worker.wlevel)/30wherewid='〃+uid+〃'〃);}else(con.Execute("update[check]setstatnum=1wherewid='〃+uid+〃'andyear(intime)二year(getdate())andmonth(intime)二month(getdate())andday(intime)=day(getdate())〃);CStringstr1,str2;str1.Format("%d",intimemin);str2.Format("%d",min);con.Execute("updateworkersetbonus二bonus-(60-(〃+str1+〃-〃+str2+〃))*(selectfakuanfromsettings)wherewid='〃+uid+〃’〃);}}elseif((hour-intimehour)==0)con.Execute("update[check]setstatnum=1wherewid='"+uid+",and year(intime)二year(getdate()) andmonth(intime)二month(getdate())andday(intime)=day(getdate())〃);CStringstr1,str2;str1.Format("%d",intimemin);str2.Format("%d",min);con.Execute("updateworkersetbonus二bonus-(〃+str2+〃-〃+str1+〃)*(selectfakuanfromsettings)wherewid='"+uid+"'");}elsecon.Execute("update[check]setstatnum=0wherewid='"+uid+",and year(intime)二year(getdate()) andmonth(intime)二month(getdate())andday(intime)=day(getdate())〃);}elsecon.Execute("update[check]setstatnum=0wherewid='"+uid+",andyear(intime)二year(getdate())andmonth(intime)二month(getdate())andday(intime)=day(getdate())〃);}elseMessageBox("请输入正确的密码!!!","错误!");}elseMessageBox("您已经签到了,请不要重复签到!〃,〃错误!");}ShowWindow(SW_SHOW);签离:签离与签到类似,也是弹出登录窗口要求用户输入用户名和密码,若用户名和密码正确则查询数据库看此用户是否已经签到。若没签到则弹出警告,若已经签到则再查看是否已经签离。若已经签离则弹出敬告,若没签离则在此用户今天的那条考勤记录上增加签离信息,并根据当前时间判断其是否是早退或缺勤,并做出相应处理。员工管理:插入员工时得到用户输入的员工信息,并根据这些信息在员工表中插入一条记录。部门和级别信息用下拉外表显示,显示内容来自数据库,并不是固定的,以此增加灵活性。修改时只要把特定工号的员工的信息修改为用户输入的信息即可。删除时只要工号为用户输入的工号的员工从员工表中删除即可,并将这个员工信息保存在另一张表中以备将来查询。查询进可按工号、姓名、性别、年龄、部门、级别进行查询。按姓名查询时可以模糊查询。系统还可以显示公司的男女员工数及总人数。下面是增加员工的代码:ADOConnectioncon;con.Open("Provider二SQLOLEDB.1;Integrated Security二SSPI;PersistSecurityInfo二False;InitialCatalog二manage;DataSource二.");UpdateData(true);intindex1=m_level.GetCurSel();intindex2=m_dept.GetCurSel();intindex3=m_sex.GetCurSel();if(m_wid==〃〃||index1==-1||index2==T||index3==T||m_psd==〃〃)MessageBox("带*的为必填项!〃,〃警告!");else(CStringstr1;m_level.GetLBText(index1,str1);CStringstr2;m_dept.GetLBText(index2,str2);CStringstr5;m_sex.GetLBText(index3,str5);_RecordsetPtrrst1=con.Execute("selectwlevelfrommsalarywherejob=,〃+str1+〃,〃);intlev二rst1->GetCollect(〃wlevel〃).intVal;CStringstr4;str4.Format(〃%d〃,lev);rst1->Close();rstl二con.Execute(〃selectdidfromdeptwheredname=,〃+str2+〃,〃);CStringstr3二rst1->GetCollect(〃did〃).bstrVal;str3.TrimLeft();str3.TrimRight();con.Execute(〃insert into workervalues(,〃+m_wid+〃,,,〃+m_wname+〃,,,〃+m_wtime.Format(〃%y-%m-%d%H:%M:%S〃)+〃,,〃+str4+〃,,〃+str3+〃,,,〃+m_address+〃,,,〃+m_phone+〃,,,〃+m_age+〃,,,〃+str5+〃,,,〃+m_psd+〃,,0)〃);MessageBox(〃添加成功!〃,〃通知!〃);}部门管理:部门管理相对简单,用一个数据列表控件显示出所有的部门信息,可以对部门进行增、删、改操作。考勤管理。可以对员工进行请假、出差处理,用一个标签控件显示几个标签页,分别是所有考勤记录、迟到记录、缺勤记录、请假记录、出差记录。判断员工的是否迟到或缺勤是通过检查考勤记录的statnum字段来实现的。为了防止数据库中积累大量的考勤记录,管理员可以选择时间段来手动删除考勤记录。之所以不自动删除是为了增加系统的灵活性,想删除那些就删除哪些。部分代码如下:voidKaoQin::OnBtnChuchai()(//TODO:AddyourcontrolnotificationhandlercodehereUpdateData();m_pCon->Open("Provider二SQLOLEDB.1;IntegratedSecurity二SSPI;PersistSecurityInfo二False;InitialCatalog二manage;DataSource二.");_RecordsetPtrrst=m_pCon->Execute("select*from[check]wherewid='〃+m_wid+〃' andyear(intime)二year(getdate())andmonth(intime)二month(getdate())andday(intime)=day(getdate())〃);if(rst->adoEOF)(m_pCon->Execute("insert into [check]values('〃+m_wid+〃',getdate(),getdate(),5)〃);_RecordsetPtrrst=m_pCon->Execute("selectworker.widas工号,wnameas姓名,intimeas签到时间,outtimeas签离时间,statas状态from[check],worker,statewhere[check].wid=worker.widand[check].statnum二state.statnum");m_kqquanbu.m_datagrid.SetRefDataSource(rst);m_kqquanbu.m_datagrid.Refresh();MessageBox("出差成功!〃,〃通知!");}else(m_pCon->Execute("update[check]setstatnum=5,intime=getdate()wherewid='"+m_wid+"'andyear(intime)=year(getdate())andmonth(intime)二month(getdate())andday(intime)=day(getdate())〃);_RecordsetPtrrst=m_pCon->Execute("selectworker.widas工号,wnameas姓名,intimeas签到时间,outtimeas签离时间,statas状态from[check],worker,statewhere[check].wid=worker.widand[check].statnum二state.statnum");m_kqquanbu.m_datagrid.SetRefDataSource(rst);m_kqquanbu.m_datagrid.Refresh();MessageBox("出差成功!〃,〃通知!");}}voidKaoQin::OnButtonDel()(//TODO:AddyourcontrolnotificationhandlercodehereUpdateData();m_pCon->Open("Provider二SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo二False;InitialCatalog二manage;DataSource二.");m_pCon->Execute("delete from [check] wheredatediff(d,'〃+m_q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论