Java课程设计.docx
《Java课程设计.docx》由会员分享,可在线阅读,更多相关《Java课程设计.docx(12页珍藏版)》请在冰豆网上搜索。
Java课程设计
Java
课
程
设
计
报
告
课题名称:
ATM柜员机模拟程序
学号:
2008*****
姓名:
***
班级:
*****
目录
一、课程设计目的:
2
二、选题的设计要求3
三、模块功能及程序说明3
1、Atm(系统)类:
3
2、Account(用户帐户)类4
3、moneyMachine(取钱机)类6
4、readCard(读卡机)类6
5、dataAccess(数据操作)类7
6、atmScreen(ATM屏幕)类7
四、测试结果7
1、进入界面7
2、输入卡号7
3、输入密码8
4、选择业务8
5、取款9
6、查询余额10
7、修改密码10
五、设计体会11
一、课程设计目的:
1、复习、巩固Java语言的基础知识,进一步加深对Java的理解和掌握;
2、将学习Java中的抽象概念与实际动手编程相结合,锻炼学生的分析解决实际问题的能力,培养正确的编程习惯和能力;
3、培养学生自主学习能力、创新意识和创新能力。
二、选题的设计要求
ATM柜员机模拟程序
要求:
使用图形用户界面。
当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:
1、查询余额:
初始余额为10000元
2、ATM取款:
每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
3、ATM存款:
不能出现负存款。
4、修改密码:
新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
三、模块功能及程序说明
1、Atm(系统)类:
系统主方法的开始,负责调用其他类
importjava.sql.*;
importjava.io.*;
importjava.awt.*;
importjava.awt.event.*;
publicclassAtm{
atmScreenatms=newatmScreen();//实例化ATM屏幕类
publicvoidgo(){
atms.mainFram();
}
publicstaticvoidmain(String[]args){//系统主方法,只负责调用
Atmatm=newAtm();
atm.go();
}
}
2、Account(用户帐户)类:
包含用户信息的验证、余额查询和扣钱等方法
importjava.sql.*;
importjava.io.*;
publicclassAccount{
dataAccessdas=newdataAccess();
/*该方法用于修改密码*/
publicintchangePwd(Stringgid,Stringpwd,StringoldPwd,StringnewPwd,StringnewPwd2){
if(newPwd.length()==0||newPwd.trim().equals(""))return-3;//新密码不能为空
elseif(oldPwd.equals(pwd)){
if(newPwd.equals(newPwd2)){
das.exeSql("updateguestsetpwd='"+newPwd+"'wheregid='"+gid+"'");
return1;//密码修改成功}
else{return-2;//两次输入不同}
}
else{return-1;//旧密码输入错误}
}
/*该方法用于验证用户ID*/
publicbooleancheckAccount(Stringtid){
Stringssql;
ssql="select*fromguestwheregid='"+tid+"'";
if(das.getRowcount(ssql)>0){//合法ID
returntrue;
}
else{//非法ID
returnfalse;
}
}
/*该方法用于验证用户密码*/
publicbooleancheckPwd(Stringtid,Stringtpwd){
Stringssql;
ssql="select*fromguestwherepwd='"+tpwd+"'andgid='"+tid+"'";
if(das.getRowcount(ssql)>0){//合法pwd
returntrue;
}
else{//非法pwd
returnfalse;
}
}
/*该方法用于查询余额*/
publicfloatqueryBalance(Stringgid){
ResultSetrs;
Stringssql="select*fromguestwheregid='"+gid+"'";
floatbalance=0;
try{
rs=das.getData(ssql);
rs.next();
balance=rs.getFloat("gmoney");
}
catch(Exceptione){
System.out.println(e.toString());}
finally{returnbalance;}
}
/*该方法用于帐户扣除取款数*/
publicbooleanreduceMoney(Stringtgid,floatmoney){
Stringssql;
if(this.queryBalance(tgid)ssql="updateguestsetgmoney=gmoney-"+money+"wheregid='"+tgid+"'";
if(das.exeSql(ssql))returntrue;//扣款成功
elsereturnfalse;//扣款未成功
}
protectedvoidfinalize(){//析构函数
das.finalize();
}
}
3、moneyMachine(取钱机)类:
只用于打印清单
publicclassmoneyMachine{
publicStringprintBill(floatmoney,Stringgid,floatleftmoney)
{//打印取款清单和余额查询
Stringmsg;
msg="帐号:
"+gid+"";
msg+="操作类型:
取款"+"";
msg+="操作金额:
"+money+"";
msg+="帐号余额:
"+leftmoney+"";
returnmsg;}
}
4、readCard(读卡机)类:
包含读取用户卡号和退卡(退出系统)
publicclassreadCard{
publicvoidexitCard(){//退卡(退出系统)
System.exit(0);}
publicStringgetCardID(StringcarID){//读卡号
returncarID;}
}
5、dataAccess(数据操作)类:
包含用于数据库的相关操作
代码(略)
6、atmScreen(ATM屏幕)类:
主要创建各操作窗体和相应按钮事件
代码(略)
四、测试结果
1、进入界面
2、输入卡号
3、输入密码
4、选择业务
5、取款
6、查询余额
7、修改密码
五、设计体会
为完成此次课程设计,查阅了大量有关此选题的资料。
特别是有关数据库的连接和图形界面的设计方面的知识几乎是一片空白,但整个程序设计如果少了数据库的连接和图形界面,就显得美中不足。
所以经过网上查阅资料,借鉴了一些网上这方面的代码,再经加工修改,最终完成此设计。
对数据库连接方面的代码纯属是借用,并没有真正弄明白其中的道理,不过在这过程中学会了添加和修改数据源的操作,所以也有所收获。
至于图形界面设计代码过于繁杂,但细看的话还是能略懂二三,也是通过反复修改后完成的。
此次课程设计代码虽不全是自己独立编写完成的,但在综合各方面知识、修改、整理、最终成型,成为一个较为完整的小程序的过程中,确实也学到了不少,对Java语言有了进一步的掌握,例如对类的调用、构造函数等多了一分了解。