若本文对你有帮助的话,记得点赞、关注我哟!

大四上学期的课设之一“生产实习”,一共上三周,我随便乱写的,害怕不及格的人可以做个参考。最后班里大多数人都和我一样得了90分。然而这是我这学期课设成绩最高的一门,其它的都是70分、80分,我也写在CSDN里了,有兴趣的可以找一下。我发现大学三年半,我起码写过三次工资管理系统的实验报告......

复习累了可以点开视频,有惊喜哦!

https://www.bilibili.com/video/BV117411c7DQ

https://www.bilibili.com/video/BV1Vb411U7BC/

https://www.bilibili.com/video/BV1Nb411M7J9/

任务:
1、分析并调研需求,选择合适的开发模型。
2、了解软件研发流程,选择合适的开发模型。
3、选择与此次生产实习相关的工具,分配团队成员之间相应的角色,确定所选择项目中的复杂工程问题。
4、评审需求分析,形成软件需求规格
5、对需求分析进行概要设计、详细设计及编码。
6、收集并设计实验数据,进行软件测试设计、软件测试结果分析,得出结论,按照规范要求,编写好相关文档。
7、评审需求分析,形成软件需求规格。
8、撰写生产实习报告。

实习的目的

专业生产实习是本科教学计划中非常重要的实践性教学环节,是专业培养目标和教学计划、课程设置的有机组成部分,是理论教学的完善和补充。通过生产实习,使学生直接接触和了解计算机技术在生产实际中的应用,增强学生理论联系实际的观点,巩固所学相关理论,获取本专业的实际技能,培养初步的软件系统的实际工作能力和专业技能。通过生产实习使学生进一步接触社会、深入群众、培养劳动观念,提高学生的民族自尊心和自信心,激发学生发展民族工业、勇攀科学高峰的使命感和紧迫感、增强爱国主义情操。

通过现场实习,还可以检查学校教学中存在的问题,对推进教学改革,增强高校培养人材与企业发展的适应性,进一步提高教师的思想水平,拓宽教师的业务能力具有积极意义。

实习项目

设计题目1:社区物业在线管理信息系统的设计与实现

设计题目2:药品在线招投标系统的设计与实现

设计题目3:机电设备在线招投标系统的设计与实现

设计题目4:在线图书借阅管理信息系统的设计与实现

设计题目5:在线学生课程学习管理信息系统的设计与实现

设计题目6:学院毕业生就业指导信息平台系统的设计与实现

设计题目7:基于B/S模式的学生成绩管理信息系统的设计与实现

设计题目8:基于B/S模式的学生学籍管理信息系统的设计与实现

设计题目9:房产中介信息发布系统的设计与实现

设计题目10:房屋租赁网站的设计与实现

设计题目11:体育场馆在线售票管理信息系统的设计与实现

设计题目12:在线图书销售管理信息系统的设计与实现

设计题目13:车站在线售票管理信息系统的设计与实现

设计题目14:在线小说连载网站的设计与实现

设计题目15:基于B/S模式的通用题库管理系统的设计与实现

设计题目16:网上辅导答疑管理系统的设计与实现

设计题目17:电子导师平台的建立与实现

设计题目18:教学质量网络评测系统的设计与实现

设计题目19:基于会员制的购物网站的设计与实现

设计题目20:网上招聘系统的设计与实现

设计题目21:音乐网网站的设计与实现

设计题目22:在线手机城网站的设计与实现

设计题目23:商务学院招生网站的设计与实现

设计题目24:基于WEB的新闻发布系统的设计与实现

设计题目25:“多多羊”星座网站的设计与实现

设计题目26:一个BBS主题论坛的设计与实现

设计题目27:网络课程在线测试系统的设计与实现

设计题目28:企业职工人事在线管理信息系统的设计与实现

设计题目29:企业职工工资在线管理信息系统的设计与实现

设计题目30:在线经济适用房摇号系统的设计与实现

设计题目31:实验室设备在线管理信息系统的设计与实现

设计题目32:社区住户在线投诉管理信息系统的设计与实现

设计题目33:花卉网上销售系统的设计与实现

设计题目34:医药销售系统信息系统的设计与实现

设计题目35:高校教师人事管理系统的设计与实现

设计题目36:论文管理系统的设计与实现

设计题目37:科研成果申报管理系统的设计与实现

设计题目38:高校图书管理系统——期刊信息管理

设计题目39:高校图书管理系统——读者信息系统

设计题目40:商品房销售信息平台的系统的设计与实现

第一章 系统分析

1.1 需求分析

1.1.1 功能性需求分析

本系统为员工工资管理系统。系统能够提供对员工工资的管理,包括员工工资汇总、工资发放明细和对部门信息、岗位信息、员工信息以及员工考勤的管理,报表生成与打印,本系统还实现了员工工资结构的设置操作,实现财务部门对本单位工资发放系统的集中管理。

职工的主要功能模块包含:

(1)职工登录

职工可以修改默认密码,根据自己的职工编号和密码登录,系统会判断输入是否合法,若输入正确则登录成功,否则提示登录失败,可以点击“忘记密码”通过手机号找回密码。

(2)浏览工资信息

职工可以在主界面按年月递增或递减的次序浏览自己的所有工资信息。

(3)查询工资信息

职工进入主界面后,输入有效年月,点击查询,会显示自己对应年月的工资信息。

(4)职工可以选择打印工资报表,在线下载pdf格式的报表。

人事部管理员的主要功能模块包含:

(1)人事部管理员登录

人事部管理员输入管理员账号和密码,若输入正确则登录成功,否则提示登录失败。

(2)添加职工信息

若有新职工入职,人事部管理员可在登录后进入添加职工信息的界面,可以添加职工信息(职工编号、职工姓名、职工性别、职务、任职状态、职工年龄、密码等),对操作进行确认后,添加成功。

(3)修改职工信息

若需要修改在职职工信息,人事部管理员可在登录后进入修改职工信息界面,输入已添加成功的职工编号,从而对其它信息进行修改,对操作进行确认后,在主界面点击查询的时候会发现该职工的有些信息会有所改变。

(4)查询职工信息

人事部管理员可在登录后进入修改职工信息界面,输入已成功添加的职工编号,点击查询,会显示之前所添加的信息。

(5)删除职工信息

若有职工离职,人事部管理员可在登录后进入删除职工信息的界面,输入已添加成功的职工编号,点击删除。对操作进行确认后,会删除该职工的个人信息和所有工资信息,在进行查询的时候会发现查无此人。

财务部管理员的主要功能模块包含:

(1)财务部管理员登录

财务部管理员输入管理员账号和密码,若输入正确则登录成功,否则提示登录失败。

(2)调整工资信息

若有需要对某一员工的工资进行调整,财务部管理员可在登录后进入加调整工资信息界面,输入员工编号、工资种类、数额。对操作进行确认后,若数据库中不存在该员工本月工资信息,会自动添加信息,否则会在原有基础上修改,在进行查询的时候会发现该员工当前月度的工资状况有所改变。

(3)查询工资信息

财务部管理员可在登录后进入查询工资信息界面,输入所待查职工编号、年月,点击查询后时候会显示该职工当月的工资情况。若不输入职工编号,则会按职工号顺序显示所有职工当月的工资情况;若不输入年月,则会按年月由新到旧顺序显示该职工每月的工资情况。

(4)增加工资信息

若职工薪资有调高或提成等新增内容,财务部管理员可在系统中增加工资项,以达到职工们的应得数额。

(5)删除工资信息

若职工薪资有减少的内容,财务部管理员可在系统中删除该工资项,以达到职工们的应得数额。

其它需求:

(1)系统要考虑承载至少200人的同时在线操作;

(2)要考虑行政部管理员增加、修改信息过程中的失败恢复问题;

(3) 要考虑行政部管理员增加、修改信息后最近三次修改的历史记录保留问题,以便数据回溯;

(4)职工工资信息及员工信息应在职工“任职状态”为“离职两年以上”后才可被删除,以避免不必要的劳务纠纷。

1.1.2 性能需求分析

系统建成后,系统性能不低于以下性能要求:平均响应时间:50用户小于3秒;200用户小于30秒;CPU平均使用率小于80%。

本系统要求软件运行环境为Windows XP以上的操作系统,建议使用1024*768px的IE浏览器。硬件环境要求CPU i3以上,内存2G以上,硬盘500G以上,I/O设备包括鼠标、键盘和显示器。

1.1.3 系统采用的数据库及框架技术分析

本系统主要采用SSH(Spring + Struts + Hibernate)框架,是一个基于Web的工资管理系统,支持员工相关信息Web查询和发布等。开发工具采用MyEclipse 8.6,Tomcat6.0服务器,Mysql5.5数据库,编程语言使用Java、JSP。在开发过程中使用到的技术主要有:Struts2.1.6、jQuery1.4.4、Javascript,CSS等。

图1.1 平台技术支持

1.2 系统数据流图

图1.2 系统数据流图

第二章 系统总体结构设计

2.1 体系结构

图2.1 系统体系结构图

2.2 系统的功能结构

图2.2 系统功能结构图

2.3 概念结构设计

图2.3 系统概念结构E-R图

2.4数据库设计

2.4.1数据库逻辑结构设计

图2.4 数据库逻辑结构设计图

2.4.2数据库的完整性约束

图2.5 Admin表

图2.6 Staff表

图2.7 Department表

图2.8 Wage表

2.4.3数据库的安全性

两个MySQL数据库通过日志同步方式实现双主节点热备份,通过haproxy实现数据库集群负载均衡。当某一个MySQL节点宕机时,保证服务正常运行,从而实现数据库的高可用和大流量并发。

第三章 详细设计

3.1 设计概述

随着计算机技术的发展,企业管理越来越趋于自动化,而工资管理是企业管理的重要组成部分,它与企业的财务管理、人事管理有着密切的联系。由于企业员工工资结构存在一定的规律性,工资发放在时间上和操作上存在一定的重复性,这使得企事业单位工资管理计算机化成为可能。本系统在此基础上实现了工资信息查询、人员信息管理、报表生成等功能。用户只要使用IE浏览器访问相关站点,输入正确的用户名和密码成功登陆后,普通用户便可查询自己的工资情况和其他相关信息。对管理员来说使用起来也非常的方便快捷,可以进行科学、合理的对员工工资和人员进行管理。

3.2系统规范要求

需求验证很重要,如果在构造设计开始之前,通过验证基于需求的测试计划和原型测试来 验证需求的正确性及其质量,就能大大减少项目后期的返工现象。

在需求验证过程中,要对需求文档中定义的需求执行多种类型的检查。

有效性检查——对于每项需求都必须证明它是正确有效的,确实能解决用户面对的问题。

一致性检查——在需求文档中,需求不应该冲突,即对同一个系统功能不应出现不同的描述或相互矛盾的约束。

完备性检查——需求文档应该包括所有系统用户想要的功能和约束。

现实性检查——检查需求以保证能利用现有技术实现。

可检验性检查——描述的需求能够实际测试。

可跟踪性检查——需求的出处被清晰地记录,每一系统功能都能被跟踪到要求它的需求集合,每一项需求都能追溯到特定用户的要求。

可调节性检查——需求变更能够不对其他系统带来大规模的影响。 可读性检查,需求说明能否被系统购买者和最终用户读懂。

3.3 系统功能设计

本系统的主要功能包括:系统数据初始化;员工基本信息数据的查询、添加、修改、删除;企业工资结构的基本设定;企业工资参数的设定与管理;员工考勤的管理;员工个人工资表的查询;员工工资的浏览、修改、添加、删除;系统的维护包括用户的操作权限、密码修改。

员工信息、部门信息、岗位信息、考勤记录等只能被管理员修改,添加,删除;员工可以查看个人信息、考勤记录、工资信息等。

第四章 系统实现

4.1 界面设计原则

(1)简易性

界面的简洁是要让用户便于使用、便于了解、并能减少用户发生错误选择的可能性。

(2)用户语言

界面中要使用能反应用户本身的语言,而不是游戏设计者的语言。

(3)记忆负担最小化

人脑不是电脑,在设计界面时必须要考虑人类大脑处理信息的限度。人类的短期记忆极不稳定、有限,24小时内存在25%的遗忘率。所以对用户来说,浏览信息要比记忆更容易。

(4)一致性

一致性是每一个优秀界面都具备的特点。界面的结构必须清晰且一致,风格必须与游戏内容相一致。

(5)清楚

在视觉效果上便于理解和使用。

(6)用户的熟悉程度

用户可通过已掌握的知识来使用界面,但不应超出一般常识。

(7)从用户的观点考虑

想用户所想,做用户所做。用户总是按照他们自己的方法理解和使用。

通过比较两个不同世界(真实与虚拟)的事物,完成更好的设计。如:书籍对比竹简。

(8)排列

一个有序的界面能让用户轻松的使用。

(9) 安全性

用户能自由的作出选择,且所有选择都是可逆的。在用户作出危险的选择时有信息介入系统的提示。

(10)灵活性

简单来说就是要让用户方便的使用,但不同于上述。即互动多重性,不局限于单一的工具(包括鼠标、键盘或手柄)。

(11)人性化

高效率和用户满意度是人性化的体现。应具备专家级和初级玩家系统,即用户可依据自己的习惯定制界面,并能保存设置。

4.2 功能设计实现

4.2.1程序部分源代码

①管理员主要代码

package com.salary.dao;import java.sql.ResultSet;
import java.sql.SQLException;import com.salary.model.Admin;/*** @author 管理员数据库操作封装*/
public class AdminDao extends BaseDao {public Admin login(String adminNo, String adminPassword) {String sql = "select * from admin where adminNo = '" + adminNo + "' and adminPassword = '" + adminPassword + "'";ResultSet resultSet = query(sql);try {if (resultSet.next()) {Admin admin = new Admin();admin.setId(resultSet.getInt("adminNo"));admin.setName(resultSet.getString("adminName"));admin.setPassword(resultSet.getString("adminPassword"));admin.setStatus(resultSet.getInt("adminStatus"));return admin;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}public boolean editPassword(Admin admin, String newAdminPassword) {// TODO Auto-generated method stubString sql = "update admin set adminPassword = '" + newAdminPassword + "' where adminNo = " + admin.getAdminNo();return update(sql);}
}

②部门管理主要代码

package com.salary.dao;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import com.salary.model.Clazz;
import com.salary.model.Page;
import com.salary.util.StringUtil;/*** * @author 部门信息数据库操作*/
public class DepartmentDao extends BaseDao {public List<Department> getDepartmentList(Department department, Page page) {List<Department> ret = new ArrayList<Department>();String sql = "select * from department ";if (!StringUtil.isEmpty(department.getDepartmentName())) {sql += "where departmentName like '%" + department.getDepartmentName() + "%'";}sql += " limit " + page.getStart() + "," + page.getPageSize();ResultSet resultSet = query(sql);try {while (resultSet.next()) {Department dp = new Department();dp.setId(resultSet.getInt("departmentNo"));dp.setName(resultSet.getString("departmentName"));dp.setTel(resultSet.getString("departmentTel"));ret.add(dp);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return ret;}public int getDepartmentListTotal(Department department) {int total = 0;String sql = "select count(*)as total from department ";if (!StringUtil.isEmpty(department.getDepartmentName())) {sql += "where departmentName like '%" + department.getDepartmentName() + "%'";}ResultSet resultSet = query(sql);try {while (resultSet.next()) {total = resultSet.getInt("total");}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return total;}public boolean addDepartment(Department department) {String sql = "insert into department values(null,'" + department.getDepartmentName() + "','" + department.getDepartmentTel()+ "') ";return update(sql);}public boolean deleteDepartment(int departmentNo) {String sql = "delete from department where departmentNo = " + departmentNo;return update(sql);}public boolean editDepartment(Department department) {// TODO Auto-generated method stubString sql = "update department set departmentName = '" + department.getDepartmentName() + "',departmentTel = '"+ department.getDepartmentTel() + "' where departmentNo = " + department.getDepartmentNo();return update(sql);}
}

③职工管理主要代码

package com.salary.dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;import com.salary.model.Admin;
import com.salary.model.Clazz;
import com.salary.model.Page;
import com.salary.model.Student;
import com.salary.util.StringUtil;public class WorkerDao extends BaseDao {public boolean addWorker(Worker worker) {String sql = "insert into worker values(null,'" + worker.getWorkerNo() + worker.getWorkerName() + "','"+ worker.getWorkerSex() + "'";sql += ",'" + worker.getWorkerIdCardNo() + "','" + worker.getWorkerBankCardNo() + "'";sql += ",'" + worker.getWorkerTel() + "','" + worker.getWorkerAddress() + "'";sql += ",'" + worker.getWorkerJob() + "','" + worker.getWorkerJobState() + "'";sql += "," + worker.getDepartmentNo() + ",'" + worker.getWorkerPassword() + "',null)";return update(sql);}public boolean editWorker(Worker worker) {// TODO Auto-generated method stubString sql = "update worker set workerName = '" + worker.getWorkerName() + "'";sql += ",workerSex = '" + worker.getWorkerSex() + "'";sql += ",workerIdCardNo = '" + worker.getWorkerIdCardNo() + "'";sql += ",workerBankCardNo = '" + worker.getWorkerBankCardNo() + "'";sql += ",workerTel = '" + worker.getWorkerTel() + "'";sql += ",workerAddress = '" + worker.getWorkerAddress() + "'";sql += ",workerJob = '" + worker.getWorkerJob() + "'";sql += ",workerJobStatus = '" + worker.getWorkerJobState() + "'";sql += ",departmentNo = '" + worker.getDepartmentNo() + "'";sql += " where workerNo = " + worker.getWorkerNo();return update(sql);}public boolean setWorkerPhoto(Worker worker) {// TODO Auto-generated method stubString sql = "update worker set workerPhoto = ? where workerNo = ?";Connection connection = getConnection();try {PreparedStatement prepareStatement = connection.prepareStatement(sql);prepareStatement.setBinaryStream(1, worker.getWorkerPhoto());prepareStatement.setInt(2, worker.getWorkerNo());return prepareStatement.executeUpdate() > 0;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return update(sql);}public boolean deleteWorker(String workerNos) {// TODO Auto-generated method stubString sql = "delete from worker where workerNo in(" + workerNos + ")";return update(sql);}public Worker getWorker(int no) {String sql = "select * from worker where workerNo = " + workerNo;Worker worker = null;ResultSet resultSet = query(sql);try {if (resultSet.next()) {worker = new Worker();worker.setWorkerNo(resultSet.getInt("workerNo"));worker.setWorkerName(resultSet.getString("workerName"));worker.setWorkerSex(resultSet.getString("workerSex"));worker.setWorkerIdCardNo(resultSet.getString("workerIdCardNo"));worker.setWorkerBankCardNo(resultSet.getString("workerBankCardNo"));worker.setWorkerTel(resultSet.getString("workerTel"));worker.setWorkerAddress(resultSet.getString("workerAddress"));worker.setWorkerJob(resultSet.getString("workerJob"));worker.setWorkerJobState(resultSet.getString("workerJobState"));worker.setWorkerDepartmentNo(resultSet.getString("workerDepartmentNo"));worker.setWorkerPassword(resultSet.getString("workerPassword"));worker.setWorkerPhoto(resultSet.getBinaryStream("workerPhoto"));return worker;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return worker;}public List<Worker> getStudentList(Worker worker, Page page) {List<Worker> ret = new ArrayList<Worker>();String sql = "select * from worker ";if (!StringUtil.isEmpty(worker.getWorkerName())) {sql += "and workerName like '%" + worker.getWorkerName() + "%'";}if (worker.getDepartmentNo() != 0) {sql += " and departmentNo = " + worker.getDepartmentNo();}if (worker.getWorkerNo() != 0) {sql += " and workerNo = " + worker.getWorkerNo();}sql += " limit " + page.getStart() + "," + page.getPageSize();ResultSet resultSet = query(sql.replaceFirst("and", "where"));try {while (resultSet.next()) {Worker s = new Worker();s.setWorkerNo(resultSet.getInt("workerNo"));s.setWorkerName(resultSet.getString("workerName"));s.setWorkerSex(resultSet.getString("workerSex"));s.setWorkerIdCardNo(resultSet.getString("workerIdCardNo"));s.setWorkerBankCardNo(resultSet.getString("workerBankCardNo"));s.setWorkerTel(resultSet.getString("workerTel"));s.setWorkerAddress(resultSet.getString("workerAddress"));s.setWorkerJob(resultSet.getString("workerJob"));s.setWorkerJobState(resultSet.getString("workerJobState"));s.setWorkerDepartmentNo(resultSet.getString("workerDepartmentNo"));s.setWorkerPassword(resultSet.getString("workerPassword"));s.setWorkerPhoto(resultSet.getBinaryStream("workerPhoto"));ret.add(s);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return ret;}public int getWorkerListTotal(Worker worker) {int total = 0;String sql = "select count(*)as total from worker ";if (!StringUtil.isEmpty(worker.getWorkerName())) {sql += "and workerName like '%" + worker.getWorkerName() + "%'";}if (worker.getDepartmentNo() != 0) {sql += " and departmentNo = " + worker.getDepartmentNo();}if (worker.getWorkerNo() != 0) {sql += " and workerNo = " + worker.getWorkerNo();}ResultSet resultSet = query(sql.replaceFirst("and", "where"));try {while (resultSet.next()) {total = resultSet.getInt("total");}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return total;}public Worker login(String workerNo, String workerPassword) {String sql = "select * from worker where workerNo = '" + workerNo + "' and workerPassword = '" + workerPassword + "'";ResultSet resultSet = query(sql);try {if (resultSet.next()) {Worker worker = new Worker();worker.setWorkerNo(resultSet.getInt("workerNo"));worker.setWorkerName(resultSet.getString("workerName"));worker.setWorkerSex(resultSet.getString("workerSex"));worker.setWorkerIdCardNo(resultSet.getString("workerIdCardNo"));worker.setWorkerBankCardNo(resultSet.getString("workerBankCardNo"));worker.setWorkerTel(resultSet.getString("workerTel"));worker.setWorkerAddress(resultSet.getString("workerAddress"));worker.setWorkerJob(resultSet.getString("workerJob"));worker.setWorkerJobState(resultSet.getString("workerJobState"));worker.setWorkerDepartmentNo(resultSet.getString("workerDepartmentNo"));worker.setWorkerPassword(resultSet.getString("workerPassword"));worker.setWorkerPhoto(resultSet.getBinaryStream("workerPhoto"));return worker;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}public boolean editWorkerPassword(Worker worker, String newWorkerPassword) {// TODO Auto-generated method stubString sql = "update worker set workerPassword = '" + newWorkerPassword + "' where workerNo = " + worker.getWorkerNo();return update(sql);}
}

④工资管理主要代码

package com.salary.dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;import com.salary.model.Page;
import com.salary.model.Student;
import com.salary.model.Teacher;
import com.salary.util.StringUtil;/*** * @author 工资表数据库操作*/
public class SalaryDao extends BaseDao {public boolean addSalary(Salary salary) {String sql = "insert into salary values(" + salary.getWorkerNo() + "," + salary.getYearAndMonth();sql += "," + salary.getBasicSalary() + "," + salary.getBonus();sql += "," + salary.getSubsidy() + "," + salary.getForfeit();sql += "," + salary.getRealSalary() + ",'" + salary.getDistributionMethod() + "'";sql += ",'" + salary.getDistributionStatus() + "'";return update(sql);}public boolean editSalary(Salary salary) {// TODO Auto-generated method stubString sql = "update salary set basicSalary = " + salary.getBasicSalary();sql += ",bonus = " + salary.getBonus();sql += ",subsidy = " + salary.getSubsidy();sql += ",forfeit = " + salary.getForfeit();sql += ",realSalary = " + salary.getRealSalary();sql += ",distributionMethod = '" + salary.getDistributionMethod() +"'";sql += ",distributionStatus = '" + salary.getDistributionStatus() +"'";sql += " where workerNo = " + salary.getWorkerNo() + "and yearAndMonth = " + salary.getYearAndMonth();return update(sql);}public boolean deleteSalary(String workerNos, Date yearAndMonths) {// TODO Auto-generated method stubString sql = "delete from salary where workerNo in(" + workerNos + ") and" + yearAndMonth + "in("+ yearAndMonths +")";return update(sql);}public Salary getSalary(int workerNo) {String sql = "select * from salary where workerNo = " + workerNo;Teacher salary = null;ResultSet resultSet = query(sql);try {if (resultSet.next()) {salary = new Salary();salary.setBasicSalary(resultSet.getInt("basicSalary"));salary.setBonus(resultSet.getInt("bonus"));salary.setSubsidy(resultSet.getInt("subsidy"));salary.setForfeit(resultSet.getInt("forfeit"));salary.setRealSalary(resultSet.getInt("realSalary"));salary.setDistributionMethod(resultSet.getString("distributionMethod"));salary.setDistributionStatus(resultSet.getString("distributionStatus"));return salary;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return salary;}public List<Salary> getSalaryList(Salary salary, Page page) {List<Salary> ret = new ArrayList<Salary>();String sql = "select * from salary ";if (!StringUtil.isEmpty(salary.getWorkerNo())) {sql += "and workerNo =" + salary.getWorkerNo();}if (salary.getYearAndMonth() != 0) {sql += " and yearAndMonth = " + salary.getYearAndMonth();}sql += " limit " + page.getStart() + "," + page.getPageSize();ResultSet resultSet = query(sql.replaceFirst("and", "where"));try {while (resultSet.next()) {Salary t = new Salary();t.setBasicSalary(resultSet.getInt("basicSalary"));t.setBonus(resultSet.getInt("bonus"));t.setSubsidy(resultSet.getInt("subsidy"));t.setForfeit(resultSet.getInt("forfeit"));t.setRealSalary(resultSet.getInt("realSalary"));t.setDistributionMethod(resultSet.getString("distributionMethod"));t.setDistributionStatus(resultSet.getString("distributionStatus"));ret.add(t);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return ret;}public int getSalaryListTotal(Salary salary) {int total = 0;String sql = "select count(*)as total from salary ";if (!StringUtil.isEmpty(salary.getWorkerNo())) {sql += "and workerNo =" + salary.getWorkerNo();}if (salary.getYearAndMonth() != 0) {sql += " and yearAndMonth = " + salary.getYearAndMonth();}ResultSet resultSet = query(sql.replaceFirst("and", "where"));try {while (resultSet.next()) {total = resultSet.getInt("total");}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return total;}
}

4.2.2运行截图

图4.1 登录界面图

图4.2 管理员主界面图

图4.3 部门信息“添加”功能图

图4.4 部门信息“删除”功能图

图4.5 部门信息“修改”功能图

第五章 系统软件测试

5.1 测试目的

软件测试的目的是尽可能早的找出软件产品中潜藏的缺陷,并确保其得以修复,也就是让用户对产品有更好的体验,保证软件的高质量。软件测试的另外一个目的就是降低软件的开发成本,除了降低开发成本,还可以降低因软件缺陷带来的商业风险。如果软件的缺陷过多,也会降低合作企业的信任度,从而造成商业上的一些损失和风险,进行测试则会降低商业风险。测试是在用户使用软件之前提早介入,进行软件质量的保障。只有经过了软件测试这一环节,才能把软件交付到用户手中。公司的人员才对软件的信心更高,不至于把软件交付出去之后,时常担心用户的投诉或产品有致命的风险。

5.2 测试方法

(1)黑盒测试(Black Box)

测试内容:黑盒测试是把测试对象看做一个黑盒子,利用黑盒测试法进行动态测试时,需要测试软件产品已经实现的功能是否符合功能设计要求,不需测试软件产品的内部结构和处理过程。

黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。

(2)白盒测试(White Box)

测试内容:设计者可以看到软件系统的内部结构,并且使用软件的内部知识来指导测试数据及方法的选择。

白盒测试通常被认为是单元测试与集成测试,期中有六种测试方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖。

5.3 测试用例

1、测试用户并发登录

2、测试人事部新建岗位

3、财务部配置员工薪资结构

企业职工工资在线管理信息系统【生产实习课设报告】相关推荐

  1. 企业职工工资在线管理信息系统【数据建模与程序设计课程设计报告】

    若本文对你有用请点赞.关注我哟!有些人建议我把指导书也写进博客,所以文章略长. 复习累了可以看看我的视频,有惊喜哦! https://www.bilibili.com/video/BV117411c7 ...

  2. 基于B/S模式的学生成绩管理信息系统【生产实习课设报告】

    若本文对你有帮助,请点赞.关注我哟!大四上学期课设之一,仅供参考. 第一章 系统分析 1.1 需求分析 1.1.1 功能性需求分析 (1)个人信息:教师和学生查看自己的个人信息. (2) 修改密码:教 ...

  3. 认知计算机系统和应用实验报告,计算机认知实习课实验报告.doc

    计算机认知实习课 实验报告 学院:计算机科学学院 班级:************ 姓名:*** 学号:******** 实验名称:在虚拟机上安装计算机操作系统及应用软件,查阅资料学会组装电脑. 实验目 ...

  4. php与管理信息系统的开发,php工资和管理信息系统的开发与设计

    选题的基本思路.方法和主要观点: 基本思路: 设计的工资管理系统也是建立在一系列类基础之上的,其编程的思想是:先根据一定的需要创建一系列的子类或直接调用PB提供的基类,编制程序时,由这些类派生出相应的 ...

  5. C语言源码做的职工工资管理系统课程设计(源码+课程设计报告)

    一.课程设计的目的: C语言课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C语言程序设计的知识点,又接近工程实际需要.本次设计的目的是通过课程设计 ...

  6. 企业计算机管理系统数据流图,管理信息系统作业[数据流图].doc

    WORD格式可编辑 专业技术 资料整理 教师科研管理工作流程是:接收教师交来的科研申报材料,科研秘书根据科研管理条例进行初审,对需要修改的申报材料退回教师修改:对初审合格的材料,再根据科研管理条例和科 ...

  7. 传智播客教辅平台mysql题库_课堂管理系统;在线教辅平台;java课设

    # 白泽智慧教辅平台 **说明:** 运行时需要修改位置: bzedu\src\main\resources\application.properties bzedu\src\main\resourc ...

  8. Java高校辅教平台答案_课堂管理系统;在线教辅平台;java课设

    # 白泽智慧教辅平台 **说明:** 运行时需要修改位置: bzedu\src\main\resources\application.properties bzedu\src\main\resourc ...

  9. 在线课堂系统 java_课堂管理系统;在线教辅平台;java课设

    # 白泽智慧教辅平台 **说明:** 运行时需要修改位置: bzedusrcmainresourcesapplication.properties bzedusrcmainresourcesconfi ...

最新文章

  1. MS UC 2013-0-虚拟机-标准化-部署-3-虚拟机-生产
  2. ⑭云上场景 神州导航科技,智慧云平台三层架构部署实践
  3. java文件流插入数据库_使用Java流查询数据库
  4. 经典php代码,10个非常经典的php代码片段.doc
  5. 转载:iPhone 6 Plus 屏幕宽度问题 375 vs 414
  6. java取邮箱前缀_java抓取网页或文件中的邮箱号码
  7. 《白日梦想家》观后感
  8. java 5 多线程_Java基础系列五、多线程
  9. 设计灵感|春节新年到!充满年味的海报给你参考
  10. 重置系统_【刹车系统】丰田锐志刹车系统重置记忆
  11. java面试要点---基础部分CoreJava,基础及语法
  12. iis6 php url重写,IIS下 Yii Url重写,iisyiiurl重写_PHP教程
  13. 了解HTML CSS格式化排版 文字排版
  14. 用大前端技术实现的一款仿Boss直聘app(已开源)
  15. 测测你的杀毒软件强弱等级吧!!!!!
  16. numeric库函数——accumulate函数
  17. IplImage结构及与其相关的读写函数
  18. Hamcrest包含匹配器
  19. Inno Setup 为程序创建桌面快捷方式
  20. Windows10 64位安装MySQL(免安装版本)

热门文章

  1. 足球机器人第三次作业:求自己的位置
  2. 福布斯发布2019全球亿万富豪榜:马化腾进入前20名
  3. MODTRAN使用心得
  4. 猪八戒网--中国威客交易平台
  5. 芯片居然是民工磨出来的!
  6. Unity 性能优化 学习
  7. 人血清白蛋白修饰磺胺嘧啶/磺胺多辛 HSA-Sulfadiazine/Sulfadoxine
  8. td 属性修改 html,HTML: td 标签
  9. 我相信中国经济形势一片大好
  10. CAD控件教程:网上打开dwg文件时,对dwg文件路径加密的功能