Javaプロジェクト:大学生のインターンシップ管理システム(java + SpringBoot + Thymeleaf + html + JQuery + bootstrap)

ソースコードを入手する:ブログのホームページの「リソース」からダウンロードしてください。

プロジェクト紹介

このシステムのユーザーは、管理者、教師、学生の3つのタイプに分けることができます。3つの役割がログインした後、さまざまなメニューインターフェイスが表示されます。

管理者の主な機能:

情報管理
学生情報管理、教師情報管理、生産実践情報管理、実践後情報管理;
生産実践生産
実践アプリケーション、私の生産実践、私の成績、私のアプリケーション結果、私のアプリケーションインターンシップ管理生産インターンシップ管理生産インターンシッププロセス管理生産インターンシップスコア統計ポストインターンシップレビューポストインターンシッププロセス管理ポストポストインターンシップスコア統計共有システム管理ユーザー管理メニュー管理役割情報管理













教師の主な機能:

情報管理
学生情報管理;
インターンシップ管理
プロダクションインターンシップレビュー
プロダクションインターンシッププロセス管理
プロダクションインターンシップスコア統計
ポストインターンシップレビュー
ポストインターンシッププロセス管理
ポストインターンシップスコア統計
共有
情報レビュー;
私の共有、ディスカッションエリア;

学生の主な機能:

プロダクションインターンシップ:
プロダクションインターンシップアプリケーション;
マイプロダクションインターンシップ;
マイグレード;
マイアプリケーション;
ポストプラクティス:
ポストインターンシップアプリケーション;
マイポストインターンシップ;
マイグレード;
マイアプリケーション;
シェア:
マイシェア;
ディスカッションフォーラム;

環境ニーズ

1.動作環境:できればjava jdk 1.8、このプラットフォームで実行しています。他のバージョンも理論的には可能です。
2. IDE環境:IDEA、Eclipse、Myeclipseを使用できます。IDEAをお勧めします;
3。Tomcat環境:Tomcat 7.x、8.x、9.xバージョンが利用可能です
4.ハードウェア環境:1G以上のメモリを搭載したWindows7/8/10;またはMacOS;
5. Mavenプロジェクト:はい;pom.xmlがソースコードディレクトリに含まれているかどうかを確認します。含まれている場合はmavenプロジェクトであり、含まれていない場合は非mavenプロジェクトです。

6.データベース:MySqlバージョン5.7;

テクノロジースタック

1.コアフレームワーク:SpringBoot。
2.セキュリティフレームワーク:ApacheShiro。
3.テンプレートエンジン:Thymeleaf。
4.永続層フレームワーク:MyBatis。
5.スケジュールされたタスク:Quartz。
6.データベース接続プール:Druid。
7.ツールクラス:Fastjson。
8.フロントエンド:Thymeleaf + html + JQuery + bootstrap

使用説明書

1. Navicatまたは他のツールを使用して、mysqlに対応する名前のデータベースを作成し
、プロジェクトのsqlファイルをインポートします。2。ruoyi-admin / src / main / resources/application-druid.yml構成でデータベースを構成します。プロジェクト内のファイル独自の構成に変更します
。3。IDEA/Eclipse /MyEclipseを使用してプロジェクトをインポートします。Eclipse/MyEclipseからインポートする場合、mavenプロジェクトの場合は、mavenを選択してください。mavenプロジェクトの場合は、インポートが成功しました。mavenclean;maveninstallコマンドを実行してtomcatを構成してから、実行してください
。4.プロジェクトを実行し、localhost:8092と入力してログインします。

 

 

 

 

 

 

 

管理者情報フロントコントローラー:

/**
 * <p>
 * 管理员信息 前端控制器
 * </p>
 *
 * @author yy
 */
@RestController
@RequestMapping("/stu-user")
public class StuUserController {

    @Autowired
    private Producer producer;

    @Autowired
    private IStuUserService iStuUserService;


    @Autowired
    private AuthenticationManager authenticationManager;


    private final Logger log = Logger.getLogger(StuUserController.class);

    @GetMapping("/user-list")
    public HttpResponse getUserList(NormalQueryInfo normalQueryInfo){
        return HttpResponse.success(iStuUserService.getUserList(normalQueryInfo));
    }

    @PostMapping("/edit")
    public HttpResponse editUser(@RequestBody StuUser stuUser){
        return HttpResponse.success(iStuUserService.editUser(stuUser));
    }

    @DeleteMapping("/del")
    public HttpResponse delUser(@RequestBody StuUser stuUser){
        return HttpResponse.success(iStuUserService.deleteUser(stuUser));
    }
    /**
     * 验证码
     */
    @GetMapping("/captcha.jpg")
    public void captcha(HttpServletResponse response, HttpServletRequest request) throws IOException {
        response.setHeader("Cache-Control", "no-store, no-cache");
        response.setContentType("image/jpeg");

        // 生成文字验证码
        String text = producer.createText();
        // 生成图片验证码
        BufferedImage image = producer.createImage(text);
        // 保存到验证码到 session
        request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, text);

        ServletOutputStream out = response.getOutputStream();
        ImageIO.write(image, "jpg", out);
        IOUtils.closeQuietly(out);
    }

    /**
     * 登录接口
     */
    @PostMapping(value = "/login")
    public HttpResponse login(@RequestBody LoginRequest loginRequest, HttpServletRequest request) throws IOException {
        String username = loginRequest.getAccount();
        String password = loginRequest.getPassword();
//        String captcha = loginBean.getCaptcha();
        // 从session中获取之前保存的验证码跟前台传来的验证码进行匹配
//        Object kaptcha = request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
//        if(kaptcha == null){
//            return HttpResult.error("验证码已失效");
//        }
//        if(!captcha.equals(kaptcha)){
//            return HttpResult.error("验证码不正确");
//        }
//        // 用户信息
//        System.out.println(username+"|"+password+"|"+captcha+" ");
        StuUser user = iStuUserService.findByName(username);
        // 账号不存在、密码错误
        if (user == null) {
            return HttpResponse.error("账号不存在");
        }
        if (!PasswordUtils.matches(user.getSalt(), password, user.getPassword())) {
            return HttpResponse.error("密码不正确");
        }
        JwtAuthenticatioToken token = SecurityUtils.login(request, username, password, authenticationManager);
        log.info("user:"+token.getName()+"login Success! [In "+token.getDetails().toString()+"]");
        return HttpResponse.success(new LoginResponse(token.getName(),token.getToken(),"OK!"));
    }

    @PostMapping(value="/save")
    public HttpResponse addUser(@RequestBody StuUser stuUser) {
        return HttpResponse.success(iStuUserService.addUser(stuUser));
    }



    @GetMapping(value="/findByName")
    public HttpResponse findByUserName(@RequestParam String name) {
        return HttpResponse.success(iStuUserService.findByName(name));
    }
}

教師の個人情報フロントコントローラー:

/**
 * <p>
 * 教师个人详细信息 前端控制器
 * </p>
 *
 * @author yy
 */
@RestController
@RequestMapping("/stu-teacher-info")
public class StuTeacherInfoController {

    @Autowired
    private IStuTeacherInfoService iStuTeacherInfoService;

    @GetMapping("/get")
    public HttpResponse getTeacherInfosList(NormalQueryInfo normalQueryInfo){
        return HttpResponse.success(iStuTeacherInfoService.getTeacherInfosList(normalQueryInfo));
    }

    @PostMapping("/add")
    public HttpResponse addTeacherInfosList(@RequestBody StuTeacherInfo stuTeacherInfo){
        String res = iStuTeacherInfoService.addTeacherInfosList(stuTeacherInfo);
        return res == null ? HttpResponse.success() : HttpResponse.error(res) ;
    }

    @PostMapping("/edit")
    public HttpResponse editTeacherInfosList(@RequestBody StuTeacherInfo stuTeacherInfo){
        return HttpResponse.success(iStuTeacherInfoService.editTeacherInfosList(stuTeacherInfo));
    }

    @DeleteMapping("/del")
    public HttpResponse delTeacherInfosList(@RequestBody StuTeacherInfo stuTeacherInfo){
        return HttpResponse.success(iStuTeacherInfoService.delTeacherInfosList(stuTeacherInfo));
    }

    @GetMapping("/remove-course-teacher")
    public HttpResponse delCourse(@RequestParam("teacherId") Integer teacherId){
        return HttpResponse.success(iStuTeacherInfoService.setCourseTeacherById(teacherId,-1));
    }

    @GetMapping("/get-no-course")
    public HttpResponse getAllTeacherInfosListNoCourse(){
        return HttpResponse.success(iStuTeacherInfoService.getAllTeacherInfosListNoCourse());
    }

    @GetMapping("/set-course")
    public HttpResponse setCourseTeacher(@RequestParam(value = "teacherId") Integer teacherId,
                                         @RequestParam(value = "courseId") Integer courseId){
        return HttpResponse.success(iStuTeacherInfoService.setCourseTeacherById(teacherId,courseId));
    }

}

学生情報フロントコントローラー:

/**
 * <p>
 * 学生信息 前端控制器
 * </p>
 *
 * @author yy
 */
@RestController
@RequestMapping("/stu-info")
public class StuInfoController {


    @Autowired
    private IStuInfoService iStuInfoService;

    /**
     * 分页查询全部信息
     * */
    @GetMapping("/get")
    public HttpResponse getPageStudentInfo(QueryStuInfoListRequest queryStuInfoListRequest){
        return HttpResponse.success(iStuInfoService.getPageStudentInfo(
                queryStuInfoListRequest.getPageNum(), queryStuInfoListRequest.getPageSize()
        ));
    }

    /**
     * 对基本信息进行高级查询
     * */
    @GetMapping("/get-test")
    public HttpResponse getPageStudentInfoByCondition(QueryStuInfoListRequest queryStuInfoListRequest){
        iStuInfoService.getStudentInfoByCondition(queryStuInfoListRequest);
        QueryListResponse<StuInfo> queryStuInfoListResponse = iStuInfoService.getStudentInfoByCondition(queryStuInfoListRequest);
        //如果stuInfoListResponse.getNumOfTotalRecord() < 0 ,则表明输入类型和预期不符且发生异常,则返回错误
        return queryStuInfoListResponse.getNumOfTotalRecord() < 0 ?
                HttpResponse.error("输入信息类型错误!") : HttpResponse.success(queryStuInfoListResponse);
    }

    /**
     * 添加学生信息
     * */
    @PostMapping("/add")
    public HttpResponse addStudentInfo(@RequestBody StuInfo stuInfo){
        String res = iStuInfoService.addStudentInfo(stuInfo);
        //返回信息的长度大于0,则表示有错误或有提示信息
        return res.length() > 0 ? HttpResponse.error(res) : HttpResponse.success("成功插入一条记录") ;
    }

    /**
     * 编辑学生性别或手机号信息
     * */
    @PostMapping("/edit")
    public HttpResponse editStudentSexOrPhoneInfo(@RequestBody StuInfo stuInfo){
        return HttpResponse.success(iStuInfoService.editStudentInfo(stuInfo));
    }

    /**
     * 根据学号删除学生信息
     * */
    @DeleteMapping("/delete")
    public HttpResponse deleteStudentInfoByNumber(@RequestBody StuInfo stuInfo){
        return HttpResponse.success(iStuInfoService.deleteStudentInfo(stuInfo));
    }

    /**
     * 修改学生违纪状态
     * */
    @PostMapping("/change")
    public HttpResponse changeStudentStatus(@RequestBody StuInfo stuInfo){
        return HttpResponse.success(iStuInfoService.changeStudentStatus(stuInfo));
    }
}

 

ソースコードを入手する:ブログのホームページの「リソース」からダウンロードしてください。

おすすめ

転載: blog.csdn.net/yuyecsdn/article/details/124099939