辽工大ava6程序设计项目文档1记事本ATM提款机.docx
《辽工大ava6程序设计项目文档1记事本ATM提款机.docx》由会员分享,可在线阅读,更多相关《辽工大ava6程序设计项目文档1记事本ATM提款机.docx(18页珍藏版)》请在冰豆网上搜索。
辽工大ava6程序设计项目文档1记事本ATM提款机
软件学院
课程设计报告书
课程名称面向对象课程设计
设计题目ATM取款模拟机
专业班级软件(13)7班
组员王欣鸿、徐越、杨钰吉、苟永浩
指导教师史庆伟
2015年6月
目录
1设计时间1
2设计目的1
3设计题目1
4设计任务1
5设计内容1
5.1需求分析1
5.2总体设计2
5.2.1类之间的关系2
5.3程序代码3
6运行与测试9
7总结与展望13
参考文献14
成绩评定14
1设计时间
2015年6月14日-2015年6月16日
2设计目的
《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。
其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。
3设计题目
模拟ATM取款机
4设计任务
设计ATM取款机
实现JAVA程序的新建账户、存款、取款、转账、查询余额、修改密码等操作。
5设计内容
5.1需求分析
ATM取款机可以新建一个账户,并且实现转账操作,但账户主人是同一个人,可以对各个账户进行查询余额、存款、取款、修改密码等基本操作。
并且退出后需要重新校验密码,重新登陆。
5.2总体设计
5.2.1类之间的关系
图5-2-1
5.3程序代码
importjava.util.*;
publicclassATM{
publicstaticvoidmain(String[]args){
ATMCb=newATMC();
Scannerinput=newScanner(System.in);
intchoise=0;
booleanbb=true;
while(bb)
{b.LogOn();
menu:
while(true)
{
System.out.print("ATM取款机模拟系统\n");
System.out.print("[1]为此用户创建新卡\n");
System.out.print("[2]修改密码\n");
System.out.print("[3]存钱\n");
System.out.print("[4]取钱\n");
System.out.print("[5]转账\n");
System.out.print("[6]查询余额\n");
System.out.print("[7]返回菜单\n");
System.out.print("[8]退出\n");
System.out.print("请选择相关序号完成操作:
\n");
choise=input.nextInt();
switch(choise)
{
case1:
b.BuildNewCard();
break;
case2:
b.ChangePassword();
break;
case3:
b.SaveMoney();
break;
case4:
b.GetMoney();
break;
case5:
b.TransMoney();
break;
case6:
b.CheckCount();
break;
case7:
breakmenu;
case8:
System.out.println("已经退出系统");
System.exit(0);
break;
}
}
}
}
}
classATMC
{
intcount;
privatecardUsingCard;
cardhead;
cardlast;
cardtemp;
Scannerinput;
ATMC()
{
head=newcard();
head.CardId=123456;
head.Money=10000;//给出第一张卡密码等信息
head.Password=123456;
head.next=null;
last=head;
this.count++;
input=newScanner(System.in);
}
booleanLogOn()//登陆
{
inttime=0;//计算错误次数
cardid;
System.out.println("请输入卡号:
\n");
intCardId=input.nextInt();//输入卡ID
if((temp=SearchCard(CardId))==null)//检查卡ID
{
returnfalse;//ID卡不存在
}
time=0;
System.out.println("请输入密码:
\n");
if(!
CheckPassword(temp,input.nextInt()))//匹配密码
{
returnfalse;//密码正确
}
UsingCard=temp;
returntrue;//密码不正确
}
voidBuildNewCard()//建立新卡
{
intPassword=0;
while(true)
{
System.out.println("申请新卡请创建密码:
\n");
while((Password=input.nextInt())%111111==0)//检查新密码
{
System.out.println("创建密码无效!
请重新输入:
\n");
//password=input.nextInt();
}
System.out.println("请再次输入密码:
\n");
if(Password==input.nextInt())
{
break;
}
System.out.println("两次输入的密码不一致,请重新输入!
!
!
!
!
\n");
}
temp=newcard();
temp.CardId=123456+count;
temp.Money=0;
temp.Password=Password;
temp.next=null;
last.next=temp;
last=last.next;
System.out.println("创建成功!
\n");
System.out.println("新卡ID:
\n"+temp.CardId+"\n\n\n");
this.count++;
}
voidSaveMoney()//存钱
{
intMoney=0;
System.out.println("存入钱数:
\n");
while((Money=input.nextInt())%100!
=0||Money<0)//检查钱数
{
System.out.println("输入有误,请重新输入!
\n");
}
UsingCard.Money+=Money;
//检测通过后存钱
System.out.println("成功存款"+Money+"元\n\n\n");
}
voidGetMoney()//取钱
{
intMoney=0;
System.out.println("取出钱数:
\n");
while((Money=input.nextInt())%100!
=0||Money<0||Money>5000||Money>UsingCard.Money)//检查钱数
{
System.out.println("输入有误,请重新输入!
\n");
}
UsingCard.Money-=Money;//取钱数
System.out.println("成功取款"+Money+"元\n\n\n");
}
booleanChangePassword()//改密码
{
intPassword;
System.out.println("输入原密码:
\n");
if(!
CheckPassword(UsingCard,input.nextInt()))//检查登陆密码
{
returnfalse;
}
System.out.println("输入新密码:
\n");
while((Password=input.nextInt())%111111==0||Password<=100000||Password>999999)
{
System.out.println("创建密码无效!
请重新输入:
\n");
}
System.out.println("再次输入:
\n");
if(Password!
=input.nextInt())
{
System.out.println("两次输入密码不一致,修改失败\n");
returnfalse;
}
UsingCard.Password=Password;
System.out.println("密码修改成功\n\n\n");
returntrue;
}
cardSearchCard(intCard)//寻找卡的ID
{
inttime=0;
while(time<=3)//3次输入机会
{
temp=head;
while(temp!
=null)
{
if(temp.CardId==Card)
{
returntemp;
}
temp=temp.next;
}
System.out.println("卡ID不存在!
\n请输入正确的ID:
");
Card=input.nextInt();
time++;
}
returnnull;
}
booleanCheckPassword(cardcard,intPassword)//检查密码是否正确
{
inttime=0;
while(time<=3)//3次机会重新输入
{
if(card.Password==Password)
{
returntrue;
}
System.out.println("密码不正确....请重新输入.....");
Password=input.nextInt();
time++;
}
System.exit(0);
returnfalse;
}
booleanTransMoney()
{
intMoney=0,Id=0;
System.out.println("输入转出钱数:
\n");
while((Money=input.nextInt())>UsingCard.Money||Money<0)//检查钱数
{
System.out.println("输入有误!
!
!
");
}
System.out.println("输入收款人ID:
\n");
if((temp=SearchCard(input.nextInt()))==null)//检索将要改变数据的卡
{
System.out.println("输入错误,系统没有找到卡!
!
!
");
returnfalse;
}
temp.Money+=Money;
UsingCard.Money-=Money;
System.out.println("成功转账"+Money+"元");
System.out.println("当前用户余额为:
"+UsingCard.Money+"\n\n\n");
returntrue;//改变钱数
}
voidCheckCount()//显示卡的基本信息
{
System.out.println("ID:
\n"+UsingCard.CardId+"余额:
\n"+UsingCard.Money+"\n\n\n");
}
}
classcard
{
intMoney;
intCardId;
intPassword;
cardnext;
}
6运行与测试
创建新卡
修改密码
查询余额
存款
取款
转账
返回菜单
退出
7总结与展望
通过本次课程设计我学会了JAVA语言中的类的编写,初次根据书上的代码实现某些具体的功能,通过编写这个模拟取款机程序,我学会了选择分支结构的方法的编写,通过ATM类的拓展来调用其他类的拓展,如ATMC类,这次编写程序时并不是很顺利,我查阅了很多资料,根据不同的程序总结出了这个程序的思路,可以说是用其他程序拼接出来的,不过最终经过与同组同学的讨论得出了这的程序代码。
今后我们会加倍努力的学习JAVA语言争取能过有独立的编写思路,形成一套属于自己的风格和方式,要加强对某些类的熟悉程度,因为这次我们大多数是按照书边理解边写出来的,所以这在一定程度上也影响了此次课程设计的总体效率。
参考文献
[1]屈辉立,陈可明,石武信.JSP网站编程教程[M].第1版,北京:
北京希望电子出版社,2005
[2]刘万军等人,Java6程序设计实践教程[M],北京:
清华大学出版社,2006
成绩评定
成绩教师签字