




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计报告工资管理信息系统数据库设计课 程 数据库原理及应用 班 级 06信息管理与信息系统 铜陵学院数学与计算机科学系毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日目 录1、开发背景42、功能描述43、业务流程分析54、数据流程分析54.1、数据流程图54.2、数据字典65、概念模型设计76. 逻辑模型设计和优化87. 物理设计和实施98、课程设计心得体会109、程序源代码和部分运行界面.111、开发背景90年代中期,由于internet 的迅速普及,使intranet成为internet技术在企业管理信息系统中的应用和延伸,形成了集计算机,计算机网络、数据库、分布式计算等于一体的信息技术综合体,它打破了时间和地域的界限,使信息交流变得快捷、准确,为建立现代企业管理信息系统提供了充足的条件。企业信息管理系统在此基础上延伸、扩展,使之上下、内外全面贯通。引入internet后,形成了新型的浏览器/服务器(browser/server)结构,而传统的客户机/服务器(client/server)结构在这方面就远不及b/s结构。随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能企业管理水平以及优质服务上都提出更高的要求企业的工资管理系统是公司管理的一个重要内容,建设一个科学高效的信息管理系统是解决这一问题的必由之路企业内部财务管理是该企业运用现代化技术创造更多更高的经济效益的主要因素之一工资管理作为企业内部的一种财务管理更是如此,由于企业职工人数较多,每一位职工的具体实际情况也不尽相同,如果能够实现工资管理系统的自动化,无疑将给企业管理部门带来很大的方便资金是企业生存的主要元素,资金的流动影响到企业的整体运作,企业员工的工资是企业资金管理的一个重要的组成部分,因为企业每个月都要涉及发放企业员工工资的问题,而工资管理是一项琐碎复杂而又十分细致的工作,工资计算发放核算的工作量很大,一般不允许出错企业员工的人数越多,工资的统计工作就越多,工资的发放困难就越大最初的工资统计和发放都是采用人工方式处理,工作量大的时候,出现错误的几率也随之升高,既耗费了大量的人力,又没有得到有效的结果工资管理系统就是使用计算机代替大量的人工统计和计算,完成众多工资信息的处理,同时使用计算机还可以安全地完整地保存大量的工资记录,为企业的管理部门带来了很大的方便。2、功能描述(描述该系统所需要完成的功能)经过调研及分析,工资管理信息系统主要完成以下功能:(1员工信息维护:主要完成对员工个人信息的添加、修改和删除等操作,只有系统中存在信息的员工才有资格进行个人信息的查询活动。(2)员工工资信息维护:主要是完成对员工工资信息的添加、修改和删除等操作,只有系统中存在信息的员工才有资格进行个人工资信息的查询活动。(3)个人工资信息查询:主要让每个员工能及时了解自己的工资构成和工资的结算情况,以及自己个人工资信息是否有误,便于及时通知管理员更改;(4)个人信息查询:让每位员工能及时了解自己的个人信息,及时知道自己信息是否有误,便于及时通知管理员更改;工资综合管理系统个人 信息输入员工信息输入员工信息删除信息查询修改工资信息输入个人信息查询修改工资信息查询修改个人信息删除工资信息删除工资管理功能模块图3、 业务流程分析1、工资管理系统数据流程图修改信息查询信息查询信息员工 工资管理系统管 理 员管理员信息员工信息图1 顶层数据流图2、从员工角度考虑的业务流程图:图2 业务流程图 3.2.1员工查询数据流图:更新无效信息个人信息个人信息工资信息工资信息账号信息允许查询显示信息更新员工检 查查询 图3借阅数据流图3.2.2 查询数据流图:(查询员工个人信息,查询工资信息)图4查询数据流图4数据流程分析4.1、数据流程图通过需求分析,得出图书馆管理信息系统的借书/还书处理数据流程如图1所示(其他处理的数据流程图请读者自行分析)。图5 个人信息查询/个人工资查询处理数据流程图4.2、数据字典(根据编号对数据流程图中的各元素如数据流、数据存储、外部实体和处理逻辑进行细节描述)(1)数据流的描述数据流编号: d001数据流名称: 员工个人信息 简述:员工所要查询个人信息的信息单数据流来源:员工数据流去向:员工信息判断数据流组成:员工id+姓名+性别+职务等数据流量:1000/天高峰流量:3000/天数据流编号: d002数据流名称: 员工信息无效提示 简述:管理员发现非法员工时的提示信息数据流来源:读者信息判断数据流去向:员工数据流组成:员工id+姓名等 数据流量:100/天 高峰流量:500/天(2)处理逻辑的描述 处理逻辑编号:p001处理逻辑名称:员工信息判断 简述:判断员工信息的合法性输入的数据流:员工个人信息处理描述: 根据员工提供的个人信息,验证员工信息,验证通过则继续下移查询员工信息,验证不通过则返回给员工指明为非法读者。输出的数据流: d001员工个人信息、d002无效提示信息处理频率: 10次/天处理逻辑编号:p002处理逻辑名称:查询员工信息 简述:查询员工的个人信息 输入的数据流:d003员工id信息处理描述:根据员工提供的员工id信息,到库中查找是否有该员工的信息,有则进行显示,如没有则返回员工无该员工信息。输出的数据流: d001员工个人信息+d004显示员工信息处理频率: 1000次/天(3)数据存储的描述数据存储编号:f001数据存储名称:员工信息 简述:员工的基本信息数据存储组成:员工id+姓名+性别+籍贯+学历+出生年月+职位+部门+工龄关键字:员工id相关联的处理:p001,p002数据存储编号:f002数据存储名称:员工工资信息 简述:员工工资的基本信息数据存储组成:员工id+姓名+职务+基本工资+奖金+津贴+补贴+个人所得税+应领工资+是否发放关键字:员工id相关联的处理:p003,p004(4)外部实体的描述外部实体编号:s001外部实体名称:员工简 述:查询个人信息和工资信息的人输入的数据流:d001,d002,d005,d006输出的数据流:d001,d0055、概念模型设计(用powerdesigner画出该系统的cdm图或用visio画出e-r图,建议画cdm图)根据系统数据流图和数据字典,得出系统的总体概念模型(e-r)如图2所示。图6系统的总体概念模型6. 逻辑模型设 计和优化(将cdm图转换成pdm图,并对pdm图中每个关系进行调整优化,以至少达到3nf标准 或者 根据转换规则将e-r图转换为关系模式并进行优化并至少达到3nf标准)根据系统的总体概念设计模型、e-r图向关系模式的转化规则和数据库的范式理论,得到系统优化后的逻辑模型,如表1表5所示。表1员工信息表(staff)员工id姓名性别籍贯出生年月学历部门职务工龄表2 员工工资信息表(staffwage)员工id姓名职务基本工资奖金津贴补贴个人所得税应领工资是否发放表3 普通用户登录账号表(users)usernameuserpwd表4管理员登录账号表(susers)管理员id姓名性别密码电话地址7. 物理设计和实施(根据pdm生成sql脚本以创建图书管理系统的数据库模式 或 根据第6部分优化后的逻辑模式使用create table语句写出各关系模式的创建语句)得到系统逻辑模型后,就该进行数据库的物理设计和实施数据库了,物理设计主要是要确定数据库的存储路径、存储结构以及如何建立索引等,可以采用系统的默认设置。数据库实施主要包括在具体的dbms中创建数据库和表的过程,本设计所选用的dbms为sql server2000,有关创建数据库和关系表的sql语句如下所示:/*=*/* database: 工资管理系统, 创建数据库,数据库名称为工资管理系统 */*=*/create database 工资管理系统 use 工资管理系统go/*=*/* table: users, 普通员工登录账号信息表 */*=*/create table users (usernamechar(10)not null,/*用户名*/userpwd char(20)null,/*类别名称*/constraint pk_users primary key (username) /*主键约束*/)go/*=*/* table: susers, 管理员登录账号信息表 */*=*/create table susers (管理员id char(10) not null, /*管理员账号*/姓名 char(20) not null, /*管理员姓名*/性别 char(2) null, /*管理员性别*/密码 char(20) not null, /*管理员密码*/电话 char(20) null, /*管理员电话*/ 地址 char(40) not null, /*管理员地址*/constraint pk_susers primary key (管理员id) /*主键约束*/)go/*=*/* table: staff, 员工信息表 */*=*/create table staff (员工idchar(10)not null,/*员工id*/姓名char(20)null,/*姓名*/性别char(2)null,/*性别*/籍贯 char(30)null,/*籍贯*/出生年月 datetimenull,/*出生年月*/学历char(12)null,/*学历*/部门char(20)null,/*部门*/职务 char(20)null,/*职务*/工龄char(2)null,/*工龄*/constraint pk_staff primary key (员工id) /*主键约束*/)go/*=*/* table: staffwage, 员工工资信息表 */*=*/create table staffwage (员工idchar(20)not null,/*读者id*/姓名char(10)null,/*姓名*/职务char(20)null,/*职务*/基本工资 char(20)null,/*基本工资*/奖金 char(20)null,/*奖金*/津贴char(20)null,/*津贴*/补贴char(20)null,/*补贴*/个人所得税 char(20)null,/*个人所得税*/应领工资char(20)null,/*应领工资*/是否发放char(2) null,/*是否发放*/constraint pk_staffwage primary key (员工id) /*主键约束*/)go8、课程设计心得体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,c#作为一门程序语言已经成为当今计算机应用中一门空前活跃的语言, 因此作为二十一世纪的大学来说掌握c#语言的应用是十分重要的。通过这次课程设计,我更加熟练的掌握了使用vc#进行数据库软件开发的方法,加深了对数据库课程知识的理解。由于时间仓促,软件还有很多不足之处,如:员工信息查询部分不够完善,员工信息和工资信息输入模块不支持信息的批量输入,软件代码交冗余、效率不高等等,都是对vc#操作不熟练,对相关功能缺乏认识造成的。在今后的学习中我会加强理论与实践的结合,通过不断的摸索来弥补自己在软件制作方面的差距。9、 程序源代码和部分运行界面源代码:using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.text;using system.windows.forms;using system.data.sqlclient;namespace 工资管理系统 public partial class frmlogin : form public frmlogin() initializecomponent(); private void button1_click(object sender, eventargs e) try if (textbox1.text = ) /判断用户是否输入了用户名 messagebox.show(用户名不能为空); else if (textbox2.text = ) messagebox.show(密码不能为空); /判断用户是否输入了密码 else sqlconnection con = dbcon.createcon(); /创建数据库连接 con.open(); sqlcommand cmd = null; if (combobox1.text = ) messagebox.show(请选择登录界面); combobox1.focus(); return; switch (combobox1.text) case 普通员工: cmd = new sqlcommand(select count(*)from users where username= + textbox1.text + and userpwd= + textbox2.text + , con); break; case 管理员: cmd = new sqlcommand(select count(*)from susers where 管理员= + textbox1.text + and 密码= + textbox2.text + , con); break; int i = convert.toint32(cmd.executescalar(); /获取返回值 if (i 0) if (combobox1.text = 普通员工) frmmain main = new frmmain(); main.adminname = textbox1.text; main.admintime = datetime.now.toshortdatestring(); main.show(); this.hide(); /隐藏登录窗体 else if (combobox1.text = 管理员) ptmain ptmain = new ptmain(); ptmain.adminname = textbox1.text; ptmain.show(); this.hide(); else messagebox.show(对不起!你无权进入,请检查你用户名和密码或登录界面选择是否正确!); /弹出提示 catch (exception ex) messagebox.show(ex.tostring(); private void button2_click(object sender, eventargs e) this.close(); private void frmlogin_load(object sender, eventargs e) private void textbox1_textchanged(object sender, eventargs e) private bool checkchildfrmexist(string childfrmname) foreach (form childfrm in this.mdichildren) if (childfrm.name = childfrmname) /用子窗体的name进行判断,如果存在则将他激活 if (childfrm.windowstate = formwindowstate.minimized) childfrm.windowstate = formwindowstate.normal; childfrm.activate(); return true; return false; private void button3_click(object sender, eventargs e) /通过窗体名称查询该窗体是否已经存在,如存在则显示,否则就新创建一个 if (this.checkchildfrmexist(zczh) = true) return; zczh zczh = new zczh(); zczh.mdiparent = this; zczh.show(); 源代码:using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.text;using system.windows.forms;namespace 工资管理系统 public partial class frmmain : form public frmmain() initializecomponent(); public string adminname; public string admintime; private void frmmain_load(object sender, eventargs e) toolstripstatuslabel2.text = adminname; toolstripstatuslabel5.text = datetime.now.tostring(); private bool checkchildfrmexist(string childfrmname) foreach (form childfrm in this.mdichildren) if (childfrm.name = childfrmname) /用子窗体的name进行判断,如果存在则将他激活 if (childfrm.windowstate = formwindowstate.minimized) childfrm.windowstate = formwindowstate.normal; childfrm.activate(); return true; return false; private void 点此查询toolstripmenuitem_click(object sender, eventargs e) /通过窗体名称查询该窗体是否已经存在,如存在则显示,否则就新创建一个 if (this.checkchildfrmexist(stuffmsinfo) = true) return; staffinquiryinfo stuffmsinfo = new staffinquiryinfo(); stuffmsinfo.mdiparent = this; stuffmsinfo.show(); private void 点此进入查询toolstripmenuitem1_click(object sender, eventargs e) /通过窗体名称查询该窗体是否已经存在,如存在则显示,否则就新创建一个 if (this.checkchildfrmexist(stuffwageinfo) = true) return; staffwageinfo stuffwageinfo= new staffwageinfo(); stuffwageinfo.mdiparent = this; stuffwageinfo.show(); private void 修改密码toolstripmenuitem_click(object sender, eventargs e) /通过窗体名称查询该窗体是否已经存在,如存在则显示,否则就新创建一个 if (this.checkchildfrmexist(changepwd) = true) return; changepwd changepwd = new changepwd(); changepwd.mdiparent = this; changepwd.show(); private void 退出系统toolstripmenuitem1_click(object sender, eventargs e) if (messagebox.show(确定退出本系统吗?, 提示, messageboxbuttons.okcancel, messageboxicon.asterisk) = dialogresult.ok) this.close(); /退出系统 messagebox.show(欢迎查询!); 源代码:using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.text;using system.windows.forms;namespace 工资管理系统 public partial class ptmain : form public ptmain() initializecomponent(); public string adminname; public string admintime; private void ptmain_load(object sender, eventargs e) toolstripstatuslabel2.text = adminname; toolstripstatuslabel5.text = datetime.now.tostring(); private bool checkchildfrmexist(string childfrmname) foreach (form childfrm in this.mdichildren) if (childfrm.name = childfrmname) /用子窗体的name进行判断,如果存在则将他激活 if (childfrm.windowstate = formwindowstate.minimized) childfrm.windowstate = formwindowstate.normal; childfrm.activate(); return true; return false; private void 员工工资信息维护toolstripmenuitem_click_1(object sender, eventargs e) /通过窗体名称查询该窗体是否已经存在,如存在则显示,否则就新创建一个 if (this.checkchildfrmexist(staffwagemaintenanceinfo) = true) return; staffwagemaintenanceinfo staffwagemaintenanceinfo = new staffwagemaintenanceinfo(); staffwagemaintenanceinfo.mdiparent = this; staffwagemaintenanceinfo.show(); private void 员工信息查询toolstripmenuitem_click(object sender, eventargs e) /通过窗体名称查询该窗体是否已经存在,如存在则显示,否则就新创建一个 if (this.checkchildfrmexist(stuffinfo) = true) return; staffmaintenanceinfo stuffinfo = new staffmaintenanceinfo(); stuffinfo.mdiparent = this; stuffinfo.show(); private void 修改普通员工密码toolstripmenuitem_click(object sender, eventargs e) /通过窗体名称查询该窗体是否已经存在,如存在则显示,否则就新创建一个 if (this.checkchildfrmexist( changestaffpwd) = true) return; changestaffpwd changestaffpwd = new changestaffpwd(); changestaffpwd.mdiparent = this; changestaffpwd.show(); private void 退出系统toolstripmenuitem_click(object sender, eventargs e) if (messagebox.show(确定退出本系统吗?, 提示, messageboxbuttons.okcancel, messageboxicon.asterisk) = dialogresult.ok) this.close(); /退出系统 private void 修改管理员密码toolstripmenuitem_click(object sender, eventargs e) /通过窗体名称查询该窗体是否已经存在,如存在则显示,否则就新创建一个 if (this.checkchildfrmexist( revmanagerpwd) = true) return; revmanagerpwd revmanagerpwd = new revmanagerpwd(); revmanagerpwd.mdiparent = this; re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论