银行帐目管理系统—免费毕业设计论文内容摘要:
ches([19][09]*)) { (this,请输入正确的存款 !)。 return。 } 密码和电话号码是可以不填,密码不填写时默认是 000000,如果要输入必须是六位数字,电话号码输入的话必须是合法的电话号码,主要验证代码如下: //验证密码是否合法 if(!getPassword().matches([09]{6})) { (this,请输入六位数字的密码 !)。 return。 } //验证电话是否有效 if(getPhone().length() 0 amp。 amp。 !getPhone().matches([09]{7}[09]*)) { (this,请输入正确的电话号码 !)。 return。 } 信息收集完成后 ,保存该帐户的信息,并生成一张开户清单,将清单保存到另外的一个文件中备份。 主要代码如下: //将帐户数据添加到帐户数据链表 (account)。 //保存帐户信息到文件 FileOutputStream fos = new FileOutputStream(file)。 ObjectOutputStream oos = new ObjectOutputStream (fos)。 (listAccount)。 ()。 //将 新的存取清单添加到存取清单链表 (bill)。 //保存存取清单数据到文件 FileOutputStream fos = new FileOutputStream(file)。 ObjectOutputStream oos = new ObjectOutputStream (fos)。 (listBill)。 ()。 销户窗口的设计与实现 在如图 3 所示的系统操作主界面单击右下角的“ 显示全部 ”按钮 后选中一个要销户的帐户,然 后点击“销户”按钮,弹出输入密码的信息框,经过验证后单击“确定”按钮能完成销户功能,同时弹出一个如图 8所示的信息框,显示存取信息,里面包含有用户名、帐号、操作类型、金额、余额、流水号和操作日期等信息。 在销户的时候同时取完帐户上的存款金额,最后完成销户功能。 点击图 3操作主界面的“显示全部”按钮,可以看到销户的帐户已经不存在了。 图 8 销户成功后的存取信息表 当找到要销户的帐户之后,帐户要输入密码确认进行销户操作,具体的代码如下: //找到要取款的帐户后,要用户输入密码确认进行销户 操作 while(true) { String strPassword = (this,请输入密码: )。 if(strPassword == null) { return。 }else if(().equals(strPassword)){ break。 } else if((++i) 3) { (this,密码错误 !请重新输入 !)。 continue。 } (this,密码输错三次 ,帐号被锁定 !)。 return。 } 用户确认后,将帐户中的余额全部取出。 先删除帐户链表中该帐户的信息,然后在删除外部文件中该帐户的数据,打印出销户清单,主要的代码如下: //将新的存取清单添加到 存取清单链表中 ().remove(account)。 //保存帐户信息到文件 FileOutputStream fos = new FileOutputStream(file)。 ObjectOutputStream oos = new ObjectOutputStream (fos)。 (listAccount)。 ()。 //将新的存取清单添加到存取清单链表 (bill)。 //保存存取清单数据到文件 FileOutputStream fos = new FileOutputStream(file)。 ObjectOutputStream oos = new ObjectOutputStream (fos)。 (listBill)。 ()。 存款和取款窗口的设计与实现 存款和取款的操作方法都是一样的,都是首先在如图 3所示的操作主界面里选中一个需要存款(取款)的帐户,如图 9 所示,然后点击按钮(存款或取款按钮),弹出输入密码的信息框,帐户输入密码经验证后。 图 9帐户被选中示意图(蓝色标志) 在没有选中帐户的时候点击存款按钮,系统会提 示帐户,实现的代码为: if(row == 1) { //如果没有选中记录,提示先选中记录才能存款 (this,请先选择要存款的帐户 !)。 } 选中要存款的帐户后,点击存款按钮,弹出输入密码框,帐户要输入密码验证后才能存款操作,当没有输入的密码或者输错 3次,会自动退出系统,实现的代码如下: else{ //根据选择的行获得标识该帐户的唯一 ID String delId = (String)((), 1)。 //根据 ID在帐户链表中找到该帐户并返回该帐户的引用 while(()){ account = (Account)()。 if(().equals(delId)) { break。 } } //找到要存款的帐户后,要用户输入密码确认进行存款操作 int number = 0。 while(true) { String strPassword = (this,请输入密码: )。 if(strPassword == null) { return。 } else if (().equals(strPassword)) { break。 } else if((++number) 3) { (this,密码错误 !请重新输入 !)。 continue。 } (this,密码输错三次 ,帐号被锁定 !)。 return。 } 验证密码通过后,在输入框中输入存款金额,金额必须为数字,如果输入其他信息,系统会报错,如图 10所示。 图 10操作错误提示框 实现的代码如下: //存款数目只能是数字 String strNumber = null。 while (true) { strNumber = (this, 请输入存款金额:)。 if(strNumber == null) { return。 } else if (([19][09]*)) { break。 } (this, 输入错误 !请输入数字 !)。 } 通过 (() + (strNumber))。 来实现存款操作。 存款完后显示一张存取信息表,如图 11 所示。 产生的 存取清单会存储到存取清单链表中去,点击“显示全部”按钮,显示新的信息,此时的卡上余额信息已经发生变化,通过图 11和图 12 可以发现金额的变化。 图 11存款后的信息表 图 12 卡上余额变化 实现的代码如下: bill = new Bill()。 //生成新的存取清单 (())。 ((strNumber))。 (())。 (())。 (存款 )。 //保存帐户信息到文件 FileOutputStream fos = new FileOutputStream(file)。 ObjectOutputStream oos = new ObjectOutputStream (fos)。 (listAccount)。 ()。 修改信息窗口的设计与实现 修改信息的窗口和开户窗口是一样的,他们继承于同一个类,但是 他们 完成的功能不一样。 点击如图 3所示操作主界面的“修改密码”按钮,弹出输入密码提示框,验证后可以修改用户名、密码、联系电话和家庭住址, 点击“确定”按钮后显示修改信息成功。 但是帐户没有权 力 利修改帐号和存款金额。 修改窗口如图 12 所示: 图 12 修改信息窗口 主要功能实现代码与开户的功能代码相似,不同的地方是最后只对帐户信息进行更 新,而不是新添加帐户,如下: //保存此帐户信息的更新 (getAccountName())。 //更改帐户的姓名 (getPassword())。 //更改帐户的密码 (getPhone())。 //更改帐户的电话号码 (getAddress())。 //更改帐户的住址 //在链表中更新该帐户的信息 ().set(pos,account)。 //保存帐户信息到文件 查询功能的实现 在图 3所示的操作主界面,点击“用户查询”或“查找”都能进行查找操作,查找的时候必须选中一个查询方式 ,并且必须输入查找的关键字,否则会产生如图 13 的提示框。 图 13提示信息框 代码如下: if(getInput().trim().length() == 0) { (this,请输入查询关键字 !)。 return。 帐户可以通过四种方式来查询,分别是查询姓名,查询帐号,查询电话号码和查询家 庭住址。 当查询结束为,为保证信息的安全,会清除表格中以前的数据,代码如下: while(() != 0) { (0)。 } 根据查询方式进行查询,并在表格中显示出来, 当查找方式为姓名时的 代码如下: //根据用户选择的单选按钮 进行查询,在表格中显示符合条件的记录 if(()) { for(int i=0。 i()。 i++) { if(account[i].getName().equals(getInput())) { String[] strRow = {account[i].getName(), account[i].getId(), account[i].getMoney()+,account[i].getAddress(), account[i].getPhone()}。 (strRow)。 } } 查询统计的实现 在如图 3 所示的操作主界面单击菜单上的“查询统计”,可以完成对帐户数的统计,代码如下: private void doCount() { (this,共有 +().getCount()+个帐户 !)。 } 5 数据保存机制 采用 链表和输入输出流 银行帐目管理系统 采用输入输出流对数据进行存取。 I/O 流提供一条通道程序,可以使用这条通道把与源中的字符序列送到目的地。 把输入流的指向称做源,程序从指向源的输入流中读取源中的数据。 而输出流的指向是字节要去的目的地,程序通过向输出流中写入数据把信息传递到目的地。 程序中用到的是 I/ O流 中的对象流,即对象输入流 (ObjectInputStream)和对象输出流 (ObjectOutputStream)。 当使用对象流写入和读出数据时,要保证对象是序列化的,一个类如果实现了 Serializable 接口,则这个类创建的对象就是序列化的对象。 对象输出流使用 writeObject(Object obj)方法将一个对象 obj写入到一个文件,对象输入流使用 readObject(Object obj)方法读取一个对象到程序中。 在程序中对数据的操作是使用 链表来实现 的,所有对数据的操作都能在链表中表现出 来,如 数据的 增加 、 删除、 修改 等。 程序中有两张链表存储帐户数据的链表 (listAccount)和存储所有存取清单的帐单链表 (BillList),链表是通过 包中的 LinkedList 类来创建。 用户的所有操作都被记录在这两张链表中,当链表中的内容发生改变时,程序会调用对象输出流的writeObject(Object obj)方法将文件中的内容更新,从而实现数据的一致性。 在存款,取款,修改信息还有销户的时候首先要在存取帐户信息的链表中找到这个相对应的帐号,然后在进行操作。 借助 Iterator 类实现 遍历链表,一个链表对象可以使用 iterator()方法获取一个 Iterator 对象,使用 next()方法遍历链表。 帐户数据的链表 listAccount 建立的代码如下: //存储帐户数据的链表,且只能存储 Account 类 private LinkedListAccount listAccount = new LinkedListAccount()。 在链表中查询帐户的代码为:以销户为例 Iterator iterator = ().iterator()。 //根。银行帐目管理系统—免费毕业设计论文
相关推荐
V= 0 0 6 0 5 2 m179。 21 根据 V=179。 ,选取 型 φ 562 扩容器一台,其容积为 179。 , 工作压力为。 排污冷却池:拟设置一个混泥土冷却池,水冷方式,其尺寸为 179。 2m179。 取样冷却池:为了保证炉水取样化验的安全,设置三台 φ 254 型取样 冷却器,其承压能力 ,介质最高允许温度 225℃。 简易盘管:在不影响水箱有效容积使用的前提下
在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如 Keil C51 uVision2 等软件。 ④具有强大的原理图绘制功能。 总之,该软件是一款集单片机和 SPICE 分析于一身的仿真软件,功能极其强大。 因为pretues 仿真软件中所有的情况都是在理想想的条件下
C 设 置外 部 输 出 设备外 部 输 入 设备设 定设 定通 信 处 理设 定 图 PLC 的 CPU 基本结构 c、 存储器 存放系统软件的存储器称为系统程序存储器。 存放 应用软件的存储器称为用户程序存储器。 d、 输入输出接口电路 (1)现场输入接口电路由光耦合电路和微机的输入接口电路,作用是 PLC与现场控制的接口界面的输入通道。 (2)现场输出接口电路由输出数据寄存器
1的游程。 (3) 位移相加特性。 m 序列{ ia } 与其位移序列 { ia } 的模 2 和序列仍是该 m 序列的另一位移序列{ ia } ,即 }{}{}{ iii aaa () m 序列的另一个特性是它的自相关函数非常尖锐,根据序列自相关函数 的定义以及 m序列的性质,很容易求出 m 序列的自相关函数 : 14 )( m od01
mulink库模块(或库函数),而且每个子模型库中包含有相应的功能模块,用户还可以根据需要定制和创建自己的模块。 用 Simulink 创建的模型可以具有递阶结构,因此用户可以采用从上到下或从下到上的结构创建模型。 用户可以从最高级开始观看模型,然后用鼠标双击其中的子系统模块,来查看其下一级的内容,以此类推,从而可以看到整个模型的细节 ,帮助用户理解模型的结构和各模块之间的相互关系。