✨作者主页:IT毕设梦工厂✨
个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。
☑文末获取源码☑
精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目
一、前言
高校就业招聘系统是一种基于互联网技术的在线招聘平台,旨在为高校学生提供更加便捷的求职体验。随着大学生就业形势的日益严峻和就业竞争的加剧,越来越多的大学生开始关注职业规划和求职技巧的学习。然而,传统的求职方式存在许多不便之处,如信息不透明、面试安排困难等问题。因此,开发一种便捷的高校就业招聘系统已经成为了当前社会的需求。
在当前的背景下,研究并开发一款高校就业招聘系统具有重要的现实意义和广阔的应用前景。首先,随着我国高等教育的普及和大学生数量的增加,大学生就业问题已经成为了一个严重的社会问题。而传统的求职方式已经无法满足这种需求,因此需要一种新型的招聘平台来增加效率和用户体验。其次,随着互联网技术的不断发展和普及,越来越多的企业和机构开始将业务转移到线上。因此,利用互联网技术开发一款高校就业招聘系统不仅可以满足市场需求,还可以为企业带来更多的商业机会。
二、开发环境
- 开发语言:Java
- 数据库:MySQL
- 系统架构:B/S
- 后端:SpringBoot
- 前端:Vue
三、系统功能模块
- 角色:学生、辅导员、企业、管理员
- 功能:
学生:
招聘公告、就业知识、企业信息、职位招聘信息、就业咨询、毕业去向、简历管理、简历投递;
辅导员:
就业咨询管理、毕业去向信息、招聘公告管理、简历信息、职位招聘信息、简历投递信息、就业知识管理、企业信息。
企业:
招聘公告信息、职位招聘管理、简历投递管理、就业知识信息;
管理员:
就业咨询管理、基础数据管理(毕业去向类型、招聘公告类型、求职意向、就业知识类型、企业类型、招聘类型、招聘岗位)、毕业去向管理(数据统计图)、招聘公告管理、简历管理、职位招聘管理、简历投递管理、就业知识管理、用户管理。
四、系统界面展示
- 高校就业招聘系统界面展示:
五、部分代码设计
- Java项目实战-代码参考:
@Controller
@RequestMapping("/enterprise")
public class EnterpriseController {
@Autowired
private EnterpriseService enterpriseService;
@Autowired
private RegionService regionService;
@Autowired
private EnterpriseTypeService enterpriseTypeService;
@Autowired
private StudentService studentService;
@Autowired
private MajorService majorService;
@Autowired
private ObtainStateService obtainStateService;
@Autowired
private ObtainService obtainService;
@Autowired
private IntentionService intentionService;
@Autowired
private RequirementService requirementService;
@Autowired
private GraduatePlaceService graduatePlaceService;
@RequestMapping("/selectById/{enterpriseId}")
public String selectById(@PathVariable("enterpriseId")String enterpriseId, Model model){
Enterprise enterprise = enterpriseService.selectById(enterpriseId);
System.out.println(enterprise);
List<Region> regions = regionService.listAll();
List<EnterpriseType> types = enterpriseTypeService.listAll();
model.addAttribute("enterprise",enterprise);
model.addAttribute("regions",regions);
model.addAttribute("types",types);
return "enterprise_personal";
}
@RequestMapping("/update")
@ResponseBody
public String update(@RequestBody EnterpriseVo enterpriseVo, HttpServletRequest request){
String sql="select * from enterprise where enterprise_no="+enterpriseVo.getEnterpriseNo();
Enterprise enterprise1 = enterpriseService.getBySqlReturnEntity(sql);
Enterprise enterprise=new Enterprise();
String enterpriseId = enterprise1.getEnterpriseId();
BeanUtils.copyProperties(enterpriseVo,enterprise);
enterpriseService.update(enterprise);
request.getSession().setAttribute("enterprise",enterprise);
requirementService.updateBySql("update requirement set enterprise_id='"+enterpriseVo.getEnterpriseId()+"' where enterprise_id='"+enterpriseId+"'");
return "true";
}
@RequestMapping("/showAllStudent")
public String showAllStudent(@RequestParam(value = "stuId",required = false)String stuId,
@RequestParam(value = "stuEntrance",required = false) String stuEntrance,
@RequestParam(value = "stateId",required = false)String stateId,
@RequestParam(value = "majorId",required = false)String majorId,
@RequestParam(value = "offset",defaultValue = "1")Integer offset,
@RequestParam(value = "size",defaultValue = "5")Integer size,
Model model){
if (size==null||size<=0){
size=5;
}
if (offset==null||offset<=0){
offset=1;
}
Integer total = studentService.selectCountBy(stuId,stuEntrance,stateId,majorId);
List<Major> majors = majorService.listAll();
List<GraduatePlace> places = graduatePlaceService.listAll();
List<ObtainState> obtainStates = obtainStateService.listAll();
Pager<StudentVo> pager=new Pager<>();
String sql="select * from student where 1=1 ";
if (stuId!=null&& !stuId.equals("")){
sql+=" and stu_id='"+stuId+"' ";
model.addAttribute("stuId",stuId);
}
if (stuEntrance!=null&& !stuEntrance.equals("")){
sql+=" and stu_entrance='"+stuEntrance+"' ";
model.addAttribute("stuEntrance",stuEntrance);
}
if (stateId!=null&& !stateId.equals("")){
sql+=" and state_id='"+stateId+"' ";
model.addAttribute("stateId",stateId);
}
if (majorId!=null&& !majorId.equals("")){
sql+=" and major_id='"+majorId+"' ";
model.addAttribute("majorId",majorId);
}
Integer begin;
Integer end;
int start=(offset-1)*size;
int totalPage=total%size==0?total/size:(total/size)+1;
if (totalPage<=3){
begin=1;
end=totalPage;
}else{
end=offset+1;
begin=offset-1;
if (offset<1){
begin=1;
end=begin+2;
}
if (end>totalPage){
end=totalPage;
begin=end-2;
}
}
sql+=" order by stu_entrance desc limit "+start+","+size+" ";
List<Student> students = studentService.listBySqlReturnEntity(sql);
List<StudentVo> studentVos=new ArrayList<>();
for (Student student :
students) {
Integer old = Integer.valueOf(student.getStuBirthday().substring(0, 4));
int now = Calendar.getInstance().get(Calendar.YEAR);
StudentVo studentVo=new StudentVo();
BeanUtils.copyProperties(student,studentVo);
studentVo.setStuAge((now-old)+"");
studentVos.add(studentVo);
}
pager.setSize(size);
pager.setOffset(offset);
pager.setTotalPage(totalPage);
pager.setTotalCount(total);
pager.setDatas(studentVos);
model.addAttribute("pager",pager);
model.addAttribute("majors",majors);
model.addAttribute("obtainStates",obtainStates);
model.addAttribute("places",places);
model.addAttribute("begin",begin);
model.addAttribute("end",end);
return "student_list";
}
@RequestMapping("/showAllResume")
public String showAllResume(@RequestParam(value = "size",defaultValue = "5")Integer size,
@RequestParam(value = "offset",defaultValue = "1")Integer offset,
@RequestParam(value = "intentionMajor",required = false)String intentionMajor,
@RequestParam(value = "regionId",required = false)String regionId,
@RequestParam(value = "intentionState",required = false)String intentionState,
Model model){
List<Region> regions = regionService.listAll();
if (size==null||size<=0){
size=5;
}
if (offset==null||offset<=0){
offset=1;
}
String sql="select * from intention where 1=1 ";
if (intentionMajor!=null&& !intentionMajor.equals("")){
sql+=" and intention_major like '%"+intentionMajor+"%' ";
model.addAttribute("intentionMajor",intentionMajor);
}
if (regionId != null && !regionId.equals("")) {
sql+=" and region_id='"+regionId+"' ";
model.addAttribute("regionId",regionId);
}
if (intentionState != null && !intentionState.equals("")) {
sql+=" and intention_state='"+intentionState+"' ";
model.addAttribute("intentionState",intentionState);
}
Integer begin;
Integer end;
Pager<Intention> pager=new Pager<>();
Integer total = intentionService.selectCountBy(intentionMajor,regionId);
int start=(offset-1)*size;
int totalPage=total%size==0?total/size:(total/size)+1;
if (totalPage<=3){
begin=1;
end=totalPage;
}else{
end=offset+1;
begin=offset-1;
if (begin<1){
begin=1;
end=begin+2;
}
if (end>totalPage){
end=totalPage;
begin=end-2;
}
}
sql+=" limit "+start+","+size;
List<Intention> pagers = intentionService.listBySqlReturnEntity(sql);
pager.setOffset(offset);//当前页码
pager.setSize(size);//大小
pager.setTotalCount(total);//总记录数
pager.setDatas(pagers);//数据
pager.setTotalPage(totalPage);//总页数
model.addAttribute("pager",pager);
model.addAttribute("end",end);
model.addAttribute("begin",begin);
model.addAttribute("regions",regions);
return "enterprise_resume_list";
}
@RequestMapping("/showAllObtain")
public String showAllObtain(@RequestParam(value = "size",defaultValue = "5")Integer size,
@RequestParam(value = "offset",defaultValue = "1")Integer offset,
@RequestParam(value = "stuId",required = false)String stuId,
Model model){
if (size==null||size<=0){
size=5;
}
if (offset==null||offset<=0){
offset=1;
}
String sql="select * from obtain where 1=1 ";
if (stuId!=null&& !stuId.equals("")){
sql+=" and stu_id = '"+stuId+"'";
model.addAttribute("stuId",stuId);
}
Integer begin;
Integer end;
Pager<Obtain> pager=new Pager<>();
Integer total = obtainService.selectCountBy(stuId);
int start=(offset-1)*size;
int totalPage=total%size==0?total/size:(total/size)+1;
if (totalPage<=3){
begin=1;
end=totalPage;
}else{
end=offset+1;
begin=offset-1;
if (begin<1){
begin=1;
end=begin+2;
}
if (end>totalPage){
end=totalPage;
begin=end-2;
}
}
sql+=" limit "+start+","+size;
List<Obtain> pagers = obtainService.listBySqlReturnEntity(sql);
pager.setOffset(offset);//当前页码
pager.setSize(size);//大小
pager.setTotalCount(total);//总记录数
pager.setDatas(pagers);//数据
pager.setTotalPage(totalPage);//总页数
model.addAttribute("pager",pager);
model.addAttribute("end",end);
model.addAttribute("begin",begin);
return "enterprise_obtain_list";
}
@RequestMapping("/forwardToAddEnt")
public String forwardToAddEnt(Model model){
List<Region> regions = regionService.listAll();
List<EnterpriseType> types = enterpriseTypeService.listAll();
model.addAttribute("regions",regions);
model.addAttribute("types",types);
return "enterprise_add";
}
@RequestMapping("/addEnt")
@ResponseBody
public String addEnt(@RequestBody EnterpriseVo enterpriseVo){
Enterprise enterprise=new Enterprise();
BeanUtils.copyProperties(enterpriseVo,enterprise);
if (!isExist(enterprise.getEnterpriseId())){
enterprise.setEnterprisePass("123456");
enterpriseService.insert(enterprise);
return "true";
}
return "false";
}
private boolean isExist(String enterpriseId){
String sql="select count(*) from enterprise where enterprise_id='"+enterpriseId+"'";
Integer count = enterpriseService.getCount(sql);
return count>0;
}
@RequestMapping("/deleteEnt")
@ResponseBody
private String deleteEnt(@RequestParam("enterpriseId")String enterpriseId){
Enterprise enterprise = enterpriseService.selectById(enterpriseId);
if (enterprise!=null){
enterpriseService.deleteById(enterprise);
return "true";
}
return "false";
}
}
@Controller
@RequestMapping("/hiring")
public class HiringController {
@Autowired
private RequirementService requirementService;
@Autowired
private RequireNoteService requireNoteService;
@Autowired
private MajorService majorService;
@Autowired
private RegionService regionService;
@RequestMapping("/findHireById")
public String findHireById(@RequestParam("enterpriseId")String enterpriseId,
@RequestParam(value = "requireJob",required = false)String requireJob,
@RequestParam(value = "requireState",required = false)String requireState,
@RequestParam(value = "offset",required = false)Integer offset,
@RequestParam(value = "size",required = false)Integer size,
Model model){
Integer total = requirementService.selectCountBy(enterpriseId, requireJob, requireState);
if (size==null||size<=0){
size=5;
}
if (offset==null||offset<=0){
offset=1;
}
Integer begin;
Integer end;
int start=(offset-1)*size;
int totalPage=total%size==0?total/size:(total/size)+1;
if (totalPage<=3){
begin=1;
end=totalPage;
}else{
end=offset+1;
begin=offset-1;
if (begin<1){
begin=1;
end=begin+2;
}
if (end>totalPage){
end=totalPage;
begin=end-2;
}
}
Pager<Requirement> pager=new Pager<>();
String sql="select * from requirement where 1=1 ";
if (enterpriseId!=null&& !enterpriseId.equals("")){
sql+=" and enterprise_id ='"+enterpriseId+"' ";
}
if (requireJob!=null&& !requireJob.equals("")){
sql+=" and require_job like '%"+requireJob+"%' ";
model.addAttribute("requireJob",requireJob);
}
if (requireState!=null&& !requireState.equals("")){
sql+=" and require_state = '"+requireState+"' ";
model.addAttribute("requireState",requireState);
}
sql+=" limit "+start+","+size;
List<Requirement> requirements = requirementService.listBySqlReturnEntity(sql);
pager.setDatas(requirements);
pager.setTotalCount(total);
pager.setTotalPage(totalPage);
pager.setOffset(offset);
pager.setSize(size);
model.addAttribute("pager",pager);
model.addAttribute("begin",begin);
model.addAttribute("end",end);
return "enterprise_hiring_list";
}
@RequestMapping("/findHire")
public String findHire(@RequestParam(value = "stuId",required = false)String stuId,
@RequestParam(value = "requireJob",required = false)String requireJob,
@RequestParam(value = "regionId",required = false)String regionId,
@RequestParam(value = "offset",required = false)Integer offset,
@RequestParam(value = "size",required = false)Integer size,
Model model){
List<Region> regions = regionService.listAll();
if (size==null||size<=0){
size=5;
}
if (offset==null||offset<=0){
offset=1;
}
Integer begin;
Integer end;
String sql="select * from requirement where require_state = '1' ";
String cSql="select count(*) from requirement where require_state = '1' ";
if (requireJob!=null&& !requireJob.equals("")){
sql+=" and require_job like '%"+requireJob+"%' ";
cSql+=" and require_job like '%"+requireJob+"%' ";
model.addAttribute("requireJob",requireJob);
}
if (regionId!=null&& !regionId.equals("")){
sql+=" and region_id ="+regionId;
cSql+=" and region_id ="+regionId;
model.addAttribute("regionId",regionId);
}
Integer total = requirementService.getCount(cSql);
int start=(offset-1)*size;
int totalPage=total%size==0?total/size:(total/size)+1;
if (totalPage<=3){
begin=1;
end=totalPage;
}else{
end=offset+1;
begin=offset-1;
if (begin<1){
begin=1;
end=begin+2;
}
if (end>totalPage){
end=totalPage;
begin=end-2;
}
}
Pager<RequirementVo> pager=new Pager<>();
sql+=" limit "+start+","+size;
List<Requirement> requirements = requirementService.listBySqlReturnEntity(sql);
List<RequirementVo> requirementVos = change(requirements, stuId);
pager.setDatas(requirementVos);
pager.setTotalCount(total);
pager.setTotalPage(totalPage);
pager.setOffset(offset);
pager.setSize(size);
model.addAttribute("pager",pager);
model.addAttribute("regions",regions);
model.addAttribute("begin",begin);
model.addAttribute("end",end);
model.addAttribute("stuId",stuId);
return "student_hiring_list";
}
private List<RequirementVo> change(List<Requirement> list, String stuId){
String sql=null;
List<RequirementVo> vo=new ArrayList<>();
for (Requirement requirement:
list) {
RequirementVo re=new RequirementVo();
BeanUtils.copyProperties(requirement,re);
sql="select count(*) from requirenote where stu_id='"+stuId+"' and require_id="+requirement.getRequireId();
Integer count = requireNoteService.getCount(sql);
if (count>0){
re.setApply("1");
}else{
re.setApply("0");
}
vo.add(re);
}
return vo;
}
@RequestMapping("/forwardToAddHire")
public String forwardToAddHire(Model model){
List<Major> majors = majorService.listAll();
List<Region> regions = regionService.listAll();
model.addAttribute("majors",majors);
model.addAttribute("regions",regions);
return "enterprise_hiring_add";
}
@RequestMapping("/addHire")
@ResponseBody
public String addHire(@RequestBody RequirementVo requirementVo){
Requirement requirement=new Requirement();
BeanUtils.copyProperties(requirementVo,requirement);
requirement.setRequireState(StateEnum.UNCHECKED.getCode());
requirement.setApply("0");
int num = requirementService.insert(requirement);
if (num>0)
return "true";
return "false";
}
@RequestMapping("/forwardToUpdate/{requireId}")
public String forwardToUpdate(@PathVariable("requireId")String requireId,Model model){
Requirement requirement = requirementService.selectById(requireId);
List<Major> majors = majorService.listAll();
List<Region> regions = regionService.listAll();
model.addAttribute("requirement",requirement);
model.addAttribute("majors",majors);
model.addAttribute("regions",regions);
return "enterprise_hiring_edit";
}
@RequestMapping("/update")
@ResponseBody
public String update(@RequestBody RequirementVo requirementVo){
Requirement requirement=new Requirement();
BeanUtils.copyProperties(requirementVo,requirement);
requirementService.updateById(requirement);
return "true";
}
@RequestMapping("/delete")
@ResponseBody
public String delete(@RequestParam("requireId")String requireId){
requirementService.deleteById(requireId);
return "true";
}
@RequestMapping("/showAllHire")
public String showAllHire(@RequestParam(value = "offset",defaultValue = "1")Integer offset,
@RequestParam(value = "size",defaultValue = "5")Integer size,
@RequestParam(value = "enterpriseId",required = false)String enterpriseId,
@RequestParam(value = "requireState",required = false)String requireState,
Model model){
if (size==null||size<=0){
size=5;
}
if (offset==null||offset<=0){
offset=1;
}
String cSql="select count(*) from requirement where 1=1 ";
String sql="select * from requirement where 1=1 ";
if (enterpriseId!=null&& !enterpriseId.equals("")){
cSql+=" and enterprise_id like '%"+enterpriseId+"%' ";
sql+=" and enterprise_id like '%"+enterpriseId+"%' ";
model.addAttribute("enterpriseId",enterpriseId);
}
if (requireState!=null&& !requireState.equals("")){
cSql+=" and require_state='"+requireState+"' ";
sql+=" and require_state='"+requireState+"' ";
model.addAttribute("requireState",requireState);
}
Integer total = requirementService.getCount(cSql);
Integer begin;
Integer end;
int start=(offset-1)*size;
int totalPage=total%size==0?total/size:(total/size)+1;
if (totalPage<=3){
begin=1;
end=totalPage;
}else{
end=offset+1;
begin=offset-1;
if (begin<1){
begin=1;
end=begin+2;
}
if (end>totalPage){
end=totalPage;
begin=end-2;
}
}
Pager<Requirement> pager=new Pager<>();
sql+=" order by enterprise_id limit "+start+","+size;
List<Requirement> requirements = requirementService.listBySqlReturnEntity(sql);
pager.setDatas(requirements);
pager.setTotalCount(total);
pager.setTotalPage(totalPage);
pager.setOffset(offset);
pager.setSize(size);
model.addAttribute("pager",pager);
model.addAttribute("begin",begin);
model.addAttribute("end",end);
return "manager_hiring_list";
}
}
@Controller
@RequestMapping("/import")
public class ImportController {
@Autowired
private StudentService studentService;
@Autowired
private PoliticalService politicalService;
@Autowired
private DepartService departService;
@Autowired
private MajorService majorService;
@Autowired
private ObtainStateService obtainStateService;
@Autowired
private RegionService regionService;
@Autowired
private EnterpriseTypeService enterpriseTypeService;
@Autowired
private EnterpriseService enterpriseService;
@Autowired
private GraduatePlaceService graduatePlaceService;
@RequestMapping("/importStuExcel")
@ResponseBody
public boolean importStuExcel(@RequestParam("file") MultipartFile file){
try {
InputStream in = file.getInputStream();
List<List<Object>> listob = ExcelUtils.getBankListByExcel(in, file.getOriginalFilename());
System.out.println("============="+listob);
// List<UserInfo> inventoryList = new ArrayList<UserInfo>();
//遍历listob数据,把数据放到List中
for (int i = 0; i < listob.size(); i++) {
List<Object> ob = listob.get(i);
Student student = new Student();
student.setStuId(String.valueOf(ob.get(0)).trim());
student.setStuName(String.valueOf(ob.get(1)).trim());
student.setStuSex(String.valueOf(ob.get(2)).trim());
student.setStuBirthday(String.valueOf(ob.get(3)).trim());
student.setStuCredit(String.valueOf(ob.get(4)).trim());
student.setPoliticalId(politicalService.change(String.valueOf(ob.get(5)).trim()));
student.setDepartId(departService.change(String.valueOf(ob.get(6)).trim()));
student.setMajorId(majorService.change(String.valueOf(ob.get(7)).trim(),student.getDepartId()));
student.setStuEntrance(String.valueOf(ob.get(8)).trim());
student.setStuGraduTime(String.valueOf(ob.get(9)).trim());
student.setStuContr(String.valueOf(ob.get(10)).trim());
student.setStuPass(student.getStuCredit().substring(student.getStuCredit().length()-6));
student.setStateId(obtainStateService.change(String.valueOf(ob.get(11)).trim()));
try{
student.setPlaceId(String.valueOf(ob.get(12)).trim());
}catch (Exception e){
System.out.println("没有毕业去向");
}
studentService.insert(student);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@RequestMapping("/importPastedStuExcel")
@ResponseBody
public boolean importPastedStuExcel(@RequestParam("file") MultipartFile file){
try {
InputStream in = file.getInputStream();
List<List<Object>> listob = ExcelUtils.getBankListByExcel(in, file.getOriginalFilename());
System.out.println("============="+listob);
//遍历listob数据,把数据放到List中
for (int i = 0; i < listob.size(); i++) {
List<Object> ob = listob.get(i);
Student student = new Student();
student.setStuId(String.valueOf(ob.get(0)).trim());
student.setStuName(String.valueOf(ob.get(1)).trim());
student.setStuBirthday(String.valueOf(ob.get(2)).trim());
student.setStuSex(String.valueOf(ob.get(3)).trim());
student.setDepartId(departService.change(String.valueOf(ob.get(4)).trim()));
student.setMajorId(majorService.change(String.valueOf(ob.get(5)).trim(),student.getDepartId()));
student.setStuGraduTime(String.valueOf(ob.get(6)).trim());
student.setPlaceId(graduatePlaceService.change(String.valueOf(ob.get(7)).trim()));
studentService.insert(student);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@RequestMapping("/importEntExcel")
@ResponseBody
public boolean importEntExcel(@RequestParam("file") MultipartFile file){
try {
InputStream in = file.getInputStream();
List<List<Object>> listob = ExcelUtils.getBankListByExcel(in, file.getOriginalFilename());
System.out.println("============="+listob);
// List<UserInfo> inventoryList = new ArrayList<UserInfo>();
//遍历listob数据,把数据放到List中
for (int i = 0; i < listob.size(); i++) {
List<Object> ob = listob.get(i);
Enterprise enterprise = new Enterprise();
enterprise.setEnterpriseId(String.valueOf(ob.get(0)).trim());
enterprise.setEnterpriseName(String.valueOf(ob.get(1)).trim());
enterprise.setRegionId(regionService.change(String.valueOf(ob.get(2)).trim()));//
enterprise.setTypeId(enterpriseTypeService.change(String.valueOf(ob.get(3)).trim()));//
enterprise.setEnterpriseIntro(String.valueOf(ob.get(4)).trim());
enterprise.setContactName(String.valueOf(ob.get(5)).trim());
enterprise.setContactTel(String.valueOf(ob.get(6)).trim());
enterprise.setContactEmail(String.valueOf(ob.get(7)).trim());
enterprise.setEnterprisePass("123456");
enterpriseService.insert(enterprise);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
六、论文参考
- 计算机毕业设计选题推荐_高校就业招聘系统-论文参考:
七、系统视频
高校就业招聘系统-项目视频:
计算机毕业设计选题推荐-高校就业招聘系统-Java项目实战
结语
计算机毕业设计选题推荐-高校就业招聘系统-Java项目实战
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我