信用卡在线管理系统(共30页).doc_第1页
信用卡在线管理系统(共30页).doc_第2页
信用卡在线管理系统(共30页).doc_第3页
信用卡在线管理系统(共30页).doc_第4页
信用卡在线管理系统(共30页).doc_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、合肥学院计算机科学与技术系课程设计报告20122013学年第一学期课程Java课程设计课程设计名称信用卡在线管理系统专业班级11计本(4)班姓名黄伟指导教师张贯虹 胡春玲2013年1月一. 需求分析1、课程设计名称及内容课程设计名称:信用卡在线管理系统设计内容:设计一个信用卡管理系统,实现基于网络管理信用卡信息。2、任务和要求系统用户分为管理员、注册用户和普通用户。a) 提供注册功能,系统的访问者可以注册成为注册用户,注册信息包括卡号、密码和其他个人信息。注册用户没有任何操作权限,必须经管理员审批通过后成为普通用户才有权操作。新注册的用户,卡上初始金额为0。b) 普通用户可以执行现金转入、现金

2、转出、个人信息修改、余额查询和交易记录查询功能。c) 用户可以录入转入金额和转出金额,当转出金额大于信用卡的余额时,须判断透支金额是否在本卡的信用额度内(信用额度由管理员设定),如果在则允许透支,否则拒绝支出。d) 当信用卡发生透支后,在20天内不计利息,20天后按每天1%计算利息,当透支金额+透支利息超过本卡的信用额度,则本卡自动转入“黑名单”(利息继续计算),不再允许进行现金转出操作。e) 普通用户可以随时查看卡内余额。f) 普通用户可以按时间段查看交易记录,包括转入、转出和透支情况。g) 管理员可以审核注册用户,设定用户信用额度,批准成为普通用户。h) 管理员可以查看系统内的黑名单,包括

3、卡号和透支额度。二. 设计1数据库设计思想:(1)数据库的设计:我们使用的数据库是Microsoft SQL 2005。创建record和user表:createdatabase card;use card;createtable record(id intnotnullprimarykey,fromId varchar(100)notnull,toId varchar(50)notnull,moneyfloatnotnull,tradetime datetime);createtable user1 (id varchar(50)primarykeynotnull,password varc

4、har(50)notnull,namevarchar(100)notnull,typeint,moneyfloat,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 Prep

5、aredStatement 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

6、();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.

7、execute();return true; catch (SQLException e) e.printStackTrace();return false;Update是对数据库中的信息加以修改!findAll是查找数据库中的所有记录!findById是通过用户给定的id好来对数据库进行扫描,查找出所有与输入的id相匹配的信息!同时也可以根据其他的关键字对数据库进行查找查找,例如是否是黑名单,是否已经有透支额了等等,具体的实现见代码!2.java程序的设计:主要以下几个包:-bean -User表示的是user表中的一条记录 -Record表示的是record表中的一条记录 -ChangeP

8、asswordBean是对修改密码时的所有属性的封装 -zhucBean是在新用户注册时的一条记录,主要包括属性id ,password ,name ;以及set和get方法!-dao -DBConnection用于连接数据库-RecordDAO接口是封装对数据表Record的操作-UserDAO接口是封装对数据表User的操作 -exception-inputChangePasswordInfoNotRightException是用来显示输入的修改密码的出错的信息!-InputGetNumNotRightException是用户输入的取款金额不合法异常-InputSetNumNotRight

9、Exception是用户输入的存款金额不合法异常-LoginInfoNotRightException 是用户登陆是的不合法异常-imp -RecordDAOImp是对接口RecordDAO中的方法的实现。 -UserDAOImp是对接口UserDAO中方法的实现。-service -ChangePasswordService是对修改密码服务中可能出现的不正常信息加以分类并且予以处理。 -GetService是对用户输入的取款信息的不正常信息加以分类并且予以处理。 -LoginService是对用户在登陆时输入信息的不正常信息加以分类并且予以处理。 -SetService是对用户输入的存款信息

10、的不正常信息加以分类并且予以处理。-view -ChangePasswordFrame是修改密码的操作界面。-GetFrame是用户进行取款操作的界面。-GuanlFram是管理员进行操作的界面。-LoginView是登陆主界面。-PtFram是普通用户的操作界面。-SetFrame是用户进行存款操作的界面。-zhucFram是新注册用户进行注册的界面。a.登陆时主界面设计publicclassLoginViewextends JFrame implements ActionListenerprivate JButton adminLoginButton;private JButton zhu

11、cButton;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(&qu

12、ot;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 password

13、Label=new JLabel("密码");idField=new JTextField();passwordField=new JPasswordField();zhucButton=new JButton("注册");loginButton=new JButton("登陆");/button.setIcon(new ImageIcon(button.getToolkit().getImage("F:MyEclipseabcdefgatmicon.png");/组件属性设置adminLoginButton.se

14、tBounds(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.

15、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);

16、/向面板中添加各个组件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()publicvoid windo

17、wClosing(WindowEvent e)System.exit(0););this.setResizable(false);this.setVisible(true);/* * 事件处理 */publicvoid actionPerformed(ActionEvent e) if(JButton)e.getSource()=zhucButton)new zhucFram("新用户注册界面");elseif(JButton)e.getSource()=loginButton)UserDAOImp userDao=new UserDAOImp();User user=ne

18、w 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);/用户登陆成功后得主

19、界面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

20、(e.toString();showMessageLabel.setText(e.toString();elseif(e.getSource()=adminLoginButton)if("admin".equals(idField.getText()&&"admin".equals(String.valueOf(passwordField.getPassword()/管理员注册成功后的主界面new GuanlFram(" 管理员登陆成功后的操作界面").setVisible(true);this.setVisible(

21、false);else showMessageLabel.setText("账号错或者密码错,请查找后重新登陆!");idField.setText(null);passwordField.setText(null);主界面截图:b.注册新用户界面publicclasszhucFramextends JFrame implements ActionListener Box basebox,box1,box2;Button Button1,Button2;TextField NameTextField =new TextField(12);TextField idTextFi

22、eld =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("姓

23、名");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.createVer

24、ticalBox();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.createHoriz

25、ontalBox();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);publicvoid actionPerformed(ActionEvent e) if(e.getSource()=Butt

26、on1) 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)t

27、ry 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 JOption

28、Pane.showMessageDialog(null,"注册失败!","",JOptionPane.DEFAULT_OPTION); catch(Throwable www)www.printStackTrace(); else JOptionPane.showMessageDialog(null,"您输入的密码前后不符,请重新输入","",JOptionPane.DEFAULT_OPTION); elsedispose() ;用户注册界面截图:c.管理员登陆界面publicclassGuanlFramexten

29、ds Frame implements ActionListenerButton 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);bo

30、x1.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(ne

31、w FlowLayout();add(baseBox);this.addWindowListener(new WindowAdapter()publicvoid windowClosing(WindowEvent e)System.exit(0););setBounds(240,250,500,300);setVisible(true);publicvoid actionPerformed(ActionEvent e) if(e.getSource()=shenhButton) /System.out.println("新注册用户的信息"); UserDAOImp user

32、dao=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()

33、publicvoid windowClosing(WindowEvent e) frame.setVisible(false); );if(list.size()=0)text.append("系统现在没有新注册的用户");elsefor(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姓名

34、:"+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

35、("n系统已经将新注册用户的信用额度设置为1000元!"); user.setCredit(1000); userdao.update(user); elseif(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 FlowL

36、ayout();frame.add(text); frame.setBounds(240,250,500,300);frame.setVisible(true);frame.addWindowListener(new WindowAdapter()publicvoid windowClosing(WindowEvent e) frame.setVisible(false); );if(list.size()=0)text.append("系统现在没有黑名单的用户");elsefor(int i=0;i<list.size();i+) User user=(User)l

37、ist.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.

38、append("n*"); elseif(e.getSource() = _return)new LoginView(); dispose(); 管理员登陆界面截图:e.普通用户登陆界面publicclassPtFramextends Frame implements ActionListenerprivate String id;Button getButton=new Button("现金转出");Button setButton=new Button("现金转入");Button changeButton=new Button(

39、"个人信息修改");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.createVerticalStru

40、t(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

41、);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);set

42、Layout(new FlowLayout();add(baseBox);this.addWindowListener(new WindowAdapter()publicvoid windowClosing(WindowEvent e)System.exit(0););setBounds(240,250,500,300);setVisible(true);publicvoid actionPerformed(ActionEvent e) if(e.getSource()=getButton) System.out.println("进入现金转出界面");new GetFra

43、me(id).setVisible(true); elseif(e.getSource()=setButton) System.out.println("进入现金转入界面");new SetFrame(id).setVisible(true); elseif(e.getSource()=changeButton) System.out.println("进入信息修改界面");/User user=new UserDAOImp().update(id);new ChangePasswordFrame(id).setVisible(true); elseif

44、(e.getSource()=serchButton) System.out.println("进入余额查询界面");List list= newUserDAOImp().findById(id);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);for(int i=0;i<li

45、st.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透支金额"

46、;+user.getOverdraft(); text.append("n*"); frame.addWindowListener(new WindowAdapter()publicvoid windowClosing(WindowEvent e) frame.setVisible(false); ); elseif(e.getSource()=serchjiluButton) System.out.println("进入交易记录查询界面");List list = new RecordDAOImp().findAll();final Frame fra

47、me=new Frame(); TextArea text=new TextArea(50,50); frame.setLayout(new FlowLayout();frame.add(text); frame.setBounds(240,250,500,300); frame.addWindowListener(new WindowAdapter()publicvoid windowClosing(WindowEvent e) frame.setVisible(false); );frame.setVisible(true);for(int i=0;i<list.size();i+)

48、 Record record=(Record)list.get(i);if("admin".equals(record.getFromId() text.append("n id号为"+record.getToId()+"的用户从系统取出金额");else text.append("n id号为"+record.getFromId()+"的用户"+"向系统输入金额"); text.append("n交易金额"+record.getMoney(); text

49、.append("n交易时间"+record.getTradetime(); elseif(e.getSource()=serchfhButton) new LoginView(); dispose(); 普通用户登陆界面截图:f.取款界面publicclassGetFrameextends JFrame implements ActionListenerprivate String id;private String title="取款"private User pt;private JLabel showMessageLabel=null;priva

50、te JLabel infoLabel=null;private JButton resetButton=null;private JButton ensureButton=null;private JTextField inputGetCashNumField=null;public GetFrame(String id) this.id=id;this.setLayout(null);this.setBounds(250, 80, 550,600);/创建组件showMessageLabel=new JLabel();infoLabel=new JLabel("请输入金额&quo

51、t;);resetButton=new JButton("重置");ensureButton=new JButton("确定");inputGetCashNumField=new JTextField();/设置组件的属性showMessageLabel.setBounds(100, 500, 500, 30);infoLabel.setBounds(100, 250, 100, 35);inputGetCashNumField.setBounds(205, 250, 180, 25);ensureButton.setBounds(205, 300,60

52、,25);resetButton.setBounds(305, 300,60,25);/注册组件ensureButton.addActionListener(this);resetButton.addActionListener(this);/向面板中添加组件this.add(infoLabel);this.add(inputGetCashNumField);this.add(ensureButton);this.add(resetButton);this.add(showMessageLabel);publicvoid actionPerformed(ActionEvent e) if(e.

53、getSource()=ensureButton)UserDAOImp getCashDao=new UserDAOImp();RecordDAOImp recorddao=new RecordDAOImp();GetService getCashService=new GetService();String cashNum=inputGetCashNumField.getText();try pt=(User)getCashDao.findById(id).get(0);getCashService.CashNumIsRight(cashNum,pt.getCredit(),pt.getMo

54、ney(),pt.getOverdraft();float getCashNum=Float.parseFloat(cashNum);double newBalance=pt.getMoney()-getCashNum;User clientOne=new User();clientOne=this.pt;if(newBalance<=0)clientOne.setMoney(0);clientOne.setOverdraft(-newBalance)+pt.getOverdraft();else clientOne.setMoney(newBalance);getCashDao.update(clientOne);this.showMessageLabel.setText("取款成功!");/获取系统的当前时间,以作为用户的操作时间Calendar calen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论