2.1.1 设计思想
ATM取款系统需要满足来自两个方面的需求,这两个方面分别是管理员和用户。用户的需求是取款、存款、转账、查询、修改、取卡等功能;管理人员的功能较为复杂,包括对用户实现开户、销户、查询、修改和维护用户的各种信息。
用户可以根据自己的银行卡通过ATM机登录到用户系统,登录成功后可进行六种操作,分别是取款、存款、转账、查询、修改、取卡。不能查看他人的信息。这样就可以保证其他用户信息的保密性。
管理人员有对用户实现开户、销户、查询、修改和维护用户的各种信息等记录的权限,所以需对管理员登陆模块进行更多的考虑。
2.1.2 系统功能模块划分
一般可分为:
用户模块:包括取款模块、存款模块、转账模块、查询模块、修改模块、取卡模块。
管理员模块:包括文件模块、系统管理模块、操作模块、关于模块、交易记录模块。 其中文件模块包括:开户、销户。 系统模块包括:改密、注销。 操作模块包括:查询、修改。 关于模块包括:版本。 交易模块包括:打印。 (各模块功能图:见P5 2.1)
2.1.3 ATM银行系统各模块图
在概念设计阶段中,设计人员从用户的角度看待数据及处理要求和约束,产生一个反映用户观点的概念模式。然后再把概念模式转换成逻辑模式。将概念设计从设计过程中独立开来,使各阶段的任务相对单一化,设计复杂程度大大降低,不受特定DBMS的限制。
各个E-R图分析如下:
用户系统E-R实图
6 / 23
管理员系统E-R实图
2.1.4 数据库的逻辑设计
由于概念设计的结果是ER图,DBMS一般采用关系型(我们所使用的MS ACCESS就是关系型的DBMS),因此数据库的逻辑设计过程就是把ER图转化为关系模式的过程。由于关系模型所具有的优点,逻辑设计可以充分运用关系数据库规范化理论,使设计过程形式化地进行。设计结果是一组关系模式的定义。 1.数据字典
取款=卡号+密码+取款金额。 查询=卡号+密码+查询余额。 存款=卡号+密码+存款金额。 改密=卡号+密码+旧密码+新密码。 转账=卡号+密码+收款人卡号。
开户=客户编号+姓名+身份证+电话+地址+卡号+货币类型+存款类型+金额+密码+余额+开户日期
销户=卡号
打印=交易日期+卡号+交易类型+交易金额 2.具体表——数据库(Bank.mdb)
表一(管理员-admin)字段及内容
7 / 23
表二(用户表-userInfo)字段及内容
表三(卡号表-cardInfo)字段及内容
表四(交易表-transInfo)字段及内容
2.2详细设计
2.2.1 管理员窗体模块组成
8 / 23
1.文件模块
功能: 文件模块包括开户和销户两个小模块,开户可以为用户办理银行卡,销户可以取消用户的卡号。
2.系统管理模块
功能:系统管理模块包括改密和注销两个小模块,通过改密功能,管理员可自行修改密码,注销可返回到登录界。
3.操作模块
功能:操作模块包括查询、修改和查看IP三个小模块,其中,查询中还包括查询用户信息和查询卡信息模块;修改中还包括修改用户信息和修改卡信息模块;查看IP就是查看当前工作的IP。
4. 交易记录模块
功能:交易记录模块包括打印小模块,可以打印出用户各种交易情况。
2.2.2 管理员模块窗体界面及相应代码
1 、窗体界面说明 (1)登录界面
管理员登录由管理员名和密码构成,在管理员输入管理员名和密码后,系统首先验证输入字符的有效性,然后调用数据库查看此管理员名是否存在或密码是否正确,最后判断管理员权限确定操作员还是管理员,并赋与不同的权限。代码如下:
9 / 23
代码如下:
if(jTextField.getText().equals(\)||jPasswordField.getPassword().equals(\)&&jPasswordField1.getPassword().equals(\)){
JOptionPane.showMessageDialog(null, \请先选择登陆角色!\); }else{ if(bb){
if(jTextField.getText().equals(\)||jTextField.getText().equals(\)||jTextField.getTex
t().equals(\)){ }
MFrm m=new MFrm(); m.setVisible(true);
close();
Connection con; con=db.getConn();
user=String.valueOf(jTextField.getText());
String pass=String.valueOf(jPasswordField.getPassword()); boolean bb=db.isValid(con, user, pass);
}else{
if(i==0) else { } }
JOptionPane.showMessageDialog(null, \该管理员不存在!\); }
i--;
JOptionPane.showMessageDialog(null, \密码输错3次!请到柜台改密码!\);
JOptionPane.showMessageDialog(null, \密码错误!请重新输入!!\);
}else{
(2) 主界面
10 / 23