课 程 设 计
课程名称: 数据结构课程设计 设计课题1:常用排序算法的实现及比较与分析 设计课题2: 求最长公共子串 指导教师: 陈 新
总评成绩:
专业: 计算机科学与技术 班级: 1382061 姓名: 张迪 学号: 138206101
二O一五年 五 月 七 日
一、程序目标及功能
1.1 程序目标
1、封装一个Account类 - 业务数据
(1)写一个账户类(Account),属性并且完全封装: id:账户号码 长整数(Long) password:账户密码 字符串类型(String) name:真实姓名 字符串类型(String) personId:身份证号码 字符串类型(String) email:客户的电子邮箱 字符串类型(String) balance:账户余额 双精度(double) 方法: deposit: 存款方法,参数类型:double, 返回类型:Account withdraw:取款方法,参数类型:double, 返回类型:Account 构造方法: 有参和无参,有参构造方法用于设置必要的属性. 2、完成以下两种账户类型的编码
银行的客户分为两大类:储蓄账户(SavingAccount)和信用账户(CreditAccount),两种的账户类型的区别在于:储蓄账户不允许透支,而信用账户可以透支,并在用户在满足银行条件的情况下允许用户调整自己的透支额度。 注意:
(1)、CreditAccount需要多一个属性 ceiling 透支额度
(2)、CreditAccount需要覆盖(重写)Account中的取款方式withdraw() 3、完成Bank类的编码。 属性:
1)、当前所有的账户对象的信息,存放在集合中:List. 2)、当前账户数量index. 方法:
(1)用户开户(register)
参数列表: Long 账号, String密码, String确认密码,String 姓名,String身份证号码,String邮箱,int 账户类型;
(Long id, String password, String repassword, String name, String personID, String email, int type)
返回类型:Account
项目需求规定账户类型:0 – 储蓄账户 1 – 信用账户 2 – 可贷款储蓄账户 3– 可贷款信用账户
(2)用户登录(login)
参数列表: Long 账号, String密码; (Long id, String password) 返回类型:Account (3)用户存款(deposit)
参数列表: Long 账号, double存款金额; (Long id, double money) 返回类型:Account
(4)用户取款(withdraw)
参数列表: Long 账号,String 密码,double取款金额; (Long id, String password, double money) 返回类型:Account
(5)设置透支额度(updateCeiling)
参数列表: Long 账号, String 密码,double透支额度金额; (Long id, String password, double money) 返回类型:Account
提示:这个方法需要验证账户是否是信用账户 (6)转账功能(transfer)
参数:from转出账户,passwordFrom 转出账号的密码,to转入账户,money转账的金额 (Long from, String passwordFrom, Long to, double money) 返回值:boolean
4、另外,请为Bank类添加几个统计方法
(1)统计银行所有账户余额总数 (2)统计所有信用账户透支额度总数 5、编写测试类(不需要写)
写个测试类,测试以上代码能否正常工作。 6、覆盖toString方法
查看对象的内容
7、让银行来提供账号(id)的生成
修改Account类和Bank类,银行用户的账号(id)应是自动生成的,初始值为: 862150212013020001(国家+邮编+年+月+序号)。
比如:第一个开户的账号为862150212013020001,第二开户的账号为862150212013020002 … 依此类推. 8、修改存款和取款方法
对于Account类中的存款方法和取款方法进行修改. 存款方法:改为不允许子类修改
取款方法:改为抽象方法,便于在子类中去覆盖(重写) 9、单例
将Bank类作成单例。 10、新增一个贷款功能
为了满足业务发展的需求,银行需要为用户提供贷款的功能,来满足更多的用户需求。 抽象出一个贷款功能的接口:Loanable 该接口具有以下功能:
贷款(requestLoan) 参数:money贷款金额 返回类型:Account 还贷(payLoan)
参数:money还贷款金额 返回类型:Account
11、新增两种的新的账户类型
为了满足业务发展的需求,新增两种具有贷款功能的账户类型:可以贷款不可以透支账户和可以贷款可以透支账户;
为SavingAccount和CreditAccount各自添加一个子类LoanSavingAccount类和LoanCreditAccount类,同时让两个新增的子类都必须要实现Loanable接口。为了表示某个贷款账户的贷款金额,需要为所有的可贷款账户提供一个能记录贷款金额,所以要为CreditAccount类整一个普通的成员属性loanAmount,为长整形(long)。
说明1: LoanSavingAccount类表示该账户可以贷款,不可以透支;
LoanCreditAccount类表示该账户可以贷款,可以透支。
说明2:贷款和透支是不一样的,透支指的是账户余额小于0,而贷款用户需要一个贷款额的属性.
在ATM机上,用户可以选择贷款,也可以选择还贷款,而还贷款就是要把账户余额上的资金转到贷款额上 例如:用户余额10000元,贷款额100000元,用户可以选择还款5000元,则用户余额变为5000,贷款额变为95000元.
12、为Bank类添加三个新方法 贷 款(requestLoan)
参数:id 账户,money贷款金额 (Long id , double money)
返回类型:Account 还贷款(requestLoan)
参数:id 账户,money还贷款金额 (Long id , double money)
返回类型:Account
统计所有账户贷款的总额(totoal)
参数:无
返回类型:double
13、为Bank类添加一个方法,能够打印所有用户的总资产排名(提高部分)
说明: 1)、一个用户可能会有多个账号,以身份证号为准.
2)、总资产指多个账户余额的总和,不需要考虑贷款账户的贷
1.2 系统功能
本系统功能有:
1、用户开户与登录:用户输入用户化信息可以注册帐号,可以登入系统 2、ATM存款:用户输入金额可将金额存入
3、ATM取款:用户可以从ATM中取出所需的金额
4、转账功能:用户输入金额可以将金额转给其他用户的账户上 5、贷款功能:用户可以进行贷款
6、还贷功能:用户可以对贷款进行还贷
7、资产排名功能:对用户所用户的所有资产进行排名
1.3 设计要求
1、为本系统建立一个模型
2、模型的数据类型以及数据规则要符合实际要求 3、提供相应的接口与实现类以及方法
4、实现存款、取款、贷款、转账、还贷、排名等功能 5、将用户信息保存到TXT文件中
二、程序功能模块组成及流程图
2.1系统功能模块
1、用户注册:
用户输入用户名、密码、身份证号码、电子邮箱等信息,系统会为用户自动创建一个帐号,并将用户的信息记录在TXT文件中,系统中记录用户信息。 2、登录模块:用户输入帐号与密码,如果核对成功则进入系统。
3、存款模块:用户进入系统之后,选择存款选项,进入存款功能,用户再输入存款金额则可以进行存款。
4、取款模块:用户进入系统之后,选择取款选项,进入去款功能,用户再输入取款金额则可以进行取款。
5、转账模块:用户进入系统之后,选择转账选项,进入转账功能,用户再输入转入用户的帐号,之后输入金额则可以进行转账。
6、贷款模块:用户进入系统之后,选择贷款选项,进入贷款功能,用户再输入贷款金额则可以进行贷款。
7、还贷模块:用户进入系统之后,选择还款选项,进入还款功能,用户再输入还款金额则可以进行还款。
8、资产排名模块:用户进入系统之后,选择资产排名选项,用户则可浏览资产排名。
2.2各模块流程图
1、用户注册流程图:
开始 密码、确认密码、身份证号、邮箱 两次密码是否一致 注册失败 注册成功 进入系统 结束 图2.2-1:用户登录流程图