项目开发团队分配管理软件

news/2024/10/18 18:14:05/

目录

1. 项目需求:

2. 项目的结构图(mvc):

3.部分效果展示:

4. 项目的整体思路:

     4.1 实体类及数据存储

     4.2 界面类

     4.3 服务类

5.项目代码及部分解释:

      5.1 代码结构图:​编辑

      5.2 服务类核心代码:

6. 项目总结:

                6.1 此项目主要涉及以下知识点: 

                6.2 遇到的问题及解决方案:


1. 项目需求:

1.软件启动时,首先进入登录界面进行注册和登录功能。

2.当登陆成功后,进入菜单,首先就可以对开发人员账户和密码进行修改。

3.然后可以对开发人员进行增删改操作

4.人员添加成功后,根据菜单提示,基于现有的公司成员,组建一个开发团队以开发一个新的项目。

5.组建过程包括将成员插入到团队中,或从团队中删除某成员,还可以列出团队中现有成员的列表,开发团队成员包括架构师、设计师和程序员。

6.团队组建成功,则可以进入项目模块,添加项目,分配开发团队进行开发。

2. 项目的结构图(mvc):

 3.部分效果展示:

 

 

4. 项目的整体思路:

   4.1 实体类及数据存储

​       项目中的开发成员是分为几个类别,普通员工、程序员、设计师和架构师。所以先要给这个几个开发成员创建好他们各自的类。他们共有的属性都是有名字、年龄、,然后对于非普通员工的成员是要为他们每个人分配设备的,设备又分为打印机、笔记本、电脑。所以我们又要定义三个设备的类。

​      数据存储则是分别为开发人员管理、团队管理、项目管理创建一个ArrayList集合,用来存储类的实体对象。

     4.2 界面类


​        首先,我创建了一个用户登录的界面(LoginView),这个界面是进入主程序的唯一入口,验证用户登录成功,才会进入主程序的主页面(IndexView)。进入IndexView后,会有对应的选项,每个选项里都还嵌套了一个界面,而这几个页面都将其封装为几个类。

   4.3 服务类


         对于不同的界面页面分为不同的服务类,用于获取对用户的各种输入以及对程序的运行逻辑的制定和控制。

          还有一个异常类。对某些获取异常进行抛出。

5.项目代码及部分解释:


5.1 代码结构图:

5.2 服务类核心代码:

5.2.1 EmployeesListervice 类:

package com.team.project1.service;
import com.team.project1.domain.*;
import com.team.project1.view.TSUtility;import java.util.ArrayList;public class EmployeeListService {//用来装员工的数据集合private ArrayList<Employee> employees = new ArrayList<>();//添加员工的idprivate int count = 1;//初始化默认值{employees.add(new Employee(count, "马云 ", 22, 3000));employees.add(new Architect(++count, "马化腾", 32, 18000, new NoteBook("联想T4", 6000), 60000, 5000));employees.add(new Programmer(++count, "李彦宏", 23, 7000, new PC("戴尔", "NEC 17寸")));employees.add(new Programmer(++count, "刘强东", 24, 7300, new PC("戴尔", "三星 17寸")));employees.add(new Designer(++count, "雷军 ", 50, 10000, new Printer("激光", "佳能2900"), 5000));employees.add(new Programmer(++count, "任志强", 30, 16800, new PC("华硕", "三星 17寸")));employees.add(new Designer(++count, "柳传志", 45, 35500, new PC("华硕", "三星 17寸"), 8000));employees.add(new Architect(++count, "杨元庆", 35, 6500, new Printer("针式", "爱普生20k"), 15500, 1200));employees.add(new Designer(++count, "史玉柱", 27, 7800, new NoteBook("惠普m6", 5800), 1500));employees.add(new Programmer(++count, "丁磊 ", 26, 6600, new PC("戴尔", "NEC17寸")));employees.add(new Programmer(++count, "张朝阳 ", 35, 7100, new PC("华硕", "三星 17寸")));employees.add(new Designer(++count, "杨致远", 38, 9600, new NoteBook("惠普m6", 5800), 3000));}//得到所有员工数据集合public ArrayList<Employee> getAllEmployees() {return employees;}//得到当前员工//根据员工id返回此人的全部信息,没有找到则抛出自定义异常public Employee getEmployee(int id) throws EmployeeException {for (int i = 0; i < employees.size(); i++) {if (employees.get(i).getId() == id) {return employees.get(i);}}throw new EmployeeException("该员工不存在");}//员工的增加public void addEmployee() throws InterruptedException {System.out.println("--------------------------------");System.out.print("1(无职位)  ");System.out.print("2(程序员)  ");System.out.print("3(设计师)  ");System.out.println("4(架构师)");System.out.println("请输入需要添加的雇员的职位:");String c = String.valueOf(TSUtility.readMenuSelection());if (c.equals("1")) {//无职位 new Employee(count++,"马云 ",22,3000)System.out.println("当前雇员职位分配为:无");System.out.println("--------------------------------");System.out.println("请输入当前雇员的姓名:");String name = TSUtility.readKeyBoard(4, false);System.out.println("请输入当前雇员的年龄:");int age = TSUtility.readInt();System.out.println("请输入当前雇员的工资:");Double salary = TSUtility.readDouble();Employee employee = new Employee(++count, name, age, salary);employees.add(employee);System.out.println("人员添加成功!");System.out.println("--------------------------------");TSUtility.readReturn();System.out.println();} else if (c.equals("2")) {//程序员 new Programmer(count++,"张朝阳 ",35,7100,new PC("华硕","三星 17寸"))System.out.println("当前雇员职位分配为:程序员");System.out.println("--------------------------------");System.out.println("请输入当前雇员的姓名:");String name = TSUtility.readKeyBoard(4, false);System.out.println("请输入当前雇员的年龄:");int age = TSUtility.readInt();System.out.println("请输入当前雇员的工资:");Double salary = TSUtility.readDouble();System.out.println("请为当前程序员配一台好的台式电脑:");PC pc = new PC().addPC();Programmer programmer = new Programmer(++count, name, age, salary, pc);employees.add(programmer);System.out.println("人员添加成功!");System.out.println("--------------------------------");TSUtility.readReturn();System.out.println();} else if (c.equals("3")) {//设计师 new Designer(count++,"史玉柱",27,7800,new NoteBook("惠普m6",5800),1500)System.out.println("当前雇员职位分配为:设计师");System.out.println("--------------------------------");System.out.println("请输入当前雇员的姓名:");String name = TSUtility.readKeyBoard(4, false);System.out.println("请输入当前雇员的年龄:");int age = TSUtility.readInt();System.out.println("请输入当前雇员的工资:");Double salary = TSUtility.readDouble();System.out.println("请为当前设计师配一台好的笔记本电脑:");NoteBook noteBook = new NoteBook().addNoteBook();System.out.println("请输入当前设计师的奖金:");Double bonus = TSUtility.readDouble();Designer designer = new Designer(++count, name, age, salary, noteBook, bonus);employees.add(designer);System.out.println("人员添加成功!");System.out.println("--------------------------------");TSUtility.readReturn();System.out.println();} else {//架构师 new Architect(count++,"杨元庆",35,6500,new Printer("针式","爱普生20k"),15500,1200)System.out.println("当前雇员职位分配为:架构师");System.out.println("--------------------------------");System.out.println("请输入当前雇员的姓名:");String name = TSUtility.readKeyBoard(4, false);System.out.println("请输入当前雇员的年龄:");int age = TSUtility.readInt();System.out.println("请输入当前雇员的工资:");Double salary = TSUtility.readDouble();System.out.println("请为当前架构师配一台好的打印设备:");Printer printer = new Printer().addPrinter();System.out.println("请输入当前架构师的奖金:");Double bonus = TSUtility.readDouble();System.out.println("请输入当前架构师的股票:");Integer stock = TSUtility.readstock();Architect architect = new Architect(++count, name, age, salary, printer, bonus, stock);employees.add(architect);System.out.println("人员添加成功!");System.out.println("--------------------------------");TSUtility.readReturn();System.out.println();}}//员工的删除public void delEmployee(int id)  {boolean flag = false;for (int i = 0; i < employees.size(); i++) {if (employees.get(i).getId() == id) {employees.remove(i);for (i = id; i <= employees.size(); i++) {employees.get(i - 1).setId(employees.get(i - 1).getId() - 1);}flag = true;}}if (flag) {System.out.println("删除成功!");count--;System.out.println();} else {try {throw new EmployeeException("该员工不存在");} catch (EmployeeException e) {e.printStackTrace();}}}//员工的查看public void showEmployee() throws InterruptedException {System.out.println("          ----------------开发人员信息展示----------------    ");System.out.println("ID\t 姓名\t年龄\t      工资\t     职位\t  状态\t   奖金\t       股票\t     领用设备");for (int i = 0; i < employees.size(); i++) {System.out.println(" " + employees.get(i));System.out.println();}}//员工的修改 (目前只修改姓名,年龄,工资即可)public void modifyEmployee(int id) throws  InterruptedException {boolean flag = false;for (int i = 0; i < employees.size(); i++) {Employee emp = employees.get(i);if (employees.get(i).getId() == id) {System.out.print("姓名(" + emp.getName() + "):");String name = TSUtility.readString(4, emp.getName());System.out.print("年龄(" + emp.getAge() + "):");int age = Integer.parseInt(TSUtility.readString(2,emp.getAge()+""));System.out.print("工资(" + emp.getSalary() + "):");double salary =Double.parseDouble(TSUtility.readString(10, emp.getSalary()+""));emp.setName(name);emp.setAge(age);emp.setSalary(salary);employees.set(i,emp);flag = true;}}if (flag) {System.out.println("修改成功!");System.out.println();} else {try {throw new EmployeeException("该员工不存在");} catch (EmployeeException e) {e.printStackTrace();System.out.println();}}}
}

5.2.2TeamListservice 类:

package com.team.project1.service;import com.team.project1.domain.*;
import com.team.project1.view.TSUtility;import java.util.ArrayList;import static com.team.project1.view.IndexView.ANSI_RESET;
import static com.team.project1.view.IndexView.ANSI_YELLOW;public class TeamListService {//用于自动生成团队Idprivate static int countId = 0;//团队人数int teamCount = 0;//团队是否满员boolean isFull = false;//创建集合存储每一个团队对象static ArrayList<Team> teams = new ArrayList<>();//每个团队人数最大值private final int MAX_MEMBER = 5;//用于自动生成团队成员的memberIdprivate int counter = 0;//创建Team对象Team team;//得到employ对象public EmployeeListService employeeList = new EmployeeListService();//查看团队列表public void showTeam() throws InterruptedException {if (teams.size() == 0) {System.out.println("           还没有创建开发团队         ");System.out.print("是否创建?(Y/N)");char yn = TSUtility.readConfirmSelection();if (yn == 'Y') {addTeam();System.out.println();} else return;} else {System.out.println("----------------团队列表展示----------------    ");System.out.println("团队ID\t 团队名\t   当前人数\t  是否满员");for (int i = 0; i < teams.size(); i++) {System.out.println("  " + teams.get(i).getTeamId() + "\t   " + teams.get(i).getTeamName() + "  \t  " + teams.get(i).getTeamSum() + "\t\t  " + teams.get(i).isFull());System.out.println();}setTeam();}}//增加团队public void addTeam() throws InterruptedException {System.out.println("-------------创建团队-------------");System.out.println("请输入团队名称:");String teamName = TSUtility.readKeyBoard(8, false);Programmer[] program = new Programmer[0];//存放开发人员的数组定义为空数组team = new Team(++countId, teamName, teamCount, isFull, program);teams.add(team);System.out.println("团队创建成功!");System.out.println("--------------------------------");System.out.println();}//删除团队public void delTeam(int id) {boolean teamFlag = false;for (int i = 0; i < teams.size(); i++) {if (teams.get(i).getTeamId() == id) {teams.remove(i);for (i = id; i <= teams.size(); i++) {teams.get(i - 1).setTeamId(teams.get(i - 1).getTeamId() - 1);}teamFlag = true;}}if (teamFlag) {System.out.println("删除成功!");countId--;System.out.println();} else {try {throw new TeamException("该团队不存在");} catch (TeamException e) {e.printStackTrace();}}}//团队内部成员管理public void setTeam() {System.out.print("是否对团队进行管理?(Y/N)");char isTrue = TSUtility.readConfirmSelection();if (isTrue == 'Y') {System.out.println("请输入你要管理的团队ID");int ID = TSUtility.readInt();for (int i = 0; i < teams.size(); i++) {if (teams.get(i).getTeamId() == ID) {TeamMemberMenu(ID - 1);clearTeam();//每次退出管理内部人员菜单后初始化变量,避免另一个对象调用时变量不是初始值}}} else {System.out.println();return;}}//团队内部管理菜单public void TeamMemberMenu(int ID) {boolean loopFlagTeam = true;char keyTeam = 0;do {System.out.print(ANSI_RESET);System.out.println("🔣🔣🔣🔣🔣 ~开发团队人员管理菜单~ 🔣🔣🔣🔣🔣");System.out.println("🐕         1.<查看团队人员>          🐕");System.out.println("🐖         2.<添加团队成员>          🐖");System.out.println("🐱         3.<删除团队成员>          🐱");System.out.println("🐂         4.<退出>                 🐂");System.out.println("⬇请选择:  ");System.out.print(ANSI_YELLOW);keyTeam = TSUtility.readMenuSelection();switch (keyTeam) {case '1': //查看团队列表try {showTeamMembers(ID);} catch (InterruptedException e) {e.printStackTrace();}break; //添加团队成员case '2':System.out.println("请输入需要添加的员工id:");int id = TSUtility.readInt();try {addProgrammerMember(employeeList.getEmployee(id), ID);} catch (TeamException e) {System.out.println(e);}break;case '3': //删除团队成员System.out.println("请输入需要删除的员工id:");int j = TSUtility.readInt();try {removeMember(j, ID);} catch (TeamException e) {System.out.println(e);}System.out.println("--------------------------------");break;case '4': //退出System.out.print("确认是否退出(Y/N):");char yn = TSUtility.readConfirmSelection();if (yn == 'Y') {loopFlagTeam = false;}break;default:System.out.println("输入有误!请重新输入!");break;}} while (loopFlagTeam);}//查看指定团队成员public void showTeamMembers(int ID) throws InterruptedException {if (teams.get(ID).getTeamMember().length == 0) {System.out.println("           该开发团队还没有成员         ");System.out.println();} else {System.out.println("----------------开发团队成员列表----------------    ");System.out.println("ID\t 姓名\t年龄\t      工资\t     职位\t  状态\t   奖金\t       股票\t     领用设备");for (int j = 0; j < teams.get(ID).getTeamMember().length; j++) {if (teams.get(ID).getTeamMember()[j] != null) {System.out.println(teams.get(ID).getTeamMember()[j]);System.out.println();}}}}//为该团队添加成员public void addProgrammerMember(Employee employee, int ID) throws TeamException {if (teams.get(ID).getTeamSum() >= MAX_MEMBER) {teams.get(ID).setFull(true);throw new TeamException("成员已满,无法添加");}if (!(employee instanceof Programmer)) {throw new TeamException("该成员不是开发人员,无法添加");}//向下转型Programmer programmer = (Programmer) employee;if (isExist(programmer, ID)) {throw new TeamException("该员工已在本团队中");}if (!programmer.getStatus()) {throw new TeamException("该员工已是某团队成员");}int numOfArch = 0, numOfDsgn = 0, numOfPrg = 0;for (int i = 0; i < teams.get(ID).getTeamMember().length; i++) {if (teams.get(ID).getTeamMember()[i] instanceof Architect) { //架构师数量numOfArch++;} else if (teams.get(ID).getTeamMember()[i] instanceof Designer) { //设计师数量numOfDsgn++;} else if (teams.get(ID).getTeamMember()[i] instanceof Programmer) { //程序员数量numOfPrg++;}}if (programmer instanceof Architect) {if (numOfArch >= 1) {throw new TeamException("团队中至多只能有一名架构师");}} else if (programmer instanceof Designer) {if (numOfDsgn >= 2) {throw new TeamException("团队中至多只能有两名设计师");}} else if (programmer instanceof Programmer) {if (numOfPrg >= 3) {throw new TeamException("团队中至多只能有三名程序员");}}//添加到数组programmer.setId(++counter);programmer.setStatus(false);teams.get(ID).setTeamMember(addArr(teams.get(ID).getTeamMember()));//每次添加新开发成员之前对数组扩一次容teams.get(ID).getTeamMember()[teamCount++] = programmer;teams.get(ID).setTeamSum(teamCount);System.out.println("添加该成员进入团队成功");System.out.println();}/*定义一个方法声明一个新数组,新数组的行数在原数组的前提下+1,如果之前的数组里有数据,则把数据赋值给新数组*/public static Programmer[] addArr( Programmer[] programmer){Programmer[] programmer2 = new Programmer[programmer.length+1];if (programmer.length != 0){for (int i = 0; i < programmer.length; i++) {programmer2[i] = programmer[i];}}return programmer2;}//判断团队中是否已经有该成员private boolean isExist(Programmer programmer, int ID) {for (int i = 0; i < teams.get(ID).getTeamMember().length; i++) {if (teams.get(ID).getTeamMember()[i] != null) {if (teams.get(ID).getTeamMember()[i].getId() == programmer.getId()) return true;}}return false;}//删除该团队中指定memberId的程序员public void removeMember(int memberId, int ID) throws TeamException {int n = 0;//找到指定memberId的员工,并删除for (; n < teams.get(ID).getTeamMember().length; n++) {if (teams.get(ID).getTeamMember()[n].getMemberId() == memberId) {teams.get(ID).getTeamMember()[n].setStatus(true);break;}}//如果遍历一遍,都找不到,则报异常if (n == teamCount)throw new TeamException("找不到该成员,无法删除");//后面的元素覆盖前面的元素for (int i = n + 1; i < teamCount; i++) {if (teams.get(ID).getTeamMember()[i] != null) {teams.get(ID).getTeamMember()[i - 1] = teams.get(ID).getTeamMember()[i];teams.get(ID).getTeamMember()[i - 1].setMemberId(i);}}teams.get(ID).getTeamMember()[--teamCount] = null;System.out.println("该成员从团队中删除成功");}//初始化当前团队成员数组public void clearTeam() {teamCount = 0;counter = 0;}}

5.2.3 projectListservice 类:

package com.team.project1.service;import com.team.project1.domain.*;
import com.team.project1.view.TSUtility;import java.util.ArrayList;
import java.util.Random;import static com.team.project1.service.TeamListService.teams;public class ProjectListService {private ArrayList<Project> project = new ArrayList<>();private int count = 1;//查看目前项目情况public void showPro() throws InterruptedException {if (project.size() == 0) {System.out.println("           还没有创建项目         ");System.out.print("是否创建?(Y/N)");char yn = TSUtility.readConfirmSelection();if (yn == 'Y') {addProject();System.out.println();} else return;} else {System.out.println("----------------项目列表展示----------------    ");System.out.println("项目ID\t   项目名\t   开发团队\t    开发状态\t\t \t    项目描述");for (int i = 0; i < project.size(); i++) {System.out.println("  " + project.get(i).getProId() + "\t     " + project.get(i).getProName()+ "  \t " + project.get(i).getProTeamName() + "\t\t" + project.get(i).isStatus() + "\t " + project.get(i).getDesName());}System.out.println();}}//添加项目public void addProject() throws InterruptedException {System.out.println();System.out.println("项目参考:--------------------------------------------------");System.out.println("1.小米pc端官网:开发完成类似于小米官网的web项目.");System.out.println("2.公益在线商城:猫宁Morning公益商城是中国公益性在线电子商城.");System.out.println("3.编程博客系统:Java博客系统,让每一个有故事的人更好的表达想法!");System.out.println("4.文档编辑系统:一个很常用的功能,适合小组内的文档编辑。");System.out.println("------------------------------------------------------------");System.out.println("请输入你想添加的参考项目:(1-4) ");char c = TSUtility.readMenuSelection();switch (c) {case '1':Project p1 = new Project();p1.setProId(count++);p1.setProName("小米pc端官网");p1.setDesName("开发完成类似于小米官网的web项目.");project.add(p1);System.out.println("已添加项目:" + p1.getProName());System.out.println();break;case '2':Project p2 = new Project();p2.setProId(count++);p2.setProName("公益在线商城");p2.setDesName("猫宁Morning公益商城是中国公益性在线电子商城.");project.add(p2);System.out.println("已添加项目:" + p2.getProName());System.out.println();break;case '3':Project p3 = new Project();p3.setProId(count++);p3.setProName("编程博客系统");p3.setDesName("Java博客系统,让每一个有故事的人更好的表达想法!");project.add(p3);System.out.println("已添加项目:" + p3.getProName());System.out.println();break;case '4':Project p4 = new Project();p4.setProId(count++);p4.setProName("文档编辑系统");p4.setDesName("一个很常用的功能,适合小组内的文档编辑。");project.add(p4);System.out.println("已添加项目:" + p4.getProName());System.out.println();break;default:System.out.println("项目不存在");System.out.println();break;}}public ArrayList<Integer> teamId = new ArrayList<>();//用来接受每次循环得到的随机数//给项目分配团队public void randomPro() {System.out.println("            当前共有团队:");System.out.println("-------------------------------------");System.out.println("团队ID\t 团队名\t   当前人数\t  是否满员");for (int i = 0; i < teams.size(); i++) {System.out.println("  " + teams.get(i).getTeamId() + "\t   " + teams.get(i).getTeamName() + "  \t  " + teams.get(i).getTeamSum() + "\t\t  " + teams.get(i).isFull());}System.out.println("-------------------------------------");System.out.println();//随机分配项目boolean isSame = false;Random random = new Random();table1: for (int i = 0; i < project.size(); i++) {int randomTeam = random.nextInt(project.size());//每次随机得到一个在项目总数范围内的随机整数for (int j = 0; j < teamId.size(); j++) {if (teamId.get(j).equals(randomTeam)) { //若果此次随机得到的随机数有与之前的一样,则重新循环执行本次isSame = true;if (isSame) {i--;continue table1;}}}teamId.add(randomTeam);//每次遍历把生成的随机数存入集合,避免后面再生成相同的随机数,出现一个项目分配给多个团队的情况//将随机得到的团队成员和团队名名赋值给项目,并更改开发状态project.get(i).setProTeamName(teams.get(randomTeam).getTeamName());project.get(i).setStatus(true);project.get(i).setProTeam(teams.get(randomTeam).getTeamMember());//输出随机分配结果System.out.println("第" + project.get(i).getProId() + "个项目" + ": " + "/" + project.get(i).getProName() + "/     " + "随机分配给     " + "第" +teams.get(randomTeam).getTeamId() + "团队:" + "/"+ teams.get(randomTeam).getTeamName() + "/  " + " 团队进行开发");}System.out.println();}//删除选择的项目public void delPro(int id) {boolean flag = false;for (int i = 0; i < project.size(); i++) {if (project.get(i).getProId() == id) {project.remove(i);for (i = id; i <= project.size(); i++) {project.get(i - 1).setProId(project.get(i - 1).getProId() - 1);}flag = true;}}if (flag) {System.out.println("删除成功!");count--;} else {try {throw new TeamException("该项目不存在");} catch (TeamException e) {e.printStackTrace();}}}//得到所有项目数据集合public ArrayList<Project> getAllPro() {return project;}
}

6. 项目总结:

    6.1. 此项目主要涉及以下知识点:  

                             类的继承和多态

                             对象的值传递、接口;

                             static和final修饰符;  

                              异常处理;

                              Java基本语法和流程控制;

                             数组,ArrayList集合。

       6.2遇到的问题及解决方案:

问题:在多个不同的类里需要对某一个类里的对象的数据进行增删改查时,不能又new一个对象来调用属性、方法,这样操作的根本不是同一个对象,数据会丢失。

解决:正确的方法是进行对象的传递,即通过调用方法,在需要用到该对象的方法里,定义形参接收这个对象。


http://www.ppmy.cn/news/330576.html

相关文章

Java面向对象实践--开发团队调度软件

开发团队调度软件 前言开发团队调度软件一、需求说明1.添加成员2.开发团队人员组成要求3.添加失败显示原因 二、软件设计架构Equipment接口及其实现子类的设计Employee类及其子类的设计Status类NameListService类的设计TeamService类的设计TeamView类的设计 三、代码实现项目结…

Java学习笔记——正则表达式(Pattern类、Matcher类和PatternSyntaxException)

目录 一、Pattern类 &#xff08;一&#xff09;Pattern 介绍 &#xff08;二&#xff09;Pattern 方法 二、Matcher类 &#xff08;一&#xff09;Matcher 类介绍 &#xff08;二&#xff09;Matcher 类方法 三、PatternSyntaxException 四、代码 Java中与正则表达式…

佳能MOV视频恢复方法

随着佳能机器的普及以及用户使用量越来越大&#xff0c;佳能机器在使用过程中则容易出现各种情况的数据丢失以及录制过程中断电导致的损坏&#xff0c;因为佳能机器在录制过程中会产生不连续存储&#xff0c;所以数据出现丢失之后&#xff0c;市面上普通的恢复软件都无法直接恢…

【MySQL学习笔记】update,delete,select语句

1.SQL语句 1.1 UPDATE UPDATE更新原表中的各列 SET修改哪列和要赋什么值&#xff0c; WHERE指定修改哪行&#xff0c;没写WHERE则更新所有行 UPDATE employee SET salary WHERE user_name #更新多个列&#xff0c;逗号隔开 UPDATE employee SET salary 100,emp_email …

【算法系列 | 5】深入解析排序算法之——快速排序

序言 你只管努力&#xff0c;其他交给时间&#xff0c;时间会证明一切。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记一级论点蓝色&#xff1a;用来标记二级论点 决定开一个算法专栏&#xff0c;希望能帮助大…

【LINGO】求七个城市最小连线图,使天然气管道价格最低

目录 1、问题描述 2、问题求解 1、问题描述 2、问题求解 model: sets: cities/A,B1,B2,C1,C2,C3,D/; roads(cities,cities)/A B1,A B2,B1 C1,B1 C2,B1 C3,B2 C1, B2 C2,B2 C3,C1 D,C2 D,C3 D/:w,x; endsets data: w2 4 3 3 1 2 3 1 1 3 4; enddata nsize(cities); !城市的个数…

Forexclub认为针对俄的天然气价格上限可能只是摆设

欧盟能源监管机构合作署(ACER)负责人告诉英国《金融时报》&#xff0c;欧盟对天然气的价格上限是一个未经测试的工具&#xff0c;可能无法阻止欧洲家庭和企业的天然气价格飙升&#xff0c;可能只是摆设。 Forexclub认为天然气价格的上限是难以理解的&#xff0c;不符合市场需求…

天然气阶梯是按年还是按月_天然气阶梯价划分时间的节点怎么计算,是以每年为一个单位吗...

展开全部 不是按自然年计算&#xff0c;以供电企业抄表例日为准&#xff0c;跨度12个用电月作为一个电费结算年。居民用户申请办理新装业务62616964757a686964616fe58685e5aeb931333433633939时&#xff0c;按新装业务受理之日起的实际用电月数计算分档电量。 年阶梯分档电量标…