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项目(注册和登录(成功后查看商品的信息))相关推荐
- 登录成功后怎么跳转页面html,怎么设置登录成功后跳转到相应的页面
想要用angularjs实现的功能是 一进入就是一个登录页面(login.html),如果没有账号密码就注册,登录成功后跳转到相应的页面(shopcart.html) 碰到的问题 1.一进入页面没有显 ...
- html登陆成功后跳转页面跳转,怎么设置登录成功后跳转到相应的页面
想要用angularjs实现的功能是 一进入就是一个登录页面(login.html),如果没有账号密码就注册,登录成功后跳转到相应的页面(shopcart.html) 碰到的问题 1.一进入页面没有显 ...
- Vue项目登录成功后返回到原操作页面
登录超时或者由于其它原因,造成必须重新登录的情况,相信大家都见过这种场景,比较偷懒的办法是登陆成功厚直接回到主页面,但其实我们有更好的解决办法. 作为vue的标配,我们可以利用axios的全局拦截器做 ...
- Spring Boot Security + Vue 登录成功后重定向无 Access-Control-Allow-Origin 问题解决办法
需要明确: 已正确配置跨域资源共享(CORS)(不然也不可能看到登录成功了). 已正确配置了跨站请求伪造(CSRF)(登录时需要携带 _csrf.token). 全部使用 POST 提交的数据. 本文 ...
- Java项目实现手机令牌登录Google
Java项目实现手机令牌登录Google 一.项目背景: 二.代码原理: 三.使用说明(重要): 四.源代码: 一.项目背景: 客户需求:使用Java作为后台,编写一个Java网页系统,其中包含登录功 ...
- JSP/Servlet基础——登录成功后返回之前的页面
笔记,只供自己参考,水平相当菜 配置过滤器,拦截用户请求,如果用户没有登录,就转到登录页面,登录成功后再返回到之前的页面 1 在web.xml中加入过滤器的配置 <?xml version=&q ...
- 使用wrapper将java程序注册程windows服务后不生效
使用wrapper将java程序注册程windows服务后不生效 使用add.bat或test***.bat测试通过了, 然后使用install***.bat注册后cmd显示注册成功. 但是程序到了运 ...
- 怎么在html显示已登录状态,登录成功后,返回时不再显示登录等已经没用的页面...
wap2app适配的时候,常碰到的一个场景就是登录,wap站登录成功后,比较差的体验主要有两个: 1.back依然可以看到登录页,效果很差 2.首页如果有登录入口,返回首页,首页依然显示未登录的状态 ...
- 如何使用Shiro实现不同用户登录成功后跳转到不同主页?
0 如何使用Shiro实现不同用户登录成功后跳转到不同主页?10 Shiro配置文件中successUrl指定的页面只有一个: Java代码 <bean id="shiroFilt ...
最新文章
- 华为对边缘计算的思考与理解
- 【.net深呼吸】动态类型(高级篇)
- JSON 之 SuperObject(16): 实例 - 解析 Google 关键字搜索排名
- idea插件手动安装
- 写sql语句的经验之谈
- pandas 提取某几列_用Pandas做数据清洗,我一般都这么干……
- linux脚本编程教程,shell脚本编程基础教程
- 【音效处理】Reverb 混响算法简介
- vue 日程表组件_VUE也有自己的日历组件
- USB3300速度调试
- linux音响会产生pulse文件,Linux声音系统和PulseAudio简介
- Openstack rocky 部署四: neutron 部署与验证(控制节点)
- 人机交互如何改变人类生活 | 公开课笔记
- his系统服务器选择,我院完成HIS服务器及数据库的升级改造
- 什么是数学建模?如何在数学建模中拿奖?通过建模学到了啥?
- Android 项目必备(二十六)-->获取手机中所有 APP
- 小米电视4s通过adb调试删除原装软件笔记
- 工作学习正确坐姿坐姿提升注意力
- 黑苹果安装界面选择语言
- Python-pip与模块安装
热门文章
- 成功解决将python的列表格式输出数值(如pandas.read_excel().describe()),批量转到表格内daiding
- Python编程语言学习:两行代码输出根目录下所有子文件夹的绝对路径、相对路径
- 成功解决ModuleNotFoundError: No module named 'torch.utils.tensorboard'
- CV之face_recognition:Py之face_recognition库安装、介绍、使用方法详细攻略
- 蓝桥杯_算法训练_关联矩阵
- bzoj1951 组合数取模 中国剩余定理
- linux软件管理(Vim编辑器使用) ——(七)
- vue脚手架---vue-cli
- WinCE 系统刚启动时运行应用,在应用启动时偶尔出现异常
- leetcode 211. Add and Search Word - Data structure design Trie树