1. Certificate of Deposit , Bank Slip and Bank Book or official Bank Statement. 存款证明, 银行存单,存折,或正式的银行

本文详细介绍了金融领域的基础概念,包括存款证明、银行存单、存折以及正式的银行对账单。这些工具在日常银行交易中扮演着重要角色,帮助用户了解自己的资金流动情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. Certificate of Deposit , Bank Slip and Bank Book or official Bank Statement.
存款证明, 银行存单,存折,或正式的银行对账单. 
项目名称:Bank Account Management System 银行账户管理系统 简称BAM 项目描述:这是一个基于C/S结构的银行账户在线管理系统,用户可以通过ATM终端界面来操作自己的银行账户. 项目实施方式:这是一个同步练习,随着达内CoreJava课程的深入,这个项目将趋于完整,学员的任务是随着知识点的深入,完成每一个进阶的项目要求. 项目一 练习1:(面向对象基础语法) 写一个账户类(Account),属性: id:账户号码 长整数 password:账户密码 name:真实姓名 personId:身份证号码 字符串类型 email:客户的电子邮箱 balance:账户余额 方法: deposit: 存款方法,参数是double型的金额 withdraw:取款方法,参数是double型的金额 构造方法: 有参和无参,有参构造方法用于设置必要的属性 练习2:(封装) 将Account类作成完全封装,注意:要辨别每个属性的set/get方法是否需要公开 练习3:(继承,多态) 银行的客户分为两类,储蓄账户(SavingAccount)和信用账户(CreditAccount),区别在于储蓄账户不允许透支,而信用账户可以透支,并允许用户设置自己的透支额度. 注意:CreditAccount需要多一个属性 ceiling 透支额度 为这两种用户编写相关的类 同时要求编写Bank类,属性: 1.当前所有的账户对象的集合,存放在数组中 2.当前账户数量 方法: 1.用户开户,需要的参数:id,密码,密码确认,姓名,身份证号码,邮箱,账户类型(int),返回新创建的Account对象 2.用户登录,参数:id,密码 返回Account对象,提示 用s1.equals(s2)判断s1和s2两个字符串内容是否相等 3.用户存款,参数:id,存款数额,返回修改过的Account对象 4.用户取款,参数:id,取款数额,返回修改过的Account对象 5.设置透支额度 参数:id,新的额度 ,返回修改过的Account对象.这个方法需要验证账户是否是信用账户 用户会通过调用Bank对象以上的方法来操作自己的账户,请分析各个方法需要的参数 另外,请为Bank类添加几个统计方法 1.统计银行所有账户余额总数 2.统计所有信用账户透支额度总数 写个主方法测试你写的类 项目二 练习4:(语言高级特性,三个修饰符) 1.修改Account类,银行用户的账号(id)是自动生成的,初始值为100000,第一个开户的用户id为100001,第二个为100002,依此类推. 提示:构造对象的时候采用static属性为id赋值 2.对于Account类,有两个方法,存款方法和取款方法,请修改这两个方法. 存款方法改为不允许子类修改 取款方法根据不同的子类而不同,因此,改为抽象方法,在两个子类中分别实现 3.Bank类作成单例 项目三 练习5:(接口) 为SavingAccount和CreditAccount各自添加一个子类 LoanSavingAccount类:用户可以贷款,不可以透支 LoanCreditAccount类:用户可以贷款,可以透支 说明:贷款和透支是不一样的,透支指的是账户余额小于0,而贷款用户需要一个贷款额的属性. 在ATM机上,用户可以选择贷款,也可以选择还贷款,而还贷款就是要把账户余额上的资金转到贷款额上 例如:用户余额10000元,贷款额100000元,用户可以选择还款5000元,则用户余额变为5000,贷款额变为95000元. 利用接口来抽象出LoanSavingAccount类和LoanCreditAccount类的共性 接口中的方法: requestLoan:贷款 payLoan:还贷 getLoan:获取用户贷款总额 为Bank类添加三个方法, 贷款:参数 id,贷款额,返回修改过的Account对象 还贷款:参数 id,还款额,返回修改过的Account对象 统计所有账户贷款的总数 练习6:(Object) 为Account类及其子类添加toString方法和equals方法 项目四 练习7:(Exception) 为BAM添加几个异常类 BalanceNotEnoughException :用于取钱的时候余额不足的情况(包括账户余额超过透支额的情况) RegisterException:用于开户异常的情况,例如密码两次输入不一致等情况 LoginException:用户登录异常的情况,例如id错误,密码错误 LoanException:贷款额不能为负数,如果用户试图将贷款额置为负数,则会抛出这个异常 以上四个异常类有一个共同的父类 BusinessException 并妥善的处理这些异常 项目五 练习8:(集合) 改写Bank类,采用集合的方式来管理多个Account对象 为Bank类添加一个方法 打印所有用户的总资产排名 说明:一个用户可能会有多个账号,以身份证号为准.总资产指多个账户余额的总和,不需要考虑贷款账户的贷款额 项目六 练习9:(GUI) 为BAM添加用户界面 需要以下几个类: BAMClient 其中会包含一个Frame,这是用户主界面 MainPanel:主界面,用户可以选择开户者登录 RegisterPanel:用户开户具体用到的界面 LoginPanel:用户登录需要的界面 BusinessPanel:界面上会显示账户的功能 至少包括存款和取款,对于可透支的用户,还允许用户修改透支额度,对于贷款用户,还允许用户贷款和还贷款 注:本练习的界面布局不做要求,请阅读现有代码,添加事件处理代码 提示:在开户者登录之后都会跳到BusinessPanel,而用户点击了交易之后,界面停留在BusinessPanel 要随时注意在BusinessPanel上根据数据的变化更新显示信息 项目七 在该加资源保护的地方加上,没有标准 项目八 练习10:(I/O) 修改Bank类,账户信息会采用对象序列化的方式存放在文件中.Bank对象生成的时候会读取文件,设置账户集合.当账户信息改变的时候,会随时更新文件 设计一个FileDAO类(文件数据访问对象),负责对文件的访问,包括存放账户,提取账户等方法,在Bank类中,会通过FileDAO对象来访问文件 注意:如果已有的账户对象会存在文件中,那么为新的账户对象分配id的做法也应相应的改变,过去的用static属性的做法不再合适,应该改为,把下一个可用的id存放在一个文件中,每创建一个新对象的时候都会读取这个文件,获得新对象的id,并且修改文件中的id,使其加1.这个工作可以放在Account类的构造方法中 项目九 练习11:(网络) 在现有的BAM中,用户是通过界面直接访问Bank对象的,将其改为C/S结构,由界面充当客户端,通过TCP协议访问服务器端的Bank对象. 提示:客户端和服务器端需要通过对象来传递信息,这里会使用对象序列化技术.
<think>好的,我现在需要解决用户的问题:使用SQL找出所有没有存款的储户信息,涉及的表有bk.depositor、bk.deposit和bk.bank。首先,我得理清楚这三张表的关系和结构。 用户提到的表名bk.depositor应该是储户信息表,里面可能有身份证号(pid)、姓名(pname)等字段。bk.deposit存单表,记录存款信息,应该包含存款账号(did)、储户身份证号(pid)、银行编号(bid)、金额(amount)、时间(dtime)等。bk.bank银行信息表,包含银行编号(bid)、名称(bname)、所在城市(city)等。 用户的问题是要找出没有存款的储户,也就是在depositor表中存在,但在deposit表中没有对应记录的储户。这时候,应该想到使用左连接(LEFT JOIN)来连接depositordeposit表,然后筛选出那些在deposit表中对应记录为NULL的行。因为LEFT JOIN会返回左表(depositor)的所有记录,即使在右表(deposit)中没有匹配。如果右表中没有匹配,相关字段会是NULL,这样就可以通过WHERE条件来过滤。 不过用户还提到了bk.bank表,可能需要关联银行信息。但问题是要找的是没有存款的储户,这时候是否需要关联银行表呢?如果只是为了获取储户的基本信息,可能不需要银行信息,但用户可能希望结果中包含储户相关的银行信息,者可能题目要求中需要涉及所有三张表。这时候可能需要进一步分析。 假设用户希望即使没有存款记录,也要显示储户的信息,可能不需要银行表的数据,因为没有存款的话,储户在deposit表中没有记录,自然也无法连接到bank表。但如果是希望显示储户的信息以及可能的银行信息(如果有的话,但这里是没有的情况),可能需要不同的处理方式。但通常情况下,没有存款的储户在deposit表中没有记录,所以关联bank表可能没有意义,除非储户有其他关联银行的方式,比如储户可能有默认银行,但根据提供的表结构,可能没有这样的字段。因此,可能只需要depositordeposit表即可,bank表可能不需要参与。 但用户明确提到了三张表,所以可能需要考虑是否需要检查储户是否在某个银行没有存款者是否有其他关联。这时候可能需要更仔细的分析。不过根据常规逻辑,查找没有存款的储户只需要depositordeposit表,因为存款信息在deposit表中,而bank表只是提供银行的具体信息,和储户是否有存款没有直接关系,除非存款必须关联到某个银行,但储户没有存款的话,自然也没有对应的银行记录。 因此,正确的做法应该是使用depositor左连接deposit,然后筛选出deposit中pid为NULL的记录。这里不需要bank表,但用户可能希望即使如此还是包含bank表的信息,者可能题目有其他要求。这时候可能需要确认,但根据常规逻辑,bank表可能不需要参与。 不过用户可能希望展示储户的信息,包括他们可能关联的银行信息,但如果没有存款,他们就不会在deposit表中有记录,也就无法连接到bank表。所以这种情况下,bank表的字段将全部为NULL。是否需要包含这些字段呢?如果用户要求必须使用三张表,可能需要调整查询方式,比如使用LEFT JOIN连接所有三张表,但这样可能会让结果更复杂,实际上没有存款的储户在depositbank表中不会有数据,所以他们的银行相关字段都会是NULL。 但根据用户的问题,可能只需要储户的信息,而不需要银行的信息。因此,可能正确的查询是仅使用depositordeposit表,找出在deposit中没有对应记录的储户。不过用户提到要使用三张表,所以可能需要调整。 可能的解决方案是:使用depositor表左连接deposit表,再左连接bank表,然后筛选出deposit中did为NULL的记录。但bank表的信息在这种情况下也会是NULL,但储户没有存款的话,无法关联到bank表。所以这样的查询可能返回储户信息,而bank相关字段为NULL,这可能符合要求,也可能不需要。 者,用户可能希望即使储户没有存款,也要显示他们可能关联的银行信息,但根据现有表结构,depositor表中可能没有直接关联到bank表的字段,所以无法直接关联。因此,这种情况下,bank表可能无法参与,因为没有关联字段。储户和银行的关联是通过deposit表中的bid和pid来连接的,所以如果储户没有存款记录,就无法连接到bank表。 因此,正确的做法应该是仅使用depositordeposit表,通过LEFT JOIN,然后筛选出deposit中相关字段为NULL的行。这样就能得到没有存款的储户信息。用户提到的bank表可能在这种情况下不需要参与,除非有其他关联方式,但根据常规表结构,可能不需要。 不过用户的问题明确要求使用三张表,所以可能需要重新考虑。也许用户希望即使储户没有存款,也显示银行的信息,但根据现有的表结构,如果没有存款记录,储户和银行之间是没有关联的,所以无法获取银行信息。因此,这种情况下,bank表可能无法关联,导致查询中无法包含bank表的字段。因此,用户的问题可能存在矛盾,者需要进一步澄清。 可能的解释是,用户可能希望列出所有储户,无论是否有存款,同时显示他们的银行信息(如果有的话),但如果没有存款银行信息自然为空。但根据表结构,储户和银行的关联是通过存款记录,即deposit表中的bid和pid,所以没有存款的话,储户和银行之间没有直接关联,无法获取银行信息。因此,bank表在这种情况下无法提供有效信息,所以用户可能需要重新考虑是否必须使用三张表,者是否有其他关联方式。 因此,可能用户的真实需求是只需要depositordeposit表,而bank表可能被误加入,者用户希望即使在没有存款的情况下,也显示储户可能关联的其他银行信息,但这需要表结构中有其他关联字段,比如depositor表中直接有bid字段,但根据之前的问题,可能没有这样的字段。 基于以上分析,正确的SQL应该是使用depositor左连接deposit,然后筛选出deposit中did为NULL的记录,不需要bank表。但用户要求使用三张表,所以可能需要调整。 可能的另一种情况是,用户希望检查储户在某个特定银行没有存款,但问题中没有说明,因此可能需要进一步假设。但根据问题描述,用户需要找出所有没有存款的储户,不管银行如何,因此bank表可能不需要参与。 因此,可能用户的问题中存在对表结构的误解,者需要进一步明确。但根据现有信息,正确的做法是使用depositor左连接deposit,筛选出没有存款记录的储户,无需关联bank表。但用户明确提到要使用三张表,所以可能需要重新考虑。 可能的解决方案是,即使储户没有存款,也左连接bank表,但由于没有关联字段,可能需要使用CROSS JOIN其他方式,但这样会导致结果不正确。因此,可能用户的表结构中存在其他关联方式,比如depositor表中有bid字段,直接关联到bank表,这样即使没有存款,储户也有默认银行。这种情况下,可以左连接depositbank表,但根据之前用户提供的表结构,depositor表可能只有pid和pname,因此这种可能性较低。 综上所述,可能用户的问题中存在矛盾,者需要进一步澄清。但基于当前信息和常规表结构,正确的SQL应仅涉及depositordeposit表,使用LEFT JOIN和WHERE条件筛选出没有存款的储户。然而,由于用户坚持使用三张表,可能需要调整查询,尽管这可能不合理。 另一种可能是,用户希望查询没有在任何银行存款的储户,因此需要关联bank表来确保覆盖所有银行,但这在逻辑上不成立,因为没有存款记录的储户不会出现在deposit表中,无论银行如何。 因此,最终的解决方案应该是: SELECT do.* FROM bk.depositor do LEFT JOIN bk.deposit de ON do.pid = de.pid WHERE de.did IS NULL; 但用户要求使用三张表,所以可能需要加入bank表,尽管这在逻辑上不必要。例如,使用LEFT JOIN两次: SELECT do.* FROM bk.depositor do LEFT JOIN bk.deposit de ON do.pid = de.pid LEFT JOIN bk.bank b ON de.bid = b.bid WHERE de.did IS NULL; 但这样bank表的连接是多余的,因为当de.did为NULL时,de.bid也为NULL,因此b表的字段都会是NULL。但查询结果仍然正确,只是包含了无用的bank表字段,可能用户希望这样。 因此,尽管逻辑上不需要bank表,但为了满足用户要求使用三张表,可以将bank表左连接进去,但实际不影响结果。因此,最终的SQL可能包含三张表,尽管其中两表的连接是冗余的。</think>要查询**没有存款的储户信息**,需通过`bk.depositor`(储户表)、`bk.deposit`(存款表)、`bk.bank`(银行表)三表关联实现。以下是分步解决方案: --- ### **步骤1:明确逻辑关系** - **储户与存款的关联**:`depositor.pid`(储户身份证号)与`deposit.pid`关联 - **存款银行的关联**:`deposit.bid`(银行编号)与`bank.bid`关联 - **目标**:找到`depositor`表中存在,但在`deposit`表中无匹配记录的储户 --- ### **步骤2:使用左连接+空值筛选** 通过`LEFT JOIN`保留所有储户信息,再筛选出无存款记录的储户: ```sql SELECT do.pid, -- 储户身份证号 do.pname, -- 储户姓名 do.contact_info -- 其他储户信息(需替换为实际字段) FROM bk.depositor do -- 储户表(主表) LEFT JOIN bk.deposit de -- 存款表(左连接) ON do.pid = de.pid LEFT JOIN bk.bank b -- 银行表(左连接) ON de.bid = b.bid WHERE de.did IS NULL; -- 关键条件:无存款记录 ``` --- ### **关键说明** 1. **左连接逻辑**: - `LEFT JOIN`会保留`depositor`所有记录,即使`deposit``bank`中无匹配数据。 - 无存款的储户在`deposit`表中对应的`de.did`为`NULL`。 2. **银行表的作用**: - 若需显示储户的**关联银行信息**(如银行名称),即使无存款,需确认`depositor`表是否有直接关联字段(如默认银行)。 - 若表结构未直接关联,当前查询中`bank`表的字段将均为`NULL`(但需根据实际需求决定是否保留)。 --- ### **扩展验证** 1. **检查数据完整性**: ```sql -- 统计无存款的储户数量 SELECT COUNT(*) FROM bk.depositor do LEFT JOIN bk.deposit de ON do.pid = de.pid WHERE de.did IS NULL; ``` 2. **索引优化建议**: ```sql -- 在关联字段上创建索引 CREATE INDEX idx_depositor_pid ON bk.depositor(pid); CREATE INDEX idx_deposit_pid ON bk.deposit(pid); ``` --- ### **最终结果示例** | pid | pname | contact_info | |-------------|-------|--------------| | 110101200001010011 | 张三 | 138****1234 | | 310105199002020022 | 李四 | 139****5678 | **注**:字段名需根据实际表结构调整(如`contact_info`可能是电话号码、地址等)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值