实践项目三: 校园兼职平台(合作重构版)

项目说明

1
据了解,目前在校大学生80%以上有做兼职的需求,兼职打工已经不仅仅是经济困难的学生赚取生活费用的途径。调查显示,全球经济危机对就业产生冲击,用人单位对人员的社会实践能力要求提高,大学期间必要的社会实践既可以提高能力,又为适应社会,减轻家庭经济负担起到了积极的作用;社会中虚假兼职机构、欺骗性中介机构充斥,真伪难辨,学生受骗事件频发,极大的损害了学生的经济利益,甚至对学生的人生安全造成威胁。从校园踏入社会,兼职只是一段小小的插曲,通过兼职丰富阅历、增长社会经验固然是好事,可是毫无戒备的步入社会,不仅会事与愿违,还可能造成不必要的损所以。所以,我们需求设计一个校园兼职平台来方便在校学生找兼职。

2
本平台根据角色定位不同有不同的模块,首先系统有一个登录注册模块,属于兼职人员的模块有个人信息管理和兼职申请;属于管理员的模块有基本信息维护、兼职信息投放和系统管理。

3
平台登录注册:用户可以通过账号密码登录平台,如果用户是第一次使用该平台,则可以通过注册方式完成信息录入。平台根据用户输入的账号密码,判断该用户的角色是兼职人员还是管理员,展示不同的操作界面。如果用户忘记密码,可以通过自己的账号和注册时录入的真实姓名找回密码。

4
个人信息管理:能够对用户的基本信息进行管理,包括个人信息的修改,如学生转到别的专业,此时要修改学生的基本信息;修改密码,为了账户的安全性,可以修改用户的密码。查询信用等级,比如有一个用户一开始可以完成兼职等级最高的工作,但是在这次工作中,未能按时完成工作,于是管理员降低了该用户的信用等级,该用户就不能接高级的兼职工作了。查询余额,用户每次按时完成兼职能得到一笔费用,有逾期会扣除一部分佣金,最后得到总的余额。

5
兼职申请模块:用户能够查询所有的职位信息,因为信用等级的限制,用户也可以只查询自己能够申请的职位信息。查询到合适的职位用户可以直接申请,申请后到达工作截至时间前完成工作可以提前结束工作得到佣金,如果逾期后完成,管理员会调整用户的信用等级。用户可以查询自己已经完成过的兼职信息和自己正在完成的兼职信息。

6
基本信息维护模块:管理员能够根据用户完成兼职的情况动态的调整用户的兼职等级状态。管理员可以调整兼职的等级,供用户选择。管理员能够根据兼职的等级不同设置逾期费用扣除比例,比如最高级的兼职逾期一天扣10元,扣除兼职费用后继续扣除用户余额,直到用户余额为0,自动结束工作,结算费用。

7
兼职信息投放:管理员可以把所有公司的兼职招聘信息发布到网上,根据公司的需求设置岗位所需人员,工资以及兼职的时间段,比如发传单,这份兼职需要周一到周五的上午9点至11点工作,那么在这个时间段已经有了其他工作的用户就不能申请该工作。

8
系统管理模块:管理员能够删除管理员账户,也能删除平台用户以及一些完成过的兼职信息。管理员能够添加平台用户信息到系统,本平台是针对学生的软件,所以能够注册的只能是学生,所以平台需要提前将学生信息录入系统,用户才能注册账号,如果未能及时录入信息照成无法注册,那么就需要联系管理员进行信息录入。管理员可以添加其他的管理员账户,为了安全起见,管理员和普通用户一样能够修改密码。管理员还能够查询所有的用户信息、管理员账户信息、已经投放的职位信息、已经完成的兼职信息和已经逾期的兼职信息。

项目功能流程结构图

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

管理员添加的功能:
可以对兼职信息进行审批
可以有审批通过的信息才能展示给兼职人员查看
可以发布兼职人员进行增,删,改,查

大概流程
1.先由管理人员添加发布兼职人员的信息
2.再由发布兼职人员登录后去平台发布兼职信息
3.接着等管理人员审批同意兼职信息后,信息方能在兼职人员界面看到相关信息
4.最后兼职人员登录平台可以去选择自己想要兼职的信息,进行兼职

登录注册:

//首界面
package com.view;

import java.util.Scanner;

public class Index {
    public static void main(String[] args) {
        Enroll enroll = new Enroll();
        Scanner sc = new Scanner(System.in);
        Login login = new Login();
        ForgotPasswordView forgot = new ForgotPasswordView();
        boolean flag = true;
        while (flag) {
            System.out.println("==========校园兼职平台==========");
            System.out.println("1-注册     2-登录     3-忘记密码     4-退出");
            int options = sc.nextInt();
            switch (options) {
                //注册
                case 1:
                    enroll.register();
                    break;
                //登录
                case 2:
                    login.IndexLogin();
                    break;
                //找回密码
                case 3:
                    forgot.forgot();
                    break;
                case 4:
                    System.out.println("确定退出吗?(N/Y)");
                    String choice = sc.next();
                    if (choice.equals("Y")) {
                        flag = false;
                    }
                    break;
                default:
                    System.out.println("输入有误!请重新输入!");
                    break;
            }
        }
    }
}

//注册界面
package com.view;

import com.service.AdminService;
import com.service.ReleasePartTimeService;
import com.service.UserService;
import com.service.serviceimpl.AdminServicelmpl;
import com.service.serviceimpl.ReleasePartTimeServicelmpl;
import com.service.serviceimpl.UserServiceImpl;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Scanner;

/**
 * @author BaBa
 * @Version 1/0
 */
public class Enroll {
    private Scanner sc = new Scanner(System.in);
    private ReleasePartTimeService RP = new ReleasePartTimeServicelmpl();
    private UserService userService = new UserServiceImpl();
    private AdminService adminService = new AdminServicelmpl();
    //注册
    public void register() {
        boolean flag = true;
        while (flag) {
            System.out.println("==========");
            System.out.println("1.注册为用户");
            System.out.println("2.注册为管理员");
            System.out.println("3.注册为发布人员");
            System.out.println("4.退出");
            int options = sc.nextInt();
            switch (options) {
                //注册为用户
                case 1:
                    registerUser();
                    break;
                //注册为管理员
                case 2:
                    while (true) {
                        System.out.println("请输入管理员账号(3xxx):");
                        int AminNumber = sc.nextInt();
                        if (Integer.toString(AminNumber).startsWith("3")) {
                            System.out.println("请输入密码:");
                            String AminPassword = sc.next();
                            adminService.addAdmin(AminNumber,AminPassword);
                            break;
                        } else {
                            System.out.println("输入不合法(3xxx),请重新输入!");
                        }
                    }
                    break;
                case 3:
                    while (true) {
                        System.out.println("请输入发布人员账号(2xxx):");
                        int number  = sc.nextInt();
                        if (Integer.toString(number).startsWith("2")) {
                            System.out.println("请输入密码:");
                            String password = sc.next();
                            RP.register(number, password);
                            break;
                        } else {
                            System.out.println("输入不合法(2xxx),请重新输入!");
                        }
                    }
                    break;
                case 4:
                    System.out.println("退出中!");
                    flag = false;
                    break;
                default:
                    System.out.println("您输入的有误,请重新输入!!!");
            }
        }
    }

    public void registerUser() {
        List list = new ArrayList();
        while (true) {
            System.out.println("请输入用户账号(1xxx):");
            int UserNumber = sc.nextInt();
            if (Integer.toString(UserNumber).startsWith("1")) {
                list.add(UserNumber);
                break;
            } else {
                System.out.println("输入不合法(2xxx),请重新输入!");
            }
        }
        System.out.println("请输入密码:");
        String UserPassword = sc.next();
        list.add(UserPassword);
        System.out.println("请输入名字:");
        String UserName = sc.next();
        list.add(UserName);
        System.out.println("请输入年龄:");
        int age= sc.nextInt();
        list.add(age);
        System.out.println("请输入性别:");
        String sex= sc.next();
        list.add(sex);
        System.out.println("请输入电话号码(11位):");
        String phone = sc.next();
        list.add(phone);
        System.out.println("请输入所在院校:");
        String department = sc.next();
        list.add(department);
        Date date = new Date();
        list.add(new Date(date.getTime()));
        userService.add(list);
    }
}

//登录界面
package com.view;

import com.service.AdminService;
import com.service.ReleasePartTimeService;
import com.service.UserService;
import com.service.serviceimpl.AdminServicelmpl;
import com.service.serviceimpl.ReleasePartTimeServicelmpl;
import com.service.serviceimpl.UserServiceImpl;
import java.util.Scanner;

//登录界面
public class Login{
    private Scanner sc = new Scanner(System.in);
    private UserService userService = new UserServiceImpl();
    private ReleasePartTimeService rpts = new ReleasePartTimeServicelmpl();
    private AdminService adminService = new AdminServicelmpl();
    private UserView userView = new UserView();
    private ReleasePartTimeView releasePartTimeView = new ReleasePartTimeView();
    private AdminView  adminView = new AdminView();
    public void IndexLogin(){
        boolean flag= true;
        while (flag) {
            System.out.println("====登录界面====");
            System.out.println("1.用户");
            System.out.println("2.发布人员");
            System.out.println("3.管理员");
            System.out.println("4.退出");
            int options = sc.nextInt();
            switch (options){
                //用户
                case 1:
                        System.out.println("请输入您的编号:");
                        int usernumber = sc.nextInt();
                        if (Integer.toString(usernumber).startsWith("1")){
                            System.out.println("请输入您的密码:");
                            String password = sc.next();
                            boolean b = userService.loginUser(usernumber, password);
                            if (b){
                                System.out.println("登录成功!");
                                userView.UserView(usernumber);
                            }else {
                                System.out.println("您输入的账号或密码错误,请检查后登录!!!");
                            }
                        }else {
                            System.out.println("您的输入有误,请重新输入!!");
                        }
                    break;
                //发布人员
                case 2:
                        System.out.println("请输入您的编号:");
                        int releasenumber= sc.nextInt();
                        if (Integer.toString(releasenumber).startsWith("2")){
                            System.out.println("请输入您的密码:");
                            String releaseps = sc.next();
                            boolean boo = rpts.ReleasePartTimelogin(releasenumber, releaseps);
                            if (boo){
                                System.out.println("登录成功!");
                                releasePartTimeView.ReleasePartTimeView(releasenumber);
                            }else {
                                System.out.println("您输入的账号或密码错误,请检查后登录!!!");
                            }
                        }else {
                            System.out.println("您的输入有误,请重新输入!!");
                        }
                    break;
                //管理员
                case 3:
                        System.out.println("请输入您的编号:");
                        int adminnumber = sc.nextInt();
                        if (Integer.toString(adminnumber).startsWith("3")){
                            System.out.println("请输入您的密码:");
                            String adminps = sc.next();
                            boolean bool = adminService.loginAdmin(adminnumber,adminps);
                            if (bool){
                                System.out.println("登录成功!");
                                adminView.adminView(adminnumber);
                            }else {
                                System.out.println("您输入的账号或密码错误,请检查后登录!!!");
                            }
                        }else {
                            System.out.println("您的输入有误,请重新输入!!");
                        }
                    break;
                //退出
                case 4:
                    flag=false;
                    break;
                default:
                    System.out.println("您输入的有误,请重新输入!!!");
                    break;
            }
        }
    }
}

其他的已近没有什么写的必要,学好数据库,这个项目就没什么了!!!

你可能感兴趣的:(重构,数据库,java)