草庐IT

学生信息管理系统(JAVA+MYSQL)

Rand-me 2023-11-05 原文

基于Java swing+MySQL实现学生信息管理系统:功能:1录入学生基本信息的功能; 2查询学生基本信息的功能; 3修改学生基本信息的功能 ;4删除学生基本信息的功能 ;5显示所有学生信息的功能;应付一般课设足矣,分享给大家。

通过百度网盘分享的文件:学生信息管理系统
链接:https://pan.baidu.com/s/1NgK0C4NAa4gyCaLdeW4GZA?pwd=bigo 
提取码:bigo
复制这段内容打开「百度网盘APP 即可获取」

里面包括了所有代码源文件+mysql8.0.25驱动jar包+登录页面时的背景图345.jpg

1.开发环境:jdk11+win10+mysql 8+IDEA

记得将数据库与IDEA或者eclipse连接起来,并记得添加数据库驱动jar包

这两个分别是添加jar包和idea连接mysql大家可以做一下参考

IDEA导入mysql数据库驱动_跟着太阳.的博客-CSDN博客https://blog.csdn.net/qq_54705917/article/details/123484397?spm=1001.2014.3001.5502IDEA连接mysql数据库_跟着太阳.的博客-CSDN博客https://blog.csdn.net/qq_54705917/article/details/123484737?spm=1001.2014.3001.5502 

2.数据库设计

 代码:

库:create database student
表:create table stu(
stuId varchar(20),
stuName varchar(20),
stuSex varchar(20),
stuAge varchar(20),
stuJG varchar(20),
stuLX varchar(20),
stuBJ varchar(20)
);

3. 窗口及功能设计

(1).主函数

main.java

import javax.swing.*;

public class main {
    public static void main(String[] args) {
        JFrame jf = new StuLogin();
    }
}

(2).登录界面(默认的账号密码都为:admin)

StuLogin.java

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class StuLogin extends JFrame {
    private StuLogin self;
    private ImageIcon imageIcon;
    private Image image;
    private String userid;// 登陆用户名和密码
    private String password;
    private JLabel unLabel = new JLabel("账号:");// 登陆面板控件
    private JTextField unField = new JTextField();
    private JLabel pwLabel = new JLabel("密码:");
    private JPasswordField pwField = new JPasswordField();
    private JButton dl = new JButton("登录");
    private JButton d2 = new JButton("重置");
    public StuLogin() {

        this.self = this;
        this.setSize(350, 300);// 设置登陆面板
        设置窗口背景图
        //先将contentPane设置成透明的
        ((JPanel)getContentPane()).setOpaque(false);
        //再设置图片
        imageIcon = new ImageIcon("345.jpg");//图标组件
        image = imageIcon.getImage();
        JLabel imgLabel = new JLabel(imageIcon);
        getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));
        imgLabel.setBounds(0,0,400,300); //背景图片的位置

        this.setIconImage(image);//设置窗口图像
        this.setLocation(600,300);
        this.setVisible(true);
        this.setResizable(false);
        this.setLayout(null);
//      this.getContentPane().setBackground(Color.BLACK);设置窗口背景色;

        //设置窗口名称
        this.setTitle("学生信息管理系统");
        unLabel.setSize(50, 30);
        unLabel.setLocation(60, 40);
        unLabel.setForeground(Color.red);
        unLabel.setFont(new Font("楷体",Font.BOLD,15));
        unField.setSize(150, 35);
        unField.setLocation(110, 35);
        pwLabel.setSize(50, 30);
        pwLabel.setLocation(60, 100);
        pwLabel.setForeground(Color.red);
        pwLabel.setFont(new Font("楷体",Font.BOLD,15));
        pwField.setSize(150, 35);
        pwField.setLocation(110, 100);
        dl.setSize(80, 35);
        dl.setLocation(65, 175);
        dl.setBackground(Color.red);
        d2.setSize(80, 35);
        d2.setLocation(185, 175);
        d2.setBackground(Color.red);
        dl.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                userid = unField.getText();
                password = pwField.getText();
                if(userid.equals("admin")&&password.equals("admin")) {
                    self.setVisible(false);
//                    JOptionPane.showMessageDialog(null, "登录成功", "登录情况",JOptionPane.PLAIN_MESSAGE);
                    new StuManager();
                } else {
                    JOptionPane.showMessageDialog(null, "账号或密码错误!", "登录情况",JOptionPane.PLAIN_MESSAGE);
                }
            }
        });
        d2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                unField.setText("");
                pwField.setText("");
            }
        });
        this.add(unLabel);
        this.add(unField);
        this.add(pwLabel);
        this.add(pwField);
        this.add(dl);
        this.add(d2);
    }
}

登录页面的背景图我会放到 上面分享的链接里

 (3).管理员界面(删除功能在这里面)

StuManager.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

public class StuManager extends JFrame implements ActionListener {
    //定义一些控件
    private Object[] types = {"-请选择查询方式-", "按学号号查询", "姓名查询", "性别查询","按年龄查询", "按籍贯查询","按班级查询"};
    private JComboBox searchType = new JComboBox(types); //创建一个组合框用来选取查询不同的学生信息·
    JPanel jp1,jp2;
    JLabel jl1;
    JButton jb1,jb2,jb3,jb4;
    JTable jt;
    JScrollPane jsp;
    JTextField jtf1,jtf2;
    String strRS;
    StuModel sm;
    //定义连接数据库的变量
    PreparedStatement ps;
    Connection ct = null;
    ResultSet rs = null;
    //构造函数
    public StuManager(){
        jp1 = new JPanel();
        jp1.setBackground(Color.gray);
        jtf1 = new JTextField(15);
        jtf2 = new JTextField();
        jtf2.setEditable(false);
        jb1 = new JButton("查询");
        jb1.addActionListener(this);
        jl1 = new JLabel("总人数:");
        jp1.add(searchType);
        jp1.add(jtf1);
        jp1.add(jb1);
        jp1.add(jl1);
        jp1.add(jtf2);
        jb2 = new JButton("添加");
        jb2.setSize(100,500);
        jb2.addActionListener(this);
        jb3 = new JButton("修改");
        jb3.addActionListener(this);
        jb4 = new JButton("删除");
        jb4.addActionListener(this);

        jp2 = new JPanel();
        jp2.add(jb2);
        jp2.add(jb3);
        jp2.add(jb4);
        jp2.setBackground(Color.gray);
        //创建模型对象
        sm = new StuModel();
        //初始化总人数
        strRS=String.valueOf(sm.getRowCount());
        jtf2.setText(strRS);
        //初始化表和滚动面板
        jt = new JTable(sm);
        jsp = new JScrollPane(jt);


        //将jsp放入到jframe中
        this.add(jsp);
        this.add(jp1,BorderLayout.PAGE_START);
        this.add(jp2,BorderLayout.PAGE_END);
        this.setTitle("学生信息管理系统");
//        this.pack();
        this.setSize(600, 400);
        this.setLocation(500, 200);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setVisible(true);

    }
    public void actionPerformed(ActionEvent arg0) {
        //判断是哪个按钮被点击
        if(arg0.getSource() == jb1){
            System.out.println("用户希望被查询...");
            int index = searchType.getSelectedIndex();
            String sql = new String();
            if(index == 0){
                sql = "select * from stu ";
            }
            else if(index == 1){
                //因为把对表的数据封装到StuModel中,可以比较简单的完成查询
                String Id =this.jtf1.getText().trim();
                //写一个sql语句
                sql = "select * from stu where stuId = '"+Id+"' ";

            }
            else if(index == 2){
                String name =this.jtf1.getText().trim();
                sql = "select * from stu where stuName = '"+name+"' ";

            }
            else if(index == 3){
                String sex =this.jtf1.getText().trim();
                sql = "select * from stu where stuSex = '"+sex+"' ";

            }
            else if(index == 4){
                String age =this.jtf1.getText().trim();
                sql = "select * from stu where stuAge = '"+age+"' ";
            }
            else if(index ==5){
                String jg =this.jtf1.getText().trim();
                sql = "select * from stu where stuJG= '"+jg+"' ";

            }
            else if(index ==6){
                String bj =this.jtf1.getText().trim();
                sql = "select * from stu where stuBJ= '"+bj+"' ";

            }
            //构建一个数据模型类,并更新
            sm = new StuModel(sql);

            strRS=String.valueOf(sm.getRowCount());
            jtf2.setText(strRS);
            //更新jtable
            jt.setModel(sm);

        }

        //一、弹出添加界面
        else if(arg0.getSource() == jb2){
            System.out.println("添加...");
            StuAddDiag sa = new StuAddDiag(this,"添加学生",true);
            //重新再获得新的数据模型,
            sm =  new StuModel();
            strRS=String.valueOf(sm.getRowCount());
            jtf2.setText(strRS);
            jt.setModel(sm);
        }else if(arg0.getSource() == jb4){
            //二、删除记录
            //1.得到学生的ID
            int rowNum = this.jt.getSelectedRow();//getSelectedRow会返回给用户点中的行
            //如果该用户一行都没有选,就返回-1
            if(rowNum == -1){
                //提示
                JOptionPane.showMessageDialog(this, "请选中一行");
                return ;
            }
            //得到学术ID
            String stuId = (String)sm.getValueAt(rowNum, 0);


            //连接数据库,完成删除任务
            try{
                //1.加载驱动
                Class.forName("com.mysql.cj.jdbc.Driver");
                //2.连接数据库
                String url = "jdbc:mysql://localhost:3306/student";
                String user = "root";
                String passwd = "666666";

                ct = DriverManager.getConnection(url, user, passwd);
//                System.out.println("连接成功");
                ps = ct.prepareStatement("delete from stu where stuId = ?");
                ps.setString(1,stuId);
                ps.executeUpdate();
                JOptionPane.showMessageDialog(null, "删除成功", "删除情况",JOptionPane.PLAIN_MESSAGE);
            }catch(Exception e){
                e.printStackTrace();
            }finally{
                try{
                    if(rs!= null){
                        rs.close();
                        rs = null;

                    }
                    if(ps!= null){
                        ps.close();
                        ps = null;
                    }
                    if(ct != null){
                        ct.close();
                        ct = null;
                    }
                } catch(Exception e){
                    e.printStackTrace();
                }
            }
            sm = new StuModel();
            strRS=String.valueOf(sm.getRowCount());
            jtf2.setText(strRS);
            //更新jtable
            jt.setModel(sm);
        }else if(arg0.getSource() == jb3){
//            System.out.println("11111");
            //三、用户希望修改
            int rowNum = this.jt.getSelectedRow();
            if(rowNum == -1){
                //提示
                JOptionPane.showMessageDialog(this, "请选择一行");
                return ;
            }
            //显示对话框
//            System.out.println( "12435");
            StuUpDiag su = new StuUpDiag(this, "修改学生信息", true, sm, rowNum);
            sm = new StuModel();
            jt.setModel(sm);
        }
    }
}

  (4).模型界面

StuModel.java

/*
  用来刷新、呈现数据库
 * 这是我的一个stu表的模型
 * 可以把对学生表的操作全都封装到这个类
 */
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.table.*;

public class StuModel extends AbstractTableModel{

    //rowData存放行数据,columnNames存放列名
    Vector rowData,columnNames;//Vector和ArrayList一样,底层也是一个Object类型的数组Object[]。;    构造一个空向量,使其内部数据数组的大小为10,其标准容量增量为零

    //定义连接数据库的变量
    Statement stat = null;
    Connection ct = null;
    ResultSet rs = null;

    //初始化
    public void init(String sql){
        if(sql.equals("")){
            sql = "select * from stu";
        }
        //中间
        //设置列名
        columnNames = new Vector();//这里是一维向量表示列;
        columnNames.add("学号");
        columnNames.add("名字");
        columnNames.add("性别");
        columnNames.add("年龄");
        columnNames.add("籍贯");
        columnNames.add("联系方式");
        columnNames.add("班级");

        //rowData存放多行
        rowData = new Vector();
        try{
            //1.加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            System.out.println("加载成功");
            //2.连接数据库
            //定义几个常量
            String url = "jdbc:mysql://localhost:3306/student";
            String user = "root";
            String passwd = "666666";//这里你要填写你自己的数据库密码

            ct = DriverManager.getConnection(url,user,passwd);
            stat = ct.createStatement();//创建stat对象
            rs = stat.executeQuery(sql);//查询结果

            while(rs.next()){
                Vector hang = new Vector();
                hang.add(rs.getString(1));
                hang.add(rs.getString(2));
                hang.add(rs.getString(3));
                hang.add(rs.getString(4));
                hang.add(rs.getString(5));
                hang.add(rs.getString(6));
                hang.add(rs.getString(7));
                //加入到rowData中
                rowData.add(hang);//这里是二维向量,表示行;
            }

        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try{
                if(rs!=null){
                    rs.close();
                    rs = null;
                }
                if(stat != null){
                    stat.close();
                    stat = null;
                }
                if(ct != null){
                    ct.close();
                    ct = null;
                }
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }


    //第二个构造函数,通过传递的sql语句来获得数据模型
    public StuModel(String sql){
        this.init(sql);
    }

    //构造函数,用于初始化我的数据模型(表)
    public StuModel(){
        this.init("");
    }

    //得到共有多少行
    public int getRowCount() {
        // TODO Auto-generated method stub
        return this.rowData.size();
    }

    //得到共有多少列
    public  int getColumnCount() {
        // TODO Auto-generated method stub
        return this.columnNames.size();
    }

    //得到某行某列的数据
    public Object getValueAt(int row, int column) {
        // TODO Auto-generated method stub
        return ((Vector)(this.rowData.get(row))).get(column);
    }

    //得到属性名字
    public String getColumnName(int column) {
        // TODO Auto-generated method stub
        return (String)this.columnNames.get(column);
    }
}

  (5).增加学生界面

StuAddDiag.java

import javax.swing.JDialog;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.*;
//用来实现增添读者功能
public class StuAddDiag extends JDialog implements ActionListener {
    //定义我需要的swing组件
    JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7;
    JTextField jf1,jf2,jf3,jf4,jf5,jf6,jf7;
    JPanel jp1,jp2,jp3;
    JButton jb1,jb2;
    //owner代笔父窗口,title是窗口的名字,modal指定是模式窗口()或者非模式窗口
    public StuAddDiag(Frame owner, String title, boolean modal){
        //调用父类方法
        super(owner,title,modal);

        jl1 = new JLabel("学号");
        jl2 = new JLabel("名字");
        jl3 = new JLabel("性别");
        jl4 = new JLabel("年龄");
        jl5 = new JLabel("籍贯");
        jl6 = new JLabel("联系方式");
        jl7 = new JLabel("班级");

        jf1 = new JTextField(30);
        jf2 = new JTextField(30);
        jf3 = new JTextField(30);
        jf4 = new JTextField(30);
        jf5 = new JTextField(30);
        jf6 = new JTextField(30);
        jf7 = new JTextField(30);

        jb1 = new JButton("添加");
        jb1.addActionListener(this::actionPerformed);
        jb2 = new JButton("取消");
        jb2.addActionListener(this::actionPerformed);

        jp1 = new JPanel();
        jp2 = new JPanel();
        jp3 = new JPanel();

        //设置布局
        jp1.setLayout(new GridLayout(7,1));
        jp2.setLayout(new GridLayout(7,1));

        jp3.add(jb1);
        jp3.add(jb2);

        jp1.add(jl1);
        jp1.add(jl2);
        jp1.add(jl3);
        jp1.add(jl4);
        jp1.add(jl5);
        jp1.add(jl6);
        jp1.add(jl7);

        jp2.add(jf1);
        jp2.add(jf2);
        jp2.add(jf3);
        jp2.add(jf4);
        jp2.add(jf5);
        jp2.add(jf6);
        jp2.add(jf7);

        this.add(jp1, BorderLayout.WEST);
        this.add(jp2, BorderLayout.CENTER);
        this.add(jp3, BorderLayout.SOUTH);
        this.setLocation(600, 350);
        this.setSize(300,200);
        this.setVisible(true);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if(e.getSource() == jb1){
            Connection ct = null;
            PreparedStatement pstmt = null;
            ResultSet rs = null;

            try{
                //1.加载驱动
                Class.forName("com.mysql.cj.jdbc.Driver");
                System.out.println("加载成功");
                //2.连接数据库
                //定义几个常量
                String url = "jdbc:mysql://localhost:3306/student";
                String user = "root";
                String passwd = "666666";
                ct = DriverManager.getConnection(url,user,passwd);

                //与编译语句对象

                String strsql = "insert into stu values(?,?,?,?,?,?,?)";
                pstmt = ct.prepareStatement(strsql);

                //给对象赋值
                pstmt.setString(1,jf1.getText());
                pstmt.setString(2,jf2.getText());
                pstmt.setString(3,jf3.getText());
                pstmt.setString(4,jf4.getText());
                pstmt.setString(5,jf5.getText());
                pstmt.setString(6,jf6.getText());
                pstmt.setString(7,jf7.getText());

                pstmt.executeUpdate();
                JOptionPane.showMessageDialog(null, "添加成功", "添加情况",-1);
                this.dispose();//关闭学生对话框

            }catch(Exception arg1){
                arg1.printStackTrace();
            }finally{
                try{
                    if(rs!=null){
                        rs.close();
                        rs = null;
                    }
                    if(pstmt != null){
                        pstmt.close();
                        pstmt = null;
                    }
                    if(ct != null){
                        ct.close();
                        ct = null;
                    }
                }catch(Exception arg2){
                    arg2.printStackTrace();
                }
            }

        }else{
            this.dispose();
        }

    }
}

  (6).修改学生界面

StuUpDiag.java

import javax.swing.JDialog;
import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.*;
/*
// * 是修改学生信息

 */
public class StuUpDiag extends JDialog implements ActionListener {
    //定义我需要的swing组件
    JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7;
    JTextField jf1,jf2,jf3,jf4,jf5,jf6,jf7;
    JPanel jp1,jp2,jp3;
    JButton jb1,jb2;
    //owner代笔父窗口,title是窗口的名字,modal指定是模式窗口()或者非模式窗口
    public StuUpDiag(Frame owner, String title, boolean modal, StuModel sm, int rowNum){
        //调用父类方法
        super(owner,title,modal);

        jl1 = new JLabel("学号");
        jl2 = new JLabel("名字");
        jl3 = new JLabel("性别");
        jl4 = new JLabel("年龄");
        jl5 = new JLabel("籍贯");
        jl6 = new JLabel("联系方式");
        jl7 = new JLabel("班级");



        jf1 = new JTextField(30);
        jf1.setText((sm.getValueAt(rowNum, 0)).toString());
        jf2 = new JTextField(30);
        jf2.setText((String)sm.getValueAt(rowNum, 1));
        jf3 = new JTextField(30);
        jf3.setText(sm.getValueAt(rowNum, 2).toString());
        jf4 = new JTextField(30);
        jf4.setText((sm.getValueAt(rowNum, 3)).toString());
        jf5 = new JTextField(30);
        jf5.setText((String)sm.getValueAt(rowNum, 4));
        jf6 = new JTextField(30);
        jf6.setText((String)sm.getValueAt(rowNum, 5));
        jf7 = new JTextField(30);
        jf7.setText((String)sm.getValueAt(rowNum, 6));

        jb1 = new JButton("修改");
        jb1.addActionListener(this::actionPerformed);
        jb2 = new JButton("取消");
        jb2.addActionListener(this::actionPerformed);

        jp1 = new JPanel();
        jp2 = new JPanel();
        jp3 = new JPanel();

        //设置布局
        jp1.setLayout(new GridLayout(7,1));
        jp2.setLayout(new GridLayout(7,1));

        jp3.add(jb1);
        jp3.add(jb2);

        jp1.add(jl1);
        jp1.add(jl2);
        jp1.add(jl3);
        jp1.add(jl4);
        jp1.add(jl5);
        jp1.add(jl6);
        jp1.add(jl7);

        jp2.add(jf1);
        jp2.add(jf2);
        jp2.add(jf3);
        jp2.add(jf4);
        jp2.add(jf5);
        jp2.add(jf6);
        jp2.add(jf7);

        this.add(jp1, BorderLayout.WEST);
        this.add(jp2, BorderLayout.CENTER);
        this.add(jp3, BorderLayout.SOUTH);
        this.setLocation(600, 350);
        this.setSize(300,200);
        this.setVisible(true);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if(e.getSource() == jb1){
            Connection ct = null;
            PreparedStatement pstmt = null;
            ResultSet rs = null;

            try{
                //1.加载驱动
                Class.forName("com.mysql.cj.jdbc.Driver");
                System.out.println("加载成功");
                //2.连接数据库
                //定义几个常量
                String url = "jdbc:mysql://localhost:3306/student";
                String user = "root";
                String passwd = "666666";
                ct = DriverManager.getConnection(url,user,passwd);
                //与编译语句对象
                String strsql = "update stu set stuName = '"+jf2.getText()+"',stuSex = '"+jf3.getText()+"',stuAge = '"+jf4.getText()+"',stuJG='"+jf5.getText()+"',stuLX='"+jf6.getText()+"',stuBJ='"+jf7.getText()+"' where stuId = '"+jf1.getText()+"'";
                pstmt = ct.prepareStatement(strsql);

                pstmt.executeUpdate();
                JOptionPane.showMessageDialog(null, "修改成功", "修改情况",JOptionPane.PLAIN_MESSAGE);
                this.dispose();//关闭学生对话框

            }catch(Exception arg1){
                arg1.printStackTrace();
            }finally{
                try{
                    if(rs!=null){
                        rs.close();
                        rs = null;
                    }
                    if(pstmt != null){
                        pstmt.close();
                        pstmt = null;
                    }
                    if(ct != null){
                        ct.close();
                        ct = null;
                    }
                }catch(Exception arg2){
                    arg2.printStackTrace();
                }
            }

        }else{
            this.dispose();//关闭学生对话框
        }

    }


}

有关学生信息管理系统(JAVA+MYSQL)的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  3. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  4. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  5. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  6. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  7. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  8. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  9. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

  10. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

随机推荐