目录
团队信息
组长 | 李雯倩 | 在数据库中实现增删改查,数据管理即操作界面 |
---|---|---|
组员 | 叶秀 | 登录界面、注册界面、把注册账号写入数据库 |
项目git地址
https://gitee.com/xpeannut/java
项目git提交记录
由于叶秀git和eclipse版本不对,询问老师过后,得知可以由组长李雯倩一并提交。
项目组要功能架构图
UML类图
项目运行
登录界面
注册界面
查询全部学生信息
删除信息
(以下图片为删除学号为2的学生)
修改信息
(以下为修改叶秀的信息)
项目关键代码分模块描述
对数据库进行增删改差操作
public Mysqld(String account,String password) { //定义一个数据库的账号和密码 //第一步加载驱动 try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("加载驱动成功"); } catch (Exception e) { // TODO: handle exception System.out.println("加载驱动失败"); } // String uri="jdbc:mysql://localhost:3306/student?characterEncoding=utf-8&useSSL=false"; try { con=DriverManager.getConnection(uri,account,password); System.out.println("数据库连接成功"); } catch (SQLException e) { // TODO: handle exception System.out.println("数据库连接失败"); } } public static boolean LoginAccount(String account,String password) { Statement sql;//用来执行命令的 ResultSet rs;//定义一个结果 String uri = "select account,password from user"; try { sql = con.createStatement(); rs = sql.executeQuery(uri); while(rs.next()) { String acc=rs.getString(1); String pass=rs.getString(2); // System.out.println(acc); // System.out.println(pass); if(acc.equals(account)&&pass.equals(password)) { // System.out.println("hhh"); return true; } } } catch (Exception e) { // TODO: handle exception } return false; } public static void addStudent(String name,String gender,String id,String birthday,String politicaloutlook,String ad,String tel,String number) { PreparedStatement presql; String sqlstr="insert into stu(name,gender,id,birthday,politicaloutlook,ad,tel,number)values(?,?,?,?,?,?,?,?)"; try { presql=con.prepareStatement(sqlstr); presql.setString(1, name); presql.setString(2, gender); presql.setString(3, id); presql.setString(4, birthday); presql.setString(5, politicaloutlook); presql.setString(6, ad); presql.setString(7, tel); presql.setString(8, number); int ok=presql.executeUpdate(); JOptionPane.showMessageDialog(null, "添加成功", "添加数据", JOptionPane.WARNING_MESSAGE); String[] data = new String[8]; data[0] = name; data[1] = gender; data[2] = id; data[3] = birthday; data[4] = politicaloutlook; data[5] = ad; data[6] = tel; data[7] = number; Maneger.model.addRow(data); } catch (Exception e) { // TODO: handle exception JOptionPane.showMessageDialog(null, "当前学号已经存在", "添加数据", JOptionPane.WARNING_MESSAGE); } } public static void delStudent(String id) { PreparedStatement presql; String sqlstr="delete from stu where id=?"; try { presql=con.prepareStatement(sqlstr); presql.setString(1, id); int ok=presql.executeUpdate(); if(ok==0) { JOptionPane.showMessageDialog(null, "未找到相关学号", "删除数据", JOptionPane.WARNING_MESSAGE); }else { JOptionPane.showMessageDialog(null, "删除成功", "删除数据", JOptionPane.WARNING_MESSAGE); } } catch (Exception e) { // TODO: handle exception JOptionPane.showMessageDialog(null, "当前学号已经存在", "添加数据", JOptionPane.WARNING_MESSAGE); } } public static void changeStudent(String name,String gender,String id,String birthday,String politicaloutlook,String ad,String tel,String number) { PreparedStatement presql; String sqlstr="delete from stu where id=?"; try { presql=con.prepareStatement(sqlstr); presql.setString(1, id); int ok=presql.executeUpdate(); if(ok==0) { JOptionPane.showMessageDialog(null, "未找到相关学号", "删除数据", JOptionPane.WARNING_MESSAGE); }else { sqlstr="insert into stu(name,gender,id,birthday,politicaloutlook,ad,tel,number)values(?,?,?,?,?,?,?,?)"; presql=con.prepareStatement(sqlstr); presql.setString(1, name); presql.setString(2, gender); presql.setString(3, id); presql.setString(4, birthday); presql.setString(5, politicaloutlook); presql.setString(6, ad); presql.setString(7, tel); presql.setString(8, number); ok=presql.executeUpdate(); JOptionPane.showMessageDialog(null, "更改成功", "更改数据", JOptionPane.WARNING_MESSAGE); String[] data = new String[8]; data[0] = name; data[1] = gender; data[2] = id; data[3] = birthday; data[4] = politicaloutlook; data[5] = ad; data[6] = tel; data[7] = number; Maneger.model.addRow(data); } } catch (Exception e) { // TODO: handle exception JOptionPane.showMessageDialog(null, "更改失败", "更改数据", JOptionPane.WARNING_MESSAGE); } } public static void showAllStudent() { PreparedStatement presql; String sqlstr="select * from stu"; try { presql = con.prepareStatement(sqlstr); ResultSet rs = presql.executeQuery(); LoginEvent.addList(rs); }catch(SQLException e) { } } public static void showStudent(String id) { PreparedStatement presql; String sqlstr="select * from stu"; try { presql = con.prepareStatement(sqlstr); ResultSet rs = presql.executeQuery(); while(rs.next()) { if(rs.getString(2).equals(id)) { String[] data = new String[8]; data[0] = rs.getString(1); data[1] = rs.getString(3); data[2] = rs.getString(2); data[3] = rs.getString(4); data[4] = rs.getString(5); data[5] = rs.getString(6); data[6] = rs.getString(7); data[7] = rs.getString(8); Maneger.model.addRow(data); } } }catch(SQLException e) { } }
创建GUI界面(以操作界面为例)
public class Maneger extends JFrame{ FlowLayout flowlayout;//定义一个布局 JLabel name; public static JTextField nametext; JLabel id; public static JTextField idtext; JLabel birthday; public static JTextField birthdaytext; JLabel politicaloutlook; public static JTextField politicaloutlooktext; JLabel ad; public static JTextField adtext; JLabel tel; public static JTextField teltext; JLabel number; public static JTextField numbertext; ButtonGroup group=null; public static JRadioButton men,women; JButton add,delete,change,show,clear; ActionListener lintener_1; Object columns[] = {"姓名","性别","学号","出生日期","政治面貌","家庭住址","电话","宿舍号"}; JTable tableL=null; JScrollPane jscrollpane; static Object a[][]; static Vector rwo; static int row; public static DefaultTableModel model; static TableColumnModel columnModel; javax.swing.JPanel jpanel_1; javax.swing.JPanel jpanel_2; final int WIDTH=550;//设置顶层框架宽度 final int HEIGHT=500;//设置顶层框架高度 public Maneger() { init(); setVisible(true);//设置窗口可显示 setResizable(false);//窗口大小不可变 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);//设置默认关闭方式 validate();//让组件生效 } void init() { Toolkit kit = java.awt.Toolkit.getDefaultToolkit();//获取对象大小 设置窗口位置 Dimension screenSize = kit.getScreenSize(); int width = screenSize.width; int height = screenSize.height; int x = (width-WIDTH)/2; int y = (height-HEIGHT)/2; this.setBounds(x, y, WIDTH, HEIGHT); this.setTitle("管理员操作"); jpanel_1 = new javax.swing.JPanel(); jpanel_1.setBorder(BorderFactory.createTitledBorder("基本信息处理")); jpanel_1.setBounds(0, 0, WIDTH, 50); flowlayout = new FlowLayout(FlowLayout.CENTER);//居中对齐 jpanel_1.setLayout(flowlayout); jpanel_1.setOpaque(false); jpanel_2 = new javax.swing.JPanel(); jpanel_2.setBorder(BorderFactory.createTitledBorder("学生数据信息显示")); jpanel_2.setBounds(0, 220, WIDTH, 370); flowlayout = new FlowLayout(FlowLayout.CENTER);//居中对齐 jpanel_2.setLayout(flowlayout); jpanel_2.setOpaque(false); table(); Font font = new Font("华文bai行楷",Font.BOLD,18); group = new ButtonGroup(); name = new JLabel("姓名"); name.setFont(font); nametext = new JTextField(12); nametext.setFont(font); men = new JRadioButton("男"); men.setFont(font); women = new JRadioButton("女"); women.setFont(font); id = new JLabel("学号"); idtext = new JTextField(12); idtext.setFont(font); id.setFont(font); birthday = new JLabel("生日"); birthdaytext = new JTextField(12); birthday.setFont(font); birthdaytext.setFont(font); politicaloutlook = new JLabel(" 政治面貌"); politicaloutlooktext = new JTextField(12); politicaloutlook.setFont(font); politicaloutlooktext.setFont(font); ad = new JLabel("地址"); adtext = new JTextField(12); ad.setFont(font); adtext.setFont(font); tel = new JLabel("电话"); teltext = new JTextField(12); tel.setFont(font); teltext.setFont(font); number = new JLabel("宿舍"); numbertext = new JTextField(12); numbertext.setFont(font); number.setFont(font); add = new JButton("增加"); add.setFont(font); delete = new JButton("删除"); delete.setFont(font); change = new JButton("修改"); change.setFont(font); show = new JButton("查询"); show.setFont(font); clear = new JButton("清空"); clear.setFont(font); group.add(men); group.add(women); jpanel_1.add(name); jpanel_1.add(nametext); jpanel_1.add(id); jpanel_1.add(idtext); jpanel_1.add(birthday); jpanel_1.add(birthdaytext); jpanel_1.add(ad); jpanel_1.add(adtext); jpanel_1.add(tel); jpanel_1.add(teltext); jpanel_1.add(number); jpanel_1.add(numbertext); jpanel_1.add(men); jpanel_1.add(women); jpanel_1.add(politicaloutlook); jpanel_1.add(politicaloutlooktext); jpanel_1.add(add); jpanel_1.add(delete); jpanel_1.add(change); jpanel_1.add(show); jpanel_1.add(clear); jpanel_2.add(jscrollpane); this.add(jpanel_2); this.add(jpanel_1); allEvent(); setAllName(); } void table() { tableL = getTable(); jscrollpane = new JScrollPane(tableL);//添加一个浏览窗格 jscrollpane.setPreferredSize(new Dimension(530,200));//给窗格设置大小 tableL.setPreferredSize(new Dimension(200,200));//给表格设置大小 jscrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);//将滑动组件显示在窗口中 } JTable getTable() { if(tableL==null) { tableL = new JTable(); } int[] columnWidth= {100,100,100,100,100,100,100,100}; model=new DefaultTableModel() { public boolean isCellEditable(int row,int column) { return false; } }; model.setColumnIdentifiers(columns); tableL.setModel(model); columnModel = tableL.getColumnModel(); tableL.getTableHeader().setReorderingAllowed(false); tableL.getTableHeader().setResizingAllowed(false); int count = columnModel.getColumnCount(); for (int i = 0; i < count; i++) { TableColumn column = columnModel.getColumn(i); column.setPreferredWidth(columnWidth[i]); } rwo = new Vector(8); return tableL; } void allEvent() { lintener_1 = new LoginEvent(); add.addActionListener(lintener_1); delete.addActionListener(lintener_1); change.addActionListener(lintener_1); show.addActionListener(lintener_1); clear.addActionListener(lintener_1); } void setAllName() { add.setName("add"); delete.setName("delete"); change.setName("change"); show.setName("show"); clear.setName("clear"); } }
监听模块(以登录为例)
public class LoginEvent implements ActionListener { JButton button; @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub try { button = (JButton) e.getSource(); if (button.getName().equals("login")) { String account = LoginStart.accounttext.getText(); String password = new String(LoginStart.passwordtxet.getPassword()); if (Mysqld.LoginAccount(account, password)) { Maneger maneger = new Maneger(); } else { JOptionPane.showMessageDialog(null, "密码错误", "登录信息", JOptionPane.WARNING_MESSAGE); } } if (button.getName().equals("add")) { String name = Maneger.nametext.getText(); String id = Maneger.idtext.getText(); String gender = ""; String birthday = Maneger.birthdaytext.getText(); String politicaloutlook = Maneger.politicaloutlooktext.getText(); String ad = Maneger.adtext.getText(); String tel = Maneger.teltext.getText(); String number = Maneger.numbertext.getText(); if (name.equals("")) { JOptionPane.showMessageDialog(null, "姓名不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE); } else if (!Maneger.men.isSelected() && !Maneger.women.isSelected()) { JOptionPane.showMessageDialog(null, "姓别不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE); } else if (id.equals("")) { JOptionPane.showMessageDialog(null, "学号不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE); } else if (birthday.equals("")) { JOptionPane.showMessageDialog(null, "生日不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE); } else if (politicaloutlook.equals("")) { JOptionPane.showMessageDialog(null, "政治面貌不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE); } else if (ad.equals("")) { JOptionPane.showMessageDialog(null, "地址不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE); } else if (tel.equals("")) { JOptionPane.showMessageDialog(null, "电话面貌不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE); } else if (number.equals("")) { JOptionPane.showMessageDialog(null, "宿舍号不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE); }else { if (Maneger.men.isSelected()) { gender = "男"; } if (Maneger.women.isSelected()) { gender = "女"; } Mysqld.addStudent(name, gender, id,birthday,politicaloutlook,ad,tel,number); } } if (button.getName().equals("delete")) { String id = Maneger.idtext.getText(); if (id.equals("")) { JOptionPane.showMessageDialog(null, "学号不能为空", "删除信息", JOptionPane.WARNING_MESSAGE); } else { Mysqld.delStudent(id); } } if (button.getName().equals("change")) { String name = Maneger.nametext.getText(); String gender = ""; String id = Maneger.idtext.getText(); String birthday = Maneger.birthdaytext.getText(); String politicaloutlook = Maneger.politicaloutlooktext.getText(); String ad = Maneger.adtext.getText(); String tel = Maneger.teltext.getText(); String number = Maneger.numbertext.getText(); if (id.equals("")) { JOptionPane.showMessageDialog(null, "学号不能为空", "删除信息", JOptionPane.WARNING_MESSAGE); } else { if (name.equals("")) { JOptionPane.showMessageDialog(null, "姓名不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE); } else if (!Maneger.men.isSelected() && !Maneger.women.isSelected()) { JOptionPane.showMessageDialog(null, "姓别不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE); } else if (id.equals("")) { JOptionPane.showMessageDialog(null, "学号不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE); } else if (birthday.equals("")) { JOptionPane.showMessageDialog(null, "生日不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE); } else if (politicaloutlook.equals("")) { JOptionPane.showMessageDialog(null, "政治面貌不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE); } else if (ad.equals("")) { JOptionPane.showMessageDialog(null, "地址不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE); } else if (tel.equals("")) { JOptionPane.showMessageDialog(null, "电话面貌不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE); } else if (number.equals("")) { JOptionPane.showMessageDialog(null, "宿舍号不能为空", "编辑信息", JOptionPane.WARNING_MESSAGE); }else { if (Maneger.men.isSelected()) { gender = "男"; } if (Maneger.women.isSelected()) { gender = "女"; } Mysqld.changeStudent(name, gender, id,birthday,politicaloutlook,ad,tel,number); } } } if(button.getName().equals("show")) { String id = Maneger.idtext.getText(); if(!id.equals("")) { Mysqld.showStudent(id); }else { Mysqld.showAllStudent(); } } if(button.getName().equals("clear")) { Maneger.model.setNumRows(0); } } catch (Exception e2) { // TODO: handle exception } } public static void addList(ResultSet rs) throws SQLException { while(rs.next()) { String[] data = new String[8]; data[0] = rs.getString(1); data[1] = rs.getString(3); data[2] = rs.getString(2); data[3] = rs.getString(4); data[4] = rs.getString(5); data[5] = rs.getString(6); data[6] = rs.getString(7); data[7] = rs.getString(8); Maneger.model.addRow(data); } } }
项目总结
1、界面设置的不够好看,可以进一步学习增加背景等,更可以学习用web设计界面
2、修改功能有点暴力,直接利用删除再添加,可以尝试直接再原有的基础上修改
3、Java基础不够扎实,在做本次课程设计过程中遇到很多困难,比如对数据库的学习不够,总是会出现连接不上的情况。