导入工具类和数据

创建TeamSchedule项目,com.atguigu.team.

view,com.atguigu.team.service,com.atguigu.team.domain包

,并将TSUtility.java放入view包,Data.java放入service包

TSUtility.java

工具类

package com.atguigu.team.view;

import java.util.*;
/**
*
* @Description 项目中提供了TSUtility.java类,可用来方便地实现键盘访问。
* @author shkstart Email:shkstart@126.com
* @version
* @date 2019年2月12日上午12:02:58
*
*/
public class TSUtility {
private static Scanner scanner = new Scanner(System.in);
/**
*
* @Description 该方法读取键盘,如果用户键入’1’-’4’中的任意字符,则方法返回。返回值为用户键入字符。
* @author shkstart
* @date 2019年2月12日上午12:03:30
* @return
*/
public static char readMenuSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1, false);
c = str.charAt(0);
if (c != '1' && c != '2' &&
c != '3' && c != '4') {
System.out.print("选择错误,请重新输入:");
} else break;
}
return c;
}
/**
*
* @Description 该方法提示并等待,直到用户按回车键后返回。
* @author shkstart
* @date 2019年2月12日上午12:03:50
*/
public static void readReturn() {
System.out.print("按回车键继续...");
readKeyBoard(100, true);
}
/**
*
* @Description 该方法从键盘读取一个长度不超过2位的整数,并将其作为方法的返回值。
* @author shkstart
* @date 2019年2月12日上午12:04:04
* @return
*/
public static int readInt() {
int n;
for (; ; ) {
String str = readKeyBoard(2, false);
try {
n = Integer.parseInt(str);
break;
} catch (NumberFormatException e) {
System.out.print("数字输入错误,请重新输入:");
}
}
return n;
}
/**
*
* @Description 从键盘读取‘Y’或’N’,并将其作为方法的返回值。
* @author shkstart
* @date 2019年2月12日上午12:04:45
* @return
*/
public static char readConfirmSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1, false).toUpperCase();
c = str.charAt(0);
if (c == 'Y' || c == 'N') {
break;
} else {
System.out.print("选择错误,请重新输入:");
}
}
return c;
} private static String readKeyBoard(int limit, boolean blankReturn) {
String line = ""; while (scanner.hasNextLine()) {
line = scanner.nextLine();
if (line.length() == 0) {
if (blankReturn) return line;
else continue;
} if (line.length() < 1 || line.length() > limit) {
System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
continue;
}
break;
} return line;
}
}

Data.java

数据类

package com.atguigu.team.service;

public class Data {
public static final int EMPLOYEE = 10;
public static final int PROGRAMMER = 11;
public static final int DESIGNER = 12;
public static final int ARCHITECT = 13; public static final int PC = 21;
public static final int NOTEBOOK = 22;
public static final int PRINTER = 23; //Employee : 10, id, name, age, salary
//Programmer: 11, id, name, age, salary
//Designer : 12, id, name, age, salary, bonus
//Architect : 13, id, name, age, salary, bonus, stock
/**
* {"10", "1", "马云", "22", "3000"},
* {"13", "2", "马化腾", "32", "18000", "15000", "2000"},
*/
public static final String[][] EMPLOYEES = {
{"10", "1", "马云", "22", "3000"},
{"13", "2", "马化腾", "32", "18000", "15000", "2000"},
{"11", "3", "李彦宏", "23", "7000"},
{"11", "4", "刘强东", "24", "7300"},
{"12", "5", "雷军", "28", "10000", "5000"},
{"11", "6", "任志强", "22", "6800"},
{"12", "7", "柳传志", "29", "10800","5200"},
{"13", "8", "杨元庆", "30", "19800", "15000", "2500"},
{"12", "9", "史玉柱", "26", "9800", "5500"},
{"11", "10", "丁磊", "21", "6600"},
{"11", "11", "张朝阳", "25", "7100"},
{"12", "12", "杨致远", "27", "9600", "4800"}
}; //如下的EQUIPMENTS数组与上面的EMPLOYEES数组元素一一对应
//PC :21, model, display
//NoteBook:22, model, price
//Printer :23, name, type
public static final String[][] EQUIPMENTS = {
{},
{"22", "联想T4", "6000"},
{"21", "戴尔", "NEC17寸"},
{"21", "戴尔", "三星 17寸"},
{"23", "佳能 2900", "激光"},
{"21", "华硕", "三星 17寸"},
{"21", "华硕", "三星 17寸"},
{"23", "爱普生20K", "针式"},
{"22", "惠普m6", "5800"},
{"21", "戴尔", "NEC 17寸"},
{"21", "华硕","三星 17寸"},
{"22", "惠普m6", "5800"}
};
}

Equipment接口

包括:Equipment接口

PC、noteBook、Printer三个实现类

该接口实现类的创建:(快捷方法)

  1. implements接口,添加私有属性
  2. alt+shift+s->generate Setters and Getters 全选 创建属性调用方法
  3. alt+shift+s->generate constructor using Fields 分别创建带参和不带参的构造函数
  4. 实现接口的抽象方法,可利用报错处自动创建并修改

Equipment.java

package com.atguigu.team.domain;

public interface Equipment {
String getDescription();//默认是抽象方法
}

PC.java

package com.atguigu.team.domain;

public class PC implements Equipment{

	private String model;//机器型号
private String display;//显示器名称 public PC(String model, String display) {
super();
this.model = model;
this.display = display;
} public String getModel() {
return model;
} public void setModel(String model) {
this.model = model;
} public String getDisplay() {
return display;
} public void setDisplay(String display) {
this.display = display;
} @Override
public String getDescription() {
// TODO Auto-generated method stub
return model+"("+display+")";
} }

NoteBook.java

package com.atguigu.team.domain;

public class NoteBook implements Equipment{
private String model;//机器型号
private double price;//显示器价格
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public NoteBook() {
super();
}
public NoteBook(String model, double price) {
super();
this.model = model;
this.price = price;
}
@Override
public String getDescription() {
// TODO Auto-generated method stub
return model+"("+price+")";
} }

Printer.java

package com.atguigu.team.domain;

public class Printer implements Equipment{
private String name;//机器型号
private String type;//机器类型
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Printer(String name, String type) {
super();
this.name = name;
this.type = type;
}
public Printer() {
super();
}
@Override
public String getDescription() {
// TODO Auto-generated method stub
return name+"("+type+")";
} }

Employee类及其子类

完成employee相关类的创建

  • employee 员工类,父类,包括id,name,age,salary四个基本属性
  • programmer 程序员类,继承自employee类,从程序员开始可以被添加到团队中,拥有memberId、staus、equipment基本属性
  • designer 设计师类,继承自employee类,从设计师开始有奖金,拥有bonus基本属性
  • Architect 架构师类,继承自设计师类,从架构师开始有奖金,拥有block基本属性
  • status 状态类,是一个枚举类,表示员工状态,包括BUSY、FREE、VOCATION三种状态

Employee.java

package com.atguigu.team.domain;

import org.junit.platform.commons.util.ToStringBuilder;

public class Employee {
private int id;
private String name;
private int age;
private double salary;
public int getId() {
return id;
}
public Employee() {
super();
}
public Employee(int id, String name, int age, double salary) {
super();
this.id = id;
this.name = name;
this.age = age;
this.salary = salary;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public String getDetails() {
return id+"\t"+name+"\t"+age+"\t"+salary;
}
@Override
public String toString() {
return getDetails();
} }

Programmer.java

package com.atguigu.team.domain;

import com.atguigu.team.service.Status;

public class Programmer extends Employee{
private int memberId;//开发团队中Id
private Status status;//员工状态,空闲,已加入,休假
private Equipment equipment;//设备
public Programmer() {
super();
}
public Programmer(int id, String name, int age, double salary, Equipment eqpackage com.atguigu.team.domain; import com.atguigu.team.service.Status; public class Programmer extends Employee{
private int memberId;//开发团队中Id
private Status status=Status.FREE;//员工状态,空闲,已加入,休假
private Equipment equipment;//设备
public Programmer() {
super();
}
public Programmer(int id, String name, int age, double salary, Equipment equipment) {
super(id, name, age, salary);
this.equipment = equipment;
}
public int getMemberId() {
return memberId;
}
public void setMemberId(int memberId) {
this.memberId = memberId;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
public Equipment getEquipment() {
return equipment;
}
public void setEquipment(Equipment equipment) {
this.equipment = equipment;
}
@Override
public String toString() {
return getDetails()+"\t程序员\t" +status+"\t\t\t"+equipment.getDescription();
}
public String getDetailsForTeam() {
return memberId+"/"+getId()+"\t"+getName()+"\t"+getSalary()+"\t程序员";
}
}
uipment) {
super(id, name, age, salary);
this.equipment = equipment;
}
public int getMemberId() {
return memberId;
}
public void setMemberId(int memberId) {
this.memberId = memberId;
}
public Status getStatus() {
return status;
}
public void setStatus(Status status) {
this.status = status;
}
public Equipment getEquipment() {
return equipment;
}
public void setEquipment(Equipment equipment) {
this.equipment = equipment;
} }

Designer.java

package com.atguigu.team.domain;

public class Designer extends Programmer{
private double bonus;//奖金 public Designer() {
super();
} public double getBonus() {
return bonus;
} public void setBonus(double bonus) {
this.bonus = bonus;
} public Designer(int id, String name, int age, double salary, Equipment equipment, double bonus) {
super(id, name, age, salary, equipment);
this.bonus = bonus;
}
@Override
public String toString() {
return getDetails()+"\t设计师\t" +getStatus()+"\t"+bonus+"\t\t"+getEquipment().getDescription();
}
public String getDetailsForTeam() {
return getMemberId()+"/"+getId()+"\t"+getName()+"\t"+getSalary()+"\t设计师\t"+getBonus();
} }

Architect.java

package com.atguigu.team.domain;

public class Architect extends Designer{
private double stock;//股票 public Architect() {
super();
} public Architect(int id, String name, int age, double salary, Equipment equipment, double bonus, double stock) {
super(id, name, age, salary, equipment, bonus);
this.stock = stock;
} public double getStock() {
return stock;
} public void setStock(double stock) {
this.stock = stock;
}
@Override
@Override
public String toString() {
return getDetails()+"\t设计师\t" +getStatus()+"\t"+getBonus()+"\t"+stock+"\t"+getEquipment().getDescription();
}
public String getDetailsForTeam() {
return getMemberId()+"/"+getId()+"\t"+getName()+"\t"+getSalary()+"\t架构师\t"+getBonus()+"\t"+getStock()+"\t";
}
}

Status.java

package com.atguigu.team.service;
//表示员工状态
public class Status {
private final String NAME;
private Status(String name) {//私有化构造器
this.NAME=name;
}
//枚举类,类似单例设计模式
public static final Status FREE=new Status("FREE");
public static final Status BUSY=new Status("BUSY");
public static final Status VOCATION=new Status("VOCATION");
public String getNAME() {
return NAME;
} @Override
public String toString() {
return NAME;
}
}

NameListService类

名单类,负责将Data中数据封装到Employee[]数组中,并提供获取所有员工,获取指定员工的方法

NameListService.java

package com.atguigu.team.service;
import com.atguigu.team.domain.Architect;
import com.atguigu.team.domain.Designer;
import com.atguigu.team.domain.Employee;
import com.atguigu.team.domain.Equipment;
import com.atguigu.team.domain.NoteBook;
import com.atguigu.team.domain.PC;
import com.atguigu.team.domain.Printer;
import com.atguigu.team.domain.Programmer; import static com.atguigu.team.service.Data.*;
/**
*
* @Description 负责将Data中数据封装到Employee[]数组中
* @author LiJing
* @version v1.0
* @date 2021年12月5日
*/
public class NameListService {
private Employee[] employees; public NameListService() {
//根据Data类构建Employee数组,再根据Data类中数据创建对应对象
employees=new Employee[Data.EMPLOYEES.length];
for(int i=0;i<employees.length;i++) {
//获取员工基本类型和信息
int type=Integer.parseInt(EMPLOYEES[i][0]);
int id=Integer.parseInt(EMPLOYEES[i][1]);
String name=EMPLOYEES[i][2];
int age=Integer.parseInt(EMPLOYEES[i][3]);
double salary=Double.parseDouble(EMPLOYEES[i][4]);
Equipment equipment;
double bonus;
double stock;
switch(type) {
case EMPLOYEE:
employees[i]=new Employee(id,name,age,salary);
break;
case PROGRAMMER:
equipment=createEquipment(i);
employees[i]=new Programmer(id, name, age, salary, equipment);
break;
case DESIGNER:
equipment=createEquipment(i);
bonus=Double.parseDouble(EMPLOYEES[i][5]);
employees[i]=new Designer(id, name, age, salary, equipment,bonus);
break;
case ARCHITECT:
equipment=createEquipment(i);
bonus=Double.parseDouble(EMPLOYEES[i][5]);
stock=Double.parseDouble(EMPLOYEES[i][6]);
employees[i]=new Architect(id, name, age, salary, equipment, bonus, stock);
break;
}
}
}
//获取指定index上的员工的设备
private Equipment createEquipment(int index) {
// TODO Auto-generated method stub
int type=Integer.parseInt(EQUIPMENTS[index][0]);
String model=EQUIPMENTS[index][1];
switch(type) {
case PC://21
String display=EQUIPMENTS[index][2];
return new PC(model, display);
case NOTEBOOK://22
double price=Double.parseDouble(EQUIPMENTS[index][2]);
return new NoteBook(model,price);
case PRINTER://23
return new Printer(model,EQUIPMENTS[index][2]);
}
return null; }
//获取当前所有员工
public Employee[] getAllEmployees() {
return employees;
}
public Employee getEmployee(int id) throws TeamException {
for(int i=0;i<employees.length;i++) {
if(employees[i].getId()==id) {
return employees[i];
}
}
throw new TeamException("找不到指定的员工"); }
}

NameListServiceTest.java

package com.atguigu.team.junit;

import org.junit.jupiter.api.Test;

import com.atguigu.team.domain.Employee;
import com.atguigu.team.service.NameListService; /**
*
* @Description 对NameListService的测试
* @author LiJing
* @version
* @date 2021年12月5日
*/
public class NameListServiceTest {
@Test
public void testGetAllEmployees() {
NameListService service=new NameListService();
Employee[] employees=service.getAllEmployees();
for(int i=0;i<=employees.length;i++){
System.out.println(employees[i]);
}
}
}

teamService类

团队服务类,负责创建团队列表并实现团队成员的增删和获取

需要实现的属性,方法

private static int counter=1;//给memberId赋值使用
private final int MAX_MEMBER=5;//限制开发团队人数
private Programmer[] team=new Programmer[MAX_MEMBER];//保存开发团队成员
private int total;//记录开发团队中实际人数
public Programmer[] getTeam() //获取开发团队中所有成员
public void addMember(Employee e) //将指定员工添加到开发团队中
public void removeMember(int memberId)//从团队中删除成员

teamService.java

package com.atguigu.team.service;
/**
*
* @Description 关于开发团队的管理、添加和删除等
* @author
* @version
* @date 2021年12月5日
*/ import com.atguigu.team.domain.Architect;
import com.atguigu.team.domain.Designer;
import com.atguigu.team.domain.Employee;
import com.atguigu.team.domain.Programmer; public class TeamService {
private static int counter=1;//给memberId赋值使用
private final int MAX_MEMBER=5;//限制开发团队人数
private Programmer[] team=new Programmer[MAX_MEMBER];//保存开发团队成员
private int total;//记录开发团队中实际人数
/**
* @Description 获取开发团队中所有成员
* @date 2021年12月8日
* @return
*/
public Programmer[] getTeam() {
Programmer[] team=new Programmer[total];
for(int i=0;i<team.length;i++) {
team[i]=this.team[i];
}
return team;
}
/**
*
* @param e
* @throws TeamException
* @Description 将指定员工添加到开发团队中
* @date 2021年12月8日
*/
public void addMember(Employee e) throws TeamException {
//成员已满;该成员不是开发人员;该成员已在本团队;该成员在某团队中
//该成员在休假;团队至多一名架构师;团队至多两名设计师;团队至多三名程序员 if(total>MAX_MEMBER) {
throw new TeamException("成员已满,无法添加");
}
if(!(e instanceof Programmer)) {
throw new TeamException("该成员不是开发人员,无法添加");
}
if(isExist(e)) {
throw new TeamException("该成员已在本团队中,无法添加");
} Programmer p=(Programmer)e;//能走到这里一定是程序员,不会强转异常
if("BUSY".equals(p.getStatus().getNAME())){
throw new TeamException("该成员已在某团队中,无法添加");
}else if("VOVATION".equals(p.getStatus().getNAME())) {
throw new TeamException("该成员在休假中,无法添加");
} //获取team已有成员中架构师、设计师程序员个数
int numOfarch=0,numOfDes=0,nmOfPro=0;
for(int i=0;i<total;i++) {
if(team[i] instanceof Architect) {
numOfarch++;
}else if(team[i] instanceof Designer) {
numOfDes++;
}else if(team[i] instanceof Programmer) {
nmOfPro++;
}
}
if(p instanceof Architect) {
if(numOfarch>=1) {
throw new TeamException("团队中至多一名架构师,无法添加");
}
}else if(p instanceof Designer) {
if(numOfDes>=2) {
throw new TeamException("团队中至多一名设计师,无法添加");
}
}else if(p instanceof Programmer) {
if(nmOfPro>=3) {
throw new TeamException("团队中至多三名程序员,无法添加");
}
} //将p(或e)添加到现有team中
team[total++]=p;
//p属性赋值
p.setStatus(Status.BUSY);
p.setMemberId(counter++);
}
/**
*
* @param e
* @return
* @Description 判断指定员工是否存在于现有的开发团队中
* @date 2021年12月8日
*/
private boolean isExist(Employee e) {
for(int i=0;i<total;i++) {
if(team[i].getId()==e.getId()) {
return true;
}
}
return false;
}
/**
*
* @param memberId
* @throws TeamException
* @Description 从团队中删除成员
* @date 2021年12月8日
*/
public void removeMember(int memberId) throws TeamException {
int i=0;
for(i=0;i<total;i++) {
if(team[i].getMemberId()==memberId) {
//删除该成员
team[i].setStatus(Status.FREE);
break;
}
}
if(i==total) {
throw new TeamException("找不到指定memberId的员工,删除失败");
}
for(int j=i+1;j<total;j++) {
team[j-1]=team[j];
}
team[--total]=null;
//未找到指定memberID }
}

TeamView类

负责最终界面的显示,程序的入口

项目最终构成

TeamView.java

package com.atguigu.team.view;

import com.atguigu.team.domain.Employee;
import com.atguigu.team.domain.Programmer;
import com.atguigu.team.service.NameListService;
import com.atguigu.team.service.TeamException;
import com.atguigu.team.service.TeamService; public class TeamView {
private NameListService listSvc=new NameListService();
private TeamService teamSvc=new TeamService(); public void enterMainMenu() {
boolean loopFlag=true;
char menu=0;
while(loopFlag) {
if(menu!='1') {
listAllEmployees();
}
System.out.println("1-团队列表 2-添加团队成员 3-删除团队成员 4-退出 请选择(1-4)");
menu=TSUtility.readMenuSelection();
switch (menu) {
case '1':
getTeam();
break;
case '2':
addMember();
break;
case '3':
deleteMember();
break;
case '4':
System.out.println("确定要退出?Y/N");
char isExist=TSUtility.readConfirmSelection();
if(isExist=='y') {
loopFlag=false;
}
break;
} }
}
/**
* @Description 显示所有员工信息
* @date 2021年12月9日
*/
private void listAllEmployees() {
System.out.println("---------------开发人员调度软件-------------");
System.out.println();
Employee[] employees=listSvc.getAllEmployees();
if(employees==null || employees.length==0) {
System.out.println("公司中没有任何员工信息");
}else {
System.out.println("ID\t姓名\t年龄\t工资\t职位\t状态\t奖金\t股票\t领用设备\t");
}
for(int i=0;i<employees.length;i++) {
System.out.println(employees[i]);
}
System.out.println();
}
private void getTeam() {
System.out.println("-----------------团队成员列表----------------");
System.out.println("-----------------团队成员列表----------------");
Programmer[] team=teamSvc.getTeam();
if(team==null || team.length==0) {
System.out.println("团队中没有任何员工信息");
}else {
System.out.println("TID/ID\t姓名\t工资\t职位\t奖金\t股票\t");
}
for(int i=0;i<team.length;i++) {
System.out.println(team[i].getDetailsForTeam());
}
}
private void addMember() {
System.out.println("------------------添加成员----------");
System.out.println("请输入要添加的员工ID:");
int id=TSUtility.readInt();
try {
Employee emp=listSvc.getEmployee(id);
teamSvc.addMember(emp); System.out.println("添加成功");
TSUtility.readReturn();//按回车继续
}catch(TeamException e) {
System.out.println("添加失败,原因:"+e.getMessage());
}
}
private void deleteMember() {
System.out.println("------------------删除成员----------");
System.out.println("请输入要删除的员工TID:");
int mebmberid=TSUtility.readInt();
System.out.println("确定要删除?Y/N");
char isDelete=TSUtility.readConfirmSelection();
if(isDelete=='n') {
return;
}
try {
teamSvc.removeMember(mebmberid);
System.out.println("删除成功");
TSUtility.readReturn();//按回车继续
} catch (TeamException e) {
System.out.println("删除失败,原因:"+e.getMessage());
}
}
public static void main(String[] args) {
TeamView view=new TeamView();
view.enterMainMenu();
}
}

java项目-尚硅谷项目三员工调度系统的更多相关文章

  1. 黑马程序员:Java编程_7K面试题之银行业务调度系统

    =========== ASP.Net+Android+IOS开发..Net培训.期待与您交流!=========== 模拟实现银行业务调度系统逻辑,具体需求如下: 银行内有6个业务窗口,1 - 4号 ...

  2. 美团集群调度系统HULK技术演进

    本文根据美团基础架构部/弹性策略团队负责人涂扬在2019 QCon(全球软件开发大会)上的演讲内容整理而成.本文涉及Kubernetes集群管理技术,美团相关的技术实践可参考此前发布的<美团点评 ...

  3. 尚硅谷springboot学习6-eclipse创建springboot项目的三种方法(转)

    方法一 安装STS插件 安装插件导向窗口完成后,在eclipse右下角将会出现安装插件的进度,等插件安装完成后重启eclipse生效 新建spring boot项目 项目启动 方法二 1.创建Mave ...

  4. 2、尚硅谷_SSM高级整合_创建Maven项目.avi

    第一步我们新建立一个web工程 这里首先要勾选上enable的第一个复选框 这里要勾选上add maven support 我们在pom.xml中添加sevlet的依赖 创建java web项目之后, ...

  5. Java项目之员工收录系统

    在Java SE中,对IO流与集合的操作在应用中比较重要.接下来,我以一个小型项目的形式,演示IO流.集合等知识点在实践中的运用. 该项目名称为"员工收录系统",在Eclipse的 ...

  6. 第三章 Maven构建 Java Spring Boot Web项目

    3.1   认识Srping Boot Spring Boot是一个框架,是一种全新的编程规范,它的产生简化了对框架的使用,简化了Spring众多的框架中大量的繁琐的配置文件,所以说Spring Bo ...

  7. Java开发小技巧(三):Maven多工程依赖项目

    前言 本篇文章基于Java开发小技巧(二):自定义Maven依赖中创建的父工程project-monitor实现,运用我们自定义的依赖包进行多工程依赖项目的开发. 下面以多可执行Jar包项目的开发为例 ...

  8. 3、尚硅谷_SSM高级整合_使用ajax操作实现修改员工的功能

    当我们点击编辑案例的时候,我们要弹出一个修改联系人的模态对话框,在上面可以修改对应的联系人的信息 这里我们我们要编辑按钮添加点击事件弹出对话框 第一步:在页面中在新增一个编辑联系人的模态对话框 第二步 ...

  9. 3、尚硅谷_SSM高级整合_使用ajax操作实现增加员工的功能

    20.尚硅谷_SSM高级整合_新增_创建员工新增的模态框.avi 1.接下来当我们点击增加按钮的时候会弹出一个员工信息的对话框 知识点1:当点击新增的时候会弹出一个bootstrap的一个模态对话框 ...

  10. 2018年尚硅谷《全套Java、Android、HTML5前端视频》

    全套整合一个盘里:链接:https://pan.baidu.com/s/1nwnrWOp 密码:h4bw 如果分类里没有请下载下边那些小项教程链接 感谢尚硅谷提供的视频教程:http://www.at ...

随机推荐

  1. Java-Stream-flatMap

    Leave leave1 = new Leave("1","1",new Date(),CollUtil.newArrayList("A", ...

  2. 1.29 深痛教训 关于 unsigned

    unsigned long long 无符号长长整型,常用于比 long long 大一倍的整数范围或自然溢出 \(\bmod 2^{64}\) unsigned long long 范围为 \(0\ ...

  3. java判断系统时间是否在规定的时间区间之内

    java判断系统时间是否在规定的时间区间之内 1️⃣ 创建controller => service => serviceimpl package com.preciouslove.xin ...

  4. 小结_第一个Java程序

    总结: 1. Java程序的编写与执行: 步骤1: 编写. 在后缀名为.java的文件中编写Java代码,该文件称为源文件 步骤2: 编译. 针对后缀名为.java源文件进行编译,生成字节码文件. 格 ...

  5. ElasticSearch7.3学习(十二)----type底层结构及弃用原因

    1.type是什么 type,是一个index中用来区分类似的数据的.类似的数据,但是可能有不同的fields,而且有不同的属性来控制索引建立.分词器.field的value. 在底层的lucene中 ...

  6. <semaphore.h> 和 <sys/sem.h> 的区别

    <sys/sem.h>为 XSI(最初是 Unix System V)信号量提供接口. 这些不是基本 POSIX 标准的一部分(它们在 XSI 选项中,主要是为了传统的 Unix 兼容性) ...

  7. STM8 bootloader 升级方案程序设计(一)

    1.前言 上一篇单片机 IAP 功能基础开发篇之APP升级(一)讲到了单片机 IAP 功能给 APP 程序升级的设计思路,这篇介绍的是具体实现方式. 这篇介绍关于 STM8 系列实现 bootload ...

  8. vue 导出多页pdf, window.print()实现

    如果你对分页打印没思路,而网上的现成方案又不适合,不妨进来看看,也许会对你有帮助. 由于工作环境是局域网,对于插件的安装有限制,所以排除了jspdf + html2canvas的实现方式:采用wind ...

  9. 《Learning from Context or Names?An Empirical Study on Neural Relation Extraction》论文阅读笔记

    代码 原文地址 预备知识: 1.什么是对比学习? 对比学习是一种机器学习范例,将未标记的数据点相互并列,以教导模型哪些点相似,哪些点不同. 也就是说,顾名思义,样本相互对比,属于同一分布的样本在嵌入空 ...

  10. Python 字典与集合

    字典(Dictionary) 字典介绍 字典是"键值对"的无序可变序列,字典中的每个元素都是一个"键值对",包含:"键对象"和"值 ...