版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、重庆邮电大学项目报告封面 2014-2015年第一学期课程名称 面向对象程序设计 姓 名 杨守建 年 级 2012级 专 业 计算机科学与技术专业卓越工程师班 2015年 01 月 08 日面向对象程序设计选题报告学号:2012211869 姓名: 杨阳 学院/专业: 计算机卓越工程师 学号:2012211531 姓名: 杨守建 学院/专业: 计算机卓越工程师 学号:2012211685 姓名: 何益 学院/专业: 计算机卓越工程师 学号:2012211585 姓名: 梅香 学院/专业: 计算机卓越工程师 题目个人银行账户管理系统选题依据根据老师上课的要求,通过小组各个成员的努力,完整地编写一
2、个具备基本功能,并有自己小组的特色个人银行的管理系统。基于此,我们小组的特色主要是这是一个个人银行账户的管理,因此,没有办法设定存钱和取钱的功能,因为这只是一个账户,用户登录之后可以对银行账户里的银行卡进行操作,包括转账、查询交易记录、余额查询等。这个系统是在专有银行的基础上进行操作的,为此,我们将设计一个自己的银行,并在已有的账户上进行操作。开发小组成员及分工姓名职务负责工作杨阳项目经理逻辑运行框架设计、模块设计、数据库设计及相关sql语句实现、整理完成文档、调试杨守建技术骨干开发环境搭建、主功能选择模块、子业务模块、模块整合何益技术助理开发环境搭建、子业务模块、模块整合、调试梅香美工数据库
3、设计及相关sql语句实现、整理完成文档、ps界面美化开发思路及总体设计采用面向对象的Java Swing技术和MySql数据库,编写实现个人银行账户管理系统的基本功能,包括用户管理功能、银行业务功能和管理员管理三个主要方面的功能。一需求分析当我们收集了大量的数据后,应该把它们保存起来进入近一步的处理,进一步的抽取有用的信息。当年人们把数据存放在文件柜中,可现在随着社会的发展,数据量急剧增长,现在人们就借助计算机和数据库技术科学的保存大量的数据,以便能更好的利用这些数据资源。 通过银行管理系统的构造以及账户的个人的信息还有卡号管理的相关信息制成表格,输入到数据库中,使之能够进行查询、修改、删除并
4、且与个人银行系统执行相同的操作。二具体功能设计个人银行账户管理系统为用户提供用户注册、用户登录、用户信息修改、余额查询、转账、卡管理 等主要功能。最后还要实现了界面的友好化,使得用户可以在不同的界面环境下使用本系统。在用户注册功能下,用户可以注册一个属于自己的银行账号,并在此基础上进行相关的操作。注册用户时,需要填写一些用户的基本信息,包括设置账户的密码,规定账户的密码是六位数字,用户还需要填写联系电话,以方便在密码遗忘的情况下,通过手机号找回密码。注册完用户自己的账户之后,用户进行登录,然后进入到主界面。首先,用户可以利用信息修改的功能界面对用户个人信息进行修改。修改的信息包括用户昵称、家庭
5、住址、性别、联系电话还有用户登录的密码。在进行密码修改之前,要先输入原始密码才能对密码进行修改。最主要的功能就是基于银行卡的管理,包括余额查询、转账、交易记录的查询都是基于银行的操作的。首先初次登录的用户需要添加一个实际已经存在的银行卡,一个用户可以添加多张银行卡,通过输入银行卡号来添加银行卡,这个银行卡必须是事先已经存在了的银行卡,然后跟用户的账户相关联,就可以进行其他的操作了。在转账的功能界面,用户可以向其他用户的银行卡进行转账,也可以向自己账户里面的其他银行卡进行转账。在选择了要转账的银行卡号之后,会出现转入卡号所在用户账户的姓名,已防止出现由于卡号输错而错误转账的情况。另外,在确认转账
6、之前,需要再次输入卡的密码,以防止不是本人的操作。当用户的卡号有了转账之后就可以查询交易记录了。在交易记录查询的功能里面,将显示转入的明细情况,包括转入的卡号、转出的金额、转出的时间等具体情况,方便用户能够更加清楚看到近期来的交易情况。当用户进行交易之后可以在余额查询的功能界面里查询账户所有卡的余额,用户还可以看到对应银行卡的卡类型,是活期还是死期,还有活期及死期的年限,为用户提供了极其友好化的查询管理。最后还是回到银行卡管理上面,当用户添加银行卡之后,还可以对卡进行一些其他的操作。当银行卡丢失或者是由于个人原因不再使用本卡之后,可以对银行卡进行挂失处理,如果过一段时间(不超过三个月,超过三个
7、月卡号自动失效)用户仍然需要用到这张银行卡,则可以利用找回卡的操作对卡进行激活,这样就可以再次只用本卡了。不过在挂失和找回之前都需要输入银行卡的密码,以便确保银行卡的安全。三.程序开发 1).制定日程安排表以及详细的任务分工 2).严格按照进度安排进行任务开展,包括各个功能模块的具体实现,模块之间要满足低耦合和高内聚的要求 3).按照java编程规范编写代码 4).按照java文档注释规范注释四.系统功能图五数据库设计 5.1 E-R图5.2 数据安全处理 1.使用验证码进行校验 2.使用正则表达式进行校验 3.数据库中对于用户密码这类关键消息使用hash函数MD5算法进行数据加密, 保证用户
8、信息安全使用 4. 使用数据库的事务处理,使得数据的一致性得到保障。 5.定时对数据库进行备份,以防数据的丢失。 填表日期: 2015.1.8 面向对象程序设计进展报告学号:2012211869 姓名: 杨阳 学院/专业: 计算机卓越工程师 学号:2012211531 姓名: 杨守建 学院/专业: 计算机卓越工程师 学号:2012211685 姓名: 何益 学院/专业: 计算机卓越工程师 学号:2012211585 姓名: 梅香 学院/专业: 计算机卓越工程师 题目个人银行账户管理工作进展具体任务预算时间人员分配前期准备(相关材料收集)6天10月18日-10月24日杨阳、杨守建、何益、梅香开发
9、环境搭建3天10月25日10月28日杨守建、何益逻辑运行框架设计3天10月28日-11月1日杨阳UI设计4天11月1日-11月5日杨阳模块设计6天11月5日-11月11日杨阳数据库设计及相关sql语句实现3天11月10日-11月13日杨阳、梅香注册登录模块2天11月13日-11月15日杨守建主功能选择模块2天11月15日-11月17日杨守建子业务模块两周11月16日-11月27日杨守建、何益模块整合5天11月27日-12月2日杨阳、杨守建、梅香、何益数据库连接4天12月3日12月7日杨阳、梅香整理完成文档3天12月8日-12月11日杨阳、梅香调试3天12月11日-12月14日杨守建、何益、杨阳
10、、梅香提交文档软件完成项目1天12月15日杨阳工作难点 = 1 * GB3 子模块和主界面的连接。包括模块之间的跳转,多个子模块返回到主界面的问题。 = 2 * GB3 数据库和界面的连接问题。包括数据库的并发控制、数据的多次读入。 = 3 * GB3 代码的整合。包括不同组员之间书写的代码的整合、不同系统环境下出现的问题。 = 4 * GB3 界面的美化。包括图标的设置,背景的修改等问题。 = 5 * GB3 个性化设计。包括界面跳转时背景图片随之跳转。后期工作完善项目存在问题,包括: = 1 * GB3 界面的美化:图标的颜色的修改、字体的修改、背景的修改。图标颜色要凸显突变上的文字、背景
11、的跳转应该更加有规律化。 = 2 * GB3 注册界面的完善。 = 3 * GB3 个人银行logo的设计。 = 4 * GB3 转账时输入卡号,显示转出账户的姓,保证转出账户的安全。 = 5 * GB3 查询交易记录时,为了更明显地显出出转入和转出,用图表的格式表示出金额的转入和转出,增加界面的友好功能。对上述不足进行部分的完善,并调试、测试,直到通过。同时,编写最后的上交文档。填表日期: 2015.1.8 面向对象程序设计项目报告学号: 2012211531 姓名: 杨守建 学院/专业: 计算机科学与技术 题目个人银行账户管理系统选题背景 为了更好的巩固和加强书本所学的知识,把所学的东西转
12、化为实际应用。我们学习了Java应用程序的使用。并应用了Mysql语言。对数据库的创建、修改、删除方法有了一定的了解。通过导入表和删除表、更改表学会了对于表的一些操作。为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。当我们收集了大量的数据后,应该把它们保存起来进入近一步的处理,进一步的抽取有用的信息。当年人们把数据存放在文件柜中,可现在随着社会的发展,数据量急剧增长,现在人们就借助计算机和数据库技术科学的保存大量的数据,以便能更好的利用这些数据资源。 通过银行管理系统的构造以及账户的个人的
13、信息还有卡号管理的相关信息制成表格,输入到数据库中,使之能够进行查询、修改、删除并且与个人银行系统执行相同的操作。需求分析阶段就是要研究我们所作的个人银行管理系统的具体分类和实施过程流图。概念设计阶段要完成数据抽象与局部视图设计还有视图的集成。逻辑结构设计阶段要把E-R图转化为关系模式并且把我们输入的相关表结合在一起完成一个总关系表。最后就是要运行和实施数据库。系统说明系统功能:余额查询、交易记录、转账、卡管理、生活服务、金融服务实现环境:Win7 64位、JRE1.7、JDBC、msql-connector-java-5.1.7-bin.jar开发工具:Eclipse、MySql 5.0系统
14、设计流程图系统实现典型代码:一.JDBC数据库连接:Class.forName(com.mysql.jdbc.Driver); /加载MySql的驱动类 String url = jdbc:mysql:/localhost:3306/c+; String username = root; /数据库用户名String password = 71685294yang; /数据库密码conn = DriverManager.getConnection(url,username,password); /获得数据库的链接System.out.println(连接数据库成功);二.数据库相关操作 1).用
15、户相关 /*用户登陆时,验证用户名和密码的正确性*/public boolean loginCheck(Users user) boolean flag = false;String sql = select * from user where UserName= ? AND UserPassword=?;try PreparedStatement ps = con.prepareStatement(sql);ps.setString(1,user.getuserName() );ps.setString(2,user.getuserPassword();ResultSet ret=ps.ex
16、ecuteQuery(); while(ret.next() flag=true; catch (SQLException e) e.printStackTrace();finally/关闭数据库的链接DBConnection.closeObject(getconnection);DBConnection.closeObject(con);return flag;/*添加用户*/public boolean addUser(Users user) boolean flag = false; String sql = insert into user(UserName, UserState,Us
17、erSex,UserAddress,UserPassword,UserTelephone) values(?,?,?,?,?,?); try PreparedStatement ps = con.prepareStatement(sql); / System.out.println(ID);ps.setString(1, user.getuserName();ps.setString(2, user.getuserState();ps.setString(3, user.getUserSex();ps.setString(4,user.getuserAddress();ps.setString
18、(5, user.getuserPassword();ps.setString(6,user.getuserTelephone();int count = ps.executeUpdate(); /用一个常量标记,看是否插入数据成功if(count0) /插入数据成功flag = true; catch (SQLException e) e.printStackTrace();finallyDBConnection.closeObject(getconnection);DBConnection.closeObject(con); return flag;/删除用户public boolean
19、DeleteUser(int userid) boolean flag = false; String sql = delete from user where userid=?; try PreparedStatement ps = con.prepareStatement(sql);ps.setInt(1, userid);int count = ps.executeUpdate(); /用一个常量标记,看是否插入数据成功if(count0) /插入数据成功flag = true; catch (SQLException e) e.printStackTrace();finallyDBCo
20、nnection.closeObject(getconnection);DBConnection.closeObject(con); return flag;/* 根据用户名,获取用户的信息*/public Users GetOneInformation(String usersName) Users user = new Users();String sql = select * from user where UserName=? ;/生成SQL语句try PreparedStatement ps = con.prepareStatement(sql);ps.setString(1, us
21、ersName);ResultSet ret=ps.executeQuery();while(ret.next()/将查询的结果赋值给user对象user.setuserId(ret.getInt(1);user.setuserName(ret.getString(2);user.setuserPassword(ret.getString(3);user.setuserSex(ret.getString(4);user.setuserState(ret.getString(5);user.setuserAddress(ret.getString(6);user.setuserTelephone
22、(ret.getString(7); catch (SQLException e) e.printStackTrace();finallyDBConnection.closeObject(getconnection);DBConnection.closeObject(con);return user;/*根据用户名,检查用户是否存在*/public boolean CheckUserId(String userName)boolean flag = false;String sql = select * from user where UserName = ?;try PreparedStat
23、ement ps = con.prepareStatement(sql);ps.setString(1, userName);ResultSet ret=ps.executeQuery();while(ret.next()flag = true; /如果存在该帐号,就返回true catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();finallyDBConnection.closeObject(getconnection);DBConnection.closeObject(con);return
24、 flag;/*根据银行卡号,获取用户信息*/ public Users getUserIFByCardId(int cardId) Users user = new Users(); String sql=(select * from user,card where CardID=? AND user.userid=card.userid); try PreparedStatement ps = con.prepareStatement(sql); ps.setInt(1, cardId); ResultSet ret=ps.executeQuery(); while(ret.next()
25、System.out.println(ret.getString(5);user.setuserId(ret.getInt(1);user.setuserName(ret.getString(2);user.setuserPassword(ret.getString(3);user.setuserSex(ret.getString(4);user.setuserState(ret.getString(5);user.setuserAddress(ret.getString(6);user.setuserTelephone(ret.getString(7); catch (SQLExceptio
26、n e) e.printStackTrace();finallyDBConnection.closeObject(getconnection);DBConnection.closeObject(con); return user; /根据用户名获取银行卡号 public String GetCardIDbyUserID(int userid) String cardid = new String20; int i=0; String sql = select cardid from card where Userid= ?;try PreparedStatement ps = con.prep
27、areStatement(sql);ps.setInt(1,userid);ResultSet ret=ps.executeQuery(); while(ret.next() cardidi+=ret.getString(1); catch (SQLException e) e.printStackTrace();finally/关闭数据库的链接DBConnection.closeObject(getconnection);DBConnection.closeObject(con); return cardid; /根据用户名更改用户状态public boolean ChangeUserSta
28、te(String username,String newuserstate) boolean flag = false; String sql = update user set userstate=? where username=? ; try PreparedStatement ps = con.prepareStatement(sql);ps.setString(1, newuserstate);ps.setString(2,username);int count = ps.executeUpdate(); /用一个常量标记,看是否插入数据成功if(count0) /插入数据成功fl
29、ag = true; catch (SQLException e) e.printStackTrace();finally/关闭数据库的链接DBConnection.closeObject(getconnection);DBConnection.closeObject(con); return flag;/更改用户信息public boolean ChangeUserInfo(int userid ,String username,String userpassword,String usersex,String userphone,String userAddress) boolean fl
30、ag = false; String sql = update user set username=?,UserPassword=?,usersex=?,useraddress=?,usertelephone=? where userid=? ; try PreparedStatement ps = con.prepareStatement(sql);ps.setString(1, username);ps.setString(2,userpassword);ps.setString(3, usersex);ps.setString(4, userAddress);ps.setString(5
31、, userphone);ps.setInt(6,userid);int count = ps.executeUpdate(); /用一个常量标记,看是否插入数据成功if(count0) /插入数据成功flag = true; catch (SQLException e) e.printStackTrace();finally/关闭数据库的链接DBConnection.closeObject(getconnection);DBConnection.closeObject(con); return flag; 2).转账相关 /转账public boolean TransAtoB(String
32、cardid1,String cardid2,double money) int count1 = 0,count2=0; boolean flag = false; String sql1 = update card set cardmoney=cardmoney+? where cardid=?; try PreparedStatement ps= con.prepareStatement(sql1);ps.setDouble(1, money);ps.setString(2, cardid1);count1 = ps.executeUpdate(); catch (SQLExceptio
33、n e) e.printStackTrace();finally/关闭数据库的链接DBConnection.closeObject(getconnection);DBConnection.closeObject(con); DBConnection getconnection=new DBConnection(); Connection con=getconnection.getConnection(); String sql2 = update card set cardmoney=cardmoney -? where cardid=?; try PreparedStatement ps =
34、 con.prepareStatement(sql2);ps.setDouble(1, money);ps.setString(2, cardid2);count2= ps.executeUpdate(); catch (SQLException e) e.printStackTrace();finally/关闭数据库的链接DBConnection.closeObject(getconnection);DBConnection.closeObject(con); if(count1+count21) flag=true; return flag;3).卡相关、登录相关、记录相关(略)二无外延框
35、架 public static JFrame frame1=new JFrame();/用于处理拖动事件,表示鼠标按下时的坐标,相对于JFrameint xOld = 0;int yOld = 0;public static void main(String args) JFrameNoBorder j = new JFrameNoBorder();j.setVisible(true);j.setSize(600,370);frame1=j;public JFrameNoBorder() this.setLayout(null);/处理拖动事件this.addMouseListener(new
36、 MouseAdapter() public void mousePressed(MouseEvent e) xOld = e.getX();yOld = e.getY(););this.addMouseMotionListener(new MouseMotionAdapter() Overridepublic void mouseDragged(MouseEvent e) int xOnScreen = e.getXOnScreen();int yOnScreen = e.getYOnScreen();int xx = xOnScreen - xOld;int yy = yOnScreen
37、- yOld;JFrameNoBorder.this.setLocation(xx, yy););三密码两次验证框 public void actionPerformed(ActionEvent arg0) if(userPassword1.getText().length()=0)JOptionPane.showOptionDialog(null, 请输入密码, 错误信息,JOptionPane.DEFAULT_OPTION,JOptionPane.ERROR_MESSAGE, null, null, null);else if(userPassword1.getText().length(
38、)!=0) &(userPassword2.getText().length()=0) )JOptionPane.showOptionDialog(null, 为了安全请核对密码, 错误信息,JOptionPane.DEFAULT_OPTION,JOptionPane.ERROR_MESSAGE, null, null, null);else if(userPassword1.getText().length()!=0) &(userPassword2.getText().length()!=0)if (!userPassword1.getText().equals(userPassword2
39、.getText() /判断两次输入密码是否一致JOptionPane.showOptionDialog(null, 两次输入密码不一致,请重输, 错误信息,JOptionPane.DEFAULT_OPTION,JOptionPane.ERROR_MESSAGE, null, null, null);四验证码实现机制String yanzen=new String();String cao=new String7; cao0=0718; cao1=08DE; cao2=1396; cao3=1E2E; cao4=1I9V; cao5=1PKJ; cao6=1Z7K; if(userYan.ge
40、tText().length()=0) /验证码为空 JOptionPane.showOptionDialog(null, 请输入验证码, 错误信息,JOptionPane.DEFAULT_OPTION,JOptionPane.ERROR_MESSAGE, null, null, null); else if(userYan.getText().length()!=0) /验证码不为空 if(!userYan.getText().equals(caosign) /验证码错误 JOptionPane.showOptionDialog(null, 验证码错误, 错误信息,JOptionPane.D
41、EFAULT_OPTION,JOptionPane.ERROR_MESSAGE, null, null, null);五.面板跳转 UserInforChangePanel ChageUserInfo=new UserInforChangePanel(); MainFrame.frame1.add( ChageUserInfo.ReturnPanel(); mainviewpanl.setVisible(false);六Java socket1).服务器端while (it.hasNext() /遍历每个事件trySelectionKey key = (SelectionKey)it.next
42、();/有一个新联接接入事件,服务端事件if (key.readyOps() & SelectionKey.OP_ACCEPT)= SelectionKey.OP_ACCEPT) / 接收这个新连接ServerSocketChannel serverChanel = (ServerSocketChannel)key.channel();/从serverSocketChannel中创建出与客户端的连接socketChannelSocketChannel sc = serverChanel.accept();sc.configureBlocking( false );/ Add the new c
43、onnection to the selector/ 把新连接注册到选择器SelectionKey newKey = sc.register( selector, SelectionKey.OP_READ );it.remove();System.out.println( Got connection from +sc );else/读客户端数据的事件,此时有客户端发数据过来,客户端事件 if(key.readyOps() & SelectionKey.OP_READ)= SelectionKey.OP_READ)/ 读取数据SocketChannel sc = (SocketChannel)
44、key.channel();int bytesEchoed = 0;while(bytesEchoed = sc.read(echoBuffer) 0)System.out.println(bytesEchoed:+bytesEchoed);echoBuffer.flip();System.out.println(limet:+echoBuffer.limit();byte content = new byteechoBuffer.limit(); echoBuffer.get(content);String result=new String(content);doPost(result,s
45、c);echoBuffer.clear();it.remove(); 2).客户端(登录为例)s=new Socket(127.0.0.1,5555);/写os=s.getOutputStream(); os.write(name.getBytes();os.write(|);/用户名与密码用|分隔os.write(pswd.getBytes();os.flush();/读内容Thread.sleep(1000);is=s.getInputStream();int len=is.available();System.out.println(len:+len);byte bytes=new bytelen;is.read(bytes);String resut=new String(bytes);System.out.println(resut:+resut);/TODO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学生劳动节个人心得体会(34篇)
- 羽毛球教学计划15篇
- 认识北京地理环境
- 证言真实保证
- 详述土地预审招标文件内容
- 财务咨询顾问合作协议范例
- 质量责任放心装修保证
- 购销合同中的创新与合作跨界发展
- 购销合同意向范文
- 购销合同解除的合同解除协议
- 北京市海淀区第二实验小学2022-2023学年度五年级上学期期末诊断数学试题
- 教科版五年级科学上册第三单元测试卷附答案
- 电梯高处施工方案
- 《跨境电子商务客户服务管理》试卷及答案 卷B
- 心理团体辅导的保密协议
- 高血压病教学查房教案
- 东方绿洲军训日记500字(八篇)
- 取保后申请去外地上班申请书范本
- 医院护理培训课件:《根本原因分析-RCA-从错误中学习》
- 门静脉高压个案护理查房
- 临床医学概论题库(含答案)
评论
0/150
提交评论