收藏 分销(赏)

java信用卡在线管理.docx

上传人:pc****0 文档编号:8203370 上传时间:2025-02-07 格式:DOCX 页数:30 大小:383.68KB 下载积分:10 金币
下载 相关 举报
java信用卡在线管理.docx_第1页
第1页 / 共30页
java信用卡在线管理.docx_第2页
第2页 / 共30页


点击查看更多>>
资源描述
合肥学院 计算机科学与技术系 课程设计报告 2012~2013学年第一学期 课程 Java课程设计 课程设计名称 信用卡在线管理系统 专业班级 11计本(4)班 姓名 黄伟 指导教师 张贯虹 胡春玲 2013年1月 一. 需求分析 1、课程设计名称及内容 课程设计名称:信用卡在线管理系统 设计内容:设计一个信用卡管理系统,实现基于网络管理信用卡信息。 2、任务和要求 系统用户分为管理员、注册用户和普通用户。 a) 提供注册功能,系统的访问者可以注册成为注册用户,注册信息包括卡号、密码和其他个人信息。注册用户没有任何操作权限,必须经管理员审批通过后成为普通用户才有权操作。新注册的用户,卡上初始金额为0。 b) 普通用户可以执行现金转入、现金转出、个人信息修改、余额查询和交易记录查询功能。 c) 用户可以录入转入金额和转出金额,当转出金额大于信用卡的余额时,须判断透支金额是否在本卡的信用额度内(信用额度由管理员设定),如果在则允许透支,否则拒绝支出。 d) 当信用卡发生透支后,在20天内不计利息,20天后按每天1%计算利息,当透支金额+透支利息超过本卡的信用额度,则本卡自动转入“黑名单”(利息继续计算),不再允许进行现金转出操作。 e) 普通用户可以随时查看卡内余额。 f) 普通用户可以按时间段查看交易记录,包括转入、转出和透支情况。 g) 管理员可以审核注册用户,设定用户信用额度,批准成为普通用户。 h) 管理员可以查看系统内的黑名单,包括卡号和透支额度。 二. 设计 1.数据库设计思想: (1)数据库的设计:我们使用的数据库是Microsoft SQL 2005。 创建record和user表: create database card; use card; create table record ( id int not null primary key , fromId varchar(100) not null, toId varchar(50) not null, money float not null, tradetime datetime ); create table user1 ( id varchar(50) primary key not null, password varchar(50) not null, name varchar(100) not null, type int , money float , credit float , overdraft float , blacklist int );、 交易表 用户表 (2)对数据库的操作 Insert主要时用来对数据库进行插入操作,例如在record表中插入一条记录为, public boolean insert ( Record record ){ String sql = "insert into record(id,fromId,toId,money,tradetime) values(?,?,?,?,?)"; try { PreparedStatement pre = conn.prepareStatement(sql); Calendar calendar=Calendar.getInstance(); calendar.setTime(record.getTradetime()); pre.setInt(1 , record.getId()); pre.setString(2 , record.getFromId()); pre.setString(3 , record.getToId()); pre.setDouble(4 , record.getMoney()); pre.setDate(5 , record.getTradetime()); pre.execute(); return true; } catch (SQLException e) { e.printStackTrace(); } return false; } Delete是多数据表中的记录加以删除,例如对user表中的记录删除操作为: public boolean delete ( User user ){ String sql = "delete from [user] where id=?"; try { PreparedStatement pre = conn.prepareStatement(sql); pre.setString(1, user.getId()); pre.execute(); return true; } catch (SQLException e) { e.printStackTrace(); } return false; } Update是对数据库中的信息加以修改! findAll是查找数据库中的所有记录! findById是通过用户给定的id好来对数据库进行扫描,查找出所有与输入的id相匹配的信息! 同时也可以根据其他的关键字对数据库进行查找查找,例如是否是黑名单,是否已经有透支额了等等,具体的实现见代码! 2.java程序的设计: 主要以下几个包: --bean --User表示的是user表中的一条记录 --Record表示的是record表中的一条记录 --ChangePasswordBean是对修改密码时的所有属性的封装 --zhucBean是在新用户注册时的一条记录,主要包括属性id ,password ,name ;以及set和get方法! --dao --DBConnection用于连接数据库 --RecordDAO接口是封装对数据表Record的操作 --UserDAO接口是封装对数据表User的操作 --exception --inputChangePasswordInfoNotRightException是用来显示输入的修改密码的出错的信息! --InputGetNumNotRightException是用户输入的取款金额不合法异常 --InputSetNumNotRightException是用户输入的存款金额不合法异常 --LoginInfoNotRightException 是用户登陆是的不合法异常 --imp --RecordDAOImp是对接口RecordDAO中的方法的实现。 --UserDAOImp是对接口UserDAO中方法的实现。 --service --ChangePasswordService是对修改密码服务中可能出现的不正常信息加以分类并且予以处理。 --GetService是对用户输入的取款信息的不正常信息加以分类并且予以处理。 -- LoginService是对用户在登陆时输入信息的不正常信息加以分类并且予以处理。 -- SetService是对用户输入的存款信息的不正常信息加以分类并且予以处理。 -- view -- ChangePasswordFrame是修改密码的操作界面。 -- GetFrame是用户进行取款操作的界面。 -- GuanlFram是管理员进行操作的界面。 -- LoginView是登陆主界面。 -- PtFram是普通用户的操作界面。 -- SetFrame是用户进行存款操作的界面。 -- zhucFram是新注册用户进行注册的界面。 a.登陆时主界面设计 public class LoginView extends JFrame implements ActionListener{ private JButton adminLoginButton; private JButton zhucButton; private JButton loginButton; private JTextField idField; private JPasswordField passwordField; private JLabel showMessageLabel; private String title="登陆"; private JPanel panel=null; //protected ImageIcon icon; public LoginView(){ //窗口属性设置 this.setBounds(250, 80, 550,600); //icon=new ImageIcon("img/1.jpg"); panel=new JPanel(); panel.setLayout(null); panel.setBounds(250, 80, 600,650); //创建相应的组件 adminLoginButton=new JButton("管理员登陆"); JLabel welcomeLabel=new JLabel("欢迎使用信用卡网上管理模拟系统"); showMessageLabel=new JLabel(); JLabel nameLabel=new JLabel("账号"); JLabel passwordLabel=new JLabel("密码"); idField=new JTextField(); passwordField=new JPasswordField(); zhucButton=new JButton("注册"); loginButton=new JButton("登陆"); // button.setIcon(new ImageIcon(button.getToolkit().getImage("F:\\MyEclipse\\abcdefg\\atm\\icon.png"))); //组件属性设置 adminLoginButton.setBounds(390, 340, 120, 25); showMessageLabel.setBounds(100, 500, 500, 30); welcomeLabel.setFont(new Font("隶书",Font.BOLD,30)); welcomeLabel.setBounds(20, 50, 500, 60); nameLabel.setBounds(170,240,60,30); passwordLabel.setBounds(170, 290, 60, 30); idField.setBounds(205, 240, 180, 25); passwordField.setBounds(205, 290, 180, 25); zhucButton.setBounds(205, 340,60,25); loginButton.setBounds(305, 340,60,25); passwordField.setEchoChar('*'); // 注册监听器 adminLoginButton.addActionListener(this); zhucButton.addActionListener(this); loginButton.addActionListener(this); passwordField.addActionListener(this); //向面板中添加各个组件 panel.add(adminLoginButton); panel.add(showMessageLabel); panel.add(welcomeLabel); panel.add(nameLabel); panel.add(passwordLabel); panel.add(idField); panel.add(passwordField); panel.add(zhucButton); panel.add(loginButton); this.add(panel); this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); this.setResizable(false); this.setVisible(true); } /* * 事件处理 */ public void actionPerformed(ActionEvent e) { if((JButton)e.getSource()==zhucButton){ new zhucFram("新用户注册界面"); } else if((JButton)e.getSource()==loginButton){ UserDAOImp userDao=new UserDAOImp(); User user=new User(); LoginService loginService=new LoginService(); user.setId(idField.getText().trim()); user.setPassword(String.valueOf(passwordField.getPassword())); User user1=userDao.findByIdAndPassword(user); System.out.println("user="+user.getPassword()); try { loginService.checkLoginInfo(user1); //用户登陆成功后得主界面 new PtFram("用户登陆成功后的操作界面",user.getId()).setVisible(true); this.setVisible(false); System.out.println("ghghj"); JOptionPane.showMessageDialog(null,"登陆成功!!","",JOptionPane.DEFAULT_OPTION); } catch (LoginInfoNotRightException e1){ e1.printStackTrace(); System.out.println(e.toString()); showMessageLabel.setText(e.toString()); } } else if(e.getSource()==adminLoginButton){ if("admin".equals(idField.getText())&&"admin".equals(String.valueOf(passwordField.getPassword()))){ //管理员注册成功后的主界面 new GuanlFram(" 管理员登陆成功后的操作界面").setVisible(true); this.setVisible(false); } else { showMessageLabel.setText("账号错或者密码错,请查找后重新登陆!"); idField.setText(null); passwordField.setText(null); } } } } 主界面截图: b.注册新用户界面 public class zhucFram extends JFrame implements ActionListener { Box basebox,box1,box2; Button Button1,Button2; TextField NameTextField =new TextField(12); TextField idTextField =new TextField(12); JPasswordField passwordTextField = new JPasswordField(12); JPasswordField repasswordTextField = new JPasswordField(12); public zhucFram(String s) { super(s); Button1=new Button("确定"); Button2=new Button("取消"); box1=Box.createVerticalBox(); box1.add(new Label("姓名")); box1.add(Box.createVerticalStrut(8)); box1.add(new Label("卡号")); box1.add(Box.createVerticalStrut(8)); box1.add(new Label("请输入密码")); box1.add(Box.createVerticalStrut(8)); box1.add(new Label("请再输一遍")); box1.add(Box.createVerticalStrut(8)); box1.add(Button1); box2=Box.createVerticalBox(); box2.add(NameTextField); box2.add(Box.createVerticalStrut(8)); box2.add(idTextField); box2.add(Box.createVerticalStrut(8)); box2.add(passwordTextField); box2.add(Box.createVerticalStrut(8)); box2.add(repasswordTextField); box2.add(Box.createVerticalStrut(8)); box2.add(Button2); basebox=Box.createHorizontalBox(); basebox.add(box1); basebox.add(Box.createHorizontalStrut(10)); basebox.add(box2); Button1.addActionListener(this); Button2.addActionListener(this); setLayout(new FlowLayout()); add(basebox); setBounds(240,250,500,300); setVisible(true); } public void actionPerformed(ActionEvent e) { if(e.getSource()==Button1) { String userName = String.valueOf(NameTextField.getText()) ; String userId = String.valueOf(idTextField.getText()) ; String userPassword = String.valueOf(passwordTextField.getPassword()) ; String testPassword = String.valueOf(repasswordTextField.getPassword()) ; if(userPassword.equals(testPassword)){ try{ User user1=new User(); user1.setId(userId); user1.setName(userName); user1.setPassword(userPassword); UserDAOImp addUser=new UserDAOImp(); boolean success=addUser.insert(user1); if(success) JOptionPane.showMessageDialog(null,"注册成功,请重新登陆","",JOptionPane.DEFAULT_OPTION); else{ JOptionPane.showMessageDialog(null,"注册失败!!","",JOptionPane.DEFAULT_OPTION); } } catch(Throwable www){www.printStackTrace();} } else{ JOptionPane.showMessageDialog(null,"您输入的密码前后不符,请重新输入","",JOptionPane.DEFAULT_OPTION); } } else{dispose() ;} } } 用户注册界面截图: c.管理员登陆界面 public class GuanlFram extends Frame implements ActionListener{ Button shenhButton=new Button("审核注册用户"); Button chakButton=new Button("查看系统内的黑名单"); Button _return = new Button("返回"); Box baseBox,box1; public GuanlFram(String s) { super(s); box1=Box.createVerticalBox(); box1.add(Box.createVerticalStrut(10)); box1.add(shenhButton); box1.add(Box.createVerticalStrut(10)); box1.add(chakButton); box1.add(Box.createVerticalStrut(10)); box1.add(_return); baseBox=Box.createHorizontalBox(); baseBox.add(box1); _return.addActionListener(this); shenhButton.addActionListener(this); chakButton.addActionListener(this); setLayout(new FlowLayout()); add(baseBox); this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); setBounds(240,250,500,300); setVisible(true); } public void actionPerformed(ActionEvent e) { if(e.getSource()==shenhButton) { //System.out.println("新注册用户的信息"); UserDAOImp userdao=new UserDAOImp(); List list = new UserDAOImp().findByType(0); final Frame frame=new Frame(); TextArea text=new TextArea(50,50); frame.setLayout(new FlowLayout()); frame.add(text); frame.setBounds(240,250,500,300); // frame.add(_return); frame.setVisible(true); frame.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ frame.setVisible(false); } }); if(list.size()==0) text.append("系统现在没有新注册的用户"); else{ for(int i=0;i<list.size();i++){ User user=(User)list.get(i); text.append("卡号:"+user.getId()); text.append("\n密码:"+user.getPassword()); text.append("\n姓名:"+user.getName()); text.append("\n余额"+user.getMoney()); text.append("\n信用额度"+user.getCredit()); text.append("\n透支金额"+user.getOverdraft()); text.append("\n******************************"); text.append("\n此时系统已经将新注册用户提升为普通用户了!"); user.setType(1); text.append("\n******************************"); text.append("\n系统已经将新注册用户的信用额度设置为1000元!"); user.setCredit(1000); userdao.update(user); } } } else if(e.getSource()==chakButton) { //System.out.println("进入系统黑名单界面"); List list = new UserDAOImp().findByBlacklist(1); final Frame frame=new Frame(); TextArea text=new TextArea(50,50); frame.setLayout(new FlowLayout()); frame.add(text); frame.setBounds(240,250,500,300); frame.setVisible(true); frame.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ frame.setVisible(false); } }); if(list.size()==0) text.append("系统现在没有黑名单的用户"); else{ for(int i=0;i<list.size();i++){ User user=(User)list.get(i); text.append("卡号:"+user.getId()); text.append("\n密码:"+user.getPassword()); text.append("\n姓名:"+user.getName()); text.append("\n余额:"+user.getMoney()); text.append("\n信用额度:"+user.getCredit()); text.append("\n透支金额:"+user.getOverdraft()); text.append("\n******************************"); } } } else if(e.getSource() == _return){ new LoginView(); dispose(); } } } 管理员登陆界面截图: e.普通用户登陆界面 public class PtFram extends Frame implements ActionListener{ private String id; Button getButton=new Button("现金转出"); Button setButton=new Button("现金转入"); Button changeButton=new Button("个人信息修改"); Button serchButton=new Button("余额查询"); Button serchjiluButton=new Button("交易记录查询"); Button serchfhButton=new Button("返回"); Box baseBox,box1; public PtFram(String s,String id) { super(s); this.id=id; box1=Box.createVerticalBox(); box1.add(Box.createVerticalStrut(10)); box1.add(getButton); box1.add(Box.createVerticalStrut(10)); box1.add(setButton); box1.add(Box.createVerticalStrut(10)); box1.add(changeButton); box1.add(Box.createVerticalStrut(10)); box1.add(serchButton); box1.add(Box.createVerticalStrut(10)); box1.add(serchjiluButton); box1.add(Box.createVerticalStrut(10)); box1.add(serchfhButton); baseBox=Box.createHorizontalBox(); baseBox.add(box1); getButton.addActionListener(this); setButton.addActionListener(this); changeButton.addActionListener(this); serchButton.addActionListener(this); serchjiluButton.addActionListener(this); serchfhButton.addActionListener(this); setLayout(new FlowLayout()); add(baseBox); this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); setBounds(240,250,500,300); setVisible(true); } public void actionPerformed(ActionEvent e) { if(e.getSource()==getButton) { System.out.println("进入现金转出界面"); new GetFrame(id).setVisible(true); } else if(e.getSource()==setButton) { System.out.println("进入现金转入界面"); new SetFrame(id).setVisible(true); } else if(e.getSource()==changeButton) { System.out.println("进入信息修改界面"); //User user=new UserDAOImp().update(id); new ChangePasswordFrame(id).setVisible(true); } else if(e.getSource()==serchButton) { System.out.println("进入余额查询界面");
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 管理财经 > 管理学资料

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服