简单的职工管理系统(java开发)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

本文是在进行数据结构学习中的一个不成熟的尝试项目,在面向对象的开发中还是使用了一些位于main函数里的面向过程开发。基本技术还是不难的,仅供各位参考。


提示:以下是本篇文章正文内容,下面案例可供参考

一、需要的环境和包

需要环境:java语言已经OK,笔者采用的是idea开发环境
需要包:jxl包(用于excle文件执行) //本文最后有jxl包附件下载地址

二、编写步骤

1.excle文件操作类

在本文中由于为简单的职工管理系统,所以说没有采用数据库进行编写,而是采用了文件的读写来将数据导入内存中。在进行选择txt文件和与数据库有些许类似的excle文件时笔者还是采用了excle文件,由于其行列分明还是比较好读的。
代码如下:

import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class excleFiles {
    //private static String[][] workers = new String[100][8];
    //private static String[] workerName = new String[100];

    public void go(String[][] workers,String[] workerName) {//对内存表格进行初步处理已完善!
        File f = new File("data.xls");
        try {
            Workbook book=Workbook.getWorkbook(f);//
            Sheet sheet=book.getSheet(0); //获得第一个工作表对象
            for(int i=0;i<sheet.getRows();i++){
                for(int j=0;j<sheet.getColumns();j++){
                    Cell cell=sheet.getCell(j, i); //获得单元格
                    //System.out.print(cell.getContents()+" ");
                    workers[j][i] = cell.getContents();
                }
                Cell cell2 = sheet.getCell(0,i);
                workerName[i] = cell2.getContents();
                //System.out.print("\n");
            }
            //System.out.println(sheet.getColumns());
            //System.out.println(sheet.getRows());
            /*for(int i=0;i<sheet.getRows();i++){
                for(int j=0;j<sheet.getColumns();j++){
                    //Cell cell=sheet.getCell(j, i); //获得单元格
                    System.out.print(workers[j][i]+" ");

                }
                //System.out.print("\n");
            }*/
        } catch (BiffException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public int getTotal(){//读出现在表中存在多少个职工信息已完善!
        File f = new File("data.xls");
        int total = 0;
        try {
            Workbook book = Workbook.getWorkbook(f);//
            Sheet sheet = book.getSheet(0); //获得第一个工作表对象
            total = sheet.getRows();
        }catch (BiffException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return total;
    }

    public void output(String[][] workers){//写入data.xls表


    }

    /*private void show() {//验证一下导入成功没有
        for (int i = 0; workers[i][0] != null; i++) {
            for (int j = 0; j < 7; j++) {
                System.out.println(workers[i][j]);
            }
        }
    }*/

    /*public static void main(String args[]){
        for (int i = 0; workers[i][0] != null; i++) {
            for (int j = 0; j < 7; j++) {
                System.out.println(workers[i][j]);
            }
        }
    }*/
}

在此段代码中笔者由于当时对于java用的还不是很熟练,所以还是有很多对于试错的处理。因为毕竟也是自己探寻过的证明所以也就没有删除。初始化函数采用从主函数中导入空二维数据works[][]来进行处理并回传。
并且导入之后有一点需要注意的是二维数组中的数据并不是按照在excle中输入的行列进行存储的。二维数组中的列是excle中的行,二维数组上的行
在本系统中还有一个缺陷是在最后并没有进行数据的写回。但是这部分也并不困难,需要的兄弟们可以自己去找一找。

2.排序算法

在本系统中还是希望实现无论原始表为多乱,在导入表之后的初始情况能够按照姓名进行字典排序。同时由于根据选定属性进行升序排序的要求,字典排序由于其泛用性(各种属性都包含)而有更多的作用。写成单独的类在很多模块中都可以用到。
具体代码如下:

import java.io.UnsupportedEncodingException;

public class sortUp {
    public void sort(String[][] workers,int total,int sign){
        //外层循环控制比较的次数
        for (int i = 0; i < total-1; i++) {
            //内层循环控制到达位置
            for (int j = 0; j < total - i - 1; j++) {
                //前面的元素比后面大就交换
                if (compare(workers,sign,j)) {
                    int i1;
                    String temp = null;
                    for (i1 = 0;i1 < 8;i1++) {
                        temp = workers[i1][j];
                        workers[i1][j] = workers[i1][j + 1];
                        workers[i1][j + 1] = temp;
                    }
                }
            }
        }
    }

    public static boolean compare(String[][] workers,int sign,int i){
        try {
            String str1 = new String(workers[sign][i].toString().getBytes("GB2312"),"ISO-8859-1");
            String str2 = new String(workers[sign][i+1].toString().getBytes("GB2312"),"ISO-8859-1");
            if (str1.compareTo(str2) < 0){
                return false;
            }
            else {
                return true;
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        System.out.println("有异常出现");
        return false;
    }
}

在上述代码中,采用了冒泡排序对无序的“一维数组”(因为规定了以第几行的值为比对参数)进行升序排列。在compare函数中利用了字典排序的方法。其根本方式是将字符串全部转化为ISO-8859-1编码进行比较。

3.主函数

主函数包含了简易的控制台人机交互界面(没有编写相应的图形操作界面,有一说一java图形界面真的烦\生气)以及具体的实现,其实这个也可以编写到其他类里,主函数只包含对象。
具体代码如下:

import java.util.*;

public class main {
    private static Scanner input = new Scanner(System.in);
    private static String[][] workers = new String[100][8];
    private static String[] workerName = new String[100];
    private static String[] newWorker = new String[8];
    private static int total = 0;

    public static void main(String[] args) {
        excleFiles file = new excleFiles();
        file.go(workers,workerName);//初始化workers表
        sortUp Osort = new sortUp();
        total = file.getTotal();
        Osort.sort(workers,total,0);
        System.out.println("经过姓名字典排序后的职工表为");
        for (int i = 0;i < total;i++){
            for (int j = 0;j < 8;j++){
                System.out.print(workers[j][i]+" ");
            }
            System.out.println();
        }//此部分为调试代码时验证使用
        System.out.println("********************欢迎使用职工管理系统*********************");
        System.out.println("*                                           		    *");
        System.out.println("*                 1.增加职工                                 *");
        System.out.println("*                 2.删除职工                                 *");
        System.out.println("*                 3.查询职工信息			                   *");
        System.out.println("*                 4.修改职工信息			                   *");
        System.out.println("*                 5.根据需要对职工进行排序					   *");
        System.out.println("*                 6.退出                                    *");
        System.out.println("*                                                          *");
        System.out.println("***********************职工管理系统**********************");

        while (true) {
            System.out.println("请选择需要的服务(1-6):");
            int Select = input.nextInt();
            if(Select == 1){//添加功能已完善!
                int i = 0;
                System.out.println("您现在选择的是增加职工,请输入对应信息");
                System.out.println("姓名:");
                newWorker[i] = input.next();
                i++;
                System.out.println("性别:");
                newWorker[i] = input.next();
                i++;
                System.out.println("出生年月:");
                newWorker[i] = input.next();
                i++;
                System.out.println("工作年月:");
                newWorker[i] = input.next();
                i++;
                System.out.println("学历:");
                newWorker[i] = input.next();
                i++;
                System.out.println("职务:");
                newWorker[i] = input.next();
                i++;
                System.out.println("住址:");
                newWorker[i] = input.next();
                i++;
                System.out.println("电话:");
                newWorker[i] = input.next();
                System.out.println("您输入的用户信息为");
                for (i = 0;i < 8;i++) {
                    System.out.print(newWorker[i] + " ");
                }
                System.out.println("是否对其进行写入?确认请输入y,否则输入n");
                if(input.next().equals("y")){
                    for (i = 0;i < 8;i++) {
                        workers[i][total] = newWorker[i];
                    }
                    total++;
                    System.out.println("已写入");
                }
                System.out.println("现在职工表信息为");
                for (i = 0;i < total;i++){
                    for (int j = 0;j < 8;j++){
                        System.out.print(workers[j][i]+" ");
                    }
                    System.out.println();
                }//此部分为调试代码时验证使用
            }
            if(Select == 2){//删除功能(已写完但是未完善)//已完善!!!一遍过
                int flag = 0;
                System.out.println("您现在使用的是删除功能,请输入您要删除的员工姓名");
                String selectName = input.next();
                for(int i = 0;i < total;i++){
                    if (workers[0][i].equals(selectName)) {
                        System.out.println("匹配成功");
                        flag = 1;
                        for (int h = 0;h < 8;h++) {
                            System.out.print(workers[h][i] + " ");
                        }
                        System.out.println("您是否决定对其进行删除?删除请输入y,否则输入n");
                        if (input.next().equals("y")){
                            for (;i < total;i++){
                                for (int j=0;j < 8;j++){
                                    workers[j][i] = workers[j][i+1];
                                }
                            }
                            total--;
                        }
                        break;
                    }
                }
                if (flag == 0){
                    System.out.println("在职工表中未找到匹配对象");
                }
                System.out.println("现在职工表信息为");
                for (int i = 0;i < total;i++){
                    for (int j = 0;j < 8;j++){
                        System.out.print(workers[j][i]+" ");
                    }
                    System.out.println();
                }//此部分为调试代码时验证使用
            }
            if (Select == 3){//查询功能已完善!
                int flag = 0;
                System.out.println("您现在使用的是查询功能,请输入您查询的员工姓名");
                //System.out.println(total);(total值已经成功导入)
                /*for (int i=0;i < total;i++){
                    for (int j=0;j < 7;j++){
                        System.out.println(workers[j][i]);
                    }
                }*///workers表已经成功导入
                String selectName = input.next();
                //if (selectName.equals("a"))
                    //System.out.println("和a一样");
                //System.out.println(selectName);
                for (int i = 0;i < total;i++){
                    //System.out.println(workers[0][i]);这个匹配是对的
                    if (workers[0][i].equals(selectName)){
                        System.out.println("匹配成功");
                        for (int j=0;j < 8;j++) {
                            System.out.print(workers[j][i] + " ");
                        }
                        flag = 1;
                        break;
                    }
                }
                if (flag == 0){
                    System.out.println("未在职工表中找到匹配对象!");

                }
            }
            if (Select == 4){//修改值(已写但是未完善)//就改了一个值,总体功能没问题,gooddd~
                int flag = 0;
                System.out.println("您现在使用的是检索并修改功能,请输入您检索的员工姓名");
                String selectName = input.next();
                for (int i = 0;i < total;i++){
                    if (workers[0][i].equals(selectName)){
                        System.out.println("匹配成功,请输入您想修改的属性编码,编码对应如下");
                        flag = 1;
                        System.out.println("姓名:0    性别:1    出生年月:2  工作年月:3  学历:4    职务:5    住址:6    电话:7");
                        //String temp = input.next();
                        int temp = input.nextInt();
                        for (int j = 0;j < 8;j++){
                            //System.out.println(temp);测试用的
                            if (temp == j){
                                System.out.println("请输入您修改后的值");
                                workers[j][i] = input.next();
                                System.out.println("已修改完毕!");
                            }
                            /*else{
                                System.out.println("还没匹配到");
                            }*/
                        }
                        break;
                    }
                }
                if (flag == 0){
                    System.out.println("未在职工表中找到匹配对象!");
                }
                System.out.println("此时职工表为");
                for (int i=0;i < total;i++){
                    for (int j = 0;j < 8;j++){
                        System.out.print(workers[j][i]+" ");
                    }
                    System.out.println();
                }
            }
            if (Select == 5){//排序输出(采用的是升序字典排列法)
                System.out.println("您选择的是排序功能,本系统将对职工表中的选定属性行升序排列");
                int sign;
                sortUp sort1 = new sortUp();
                System.out.println("请选择您想要进行排序的属性编码,编码对应如下");
                System.out.println("姓名:0    性别:1    出生年月:2  工作年月:3  学历:4    职务:5    住址:6    电话:7");
                sign = input.nextInt();
                sort1.sort(workers,total,sign);
                System.out.println("此时职工表为");
                for (int i=0;i < total;i++){
                    for (int j = 0;j < 8;j++){
                        System.out.print(workers[j][i]+" ");
                    }
                    System.out.println();
                }
            }
            if (Select == 6){//退出并写入文件
                file.output(workers);
                System.out.println("感谢您的使用,欢迎下次再来!");
                break;
            }

        }

    }
}

这一部分笔者还是延续了之前的习惯,没有对自己的思考和试错代码进行去掉,只是注释掉了。这一部分其实人不人鬼不鬼(有面向对象的存在,但是有有点面向过程了,真的不太行),以后应该有时间的时候还会有优化版的推出。

三、执行结果

1.原始文件与初始化后的情况

原始文件初始化图片

2.程序运行界面(后文对每个模块的执行做了省略)

操作界面

四、结尾

这个程序还是存在有很多的改进的空间。放出本程序也是我的第一篇博文,从构思到完成一共花费了大约4天的时间。
在进行项目编写的过程中,我觉得最重要的点事提炼程序的“中心点”。什么是“中心点”,就是这个程序的重点在哪里。比如这个程序,其重点就在于文件读写处理,数组初始化和字典排序上。在编码的过程中只要把这三个点抓透彻了,那么剩下的编程就是小case了。比如在写云盘系统时(javaEE),重点就是把握好文件的上传以及下载,并且与数据库做好沟通,写出一个页面的漂亮表格,每一个点都很容易实现,在编程中无非就是把这几个要点一遍遍使用。
同时,还应该时刻注意对于代码模块的测试。尽量在自己“举棋不定”(不能确定一定对)的情况下先做点小小的测试。错误的堆砌是指数级的(至少我是怎么感觉的),本来几个简单的错误(比如==打成=,少打一个‘)’),就会演变成很严重的错误,找几百年都找不出这种。
对于本系统的不足欢迎交流指正!

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
员工管理系统是一个用于管理和维护员工信息的系统,Java EE(Java Enterprise Edition)是一种用于开发企业级应用程序的Java平台。下面是一个简单的员工管理系统Java EE介绍: 1. 数据库设计:员工管理系统通常需要一个数据库来存储员工的信息,例如员工姓名、职位、工资等。可以使用MySQL、Oracle等关系型数据库进行设计。 2. 后端开发:使用Java EE开发后端,可以使用Java Servlet和JavaServer Pages(JSP)来处理HTTP请求和生成动态网页。可以使用Java Persistence API(JPA)来与数据库进行交互,实现数据的增删改查操作。 3. 前端开发:使用HTML、CSS和JavaScript等前端技术来设计和实现用户界面。可以使用Bootstrap或其他前端框架来提供美观的界面和响应式设计。 4. 功能实现:员工管理系统通常包括以下功能: - 添加员工:输入员工信息并将其保存到数据库中。 - 查询员工:根据条件查询员工信息,并显示在界面上。 - 修改员工信息:修改已有员工的信息,并更新到数据库中。 - 删除员工:从数据库中删除指定的员工信息。 - 统计报表:生成各种统计报表,如员工总数、平均工资等。 5. 安全性考虑:在开发员工管理系统时,需要考虑数据的安全性。可以使用身份验证和授权机制来限制用户对系统的访问权限,以及使用加密算法来保护敏感数据的传输和存储。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值