大连科技学院java程序设计课程设计(B)题目银行取款管理系统学生姓名 XXX专业班级计算机(Z)13-1指导教师 XXX 职称讲师所在单位信息科学系软件工程教研室教学部主任 XXXX完成日期 2016年9月30日课程设计报告单综合评定:(优、良、中、及格、不及格)指导教师签字:2016年9月30日《java程序设计课程设计(B)》任务书一、课程设计任务及要求:任务:针对小型信息管理系统或若干综合性设计题目,选择一种软件开发模型,完成从需求分析、系统设计、系统实现,软件测试的全过程。
要求:(1) 根据软件系统开发的一般原则,完成相应系统的功能设计,完成主要功能模块的程序实现并进行测试训练,给出代码运行结果和相应的设计文档。
可以分组进行,但所有学生必须经历整个系统的开发全过程,以便加深对系统开发全过程的认识。
(2)提交课程设计报告。
(3)指标: 要求完成课程设计报告3000字以上(约二十页);完成所设计的题目,设计题目的语句行数的和在200行语句以上。
二、工作量2周(10个工作日)时间三、计划安排第1个工作日:查找相关资料、书籍,阅读示例文档,选择题目。
第2个工作日-第4个工作日:设计程序结构、模块图。
第5个工作日-第9个工作日:完成程序的编码,并且自己调试、测试。
穿插进行课程设计报告的撰写。
第10个工作日:上交课程设计报告,由教师检查软件测试效果、检查课程设计报告,给出学生成绩。
指导教师签字:2016年9月19日目录题目: (1)1.需求分析 (1)2.概要设计 (1)3.详细设计 (2)4.编码 (3)5.调试分析 (11)6.测试结果及运行效果 (11)7.系统开发所用到的技术 (13)8.课程设计总结 (14)参考文献 (145)附录全部代码 (16)题目:银行取款管理系统的设计与实现1.需求分析在传统的银行帐户管理中,其过程往往是很复杂的,繁琐的,帐户管理以入帐和出帐两项内容为核心,在此过程中又需要经过若干道手续,因为整个过程都需要手工操作,效率十分低下,且由于他们之间关联复杂,统计和查询的方式各不相同;且会出现信息的重复传递问题,因此该过程需要进行信息化,以利用计算机进行帐目管理。
为了提高银行的办事效率,减低银行工作人员的办事效率,降低传统银行的出入账计算方式,因此急需开发一套信息化的方式,开发合适的系统就成为了解决这一问题的核心。
2.概要设计根据以上所说的功能,银行取款管理系统应该有以下的功能:(1)定、活期存款操作:在定期,活期的存款操作上,根据自己需要存放的金额进行存放,并填写需要存储的年限,点击确认,进行存款,在设计定、活期存款上,首先判断输入的现金数是否为负数,不为负继续存入,为负不存入,主要是actionPerformed()函数实现,存款按钮与内层界面的确定按钮。
(2)取款操作:在取款操作上,根据自己所需要的金额进行取款,若银行里面的金额满足自己所取款的金额,则系统显示取款的金额,并显示剩余的金额,若银行里面的金额不满足自己所需的金额,则系统显示金额不足,不能取出相应的金额。
该模块主要实现:账户中现金的取出,余额的扣除。
借助函数get()函数实现。
(3)查询账户余额:在查询账户余额操作上,根据自己的存款,取款的操作,进行计算后,显示出银行账户的余额,该模块主要实现:当前账户现金加利息的查询以及输出,借助函数balance()实现。
(4)计算当前利息:在计算当前利息操作上,根据在定、活期存款的选择的基础上,根据个人的选择,系统会自动算出利息。
该模块只要实现:当前账户利息的查询机输出。
借助函数lixid()与lixih()实现。
3.详细设计系统模块结构设计如图1-1所示:图1-1 银行系统功能图通过上图的功能分析,把整个系统划分为6个模块:(1)存款操作。
该模块主要实现:现金的存放,余额的累加。
借助内外层两个actionPerformed()函数实现;(2)取款操作。
该模块主要实现:账户中现金的取出,余额的扣除。
借助函数get()函数实现;(3)当前余额查询操作。
该模块主要实现:当前账户现金加利息的查询以及输出,借助函数balance()实现;(4)当前利息查询操作。
该模块只要实现:当前账户利息的查询机输出。
借助函数lixid()与lixih()实现;(5)定活期的设置。
该模块主要实现:定期与活期存款的设定;利息的计算。
借助界面以及里层的actionPerformed()函数实现。
4.编码(一)存款操作:分析:首先判断输入的现金数是否为负数,不为负继续存入,为负不存入,主要是actionPerformed()函数实现,存款按钮与内层界面的确定按钮;该模块的具体代码如下所示。
if(e.getSource()==button_queding)//单击确定按钮{double cunkuanzhi=Integer.parseInt(text_cunkuanshu.getText());//存款数文本框字符串强制转换双精度型if (cunkuanzhi>0)//存款操作{balance+=cunkuanzhi; //存款操作使余额值增加}JOptionPane.showMessageDialog(this,"存款"+cunkuanzhi+"成功!");if(radio_dingqi.isSelected())//定、活期单选框利息计算传送rlixi=dlixi();if(radio_huoqi.isSelected())rlixi=hlixi();}if(e.getSource()==button_cunkuan)//单击存款按钮{String dingqis[]={"0.25","0.5","1","2","3","5"};//组合框内容数组new MessageJDialog(dingqis);//新建MessageJDialog类对象}(二)取款操作:get()分析:先输入取款数,如果取款数大于余额,则取出账户中全部余额,否则继续取款,余额减少。
该模块的具体代码如下所示。
public double get() //取款操作,参数为取款金额,返回实际取到金额{String password=JOptionPane.showInputDialog(this,"请输入取款数");double qukuanzhi=Integer.parseInt(password);if (qukuanzhi>0){if (qukuanzhi<=this.balance)this.balance-= qukuanzhi; //取款操作使余额值减少else //账户余额不够所取时{qukuanzhi = this.balance+rlixi; //取走全部余额this.balance = 0;JOptionPane.showMessageDialog(this,"您的余额不足,已为您取出全部余额!");}return qukuanzhi; //返回实际取款额}return 0;}(三)查询余额:balance()分析;余额变量为成员变量balance,直接返回balance。
该模块的具体代码如下所示。
public double balance() //查看账户余额{return balance+rlixi;}(四)查询利息:lixid();lixih()分析;该模块主要实现利息的查询及输出。
点击查询当前利息按钮,显示当前利息。
主要方法是给出当前利息率,按订活期的不同选择不同的函数,用switch语句实现利息的选择计算。
该模块的具体代码如下所示。
public double dlixi()//成员方法:计算定期利息{double a=balance;double c=dnianfeng;switch((int)(c*4)){case 1: return(a*0.0248*c);case 2: return(a*0.0264*c);case 4: return(a*0.028*c);case 8: return(a*0.0352*c);case 12: return(a*0.04*c);case 20: return(a*0.044*c);default: return 0;}}public double hlixi()//成员方法:计算活期利息方法{double hnianfeng=Double.parseDouble((text_huoqi.getText()));double a=balance;double c=hnianfeng;double s=a*0.004*c;return s;}(五)主界面的建立:bankJFame分析:该模块主要是整个系统的主界面。
实现图形用户界面的输出,使用户更直观地去操作本系统。
主要的组件有:三块面板;文本框;标签;按钮;该模块的具体代码如下所示。
import java.awt.event.*;import java.awt.*;import javax.swing.*;import java.awt.FlowLayout;public class bankJFrame extends JFrame implements ActionListener{private JTextField text_zhanghao,text_kahao;//定义账号,卡号文本行private JButton button_cunkuan,button_qukuan,button_yue,button_lixi;//定义存款,取款,查询余额按钮private double balance;//成员变量--查看余额private double rlixi;public bankJFrame(){super("银行存取款管理系统");//主窗口标题this.setBounds(300, 240, 400, 150);//窗口初弹出坐标及大小this.setResizable(false);//窗口大小不能改变this.setBackground(Color.lightGray);//颜色设置this.setLayout(new java.awt.FlowLayout(FlowLayout.CENTER));//面板布局为居中this.setDefaultCloseOperation(EXIT_ON_CLOSE);JPanel panel1=new JPanel();//新建第一个面板this.getContentPane().add(panel1,"North");panel1.add(new JLabel("账户"));text_zhanghao=new JTextField("zj",6);text_zhanghao.setEditable(false);//文本行不可编辑panel1.add(text_zhanghao);panel1.add(new JLabel("卡号"));//用户卡号标签及文本行text_kahao=new JTextField("622627************",15);text_kahao.setEditable(false);//文本行不可编辑panel1.add(text_kahao);this.setVisible(true);//窗口可见JPanel panel2=new JPanel();this.getContentPane().add(panel2,"South");//面板布局及添加面板至主面板button_cunkuan=new JButton("存款");//存款按钮panel2.add(button_cunkuan);button_cunkuan.addActionListener(this);button_qukuan=new JButton("取款");//取款按钮panel2.add(button_qukuan);button_qukuan.addActionListener(this);button_yue=new JButton("查询当前余额");//查询当前余额按钮panel2.add(button_yue);button_yue.addActionListener(this);button_lixi=new JButton("当前利息");//当前利息按钮panel2.add(button_lixi);button_lixi.addActionListener(this);this.setVisible(true);}public void actionPerformed(ActionEvent e)//单击事件处理方法{if(e.getSource()==button_cunkuan)//单击存款按钮{String dingqis[]={"0.25","0.5","1","2","3","5"};//组合框内容数组new MessageJDialog(dingqis);//新建MessageJDialog类对象}if(e.getSource()==button_yue)//单击查询余额按钮{double relixi=balance();JOptionPane.showMessageDialog(this,"尊敬的zj先生,您的当前账户余额为:"+(relixi)+"元");}if(e.getSource()==button_qukuan)//单击取款按钮{double qk=get();JOptionPane.showMessageDialog(this,"取款"+qk+"元成功!");}if(e.getSource()==button_lixi)//单击计算利息按钮{JOptionPane.showMessageDialog(this,"尊敬的zj先生,您的当前账户利息为:"+rlixi+"元");}}(五)内层界面的建立:MessageJDialog分析:该模块主要是为主界面而服务的一个子框架。