Java實(shí)現(xiàn)登錄和注冊案例
本文實(shí)例為大家分享了Java實(shí)現(xiàn)登錄和注冊的具體代碼,供大家參考,具體內(nèi)容如下
登錄和注冊案例的分析:
我們在完成一個(gè)需求時(shí),需要面向?qū)ο?,我們必須找到能完成某個(gè)功能的類,接著調(diào)用里面的方法來完成它。而這些類我們要進(jìn)行分包,在不同包下實(shí)現(xiàn),Java中的分包:
com.edu.domain — 標(biāo)準(zhǔn)的Java描述類
com.edu.dao — 存放的是接口
com.edu.daoimpl — 存放的是接口的實(shí)現(xiàn)類
com.edu.util — 對對象進(jìn)行操作的工具類
com.edu.test — 測試類
登錄和注冊案例用到的類:
用戶類:
成員變量:用戶名,密碼
成員方法:登錄,注冊功能
測試類:
main
登錄和注冊案例中用到的類的詳細(xì)分解:
(1)用戶類(User):用戶名,密碼,郵箱,電話號碼等等各種注冊時(shí)會用到的東西。我們在實(shí)現(xiàn)這個(gè)登錄和注冊案例的時(shí)候只需要用戶名和密碼就夠了。這是一個(gè)標(biāo)準(zhǔn)Java描述類。
package com.edu.domain; public class User { ? ? private String userName; ? ? private String passWord; ? ? public String getUserName() { ? ? ? ? return userName; ? ? } ? ? public void setUserName(String userName) { ? ? ? ? this.userName = userName; ? ? } ? ? public String getPassWord() { ? ? ? ? return passWord; ? ? } ? ? public void setPassWord(String passWord) { ? ? ? ? this.passWord = passWord; ? ? } ? ? public User(String userName, String passWord) { ? ? ? ? super(); ? ? ? ? this.userName = userName; ? ? ? ? this.passWord = passWord; ? ? } ? ? public User() { ? ? ? ? super(); ? ? ? ? // TODO Auto-generated constructor stub ? ? } }
(2)我們需要定義一個(gè)接口(UserDao)來定義注冊和登錄功能。接口就是對類的功能的一種擴(kuò)展,它的本質(zhì)是用來定義規(guī)則的。
package com.edu.dao; import com.edu.domain.User; public interface UserDao { ? ? //這個(gè)接口保證兩個(gè)功能 ? ? ? ? //注冊 ? ? ? ? public abstract void regist(User user); ? ? ? ? //登錄 ? ? ? ? public abstract boolean isLogin(String userName,String passWord); }
(3)用戶操作類(UserDaoImpl),也就是之前定義的接口UserDao的實(shí)現(xiàn)類。
package com.edu.dao.impl; import java.util.ArrayList; import com.edu.dao.UserDao; import com.edu.domain.User; public class UserDaoImpl implements UserDao{ ? ? //創(chuàng)建一個(gè)集合,定義為公有的 ? ? static ArrayList<User> users=new ArrayList<User>(); ? ? //注冊方法:把用戶信息存放到集合中 ? ? @Override ? ? public void regist(User user) { ? ? ? ? // TODO Auto-generated method stub ? ? ? ? users.add(user); ? ? } ? ? //登錄功能:校驗(yàn)用戶名和密碼是否正確,正確返回true,否則返回false ? ? @Override ? ? public boolean isLogin(String userName, String passWord) { ? ? ? ? // TODO Auto-generated method stub ? ? ? ? boolean flag = false; ? ? ? ? for (User user : users) { ? ? ? ? ? ? if(userName.equals(user.getUserName())&&passWord.equals(user.getPassWord())){ ? ? ? ? ? ? ? ? flag = true; ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? return flag; ? ? } }
(4)在用戶完成注冊登錄后,我們可以實(shí)現(xiàn)某種功能了,例如:猜數(shù)字小游戲。再建一個(gè)游戲類(GuessNumber)。
package com.edu.game; import java.util.Scanner; public class GuessNumber { ? ? public static void playGame() { ? ? ? ? //獲取一個(gè)一到一百之間的隨機(jī)數(shù) ? ? ? ? int random = (int) (Math.random()*100+1); ? ? ? ? //創(chuàng)建鍵盤錄入對象,獲取鍵盤錄入數(shù)據(jù) ? ? ? ? Scanner sc = new Scanner(System.in); ? ? ? ? System.out.println("請輸入所猜測的數(shù)字:"); ? ? ? ? int number = sc.nextInt(); ? ? ? ? //創(chuàng)建while死循環(huán) ? ? ? ? while (true) { ? ? ? ? ? ? if (number>random) { ? ? ? ? ? ? ? ? System.out.println("大了,請重新輸入:"); ? ? ? ? ? ? ? ? number = sc.nextInt(); ? ? ? ? ? ? } ? ? ? ? ? ? if (number<random) { ? ? ? ? ? ? ? ? System.out.println("小了,請重新輸入:"); ? ? ? ? ? ? ? ? number=sc.nextInt(); ? ? ? ? ? ? } ? ? ? ? ? ? if (number==random) { ? ? ? ? ? ? ? ? System.out.println("恭喜你答對了!"); ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? } ? ? ? ? } ? ? } }
(5)測試類(Test)。
package com.edu.test; import java.util.Scanner; import com.edu.dao.impl.UserDaoImpl; import com.edu.domain.User; import com.edu.game.GuessNumber; public class Test { ? ? public static void main(String[] args) { ? ? ? ? while(true){ ? ? ? ? //首先給出提示 ? ? ? ? System.out.println("歡迎進(jìn)入注冊登錄界面:"); ? ? ? ? System.out.println("1.注冊"); ? ? ? ? System.out.println("2.登錄"); ? ? ? ? System.out.println("3.退出"); ? ? ? ? //創(chuàng)建一個(gè)用戶操作類 ? ? ? ? UserDaoImpl udi = new UserDaoImpl(); ? ? ? ? //創(chuàng)建鍵盤錄入對象,并獲取鍵盤錄入數(shù)據(jù) ? ? ? ? Scanner sc = new Scanner(System.in); ? ? ? ? String choice = sc.nextLine(); ? ? ? ? //利用switch循環(huán)來判斷 ? ? ? ? switch (choice) { ? ? ? ? case "1": ? ? ? ? ? ? System.out.println("歡迎來到注冊界面!"); ? ? ? ? ? ? System.out.println("請輸入用戶名:"); ? ? ? ? ? ? String userName = sc.nextLine(); ? ? ? ? ? ? System.out.println("請輸入密碼:"); ? ? ? ? ? ? String passWord = sc.nextLine(); ? ? ? ? ? ? //把用戶名和密碼封裝成一個(gè)用戶類對象 ? ? ? ? ? ? User user = new User(userName,passWord); ? ? ? ? ? ? //通過用戶操作類對象調(diào)用注冊方法 ? ? ? ? ? ? udi.regist(user); ? ? ? ? ? ? System.out.println("注冊成功!"); ? ? ? ? ? ? break; ? ? ? ? case "2": ? ? ? ? ? ? System.out.println("歡迎來到登錄界面!"); ? ? ? ? ? ? System.out.println("請輸入用戶名:"); ? ? ? ? ? ? String inputUserName = sc.nextLine(); ? ? ? ? ? ? System.out.println("請輸入密碼:"); ? ? ? ? ? ? String inputPassWord = sc.nextLine(); ? ? ? ? ? ? //通過用戶操作類對象調(diào)用登錄方法 ? ? ? ? ? ? boolean flag = udi.isLogin(inputUserName,inputPassWord); ? ? ? ? ? ? if (flag) { ? ? ? ? ? ? ? ? System.out.println("登錄成功,玩游戲吧!"); ? ? ? ? ? ? ? ? GuessNumber.playGame(); ? ? ? ? ? ? }else{ ? ? ? ? ? ? ? ? System.out.println("登錄失敗!"); ? ? ? ? ? ? } ?? ? ? ? ? ? ? break; ? ? ? ? case "3": ? ? ? ? default: ? ? ? ? ? ? //對于3或者其他數(shù)字的選擇,都直接退出系統(tǒng) ? ? ? ? ? ? System.exit(0); ? ? ? ? ? ? break; ? ? ? ? } ? ? } ? ? } }
運(yùn)行結(jié)果:
注冊和登錄的運(yùn)行結(jié)果:
猜數(shù)字游戲結(jié)束后退出系統(tǒng):
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java+mysql實(shí)現(xiàn)登錄和注冊功能
- Java使用IO模擬注冊登錄
- Java基于IO流實(shí)現(xiàn)登錄和注冊功能
- Java實(shí)現(xiàn)登錄與注冊頁面
- javaweb實(shí)現(xiàn)注冊登錄頁面
- JavaWeb實(shí)現(xiàn)用戶登錄注冊功能實(shí)例代碼(基于Servlet+JSP+JavaBean模式)
- Java+mysql用戶注冊登錄功能
- JAVA簡單實(shí)現(xiàn)MD5注冊登錄加密實(shí)例代碼
- Servlet+JavaBean+JSP打造Java Web注冊與登錄功能
- java實(shí)現(xiàn)注冊登錄系統(tǒng)
相關(guān)文章
SpringBoot使用@PathVariable進(jìn)行數(shù)據(jù)校驗(yàn)的流程步驟
在SpringBoot項(xiàng)目中,我們經(jīng)常需要從 URL 中獲取參數(shù)并進(jìn)行相關(guān)的數(shù)據(jù)校驗(yàn),而@PathVariable注解就是一種非常方便的方式,可以讓我們在方法參數(shù)中直接獲取URL中的參數(shù),并進(jìn)行數(shù)據(jù)校驗(yàn),本文將介紹如何使用@PathVariable注解進(jìn)行數(shù)據(jù)校驗(yàn)2023-06-06SpringBoot集成內(nèi)存數(shù)據(jù)庫Derby的實(shí)踐
像H2、hsqldb、derby、sqlite這樣的內(nèi)存數(shù)據(jù)庫,小巧可愛,做小型服務(wù)端演示程序,非常好用。最大特點(diǎn)就是不需要你另外安裝一個(gè)數(shù)據(jù)庫。本文主要介紹了SpringBoot集成內(nèi)存數(shù)據(jù)庫Derby,感興趣的可以了解一下2021-09-09java打包成jar并執(zhí)行jar包中指定的main方法
這篇文章主要介紹了如何將java打包成可執(zhí)行的jar,并執(zhí)行jar包中指定的main方法的相關(guān)資料,文中給出了詳細(xì)的示例代碼,對大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。2017-03-03一文搞懂SpringBoot如何利用@Async實(shí)現(xiàn)異步調(diào)用
異步調(diào)用幾乎是處理高并發(fā),解決性能問題常用的手段,如何開啟異步調(diào)用?SpringBoot中提供了非常簡單的方式,就是一個(gè)注解@Async。今天我們重新認(rèn)識一下@Async,以及注意事項(xiàng)2022-09-09解決java.util.NoSuchElementException異常正確方法
java.util.NoSuchElementException是Java中的一種異常,表示在迭代器或枚舉中找不到元素,這篇文章主要給大家介紹了關(guān)于解決java.util.NoSuchElementException異常的相關(guān)資料,需要的朋友可以參考下2023-11-11SpringBoot?整合ChatGPT?API項(xiàng)目實(shí)戰(zhàn)教程
這篇文章主要介紹了SpringBoot整合ChatGPT API項(xiàng)目實(shí)戰(zhàn)教程,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05springboot實(shí)現(xiàn)學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了springboot實(shí)現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07