【无标题】

1、公司计划使用Java控制台开发一个小型银行系统,使用sqlserver作为后台数据,其中银行管理员功能和顾客功能由你来负责。

2、数据库数据如下

1 顾客表:

数据表名

customer

中文表名

顾客表

字段显示

字符名

数据类型

字段大小

备注和说明

银行账号

custNumber

varchar

20

主键

开户姓名

custName

varchar

20

非空

账户密码

custPwd

Varchar

6

非空

身份证号码

custIdCard

varchar

18

非空

开户金额

custMoney

double

9

非空,默认0

开户日期

custDate

datetime

非空

2 管理员表:

数据表名

administrator

中文表名

管理员表

字段显示

字符名

数据类型

字段大小

备注和说明

管理员编号

adminNumber

varchar

20

主键

管理员密码

adminPwd

varchar

20

非空

管理员名字

adminName

varchar

18

非空

3.我建立两个resultMap,它何将SQL查询的结果集映射(Map)到Administrator和Customer类对象中

<resultMap id="bankmap" type="com.fs.model.Administrator">
    <id column="adminNumber" property="adminNumber"></id>
    <result column="adminPwd" property="adminPwd"></result>
    <result column="adminName" property="adminName"></result>
</resultMap>

<resultMap id="Cusmap" type="com.fs.model.Customer">
    <id column="custNumber" property="custNumber"></id>
    <result column="custName" property="custName"></result>
    <result column="custPwd" property="custPwd"></result>
    <result column="custIdCard" property="custIdCard"></result>
    <result column="custMoney" property="custMoney"></result>
    <result column="custDate" property="custDate"></result>
</resultMap>

4、登陆操作我是用@Param注解传参法方法

Administrator adminLogin(@Param("adminName") String name, @Param("adminPwd") String pass);
 <select id="adminLogin" resultMap="bankmap">
 select * from administrator where adminName=#{adminName} and adminPwd=#{adminPwd}
</select>

5、查询所有成员

 List<Customer> queryAllCus();
<select id="queryAllCus" resultMap="Cusmap" >
    select * from customer
</select>

6.查询银行总金额

 double totalAllMoney();
 <select id="totalAllMoney" resultType="double">
        select sum(custMoney) from customer
    </select>

7.富豪排行榜

List<Customer> queryALLByMoney();
  <select id="queryALLByMoney" resultMap="Cusmap">
        select * from customer order by  custMoney desc
    </select>

8.删除操作

 int deleCus(String num);


<delete id="deleCus" parameterType="String">
    delete from  customer where custNumber=#{num}
</delete>

8.动态查询

重点来了,当查询条件多种多样时,如何根据不同条件动态查询结果呢?

(1)我先是根据各种条件(号码,姓名,卡号)建了一个vo包下的Custom类,如下


public class Custom {
    private String custNumber;
    private String custName;

    private String custIdCard;

    public Custom() {
    }

    @Override
    public String toString() {
        return "Custom{" +
                "custNumber='" + custNumber + '\'' +
                ", custName='" + custName + '\'' +
                ", custIdCard='" + custIdCard + '\'' +
                '}';
    }

    public String getCustNumber() {
        return custNumber;
    }

    public void setCustNumber(String custNumber) {
        this.custNumber = custNumber;
    }

    public String getCustName() {
        return custName;
    }

    public void setCustName(String custName) {
        this.custName = custName;
    }

    public String getCustIdCard() {
        return custIdCard;
    }

    public void setCustIdCard(String custIdCard) {
        this.custIdCard = custIdCard;
    }

    public Custom(String custNumber, String custName, String custIdCard) {
        this.custNumber = custNumber;
        this.custName = custName;
        this.custIdCard = custIdCard;
    }
}

(2)然后传入Custom类对象,比如根据银行账号查询。

Custom custom = new Custom();
custom.setCustNumber(customer.getCustNumber());
List<Customer> customers = customerServiceimpl.queryAllByAny(custom);
 List<Customer> queryAllByAny(Custom custom);
    <select id="queryAllByAny" parameterType="com.fs.vo.Custom" resultMap="Cusmap">
        <include refid="basesql"/>//select * from customer
        <where>
            <include refid="sqlwhere"/>//不同条件查询
        </where>
    </select>

    <sql id="sqlwhere">
    <choose>
        <when test="custName!=null">
            and custName=#{custName}
        </when>
        <when test="custIdCard!=null">
            and custIdCard=#{custIdCard}
        </when>
        <when test="custNumber!=null">
            and custNumber=#{custNumber}
        </when>
    </choose>
</sql>

    <sql id="basesql">
        select * from customer
    </sql>

9..动态修改银行数据库的值,比如设置新密码

  String newPass = scanner.next();
  customer.setCustPwd(newPass);
  int update = customerServiceimpl.update(customer);
   int update(Customer customer);

    <update id="update" parameterType="com.fs.model.Customer">
        update customer
        <set>
            <if test="custMoney!=0.0">
                custMoney=#{custMoney},
            </if>
        <if test="custPwd!=null">
            custPwd=#{custPwd}
        </if>

        </set>
        where custNumber=#{custNumber}
    </update>

10.整个银行系统操作

package com.fs.view;

import com.fs.model.Administrator;
import com.fs.model.Customer;
import com.fs.service.impl.AdminBankServiceImpl;
import com.fs.service.impl.CustomerServiceimpl;
import com.fs.vo.Custom;

import java.util.Date;
import java.util.List;
import java.util.Scanner;

import static java.lang.System.exit;

/**
 * @Version:1.0
 * @Description: TODO(一句话描述该类的功能)
 * @Date: 2024/8/16 12:50
 * @Author: tao
 */
public class BankSystem {
    AdminBankServiceImpl adminBankService = new AdminBankServiceImpl();
    CustomerServiceimpl customerServiceimpl = new CustomerServiceimpl();
    Scanner scanner = new Scanner(System.in);
//初始界面
    public void bankSystem() {
        System.out.println("                   银行系统 \n" +
                "********************1.管理员*****************\n" +
                "********************2.顾客**********************");
        System.out.println("请输入");
        int i = scanner.nextInt();
        switch (i) {
            case 1:
                deAdminLogin();
                break;
            case 2:
                doCustomLogin();
                break;


        }


    }

    private void doCustomLogin() {
        System.out.println("请输入用户名");
        String customName = scanner.next();
        System.out.println("请输入密码");
        String cusPass = scanner.next();
        Customer customer = customerServiceimpl.customerLogin(customName, cusPass);
        if(customer!=null){
            System.out.println("登陆成功");
            customerManger(customer);

        }else{
            System.out.println("密码或账号错误,请重新登陆");
            bankSystem();
        }
    }

    private void customerManger(Customer customer) {
        System.out.println("                                   银行系统(顾客)");
        System.out.println("**********************************************************************");
        System.out.println("1.存款    2.取款     3.查询余额     4.转账     5.修改密码    6.退出");
        System.out.println("**********************************************************************");
        System.out.println("请选择");
        int i = scanner.nextInt();
        switch (i){
            case 1:
                addMoney(customer);
                break;
            case 2:
                outMoney(customer.getCustNumber());
                break;
            case 3:
                watchMainMoney(customer.getCustNumber());
            break;
            case 4:
                transMoney(customer);
                break;
            case 5:
                updatPass(customer);
        }
    }

    private void updatPass(Customer customer) {
//        customerServiceimpl.update()
        System.out.println("请输入旧密码");
        String oldPass = scanner.next();
        if(oldPass.equals(customer.getCustPwd())){
            System.out.println("请输入新密码");
            String newPass = scanner.next();
           customer.setCustPwd(newPass);
            int update = customerServiceimpl.update(customer);
            if(update>0){
                System.out.println("密码修改成功");
            }else{
                System.out.println("密码修改失败");
            }
            retrunBackCustom(customer);

        }else{
            System.out.println("旧密码错误,请重新输入");
           updatPass(customer);
        }
        retrunBackCustom(customer);
    }

    //转账
    private void transMoney(Customer customer) {
        System.out.println("请输入转入账号");
        String num = scanner.next();
        Custom custom = new Custom();
        custom.setCustNumber(num);
        List<Customer> customers = customerServiceimpl.queryAllByAny(custom);
        Customer customerOne = customers.get(0);
        if(customerOne!=null){
            System.out.println("请输入转入金额");
            Double money = scanner.nextDouble();
            if(money<=customer.getCustMoney()){
                customer.setCustMoney(customer.getCustMoney()-money);
                int update = customerServiceimpl.update(customer);
                customerOne.setCustMoney(customerOne.getCustMoney()+money);
                int updateOne = customerServiceimpl.update(customerOne);
                if(update>0&&updateOne>0){
                    List<Customer> customersOne = customerServiceimpl.queryAllByAny(custom);
                    Customer customerTwo= customersOne.get(0);
                    Custom customOne = new Custom();
                    customOne.setCustNumber(customer.getCustNumber());
                    List<Customer> customersThree = customerServiceimpl.queryAllByAny(customOne);
                    Customer customerThree= customersThree.get(0);
                    System.out.println("转账成功," +"您余额为"+customerThree.getCustMoney()+
                            "您朋友当前余额为"+customerTwo.getCustMoney());
                    retrunBackCustom(customerTwo);
                }else {
                    System.out.println("添加失败");
                    retrunBackCustom(customer);
                }
            }else {
                System.out.println();
                System.out.println("您的余额不足,您当前余额为"+customer.getCustMoney());
                System.out.println("请选择1:充值  2:重新转入 3.退出");
                int i = scanner.nextInt();
                switch (i){
                    case 1:
                        addMoney(customer);
                        break;
                    case 2:
                        transMoney(customer);
                        break;
                    default:
                        retrunBackCustom(customer);
                        break;
                }
            }

        }else {
            System.out.println("账号不存在,请重新输入");
             transMoney(customer);
        }
    }
//余额
    private void watchMainMoney(String num) {
        Custom custom = new Custom();
        custom.setCustNumber(num);
        List<Customer> customers = customerServiceimpl.queryAllByAny(custom);
        System.out.println(customers);
        Customer customer = customers.get(0);
        System.out.println("您当前余额为"+customer.getCustMoney());
        retrunBackCustom(customer);
    }

    //取款
    private void outMoney(String custNumber) {
        Custom custom = new Custom();
        custom.setCustNumber(custNumber);
        List<Customer> customers = customerServiceimpl.queryAllByAny(custom);
        Customer customer = customers.get(0);
        System.out.println("请输入取款金额");
        double money = scanner.nextDouble();
        if(money<=customer.getCustMoney()){
            customer.setCustMoney(money+customer.getCustMoney());
            int update = customerServiceimpl.update(customer);
            if(update>0){
                List<Customer> customersTwo = customerServiceimpl.queryAllByAny(custom);
                Customer customerTwo = customers.get(0);
                System.out.println("取款成功,您当前余额为"+customerTwo.getCustMoney());
            }else {
                System.out.println("取款失败");
            }
        }else {
            System.out.println("余额不足,您当前余额为:"+customer.getCustMoney());

        }
        retrunBackCustom(customer);

    }
//存款
    private void addMoney(Customer customer) {
        System.out.println("请输入存款金额");
        double money = scanner.nextDouble();
        customer.setCustMoney(money+customer.getCustMoney());
        int update = customerServiceimpl.update(customer);
        if(update>0){
            Custom custom = new Custom();
            custom.setCustNumber(customer.getCustNumber());
            List<Customer> customers = customerServiceimpl.queryAllByAny(custom);
            Customer customerOne = customers.get(0);
            System.out.println("存款成功,当前余额为"+customerOne.getCustMoney());
            retrunBackCustom(customerOne);
        }else {
            System.out.println("添加失败");
        }

    }
//是否返回顾客主菜单
    private void  retrunBackCustom(Customer customer){
        System.out.println("1.返回顾客主菜单         0.退出系统:0");
        int m = scanner.nextInt();
        switch (m) {
            case 1:
                customerManger(customer);
                break;
            case 2:
                System.out.println("谢谢使用");
                exit(0);
                break;
            default:
                System.out.println("您已退出系统");
                exit(0);
        }
    }

    //管理员登陆界面
    private void deAdminLogin() {
        System.out.println("请输入用户名");
        String customName = scanner.next();
        System.out.println("请输入密码");
        String cusPass = scanner.next();
        Administrator adminBankDao1 = adminBankService.doLogin(customName, cusPass);
        if (adminBankDao1 != null) {
            System.out.println("登陆成功");
            adminManger();
        } else {
            System.out.println("密码或账号错误,请重新登陆");
            bankSystem();
        }
    }
//管理员系统操作界面
    private void adminManger() {
        System.out.println("银行系统【管理员】\n**************************************************\n" +
                "1.添加顾客           2.计算储蓄总额           3.富豪排行榜     4.删除顾客      5.退出\n" +
                "***********************************************************");
        System.out.println("请选择");
        int i = scanner.nextInt();
        switch (i) {
            case 1:
                addCsutom();
                break;
            case 2:
                totalMoney();
                break;
            case 3:
                moneyCustomerList();
                break;
            case 4:
                deleteCustomer();
            case 5:
                System.out.println("您已退出系统");
                break;

        }
    }

    private void deleteCustomer() {
        System.out.println("请输入顾客卡号");
        String num = scanner.next();
        int i = customerServiceimpl.deleCus(num);
        if(i>0){
            System.out.println("删除成功");
        }else {
            System.out.println("删除失败");
        }
        retunBack();
    }

    //富豪排行界面
    private void moneyCustomerList() {
        List<Customer> customers = customerServiceimpl.queryALLByMoney();
        int i=1;
        System.out.println("名次\t\t姓名\t\t身份证号\t\t\t\t\t金额");
        for (Customer customer : customers) {
            System.out.println(i+"\t\t"+customer.getCustName()+"\t\t"+customer.getCustIdCard()+"\t\t"+customer.getCustMoney());
            i++;
        }
        adminManger();
    }
//管理员储汇界面
    private void totalMoney() {
        System.out.println("当前存储总金额为"+customerServiceimpl.totalCusMoney());
        retunBack();
    }
//添加顾客界面
    private void addCsutom() {
        Customer customer = new Customer();
        System.out.println("请输入顾客名字");
        customer.setCustName(scanner.next());
        System.out.println("请输入顾客卡号");
        customer.setCustNumber(scanner.next());
        System.out.println("请输入顾客身份证");
        customer.setCustIdCard(scanner.next());
        System.out.println("请输入顾客开户金额");
        customer.setCustMoney(scanner.nextDouble());
        System.out.println("请输入初始密码");
        customer.setCustPwd(scanner.next());
        customer.setCustDate(new Date());
        int i = customerServiceimpl.addCustom(customer);
        if (i > 0) {
            System.out.println("添加成功");
        }else {
            System.out.println("未添加成功");
        }
       retunBack();
    }
//返回管理员主菜单页页面
    private void retunBack() {
        System.out.println("1.返回管理员主菜单         0.退出系统:0");
        int m = scanner.nextInt();
        switch (m) {
            case 1:
                bankSystem();
                break;
            case 2:
                System.out.println("谢谢使用");
                exit(0);
                break;
            default:
                System.out.println("您已退出系统");
                exit(0);
        }
    }
}

11.项目结构:

总结:动态查询和动态修改是真的很方便,后面很多功能用这两个就够了。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值