工资系统研发分析报告.docx_第1页
工资系统研发分析报告.docx_第2页
工资系统研发分析报告.docx_第3页
工资系统研发分析报告.docx_第4页
工资系统研发分析报告.docx_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

工资管理系统软件开发相关文档工资管理系统 软件开发相应文档目录:1.实验课程任务和要求- 第2 页2.可行性分析报告 - 第3 页3.需求分析报告 - 第5 页4.数据库建立文档 - 第8 页5.系统测试及功能介绍 - 第12页6.程序代码 - 第15页7.学习总结 - 尾页 一、实验课程任务与要求目的与任务:1.掌握数据库设计和实现的基本过程2.掌握数据库模式设计、分析和实现的方法3.了解数据库应用系统软件开发的一般过程。实验基本要求: (1)学习相关的预备知识(2)按照数据库设计与实现过程完成数据库的设计,应用程序的开 发,上机调试、运行(3)写出课程设计报告二、课程设计基础知识 数据库设计与实现的基本过程包括需求分析、概念结构设计、逻辑结构设计、数据库的物理设计以及数据库的实施和维护等内容。需求分析确定系统的数据需求和处理需求;概念结构设计通过对用户需求的综合、归纳和抽象,形成一个独立的概念模型;逻辑结构设计则将概念模型转换为具体的数据库管理系统所支持的数据模型;数据库的物理设计结合应用确定数据模型的存储结构和存取方式。在这些工作完成之后,就可以建立数据库并开始调试运行了,在数据库的运行过程中必须对其进行维护包括数据库的备份与恢复、性能分析与改进等等。三。课程设计题目: 工资管理系统 工资管理部门希望建立一个数据库来管理员工的工资。要计算员工的工资,就需要考虑不在休假日期以内的假期、工作期间的病假时间、奖金和扣除的部分。必须指明给每个员工发薪水的方式,随着时间的推移,方式可能会有些改变。大多数的员工是通过银行卡来结算工资的,但是也有一部分人使用现金或支票。如果是通过银行卡,就需要知道账号和卡的类型。付款方式只可能是一种方式。有几种原因可以扣除工资:例如,个人所得税、国家税、医疗保险、退休保险或者预付款。四、开发环境说明采用C/S架构,使用Java进行客户端应用程序的开发,数据库管理系统建议采用SQL SERVER 2000。工资管理系统可行性分析报告引言 :针对这次数据库课程设计,我们组编写的课程设计题目为工资管理系统。为了规范化开发过程。此次设计采用软件开发过程。故先做出如下可行性分析报告。因时间等原因。只考虑部分可行性分析的要求。一 开发目的: 1编写目的:这份报告目的为了解软件开发的规范过程,指出开发本软件所采用的方法和手段,并对软件的前景以及后续工作进行分析。针对的读者为指导老师 2 项目背景: 此次所开发的软件名称为工资管理系统 项目的任务提出者为指导老师。开发者为我们开发小组。组员有:因为此次开发为学习过程,故此次所开发的软件无实际用户。 3 参考资料: 信息系统开发理论教案,数据库原理教材,可视化编程技术 二 可行性研究的前提 1 此次开发软件的的基本要求: 功能:为某设想企业建立一工资管理系统软件。使该企业能做到对员工的工资况入库。并且能使企业修改资料,让员工能够查询自己的资料。 完成日期定在08.7.12日 2 此次可行性分析的目标: 了解此次软件开发的基本步骤。根据个人能力做到人力及相应工作的分工。从而提高工作效率 3 决定可行性的主要因素:这次开发是否可行主要受时间限制。如果时间不够可先完成最基础的功能。留下其他未完善的功能界面,先不编写代码,以后再具体完成。 4 所需人员的专业技术类别和数量:项目组长一名,程序员两名,数据库设计开发员两名,软件测试员一名。 三 对系统的简要描述:此次开发的工资管理系统,用户针对企业(假想)以及企业内部的员工。故应有两层界面,一层为企业管理者提供,另一层为员工提供。管理者有权限查看,添加和修改工资数据。而员工只有查看数据的权限。在录入工资数据时应相应录入员工数据。 系统的程序编写使用JAVA语言。数据库使用SQLSEVER2000. 四:技术可行性评价: 在限制条件下,功能目的很难全部完成,故可完成基本录入查询修改功能。 利用现有技术,我们并为接触过软件开发的相关课程。只是曾学习过可视化编程技术及JAVA编程技术,数据库技术,故简单功能能实现。 在规定的期限内,开发预计能完成功能有: 人员资料录入,工资资料录入,工资资料查找和输出。权限限制预计无法完成。 五 其他可供选择的方案 没有其他的选择方案六结论意见 可在预习和熟悉可视化编程,JAVA编程,数据库技术后着手开发。 工资管理系统需求分析说明书1 引言对软件需求完全理解对于软件开发工作的成功是至关重要的,需求说明的任务是发现、规范的过程,有益于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,便于采用工程方法开发软件,提高软件的质量,便于开发人员、维护人员、管理人员之间的交流、协作。 1.1 编写目的1.1.1使开发人员能清楚该软件的开发要求和目标,使得此次开发的软件功能完善,满足课题的需求1.1.2 本说明书的预期读者为指导老师,需求分析人员、程序编写人员,测试人员、用户文档编写者。 1.2 开发背景 1.21 工程的名称:工资管理系统1.22 工程产品的名称:企业工资管理应用软件1.23 产品生产者:计算机1班6人学习小组1.3 定义,术语:工资管理系统软件:它是由我们六人课题学习小组组完全自主开发的工资管理软件,以企业各部门为基本元素的、用图形界面编程来实现其功能的软件。需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。需求分析:包括提炼,分析和仔细审查已收集到的需求,以确保开发者能明确其含义并找出其中的错误,遗憾或其它不足的地方。2 项目概述: 2.1 目标:本软件的目标使企业工资管理电子化、简单化,以方便企业公布,修改员工工资情况。对于企业管理应用系统软件最终用户为:企业的管理人员和企业的员工。2.2 产品功能: 2.2.1 功能简述:为某设想企业建立一工资管理系统软件。使该企业能做到对员工的工资 情况入库。故应有两层界面,一层为企业管理者提供,另一层为员工提供。管理者有权限查看,添加和修改工资数据。而员工只有查看数据的权限。在录入工资数据时应相应录入员工数据。 2.2.2 功能图: 管理员界面人员资料录入工资资料录入员工资料查看员工资料的查改资料删除工资资料查询员工查看界面登陆界面 3.工程开发规划: 通过功能的分析,可知此次开发步骤: 程序员必须编程完成登陆界面,管理员界面和员工查看界面这三个界面。 数据库开发人员必须合理建立数据库表,在建立工资资料表的同时,还应建立对应的管理员资料表,员工其他资料表。使程序不是只能针对工资查询,还应该考虑到其他因素,使软件更加完善。 完成界面和数据库的连接。 测试人员需给出相应界面的功能描述文档,制成操作手册。 最终整理所有开发工程的文档,组合成课题报告。4.文档: 本系统相关的文档为:工资管理应用软件可行性研究报告工资管理应用软件需求说明书工资管理应用软件操作手册5.要求设备a. Microsoft鼠标或其它兼容鼠标;b. Windows XP中文版或更高操作系统。6. 设计约束条件: 因为课程设计,故无具体分析。数据库建立文档1、 概念结构设计:(1) 实体设计 工资管理(员工编号,奖金,应发工资,个人所得税,国家税,医疗保险,退休保险,扣除总数,实际工资,银行卡号) 职工信息(员工编号,员工姓名,员工性别,员工年龄,员工职务,员工工龄,银行卡号,上半天数,病假天数,休假天数)(2) E-R图设计,如下图所示: (3)创建数据库:根据所设计的概念模型(实体和ER图)建立两个数据库表,如图所示: (4)数据字典:表的编号表名代码内容101职工信息表EmpInfoTable记录员工基本信息主要字段:员工编号,姓名,年龄,性别,工龄,职务,银行卡号,上班天数,病假天数102工资管理表EmpInfoTable纪录员工应发工资以及应扣除数和实发工资主要字段:员工编号,奖金,应发工资,个人所得税,国家税,医疗保险,退休保险,扣除总数,实际工资,银行卡号(5)数据表字段字典编号名称属于的表编码长度属性备注201员工编号职工信息表工资管理表ID10字符例,00001(表101,102,104的主关键字,表103外来关键字)202员工姓名职工信息表工资管理表Name16字符例,王小宾203员工年龄职工信息表Age2整型例,32204员工工龄职工信息表Lenservice2整型例,22205员工性别职工信息表department28字符例:男206员工职务职工信息表Workname16字符例,经理209奖金工资管理表Prize8单精度小数例,2450.32212保险金工资管理表InsurePay8单精度小数例,2450.32214个人所得税工资管理表Tax8单精度小数例,2450.32215应发工资工资管理表ShPay8单精度小数例,2450.32216实发工资工资管理表TrPay8单精度小数例,2450.32217银行卡号工资管理表CardNum18整型表103的主关键字例,111111111111111111220上班天数工资管理表Username16字符例,25221病假天数工资管理表Password12加码例,2222休假天数工资管理表Purview16字符例,10223国家税工资管理表UserTime16时间类型50224扣除总数工资管理表QuitTime16时间类型29225退休保险工资管理表Event100字符100系统测试及操作介绍一系统测试含义和任务系统测试是将系统的各个部分连接在一起,对整个系统进行总的功能、性能等方面的测试。系统测试就是一个过程或一系列过程 ,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作。 系统测试的任务是测试系统各个部分是否能正常配套工作。通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方。系统测试是保证系统质量的主要手段,对于查找系统缺陷、保证系统质量具有不可替代的作用。二系统的性能测试: 系统的性能测试是检测系统是否满足系统分析说明书对性能的要求,验证系统的有效性,检查系统的功能和性能是否与用户的要求一样。三操作介绍(附操作图):1. 在工资管理界面中选择职工可进入职工信息查询界面2在职工信息查询界面中输入职工编号和姓名可查询出职工的信息,显示职工信息界面。3在工资管理界面中选择管理员可进入管理员登入界面,4.只有在管理员登入界面输入用户名admin和密码123456才能进入管理员界面,显示出职工基本信息和职工的奖金、工资医疗保险、退休保险。5. 由职工基本信息和职工的奖金、工资医疗保险、退休保险可计算出职工的扣除数和实际工资: 输入员工编号。显示员工信息点击确定 计算扣除工资和 实际工资程序代码主界面- 17 -import java.awt.*;import java.awt.event.*;import javax.swing.ImageIcon;import java.sql.*;class MyPanel extends PanelFrame f = null;public MyPanel()public MyPanel(Frame f)this.f = f;public void paint(Graphics g)/画一幅图int w = f.getSize().width;/得到当前窗体的宽和高int h = f.getSize().height;ImageIcon imgIcon = new ImageIcon(1.jpg);Image img = imgIcon.getImage();g.drawImage(img,0,0,w,h,this);/根据窗体的大小来存放图片,可以动态调整图片大public class SalaytSystemFrame extends FramePanel p;/制作菜单项MenuBar mb;Menu empmu,manegmu;MenuItem empItop,manegItop,allMesge;EmployeeDemo eTest = null;MagLoginDemo mTest = null;ShowAllInfo saiTest = null; public SalaytSystemFrame() super(工资管理系统); this.init(); public void init() p = new MyPanel(this); /关于菜单的制作 mb = new MenuBar(); empmu = new Menu(职员信息); manegmu = new Menu(管理员); allMesge = new MenuItem(显示全部信息); empItop = new MenuItem(打开职工); manegItop = new MenuItem(打开管理); empmu.add(empItop); empmu.add(allMesge); manegmu.add(manegItop); mb.add(empmu); mb.add(manegmu); empItop.addActionListener(new OnClickDemo(); manegItop.addActionListener(new OnClickDemo(); allMesge.addActionListener(new OnClickDemo(); this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); this.add(p); this.setLocation(100,100); this.setMenuBar(mb); this.setSize(800,600); this.setResizable(false); this.setVisible(true); private class OnClickDemo implements ActionListener public void actionPerformed(ActionEvent e) if(e.getActionCommand().equals(打开管理) if(mTest = null) mTest = new MagLoginDemo(); else mTest.setVisible(true); else if(e.getActionCommand().equals(打开职工) if(eTest = null) eTest = new EmployeeDemo(); else eTest.setVisible(true); else if(e.getActionCommand().equals(显示全部信息) if(saiTest = null) saiTest = new ShowAllInfo(); else saiTest.setVisible(true); /* * param args the command line arguments */ public static void main(String args) / TODO code application logic here new SalaytSystemFrame(); 职工信息显示* (#)EmployeeDemo.javaimport javax.swing.ImageIcon;import java.awt.*;import java.awt.event.*;import java.sql.*;import java.util.List;import java.util.Map;import java.util.HashMap;import java.util.ArrayList;import java.util.Iterator;public class EmployeeDemo extends FramePanel pinf,pinfcon;Label eNo,eName,onDays,sickDays,restDays,post,lbinf,eSex,eAge,eWorktime,cardID;TextField tfeNo,tfeName,tfonDays,tfsickDays,tfrestDays,tfpost,tfeSex,tfeAge,tfeWorktime,tfcardID;Button sure1,cancel1;ScrollPane sp =null;ResultSet rs1,rs2,rs3,rs4,rs5,rs6,rs7,rs8,rs9,rs;List lst1,lst2,lst3,lst4,lst5,lst6,lst7,lst8,lst9,lst;Object obj1,obj2,obj3,obj4,obj5,obj6,obj7,obj8,obj9,obj;DBManager db; /* * Creates a new instance of EmployeeDemo. */ public EmployeeDemo() super(职工信息); this.init(); public void init() Panel p2 = new MyPanel(this); pinf = new Panel(); pinfcon = new Panel(); sp = new ScrollPane(); pinf.setLayout(new BorderLayout(5,5); pinfcon.setLayout(new GridLayout(6,4,5,5); lbinf = new Label(输入用户信息); /面板pinfcon上的标签 eNo = new Label(员工编号); eName = new Label(员工姓名); eSex = new Label(员工性别); eAge = new Label(员工年龄); post = new Label(员工职务); eWorktime = new Label(员工工龄); cardID = new Label(银行卡号); onDays = new Label(上班天数); restDays = new Label(休假天数); sickDays = new Label(病假天数); sure1 = new Button(确定); cancel1 = new Button(取消); /面板1上的文本框 tfeNo = new TextField(20); tfeName = new TextField(20); tfeSex = new TextField(20); tfeAge = new TextField(20); tfpost = new TextField(20); tfeWorktime = new TextField(20); tfcardID = new TextField(20); tfonDays = new TextField(20); tfsickDays = new TextField(20); tfrestDays = new TextField(20); /把组建添加到显示面板中,该面板的作用是输入员工的编号,在各个文本框中输出相应的信息 pinfcon.add(eNo);pinfcon.add(tfeNo);pinfcon.add(sure1);pinfcon.add(cancel1); pinfcon.add(eName);pinfcon.add(tfeName);pinfcon.add(eSex);pinfcon.add(tfeSex); pinfcon.add(eAge);pinfcon.add(tfeAge);pinfcon.add(post);pinfcon.add(tfpost); pinfcon.add(eWorktime);pinfcon.add(tfeWorktime);pinfcon.add(cardID);pinfcon.add(tfcardID); pinfcon.add(onDays);pinfcon.add(tfonDays); pinfcon.add(sickDays);pinfcon.add(tfsickDays);pinfcon.add(restDays);pinfcon.add(tfrestDays); /把显示标签lbinf和pincon分别添加到pinf的北边 pinf.add(lbinf,BorderLayout.NORTH); pinf.add(pinfcon,BorderLayout.CENTER); this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) dispose(); ); /给按钮添加事件触发 sure1.addActionListener(new OnClickDemo(); cancel1.addActionListener(new OnClickDemo(); pinf.setBackground(Color.pink); sp.add(pinf); this.setLocation(200,200); this.add(sp); sp.setSize(700,250); this.setResizable(false); this.pack(); this.setVisible(true); private class OnClickDemo implements ActionListener public void actionPerformed(ActionEvent e) if(e.getActionCommand().equals(确定) db = new DBManager(); String sql = select 员工姓名 from 职工信息 where 员工编号 = + tfeNo.getText().trim() + ;rs = db.getResult(sql);/返回结果集lst = db.convert(rs);/把结果集转换成list类型的obj = db.queryOne(sql,lst);/单个查询,String x1 = obj.toString();tfeName.setText(x1); String sSex = select 员工性别 from 职工信息 where 员工编号 = + tfeNo.getText().trim() + ; rs = db.getResult(sSex);/返回resultset类型 lst = db.convert(rs);/返回list类型 obj = db.queryOne(sSex,lst);/返回object 类型 String x2 = obj.toString(); tfeSex.setText(x2);/把结果转换成字符串输出到文本框 String sAge = select 员工年龄 from 职工信息 where 员工编号 = + tfeNo.getText().trim() + ; rs3 = db.getResult(sAge);/返回resultset类型 lst3 = db.convert(rs3);/返回list类型 obj3 = db.queryOne(sAge,lst3);/返回object 类型 tfeAge.setText(obj3.toString();/把结果转换成字符串输出到文本框 String sPost = select 员工职务 from 职工信息 where 员工编号 = + tfeNo.getText().trim() + ; rs4 = db.getResult(sPost);/返回resultset类型 lst4 = db.convert(rs4);/返回list类型 obj4 = db.queryOne(sPost,lst4);/返回object 类型 tfpost.setText(obj4.toString();/把结果转换成字符串输出到文本框 String sWorktime= select 员工工龄 from 职工信息 where 员工编号 = + tfeNo.getText().trim() + ; rs5 = db.getResult(sWorktime);/返回resultset类型 lst5 = db.convert(rs5);/返回list类型 obj5 = db.queryOne(sWorktime,lst5);/返回object 类型 tfeWorktime.setText(obj5.toString();/把结果转换成字符串输出到文本框 String sCardID= select 银行卡号 from 职工信息 where 员工编号 = + tfeNo.getText().trim() + ; rs6 = db.getResult(sCardID);/返回resultset类型 lst6 = db.convert(rs6);/返回list类型 obj6 = db.queryOne(sCardID,lst6);/返回object 类型 tfcardID.setText(obj6.toString();/把结果转换成字符串输出到文本框 String sOnDays= select 上班天数 from 职工信息 where 员工编号 = + tfeNo.getText().trim() + ; rs7 = db.getResult(sOnDays);/返回resultset类型 lst7 = db.convert(rs7);/返回list类型 obj7 = db.queryOne(sOnDays,lst7);/返回object 类型 tfonDays.setText(obj7.toString();/把结果转换成字符串输出到文本框 String sSickDays= select 病假天数 from 职工信息 where 员工编号 = + tfeNo.getText().trim() + ; rs8 = db.getResult(sSickDays);/返回resultset类型 lst8 = db.convert(rs8);/返回list类型 obj8 = db.queryOne(sSickDays,lst8);/返回object 类型 tfsickDays.setText(obj8.toString();/把结果转换成字符串输出到文本框 String sRestDays= select 休假天数 from 职工信息 where 员工编号 = + tfeNo.getText().trim() + ; rs9 = db.getResult(sRestDays);/返回resultset类型 lst9 = db.convert(rs9);/返回list类型 obj9 = db.queryOne(sRestDays,lst9);/返回object 类型 tfrestDays.setText(obj9.toString();/把结果转换成字符串输出到文本框 else if(e.getActionCommand().equals(取消) tfeNo.setText(); /* * param args the command line arguments */ public static void main(String args) / TODO code application logic here new EmployeeDemo(); 管理员登录界面/* * (#)MagLoginDemo.java import java.awt.*;import java.awt.event.*;import javax.swing.JOptionPane;public class MagLoginDemo extends Frame Panel p,pInput,pBut;Label lbName,lbPwd;TextField tfName,tfPwd;Button sure,cancle;ManagementTest mTest = null; /* * Creates a new instance of MagLoginDemo. */ public MagLoginDemo() super(登入界面); this.init(); public void init() p = new Panel(); pInput = new Panel(); pBut = new Panel(); lbName = new Label(输入用户名); lbPwd = new Label(输入密码); tfName = new TextField(40); tfPwd = new TextField(40); sure = new Button(确定); cancle = new Button(重设); p.setLayout(new BorderLayout(5,5); pInput.setLayout(new GridLayout(4,1); pBut.setLayout(new GridLayout(1,2,5,5); pInput.add(lbName); pInput.add(tfName); pInput.add(lbPwd); pInput.add(tfPwd); pBut.add(sure); pBut.add(cancle); sure.addActionListener(new OnClickDemo(); cancle.addActionListener(new OnClickDemo(); p.add(pInput,BorderLayout.CENTER); p.add(pBut,BorderLayout.SOUTH); this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) dispose(); ); p.setBackground(Color.cyan); this.add(p); this.pack(); this.setSize(250,200); this.setLocation(500,250); this.setResizable(false); this.setVisible(true); private class OnClickDemo implements ActionListener public void actionPerformed(ActionEvent e) if(e.getActionCommand().equals(确定) if(tfName.getText().equals(admin) & tfPwd.getText().equals(123456) if(mTest = null) mTest = new ManagementTest(); dispose(); else mTest.setVisible(true); else JOptionPane.showMessageDialog(null, 请输入正确用户名和密码); else if(e.getActionCommand().equals(重设) tfName.setText(); tfPwd.setText(); /* * param args the command line arguments */ public static void main(String args) / TODO code application logic here new MagLoginDemo(); 管理员界面import java.awt.*;import java.awt.event.*;import javax.swing.ImageIcon;import java.sql.*;import java.util.List;import java.util.Map;import java.util.HashMap;import java.util.ArrayList;import java.util.Iterator;class ManagementTest extends FramePanel pin,pincon,pinconinner,pinconmid,pinconbton,p;Label award,payMeth,salary,pensTax,staTax,medInsure,retInsure,actiSalary,subSly,null1,null2,null3,null4;TextField tfaward,tfsalary,tfpensTax,tfstaTax,tfmedInsure, tfretInsure,tfactiSalary,tfhidpay,tfsub

温馨提示

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

评论

0/150

提交评论