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

    2018-04-25 16:31:11
    java宿舍管理系统 基础功能全有
  • JAVA宿舍管理系统2019本人原创,这个是本人2018年的毕业,从来没分享过,下载过的人数不多原创,希望可以对大家有帮助,内部主要是java、mysql、eclipse、js、jquery技术。内含百度云链接支持免费下载。没积分的可以...
  • java宿舍管理系统毕业设计,可供参考,其实并不复杂。
  • java 宿舍管理系统.rar

    2019-12-09 17:06:05
    Java + mysql 学生宿舍管理系统 采用MVC的设计模式,是java学习阶段的小项目,仅供学习使用 #数据库文件:domitory.sql #数据库配置文件:DormitorySystem/src/JDBC/db.java #启动文件:DormitorySystem...
  • java宿舍管理系统.rar

    2021-06-10 08:40:15
    实现宿舍管理,宿舍楼号,房号,住的人员,是否饱和状态。
  • 文件 addmessage.java 代码 import java.awt; import java.awt.event; import java.sql; import java.util; import javax.swing; import javax.swing.table; class addmessage extends JFrame implements Act
  • 主要功能模块: ...2、学生功能 3、宿管功能 ...(4)、宿舍管理 (5)、住宿管理 4、管理员功能 (1)、学生管理 (2)、宿管管理 (3)、楼宇管理 (4)、宿舍管理 (5)、住宿管理 (6)、系统管理
  • 采用java技术构建的一个管理系统。整个开发过程首先对系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计...
  • 3需求规定 3.1对功能的规定 学生管理的输入操作和输出 公寓管理的输入操作和输出 公寓物资管理系统的输入操作和输出 公寓水电管理 访客管理 3.2对性能的需求 3.2.1精度 所填选项 数据类型 数据长度 数据要求 学号 ...
  • 采用java技术构建的一个管理系统。整个开发过程首先对系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计...
  • 最近了解了基于javaweb的学校宿舍管理系统项目,在这个平台记录一下这个基于javaweb的学校宿舍管理系统项目,方便以后再次使用或学习的时候能够及时的翻阅。在完成基于javaweb的学校宿舍管理系统项目的时候,考虑了...

    最近了解了基于javaweb的学校宿舍管理系统项目,在这个平台记录一下这个基于javaweb的学校宿舍管理系统项目,方便以后再次使用或学习的时候能够及时的翻阅。在完成基于javaweb的学校宿舍管理系统项目的时候,考虑了很多框架。最终决定选用SSM(MYECLIPSE),该框架具有极强的移植性,多平台性,便于操作性等优点。此框架能在MYECLIPSE开发工具中完美的编写和运行,基于javaweb的学校宿舍管理系统为一个 后台项目。采用当前非常流行的B/S体系结构,以JAVA作为开发技术,主要依赖SSM技术框架,mysql数据库建立本系统。

    在对基于javaweb的学校宿舍管理系统项目进行需求分析的时候,得出系统的登录角色包括了管理员、学生。对应用户可以通过登录自己的账号,进行入系统。系统对不同角色拥有不同权限。

    在系统的功能中,学生是一个重要的表。这个表使得宿舍关联了起来。在学生表中学生的宿舍与宿舍的bianhao字段对应、学生的宿舍id与宿舍的id字段对应

    ,他们拥有关联关系。

    总结得出基于javaweb的学校宿舍管理系统项目所有数据为:管理员(admin)、学生(xuesheng)、宿舍(sushe)

    基于javaweb的学校宿舍管理系统之管理员表

    字段名 | 类型 | 属性 |描述

    id| INT(11) | PRIMARY KEY |管理员id

    username| VARCHAR(255) | |账号

    password| VARCHAR(255) | | 密码

    基于javaweb的学校宿舍管理系统之学生表

    字段名 | 类型 | 属性 |描述

    id| INT(11) | PRIMARY KEY |学生id

    mingzi| VARCHAR(255) | |名字

    sushe| VARCHAR(255) | |宿舍

    susheid| VARCHAR(255) | |宿舍id

    banji| VARCHAR(255) | |班级

    lianxifangshi| VARCHAR(255) | |联系方式

    username| VARCHAR(255) | |账号

    password| VARCHAR(255) | | 密码

    基于javaweb的学校宿舍管理系统之宿舍表

    字段名 | 类型 | 属性 |描述

    id| INT(11) | PRIMARY KEY |宿舍id

    bianhao| VARCHAR(255) | |编号

    jieshao| VARCHAR(255) | | 介绍

    SET FOREIGN_KEY_CHECKS=0;------------------------------

    ------------------------------

    --Table structure for ggjyjavawebdxxssglxt

    ------------------------------

    DROP TABLE IF EXISTS`t_admin`;CREATE TABLE `t_admin` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '管理员id',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',PRIMARY KEY(`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='管理员';------------------------------

    DROP TABLE IF EXISTS`t_xuesheng`;CREATE TABLE `t_xuesheng` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '学生id',`mingzi` VARCHAR(255) DEFAULT NULL COMMENT '名字',`sushe` VARCHAR(255) DEFAULT NULL COMMENT '宿舍',`susheid` INT(11) DEFAULT NULL COMMENT '宿舍id',`banji` VARCHAR(255) DEFAULT NULL COMMENT '班级',`lianxifangshi` VARCHAR(255) DEFAULT NULL COMMENT '联系方式',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',PRIMARY KEY(`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='学生';------------------------------

    DROP TABLE IF EXISTS`t_sushe`;CREATE TABLE `t_sushe` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '宿舍id',`bianhao` VARCHAR(255) DEFAULT NULL COMMENT '编号',`jieshao` VARCHAR(5000) DEFAULT NULL COMMENT '介绍',PRIMARY KEY(`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='宿舍';

    添加宿舍模块:

    系统中存在添加宿舍功能,通过点击添加宿舍可以跳转到该功能模块,在该功能模块中,填写对应的宿舍信息。宿舍包含信息编号,介绍,填写完所有信息后,通过post方法将数据提交到tianjiasushe.action中,该地址将在服务器中susheController类中的tianjiasusheact方法中进行响应。响应结果为,获取所有的宿舍信息,封装一个sushe类,使用susheController类中定义的sushedao的insert方法,将宿舍数据插入到数据库的sushe表中。并给出用户提示信息,添加宿舍成功,将该信息保存到request的message中,该信息将在页面中进行展示。该部分核心代码如下:

    通过sushedao的insert方法将页面传输的宿舍添加到数据库中 sushedao.insert(sushe);

    将添加宿舍成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "添加宿舍成功");

    返回宿舍管理界面

    return "forward:/tianjiasushe.action";

    查询宿舍模块:

    宿舍的查询模块实现方式为,在页面中发起susheguanli.action请求。通过该请求,响应服务器susheController类中的susheguanli,在该方法中通过selectByexample进行数据的查询操作。将所有的宿舍信息查询后,保存到request中的susheall中,在页面中进行展示,返回susheguanli.jsp,该部分核心代码如下所示:

    生成宿舍样例类,通过example定义查询条件 SusheExample example = new SusheExample();

    通过sushedao的selectByExample方法查询出所有的宿舍信息 List susheall = sushedao.selectByExample(example);

    将宿舍信息,保存到request中,在页面通过foreach方法进行展示 request.setAttribute("susheall", susheall);

    返回宿舍管理界面

    return "forward:/susheguanli.action";

    修改宿舍模块:

    点击修改按钮,可以跳转到宿舍修改页面。在宿舍修改页面中,将初始化该宿舍的所有信息,并将信息一一对应填充到对应编辑栏中。编辑完宿舍信息后,页面通过post方法将数据封装为一个宿舍实体,传入到susheController中。在xiugaisushe中进行接收,接收完毕后,调用susheMapper中的updateByPrimaryKeySelective方法进行修改。该部分代码如下:

    通过sushedao的修改方法根据id修改对应的宿舍 sushedao.updateByPrimaryKeySelective(sushe);

    将修改宿舍成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "修改宿舍信息成功");

    返回宿舍管理界面

    return "forward:/susheguanli.action";

    删除宿舍模块:

    删除宿舍功能的实现方式为,通过点击删除宿舍按钮,向服务器发起get请求。请求中包含宿舍的id信息,在susheController中使用int接受该id,并将该id传入sushedao的deleteByPrimaryKey方法中。该方法的作用为根据id删除对应宿舍。最后将删除宿舍成功的信息返回页面,该部分核心代码如下:

    通过sushedao的删除方法根据id删除对应的宿舍 sushedao.deleteByPrimaryKey(id);

    将删除宿舍成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "删除宿舍成功");

    返回宿舍管理界面

    return "forward:/susheguanli.action";

    展开全文
  • 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

    展开全文
  • MyBatis可以使用简单的XML或注解进行配置和原始映射,以将接口和Java的POJO (Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 MyBatis作为持久层框架,其主要思想是将程序中的大量SQL语句剥离出来...

    前言

    MyBatis是一个支持普通SQL查询、存储过程和高级映射的优秀持久层框架。MyBatis 去掉了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解进行配置和原始映射,以将接口和Java的POJO (Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

    MyBatis作为持久层框架,其主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件中,以实现SQL的灵活配置。这样做的好处是将SQL与程序代码分离,做到可以在不修改程序代码的情况下,直接在配置文件中修改SQL。

    在这里分享一份 [mybatis从入门到精通] 的强力教程,定能够助你一臂之力。

    Redis主从复制

    概念

    Redis的主从复制概念和MySQL的主从复制大概类似。一台主机master,一台从机slaver。master主机数据更新后根据配置和策略,自动同步到slaver从机,Master以写为主,Slave以读为主

    主要用途

    • 读写分离:适用于读多写少的应用,增加多个从机,提高读的速度,提高程序并发

    • 数据容灾恢复:从机复制主机的数据,相当于数据备份,如果主机数据丢失,那么可以通过从机存储的数据进行恢复。

    • 高并发、高可用集群实现的基础:在高并发的场景下,就算主机挂了,从机可以进行主从切换,从机自动成为主机对外提供服务。

    一主多从配置

    环境准备

    老哥太穷了,就用一台机器模拟三个机器。

    • 第一步:将redis.conf复制3份,分别是redis6379.conf、redis6380.conf、redis6381.conf

    • 第二步: 修改三个redis.conf文件里的port端口、pid文件名、日志文件名、rdb文件名

    • 第三步: 分别打开三个窗口模拟三台服务器,并开启redis服务。

    查看当前3台机器主从角色

    先用命令info replication看看3台机器目前的角色是什么。

    # 三台机器都是这个状态
    127.0.0.1:6379> info replication
    # 角色是master主机
    role:master
    # 从机个数为0
    connected_slaves:0
    

    设置主从关系

    这里注意,我们只设置从机就可以了,不用设置主机。我们选择63806381作为从机6379作为主机

    # 6380 端口
    127.0.0.1:6380> SLAVEOF 127.0.0.1 6379
    
    # 6381 端口
    127.0.0.1:6381> SLAVEOF 127.0.0.1 6379
    
    # 6381 端口
    127.0.0.1:6381> SLAVEOF 127.0.0.1 6379
    

    再次查看3台机器目前角色

    再次执行命令:info replication

    # 主机
    127.0.0.1:6379> info replication
    role:master # 角色:主机
    connected_slaves:2 #连接的从机个数,以及从机IP和端口
    slave0:ip=127.0.0.1,port=6380,state=online,offset=98,lag=1
    slave1:ip=127.0.0.1,port=6381,state=online,offset=98,lag=1
    
    # 从机1
    127.0.0.1:6380> info replication
    role:slave # 角色:从机
    master_host:127.0.0.1 # 主机的IP和端口
    master_port:6379
    
    # 从机2
    127.0.0.1:6381> info replication
    role:slave # 角色:从机
    master_host:127.0.0.1 # 主机的IP和端口
    master_port:6379
    

    搭建成功,试验一把

    • 全量复制: 从机会把主机之前的数据全部都同步过来,大家可以在从机上get 某key试试。

    • 增量复制: 当主机新增数据时,从机会将该新增数据同步过来,大家可以在主机上执行命令set key value,然后在从机上get 该key,看是否能获取到。

    读写分离

    Redis的从机默认不允许进行写操作,大家可以在从机上执行命令set key value,会报错。

    # 6380从机
    127.0.0.1:6380> set k3 v3
    (error) READONLY You can't write against a read only slave.
    

    「呼,好累」,主从复制写的差不多了!!

    主从复制原理

    全量复制

    **「①」**slave发送psync,由于是第一次复制,不知道master的runid,自然也不知道offset,所以发送psync ? -1

    **「②」**master收到请求,发送master的runid和offset给从节点。

    **「③」**从节点slave保存master的信息

    **「④」**主节点bgsave保存rdb文件

    **「⑤」**主机点发送rdb文件

    并且在**「④」「⑤」**的这个过程中产生的数据,会写到复制缓冲区repl_back_buffer之中去。

    **「⑥」**主节点发送上面两个步骤产生的buffer到从节点slave

    **「⑦」**从节点清空原来的数据,如果它之前有数据,那么久会清空数据

    **「⑧」**从节点slave把rdb文件的数据装载进自身。

    全量复制的开销

    **「①」**bgsave时间

    **「②」**rdb文件网络传输时间

    **「③」**从节点清空数据的

    **「④」**从节点加载rdb的时间

    **「⑤」**可能的aof重写时间,这是针对从节点,例如开启了aof之后,从节点添加buffer数据时候,可能需要aof重写

    基于上面的原因,有的情况下不适合使用全量复制,例如网络抖动之后,从节点只需要传送一部分数据,不需要传送全部数据,redis2.8之后实现了部分复制功能

    部分复制

    **「①」**假设发送网络抖动或者别的情况,暂时失去了连接

    **「②」**这个时候,master还在继续往buffer里面写数据

    **「③」**slave重新连接上了master

    **「④」**slave向master发送自己的offset和runid

    **「⑤」**master判断slave的offset是否在buffer的队列里面,如果是,那就返回continue给slave,否则需要进行全量复制(因为这说明已经错过了很多数据了)

    **「⑥」**master发送从slave的offset开始到缓冲区队列结尾的数据给slave

    最后

    小编在这里分享些我自己平时的学习资料,由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以关注+点赞,点击这里免费获取

    程序员代码面试指南 IT名企算法与数据结构题目最优解

    这是” 本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一-痛点, 本书选取将近200道真实出现过的经典代码面试题,帮助广“大程序员的面试准备做到万无一失。 “刷”完本书后,你就是“题王”!

    image.png

    《TCP-IP协议组(第4版)》

    本书是介绍TCP/IP协议族的经典图书的最新版本。本书自第1版出版以来,就广受读者欢迎。

    本书最新版进行」护元,以体境计算机网络技不的最新发展,全书古有七大部分共30草和7个附录:第一部分介绍一些基本概念和基础底层技术:第二部分介绍网络层协议:第三部分介绍运输层协议;第四部分介绍应用层协议:第五部分介绍下一代协议,即IPv6协议:第六部分介绍网络安全问题:第七部分给出了7个附录。

    image.png

    Java开发手册(嵩山版)

    这个不用多说了,阿里的开发手册,每次更新我都会看,这是8月初最新更新的**(嵩山版)**

    image.png

    MySQL 8从入门到精通

    本书主要内容包括MySQL的安装与配置、数据库的创建、数据表的创建、数据类型和运算符、MySQL 函数、查询数据、数据表的操作(插入、更新与删除数据)、索引、存储过程和函数、视图、触发器、用户管理、数据备份与还原、MySQL 日志、性能优化、MySQL Repl ication、MySQL Workbench、 MySQL Utilities、 MySQL Proxy、PHP操作MySQL数据库和PDO数据库抽象类库等。最后通过3个综合案例的数据库设计,进步讲述 MySQL在实际工作中的应用。

    image.png

    Spring5高级编程(第5版)

    本书涵盖Spring 5的所有内容,如果想要充分利用这一领先的企业级 Java应用程序开发框架的强大功能,本书是最全面的Spring参考和实用指南。

    本书第5版涵盖核心的Spring及其与其他领先的Java技术(比如Hibemate JPA 2.Tls、Thymeleaf和WebSocket)的集成。本书的重点是介绍如何使用Java配置类、lambda 表达式、Spring Boot以及反应式编程。同时,将与企业级应用程序开发人员分享一些见解和实际经验,包括远程处理、事务、Web 和表示层,等等。

    image.png

    JAVA核心知识点+1000道 互联网Java工程师面试题

    image.png

    image.png

    企业IT架构转型之道 阿里巴巴中台战略思想与架构实战

    本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。

    -1621586117898)]

    JAVA核心知识点+1000道 互联网Java工程师面试题

    [外链图片转存中…(img-aObujLvT-1621586117899)]

    [外链图片转存中…(img-JKcfQzQu-1621586117899)]

    企业IT架构转型之道 阿里巴巴中台战略思想与架构实战

    本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。

    image.png

    展开全文
  • 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

     

     

    展开全文
  • java做的宿舍管理系统

    热门讨论 2011-12-16 15:05:41
    很美观的java宿舍管理系统,有java源代码,有数据库
  • java学生宿舍管理系统

    2021-04-29 17:55:38
    java学生宿舍管理系统,来了就点个赞再走呗,即将毕业的兄弟有福了!
  • Java学生宿舍管理系统

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

    2015-01-30 10:45:33
    java宿舍管理系统,采用了mvc设计模式,命名和代码都十分规范,可用作新手参考学习。
  • java web 校园宿舍管理系统
  • java宿舍管理系统开发的一个毕业设计,有源码和截图
  • 利用Eclipse,MySql,开发的校园宿舍信息管理系统,Tomcat 6.0上部署的,实现的学生管理,宿舍管理,学生入住,迁出,缺寝等功能。
  • Java SE学生宿舍管理系统 java se + Mysql+jdbc,两种角色,非java web项目,下载时请注意
  • java学生宿舍管理系统论文,可以学习参考,毕业设计。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 460
精华内容 184
关键字:

java宿舍管理系统

java 订阅