栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

简易二手车交易系统案例(JAVA)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简易二手车交易系统案例(JAVA)

 

前言:

何为二手车:

    二手车是指在公安交通管理机关登记注册,在达到国家规定的报废标准之前或在经济实用寿命期内服役,并仍可继续使用的机动车辆。
    二手车,英文译为“Second Hand Vehicle”或"Used Car",意为“第二手的汽车”或“使用过的汽车”,在中国称为 “旧机动车”。“中古车”是日本的叫法,不过我国台湾也称“中古车”。北美是二手车最发达的市场,因为平民百姓购买旧车时不一定就能买到“第二”手的,而且大多是小轿车和家用吉普车,所以在北美二一种很通俗的叫法“用过的汽车”。
    政府工作报告提出,将新能源汽车车辆购置税优惠政策再延长三年,全面取消二手车限迁政策。专家表示,这将促进二手车消费市场潜力进一步释放。
    2019年5月,商务部、公安部、海关总署共同举行二手车出口专题会议,正式启动二手车出口工作。首批开展二手车出口业务的地区为北京、天津、上海、浙江(台州)、山东(济宁)、广东、四川(成都)、陕西(西安)、青岛、厦门10个省市

二手车网站:

    互联网的时代,全国性和地方性的二手车网站很多,为车主寻找买主提供免费的交易平台。在这些专业的二手车网站上,往往都会有免费评估的版块,车主可以大致判断自己旧车的定价,不会受骗。不过,这些评估结果同市场行情可能有偏差,所以只能做参考。上网前,要为自己的车子准备好几张照片,这样网上展示的效果才会好。

【项目整体思路】

1、首先是util层(工具层),有两个类(CommonUtil、RandomFourNumUtils)

  • RandomFourNumUtils:生成一个String类型的四位随机数
  • CommonUtil:dateStrIsValid:检查日期字符串是否合法,用Try-Catch抛出异常

2、其次是main层,有两个类(Main、easycheck)

  • easycheck:系统使用说明与项目要求(方便对照)
  • Main:主菜单(Switch实现)

3、然后是entity层(实体层),有五个类

  • Admin:实现对象序列化(设置用户名与密码)
  • Brand:同上(设置品牌名称与编号)
  • Car:同上(设置汽车各类参数)
  • CarType:同上(设置车型编号与名称)
  • User:同上(设置用户相关信息)

4、接着是Dao层(数据存取对象层),有三个类

  • UserDao:使用单例模式封装数据类
  • saveUser: 保存用户信息
  • findUserByNameAndPassword:根据账号和密码查询用户
  • FileDB:文件操作类
  • saveObjToFile:将对象保存到文件中,如果本地不存在数据就创建一个文件,用Try-Catch抛出异常
  • getObjFromFile:从文件中读出对象,并且返回文件中存储的序列化对象
  • 如果本地不存在数据,就创建一个文件用Try-Catch抛出异常
  • DataAccessDao:数据访问类,通过I/O流对文件的操作,实现数据的增删改查
  •                                buy:买车
  •                                saveCarType:添加车型
  •                                queryRecentTenCars:查询最新10条发布车辆信息
  •                                saveBrand:添加品牌,用isExistsBrand判断是否可以添加品牌

5、最后是service层,有四个类

  •    1)首先是CarService类:
  • 可以根据车型、品牌、价格、挂牌日期,筛选出符合条件的车并显示,相应的可以根据情况收藏车或购买,购买的话打印账单
  •    2)其次是RegisterService类:
  • 注册类,检查输入,用户是否已经存在,输入邮箱手机号等,均成功则注册完成
  • 在这里默认用户存款10W
  •    3)然后是LoginService类:
  • 登陆类,与注册类大致相同,其中要防止多人多次登陆,登陆后更改功能1
  •    4)最后是BakendService类:
  • 后台服务,用伪管理员密码控制登陆,进入后可以对车辆类作出增删,也可以对相应已经登陆的用户增加余额
【部分源码】  MAIN
package main;

import entity.User;
import service.BakendService;
import service.CarService;
import service.LoginService;
import service.RegisterService;

import java.util.Scanner;

public class Main {
    public static boolean isLogin=false;
    public static User user;
    public static void main(String[] args)  {
        boolean isFirst=true;
        LoginService loginService = new LoginService();
        RegisterService registerService = new RegisterService();
        CarService carService = new CarService();
        BakendService bakendService = new BakendService();
        System.out.println("****** 主菜单 ******");
        System.out.println("1: 登录");
        System.out.println("2: 注册");
        System.out.println("3: 最新二手车信息");
        System.out.println("4: 搜索车辆");
        System.out.println("6: 我的收藏");
        System.out.println("7: 后台管理");
        System.out.println("8: 退出系统.");
        System.out.print("请输入功能前对应的数字:");
        while (true) {
            if(!isFirst) {
                System.out.println("请输入功能前对应的数字继续...");
            }
            isFirst=false;
            Scanner sc = new Scanner(System.in);
            String choice = sc.nextLine();
            // 选择
            switch (choice) {
                case "1":
                    loginService.login();
                    break;
                case "2":
                    registerService.register();
                    break;
                case "3":
                    carService.queryTenCars();
                    break;
                case "4":
                    carService.searchCar();
                    break;
                case "6":
                    carService.queryAllMyLike();
                    break;
                case "7":
                    bakendService.showBakendManage();
                    break;
                case "8":
                    System.exit(1);
                    break;
                default:
                    System.out.println("输入的数字错误");
                    break;
            }
        }
    }
}
USER DAO
package dao;

import entity.User;

import java.util.ArrayList;
import java.util.List;

public class UserDao {
    private static UserDao instance;
    private String userFile = "user.txt";
    //单例模式
    public static UserDao getInstance(){
        if(instance==null){
            synchronized (UserDao.class){
                if(instance==null){
                    instance = new UserDao();
                }
            }
        }
        return instance;
    }

    
    public void saveUser(User user){
        FileDB> fileDB = new FileDB<>(userFile);
        List userList = fileDB.getObjFromFile();
        if(userList ==null) {
            userList = new ArrayList<>();
        }
        userList.add(user);
        fileDB.saveObjToFile(userList);
    }

    
    public User findUserByNameAndPassword(String userName,String password){
        FileDB> fileDB = new FileDB<>(userFile);
        List userList = fileDB.getObjFromFile();
        if(userList!=null) {
            for (int i = 0; i < userList.size(); i++) {
                if (userList.get(i).getUserName().equals(userName)&&userList.get(i).getPassword().equals(password)) {
                    return userList.get(i);
                }
            }
        }
        return null;
    }

    
    public boolean checkUserNameExists(String userName){
        FileDB> fileDB = new FileDB<>(userFile);
        List userList = fileDB.getObjFromFile();
        if(userList!=null) {
            for (int i = 0; i < userList.size(); i++) {
                if (userList.get(i).getUserName().equals(userName)) {
                    return true;
                }
            }
        }
        return false;
    }

    
    public boolean checkEmailExists(String email){
        FileDB> fileDB = new FileDB<>(userFile);
        List userList = fileDB.getObjFromFile();
        if(userList!=null) {
            for (int i = 0; i < userList.size(); i++) {
                if (userList.get(i).getEmail().equals(email)) {
                    return true;
                }
            }
        }
        return false;
    }

    
    public boolean checkPhoneExists(String phone){
        FileDB> fileDB = new FileDB<>(userFile);
        List userList = fileDB.getObjFromFile();
        if(userList!=null) {
            for (int i = 0; i < userList.size(); i++) {
                if (userList.get(i).getPhone().equals(phone)) {
                    return true;
                }
            }
        }
        return false;
    }
}
ADMIN
package entity;

import java.io.Serializable;

public class Admin implements Serializable {
    private String name;//用户名
    private String password;//密码

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
LoginService
package service;

import dao.UserDao;
import entity.User;
import main.Main;

import java.util.Scanner;

public class LoginService {
    
    public  boolean checkUserName(String userName){
        if(userName!=null&&userName.trim().length()>=3&&userName.trim().length()<=10){
            return true;
        }else{
            return false;
        }
    }


    public  void login() {
        UserDao userDao = UserDao.getInstance();
        // 键盘录入信息
        System.out.println("登录");
        System.out.println("------------------------");
        System.out.println("请输入用户名与密码");
        System.out.println("用户名长度限制3~10字符");
        System.out.println("密码长度限制6~32字符");
        System.out.println("------------------------");
        Scanner sc = new Scanner(System.in);
        String userName="";
        String password="";
        while (true) {
            System.out.println("请输入用户名");
            boolean flag = false;
            userName = sc.nextLine();
            // 判断用户名是否合规
            flag=checkUserName(userName);
            if (flag == false) {
                System.out.println("用户名长度错误!");
            } else {
                System.out.println("请输入密码");
                password = sc.nextLine();
                User user = userDao.findUserByNameAndPassword(userName,password);
                if(user!=null){
                    System.out.println("登录成功");
                    Main.isLogin=true;
                    Main.user = user;
                    break;
                }else {
                    System.out.println("用户名密码校验失败,请重新输入用户名、密码");
                }
            }
        }
    }
}
RandomFourNumUtils
package util;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class RandomFourNumUtils {
    
    public static String getRandomFourNum() {
        String[] beforeShuffle = new String[] { "2", "3", "4", "5", "6", "7",
                "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
                "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
                "W", "X", "Y", "Z" };
        List list = Arrays.asList(beforeShuffle);
        Collections.shuffle(list);
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < list.size(); i++) {
            sb.append(list.get(i));
        }
        String afterShuffle = sb.toString();
        String result = afterShuffle.substring(5, 9);
        return result;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/921427.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号