Java畢業(yè)設(shè)計實(shí)戰(zhàn)之校園一卡通系統(tǒng)的實(shí)現(xiàn)
一、項目簡述(+需求文檔+PPT)
功能:卡管理,卡消費(fèi),卡充值,圖書借閱,消費(fèi),記錄,注銷等等功能。
二、項目運(yùn)行
環(huán)境配置:
Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)
項目技術(shù):
JSP + Servlet + html+ css + JavaScript + JQuery + Ajax 等等
用戶管理操作控制層:
/** * 用戶管理操作 */ @Controller @RequestMapping("/user") public class UserController { @Autowired private UserService userService; /** * 用戶添加頁面 * @return */ @GetMapping("/add") public String create() { return "user/add"; } /** * 用戶添加操作 * @param user * @return */ @PostMapping("/add") @ResponseBody public Map<String, Object> add(@RequestBody User user) { if(StringUtils.isEmpty(user.getUserName())){ return MapControl.getInstance().error("請?zhí)顚懹脩裘?).getMap(); } if(StringUtils.isEmpty(user.getName())){ return MapControl.getInstance().error("請?zhí)顚懨Q").getMap(); } if(StringUtils.isEmpty(user.getUserPwd())){ return MapControl.getInstance().error("請?zhí)顚懨艽a").getMap(); } int result = userService.create(user); if (result <= 0) { return MapControl.getInstance().error().getMap(); } return MapControl.getInstance().success().getMap(); } /** * 根據(jù)id刪除 * @param id * @return */ @PostMapping("/delete/{id}") @ResponseBody public Map<String, Object> delete(@PathVariable("id") Integer id) { int result = userService.delete(id); if (result <= 0) { return MapControl.getInstance().error().getMap(); } return MapControl.getInstance().success().getMap(); } //批量刪除 @PostMapping("/delete") @ResponseBody public Map<String, Object> delete(String ids) { int result = userService.delete(ids); if (result <= 0) { return MapControl.getInstance().error().getMap(); } return MapControl.getInstance().success().getMap(); } /** * 編輯用戶信息操作 * @param user * @return */ @PostMapping("/edit") @ResponseBody public Map<String, Object> edit(@RequestBody User user) { if(StringUtils.isEmpty(user.getUserName())){ return MapControl.getInstance().error("請?zhí)顚懹脩裘?).getMap(); } if(StringUtils.isEmpty(user.getName())){ return MapControl.getInstance().error("請?zhí)顚懨Q").getMap(); } if(StringUtils.isEmpty(user.getUserPwd())){ return MapControl.getInstance().error("請?zhí)顚懨艽a").getMap(); } int result = userService.update(user); if (result <= 0) { return MapControl.getInstance().error().getMap(); } return MapControl.getInstance().success().getMap(); } /** * 根據(jù)id查詢,跳轉(zhuǎn)修改頁面 * @param id * @param modelMap * @return */ @GetMapping("/edit/{id}") public String edit(@PathVariable("id") Integer id, ModelMap modelMap) { User user = userService.detail(id); modelMap.addAttribute("user", user); return "user/edit"; } //查詢所有 @PostMapping("/query") @ResponseBody public Map<String, Object> query(@RequestBody User user) { List<User> list = userService.query(user); Integer count = userService.count(user); return MapControl.getInstance().success().page(list, count).getMap(); } //跳轉(zhuǎn)列表頁面 @GetMapping("/list") public String list() { return "user/list"; } }
登錄控制層:
@Controller public class LoginController { @Autowired private UserService userService; @Autowired private TeacherService teacherService; @Autowired private StudentService studentService; //跳轉(zhuǎn)登錄頁面 @GetMapping("/login") public String login() { return "login"; } //登錄操作 @PostMapping("/login") @ResponseBody public Map<String, Object> login(String userName, String password, String captcha, String type, HttpSession session) { //判斷用戶名、密碼、用戶類型、驗證碼是否為空 if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(password) || StringUtils.isEmpty(captcha) || StringUtils.isEmpty(type)) { return MapControl.getInstance().error("用戶名或密碼不能為空").getMap(); } //獲取系統(tǒng)生成的驗證碼 String _captcha = (String) session.getAttribute("captcha"); //先判斷驗證碼是否正確 if (!(captcha.toLowerCase()).equals(_captcha.toLowerCase())) { //驗證碼錯誤 return MapControl.getInstance().error("驗證碼錯誤").getMap(); } //判斷用戶類型 if ("1".equals(type)) { //管理員驗證登錄 User user = userService.login(userName, MD5Utils.getMD5(password)); //對密碼進(jìn)行加密處理,因為數(shù)據(jù)庫中存儲的是加密后的密碼 if (user != null) { session.setAttribute("user", user); session.setAttribute("type", 1); return MapControl.getInstance().success().add("data", user).getMap(); } else { return MapControl.getInstance().error("用戶名或密碼錯誤").getMap(); } } if ("2".equals(type)) { //老師驗證登錄 Teacher teacher = teacherService.login(userName, MD5Utils.getMD5(password)); if (teacher != null) { session.setAttribute("user", teacher); session.setAttribute("type", "2"); return MapControl.getInstance().success().add("data", teacher).getMap(); } else { return MapControl.getInstance().error("用戶名或密碼錯誤").getMap(); } } if ("3".equals(type)) { //學(xué)生驗證登錄 Student student = studentService.login(userName, MD5Utils.getMD5(password)); if (student != null) { session.setAttribute("user", student); session.setAttribute("type", "3"); return MapControl.getInstance().success().add("data", student).getMap(); } else { return MapControl.getInstance().error("用戶名或密碼錯誤").getMap(); } } return MapControl.getInstance().getMap(); } }
生成驗證碼:
@Controller @RequestMapping("/captcha") public class CaptchaController { private char[] codeSequence = {'A', '1', 'B', 'C', '2', 'D', '3', 'E', '4', 'F', '5', 'G', '6', 'H', '7', 'I', '8', 'J', 'K', '9', 'L', '1', 'M', '2', 'N', 'P', '3', 'Q', '4', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; @RequestMapping("/code") public void getCode(HttpServletResponse response, HttpSession session) throws IOException { int width = 80; int height = 37; Random random = new Random(); //設(shè)置response頭信息 //禁止緩存 response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); //生成緩沖區(qū)image類 BufferedImage image = new BufferedImage(width, height, 1); //產(chǎn)生image類的Graphics用于繪制操作 Graphics g = image.getGraphics(); //Graphics類的樣式 g.setColor(this.getColor(200, 250)); g.setFont(new Font("Times New Roman", 0, 28)); g.fillRect(0, 0, width, height); //繪制干擾線 for (int i = 0; i < 40; i++) { g.setColor(this.getColor(130, 200)); int x = random.nextInt(width); int y = random.nextInt(height); int x1 = random.nextInt(12); int y1 = random.nextInt(12); g.drawLine(x, y, x + x1, y + y1); } //繪制字符 String strCode = ""; for (int i = 0; i < 4; i++) { String rand = String.valueOf(codeSequence[random.nextInt(codeSequence.length)]); strCode = strCode + rand; g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110))); g.drawString(rand, 13 * i + 6, 28); } //將字符保存到session中用于前端的驗證 session.setAttribute("captcha", strCode.toLowerCase()); g.dispose(); ImageIO.write(image, "JPEG", response.getOutputStream()); response.getOutputStream().flush(); } public Color getColor(int fc, int bc) { Random random = new Random(); if (fc > 255) fc = 255; if (bc > 255) bc = 255; int r = fc + random.nextInt(bc - fc); int g = fc + random.nextInt(bc - fc); int b = fc + random.nextInt(bc - fc); return new Color(r, g, b); } }
到此這篇關(guān)于Java畢業(yè)設(shè)計實(shí)戰(zhàn)之校園一卡通系統(tǒng)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Java 校園一卡通系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java實(shí)戰(zhàn)項目之校園跑腿管理系統(tǒng)的實(shí)現(xiàn)
- Java?實(shí)戰(zhàn)范例之校園二手市場系統(tǒng)的實(shí)現(xiàn)
- Java 實(shí)戰(zhàn)練手項目之校園超市管理系統(tǒng)的實(shí)現(xiàn)流程
- Java 實(shí)戰(zhàn)項目錘煉之校園宿舍管理系統(tǒng)的實(shí)現(xiàn)流程
- Java實(shí)現(xiàn)的具有GUI的校園導(dǎo)航系統(tǒng)的完整代碼
- JavaWeb開發(fā)基于ssm的校園服務(wù)系統(tǒng)(實(shí)例詳解)
- Java模擬HTTP Get Post請求 輕松實(shí)現(xiàn)校園BBS自動回帖
- Java基于Dijkstra算法實(shí)現(xiàn)校園導(dǎo)游程序
相關(guān)文章
Java String轉(zhuǎn)換時為null的解決方法
這篇文章主要介紹了Java String轉(zhuǎn)換時為null的解決方法,需要的朋友可以參考下2017-07-07springboot集成PageHelper分頁失效的原因及解決
項目啟動初期,在集成mybatis的分頁插件,自定義封裝了一個分頁的工具類,方便后期項目的擴(kuò)展,結(jié)果無法分頁了,怎么設(shè)置搞都沒辦法正常分頁,所以本文將給大家介紹一下springboot集成PageHelper分頁失效的原因及解決,需要的朋友可以參考下2023-10-10java中String、StringBuffer與StringBuilder的區(qū)別
這篇文章主要介紹了java 中String和StringBuffer與StringBuilder的區(qū)別,在開發(fā)過程中經(jīng)常會用到String這個類進(jìn)行操作。需要的朋友可以收藏下,方便下次瀏覽觀看2021-12-12SpringBoot接口返回結(jié)果封裝方法實(shí)例詳解
在實(shí)際項目中,一般會把結(jié)果放在一個封裝類中,封裝類中包含http狀態(tài)值,狀態(tài)消息,以及實(shí)際的數(shù)據(jù)。這里主要記錄兩種方式,通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-09-09PostMan如何傳參給@RequestBody(接受前端參數(shù))
這篇文章主要介紹了PostMan如何傳參給@RequestBody(接受前端參數(shù)),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10在CentOS系統(tǒng)上安裝Java?JDK?8簡單步驟
最近購買一臺新的云服務(wù)器,用于開發(fā)學(xué)習(xí)使用,因此需要安裝很多的組件,下面這篇文章主要給大家介紹了關(guān)于在CentOS系統(tǒng)上安裝Java?JDK8的簡單步驟,需要的朋友可以參考下2023-12-12Java獲取HttpServletRequest的三種方法詳解
這篇文章主要介紹了Java獲取HttpServletRequest的三種方法詳解,是一個接口,全限定名稱為Jakarta.Serclet.http.HttpServletRequest2023-11-11
HttpServletRequest接口是Servlet規(guī)范的一員,需要的朋友可以參考下