ATM实验报告.docx

上传人:b****7 文档编号:8975612 上传时间:2023-02-02 格式:DOCX 页数:13 大小:111.82KB
下载 相关 举报
ATM实验报告.docx_第1页
第1页 / 共13页
ATM实验报告.docx_第2页
第2页 / 共13页
ATM实验报告.docx_第3页
第3页 / 共13页
ATM实验报告.docx_第4页
第4页 / 共13页
ATM实验报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

ATM实验报告.docx

《ATM实验报告.docx》由会员分享,可在线阅读,更多相关《ATM实验报告.docx(13页珍藏版)》请在冰豆网上搜索。

ATM实验报告.docx

ATM实验报告

课程名称VB程序设计成绩评定

实验项目名称ATM指导教师余宏华

实验项目编号实验项目类型实验地点

学生姓名刘细萍学号2012050279

学生姓名徐嘉茵学号2012050280

学生姓名吴晓君学号2012050274

学生姓名徐如婵学号2012052712

学院经济学院系国际经济与贸易专业国际经济与贸易

实验时间2013年6月1日~6月25日

一、实验目的(知识点)

实验目的:

模拟一个ATM终端程序

知识点:

1.(熟练)数组(一维数组、一维动态数组)

2.(掌握)自定义数据类型(构造复杂类型的数据结构、作为函数参数与返回值)

3.(熟练)函数(自定义数据类型作为参数传递、变量的作用域)

4.(掌握)简单的排序算法(冒泡或选择)

5.(掌握)文件(顺序文件的读写)

6.(了解)其他(异常处理、内存变量回收、逻辑业务与界面设计分离的思想)

二、实验内容

(一)设计说明

本实验分为业务逻辑设计和界面设计两部分,相互之间互不干扰,只通过外部函数的调用来相互沟通。

界面设计部分只负责界面以及数据的显示(为简单起见,数据有效性检测仅放在界面部分)。

业务逻辑设计部分包括ATM柜员机的所有业务逻辑函数,以及相应的数据结构。

本模拟程序仅使用“带格式数据”的顺序文件作数据存储,程序中所使用的数据结构与文件中的数据格式一一对应。

程序启动时先将文件里面的数据全部读入内存,生成相应的数据结构(自定义数据类型数组);一旦用户作业务逻辑操作使内存中相应数据发生任何变化,立即将数据结构(自定义数据类型数组)的所有内容全部写入文件(覆盖原文件)。

因将文件中的全部数据读入内存,内存中的数据结构包含“所有用户”的记录信息,所以对某一特定用户的账号操作时必须先定义一个指针(数组下标),用于指向该用户。

(二)业务逻辑设计

银行自动柜员机(ATM)终端程序设计是软件工程的经典案例。

其中一个重要的思想是要求:

逻辑业务与界面设计分离,以此可以增强程序的独立性、复用性。

逻辑业务部分主要是自动柜员机的终端业务(包括:

登录、存|取款、查询余额、修改密码、转账、取卡),每个业务可用独立的函数完成,并提供给界面调用。

(三)具体实验过程

第一步,界面设计以及界面属性设定。

(1)登录

同一个窗体用frame来实现界面的转换

相同的过程可以写成一个子过程,通过调用子过程来简化程序编码,'改写成public成为公用程序,可在其他窗口调用

PublicSubaa()

Frame2.Visible=False

Frame1.Visible=True

Frame3.Visible=False

EndSub

(2)业务办理

(3)具体业务(如取款、存款、转账、修改密码、查询余额、开户)

第二步,在模块中构造自定义类型数据结构,利用上述构造的自定义数据类型,再构造一个该类型的数组。

用于保存从文件里面读进来的数据。

PublicTypeusertype

accountAsString*19

keyAsString*6

nameAsString*4

moneyAsString

EndType

Publicb()Asusertype

第三步,具体业务设计编写

(1)登录

运用第七章“外存数据的访问”中文件的应用的知识,将用户账号、密码从文件中读出与记录,然后将账号添加到组合框项目中。

Dimi%

OpenApp.Path&"\Account.txt"ForInputAs#1

i=0

DoWhileNotEOF

(1)

i=i+1

ReDimPreservea(1Toi)

Input#1,saccount,skey,sname,smoney

Combo1.AddItemsaccount

a(i)=skey

Loop

Close#1

检测账号密码是否一致,登陆账号

PrivateSubCommand1_Click()

IfCombo1.Text=""Then

Form2.Hide

Form5.Show

Else

IfCombo1.Text="9558800000000000000"AndText1.Text="111222"OrCombo1.Text="9559900000000000000"AndText1.Text="111111"OrCombo1.Text="9556600000000000000"AndText1.Text="222333"OrCombo1.Text="2222222222222222222"AndText1.Text="222222"OrCombo1.Text="3333333333333333333"AndText1.Text="123456"Then

Form2.Hide

Form3.Show

Else:

Form2.Hide

Form4.Show

EndIf

EndIf

EndSub

(2)取款(存款类似)

PrivateSubForm_Load()

Dimi%,k%,m@,t%

k=Form2.Combo1.ListIndex

m=Form11.Text1.Text

t=Form2.Combo1.ListCount

OpenApp.Path&"\Account.txt"ForInputAs#1

i=0

DoWhileNotEOF

(1)

i=i+1

ReDimPreserveb(1Toi)

Input#1,saccount,skey,sname,smoney

b(i).account=saccount

b(i).key=skey

b(i).money=smoney

b(i).name=sname

Loop

Close#1

Ifb(k+1).money

Label1.Caption="对不起,您的账户当前余额不足"&vbCrLf&"您当前的余额为:

"

Else

Label1.Caption="取款成功"&vbCrLf&"您当前的余额为:

"

OpenApp.Path&"\Account.txt"ForOutputAs#1

i=0

DoWhilei

i=i+1

Ifi=k+1Then

Write#1,b(i).account,b(i).key,b(i).name,b(i).money-m

Else

Write#1,b(i).account,b(i).key,b(i).name,b(i).money

EndIf

Loop

EndIf

Close#1

OpenApp.Path&"\Account.txt"ForInputAs#1

i=0

DoWhileNotEOF

(1)

i=i+1

ReDimPreservea(1Toi)

Input#1,saccount,skey,sname,smoney

a(i)=smoney

Loop

Close#1

Label2.Caption=a(k+1)

EndSub

(3)查询余额

PrivateSubForm_Load()

k=Form2.Combo1.ListIndex

Dimi%

OpenApp.Path&"\Account.txt"ForInputAs#1

i=0

DoWhileNotEOF

(1)

i=i+1

ReDimPreservea(1Toi)

Input#1,saccount,skey,sname,smoney

a(i)=smoney

Loop

Close#1

Label2.Caption=a(k+1)

EndSub

(4)转账

PrivateSubForm_Load()

Dimi%,k%,m@,t%,q%

k=Form2.Combo1.ListIndex

m=Form14.Text1.Text

t=Form2.Combo1.ListCount

q=Form14.Combo1.ListIndex

OpenApp.Path&"\Account.txt"ForInputAs#1

i=0

DoWhileNotEOF

(1)

i=i+1

ReDimPreserveb(1Toi)

Input#1,saccount,skey,sname,smoney

b(i).account=saccount

b(i).key=skey

b(i).money=smoney

b(i).name=sname

Loop

Close#1

Ifb(k+1).money

Label1.Caption="对不起,您的账户当前余额不足"&vbCrLf&"您当前的余额为:

"

Else

Label1.Caption="转账成功"&vbCrLf&"您当前的余额为:

"

OpenApp.Path&"\Account.txt"ForOutputAs#1

i=0

DoWhilei

i=i+1

Ifi=k+1Then

Write#1,b(i).account,b(i).key,b(i).name,b(i).money-m

ElseIfi=q+1Then

Write#1,b(i).account,b(i).key,b(i).name,b(i).money+m

Else

Write#1,b(i).account,b(i).key,b(i).name,b(i).money

EndIf

Loop

EndIf

Close#1

OpenApp.Path&"\Account.txt"ForInputAs#1

i=0

DoWhileNotEOF

(1)

i=i+1

ReDimPreservea(1Toi)

Input#1,saccount,skey,sname,smoney

a(i)=smoney

Loop

Close#1

Label2.Caption=a(k+1)

EndSub

(5)修改密码

PrivateSubCommand1_Click()

Dimi%,k%,t%

k=Form2.Combo1.ListIndex

t=Form2.Combo1.ListCount

OpenApp.Path&"\Account.txt"ForInputAs#1

i=0

DoWhileNotEOF

(1)

i=i+1

ReDimPreserveb(1Toi)

Input#1,saccount,skey,sname,smoney

b(i).account=saccount

b(i).key=skey

b(i).money=smoney

b(i).name=sname

Loop

Close#1

IfText1.Text<>b(k+1).keyThen

Form16.Hide

Form17.Show

Form17.Label1.Caption="旧密码错误,请重新输入"

ElseIfText3.Text<>Text2.TextThen

Form16.Hide

Form17.Show

Form17.Label1.Caption="新密码确认错误,请重新输入"

Else

OpenApp.Path&"\Account.txt"ForOutputAs#1

i=0

DoWhilei

i=i+1

Ifi=k+1Then

Write#1,b(i).account,Text2.Text,b(i).name,b(i).money

Else

Write#1,b(i).account,b(i).key,b(i).name,b(i).money

EndIf

Loop

EndIf

Close#1

Form16.Hide

Form17.Show

Form17.Label1.Caption="密码修改成功"

EndSub

(6)开户

PrivateSubCommand1_Click()

Dimi%,k%,t%

k=Form2.Combo1.ListIndex

t=Form2.Combo1.ListCount

OpenApp.Path&"\Account.txt"ForInputAs#1

i=0

DoWhileNotEOF

(1)

i=i+1

ReDimPreserveb(1Toi)

Input#1,saccount,skey,sname,smoney

b(i).account=saccount

b(i).key=skey

b(i).money=smoney

b(i).name=sname

Loop

Close#1

IfLen(Text1.Text)<>19Then

MsgBox"请输入19位账号!

",0+16,"提示"

ElseIfLen(Text2.Text)<>6Then

MsgBox"请输入6位密码!

",0+16,"提示"

Else

OpenApp.Path&"\Account.txt"ForOutputAs#1

i=0

DoWhilei

i=i+1

Ifi=t+1Then

Write#1,Text1.Text,Text2.Text,Text3.Text,Text4.Text

Else

Write#1,b(i).account,b(i).key,b(i).name,b(i).money

EndIf

Loop

Close#1

Form18.Hide

Form19.Show

Form19.Label1.Caption="开户成功"

EndIf

EndSub

第四步,细节设计

为使程序更真实,可在界面窗体、业务逻辑函数(标准模块中)分别加入对信息有效性与完整性的处理。

例如:

加入账号(19位数字)、密码(6位数字)、姓名(小于4为字符串)、余额(大于0)的有效性判断、在标准模块中进行定义,密码用“*”显示,用formhide和formshow来实现窗体之间的连接。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 家庭教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1