精华内容
下载资源
问答
  • JAVA学生宿舍管理系统

    万次阅读 多人点赞 2019-01-22 21:28:14
    system.java (系统管理界面) sql.java (数据库操作,包括连接、断开、增删改查等操作) 一、登陆界面及代码 主要代码: 登陆按钮事件 public void actionPerformed(ActionEvent e) { // TODO Auto-...

    需要的工具
    1.SQL Server
    2.Eclipse
    3.JDBC连接数据库驱动
    https://download.microsoft.com/download/A/F/B/AFB381FF-7037-46CE-AF9B-6B1875EA81D7/sqljdbc_6.0.8112.200_chs.exe

    功能实现
    分为三大类
    1.land.java (登陆界面)
    2.system.java (系统管理界面)
    3.sql.java (数据库操作,包括连接、断开、增删改查等操作)

    一、登陆界面及代码
    在这里插入图片描述

    部分代码:

    登陆按钮事件

    public void actionPerformed(ActionEvent e) {
    	// TODO Auto-generated method stub
    		if((JButton)e.getSource()== buttonLand)
    		{
    		
    		String name = textName.getText().trim();
    		String password = String.valueOf(textPassword.getPassword()).trim();
    	    int num = sq.landing(name, password);
    	    if(num==1)
    	    {
    	    	JOptionPane.showMessageDialog(frame, "欢迎进入学生宿舍管理系统!","提示:",JOptionPane.PLAIN_MESSAGE);
    	    	system system = new system();
    	    	frame.dispose();
    	    }
    	    else
    	    {
    	    	JOptionPane.showMessageDialog(frame, "账号或者密码错误!","提示:",JOptionPane.ERROR_MESSAGE);
    	    }
    		}
    	}
    

    二、系统管理界面及代码**(这里只添加了俩个表,多少表都是一样的道理**)

    增加数据:点击增加按钮会出现一空白行,填写完点击保存即可
    保存(更新)数据:直接在表中进行相应的操作,再点击保存即可
    删除数据:选择某行,点击删除按钮即可

    在这里点插入图片描述在这里插入图片描述
    部分代码:

    //--------------------------------------按钮事件--------------------------------
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		// TODO Auto-generated method stub
    		//------------------------------- 删除-----------------------------
    		String tableName = null;
    		String key1 = null;
    		if((JButton)e.getSource()==buttonDelete)
    		{   if(paneParent.getSelectedIndex()==1)
    			{
    				tableName = "学生信息表";
    				key1 = "sno";
    			}
    			if(paneParent.getSelectedIndex()==2)
    			{
    				tableName = "宿舍信息表";
    				key1 = "dno";
    			}
    			int row = table.getSelectedRow();			
    			if(row!=-1)
    			{
    				String key2 = (String) tableModel.getValueAt(row, 0);
    				int result = JOptionPane.showConfirmDialog(null, "确定要删除吗?","请确认",JOptionPane.YES_NO_OPTION);
    				if(result==JOptionPane.OK_OPTION)
    				{
    					String sql = "delete from "+tableName+" where "+key1+"="+key2;
    					int num = sq.delete(sql);
    					if(num>0)
    					{
    						tableModel.removeRow(row);
    					}
    				}
    			}
    			else 
    			{	
    				JOptionPane.showMessageDialog(null, "请选择要删除的行!","提示:",JOptionPane.ERROR_MESSAGE);
    			}
    		}
    		//------------------------------保存------------------------
    		if((JButton)e.getSource()==buttonSave)
    		{
    			int result = JOptionPane.showConfirmDialog(null, "请确认数值已经更改,否则保存无效","请确认",JOptionPane.YES_NO_OPTION);
    			if(result==JOptionPane.OK_OPTION)
    			{
    				int row = table.getRowCount();
    				int column = table.getColumnCount();			
    				String[][]valueRow= new String[row][column];
    				String[] sqlvalue  = new String[row];
    				for(int i = 0; i < row; i++)
    				{
    					for(int j = 0; j < column; j++)
    					{
    						valueRow[i][j] = table.getValueAt(i, j).toString();
    					}
    				}
    				if(paneParent.getSelectedIndex()==1)
    				{	
    					for(int i =0;i<row;i++)
    					{
    						String sql = "insert into 学生信息表"+" values ("+valueRow[i][0].toString()+","+valueRow[i][1].toString()+","+valueRow[i][2].toString()+","+valueRow[i][3].toString()+","+valueRow[i][4].toString()+","+valueRow[i][5].toString()+")";				
    						sqlvalue[i]=sql.toString();									
    					}
    					data = sq.Save(sqlvalue,"学生信息表",row, column);
    		            tableModel.setDataVector(data,dataTitle);			
    				}
    				if(paneParent.getSelectedIndex()==2)
    				{
    					for(int i =0;i<row;i++)
    					{
    						String sql = "insert into 宿舍信息表"+" values ("+valueRow[i][0].toString()+","+valueRow[i][1].toString()+")";				
    						sqlvalue[i]=sql.toString();									
    					}
    					data = sq.Save(sqlvalue,"宿舍信息表",row, column);
    		            tableModel.setDataVector(data,TitleDormitor);			
    				}				
    			}					        
    		}
    		//------------------------------增加---------------------------
    		if((JButton)e.getSource()==buttonIncrease)
    		{
    			tableModel.addRow(new Vector<>());
    		}
    	}
    

    三、sql.java (重要)

    public class SQL {
        public  Connection conn;
        public  Statement st;
        public  ResultSet rs;
      
    //----------------------------获取链接--------------------------------
    public Connection getConn() throws SQLException, ClassNotFoundException
    {
      String driverClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; 
      String url = "jdbc:sqlserver://localhost:1433;databaseName=学习宿舍";
    //:1433为数据库默认端口号,学习宿舍为数据库名字
      String user = "sa"; //登录用户名
      String password = "123456"; //登录密码
      try { 
       Class.forName(driverClassName);
       conn = DriverManager.getConnection(url, user, password);
       System.out.println("数据库连接成功");
      } catch (SQLException ex1)
      {
       System.out.println("数据库连接失败");
      } 
      return conn;
    }
    
    //-----------------------------------关闭链接----------------------------------
    
    public  void Close() 
    {
      try {
    	rs.close();
    } catch (SQLException e) {
    	e.printStackTrace();
    }
      try {
    	st.close();
    } catch (SQLException e1) {
    	e1.printStackTrace();
    }
      try {
    	conn.close();
    } catch (SQLException e) {
    	e.printStackTrace();
    }
    }
    //----------------------------------------登陆---------------------------------
    public int landing(String name1,String password1) 
    {
    	int num = 0;
    	String sql = "select *from 用户表";
    	try{
    		getConn();
    		st = conn.createStatement();
    		rs = st.executeQuery(sql);
    		while(rs.next())
    		{
    			String name = rs.getString(1).trim();
    			String password = rs.getString(2).trim();
    			if(name.equals(name1)&&password.equals(password1))
    			{
    				num = 1;
    			}
    			
    		}
    	}catch (SQLException e) {
    		// TODO: handle exception
    	} catch (ClassNotFoundException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
    	Close();
    	return num;
    }
    //--------------------------------查询-------------------------------
    public Vector<Vector<Object>> query(String tableName,int column)
    {
    	int num = 0;
    	String sql = "select *from "+tableName;
    	Vector<Vector<Object>> data = new Vector<Vector<Object>>();
    	try{
    		getConn();
    		st = conn.createStatement();
    		rs=st.executeQuery(sql);
    		while(rs.next())
    		{
    			Vector<Object> rowdata = new Vector<Object>();
    			for(num=1;num<=column;num++)
    			{
    				rowdata.add(rs.getString(num));	  
    			}
    			data.add(rowdata);
    		}
    	  }catch(SQLException ex1)
    		{
    		System.out.println("失败"+ex1);
    		} catch (ClassNotFoundException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    		}
    		Close();
    		return data;
    }
    //---------------------------------------删除----------------------------------
    public int delete(String sql)
    {
    	int num = 0;
    	try{
    		getConn();
    		st = conn.createStatement();
    	    num = st.executeUpdate(sql);
    	}catch (SQLException e) {
    		// TODO: handle exception
    	} catch (ClassNotFoundException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}	
    	Close();
    	return num;
    }
    //-------------------------------------保存-------------------------------------
    public Vector<Vector<Object>> Save(String[] sqlvalue,String tableName,int row,int column) 
    {
    	Vector<Vector<Object>> data = new Vector<Vector<Object>>();
    	try{
    		getConn();
    		st = conn.createStatement();
    	    st.executeUpdate("delete from "+tableName);
    		for(int i =0;i<row;i++)
    		{
    			st.executeUpdate(sqlvalue[i].toString());
    		}		
    		data = query(tableName, column);
    		
    	}catch (SQLException e) {
    		// TODO: handle exception
    	} catch (ClassNotFoundException e) {
    		// TODO Auto-generated catch block
    		e.printStackTrace();
    	}
    	return data;
    }
    }
    

    数据库连接账号密码及表名

    **

    这个是数据库的连接账号和密码123456
    这个是数据库的连接账号和密码

    这个是用户表结构和登陆账号和密码(可自行修改)
    在这里插入图片描述

    在这里插入图片描述

    **

    宿舍信息表结构**
    在这里插入图片描述

    **

    学生信息表结构**
    在这里插入图片描述

    ## 需要源码,点赞关注截图,发邮箱到1397195447@qq.com

    展开全文
  • Java-学生宿舍管理系统

    万次阅读 多人点赞 2018-12-30 10:29:03
    这次记录的是最近完成的实训作业,学生宿舍管理系统,使用Java swing完成界面设计,数据库用的是SQL server,IDE使用的是IDEA 学生宿舍管理系统的用户有宿管和学生,宿管有最高的权限,学生只有部分权限, 一、...

    PS:最近好多人反应源代码没有了,我看了下是有的,只是CSDN不跳转到GitHub了,要源代码的可以拉到最下面,右键超链接跳转就可以了                                                      --2021/06/22

     

     

     

     

    这次记录的是最近完成的实训作业,学生宿舍管理系统,使用Java swing完成界面设计,数据库用的是SQL server,IDE使用的是IDEA

    学生宿舍管理系统的用户有宿管和学生,宿管有最高的权限,学生只有部分权限,

    一、宿舍楼管理员:
        a.
    信息要求:

    宿舍楼管理员能查询上面提到的宿舍楼的所有相关信息,包括某一学号的学生在宿舍楼中住宿的详细信息,快件收发的所有信息,报修的所有信息,夜归的详细信息和学生离返校的信息。以利于对整个宿舍楼的全面管理。

    b.处理要求:

    当学生基本信息发生变化时,宿舍楼管理员能对其进行修改。比如,某些同学搬到其他的宿舍中去,他们在本宿舍楼中相应的记录就应该删去;或者学生转换专业,他们记录中院系的信息也要作相应的修改等等。

    当宿舍楼的电话号码发生变更时,宿舍楼管理员能根据有关证明做出修改。

    当快件到达本宿舍楼时,宿舍楼管理员应依据到达快件的相关信息在快件信息中插入一条记录,当同学们接收快件后,管理员应登记快件的接收时间,表明该信件已成功到达收信人的手中。

    当宿舍财产报修及时解决后,管理员应登记解决时间,表明该报修问题已成功解决。

    二、本宿舍楼的学生:

        a.信息要求:

    本宿舍楼的学生能查询其所在的宿舍的所有信息,能查询本楼的指定宿舍的电话号码以利于同楼宿舍间的通信。能查询自己的快件信息。能查询自己的夜归记录和离返校记录。

    b.处理要求:

    本宿舍楼的学生能在报修信息表中插入报修信息,表示本宿舍的财产发生了损毁需要学校派人维修。·

    学生离校时,能在离返校记录表中插入离校时间;学生返校后,能在离返校记录表中插入返校时间,表示已经回校。

    根据下面来建立表

    住宿学生数据字典:

    属性名

    存储代码

    类型

    长度

    备注

    学号

    Sno

    char

    20

    住宿学生学号

    姓名

    Sname

    char

    20

    住宿学生姓名

    性别

    Ssex

    char

    4

     

    专业

    Sdept

    char

    40

    学生专业

    宿舍号

    Dno

    char

    6

    住宿学生宿舍号

    入住时间

    Scheckin

    date

    8

    新生搬入时间

    宿舍数据字典:

    属性名

    存储代码

    类型

    长度

    备注

    宿舍号

    Dno

    char

    6

     

    宿舍电话

    Dphone

    char

    15

     

    宿舍财产数据字典:

    属性名

    存储代码

    类型

    长度

    备注

    物品号

    Pno

    Int

    2

    宿舍物品编号

    物品名

    Pname

    char

    20

    宿舍物品名

    邮件快递数据字典:

    属性名

    存储代码

    类型

    长度

    备注

    姓名

    Sname

    char

    20

    收件人姓名

    宿舍号

    Dno

    char

    6

    收件人宿舍号

    到达时间

    Marrive

    date

    8

    邮件快递到达时间

    接收时间

    Mreceive

    date

    8

    收件人接收时间

    邮件数量

    Mnumber

    tinyint

    2

    学生收到邮件数量

    报修数据字典:

    属性名

    存储代码

    类型

    长度

    备注

    宿舍号

    Dno

    char

    6

    报修人宿舍号

    物品号

    Pno

    Int

    2

    报修物品编号

    提交日期

    Rsubmit

    date

    8

    报修提交日期

    解决日期

    Rsolve

    date

    8

    问题解决日期

    报修原因

    Rreason

    char

    50

    物品损坏原因

    晚归数据字典:

    属性名

    存储代码

    类型

    长度

    备注

    学号

    Sno

    char

    20

    晚归学生姓名

    宿舍号

    Dno

    char

    6

    晚归学生宿舍号

    晚归时间

    Btime

    timestamp

    14

    学生晚归时间

    晚归原因

    Breasonr

    Char

    10

    学生晚归原因

    离校数据字典:

    属性名

    存储代码

    类型

    长度

    备注

    学号

    Sno

    char

    20

    离校学生姓名

    宿舍号

    Dno

    char

    6

    离校学生宿舍号

    离校时间

    Ltime

    date

    8

    学生离校时间

    返回时间

    Lreturn

    date

    8

    学生返校时间

    用户数据字典:

    属性名

    存储代码

    类型

    长度

    备注

    用户ID

    Uname

    char

    20

     

    用户密码

    Upassword

    char

    20

     

    用户类型

    Utype

    tnyint

    1

    普通或超级用户

     

     

    本次使用了卡片布局器(CardLayout)和选项卡布局器(JTabbedPane)来构成界面主体,登录界面和操作界面之间使用卡片布局器进行切换,(控件的位置请忽略,因为我懒得弄好看了......)

    正确输入用户名,密码之后切换到操作界面

    操作界面使用选项卡布局器来操作不同的表

    界面和操作界面代码(前面忘了说了,因为只是为了完成实训作业,并没有想着后期的维护,所以我的代码写的很烂,只是完成了功能,我会加上注释让你们尽可能的看明白,日后再把代码规范起来):

    public class login extends JFrame implements ActionListener {
        JLabel user, password;
        JTextField username;
        JPasswordField passwordField;
        JButton loginButton;
        CardLayout cardLayout = new CardLayout();
        JPanel card;
        JPanel cardPanel;
        JTabbedPane jTabbedPane;
        int type=1;
        Users users;
    
    
    
        public login() {
            init();
        }
    
        private void init() {//初始化界面
            setTitle("宿舍管理系统");
            setLayout(new BorderLayout());
            user = new JLabel("用户名");
            password = new JLabel("密码");
    
            card = new JPanel(cardLayout);
    
            JPanel panel1 = new JPanel(new BorderLayout());
    
            username = new JTextField();
            passwordField = new JPasswordField();
            loginButton = new JButton("登录");
            loginButton.addActionListener(this);
    
            JPanel titlepanel = new JPanel(new FlowLayout());//标题面板
            JLabel title = new JLabel("学生宿舍管理系统");
            titlepanel.add(title);
    
            JPanel loginpanel = new JPanel();//登录面板
            loginpanel.setLayout(null);
    
            user.setBounds(50, 20, 50, 20);
            password.setBounds(50, 60, 50, 20);
            username.setBounds(110, 20, 120, 20);
            passwordField.setBounds(110, 60, 120, 20);
            loginpanel.add(user);
            loginpanel.add(password);
            loginpanel.add(username);
            loginpanel.add(passwordField);
    
            panel1.add(titlepanel, BorderLayout.NORTH);
            panel1.add(loginpanel, BorderLayout.CENTER);
            panel1.add(loginButton, BorderLayout.SOUTH);
    
    
            card.add(panel1, "login");
            //card.add(cardPanel, "info");
    
            add(card);
            setBounds(600, 200, 900, 600);
            setVisible(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    
        public static void main(String[] args) {
            new login();
        }
    
        @Override
        public void actionPerformed(ActionEvent e) {
            boolean flag=false;//用来标志用户是否正确
    
            if (e.getSource() == loginButton) {
                ArrayList<Users> list = new CheckUsers().getUsers();//获得所有用户信息
                for (int i = 0; i < list.size(); i++) {//遍历所有用户信息,以此来判断输入的信息是否正确
                    users = list.get(i);
                    String passwordStr = new String(passwordField.getPassword());
                    if (username.getText().equals(users.getName()) && passwordStr.equals(users.getPassword())) {
                        if(users.getType()==1){//如果时学生
                            type=users.getType();
                            JOptionPane.showMessageDialog(null, "欢迎登录(学生)", "学生宿舍管理系统", JOptionPane.PLAIN_MESSAGE);
                        }else{//如果时宿管
                            type=users.getType();
                            System.out.println(type);
                            JOptionPane.showMessageDialog(null, "欢迎登录(宿管)", "学生宿舍管理系统", JOptionPane.PLAIN_MESSAGE);
                        }
                        flag = true;
                        break;//如果信息正确就退出遍历,提高效率
                    }
                }
                if(!flag){//信息不正确,重新输入
                    JOptionPane.showMessageDialog(null, "请输入正确的用户名或密码", "警告",JOptionPane.WARNING_MESSAGE);
                    username.setText("");
                    passwordField.setText("");
                }else{
                    //当输入的信息正确时,就开始加载选项卡界面,并把选项卡界面加入到卡片布局器中
                    DormitoryInfo dormitoryInfo = new DormitoryInfo(users,type);//宿舍信息
                    Express express = new Express(type,users);//快件信息
                    Renovation renovation = new Renovation(type,users);//维修信息
                    OutAndIn outAndIn = new OutAndIn(type,users);//学生离校和回校信息
                    Things things=new Things(type,users);//宿舍物品信息
                    Later later = new Later(type,users);//晚归信息
                    cardPanel = new JPanel();
                    jTabbedPane = new JTabbedPane(JTabbedPane.LEFT);
                    jTabbedPane.add("宿舍信息", dormitoryInfo);
                    jTabbedPane.add("快件信息", express);
                    jTabbedPane.add("维修信息", renovation);
                    jTabbedPane.add("学生离校与返校", outAndIn);
                    jTabbedPane.add("晚归记录", later);
                    jTabbedPane.add("宿舍物品", things);
                    cardPanel.add(jTabbedPane);
                    card.add(cardPanel, "info");
                    cardLayout.show(card, "info");//输入信息正确就显示操作界面,否则重新输入正确信息
                }
            }
        }
    }

    数据库的数据显示:我用的是表格来显示数据,这样能够看起来整齐点

        JTable table=new JTable();
        String[] col = { "学号", "姓名", "性别","专业","宿舍号","入住时间" };
        DefaultTableModel mm = new DefaultTableModel(col, 0); // 定义一个表的模板
    
    
    while (resultSet.next()){//把数据库中的数据添加到表格中
                        String Sno=resultSet.getString(1);
                        String Sname=resultSet.getString(2);
                        String Ssex=resultSet.getString(3);
                        String Sdept=resultSet.getString(4);
                        String Dno=resultSet.getString(5);
                        String Scheckin=resultSet.getString(6);
                        String[] data={Sno,Sname,Ssex,Sdept,Dno,Scheckin};
                        mm.addRow(data);
                    }

     

     

    SQL server连接

    SQL server的下载。和SQL server的JDBC怎么搞,我这里就不多说了,网上教程很多,也不难

    public class GetConnection {
        private Connection con=null;
        public Connection GetConnection(){
            String URL="jdbc:sqlserver://localhost:1433;DatabaseName=students";
            String USER="sa";
            String KEY="********";
    
            try {
                Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                con= DriverManager.getConnection(URL, USER, KEY);
            } catch (Exception e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }
            return con;
        }
    }

    因为代码不少,全部放上来有点太长了,所以我这里只写其中一个,其他的都是大同小异无非就是对数据库的增删改查,源码我会放在我的Github上

    宿管对于宿舍信息的操作,当有学生换宿舍或者换专业的时候,宿管能够对该学生的宿舍信息进行修改并保存到数据库中,

    代码:(再次声明,我的代码只是为了完成作业,不建议像我这样写代码,很杂乱,不仅难理解还难维护)

    public class DormitoryInfo extends JPanel implements ActionListener {
        Connection connection = new GetConnection().GetConnection();
        Users users;//当前用户
        int type;//用户类型
        String Dno="";//宿舍号
        JTable table=new JTable();
        String[] col = { "学号", "姓名", "性别","专业","宿舍号","入住时间" };
        DefaultTableModel mm = new DefaultTableModel(col, 0); // 定义一个表的模板
        JLabel Sdept,suse,name;
        JTextField SdeptText,suseText,nameText;
        JButton submit;
        JPanel suguan;
        public DormitoryInfo(Users users,int type){//从登录界面传回,用户名和用户类型
            this.type=type;
            this.users=users;
            setLayout(new FlowLayout());
    
            table.setModel(mm);
            table.setRowSorter(new TableRowSorter<>(mm));//排序
            JPanel jPanel=new JPanel(new FlowLayout());
            JScrollPane js=new JScrollPane(table);
            jPanel.add(js);
    
            add(jPanel);
            search();
        }
    
        private void search(){
            PreparedStatement state;
            ResultSet resultSet;
            if(type==1){//如果是学生,只显示学生自己宿舍的信息
                try {
                    inquire();
                    String select="select Dno from student where Sname"+"="+"'"+users.getName()+"'";
                    state=connection.prepareStatement(select);
                    resultSet=state.executeQuery();
                    while (resultSet.next()){
                        Dno=resultSet.getString("Dno");
                    }
                    System.out.println(users.getName()+users.getName().length());
                    select="select*from student where Dno"+"="+"'"+Dno+"'";
                    state=connection.prepareStatement(select);
                    resultSet = state.executeQuery();
                    while (resultSet.next()){
                        String Sno=resultSet.getString(1);
                        String Sname=resultSet.getString(2);
                        String Ssex=resultSet.getString(3);
                        String Sdept=resultSet.getString(4);
                        String Dno=resultSet.getString(5);
                        String Scheckin=resultSet.getString(6);
                        String[] data={Sno,Sname,Ssex,Sdept,Dno,Scheckin};
                        mm.addRow(data);
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }else if(type==2){//如果是宿管,则显示全部学生的宿舍
                try {
                    xiugai();
                    state=connection.prepareStatement("select *from student");
                    resultSet = state.executeQuery();
                    while (resultSet.next()){
                        String Sno=resultSet.getString(1);
                        String Sname=resultSet.getString(2);
                        String Ssex=resultSet.getString(3);
                        String Sdept=resultSet.getString(4);
                        String Dno=resultSet.getString(5);
                        String Scheckin=resultSet.getString(6);
                        String[] data={Sno,Sname,Ssex,Sdept,Dno,Scheckin};
                        mm.addRow(data);
                    }
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
    
        }
    
        private void inquire(){//学生只能查询任意宿舍的电话
            suse=new JLabel("宿舍号");
            suseText=new JTextField(10);
            submit=new JButton("查询");
            submit.addActionListener(this);
           suguan=new JPanel(new GridLayout(2, 2));
           suguan.add(suse);suguan.add(suseText);suguan.add(submit);
           add(suguan);
        }
    
    
        private void xiugai(){//宿管修改学生的宿舍信息
            Sdept=new JLabel("学院");
            suse=new JLabel("宿舍号");
            SdeptText=new JTextField(10);
            suseText=new JTextField(10);
            name=new JLabel("名字");
            nameText=new JTextField(10);
            suguan=new JPanel(new GridLayout(4, 2));
            submit=new JButton("提交");
            submit.addActionListener(this);
            suguan.add(name);suguan.add(nameText);
            suguan.add(Sdept);suguan.add(SdeptText);
            suguan.add(suse);suguan.add(suseText);
            add(suguan);
            suguan.add(submit);
        }
        @Override
        public void actionPerformed(ActionEvent e) {
            if(e.getSource()==submit&&type==2){//如果点击按钮的是宿管
                try {
                    if (suseText.getText().length()>0&&SdeptText.getText().length()==0){//只修改宿舍号
    
                        Statement statement = connection.createStatement();
                        String sql="update student set Dno="+"'"+suseText.getText()+"'"+"where Sname"+"="+"'"+nameText.getText()+"'";
                        statement.executeUpdate(sql);
                        PreparedStatement state;
                        ResultSet resultSet;
                        state=connection.prepareStatement("select *from student");
                        resultSet = state.executeQuery();
                        while(mm.getRowCount()>0){//把表格进行刷新,下次显示的时候重头开始显示
                            //System.out.println(model.getRowCount());
                            mm.removeRow(mm.getRowCount()-1);
                        }
                        while (resultSet.next()){//把更新后的数据重新显示到表格中,下同
                            String Sno=resultSet.getString(1);
                            String Sname=resultSet.getString(2);
                            String Ssex=resultSet.getString(3);
                            String Sdept=resultSet.getString(4);
                            String DDno=resultSet.getString(5);
                            String Scheckin=resultSet.getString(6);
                            String[] data={Sno,Sname,Ssex,Sdept,DDno,Scheckin};
                            mm.addRow(data);
                        }
                    }
                  if(suseText.getText().length()==0&&SdeptText.getText().length()>0){//只修改所在系
                        Statement statement = connection.createStatement();
                        String sql="update student set Sdept="+"'"+SdeptText.getText()+"'"+"where Sname"+"="+"'"+nameText.getText()+"'";
                        statement.executeUpdate(sql);
                        PreparedStatement state;
                        ResultSet resultSet;
                        state=connection.prepareStatement("select *from student");
                        resultSet = state.executeQuery();
                        while(mm.getRowCount()>0){//把表格进行刷新,下次显示的时候重头开始显示
                            //System.out.println(model.getRowCount());
                            mm.removeRow(mm.getRowCount()-1);
                        }
                        while (resultSet.next()){
                            String Sno=resultSet.getString(1);
                            String Sname=resultSet.getString(2);
                            String Ssex=resultSet.getString(3);
                            String Sdept=resultSet.getString(4);
                            String DDno=resultSet.getString(5);
                            String Scheckin=resultSet.getString(6);
                            String[] data={Sno,Sname,Ssex,Sdept,DDno,Scheckin};
                            mm.addRow(data);
                        }
                    }
                    if(suseText.getText().length()>0&&SdeptText.getText().length()>0){//同时修改专业和宿舍
                        Statement statement = connection.createStatement();
                        String sql="update student set Sdept="+"'"+SdeptText.getText()+"'"+", Dno="+ "'"+suseText.getText()+"'"   +"where Sname"+"="+"'"+nameText.getText()+"'";
                        statement.executeUpdate(sql);
                        PreparedStatement state;
                        ResultSet resultSet;
                        state=connection.prepareStatement("select *from student");
                        resultSet = state.executeQuery();
                        while(mm.getRowCount()>0){//把表格进行刷新,下次显示的时候重头开始显示
                            //System.out.println(model.getRowCount());
                            mm.removeRow(mm.getRowCount()-1);
                        }
                        while (resultSet.next()){
                            String Sno=resultSet.getString(1);
                            String Sname=resultSet.getString(2);
                            String Ssex=resultSet.getString(3);
                            String Sdept=resultSet.getString(4);
                            String DDno=resultSet.getString(5);
                            String Scheckin=resultSet.getString(6);
                            String[] data={Sno,Sname,Ssex,Sdept,DDno,Scheckin};
                            mm.addRow(data);
                        }
                    }
    
                } catch (Exception e1) {
                    e1.printStackTrace();
                }
            }
            if(e.getSource()==submit&&type==1){//如果是学生的身份进入
                PreparedStatement state;
                ResultSet resultSet;
                try {
                    state=connection.prepareStatement("select Dphone from Dormitory where Dno ="+"'"+suseText.getText()+"'");
                    resultSet = state.executeQuery();
                    while (resultSet.next()){
                        //suse.setText("电话");
                        suseText.setText(resultSet.getString("Dphone"));
                    }
                } catch (SQLException e1) {
                    e1.printStackTrace();
                }
    
            }
        }
    }

    这里提几个可能会遇到的问题,至少是我遇到的问题

    1.当我们更新完数据,再次显示数据的时候会发现,上一次显示的并没有消失,而是会叠加

    解决这个问题只需要再每次显示新数据的时候,把表格之前的数据都删除掉就行了

     while(mm.getRowCount()>0){//获得当前表格的行数,如果大于0就删除
                            mm.removeRow(mm.getRowCount()-1);//列名不删除
                        }

    2.SQL server的char 类型和varchar类型,一开始设计表的时候,字符全都是char类型,但是在登录时,即使信息输入正确还是没法登录,后来才知道char时定长的,如果你的字符长度不够,它会在后面用空格补充,所以在验证的时候即使信息看似正确了,但后面其实跟着空格,除非你能够确定你每个字符的长度,否则建议使用varchar,varchar是变长的,你保存的字符是多长,它就是多长,是可变的,这就让信息判断很方便准确了,

     

    其他的操作都跟上面介绍的那个差不多,只是实现的功能不同,但界面都是相同的,我就不一一介绍了,有需要的就去我GitHub看看吧

    GitHub

     

     

    展开全文
  • 学生宿舍管理

    2013-06-05 21:25:53
    php+sql,非常简单的一个程序,可以查询,修改和删除学生信息
  • 【题目】学生宿舍管理系统 考查点:线性结构、文件操作 注意:必须使用文件存储数据,不得使用数据库管理系统。 任务:通过此系统可以实现如下功能: 录入: 可以录入宿舍情况,包括宿舍号、可容纳学生数、已容纳...
  • 学生宿舍管理.cpp

    2019-09-30 11:24:45
    学生宿舍管理
  • 学生宿舍管理系统需求分析 精品文档 精品文档 收集于网络如有侵权请联系管理员删除 收集于网络如有侵权请联系管理员删除 精品文档 收集于网络如有侵权请联系管理员删除 学生宿舍管理系统需求分析 第一部分 调查用户...
  • 学生宿舍管理系统 jsp

    2018-04-15 17:17:40
    学生宿舍管理系统 jsp 学生宿舍管理系统 jsp 学生宿舍管理系统 jsp
  • 学生宿舍管理系统

    2019-05-28 17:50:38
    是一个学生宿舍管理系统,里面有三种登录方式,系统管理员,宿舍管理员,和学生,分别都有自己的权限功能全面
  • 学生宿舍管理系统.rar

    2021-02-24 15:08:42
    php学生宿舍管理系统
  • 基于asp.net和sql的学生宿舍管理管理系统。。。
  • 学生宿舍管理系统.py

    2021-04-17 15:30:16
    学生宿舍管理系统期末作业
  • 教育资料 测试分析报告说明书 学生宿舍管理系统 目录 TOC \o "1-3" \h \z \u 一引言 4 1.1 测试目的 4 1.2项目背景 4 1.3定义 5 1.4术语定义 5 1.5参考资料 5 二任务概述 6 2.1目标 6 2.2运行环境 6 三计划 7 3.1...
  • java学生宿舍管理系统

    2021-04-29 17:55:38
    java学生宿舍管理系统,来了就点个赞再走呗,即将毕业的兄弟有福了!
  • 学生宿舍管理系统sql文件
  • 随着科技的发展,智能化管理越来越重要。大学生在宿舍的时间超过了 1/3...学生宿舍管理系统能够合理安排新生分配宿舍,不浪费公共资源,减轻学校管理压力,同时减少宿舍内同学之间的矛盾,促使学生享受舒适的校园生活。
  • VFP学生宿舍管理

    2014-06-02 14:48:24
    VFP学生宿舍管理
  • 计算机系毕业论文源码+原论文。 学生宿舍管理系统源代码。内加论文。本人毕业设计作品。 本系统没病毒,请网友放心使用。
  • Java学生宿舍管理系统

    2018-08-29 10:31:33
    Java学生宿舍管理系统附代码和文件说明,有需要的可以借鉴一下
  • 学生宿舍管理系统HTML

    2019-02-16 14:52:06
    学生宿舍管理系统HTML,包含所有图片、HTML、CSS、JS等代码,适用于各大公司管理系统

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,108
精华内容 843
关键字:

学生宿舍管理