银行账户管理系统课程设计报告.docx
- 文档编号:3511400
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:26
- 大小:361.98KB
银行账户管理系统课程设计报告.docx
《银行账户管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《银行账户管理系统课程设计报告.docx(26页珍藏版)》请在冰豆网上搜索。
银行账户管理系统课程设计报告
课程设计
课程设计名称:
java课程设计
专业班级:
计科13级03班
************************
学号:
************
********
课程设计时间:
2015.6.22-2015.7.3
计算机科学技术专业课程设计任务书
学生姓名
余金梁
专业班级
计科F1303
学号
201316010319
题目
银行帐户管理系统
课题性质
工程设计
课题来源
自拟课题
指导教师
王社伟
同组姓名
无
主要内容
设计一个银行账户管理的模拟系统。
用户开户后,拥有一定的信用额度,除了传统的存款,取款,转账等业务外,在信用额度内用户还可以进行透支操作。
功能要求:
银行帐户的增加、删除、修改、查询、浏览;存款、取款、转账、透支等各种操作;
任务要求
1.综合运用所学的JAVA程序设计基本知识,并能通过查阅相关文献材料,独立完成该课题的设计开发工作。
2.要求根据本课题设计合理的数据结构,并实现
添加帐户信息
删除帐户信息
修改帐户信息
浏览帐户信息
存款⑥取款⑦转账等功能模块。
3.按照课程设计上机安排,在规定时间上机,上机考勤情况计入总成绩。
4.结合设计和开发内容,完成课程设计报告。
要求语言表达逻辑合理,图表清晰,准确表达课程设计内容和结果。
参考文献
[1]耿祥义、张跃平.JAVA2实用教程(修定),清华大学出版社,2001.10
[2]袁然、郑自国等著.java案例开发集锦,电子工业出版社,2005.9
[3]刘继承,王社伟等.Java程序设计及实验,清华大学出版社,2012.9.
[4]赵付青等.Java面向对象程序设计,国防工业出版社,2010.2
审查意见
指导教师签字:
王社伟
教研室主任签字:
史卫亚
2015年6月15日
银行帐户管理系统
一、需求分析
银行账户管理系统中,主要有以下功能:
1.添加账户:
主要增加账户的账号,姓名,类型以及所存的金额。
2.登陆账户:
根据输入的账号以及密码,验证判断其账户的类型以进行操作。
3.存款:
输入账号,并向该账号存钱。
4.取款:
输入账号和密码,根据不同类型的账户进行取款或者透支取款。
5.转账:
输入账号和密码,并向另外一个存在的账号转账。
6.查询账户余额:
根据输入的账号和密码,查询并显示出该账户的剩余金额。
二、概要设计
图1系统模块流程图
三、运行环境、开发语言
运行环境:
Windows8.1,DOS,Eclipse
开发语言:
Java
四、详细设计
1程序清单
表1ATM类
方法
功能
voidmain()
系统主函数
ATM()
用户界面操作
表2Bank类
方法
功能
openAccount()
添加新账户
saveAccountDate()
保存数据
verifyAccount()
验证账户
transferAccount()
转账
表3SavingAccount类
方法
功能
SavingAccount()
设置储蓄卡账户
voidwithdraw()
储蓄卡账户取钱
表4CresitAccount类
方法
功能
CreditAccount()
设置信用卡账户
Ceiling()
信用额度
voidwithdraw()
信用卡账户取钱
表5Account类
方法
功能
voiddeposit()
存款
getxx()setxx()
获取及操作
2主要代码
2.1ATM类
进入银行账户管理系统,进行操作。
图2:
银行账户管理系统主界面
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.util.Properties;
importjava.util.Scanner;
publicclassATM{
//属性
privateBankbank;
//构造函数
publicATM(){
bank=newBank();
}
//main方法
publicstaticvoidmain(String[]args){
ATMatm=newATM();//实例化ATM
Bankbank=atm.bank;
//标号,判断是否退出一级菜单
booleanfirstFlag=true;
while(firstFlag)
{//一级菜单
System.out.println("******欢迎使用XXX银行模拟ATM系统,请按如下步骤操作******");
System.out.println("*1.用已有账户登录");
System.out.println("*2.没有账户,开户");
System.out.println("*3.退出");
Scannerscanner=newScanner(System.in);
System.out.print("请选择:
");
try{
intchoice1=scanner.nextInt();
switch(choice1)
{
case1:
scanner=newScanner(System.in);
System.out.print("请输入银行卡号:
");
longid=scanner.nextInt();
scanner=newScanner(System.in);
System.out.print("请输入银行密码:
");
Stringpassword=scanner.next();
Accountaccount=bank.verifyAccount(id,password);
if(account!
=null)
{//标号,判断是否退出二级菜单
booleansecondFlag=true;
while(secondFlag)
{//二级菜单
System.out.println("******欢迎使用XXX银行模拟ATM系统,请按如下步骤操作******");
System.out.println("*1.查询账户余额");
System.out.println("*2.存款");
System.out.println("*3.取款");
System.out.println("*4.转账");
System.out.println("*5.退卡");
scanner=newScanner(System.in);
System.out.print("请选择:
");
try{
intchoice2=scanner.nextInt();
switch(choice2)
{
case1:
System.out.println("您账户的当前余额为:
"+account.getBalance());
break;
case2:
scanner=newScanner(System.in);
System.out.print("请输入您的存款金额:
");
doublemoney1=scanner.nextDouble();
bank.deposit(account,money1);
break;
case3:
scanner=newScanner(System.in);
System.out.print("请输入您的取款金额:
");
doublemoney2=scanner.nextDouble();
bank.withdraw(account,money2);
break;
case4:
scanner=newScanner(System.in);
System.out.print("请输入您要转入账户的卡号:
");
longid2=scanner.nextLong();
Accountaccount2=bank.verifyAccount(id2);
if(account2!
=null)
{
scanner=newScanner(System.in);
System.out.print("请输入您要转入账户的金额:
");
doublemoney=scanner.nextLong();
if(money<=account.balance)
{
bank.transferAccount(account,account2,money);
System.out.println("转账成功");
}
else
{
System.out.println("抱歉,您账户没有足够的金额!
请查看后重新选择输入!
");
}
}
else
{
System.out.println("抱歉,没有找到您要转入的账户信息!
请核对后重新选择输入!
");
}
break;
case5:
secondFlag=false;
break;
default:
System.out.println("没有该选项,请重新选择!
");
break;
}
}catch(Exceptione){
System.out.println("选择输入不合法,请重新选择!
");
}
}
}
else
{
System.out.println("没有此账户,请先开户!
");
}
break;
case2:
//账号id由银行自动提供(从1001递增)
scanner=newScanner(System.in);
System.out.print("请输入账户密码:
");
Stringpasswd1=scanner.next();
scanner=newScanner(System.in);
System.out.print("请再输入账户密码:
");
Stringpasswd2=scanner.next();
scanner=newScanner(System.in);
System.out.print("请输入户主姓名:
");
Stringname=scanner.next();
scanner=newScanner(System.in);
System.out.print("请输入户主身份证号码:
");
StringpersonId=scanner.next();
scanner=newScanner(System.in);
System.out.print("请输入账户类型(0储蓄,1信用):
");
inttype=scanner.nextInt();
bank.openAccount(passwd1,passwd2,name,personId,type);
break;
case3:
bank.saveAccountDate();
firstFlag=false;
break;
default:
System.out.println("没有该选项,请重新选择!
");
break;
}
}catch(Exceptione){
System.out.println("选择输入不合法,请重新选择!
");
}
}
System.out.println("谢谢使用!
");
}
}
2.2Bank类
对系统添加新账户,登陆已有账户,进行操作。
图3添加或登陆账户页面
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileNotFoundException;
importjava.io.FileReader;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.util.Properties;
publicclassBank{
privateAccount[]accounts=newAccount[20];
privateintnumber;//账户数目
privateintid=1001;//确定银行账号从1001开始生成,即第一个账户的账号是1001
//构造函数
publicBank(){
accounts=newAccount[20];//以后不足时扩容。
number=0;
BufferedReaderbufReader=null;
Propertiesprops=System.getProperties();
Stringpath=props.getProperty("user.dir");
try{
bufReader=newBufferedReader(newFileReader(newFile(path,"account.txt")));
Strings=bufReader.readLine();
while(s!
=null){
String[]str=s.split(",");
if(str[4].equals("0"))
{
AccountsavingAcc=newSavingAccount(Long.parseLong(str[0]),
str[1].toString(),str[2].toString(),
str[3].toString(),Integer.parseInt(str[4]),
Double.parseDouble(str[5]));
accounts[number]=savingAcc;
}
else
{
AccountcreditAcc=newCreditAccount(Long.parseLong(str[0]),
str[1].toString(),str[2].toString(),
str[3].toString(),Integer.parseInt(str[4]),
Double.parseDouble(str[5]),5000);
accounts[number]=creditAcc;
}
number++;
id++;
s=bufReader.readLine();
}
}catch(NumberFormatExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
if(bufReader!
=null)
{
bufReader.close();
}
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
//getXxx,setXxx
publicAccount[]getAccounts(){
returnaccounts;
}
publicvoidsetAccounts(Account[]accounts){
this.accounts=accounts;
}
publicintgetNumber(){
returnnumber;
}
publicvoidsetNumber(intnumber){
this.number=number;
}
publicintgetId(){
returnid;
}
publicvoidsetId(intid){
this.id=id;
}
/**
*开户
*/
publicAccountopenAccount(Stringpasswd1,Stringpasswd2,Stringname,
StringpersonId,inttype){
//创建一个新账户
Accountaccount=null;
//判断两次密码是否一致
if(passwd1.equals(passwd2)){
//若一致,再判断账户类型(根据type的值)
if(type==1){
//可令开始余额为10,信用额度为5000
account=newCreditAccount(id,passwd1,name,personId,type,10,5000);
}
else
{
account=newSavingAccount(id,passwd1,name,personId,type,10);
}
//将账户存入账户数组accounts[]中
//判断是否超出存储空间
if(number>=accounts.length)
{//扩容
Account[]newAccounts=newAccount[accounts.length*2];
//copy原来的相关数据
System.arraycopy(accounts,0,newAccounts,0,accounts.length);
//将newAccounts[]赋给accounts[]
accounts=newAccounts;
accounts[number]=account;
}
else
{
accounts[number]=account;
}
System.out.println("开户成功账户信息见下");
System.out.println("您的卡号为:
"+id+"\n"+"您的密码为:
"+passwd1+"\n"+"您的户名为:
"+name+"\n"+"您的身份证号为:
"+personId+"\n"+"您的账户类型为:
"+type+"\n");
account.accountType=type;
number++;
id++;
returnaccount;//此时开户成功
}
else
{
System.out.println("对不起!
您两次密码输入不匹配,开户失败");
returnnull;//此时开户失败
}
}
/**
*保存数据
*/
publicvoidsaveAccountDate(){
BufferedWriterbufWriter=null;
try{
Propertiesprops=System.getProperties();
Stringpath=props.getProperty("user.dir");
bufWriter=newBufferedWriter(newFileWriter(newFile(path,"account.txt")));
for(inti=0;i {//若存在账户 if(accounts[i]! =null) { //写入账户信息到account.txt bufWriter.write(accounts[i].id+","); bufWriter.write(accounts[i].getPassword()+","); bufWriter.write(accounts[i].getName()+","); bufWriter.write(accounts[i].getPersonId()+","); bufWriter.write(accounts[i].getAccountType()+","); bufWriter.write(Double.toString(accounts[i]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行 账户 管理 系统 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)