实践项目二: 校园兼职平台

【项目内容】
项目功能结构图:
在这里插入图片描述

项目功能如下:
(1)登录注册功能:用户通过注册进入平台,注册信息包括用户编号(用户编号决定角色类型,学号注册为兼职人员,教师编号注册为管理员),注册后到登录界面输入账号和密码登录平台,注册信息包括:用户编号(学号/教师编号)、密码、姓名、出生日期、性别、电话、所在院系、注册日期等。后期如果忘记了密码,用户通过自己的账号和注册时的姓名找回密码。注意,为了安全起见,只有已经录入系统的用户可以注册账户,本平台提前录入了部分管理员和学生的信息到系统中供大家注册。(相关存储数据可通过I/O流直接存在文件,可也直接在文件里读的数据)
(2)个人信息管理:包括个人信息修改、密码修改、查询信用等级和查询余额功能。普通用户登录成功之后,可以修改个人注册时录入的信息,学号和注册时间不可更改,密码单独修改;也可以查询个人的信用等级,若信用等级不是最高,则查询个人信用等级时附加显示“按时完成X次后信用等级恢复至X级”(默认未逾期完成兼职工作3次恢复1级信用等级,等级梯度为1-5级,5级最高)。(相关存储数据可通过I/O流直接存在文件,可也直接在文件里读的数据)
(3)兼职申请功能:包括兼职信息查询、申请工作和结束工作。用户登录成功之后,可以查询所有的兼职信息,包括自己能申请的职位和不能申请的职位,也可以只查看自己能申请的职位(是否可申请与信用等级、岗位所需人员、兼职时间相关)。用户还可查看自己已完成的兼职信息和自己正在完成的兼职信息。满足条件的兼职,用户可以申请,开始工作时间为系统当前时间,相对的该兼职岗位对应的所需人员需要减少;完成工作后(逾期完成信用自动降低1级,0级为最低,0级后不可再申请兼职工作),需要计算所得薪酬(所得薪酬和是否逾期、逾期天数相关),若未逾期且信用等级未满,则需要计算恢复信用等级所需的次数,完成时间手动输入,不可小于兼职开始时间。(相关存储数据可通过I/O流直接存在文件,可也直接在文件里读的数据)
(4)基本信息维护功能:包括兼职等级设置、用户信用调整和逾期费用扣除比例调整。管理员端登录成功之后,可以调整兼职的等级(兼职等级梯度为一-五级,五级最高,一级最低),普通用户的信用等级>=兼职等级可申请职位,还可以增删兼职的类型,比如开发外包/销售/设计师等。管理员可以根据用户的表现动态地调整用户的信用等级,可越级增减,0级信用的普通用户管理员不可调整其信用等级。管理员还可以调整兼职的逾期费用,每天逾期扣除的费用相同,比如:原定一份兼职总薪资1000元,工作要求10天完成,逾期1天扣除100元,调整后一天扣除200元(扣除兼职费用为0后继续扣除用户余额,直到用户余额为<=0,自动结束工作,结算费用)。(相关存储数据可通过I/O流直接存在文件,可也直接在文件里读的数据)
(5)兼职信息投放:包括兼职人员设置、兼职的金额设置、兼职的时间录入以及兼职的其他信息录入。系统管理员登录成功之后可以把所有公司发布的兼职信息录入到平台,录入信息包括:营业执照编号、公司名字、岗位名称、兼职类型、兼职等级、工作内容、需求人数、工作时间等。系统管理员可以根据市场和公司要求,动态调整这些兼职工作的部分内容,比如需求人数、薪水等,工作时间不允许更改。(相关存储数据可通过I/O流直接存在文件,可也直接在文件里读的数据)
(6)系统管理功能:包括对普通用户、管理员和兼职信息的增删查改等。系统提前录入了一些管理员或者学生的信息在系统中,但是未全部录入,所以后续需要注册的用户需要已经录入的管理员登录平台进行信息录入,系统录入仅需要学号/教师编号和姓名即可,此信息供用户注册使用。管理员可以删除普通用户和别的管理员,以及没有用的兼职信息。(相关存储数据可通过I/O流直接存在文件,可也直接在文件里读的数据)

浅谈思路:
因为到现在还没有学习数据库,所以就使用了文件IO流来作为数据的存储,因为文件的IO流的序列化和反序列化都是每次只能读或者写一个对象,那么显然作为一个系统,不可能只给一个人使用。所以我们在这里解决第一个问题,那就是怎么一次存储多个对象。显然集合就完美解决了这个问题,所以我们创建一个对象集合,将我们需要存储的对象都放进去。接下来写代码的时候又出现了一个不算问题的问题:更改一个数据就将它序列化进去,还是更改完之后在进行保存。更改一个数据就序列化那么,当程序在不正常结束时,也能保存前面的数据。而最后在进行序列化,就一定要保证程序是正常退出。

public static void sign(User ss, int UID, String POSSWOED) throws IOException, ClassNotFoundException, ParseException {
        while (true) {
            System.out.println("------------------------");
            System.out.println("-  欢迎来到兼职人员界面  -");
            System.out.println("------------------------");
            System.out.println("1. 个人信息管理");
            System.out.println("2. 兼职申请");
            System.out.println("3. 退出系统");
            char i = TSUtility.Studentsign();
            switch (i) {
                case '1':
                    //个人信息管理
                    modification(ss, UID, POSSWOED);
                    break;
                case '2':
                    //兼职申请
                    Student_put.Put_job(ss,UID, POSSWOED);
                    break;
                case '3':
                    //退出系统
                    System.out.print("确认是否退出(Y/N):");
                    char yn = TSUtility.readConfirmSelection();
                    if (yn == 'Y') {
                        ObjectOutputStream ops = new ObjectOutputStream(new FileOutputStream("D:\\IdeaProjects\\JavaSE_Code\\DisanGexiangmu//job.txt"));
                        ops.writeObject(Login01.jobArray);
                        ops.flush();
                        ops.close();
                        System.exit(0);
                    }
            }

        }
    }

    //个人信息管理
    public static void modification(User ss, int UID, String POSSWOED) throws IOException, ClassNotFoundException {
        while (true) {
            System.out.println();
            System.out.println("-----------------------");
            System.out.println("1. 个人信息修改");
            System.out.println("2. 查询信用等级、查询余额");
            System.out.println("3. 退出当前界面");
            System.out.println("-----------------------");
            char i = TSUtility.Studentsign();
            switch (i) {
                case '1':
                    //个人信息修改
                    message(UID, POSSWOED);
                    break;
                case '2':
                    //查询信息等级、查询余额
                    integer(UID, POSSWOED);
                    break;
                case '3':
                    //退出当前界面
                    System.out.print("确认是否退出(Y/N):");
                    char yn = TSUtility.readConfirmSelection();
                    if (yn == 'Y') {
                        return;
                    }
            }
        }
    }


    //查询信息等级、查询余额
    private static void integer(int UID, String POSSWOED) throws IOException, ClassNotFoundException {
        while (true) {
            System.out.println();
            System.out.println("1. 查询信用等级");
            System.out.println("2. 查询余额");
            System.out.println("3. 退出当前界面");
            char i = TSUtility.Studentsign();
            switch (i) {
                case '1':
                    //查询信息等级
                    query_credit(UID, POSSWOED);
                    break;
                case '2':
                    //查询余额
                    query_salary(UID, POSSWOED);
                    break;
                case '3':
                    //退出当前界面
                    System.out.print("确认是否退出(Y/N):");
                    char yn = TSUtility.readConfirmSelection();
                    if (yn == 'Y') {
                        return;
                    }
            }
        }
    }


    //查询余额
    private static void query_salary(int UID, String POSSWOED) throws IOException, ClassNotFoundException {
        //反序列化
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\IdeaProjects\\JavaSE_Code\\DisanGexiangmu\\Student.txt"));
        Object o = ois.readObject();

        //遍历集合
        ArrayList<User> array = (ArrayList<User>) o;
        ois.close();
        for (User user : array) {
            if (user.getUID() == UID && user.getPassword().equals(POSSWOED)) {
                System.out.println(user.getName() + "同学,你的余额为:" + user.getWork_end());
                return;
            }
        }
    }


    //查询信息等级
    private static void query_credit(int UID, String POSSWOED) throws IOException, ClassNotFoundException {
        //反序列化
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\IdeaProjects\\JavaSE_Code\\DisanGexiangmu\\Student.txt"));
        Object o = ois.readObject();

        //遍历集合
        ArrayList<User> array = (ArrayList<User>) o;
        ois.close();
        for (User user : array) {
            if (user.getUID() == UID && user.getPassword().equals(POSSWOED)) {
                System.out.println(user.getName() + "同学,你的信用等级为:" + user.getCredit_rating());
                return;
            }
        }
    }


    //个人信息修改
    private static void message(int UID, String POSSWOED) throws IOException, ClassNotFoundException {

        //反序列化
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\IdeaProjects\\JavaSE_Code\\DisanGexiangmu\\Student.txt"));
        Object o = ois.readObject();

        //遍历集合
        ArrayList<User> ss1 = (ArrayList<User>) o;
        for (User ss : ss1) {
            int uid = ss.getUID();
            String password1 = ss.getPassword();
            if (uid == UID && password1.equals(POSSWOED)) {
                System.out.println(ss.getName() + "同学,你的信息如下:");
                System.out.println("注:学号、注册时间及信用评级不可更改!");
                System.out.println("注册日期:" + ss.getRegdat());
                System.out.println("修改直接输入值,不修改直接回车:");
                System.out.println("1. 姓名:" + ss.getName());
                String name = CMUtility.readString(3, ss.getName());
                System.out.println("2. 密码:" + ss.getPassword());
                String password = CMUtility.readString(6, ss.getPassword());
                System.out.println("3. 年龄:" + ss.getAge());
                String s = CMUtility.readString(3, String.valueOf(ss.getAge()));
                int age = Integer.parseInt(s);
                System.out.println("4. 性别:" + ss.getSex());
                char sex = CMUtility.readChar(ss.getSex());
                System.out.println("5. 所在院系:" + ss.getDepartment());
                String department = CMUtility.readString(6, ss.getDepartment());
                System.out.println("6. 电话:" + ss.getPhone());
                String phone = CMUtility.readString(12, ss.getPhone());
                System.out.println("信息修改完成!");

                ss.setName(name);
                ss.setPassword(password);
                ss.setAge(age);
                ss.setSex(sex);
                ss.setDepartment(department);
                ss.setPhone(phone);
            }
        }
        ois.close();

        //添加到集合,序列化
        ObjectOutputStream ops = new ObjectOutputStream(new FileOutputStream("D:\\IdeaProjects\\JavaSE_Code\\DisanGexiangmu//Student.txt"));
        ops.writeObject(ss1);
        ops.flush();
        ops.close();
        return;

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值