简易商城系统

作者: 孙浩j | 来源:发表于2017-11-20 15:41 被阅读49次
    image.png

    需求分析:
    1.用户类:账号,密码,购物车
    2.用户管理类:
    (1)注册,将注册后的user对象存到一个集合然后存到文件里
    (2)登陆,从文件中获取集合,遍历集合,如果账号密码相等则登陆成功
    3.管理员类
    4.管理员管理类
    5.书类
    6.商城类
    (1)遍历文件里的书集合
    (2)管理员具备的权利 :添加商品
    (3)2.管理具备的权利:下架商品
    (4)利用分页的方法显示商品
    (5)把书添加到用户的购物车
    (6)查看购物车
    (7)改变购物车
    (8)搜索商品

    用户类

    import java.io.Serializable;
    import java.util.ArrayList;
    import java.util.List;
    
    public class User implements Serializable {
        
        private static final long serialVersionUID = 1L;
        private String account;
        private String password;
        List<Book>list=new ArrayList<>();
        public User(String account, String password) {
            super();
            this.account = account;
            this.password = password;
        }
        public String getAccount() {
            return account;
        }
        public void setAccount(String account) {
            this.account = account;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ((account == null) ? 0 : account.hashCode());
            return result;
        }
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            User other = (User) obj;
            if (account == null) {
                if (other.account != null)
                    return false;
            } else if (!account.equals(other.account))
                return false;
            return true;
        }
    }
    
    

    用户管理类

    import java.io.*;
    import java.util.*;
    import java.util.*;
    public class UsersManger {
        
        //注册
        public void registUser(String account,String password) throws Exception {
            User user=new User(account,password);
            File file=new File("user.txt");
            ObjectOutputStream oos=null;
            ObjectInputStream ois=null;
            if(file.length()==0){
                List<User> list=new ArrayList<>();
                list.add(user);
                oos=new ObjectOutputStream(new FileOutputStream(file)); 
                oos.writeObject(list);
                System.out.println("注册成功1");
            }else{
                ois=new ObjectInputStream(new FileInputStream(file));
                List<User>list=(List<User>)ois.readObject();
                for(User u:list){
                    if(u.getAccount().equals(account)){
                        System.out.println("你注册的账号已存在");
                    }else{
                        list.add(user);
                        oos=new ObjectOutputStream(new FileOutputStream(file)); 
                        oos.writeObject(list);
                        System.out.println("注册成功2");
                    }
                }       
            }
                
            //ois.close();
            //oos.close();
        }
        //登陆
        public boolean loginUser(String account,String password) throws Exception{
            File file=new File("user.txt");
            ObjectInputStream ois=null;
            ois=new ObjectInputStream(new FileInputStream(file));
            List<User>list=(List<User>)ois.readObject();
            boolean b=false;
            for(User u:list){
                if(u.getAccount().equals(account)&&u.getPassword().equals(password)){
                    b=true;
                }else{
                    b=false;
                }
            }
            if(b){
                System.out.println("登陆成功");
                
            }else{
                System.out.println("账号或者密码错误再想一想");
                
            }   
            ois.close();        
            return b;
    }
    }
    

    管理员类

    public class Administrator implements Serializable {
        
        private static final long serialVersionUID = 1L;
        private String account;
        private String password;
        public Administrator(String account, String password) {
            super();
            this.account = account;
            this.password = password;
        }
        public String getAccount() {
            return account;
        }
        public void setAccount(String account) {
            this.account = account;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        
    }
    
    

    管理员管理类

    public class Administrator implements Serializable {
        
        private static final long serialVersionUID = 1L;
        private String account;
        private String password;
        public Administrator(String account, String password) {
            super();
            this.account = account;
            this.password = password;
        }
        public String getAccount() {
            return account;
        }
        public void setAccount(String account) {
            this.account = account;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        
    }
    
    
    

    书类

    import java.io.Serializable;
    
    public class Book implements Serializable {
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        private String bookName;
        private String bookAuther;
        private int price;
        private int amount;
        public Book(String bookName, String bookAuther, int price, int amount) {
            super();
            this.bookName = bookName;
            this.bookAuther = bookAuther;
            this.price = price;
            this.amount = amount;
        }
        public String getBookName() {
            return bookName;
        }
        public void setBookName(String bookName) {
            this.bookName = bookName;
        }
        public String getBookAuther() {
            return bookAuther;
        }
        public void setBookAuther(String bookAuther) {
            this.bookAuther = bookAuther;
        }
        public int getPrice() {
            return price;
        }
        public void setPrice(int price) {
            this.price = price;
        }
        public int getAmount() {
            return amount;
        }
        public void setAmount(int amount) {
            this.amount = amount;
        }
        @Override
        public String toString() {
            return "书名:" + bookName + ", 作者:" + bookAuther + ", 价钱:" + price + ", 数量:" + amount;
        }
    }
    
    

    商城类

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Scanner;
    import java.io.*;
    public class Shop {
    
        //列出商品,返回的是商城里的商品集合
        public List<Book> listBook() throws FileNotFoundException, IOException, ClassNotFoundException{
            File file=new File("book.txt");
            List<Book> list=new ArrayList<Book>();
            ObjectInputStream ois=null;
            if(file.length()==0){
                System.out.println("商城里没有商品");
            }else{
            ois=new ObjectInputStream(new FileInputStream(file));
            list=(List<Book>)ois.readObject();
            }
                ois.close();
            return list;
        }
        
        //遍历商城了里书的集合
        public void bianliBook(List<Book> list){
            System.out.print("书名\t");
            System.out.print("作者\t");
            System.out.print("价钱\t");
            System.out.print("数量\t");   
            System.out.println();
            for(Book u:list){
                System.out.print(u.getBookName()+"\t");
                System.out.print(u.getBookAuther()+"\t");
                System.out.print(u.getPrice()+"\t");
                System.out.print(u.getAmount()+"\t");
                System.out.println();
            }
        }
        
            //1.管理员具备的权利 :添加商品
        public void addBook(Book book) throws FileNotFoundException, IOException, ClassNotFoundException{
            File file=new File("book.txt");
            ObjectOutputStream oos=null;    
            if(file.length()==0){  //如果里面没有书直接往里面加书
                List<Book>list=new ArrayList<>();
                list.add(book);
                oos=new ObjectOutputStream(new FileOutputStream(file));
                oos.writeObject(list);  
            }else{ //获取文件中集合,添加商品到集合,然后重新存入
            List<Book> list=listBook();
            list.add(book);
            oos=new ObjectOutputStream(new FileOutputStream(file));
            oos.writeObject(list);
            }
            System.out.println("添加成功");
            //oos.close();
            //ois.close();  
        }
        
        //2.管理具备的权利:下架商品
        public void removeBook(String bname) throws FileNotFoundException, IOException, ClassNotFoundException{
            File file=new File("book.txt");
            ObjectOutputStream oos=null;
            if(file.length()==0){    
                System.out.println("没有书了不能下架了");
                
            }else{  //先找出文件中存商品的集合
            List<Book> list=listBook();
            Iterator<Book> it=list.iterator();
            while(it.hasNext()){ //如果文件中商品是你想下架的商品就从集合删除
                if(it.next().getBookName().equals(bname)){
                    it.remove();
                    break;
                }
            }   //把删除后的集合重新存到文件中
            oos=new ObjectOutputStream(new FileOutputStream(file));
            oos.writeObject(list);
            }   
        }
        
        //利用分页的方法显示商品
        public void fenYe(List<Book> list){
            Scanner in=new Scanner(System.in);
            int i=0;
            while(true){
                System.out.println("1.首页2.下一页3.上一页4.尾页5.退出选择商品");
                int a=in.nextInt();
            
                if(a==1){  //首页
                    i=0;
                for(;i<3;i++){
                System.out.println((i+1)+"."+list.get(i).getBookName());
                }
                }else if(a==2){ //下一页       
                    int j=i+3;
                    if(j<=list.size()){
                    for(;i<j;i++){
                        System.out.println((i+1)+"."+list.get(i).getBookName());        
                    }
                }else{
                    System.out.println("不能再往后了");
                    continue;
                }
                            
                }else if(a==3){//上一页    
                    int j=i-6;
                    if(j>=0){
                        i=i-3;
                    for(;j<i;j++){
                        System.out.println((j+1)+"."+list.get(j).getBookName());                            
                    }
                    }else{
                        System.out.println("不能再往前了");
                        continue;
                    }
                    
                }else if(a==4){//尾页
                    int j=list.size()-3;
                    i=6;
                    for(;j<list.size();j++){
                        System.out.println((j+1)+"."+list.get(j).getBookName());
                    }       
                }else{
                    break;
                }
            }   
        }
        
        
        public void listBook(User u) throws FileNotFoundException, ClassNotFoundException, IOException{
            List<Book>list=listBook();
            fenYe(list);
            System.out.println("请输入你选择商品");
            Scanner in=new Scanner(System.in);
            int d=in.nextInt();
            System.out.println(list.get(d-1));//查看选择的商品详情
            System.out.println("是/否加入购物车?");
            in=new Scanner(System.in);
            String buy=in.next();
            if(buy.equals("是")){  //加入购物车
                addCar(u,list.get(d-1));
                System.out.println("1返回上一级2.查看购物车");
                in=new Scanner(System.in);
                int fan=in.nextInt();
                if(fan==1){
                    listBook(u);   //返回到商品分页查看的地方           
                }else if(fan==2){           
                    List<Book> lists=checkCar(u);  //查看购物车  
                    changeCar(u,lists);
                    
                }else{
                    System.out.println("别瞎输入好么");   
                }   
            }else if(buy.equals("否")){    //不加入购物车
            listBook(u);      //返回listbook
            }
        }
        
        //把书添加到用户的购物车   
        public void addCar(User u,Book book) throws FileNotFoundException, IOException, ClassNotFoundException{           
            u.list.add(book);     //添加到用户购物车
            File file=new File("user.txt");
            ObjectOutputStream oos=null;
            ObjectInputStream ois=null; //重新获取这个用户
            ois=new ObjectInputStream(new FileInputStream(file));
            List<User>list=(List<User>)ois.readObject();
            for(User us:list){   //将当前用户与存到文件中的用户交换数据
                if(us.getAccount().equals(u.getAccount())){
                    us=u;       
                }
        }                       //重新把用户存进去
            oos=new ObjectOutputStream(new FileOutputStream(file)); 
            oos.writeObject(list);
        }
        
        
        //查看购物车
        public List<Book> checkCar(User u) throws FileNotFoundException, ClassNotFoundException, IOException{
            int num=1;
            List<Book>list=u.list;
            System.out.print("ID\t");
            System.out.print("书名\t");
            System.out.print("单价\t");
            System.out.print("购买数量\t");
            System.out.print("总价\t");
            System.out.println();   
            for(int i=0;i<u.list.size();i++){
                System.out.print(num+"\t");
                System.out.print(u.list.get(i).getBookName()+"\t");
                System.out.print(u.list.get(i).getPrice()+"\t");
                System.out.print(u.list.get(i).getAmount()+"\t");
                System.out.print(u.list.get(i).getAmount()*u.list.get(i).getPrice()+"\t");
                System.out.println();       
            }
            return list;        
        }
        
        public void changeCar(User u,List<Book> list) throws FileNotFoundException, ClassNotFoundException, IOException{
            System.out.println("请输入你想修改的数量的书的名字");
            Scanner in=new Scanner(System.in);
            String name=in.next();
            System.out.println("请输入想买多少本");
            in=new Scanner(System.in);
            int shu=in.nextInt();
            List<Book> l=listBook();
            for(Book b:l){
                if(b.getBookName().equals(name)){
                    if(b.getAmount()>shu){
                        System.out.println("修改成功");
                        int i=0;
                        for(;i<u.list.size();i++){
                            if(b.getBookName().equals(u.list.get(i).getBookName())){
                                break;
                            }
                        }
                        u.list.get(i).setAmount(shu);
                        //这有个小bug,数量改变没有添加到文件中  
                        //而且shop里的商品数量也还没有减掉
                        checkCar(u);
                        System.exit(0);
                    }else{
                        System.out.println("没有那么些书");
                    }
                }
            }   
        }
        
        
        //搜索书
        public Book searchBook(String name) throws FileNotFoundException, IOException, ClassNotFoundException{
            File file=new File("book.txt");
            ObjectInputStream ois=new ObjectInputStream(new FileInputStream(file));
            List<Book> list=(List)ois.readObject();
            for(Book b:list){
                if(b.getBookName().equals(name)){
                    System.out.println(b);
                    return b;
                }
            }
            return null;    
        }   
    }
    
    
    

    测试类

    import java.util.*;
    public class Demo1 {
        public static void main(String[] args) throws Exception {
            System.out.println("欢迎来到千锋商城");
            while(true){
            System.out.println("选择你想要进行的操作1登陆2注册");
            Scanner in = new Scanner(System.in);
            int a = in.nextInt();
            if(a==1){//登陆
                System.out.println("1登陆管理员2登陆用户");
                in = new Scanner(System.in);
                int b=in.nextInt();
                if(b==1){   //登陆管理员
                    System.out.println("请输入账号");
                    in = new Scanner(System.in);
                    String account=in.next();
                    System.out.println("请输入密码");
                    in = new Scanner(System.in);
                    String password=in.next();
                    AdministratorManger am=new AdministratorManger();
                    boolean deng=am.loginAdministrator(account, password);
                    Administrator at=new Administrator(account,password);
                    if(deng){
                        Shop shop=new Shop();
                        while(true){
                        System.out.println("1添加商品2下架商品3退出");
                        in=new Scanner(System.in);
                        int ada=in.nextInt();
                        if(ada==1){
                        System.out.println("请输入书名");
                        in=new Scanner(System.in);
                        String bname=in.next();
                        System.out.println("请输入作者");
                        in=new Scanner(System.in);
                        String rname=in.next();
                        System.out.println("请输入价钱");
                        in=new Scanner(System.in);
                        int price=in.nextInt();
                        System.out.println("请输入数量");
                        in=new Scanner(System.in);
                        int ac=in.nextInt();
                        Book book=new Book(bname,rname,price,ac);
                        shop.addBook(book);
                        
                        }else if(ada==2){
                            shop.bianliBook(shop.listBook());
                            System.out.println("请输入书名");
                            in=new Scanner(System.in);
                            String bname=in.next();
                            shop.removeBook(bname);
                            System.out.println("下架成功");             
                        }else if(ada==3){
                        
                        System.exit(0);
                    }   
                    }
                    
                    }
                }else if(b==2){  //登陆用户
                    System.out.println("请输入账号");
                    in = new Scanner(System.in);
                    String account=in.next();
                    System.out.println("请输入密码");
                    in = new Scanner(System.in);
                    String password=in.next();
                    UsersManger um=new UsersManger();
                    boolean deng=um.loginUser(account, password);
                    User u=new User(account,password);
                    Shop shop=new Shop();
                        if(deng){
                            System.out.println("1.查看商品2.搜索商品3.退出");
                            in=new Scanner(System.in);
                            int c=in.nextInt();
                            if(c==1){  //查看商品
                                shop.listBook(u);                       
                            }else if(c==2){//搜索商品
                                System.out.println("请输入你想搜索的书名");
                                in=new Scanner(System.in);
                                String name=in.next();
                                Book book=shop.searchBook(name);
                                shop.listBook(u);                   
                            }else if(c==3){//退出
                                System.exit(0);                 
                            }
                        }   
            }
            }else if(a==2){ //注册
                System.out.println("1注册管理员2注册用户");
                in = new Scanner(System.in);
                int c=in.nextInt();
                if(c==1){   //注册管理员
                    System.out.println("请输入账号");
                    in = new Scanner(System.in);
                    String account=in.next();
                    System.out.println("请输入密码");
                    in = new Scanner(System.in);
                    String password=in.next();
                    AdministratorManger am=new AdministratorManger();
                    am.registAdministrator(account, password);
                    
                }else if(c==2){  //注册用户
                    System.out.println("请输入账号");
                    in = new Scanner(System.in);
                    String account=in.next();
                    System.out.println("请输入密码");
                    in = new Scanner(System.in);
                    String password=in.next();
                    UsersManger um=new UsersManger();
                    um.registUser(account, password);           
                }else{
                    System.out.println("请按照规则输入");
                }       
            }else{
                System.out.println("请按照规则输入");
            }   
        }
        }
        }
    
    

    相关文章

      网友评论

        本文标题:简易商城系统

        本文链接:https://www.haomeiwen.com/subject/snsrvxtx.html