java项目(注册和登录(成功后查看商品的信息))
文章目錄
- 聲明
- 第一步:
- 第二步:
- 第三步:
- 第四步:
- 第五步
- 第六步:
- 第七步:
聲明
題目:實現登錄和注冊功能
登錄成功后可以查看所有商品的信息(商品名稱,價格,銷量)
第一步:
package myproject;public class goods {private String name;private int price;private int consume;public goods(String name, int price, int consume) {this.name = name;this.price = price;this.consume = consume;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}public int getConsume() {return consume;}public void setConsume(int consume) {this.consume = consume;} }創建一個goods類,然后把商品屬性(名字,價格以及銷量)然后把構造函數寫上,以及各自屬性的setter和getter函數,緊接著寫下一個的goodsDao類
第二步:
package myproject;public class goodsDao {private database database1;public goodsDao(database database1) {this.database1 = database1;}public goods findbyname(String goods){goods goods3=null;for(goods goods1:database1.getLists()){if(goods1.getName().equals(goods)){goods3=goods1;break;}}return goods3;} }這個類我感覺是用來操作數據庫里面的goods 的list ,以至于想要增刪改查時,不需要直接去動數據庫,直接來操作goodDao類即可
第三步:
package myproject;public class Account {private int accountID;private String accountName;private String password;public Account(int accountID, String accountName, String password) {this.accountID = accountID;this.accountName = accountName;this.password = password;}public int getAccountID() {return accountID;}public void setAccountID(int accountID) {this.accountID = accountID;}public String getAccountName() {return accountName;}public void setAccountName(String accountName) {this.accountName = accountName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;} }這個的話,也就是跟goods那個性質一樣的,也是屬于數據庫里面的一樣東西。一個是物品,一個賬戶,這個類呢,也就是用來搞賬戶屬性的,但這個類不和數據庫接邊,同理,這個是放在數據庫里的,但是要和它接邊的話,那就是有了下面一個類,AccountDao類
第四步:
package myproject;public class AccountDao {private database database1;public AccountDao(database database1) {this.database1 = database1;}public Account findbyname(String name){Account account=null;for (Account account2:database1.getAccounts()) {if(account2.getAccountName().equals(name)){account=account2;break;}}return account;}public void insert(Account account1){database1.getAccounts().add(account1);}}和那個goodsDao一樣,它也就是和數據接邊的Account操作的一系列函數所放的類
第五步
package myproject;import java.util.ArrayList; import java.util.List;public class database {List <goods> lists=new ArrayList<>();List <Account> accounts =new ArrayList<>();public List<Account> getAccounts() {return accounts;}public List<goods> getLists() { return lists; }public database(List<goods> lists) {this.lists = lists;}public database(List<goods> lists, List<Account> accounts) {this.lists = lists;this.accounts = accounts;}public void setLists(List<goods> lists) {this.lists = lists;}public database(){goods goods1=new goods("香蕉",20,50);goods goods2=new goods("蘋果",15,65);goods good3=new goods("火龍果",30,100);Account account1=new Account(100,"丘比特","123");lists.add(goods1);lists.add(goods2);lists.add(good3);accounts.add(account1);}}這個也就是數據庫嘍,把goods和accounts放進lists里,然后new出來,兩個list都作為database 的成員屬性,即可寫出getter函數和sette函數進行關于數據庫里面的成員操作,另外需要把需要初始化的東西,放在database構造函數里面去即可。
第六步:
package myproject;import javax.swing.text.StyledEditorKit; import java.awt.*; import java.util.List; import java.util.Scanner;public class service {Scanner input1=new Scanner(System.in);private database database1;private goodsDao goodsDao1;private AccountDao accountDao1;private int accountID =100;public service(database database1) {this.accountDao1 = new AccountDao(database1);this.goodsDao1 = new goodsDao(database1);this.database1=database1;}public void start(){System.out.println("1. 登錄");System.out.println("2. 注冊");int choices =input1.nextInt();switch (choices){case 1: login();break;case 2:register();break;default: System.out.println("無效的選項,請重新輸入!");start();}}public void login(){System.out.println("請輸入注冊的用戶名:");String userName = input1.next();System.out.println("請輸入注冊的密碼:");String password = input1.next();Account account= accountDao1.findbyname(userName);if(account != null){//將數據庫中找到的賬戶,再根據其密碼和輸入的密碼比較if(account.getPassword().equals(password)){System.out.println("登錄成功!");showgoods();}else{System.out.println("密碼錯誤!");login();}}else{System.out.println("用戶名不存在!請重新輸入");login();}}public void register(){System.out.println("請輸入注冊的用戶名:");String userName = input1.next();System.out.println("請輸入注冊的密碼:");String password = input1.next();//判斷用戶名是否被注冊Account account = accountDao1.findbyname(userName);if(account != null){System.out.println("該用戶名已被注冊!輸入0返回上一層菜單,其他任意鍵繼續注冊");String result = input1.next();if(result.equals("0")){start();}else{register();}}else{//根據注冊的信息創建一個賬戶對象Account registAccount = new Account(accountID,userName,password);registAccount.setAccountName(userName);registAccount.setPassword(password);registAccount.setAccountID(++accountID);//將注冊的信息寫入數據庫accountDao1.insert(registAccount);//返回起始菜單start();}}public void showgoods(){List <goods> goods2= database1.getLists();for (int i = 0; i < goods2.size(); i++) {goods a=goods2.get(i);System.out.println("商品名稱:"+a.getName()+" 商品價格:"+a.getPrice()+"元"+" 商品銷量:"+a.getConsume()+"箱");}} }這一步也就是最關鍵的一步,是一個service函數,按照我的理解也就是用來封裝一系列的操作(即服務器端所需要的做的操作),用來判斷 登錄 以及注冊等等操作,剛開始的話,我一直難以區別Dao類和service類感覺有點相像,都是操作數據庫,而且他們的類里面都有database1 數據,都可以直接去操作數據庫。
但是我們一般通過service類去對數據庫進行增刪改查的話,都是通過 Dao類去間接操作的,并非通過service里面的database1直接去,如果直接通過database1的話,那么我們的Dao類寫得就沒意義了。這是我個人總結吧。
第七步:
package myproject;public class main1 {public static void main(String[] args) {database database1 = new database();service services = new service(database1);services.start();} }說實話,我感覺我的邏輯應該沒問題的,但一直搞不懂為什么那個最后show的時候它說我的database1是null,搞了一小時的報錯,等我研究一下,待會給大家答復
解決了,就眼瞎,忘了構造函數里面的一個this還沒寫,終究還是我太菜
總結
以上是生活随笔為你收集整理的java项目(注册和登录(成功后查看商品的信息))的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tar指令详解
- 下一篇: ARM处理器寻址方式 之 堆栈寻址