第一篇:数据库课程设计工资管理系统.
数据库课程设计报告 工资管理系统
组员:廖翔, 刘小芳, 强江波, 张晶晶,冯兆强,夏冲 组长 :刘小芳 需求分析员 :张晶晶
程序员 :廖翔 , 刘小芳 , 强将波 测试员 :冯兆强 界面设计员 :夏冲 目录
一 绪论 ··········································3 二 课程设计说明····································3 三 需求分析·········································4 四 物理结结构设计···································5 五 数据字典·········································5 六 数据库设计·······································10 七 功能实现截图·····································11 八,小结············································21 附录 1.(组员及学号
廖翔(,刘小芳(41009040127,冯兆强(, 张晶晶(41009040130,夏冲(,强将波(2.开发环境说明
使用 C#进行客户端应用程序的开发,数据库管理系统采用 SQL SERVER
一、绪论
随着计算机技术的飞速发展和经济体制改革的不断深入, 传统企业管理方法、手段以及 工作效率已不能适应新的发展需要, 无法很好地完成员工工资管理工作。提高公司企业管理 水平的主要途径是更新管理者的思想,增强对管理活动的科学认识。基于 C#与 SQL server 数据库技术建立一个通用工资管理系统,该系统为提供了查询、增加记录、删除等 功能, 功能比较的齐全, 并对工资进行了统计如津贴管理、报表统计等。基本上能满足管理 员和公司的要求。
此次数据库课程设计的主要设计如下: 原理分析、程序设计过程、程序实现和程序调试以及数据库的设计。需求分析、概要结构设计、逻辑结构设计、物理结构设计和数据库的实施和维护。二.课程设计说明
1.设计题目:工资管理系统 2.设计任务与要求: 2.1实验任务
1.掌握数据库设计和实现的基本过程 2.掌握数据库模式设计、分析和实现的方法 3.了解数据库应用系统软件开发的一般过程。2.2 实验基本要求(1学习相关的预备知识
(2按照数据库设计与实现过程完成数据库的设计,应用程序的开发,上机调试、运 行
(3写出课程设计报 3.目的
本说明书目的在于明确说明系统需求,界定系统实现功能的范围, 指导系统设计以 及编码。本文档作为人力资源管理系统的需求说明文档,用于与用户确定最终的目标, 并成为协议文本的一部分,同时也是本系统设计人员的基础文档。
4.背景 工资管理系统
工资管理部门希望建立一个数据库来管理员工的工资。要计算员工的工资, 就需要考虑 不在休假日期以内的假期、工作期间的病假时间、奖金和扣除的部分。必须指明给每个员工 发薪水的方式, 随着时间的推移, 方式可能会有些改变。大多数的员工是通过银行卡来结算 工资的, 但是也有一部分人使用现金或支票。如果是通过银行卡, 就需要知道账号和卡的类 型。付款方式只可能是一种方式。有几种原因可以扣除工资:例如,个人所得税、国家税、医疗保险、退休保险或者预付款。
5.主要包括三大功能模块: 1.登录界面选择 [员工登录 ]即可进入 [员工登陆界面 ], 选择 [管理员登陆 ]即可进入 [管理员 登录界面 ]。
2.管理员功能模块。3.员工功能模块.6.操作说明
6.1 无论是管理员还是员工,操作都以员工编号来进行。
6.2 管理员可以对员工基本信息增、删、查、改, 员工只能对本人基本信息和工资信息查询。三.需求分析
1.功能需求分析: 该通用工资管理系统具备下列功能:登录界面选择 [员工登录 ]即可进入 [员工登陆界面 ], 选 择 [管理员登陆 ]即可进入 [管理员登录界面 ].管理员通过输入用户名和密码进下该系统后, 可以进行一些基本查询(员工个人信息查 询 , 员工工资信息查询 , 修改(修改员工基本信息 , 修改工资信息 , 删除(员工个人资料删除 , 员工工资信息删除 , 录入(员工资料录入 , 员工工资资料录入;;通过输入密码,可以进行 查询员工的数据(工资,奖金津贴,加班情况。
员工通过输入用户名和密码即可进入系统 , 可以进行查询(查询个人基本信息和工资信 息.2.数据流需求分析:
数据库 数据库需求分析——数据流图 四.物理结构设计 1.系统模块划分
五.数据字典 2.1表字典
2.2表字段字典
六.数据库设计 1.建表 : EmpInfoTable(Id[主键 ],Name,Position,Status;SalaryInfoTable(Id主键 ],Name,Prize,Pasepay,RetirementInsurance,Income,Stute,Medical, Dayleave,Deduced,Paytpe,CardNumber,Cardtype,GrossSalary,NetSalary,Date;(1 员工基本信息表 :(2员工工资表 :
七.功能实现截图 1.登录界面
2.管理员部分 :(1管理员登陆界面
(2管理员功能选择界面
(3.录入员工基本信息界面(4录入员工工资信息
(5.修改功能选择界面
A.修改员工基本信息
B.修改工资信息
(6.管理员查询界面 A.查询功能选择界面
B.查询员工基本信息
C.查询工资信息
(7.管理员查询界面 A.功能选择界面
B.管理员修改员工个人信息
C.管理员修改员工工资界面界面
(8.管理员删除界面 A.功能选择界面
B.删除员工个人信息及工资信息界面
C.删除员工工资信息界面
3.员工功能界面(1.员工登录界面
(2.员工功能选择界面
(3.员工查询本人基本信息(4.员工查询本人工资信息 4.测试分析 4.1 更改员工资料不可以更改身份。4.2 修改员工工资信息一旦失败 就会把原有信息删除。4.3 管理员固定,且只有一个。八.小结 该工资管理系统总体说来功能比较齐全,管理
员和员工的一些基本的功能 都已经具备; 数据库的设计方面,建有员工表、工资表。数据库中存在一些问题,如数据冗余,不够完善。但在做课程设计的过程中也遇到很多问题,一开始时其中最大的问题是数 据库的连接部分,该部分直接影响到数据库与应用程序接口实现,而且必须注意 数据库数据库的名称与连接数据库的取名以致.后来经过大家的合作努力解决了 这个问题.在编写程序时,确实也遇到了很多困难,后来经过调试后终于把自已想 到实现的功能一步步实现了,通过这次课程设计使我收获了好多,熟悉了 C#的 运用,还复习了数据库相关语句的编写。此次课程设计让我感受颇多:做一个数据库其实是一件很有趣的事情。想到
自己可以创建一个小型的数据库系统,有点学习后的满足感。数据库的建立并非 难事,难点在于数据库的连接和编程语言的选择。C#的功能很强大,这也是我以 后需要学习的课程,于是我毅然选择了它。再就是建立数据库系统的步骤,我的 经验就是要先总体规划,再局部整理。先做好总的界面,再通过该界面的布置一 步一步实现其功能!同时我体会到: 熟练的编程能力,对知识运用的强烈渴望及其创新和团队的合作 精神设做好一个大型数据库的基础。因此通过此次课程设计我明显感觉到自身的 不足,并希望以后能更加用心地运用所学知识和学习新的知识。
第二篇:工资管理系统--软件工程课程设计2
目 录
目录...............................................................................................................第一章 绪
论.................................................................................................1.1 开发背景说明....................................................................................1.2课程设计目的.....................................................................................1.3课程题目及内容.................................................................................1.4课程设计要求.....................................................................................1.5预期目标.............................................................................................1.6 系统环境............................................................................................第二章 可行性分析.........................................................................................2.1 可行性研究前提................................................................................2.2 经济上可行性....................................................................................2.3 技术可行性........................................................................................2.4目标方案可行性.................................................................................2.5操作可行性.........................................................................................第三章 需求分析.............................................................................................3.1引言.....................................................................................................3.2任务陈述.............................................................................................3.3市场需求分析.....................................................................................3.4系统功能需求分析.............................................................................3.5系统性能需求分析.............................................................................3.6 系统业务数据流...................................................错误!未定义书签。3.7用例分析...........................................................................................3.8用例列表...........................................................................................3.9绘制系统模型图...............................................................................第四章 系统概要设计...................................................................................4.1模块分析和概要设计.......................................................................4.2 系统数据库逻辑结构设计..............................................................4.3概念模型转换为关系数据模型.......................................................4.4 数据库设计......................................................................................第五章 详细设计...........................................................................................5.1登录管理...........................................................................................-***39424243443
入帐目时的错误,可以根据职工的考勤、职务、部门、各种税费等等,自动求出工资。为了便于企业领导掌握本企业的工资信息在系统中应加入各种查询功能,包括个人信息、职工工资、本企业内某一个月或某一部门的工资情况查询。系统应能输出各类统计报表。
本系统需要完成的功能主要有:系统数据初始化;职工基本信息数据的输入、修改、删除;企业工资的基本设定;职工工资的浏览;职工个人工资表的查询;职工工资的计算;工资报表打印。
数据流:
职工基本状况:包括职工编号、职工姓名、性别、年龄、职位等。工资级别和工资金额:包括工资等级、工资额。
企业部门及工作岗位信息:包括部门名称、工作岗位名称、工作岗位工资等。工资信息:包括职工编号、职工姓名、职工基本工资、职工岗位工资、职工工龄工资、公司津贴、职工实发工资等。工龄和工资金额:包括工龄及对应工资额。
1.4课程设计要求
坚持“规格严格,功夫到家”的优良传统,加强基本功训练,做到理论与实际相结合,继承与创新相结合,充分发挥学生的主观能动性与教师因材施教、严格要求相结合,抓智力因素教育与非智力因素教育相结合,教书育人。所设计的工资管理系统应包含输入输出、修改、删除、查询等基本功能。根据题目的基本需求,画出流程图、用例图、类图等,编写程序,并写出详细的设计说明书。课程设计过程中,要严格遵守课程设计的时间安排,听从指导教师的指导。正确地完成上述内容,规范完整地撰写出课程设计报告。
1.5预期目标
计划设计:对于企、事业单位的工资发放来说,不需要太大型的数据库系统,只需要一个操作方便,功能实用,能满足财务部门对工资及时的发放。本工资管理系统预期目标就是实现如下的一些功能:查询浏览记录功能,增加记录功能、修改记录功能、删除记录功能、刷新记录功能、最后实现统计计算功能。
1.6 系统环境
1.6.1硬件:个人PC 1.6.2软件:
Windows XP、Microsoft Visual C++6.0、Rational Rose。
第二章 可行性分析
2.1 可行性研究前提
要求:满足对工资管理的基本要求及功能,并对职工信息收集、处理、保存。目标:实现无纸化办公,节省成本,提高工作效率。
条件、假定、限制:当企业工资管理的信息量和复杂程度达到某一限度时,即管理人员的劳动强度超过其承受能力时,就必须采用新的管理手段,如用计算机技术对信息的收集、加工、传递和存贮等,这样,一个工资管理系统就可以对企业职工工资进行高效、合理、恰当地管理。
2.2 经济上可行性
开发成本要低廉。
效益:大幅度地提高工资管理信息系统的工作质量和效率,让企业掌握整个工资管理系统的全面情况,为管理人员提供了准确的工资管理信息,促进工资管理工作的规范化及各项管理制度与指标体系的建立和健全;提供各种加工处理了的工资管理信息,以满足工资管理的特殊要求,适应新形势对职工队伍提出的新要求。
效益/投资比:暂时无法估算。投资回收期内:
(1)企业有能力承担系统开发费用。
(2)新系统将为企业带来经济效益。管理系统是一个信息化、智能化和先进。理理念的集合体。而管理是一个动态过程,在其运行过程中要采取多项措施。其最主要的表现就是减少了企业管理费用和人力开支。
2.3 技术可行性
(1)软件需求:操作系统WINDOWS 2000 Advance Server以上。
硬件需求:赛扬1.7G CPU、512M内存 80G硬盘的计算机。(2)本系统采用VC++实现,依靠其强大的面向对象系统,与数据库管理系统相结合。
(3)要求掌握计算机技术,熟悉系统的功能和使用方法使系统能够顺利运行。
2.4目标方案可行性
计算机设备处理繁杂的工资增减问题,大幅度减少人力、物力,极大地提高企业的管理水平和管理效率。
管理水平和管理效率的提高能直接产生经济效益。
格,如完成任务表、考勤表、考核表、职工当月的扣款情况(包括水电费、病事假扣款等)等计算职工变动工资、个人所得税和应发放工资等,编制工资单。按类进行汇总,编制工资汇总表。将实发工资转入代发银行,由银行代发工资,并进行账务处理。工资结算过程主要设计如下会计账户:现金、银行存款、应付工资、其他应付款、其他应收款等。
3.3市场需求分析
工资管理系统是一个企业单位不可或缺的部分,他能为用户提供充足的信息和快捷的查询手段。一个工资管理系统可以高效能、大容量的收集、处理、存储工资管理信息,大幅度的工资管理信息系统的工作质量和效率。
能够为企业管理人员及时掌握整个工资管理系统的全面情况,提供系统的准确的工资管理信息,可以促进工资管理工作的规范化及各项管理制度与指标体系的建立和健全。为企业提供各种加工管理了工资管理信息,以满足工资管理的特殊要求,适应新形势对职工队伍建设提出的新要求,帮助管理人员选择方案,实现优化决策。虽然当前,不少单位的工资管理部门对于计算机应用还仅限于简单的单机应用,随着时间的推移、任务的复杂、用户的需求,其应用还会扩大。
3.4系统功能需求分析
工资管理系统涉及到员工基本信息的录入、修改和删除,工资标准的设定、查询和结算等。
典型的工资管理系统主要有以下基本功能: a)系统数据初始化
b)员工基本信息的录入、修改、删除等功能
c)工资标准的设定功能,集体包括职务工资、职称工资、其他工资标准和福利的设定。
d)工资信息的浏览
e)员工工资信息表的创建及查询 f)工资调整管理 g)工资计算 h)工资报表打印
3.5系统性能需求分析
3.5.1 需求分析总体目标
需求分析的目的在于与开发人员与用户之间达成系统开发的共识,使开发人员所考虑的系统在功能(系统能做什么)、简单操作,良好界面,个人信息保密性,系统安全与稳定,良好帐户管理,友好信息返回模式(如报表及打印功能)。
时,防止数据被不法分析任意的修改和破坏,对所有的敏感数据均进行基于SSL协议 的加密操作,只有对信息解密的人员才能最终读取数据信息。这样,能 最大程度的防止数据在传输过程的安全保密性。
3.6 系统业务数据流
3.6.1 数据流分析
数据流程图是一种能全面描述信息系统逻辑模型的主要工具,也是系统分析人员与用户进行交流的有效手段。本系统的数据流程图把握住对系统总体目标与总体功能的要求,基于上述的业务流程图,从科学性,合理性和可行性入手,采用自顶向下,逐层分解的方法建立本管理信息系统的逻辑模型,综合地反映出信息在本系统中的流动,处理和存储,具有抽象性和概括性.通过进行用户调查收集用户需求后,就要对用户需求进行分析,并表达用户的需求。采用结构化分析方法,主要采用数据流图对用户需求进行分析,用数字字典和加工说明对数据流图进行补充和说明。数据流图用于描述系统中数据流动的过程,反映的是加工处理的对象。
3.6.2 流程图,模块图如下:
流程图
模块图
112
3.9.2活动图:
分析用例中的逻辑流程,描述用例的事件流,进而画出各用例对应的活动图 用户登录活动图:
管理员工信息活动图:
3.9.3 类图:
类图是面向对象的软件开发中的一个核心概念。Rose中的类图用于描述软件系统中涉及到的类的相关信息,以及类与类之间的相互关系。
〔1〕类的识别
类的识别通常由分析员在分析问题域的基础上来完成。常用的方法有: a.名词识别法。 b.系统识别法。 c.从用例中识别类。 d.利用分解与抽象技术。〔2〕系统类图
3.9.4状态图:
状态图(State Diagram)用来描述一个特定对象的所有可能状态及其引起状态转移的事件。
3.9.5 时序图:
时序图用来描述对象之间动态的交互关系,着重体现对象间消息传送消息的时间顺序。下面分别给出各个用例的时序图:
用户登录时序图:
职工时序图:
71819
设计一般分为三个步骤:
〔1〕概念模型转换为关系数据模型。〔2〕关系模型的优化。〔3〕设计用户子模式书号。
4.3概念模型转换为关系数据模型
一般转换原则如下:
〔1〕一个实体转换为一个表(Table),则实体的属性转换为表的列(Column),实体的码转换为表的主键(Primary Key)。
〔2〕实体间的联系根据联系的类型,转换如下: ① 1:n 的联系:
1:n 的联系是比较普遍的联系,其转换比较直观。转换规律是在n 端的实体对应的表中增加属性,该属性是1 端实体对应表的主码。如:岗位和员工的关系是1:n 的联系。
② m:n 的联系:
通过引进一个新表来表达两个实体间多对多的联系,新表的主码由联系两端实体的主码组合而成,同时增加相关的联系属性。如:部门与员工的联系是n:m 联系。
4.4 数据库设计
数据库的物理结构设计是指为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法),它完全取决于给定的计算机系统。物理结构可分两步进行。第一步是分析所得到的各种数据模型,依据在实际执行时可能产生的数据容量以及各种数据模型之间的相互依赖程度等,确定数据库的物理结构;第二步则要根据某种方法对所设计的物理结构进行评价,评价重点是时间和空间的效率。数据库实施是指建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
根据人员规模,我们只建立起一个数据库,在此数据库基础上建立起如下表:
·职工表
·用户表
·工资表
下面说明各表的字段名称和数据类型:
工资表:
职工表:
用户表:
第五章 详细设计
详细设计阶段主要是将系统中的每个模块完成的功能进行具体描述。
5.1登录管理
根据系统总体结构可以得出登录管理模块实现用户登录、密码修改和退出系统三个功能。其中,退出系统实现流程很容易,只需要一行代码即可;用户登录的实现流程是用户在登录窗口输入用户名称和密码,如果没有用户名和密码可以进行注册后再登录,选择了用户角色后,单击【登录】按钮进行提交,系统开始验证用户提交的登录信息是否正确。如果正确,则打开工资管理系统,并根据用户角色赋于相应的操作权限;否则给出错误信息。
5.1.1界面设计 登录界面如下:
5.1.2 代码
部分核心代码设计: void CZHUCE::OnButton1(){
UpdateData(TRUE);if(m_username.IsEmpty()||m_password.IsEmpty()||m_password2.IsEmpty()){AfxMessageBox(“请将资料填写完整!”);m_password2.Empty();
m_password.Empty();
UpdateData(FALSE);
return;} OnInitADOConn();if(m_password2==m_password){
CString str;
str.Format(“insert into 用户表(用户名,密码)('%s','%s')”,m_username,m_password);
_variant_t var;
int fieldrow;
try{//捕捉表的主键存在重复值的异常
m_pConnection->Execute((_bstr_t)str,&var,adCmdText);
fieldrow=(int)V_I2(&var);
}
catch(...)
{
AfxMessageBox(“用户名已存在,注册失败”);
m_username.Empty();
m_password.Empty();
m_password2.Empty();
UpdateData(FALSE);
return;}
AfxMessageBox(“注册成功,请返回登录!”);
m_pConnection->Close();
Clogin clg;
clg.DoModal();} else{AfxMessageBox(“两次密码输入不一样,注册失败!”);
m_username.Empty();
m_password.Empty();m_password2.Empty();
}} UpdateData(FALSE);return;void CZHUCE::OnInitADOConn()try {//创建连接对象实例
} catch(_com_error e){ AfxMessageBox(e.Description());m_pConnection.CreateInstance(“ADODB.Connection”);//设置连接字符串 Cstring
strConnect=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=salary.mdb;Persist Security Info=False;”;//使用Open方法连接数据库
m_pConnection->Open((_bstr_t)strConnect,“",”“,adModeUnknown);
}
try{if(m_pConnection==NULL){OnInitADOConn();} m_pRecordset.CreateInstance(__uuidof(Recordset));m_pRecordset->Open(sqlstr,m_pConnection.GetInterfacePtr(),adOpenDyna
} catch(_com_error e){ e.Description();} return m_pRecordset;
mic,adLockOptimistic,adCmdText);
5.1.3修改密码模块:
成功登录主界面:
5.2用户管理
用户管理模块用于实现用户的添加、删除、更新功能。5.2.1新增用户模块:
627UpdateData(TRUE);if(m_Bianhao.IsEmpty()||m_Name.IsEmpty()){AfxMessageBox(”not null“);return;} OnInitADOConn();CString str;str.Format(”update 职工表 set 性别='%s',年龄=%d,电话='%s',住址='%s',位='%s',备
注
='%s'
where
职
工
编
号='%s'“,m_Sex,m_Age,m_Telphone,m_Address,m_Zhiwei,m_Beizhu,m_Bianhao);m_pConnection->Execute((_bstr_t)str,NULL,adCmdText);m_pConnection->Close();m_zhglist.DeleteAllItems();AddToGrid();ClearAll();UpdateData(FALSE);
{// TODO: Add your control notification handler code here
} void CGXZHG::OnButton4(){
UpdateData(TRUE);if(m_tiaojian.IsEmpty()){AfxMessageBox(”请选择删除的职工!“);return;} OnInitADOConn();CString bstrSQL;bstrSQL.Format(”delete from 职工表 where 职工编号CMAKESURE cmake;if(cmake.DoModal()!=IDOK){ }
m_pConnection->Execute((_bstr_t)bstrSQL,NULL,adCmdText);m_pConnection->Close();m_zhglist.DeleteAllItems();AddToGrid();ClearAll();AfxMessageBox(“删除成功!”);UpdateData(FALSE);return;='%s'“,m_tiaojian);UpdateData(TRUE);m_type.GetWindowText(m_Type);if(m_Type.IsEmpty()){AfxMessageBox(”请选择查询的方式!“);return;} if(m_tiaojian.IsEmpty()){AfxMessageBox(”请输入查询的职工编号!“);return;} OnInitADOConn();CString sql;
部分核心代码如下: void CTXGZ::OnButton2()
{// TODO: Add your control notification handler code here
息!”);
if(m_Bianhao.IsEmpty()||m_Jibengz==NULL||m_Yuefen.IsEmpty()){AfxMessageBox(“编号不允许空值,请重新填写!”);ClearALL();return;} OnInitADOConn();float CString cstr1;cstr1.Format(“%.2f”,f1);m_yfsh.SetWindowText(cstr1);float f2=m_Fangzu+m_Chuxu+m_Huifei;CString cstr2;cstr2.Format(“%.2f”,f2);m_yksh.SetWindowText(cstr2);float f4;f4=calculator(f1-f2);float f3=f1-f2-f4;CString cstr3;cstr3.Format(“%.2f”,f3);m_shfsh.SetWindowText(cstr3);CString cstr4;cstr4.Format(“%.2f”,f4);m_grsdsh.SetWindowText(cstr4);CString str;str.Format(“insert
into
工
资
表
values UpdateData(TRUE);m_yuefen.SetCurSel(0);// AfxMessageBox(”该编号的职工不存在,请先到职工管理添加职工信f1=m_Jibengz+m_Jintie+m_Gangtie+m_Butie+m_Fangtie+m_Jiaotongbt;('%s','%s',%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f)“,m_
} void CTXGZ::ClearALL(){
} void CTXGZ::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult){// TODO: Add your control notification handler code here
m_pConnection->Close();m_gzlist.DeleteAllItems();AddToGrid();m_yuefen.SetCurSel(0);ClearALL();m_Jibengz=NULL;m_Jintie=NULL;
m_Shfsh.Empty();m_Yfsh.Empty();m_Yksh.Empty();m_Yuefen.Empty();m_Chaxun.Empty();m_Jiaotongbt=NULL;m_Huifei=NULL;m_Grsdsh.Empty();m_Fangzu=NULL;m_Fangtie=NULL;m_Chuxu=NULL;m_Bianhao=”“;m_Gangtie=NULL;UpdateData(FALSE);int position=m_gzlist.GetSelectionMark();m_Bianhao=m_gzlist.GetItemText(position,0);m_Chaxun=m_gzlist.GetItemText(position,0);m_Yuefen=m_gzlist.GetItemText(position,1);m_Jibengz=atof(m_gzlist.GetItemText(position,2));m_Jintie=atof(m_gzlist.GetItemText(position,3));m_Gangtie=atof(m_gzlist.GetItemText(position,4));
3return;} void CTXGZ::OnButton5(){
} float CTXGZ::calculator(float a){float b=a-2000;
} if(b<0){b=0;} if(0=500&&b<2000){return b=b*10/100-25;} if(b>=2000&&b<5000){return b=b*15/100-125;} if(b>=5000&&b<20000){return b=b*20/100-375;} if(b>=20000&&b<40000){return b=b*25/100-1375;} if(b>=40000&&b<60000){return b=b*30/100-3375;} if(b>=60000&&b<80000){return b=b*35/100-6375;} if(b>=80000&&b<100000){return b=b*40/100-10375;} if(b>=100000){ return b=b*45/100-15375;} UpdateData(TRUE);if(m_Chaxun.IsEmpty()){AfxMessageBox(”请输入查询的职工编号!“);return;} OnInitADOConn();CString sql;sql.Format(”select * from 工资表 where 职工编号='%s'“,m_Chaxun);m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);m_pConnection->Close();m_gzlist.DeleteAllItems();ClearALL();m_Chaxun=m_Chaxun;m_yuefen.SetCurSel(0);UpdateData(FALSE);5.5查询管理
该模块实现功能是职工查询工资的详细信息,查询个人详细信息的功能。
5.5.1职工信息查询:
5.5.2工资信息查询:
部分核心代码如下: void CGXGZ::OnButton1(){ UpdateData(TRUE);
if(m_Chaxun.IsEmpty()){AfxMessageBox(”请输入查询的职工编号!“);return;} OnInitADOConn();CString sql;sql.Format(”select * from 工资表 where 职工编号='%s'“,m_Chaxun);m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);m_pConnection->Close();m_gzlist.DeleteAllItems();UpdateGrid();m_Chaxun.Empty();
6UpdateData(FALSE);{//创建连接对象实例
} catch(_com_error e){ AfxMessageBox(e.Description());m_pConnection.CreateInstance(”ADODB.Connection“);//设置连接字符串 CString
strConnect=”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=salary.mdb;Persist Security Info=False;“;//使用Open方法连接数据库
m_pConnection->Open((_bstr_t)strConnect,”“,”“,adModeUnknown);
} OnInitADOConn();//设置查询字符串 CString bstrSQL;bstrSQL.Format(”select * from 工资表 where 职工编号='%s' order by 职//创建记录集指针对象实例
m_pRecordset.CreateInstance(__uuidof(Recordset));//打开记录集
m_pRecordset->Open((_bstr_t)bstrSQL,m_pConnection.GetInterfacePtr(),ad adLockOptimistic,adCmdText);工编号 desc “,m_Chaxun);OpenDynamic, while(!m_pRecordset->adoEOF){ m_gzlist.InsertItem(0,”“);m_gzlist.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect(”职工编号
m_gzlist.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect(“月份”));m_gzlist.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect(“基本工资”));m_gzlist.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect(“津贴”));m_gzlist.SetItemText(0,4,(char*)(_bstr_t)m_pRecordset->GetCollect(“岗贴”));m_gzlist.SetItemText(0,5,(char*)(_bstr_t)m_pRecordset->GetCollect(“补贴”));m_gzlist.SetItemText(0,6,(char*)(_bstr_t)m_pRecordset->GetCollect(“房贴”));m_gzlist.SetItemText(0,7,(char*)(_bstr_t)m_pRecordset->GetCollect(“交通补贴”));m_gzlist.SetItemText(0,8,(char*)(_bstr_t)m_pRecordset->GetCollect(“应发数”));m_gzlist.SetItemText(0,9,(char*)(_bstr_t)m_pRecordset->GetCollect(“房租”));m_gzlist.SetItemText(0,10,(char*)(_bstr_t)m_pRecordset->GetCollect(“储蓄”));m_gzlist.SetItemText(0,11,(char*)(_bstr_t)m_pRecordset->GetCollect(“会费”));m_gzlist.SetItemText(0,12,(char*)(_bstr_t)m_pRecordset->GetCollect(“个人所得税”));m_gzlist.SetItemText(0,13,(char*)(_bstr_t)m_pRecordset->GetCollect(“应扣数”));m_gzlist.SetItemText(0,14,(char*)(_bstr_t)m_pRecordset->GetCollect(“实发数”));
} void CGXGZ::ExitConnect(){if(m_pRecordset!=NULL)
} m_pRecordset->Close();m_pConnection->Close();//将记录集指针移动到下一条记录
} //AfxMessageBox(“123”);//断开数据库连接 ExitConnect();m_pRecordset->MoveNext();
第六章 系统测试
6.1 测试方法
(1)测试人员:
测试队伍由两位成员组成。软件的设计者在测试整个过程中负责整体测试方案的制定和测试进度的掌握以及白盒测试的测试者。第二位成员由未参加软件制作者担任,主要责任是进行软件的黑盒测试以及软件环境,硬件要求和极限测试工作。
(2)机器测试:
通过在计算机上直接运行被测程序,来发现程序中的错误。机器测试包括黑盒测试盒白盒测试。黑盒测试也称功能测试,将软件看作黑盒子,在完全不考虑程序的内部结构和特性的情况下,研究软件的外部特性。根据软件的需求规格说明书测试用例,从程序的输入和输出特性上测试是否满足设定的功能。白盒测试也称结构测试,将软件看作一个透明的白盒子,按照程序的内部结构和处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查与测试是否相符。
6.2测试内容
1)软件的正常运行、关闭及退出时保存记录的提示。
2)用户登录界面友好,可操作性及安全性能较好,能对不同管理级别者进行限制,以保证数据库的安全。
3)数据库的可维护性好,数据的录入、删除及更改均能顺利完成,并能实现动态更新。
4)数据查询便捷,能对各种不同的查询条件搜索,以找到最合适的答案。5)数据溢出、越界均能进行非法提示,以警告用户正确使用。对用户的正常操作方式也提出警告。
6)数据类型填写错误时,系统能够报错。
7)软件对操作系统的兼容性良好,可移植性完好。
6.3测试结果
本系统有提示消息!
录入相同编号的数据:
该系统有报错功能!
查询职工工资信息:
查询职工信息成功!
1424344-
牟永敏
清华大学出版社
第三篇:数据库课程设计题目第9题学校的工资管理系统
数据库课程设计报告
题目:第9题
学校的工资管理系统
l
实现部门、职务、职称等基本信息的管理;
l
实现教职工信息的管理;
l
实现工资项目的管理,工资项目设有启用标志和加扣标志;
l
实现教职工工资项目及其工资的管理;
l
创建触发器当往教职工工资项目表中插入记录或删除记录时,自动修改该职工的应发工资数和实发工资数;
l
创建存储过程统计某个月各种工资项目的发放总和;
l
创建视图查询各个员工的应发、应扣和实发工资;
l
建立数据库相关表之间的参照完整性约束。
一、关系模式设计
根据题意,为实现所要求的所有功能,此处共设计5个关系,具体介绍和表的形式如下所示:
①职工(职工编号,姓名,性别,年龄,部门,职称)
Tno
Tname
Tsex
Tage
Department
Title
②职位变更(职工编号,前职称,现职称,变更日期)
Tno
Title1
Title2
Dates
③考勤(职工编号,加班次数,缺勤次数,考勤日期)
Tno
Overtime
Absence
Dates
④基本工资表(职称,基本工资)
Title
Base
⑤工资表(职工编号,基本工资,加班工资,缺勤扣钱,实发工资)
Tno
Base
Overpay
Docked
Wages
二、全局E-R图参照1
职称
基本工资
基本工资表
参照2
基本工资
得到
职工编号
工资表
职称
年龄
部门
加班工资
缺勤扣钱
实发工资
加班次数
缺勤次数
考勤日期
职工编号
接收考勤
考勤
变更日期
现职称
前职称
职工编号
职位变更
职位变更记录
性别
姓名
职工编号
职工
三、物理设计
1、建立数据库,学校的工资管理系统
CREATE
DATABASE
SchoolSalary2、建立职工信息表
CREATE
TABLE
Teacher
(Tno
CHAR(20)
PRIMARY
KEY,/*职工号*/
Tname
CHAR(20)
UNIQUE,/*职工名*/
Tsex
CHAR(10)
NOT
NULL
CHECK(Tsex
in('男','女')),/*性别*/
Tage
INT
NOT
NULL,/*年龄*/
Depart
CHAR(20),/*所属部门*/
Title
CHAR(20))
3、建立职称变更记录表
CREATE
TABLE
Change
(Tno
CHAR(20),/*职工号*/
Title1
CHAR(20),/*之前的职称*/
Title2
CHAR(20),/*现职称*/
Dates
INT,/*职位变更的月份*/
FOREIGN
KEY
(Tno)
REFERENCES
Teacher(Tno))
4、建立考勤表
CREATE
TABLE
Attendance
(Tno
CHAR(20),/*职工号*/
Overtime
INT,/*加班次数*/
Absence
INT,/*缺勤次数*/
Dates
INT,/*月份*/
FOREIGN
KEY
(Tno)
REFERENCES
Teacher(Tno)
ON
DELETE
CASCADE
ON
UPDATE
CASCADE)
5、建立基本工资表
CREATE
TABLE
Refer
(/*工资参照表*/
Title
CHAR(20)
PRIMARY
KEY,/*职位*/
Salary
FLOAT,/*对应金额*/)
6、建立工资表
CREATE
TABLE
Pay
(Tno
CHAR(20),/*职工号*/
Base
FLOAT,/*基本工资*/
Overpay
FLOAT,/*加班费*/
Docked
FLOAT,/*缺勤扣除工资*/
Wages
FLOAT,/*实际应得工资*/
FOREIGN
KEY(Tno)
REFERENCES
Teacher(Tno))
三、数据库完整性设计
1、各表名及其对应主键
职工(Teacher)
职工编号(Tno)
职称变更记录(Change)
职工编号(Tno)
考勤(Attendance)
职工编号(Tno)
基本工资表(Refer)
职称(Title)
工资表(Pay)
职工编号(Tno)
2、参照完整性设计
2.1、职称变更记录(Change)的职工编号(Tno)设为外键
FOREIGN
KEY
(Tno)
REFERENCES
Teacher(Tno)
2.2、考勤(Attendance)的职工编号(Tno)设为外键
FOREIGN
KEY
(Tno)
REFERENCES
Teacher(Tno)
ON
DELETE
CASCADE
ON
UPDATE
CASCADE
实现在更新和删除时级联操作
2.3、工资表(Pay)的职工编号(Tno)设为外键
FOREIGN
KEY
(Tno)
REFERENCES
Teacher(Tno)
3、CHECK约束设计
职工(Teacher)中对“性别”进行CHECK约束:
CHECK(Tsex
in('男','女'))
要求性别必须为“男”或“女”
4、触发器设计
4.1、在职工表中建立职称变更触发器,当某职工的职称发生变化时,在职称变更记录表中自动插入一个记录,记录变更前后的职称名以及变更日期
CREATE
TRIGGER
Title_change
ON
Teacher
FOR
UPDATE
AS
BEGIN
DECLARE
@Tno
CHAR(20)
SELECT
@Tno=inserted.Tno
FROM
inserted
SELECT
*
FROM
Teacher
WHERE
@Tno=Teacher.Tno
DECLARE
@Title1
CHAR(20)
SELECT
@Title1=deleted.Title
FROM
deleted
DECLARE
@Title2
CHAR(20)
SELECT
@Title2=Teacher.Title
FROM
Teacher
WHERE
@Tno=Teacher.Tno
IF
@Title1!=@Title2
BEGIN
INSERT
INTO
Change(Tno,Title1,Title2)
VALUES(@Tno,@Title1,@Title2)
END
END
GO
4.2、在职工表中建立基本工资触发器,当插入一个新的职工记录时,根据其职称并参照基本工资表,在工资表中自动更新其基本工资,且默认加班工资和缺勤扣钱均为0
CREATE
TRIGGER
Basic_pay
ON
Teacher
FOR
insert
AS
BEGIN
DECLARE
@Base
FLOAT,@tno
CHAR(20)
SELECT
@tno=inserted.Tno
FROM
inserted
SELECT
@Base=Refer.Salary
FROM
Refer,inserted
WHERE
Refer.Title=inserted.Title
INSERT
INTO
Pay(Tno,Base,Overpay,Docked,Wages)
VALUES(@tno,@Base,0,0,@Base)
END
GO
4.3、在考勤表中建立考勤工资触发器,当给一个职工插入考勤信息后,自动在工资表中更新其工资信息,算法里设计加班一次加200块,缺勤一次扣100块
CREATE
TRIGGER
A_pay
ON
Attendance
FOR
INSERT
AS
BEGIN
DECLARE
@tno
CHAR(20)
DECLARE
@a
FLOAT
DECLARE
@b
FLOAT
DECLARE
@c
INT
DECLARE
@d
INT
DECLARE
@e
FLOAT
SELECT
@tno=inserted.Tno
FROM
inserted
SELECT
@a=Overpay
FROM
Pay
WHERE
Pay.Tno=@tno
SELECT
@b=Docked
FROM
Pay
WHERE
Pay.Tno=@tno
SELECT
@c=Overtime
FROM
Attendance
WHERE
Attendance.Tno=@tno
SELECT
@d=Absence
FROM
Attendance
WHERE
Attendance.Tno=@tno
SELECT
@e=Wages
FROM
Pay
WHERE
Pay.Tno=@tno
UPDATE
Pay
SET
Pay.Overpay=@a+200*@c
WHERE
Pay.Tno=@tno
UPDATE
Pay
SET
Pay.Docked=@b+100*@d
WHERE
Pay.Tno=@tno
UPDATE
Pay
SET
Pay.Wages=@e+@a+200*@c-(@b+100*@d)
WHERE
Pay.Tno=@tno
END
4.4、在职称变更记录表中建立基本工资变更触发器,当某职工职称变更且记录在职称变更记录表插入记录后,在工资表中自动更新其所有工资信息
CREATE
TRIGGER
Change_pay
ON
Change
FOR
UPDATE,INSERT
AS
BEGIN
DECLARE
@A
CHAR(20)
DECLARE
@B
CHAR(20)
DECLARE
@C
FLOAT
DECLARE
@D
FLOAT
SELECT
@A=inserted.Title2
FROM
inserted
SELECT
@B=inserted.Tno
FROM
inserted
SELECT
@C=Pay.Overpay
FROM
Pay,inserted
WHERE
Pay.Tno=@B
SELECT
@D=Pay.Docked
FROM
Pay,inserted
WHERE
Pay.Tno=@B
IF
@A='普通教师'
UPDATE
Pay
SET
Pay.Base=4000,Pay.Wages=4000+@C-@D
WHERE
@B=Pay.Tno
IF
@A='高级教师'
UPDATE
Pay
SET
Pay.Base=5000,Pay.Wages=5000+@C-@D
WHERE
@B=Pay.Tno
IF
@A='主任'
UPDATE
Pay
SET
Pay.Base=6000,Pay.Wages=6000+@C-@D
WHERE
@B=Pay.Tno
IF
@A='校长'
UPDATE
Pay
SET
Pay.Base=7000,Pay.Wages=7000+@C-@D
WHERE
@B=Pay.Tno
END
GO
五、数据库视图设计
查看各职工应得和实发的工资:
CREATE
VIEW
Pay_view
AS
SELECT
Tno,Base+Overpay
Gets,Docked,Wages
FROM
Pay
六、存储过程设计
CREATE
PROCEDURE
ALL_pay
AS
SELECT
SUM(Base)
总基本工资,SUM(Overpay)
总加班工资,SUM(Docked)
总扣工资,SUM(Wages)
总实发工资
FROM
Pay
七、实验结果
(1)基本工资表
各职工的基本工资按各自的职称参照此表
(2)职工表,以下为添加记录后的结果
添加后,Basic_pay触发器触发,在工资表中自动插入所有人的基本工资信息:
(3)现将李楠、王峰的职称都提一级,吴鹏降一级,职称更新后,Title_change触发器触发,首先职称变更记录表中插入相应记录,:
然后工资表自动更新,以上三人的基本工资改变:
(4)在考勤表中添加记录
随后A_pay触发器触发,在工资表中按照加班一次加200、缺勤一次扣100自动更新职工的工资信息:
(5)视图结果
(6)存储过程结果
八、实验心得
本次的数据库大题目课程设计,所运用到的知识比较丰富,要考虑到的点也比较多,故此需要一定的思考。在整个设计过程中,不仅回顾了以往的理论知识,更重要的是锻炼了对SQL语言的编写能力。题目所给的要求并不是特别复杂,在设计数据库的参照完整性约束上是比较简单的,主要的在于触发器的设计和功能的实现,这也正是此次实验的精髓所在,让我了解到数据库的实用性和各方面的可行性,希望以后也能在数据库的实践上更进一步。
第四篇:vb课程设计 职工工资管理系统代码
Form1: Dim errorCount As Integer Private Sub Command1_Click()If Text1.Text = “system” And Text2.Text = “1234” Then
Load Form2
Form2.Show
Me.Hide
MsgBox “登陆成功,欢迎您进入职工工资管理系统”, vbInformation, “登陆成功”
Else
errorCount = errorCount + 1
If errorCount < 3 Then
MsgBox “用户名或密码错误(第” & errorCount & “次)!”, vbOKOnly + vbExclamation, “登陆失败”
Text1.SetFocus
End If
If errorCount >= 3 Then
Text1.Enabled = False
Text2.Enabled = False
Command1.Enabled = False
MsgBox “三次输入用户名或密码错误,程序将自动退出!”, vbOKOnly + vbExclamation, “登陆失败”
End
End If End If
End Sub
Private Sub Command2_Click()Unload Me End Sub
Private Sub Form_Load()errorCount = 0 End Sub
Private Sub Form_Unload(Cancel As Integer)If MsgBox(“是否要退出程序?”, vbYesNo, “退出提示”)= vbNo Then
Cancel = 1 End If End Sub
For i = 1 To jlNum
ygList(i).shifagongzi =(CSng(ygList(i).jibengz)+ ygList(i).gerensui
CSng(ygList(i).jingtie)
ygList(y).shifagongzi = ygList(zuishao).shifagongzi ygList(zuishao).shifagongzi = linShi.shifagongzi End If Next loadData End Sub
Private Sub Command5_Click()Dim linShi As YuanGong
linShi.ygnamg = InputBox(“请输入要添加的姓名”, “添加员工-姓名录入”)If Len(Trim(linShi.ygnamg))> 0 Then
linShi.jibengz = InputBox(“请输入添加员工的基本工资”, “添加员工-基本工资录入”)
If Len(Trim(linShi.jibengz))> 0 Then
linShi.jingtie = InputBox(“请输入添加员工的津贴”, “添加员工-津贴录入”)
If Len(Trim(linShi.jingtie))> 0 Then
linShi.gerensui = InputBox(“请输入添加员工的个人所得税”, “添加员工-个税录入”)
If Len(Trim(linShi.gerensui))> 0 Then
linShi.suidianfei = InputBox(“请输入添加员工的水电费”, “添加员工-水电费录入”)
If Len(Trim(linShi.suidianfei))> 0 Then
Open filedir For Append As #1
Write #1, linShi.ygnamg;linShi.jibengz;linShi.jingtie;linShi.gerensui;linShi.suidianfei
Close #1
MsgBox “添加员工成功!”, vbOKOnly + vbInformation, “成功”
jlNum = 0 If Len(Trim(filedir))> 0 Then
Open filedir For Input As #1
Do While Not EOF(1)
Line Input #1, a
If Len(Trim(a))> 0 Then
jlNum = jlNum + 1
End If
Loop
Close #1
ReDim Preserve ygList(jlNum)As YuanGong
jlNum = 0
Open filedir For Input As #1
Do While Not EOF(1)
jlNum = jlNum + 1
Input #1, ygList(jlNum).ygnamg
Input #1, ygList(jlNum).jibengz
Input #1, ygList(jlNum).jingtie
Next
Close #1
MsgBox “删除员工成功!”, vbOKOnly + vbInformation, “成功”
jlNum = 0 If Len(Trim(filedir))> 0 Then
Open filedir For Input As #1
Do While Not EOF(1)
Line Input #1, a
If Len(Trim(a))> 0 Then
jlNum = jlNum + 1
End If
Loop
Close #1
ReDim ygList(jlNum)As YuanGong
jlNum = 0
Open filedir For Input As #1
Do While Not EOF(1)
jlNum = jlNum + 1
Input #1, ygList(jlNum).ygnamg
Input #1, ygList(jlNum).jibengz
Input #1, ygList(jlNum).jingtie
Input #1, ygList(jlNum).gerensui
Input #1, ygList(jlNum).suidianfei
Loop
Close #1
loadData
Command2.Enabled = True
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = True
Command6.Enabled = True End If
Text1.Text = “姓名” & vbTab & “工资” & vbTab & “津贴” & vbTab & “所得税” & vbTab & “水电费” & vbCrLf
For i = 1 To jlNum
Text1.Text = Text1.Text & ygList(i).ygnamg & vbTab & ygList(i).jibengz & vbTab & ygList(i).jingtie & vbTab & ygList(i).gerensui & vbTab & ygList(i).suidianfei & vbCrLf
Next Else
MsgBox “删除员工失败!”, vbOKOnly + vbExclamation, “失败” End If End Sub
Private Sub Command7_Click()
第五篇:SQL vb课程设计工资管理系统概要(模版)
课程设计报告
课程设计题目: 工资管理系统
学生姓名 : 专 业 :
班 级 : 指导教师 :
2011年 12 月 17 日
姓名: 学号: 实验时间:12月14日 实验地点:
一、课程设计题目:
工资管理系统
二、课程设计目的:
本次课程设计的主要目的是综合运用所学的数据库与VB知识解决一个比较实际的简单问题,侧重对数据库连接、查询等相关内容的综合应用,使同学们能进一步熟悉掌握数据库的基本使用方法,进一步提升自己的编程能力并逐步培养编程思维,进而不断提高同学们解决问题的能力,并为以后的语言学习打下良好的基础。
三、课程设计要求: 1.独立完成;
2.此次课程设计在规定的时间必须在实验室完成,不得以任何理由在其他地点进行;
3.每个人需按照选题规则确定好自己的题目(注意不是多人完成一题,每人独立完成一题),不得以任何理由选择其他的题目,当然在完成自己的题目之后根据个人兴趣可以继续选做其他的题目;
4.课程设计完成后严格按照报告格式撰写课程设计报告,并于结束后的第三天上交到学习委员统一交给老师;
5.课程设计的成绩由两部分组成:程序检查成绩(40%,每个功能占程序分的20%)+报告检查成绩(40%)+平时考核(20%)
四、试验要求 员工基本信息的管理功能。单位员工变动、奖惩情况的管理功能。3 工资的计算、修改功能。4 查询统计功能。5 报表打印功能。具有数据备份和数据恢复功能。
五、试验过程
1.数据库的设计
本系统的数据库是SQL数据库,在SQL环境下创建数据库工资.mdb文件。该数据库包括员工信息表、工资标准表、其他工资标准表、用户表用于纪录员工的基本信息数据库表结构如下所示: 字段名 类型 varchar
大小 8
允许空 Not null 员工编号
姓名 varchar 10 Not null 性别 varchar 职务 Varchar 出生年月 datetime 员工头像 image
员工信息表
字段名 类型
员工编号 varchar
月份 int 津贴 money 奖金 Money 扣保险 Money 扣考勤 Money 扣其他 Money 其他工资标准表 Not null 8 Not null Not null
大小
允许空 8 NULL NULL NULL NULL NULL
字段名 类型
大小
职务 varchar
基本工资 money 8
工资标准表
字段名 类型
大小
用户名 char
口令 char 10
用户表 2.主要内容 登录窗体
登录窗体 设计代码:
允许空
Not null
Not null
允许空
Not null
Not null
Option Explicit
Private Function Selectsql(SQL As String As ADODB.Recordset '返回ADODB.Recordset对象 Dim ConnStr As String
Dim Conn As ADODB.Connection Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset Set Conn = New ADODB.Connection 'On Error GoTo MyErr:
ConnStr = “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=true;Initial Catalog=工资;Data Source=(local” '这是连接SQL数据库的语句 Conn.Open ConnStr
rs.CursorLocation = adUseClient
rs.Open Trim$(SQL, Conn, adOpenDynamic, adLockOptimistic Set Selectsql = rs 'Exit Function 'MyErr: 'Set rs = Nothing
'Set Conn = Nothing '释放相关的系统资源
'MsgBox Err.Description, vbInformation, “系统提示” '显示出错信息 End Function
Private Sub Command3_Click(Unload Me End Sub
Private Sub Form_Load(Dim SQL As String Dim rs As ADODB.Recordset Dim X As Long
On Error GoTo Err_box SQL = “ select * from 用户表” Set rs = Selectsql(SQL If rs.RecordCount > 0 Then rs.MoveFirst
For X = 1 To rs.RecordCount
Combo1.AddItem rs.Fields(“用户名”.Value rs.MoveNext Next X
Combo1.ListIndex = 0 End If rs.Close Exit Sub Err_box: End Sub
Private Sub Command1_Click(Dim SQL As String Dim rs As ADODB.Recordset If Text1.Text = “" Then MsgBox ”请输入口令!“, 16 Text1.SetFocus Exit Sub End If
If Combo1.Text = ”“ Then MsgBox ”请选择登录用户!“, 16 Combo1.SetFocus Exit Sub
End If
SQL = ”SELECT * FROM 用户表 WHERE 用户名='“ & Combo1.Text & ”' AND 口令='“ & Text1.Text & ”' “ Set rs = Selectsql(SQL If rs.RecordCount > 0 Then form2.Show '想要打开的主窗体 MsgBox ”登录成功!“, 64, ”提示“ Unload Me Else
MsgBox ”口令不对,请重新输入!“, 16, ”提示“ Text1.SetFocus End If End Sub
主控界面
主控界面
设计过程:
所有功能都在菜单中打开来实现,在最下面添加了工具栏,来显示时间,操作员,状态等信息。
设计代码:
Private Sub rechaxun_Click(form3.Show End Sub
Private Sub reluru_Click(form3.Show End Sub
Private Sub cygl2_Click(form5.Show End Sub
Private Sub cyxx_Click(form3.Show End Sub
Private Sub Form_Load(Label2.Caption = Time End Sub
Private Sub gzcx_Click(Form4.Show End Sub
Private Sub Image1_Click(End Sub
Private Sub jcqk_Click(form6.Show End Sub
Private Sub rexiugai_Click(form6.Show End Sub
Private Sub rescbb_Click(Form4.Show
MsgBox ”请先查询,再点击生成报表按钮“, , ”提示窗口“ End Sub
Private Sub sjbf_Click(Form7.Show End Sub
Private Sub sjhf_Click(Form7.Show End Sub
Private Sub tjcy_Click(form5.Show End Sub
成员管理 成员浏览
成员浏览 设计过程:
用控件可以实现档案的浏览,在此窗体用户可以浏览员工信息,此窗体与数据轮中的员工信息表进行连接。
设计代码:
Private Sub Command4_Click(Unload Me End Sub 成员管理
成员管理
设计过程:
用于档案的登记,此窗体和档案浏览窗体中的数据表进行了连接,可以直接进行添加,删除,修改等。
设计代码:
Private Sub Command1_Click(Adodc1.Recordset.AddNew End Sub Private Sub Command2_Click(Adodc1.Recordset.Update End Sub Private Sub Command3_Click(Adodc1.Recordset.Delete End Sub
Private Sub Command4_Click(Dim strb(As Byte CommonDialog1.ShowOpen Open CommonDialog1.FileName For Binary As #1 f1 = LOF(1 ReDim strb(f1 Get #1, , strb Adodc1.Recordset.Fields(”员工头像“.AppendChunk strb Close #1 Image1.Picture = LoadPicture(CommonDialog1.FileName End Sub Private Sub Form_Load(End Sub 奖惩信息:
员工奖惩情况
设计过程:
用户可以查找各月份的扣除以及奖励状况。
设计代码:
Private Sub Command1_Click(Unload Me End Sub
Private Sub Command2_Click(Adodc1.Recordset.Update End Sub
Private Sub Text1_Change(Adodc1.RecordSource = ” select * from 其他工资标准 where 月份='“ & Text1 & ”'“ Adodc1.Refresh DataGrid1.Refresh End Sub
工资查询:
工资查询
设计过程:
通过在姓名栏和月份栏输入信息,可以快速查找所需查询人的工资情况;并将查询结果生成execl表,方便用户打印及携带。
设计代码:
Private Sub Command1_Click(Dim i As Integer, r As Integer, c As Integer Dim newxls As Excel.Application Dim newbook As Excel.Workbook Dim newsheet As Excel.Worksheet Set newxls = CreateObject(”Excel.Application“ '创建excel应用程序,打开excel Set newbook = newxls.Workbooks.Add '创建工作簿 Set newsheet = newbook.Worksheets(1 '创建工作表 If Adodc1.Recordset.RecordCount > 0 Then For i = 0 To DataGrid1.Columns.Count1 DataGrid1.Col = c newsheet.Cells(r + 1, c + 1 = DataGrid1.Columns(c Next c Adodc1.Recordset.MoveNext Loop Dim myval As Long Dim mystr As String myval = MsgBox(”是否保存该Excel表?“, vbYesNo, ”提示窗口“
If myval = vbYes Then mystr = InputBox(”请输入文件名称“, ”输入窗口“ If Len(mystr = 0 Then MsgBox ”系统不允许文件名称为空!“, , ”提示窗口“ Exit Sub End If newsheet.SaveAs ”d:“ & mystr & ”.xls“ MsgBox ”Excel文件保存成功,位置:d:“ & mystr & ”.xls“, , ”提示窗口“ newxls.Quit End If End If End Sub Private Sub Command2_Click(Unload Me End Sub Private Sub Form_Load(End Sub Private Sub Text1_Change(Adodc1.RecordSource = ”select a.员工编号,姓名,月份,基本工资,津贴+奖金+扣保险+扣考勤+扣其他 as 奖惩总额,基本工资+津贴+奖金+扣保险+扣考勤+扣其他 as 实发工资 from 员工信息表 a,工资标准 b,其他工资标准 c where a.职务=b.职务 and a.员工编号=c.员工编号 and 姓名 like '“ & Text2 & ”%'and c.月份='“ & Text1 & ”' “ Adodc1.Refresh DataGrid1.Refresh End Sub Private Sub Text2_Change(Adodc1.RecordSource = ”select a.员工编号,姓名,月份,基本工资,津贴+奖金+扣保险+扣考勤+扣其他 as 奖惩总额,基本工资+津贴+奖金+扣保险+扣考勤+扣其他 as 实发工资 from 员工信息表 a,工资标准 b,其他工资标准 c where a.职务=b.职务 and a.员工编号=c.员工编号 and 姓名 like '“ & Text2 & ”%' and c.月份='“ & Text1 & ”'“ Adodc1.Refresh DataGrid1.Refresh End Sub 数据备份及恢复:
数据备份及恢复 设计过程:
用户可以将数据库进行完全备份和差异备份,并且在操作不当时可以进行恢复。
设计代码:
Public Cn As ADODB.Connection Private Sub Command1_Click(Cn.Execute ”backup database 工资 to disk='d:工资完全备份.bak' with name='工资 backup all',description='Full Backup Of pubs'“ MsgBox ”数据完全备份已经完成“, vbOKOnly + vbInformation, ”提醒“ End Sub Private Sub Command2_Click(Cn.Execute ”backup database 工资 to disk='d:工资差异备份.bak' with differential ,noinit,name='工资 backup dif',description='Differential Backup Of 工资'“
MsgBox ”数据差异备份已经完成“, vbOKOnly + vbInformation, ”提醒“ End Sub Private Sub Command3_Click(Cn.Execute ”restore database 工资 from disk='d:工资完全备份.bak' with FILE=1“ MsgBox ”数据恢复已经完成“, vbOKOnly + vbInformation, ”提醒“ End Sub Private Sub Command4_Click(Cn.Execute ”restore database 工资 from disk='d:工资差异备份.bak' with FILE=1“ MsgBox ”数据恢复已经完成“, vbOKOnly + vbInformation, ”提醒“ End Sub Private Sub Form_Load(Set Cn = New ADODB.Connection strcon = ”Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=true;Initial Catalog=工资;Data Source=(local;“ + _ ”use procedure for prepare=1;auto translate=true;“ + _ ”use encryption for data=false;tag with column collation when possible=false“ Cn.ConnectionString = strcon On Error Resume Next Cn.Open If Cn.Errors.Count > 0 Then For i = 0 To Cn.Errors.Count-1 If Cn.Errors(i.Number =-2147467259 Then MsgBox ”网络不通或服务器未开,请确认后再试“, vbOKOnly + vbInformation, ”提醒" Unload Me
Exit Sub Exit For End If Next i End If End Sub
3、设计体会
在数据库课程开课之前我就下决心要学好这一门课,因为这是我的专业课,我一开始就谨慎小心,争取每一个细节都做得很好。现在终于是完成了,我的设计体会如下:
小心谨慎是关键,因为做程序关键就是写代码,每一个字母都要很小心输入,若是不小心错了一个,就会带来庞大的“查错工程”,不过从我检查错误当中也学会了一些检查的方法,比如设置中断点,可以观查每一个变量的当前值,很有效的。
小心是一个方面,另一个是怎么样让程序最人性化,并且保持较简洁的程序代码,通俗说就是事半功倍。有很多时间我是花在了调试程序方面,一部分是在找错误,还有就是怎么用最简练的代码实现当前的作用。其中绝大多数都是自己写的代码,只有在自己不会的时候才借鉴了指导老师发下来的那个示例作品的代码。
我的程序大多数是我自己写的,但是自己的知识和水平都十分有限,所以会经常去查看书或者在网上寻找资料,通过看书、看资料,我改进了自己的不足,也学会的很多新的作程序方法,都是十分有用的。
在一个体会就是做程序要有对全局和面的分析能力,老师告诉我好多设计中不曾想到的东西,比如数据表建立的不完美,用户权限应该分开等。做什么事都是一样的,具体体现在了这次的数据库课程设计上来,让我学到了很多东西。就像要完成一个很大的工作,要先从小的部分做起,不能急于求成,细心谨慎才是关键,坚持不懈,最后再把这些小的窗体在连接起来,就构成了一个整体。
只有实践真正动手做了才会真正了解,在不断的学习和实践中体会到更多的经验。