ATM网络编程CS课程设计报告Word文档下载推荐.docx
- 文档编号:3098715
- 上传时间:2023-05-01
- 格式:DOCX
- 页数:47
- 大小:5.58MB
ATM网络编程CS课程设计报告Word文档下载推荐.docx
《ATM网络编程CS课程设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ATM网络编程CS课程设计报告Word文档下载推荐.docx(47页珍藏版)》请在冰点文库上搜索。
开发一款系统软件,此软件运行于银行的ATM机器上,可以供用户使用,完成用户的经济交易,使得用户不需要专门到银行去办理业务,只需要到相关银行的ATM机器上操作即可。
银行可以节约人力资源,不需要为每个客户人工服务。
2.1.2
具体事务
用户:
用户存钱,用户取钱,用户转账,用户查询账户信息,用户修改个人设置,用户查看个人交易记录。
ATM机器:
与用户交互界面,帮助提示信息,用户需要操作实现,用户操作纪录记录,与数据库实时同步。
2.2功能分析
实现ATM的基本功能,包括:
查询余额、取款、存款、改密码、转账等基本功能;
查询余额:
连接数据库,根据正确的用户名与密码登陆查询对应的余额;
取款、存款:
存款与取款的金额必需为100的整数倍,且每次操作不大于3000元,成功修改后,更新对应数据库的内容;
修改密码:
只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码;
转账:
每次转账的金额必需小于余额,只有输入的转账账号两次都相同的情况下,才可以成功转账;
用数据库(或文件)保存当前用户的用户卡号、密码、姓名、余额
2.3主要难点
ATM取款系统是面向特定对象群是在此软件系统开户办理的用户,所以用户进入开户办理时的资料都需要严格核查,用户登陆系统后,应该能根据自己的需要进行各项业务的办理。
鉴于软件系统使用环境一般在网络上或银行门口装置机械,为了考虑到软件的安全性,对于每个用户来说,系统的安全性直接影响着自身的利益,同时也有可能也使用此软件的银行带来很的损失。
特别是网络环境,到处伴随着危险,ATM取款系统针对这一用户群,采取一些有效的措施,登陆后用户办理完的业务信息反馈到客户端数据库里,做好防止信息被拦截工作。
2.4开发工具与环境
2.4.1开发工具
•开发语言:
Java、SQL
•数据库:
MySql5.5
•操作系统:
Windows8.0
2.4.2开发环境
•硬件方面:
个人计算机
•软件方面:
Myeclipse7.0
第三章概要设计
3.1设计思想
本ATM系统需要满足用户的需求,即可以进行各项业务的办理。
用户可以根据数据库中正确的卡号和密码登录到系统,登录成功后可进行操作,所有的数据都要从数据库中获取,当数据被修改后,则必须改变数据库中,相应账号中的数据,如存款后,则要更新相应账号中的余额;
而修改密码后,则要更新相应账号中的密码信息,原来的密码就不能使用
3.2数据库设计
数据库选择了Access2003的数据库作为后台,创建了客户的信息表,然后通过配置ODBC数据源,加载JDBC驱动程序,引用java.sql包来创建数据库连接,然后在程序中执行SQL语句来对数据进行读取和修改。
数据库表如下图:
3.2.1管理员表
3.2.2用户表
3.2.3用户信息表
3.2.4定期存款表
3.3功能模块划分
本系统可以划分为如下功能模块:
登录、开户、销户、挂失、解挂、修改密码、查询、取款、存款、转账等模块。
第四章详细设计
4.1总设计流图
4.2登录设计
(1)实现效果:
(2)关键代码如下:
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
if(e.getSource()==btOk){
//提取账号和密码
Stringaccount=tfAccount.getText();
Stringpwd=newString(pfPwd.getPassword());
//发送连接请求
Sockets;
try{
s=newSocket(InetAddress.getByName("
127.0.0.1"
),8090);
InputStreamips=s.getInputStream();
OutputStreamops=s.getOutputStream();
BufferedReaderbr=newBufferedReader(newInputStreamReader(ips));
PrintWriterpw=newPrintWriter(ops);
//发送消息头
pw.write("
Login\r\n"
);
pw.flush();
//发送账号密码
pw.write(account+"
\r\n"
pw.write(pwd+"
//接收服务器响应
Stringecho=br.readLine();
if(echo.equals("
1"
)){//账号有误
JOptionPane.showMessageDialog(Login.this,"
账号有误!
"
tfAccount.setText("
pfPwd.setText("
}
2"
)){//账号和密码都正确
//接收卡的基本信息,并且创建一个card类
floatmoney=Float.parseFloat(br.readLine());
booleanbool=Boolean.parseBoolean(br.readLine());
Stringname=br.readLine();
Stringsex=br.readLine();
intage=Integer.parseInt(br.readLine());
Stringid=br.readLine();
Stringphone=br.readLine();
//并且创建一个card类
currCard=newCard(account,name,sex,age,id,pwd,phone,money,bool);
//接收判断卡号是不是可以用的bool变量
Stringstr=br.readLine();
if(str.equals("
ok"
)){//用户处于正常状态
newBasic(br,pw,currCard).init();
Login.this.dispose();
}elseif(str.equals("
error"
)){//密码错误三次
inti=JOptionPane.showConfirmDialog(null,"
该账户已被冻结,是否解冻?
"
提示!
JOptionPane.YES_NO_OPTION);
if(i==JOptionPane.OK_OPTION){
newJieGua(br,pw,currCard).init();
Login.this.dispose();
}else{
tfAccount.setText("
pfPwd.setText("
}
}elseif(echo.equals("
3"
)){//密码错误
您输入的密码有误!
4"
您输入的密码已错误3次,即将吞卡!
System.exit(0);
}catch(IOExceptione1){
e1.printStackTrace();
}
}elseif(e.getSource()==btCancel){
tfAccount.setText("
pfPwd.setText("
}elseif(e.getSource()==a){
//newtogerther().init();
this.dispose();
}elseif(e.getSource()==adduser){
newAddUser(br,pw).init();
this.setVisible(false);
}catch(UnknownHostExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}catch(IOExceptione1){
}
4.3开户设计
(2)关键代码如下:
publicvoidactionPerformed(ActionEventarg0){
//TODOAuto-generatedmethodstub
booleanflag2=true;
Stringname=newString(tfname.getText());
Stringaccount=newString(tfaccount.getText());
Stringonepwd=newString(pffirstpwd.getPassword());
Stringtwopwd=newString(pfsecondpwd.getPassword());
Stringidcard=newString(tfidcard.getText());
Stringphone=newString(tfphone.getText());
jb.addItemListener(newItemListener(){
@Override
publicvoiditemStateChanged(ItemEventarg0){
//TODOAuto-generatedmethodstub
});
if(onepwd.equals("
)&
&
idcard.equals("
name.equals("
)
&
phone.equals("
)){
JOptionPane.showMessageDialog(AddUser.this,"
请认真填写个人信息!
}else{
if(!
onepwd.equals(twopwd)){
JOptionPane.showMessageDialog(AddUser.this,"
两次输入的密码不一致!
JOptionPane.showMessageDialog(AddUser.this,sex);
//newLogin().init();
//AddUser.this.dispose();
}
try{
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,transAccount);
rs=pstmt.executeQuery();
if(rs.next()){
transCard=newCard();
transCard.setName(rs.getString("
name"
));
transCard.setSex(rs.getString("
sex"
transCard.setAge(rs.getInt("
age"
transCard.setID(rs.getString("
id"
transCard.setPhone(rs.getString("
phone"
returntransCard;
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
4.4主界面设计
if(e.getSource()==SaveM){
newSaveM(br,pw,currCard).init();
if(e.getSource()==TakeM){
newTakeM2(br,pw,currCard).init();
if(e.getSource()==TransM){
newTranM(br,pw,currCard).init();
if(e.getSource()==QueryM){
newChaXun(br,pw,currCard).init();
if(e.getSource()==a1){
newMima(br,pw,currCard).init();
if(e.getSource()==a2){
JOptionPane.showMessageDialog(Basic.this,"
请在30秒内取走你的卡片,否则将会被吞卡"
newLogin().init();
this.setVisible(false);
if(e.getSource()==DelUser){
newDelUser(br,pw,currCard).init();
if(e.getSource()==GuaShi){
newGuaShi(br,pw,currCard).init();
}
4.5存款设计
this.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
Logoff\r\n"
SaveM.this.dispose();
});
Imagesimages=newImages();
images.AddImage(this,("
image\\3.jpg"
for(inti=0;
i<
10;
i++){
btNum[i].addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringstr=e.getActionCommand();
if(!
isNum){
text.setText(str);
isNum=true;
else{
text.setText(text.getText()+str);
btOk.addActionListener(newActionListener(){
//把text里的数据取出来强制转换成int,用k来接受
intk=Integer.parseInt(text.getText());
if(k%100==0){
if(k>
3000){
JOptionPane.showMessageDialog(SaveM.this,"
对不起,你一次最多只能存入3000元现金!
text.setText("
pw.write("
save\r\n"
pw.write(k+"
pw.flush();
Stringstr;
try{
str=br.readLine();
if(str.equals("
saveSuccess"
//更新当前集合数据
currCard.setMoney(currCard.getMoney()+k);
text.setText("
JOptionPane.showMessageDialog(SaveM.this,"
存款成功!
}else{
JOptionPane.showMessageDialog(SaveM.this,"
存款失败!
}catch(IOExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
}
}else{
你输入的金额不对!
btCancel.addActionListener(newActionListener(){
@Override
});
4.6取款设计
(1)实现界面:
if(k==0){
JOptionPane.showMessageDialog(TakeM.this,"
警告:
请不要随意操作!
!
if(currCard.getMoney()>
=k){
if(k%100==0){
JOptionPane.showMessageDialog(TakeM.this,"
对不起,你一次最多只能提取3000元现金!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ATM 网络 编程 CS 课程设计 报告