信用卡在线管理系统.docx

上传人:b****5 文档编号:8344170 上传时间:2023-01-30 格式:DOCX 页数:36 大小:344.22KB
下载 相关 举报
信用卡在线管理系统.docx_第1页
第1页 / 共36页
信用卡在线管理系统.docx_第2页
第2页 / 共36页
信用卡在线管理系统.docx_第3页
第3页 / 共36页
信用卡在线管理系统.docx_第4页
第4页 / 共36页
信用卡在线管理系统.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

信用卡在线管理系统.docx

《信用卡在线管理系统.docx》由会员分享,可在线阅读,更多相关《信用卡在线管理系统.docx(36页珍藏版)》请在冰豆网上搜索。

信用卡在线管理系统.docx

信用卡在线管理系统

 

合肥学院

计算机科学与技术系

 

课程设计报告

2012~2013学年第一学期

 

课程

Java课程设计

课程设计名称

信用卡在线管理系统

专业班级

11计本(4)班

姓名

黄伟

指导教师

张贯虹胡春玲

2013年1月

一.需求分析

1、课程设计名称及内容

课程设计名称:

信用卡在线管理系统

设计内容:

设计一个信用卡管理系统,实现基于网络管理信用卡信息。

2、任务和要求

系统用户分为管理员、注册用户和普通用户。

a)提供注册功能,系统的访问者可以注册成为注册用户,注册信息包括卡号、密码和其他个人信息。

注册用户没有任何操作权限,必须经管理员审批通过后成为普通用户才有权操作。

新注册的用户,卡上初始金额为0。

b)普通用户可以执行现金转入、现金转出、个人信息修改、余额查询和交易记录查询功能。

c)用户可以录入转入金额和转出金额,当转出金额大于信用卡的余额时,须判断透支金额是否在本卡的信用额度内(信用额度由管理员设定),如果在则允许透支,否则拒绝支出。

d)当信用卡发生透支后,在20天内不计利息,20天后按每天1%计算利息,当透支金额+透支利息超过本卡的信用额度,则本卡自动转入“黑名单”(利息继续计算),不再允许进行现金转出操作。

e)普通用户可以随时查看卡内余额。

f)普通用户可以按时间段查看交易记录,包括转入、转出和透支情况。

g)管理员可以审核注册用户,设定用户信用额度,批准成为普通用户。

h)管理员可以查看系统内的黑名单,包括卡号和透支额度。

二.设计

1.数据库设计思想:

(1)数据库的设计:

我们使用的数据库是MicrosoftSQL2005。

创建record和user表:

createdatabasecard;

usecard;

 

createtablerecord

idintnotnullprimarykey,

fromIdvarchar(100)notnull,

toIdvarchar(50)notnull,

moneyfloatnotnull,

tradetimedatetime

);

createtableuser1

idvarchar(50)primarykeynotnull,

passwordvarchar(50)notnull,

namevarchar(100)notnull,

typeint,

moneyfloat,

creditfloat,

overdraftfloat,

blacklistint

);、

交易表

用户表

(2)对数据库的操作

Insert主要时用来对数据库进行插入操作,例如在record表中插入一条记录为,

publicbooleaninsert(Recordrecord){

Stringsql="insertintorecord(id,fromId,toId,money,tradetime)values(?

?

?

?

?

)";

try{

PreparedStatementpre=conn.prepareStatement(sql);

Calendarcalendar=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();

returntrue;

}catch(SQLExceptione){

e.printStackTrace();

}

returnfalse;

}

Delete是多数据表中的记录加以删除,例如对user表中的记录删除操作为:

publicbooleandelete(Useruser){

Stringsql="deletefrom[user]whereid=?

";

try{

PreparedStatementpre=conn.prepareStatement(sql);

pre.setString(1,user.getId());

pre.execute();

returntrue;

}catch(SQLExceptione){

e.printStackTrace();

}

returnfalse;

}

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.登陆时主界面设计

publicclassLoginViewextendsJFrameimplementsActionListener{

privateJButtonadminLoginButton;

privateJButtonzhucButton;

privateJButtonloginButton;

privateJTextFieldidField;

privateJPasswordFieldpasswordField;

privateJLabelshowMessageLabel;

privateStringtitle="登陆";

privateJPanelpanel=null;

//protectedImageIconicon;

publicLoginView(){

//窗口属性设置

this.setBounds(250,80,550,600);

//icon=newImageIcon("img/1.jpg");

panel=newJPanel();

panel.setLayout(null);

panel.setBounds(250,80,600,650);

//创建相应的组件

adminLoginButton=newJButton("管理员登陆");

JLabelwelcomeLabel=newJLabel("欢迎使用信用卡网上管理模拟系统");

showMessageLabel=newJLabel();

JLabelnameLabel=newJLabel("账号");

JLabelpasswordLabel=newJLabel("密码");

idField=newJTextField();

passwordField=newJPasswordField();

zhucButton=newJButton("注册");

loginButton=newJButton("登陆");

//button.setIcon(newImageIcon(button.getToolkit().getImage("F:

\\MyEclipse\\abcdefg\\atm\\icon.png")));

//组件属性设置

adminLoginButton.setBounds(390,340,120,25);

showMessageLabel.setBounds(100,500,500,30);

welcomeLabel.setFont(newFont("隶书",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(newWindowAdapter(){

publicvoidwindowClosing(WindowEvente){

System.exit(0);

}

});

this.setResizable(false);

this.setVisible(true);

}

/*

*事件处理

*/

publicvoidactionPerformed(ActionEvente){

if((JButton)e.getSource()==zhucButton){

newzhucFram("新用户注册界面");

}

elseif((JButton)e.getSource()==loginButton){

UserDAOImpuserDao=newUserDAOImp();

Useruser=newUser();

LoginServiceloginService=newLoginService();

user.setId(idField.getText().trim());

user.setPassword(String.valueOf(passwordField.getPassword()));

Useruser1=userDao.findByIdAndPassword(user);

System.out.println("user="+user.getPassword());

try{

loginService.checkLoginInfo(user1);

//用户登陆成功后得主界面

newPtFram("用户登陆成功后的操作界面",user.getId()).setVisible(true);

this.setVisible(false);

System.out.println("ghghj");

JOptionPane.showMessageDialog(null,"登陆成功!

","",JOptionPane.DEFAULT_OPTION);

}catch(LoginInfoNotRightExceptione1){

e1.printStackTrace();

System.out.println(e.toString());

showMessageLabel.setText(e.toString());

}

}

elseif(e.getSource()==adminLoginButton){

if("admin".equals(idField.getText())&&"admin".equals(String.valueOf(passwordField.getPassword()))){

//管理员注册成功后的主界面

newGuanlFram("管理员登陆成功后的操作界面").setVisible(true);

this.setVisible(false);

}

else{

showMessageLabel.setText("账号错或者密码错,请查找后重新登陆!

");

idField.setText(null);

passwordField.setText(null);

}

}

}

}

主界面截图:

b.注册新用户界面

publicclasszhucFramextendsJFrameimplementsActionListener{

Boxbasebox,box1,box2;

ButtonButton1,Button2;

TextFieldNameTextField=newTextField(12);

TextFieldidTextField=newTextField(12);

JPasswordFieldpasswordTextField=newJPasswordField(12);

JPasswordFieldrepasswordTextField=newJPasswordField(12);

publiczhucFram(Strings)

{

super(s);

Button1=newButton("确定");

Button2=newButton("取消");

box1=Box.createVerticalBox();

box1.add(newLabel("姓名"));

box1.add(Box.createVerticalStrut(8));

box1.add(newLabel("卡号"));

box1.add(Box.createVerticalStrut(8));

box1.add(newLabel("请输入密码"));

box1.add(Box.createVerticalStrut(8));

box1.add(newLabel("请再输一遍"));

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(newFlowLayout());

add(basebox);

setBounds(240,250,500,300);

setVisible(true);

}

publicvoidactionPerformed(ActionEvente)

{

if(e.getSource()==Button1)

{

StringuserName=String.valueOf(NameTextField.getText());

StringuserId=String.valueOf(idTextField.getText());

StringuserPassword=String.valueOf(passwordTextField.getPassword());

StringtestPassword=String.valueOf(repasswordTextField.getPassword());

if(userPassword.equals(testPassword)){

try{

Useruser1=newUser();

user1.setId(userId);

user1.setName(userName);

user1.setPassword(userPassword);

UserDAOImpaddUser=newUserDAOImp();

booleansuccess=addUser.insert(user1);

if(success)JOptionPane.showMessageDialog(null,"注册成功,请重新登陆","",JOptionPane.DEFAULT_OPTION);

else{

JOptionPane.showMessageDialog(null,"注册失败!

","",JOptionPane.DEFAULT_OPTION);

}

}

catch(Throwablewww){();}

}

else{

JOptionPane.showMessageDialog(null,"您输入的密码前后不符,请重新输入","",JOptionPane.DEFAULT_OPTION);

}

}

else{dispose();}

}

}

用户注册界面截图:

c.管理员登陆界面

publicclassGuanlFramextendsFrameimplementsActionListener{

ButtonshenhButton=newButton("审核注册用户");

ButtonchakButton=newButton("查看系统内的黑名单");

Button_return=newButton("返回");

BoxbaseBox,box1;

publicGuanlFram(Strings)

{

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(newFlowLayout());

add(baseBox);

this.addWindowListene

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1