java项目(注册和登录(成功后查看商品的信息))

本文介绍了一个简单的登录注册系统的实现过程,包括商品信息展示。系统使用Java编程语言,涉及Goods类、Account类及其DAO类的设计,通过Service类整合业务逻辑。

声明

题目:实现登录和注册功能
登录成功后可以查看所有商品的信息(商品名称,价格,销量)

第一步:

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还没写,终究还是我太菜

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寻梦&之璐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值