1、Java课设课 程 设 计 报 告课程名称 Java课程设计 课题名称 Java和Json之间的数据转换 专 业 计算机科学与技术 班 级 计算机1202 学 号 12 姓 名 指导教师 李远辉 2015年 3 月 28 日湖南工程学院课 程 设 计 任 务 书课程名称 Java课程设计 课 题 Java和Json之间的数据转换 专业班级 计算机1202 学生姓名 学 号 12 指导老师 李远辉 审 批 任务书下达日期 2015 年 3 月 18 日任务完成日期 2015年 3 月 28 日目录1. 主要功能 12. 基本功能的实现与分析 13. 功能模块的划分 23.1 功能模块图 23.2
2、 流程图 23.3 功能模块的实现 34. 程序调试 55. 总结 86. 附件 91. 主要功能 本课题是用java语言来创建简易银行系统的图形界面,使用json来对银行系统的数据进行处理的。该程序可以让用户使用在本系统中注册的账号能像银行卡一样使用,也可登录自助客户端自助转账。管理员也可登录管理端对用户进行最高权限的管理。2. 基本功能的实现与分析本程序基本分为两大方面: (1)user用于存储用户信息,包括以下字段: Id(用户卡号)、password(用户密码)、money(用户余额)、tel(用户手机号码)、sex(用户性别)、sfz(用户身份证号)。主索引为:Id (2)Histo
3、ry用户存储用户操作记录,包括以下字段:oid(操作用户)、eid(目标用户)、money(操作金额)、yu(用户余额)、time(操作时间)、type(操作类型)。索引为:oid、eid。本程序的基本需求为:有管理员和普通用户两种用户类型。管理员拥有对普通用户增删改查的操作和用户存取款、任意人账单查询的权限。用户拥有查询自己信息、转账和查询自己账单的权限。3. 功能模块的划分3.1 功能模块图 图 3.13.2 流程图3.3 功能模块的实现 (1)部分布局并没有采取传统JAVA SWING布局方式。而是利用控件数组+循环。例如:UserPan2.java中for(int i=0;i=0 &
4、ch=9) e.consume(); (2)对数据的增删改操作:public int executeUpdate(String preparedSql, String param) int num = 0; / 处理SQL,执行SQL try / 得到PreparedStatement对象 pstmt = conn.prepareStatement(preparedSql); if (param != null) for (int i = 0; i param.length; i+) / 为预编译sql设置参数 pstmt.setString(i + 1, parami); / 执行SQL语句
5、 num = pstmt.executeUpdate(); catch (SQLException e) / 处理SQLException异常 e.printStackTrace(); return num;(3)对数据的查询操作: public ResultSet executeQuery(String preparedSql, String param) / 处理SQL,执行SQL try / 得到PreparedStatement对象 pstmt = conn.prepareStatement(preparedSql); if (param != null) for (int i = 0
6、; i param.length; i+) / 为预编译sql设置参数 pstmt.setString(i + 1, parami); / 执行SQL语句 rs = pstmt.executeQuery(); catch (SQLException e) / 处理SQLException异常 e.printStackTrace(); return rs; 4. 程序调试程序开始如图4.1所示,由于是管理员对系统直接管理,因此不需要提供注册入口:图4.1管理员登录后如图4.2所示,可对系统内的用户增删改查。图4.2其中用户存取款如图4.3所示。图4.3普通用户登录后如图4.4所示。图4.4普通用
7、户账单查询如图4.5所示。图4.55. 总结此次课程设计让我更了解和熟悉了Java中的图形用户界面和它的编程方式。在完成课题的过程中也不断充实了自己,学习到了很多以前没有学习到的知识,收获很大,例如学习到了一种新的简单的数据交换格式.json。通过这次的课程设计,使我对所学知识能够融会贯通,又不断丰富了新知识。另外这次课设中也遇到了很多不懂的地方,例如说文件的选择打开,不太了解JFileChooser的运用方法,不太了解json的语法和java中一些图形界面的布局等。Java三天的课设虽然仓促,但却十分充实,不进认识到了自己在java中的不足,而且还学到了不少关于java中图形界面的编程方式。
8、6. 附件源程序登陆界面 Login.javapackage wfu.yuhan;import java.awt.event.*;import javax.swing.*;class Login extends JFrame public static ProFrame prog; public Login() /窗口 super(登陆); this.setBounds(500,100,300,200); this.setResizable(false); this.setLayout(null); this.addWindowListener(new WindowAdapter() publ
9、ic void windowClosing(WindowEvent e) System.exit(0); ); /用户名 JLabel lu=new JLabel(用户名:); final JTextField tu=new JTextField(); lu.setBounds(20, 30, 55, 25); tu.setBounds(75, 30, 200, 25); this.add(lu); this.add(tu); /密码 JLabel lp=new JLabel(密码:); final JTextField tp=new JPasswordField(); lp.setBound
10、s(20, 60, 55, 25); tp.setBounds(75, 60, 200, 25); this.add(lp); this.add(tp); /登陆按钮 final JButton sub=new JButton(登陆); sub.setBounds(100, 100, 60, 25); this.add(sub); sub.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) Object userlist; userlist=ProDao.findUser(0, tu
11、.getText(); if(userlist.length=0) JOptionPane.showMessageDialog(null, 此用户不存在!); return; if(userlist01.toString().equals(tp.getText() ProMain.log.setVisible(false); if(tu.getText().equals(admin) prog=new ProFrame(); else new UserFrame(tu.getText(); else JOptionPane.showMessageDialog(null, 密码错误!); );
12、tp.addKeyListener(new KeyAdapter() public void keyPressed(KeyEvent e) if(e.getKeyCode()=KeyEvent.VK_ENTER) sub.doClick(); ); this.setVisible(true); 管理员主窗口 ProFrame.javapackage wfu.yuhan;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.table.DefaultTableModel;import w
13、fu.util.DBUtil;class ProFrame extends JFrame public JPanel pm =new JPanel();/主区域 private JPanel pb=new JPanel();/按钮区域 public ProPan0 p0=new ProPan0();/功能区0 用户查看(ProPan0.java) public ProPan1 p1=new ProPan1();/功能区1 用户增加(ProPan1.java) private JPanel p2=new ProPan2();/功能区2 用户存/取款 private JPanel p3=new P
14、roPan3();/功能区3 转账查询 private JButton b0=new JButton(0),b1=new JButton(1),b2=new JButton(2),b3=new JButton(3);/跳转按钮 public CardLayout card=new CardLayout(5, 5); public ProFrame() /窗口 super(银行管理系统(admin)); this.setResizable(false); setBounds(500,100,480,580); this.add(pm); this.add(pb,BorderLayout.NORT
15、H); /主区域(pm) pm.setLayout(card); pm.add(p0,p0); pm.add(p1,p1); pm.add(p2,p2); pm.add(p3,p3); card.show(pm, p0); /按钮区域(pb) pb.setLayout(new FlowLayout(FlowLayout.CENTER,0,0); pb.add(b0); pb.add(b1); pb.add(b2); pb.add(b3); /跳转按钮(b0 b1 b2) b0.setText( 用户管理 ); b0.addActionListener(new ActionListener()
16、public void actionPerformed(ActionEvent arg0) / p0=null;/ p0=new ProPan0();/ pm.add(p0,p0); p0.updata(); card.show(pm, p0);/ System.gc();/垃圾回收 ); b1.setText( 账户增改 ); b1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) card.show(pm, p1); ); b2.setText( 用户存取款 ); b2.
17、addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) card.show(pm, p2); ); b3.setText( 账单查询 ); b3.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) card.show(pm, p3); ); /关闭事件 this.addWindowListener(new WindowAdapter() public void wi
18、ndowClosing(WindowEvent e) System.exit(0); ); /pack(); setVisible(true); 管理员查删用户功能 ProPan0.javapackage wfu.yuhan;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import javax.swing.JButton;import javax.swing.JCombo
19、Box;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.plaf.ProgressBarUI;import javax.swing.table.DefaultTableModel;import wfu.util.DBUtil;public class ProPan0 extends JPanel String tabheadname= 卡号 ,密码,余额,电话,性别,身份证; Ob
20、ject stulist=ProDao.findAllUser(); JTextField tsearch=new JTextField(25); JComboBox csearch=new JComboBox(new String卡号,手机号,身份证号); JButton bsearch=new JButton(查询); JButton bedit=new JButton(编辑); JButton bdelete=new JButton(删除); final DefaultTableModel tableModel; final JTable jTable; public ProPan0()
21、 tableModel = new DefaultTableModel(stulist,tabheadname); jTable=new JTable(tableModel) public boolean isCellEditable(int row, int column) return false; /表格不允许被编辑 ; JScrollPane pj=new JScrollPane(jTable); /查找按钮 bsearch.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ar
22、g0) Object stulist=ProDao.findUser(csearch.getSelectedIndex(),tsearch.getText(); /System.out.println(stulist.length); tableModel.setDataVector(stulist,tabheadname); ); /编辑按钮 bedit.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) if(jTable.getSelectedColumn()=-1) r
23、eturn; /System.out.println(jTable.getSelectedRow(); String str=stulistjTable.getSelectedRow()0.toString(); Login.prog.p1.fun(str); Login.prog.card.show(Login.prog.pm, p1); ); /删除按钮 bdelete.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) int delt=jTable.getSelecte
24、dRows(); DBUtil db = new DBUtil(); db.getConnection(); for(int i=0;i=0 & ch=9) e.consume(); ); this.add(csearch); this.add(tsearch); this.add(bsearch); this.add(pj); this.add(bedit); this.add(bdelete); public void updata() Object list=ProDao.findAllUser(); tableModel.setDataVector(list,tabheadname); 管理员增改用户功能 ProPan1.javapackage wfu.yuhan;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.event.Action
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1