2022-07-16 第10组 蒋萍 关于用数组实现员工管理系统的操作
作者:互联网
一步一步,稳步前行
目录写在前面
我觉得今天的进步是巨大的,在经过昨晚一系列的思考和尝试,但没有实现所有功能,今天跟着老师的思路又分析了一遍,关于昨晚的所有不清楚的地方,今天我都有了更深刻的认识,在一次次跟着老师走的过程中,不管是代码的熟练度还是分析问题的放方方面面,我明显感觉我是真的在进步,虽然我一年前也接触过Java,但扪心自问,我从前学的并不熟练,事实证明,这个东西是需要要重复和不断练习的,
我现在把自己当小白,一切重新学习,稳步前进。
一定要自己先思考,明确问题出在哪
大胆尝试,多敲,敲着敲着熟练度就上来了,上头那一刻的感觉,简直是神清气爽!!
哈哈哈哈哈,祝大家学习愉快~~·
分析
实现
/*
唉,我只实现了单个模块的简单功能,员工信息查询排序功能未实现;
而且无法实现功能之间的衔接;
循环使用不够灵活,
条件思考得不够完善
代码实现能力差 !!
还得努力不止一点点
*/
public class ManageSystem {
public static void main(String[] args) {
// 数组应该声明在哪??考虑作用域问题,四种操作用的是统一数据,所以数组应该写在外面,每次循环就可以避免初始化为0
String[] names = new String[2];
int[] nos = new int[2];
int no = 1001; // 第一个员工工号
int i = 0; // 要操作的数组下标
while (true) {
Scanner scanner = new Scanner(System.in);
System.out.println("欢迎使用员工管理系统");
System.out.println("请选择功能:1、添加员工 2、查询员工 3、修改信息 4、删除员工 ");
String flag = scanner.next();
switch (flag) {
case "1": // 添加
System.out.println("请输入员工姓名:");
String name = scanner.next();
// 如何保存数据??? 如果第一次输入的员工保存到下标为0的位置,往数组里赋值
// 如何让id自增??? 刚开始的时候,这一步我没理顺.
/*nos[0] = no;
names[0] = name;
no++;*/
/* nos[1] = no
names[1] = name */
// 每加一个人,下标就自增
nos[i] = no;
names[i] = name;
System.out.println("添加成功," + "姓名:" + names[i] + "工号:" + nos[i]);
i++;
no++;
/* 怎么知道要越界了 ???
1、数组最后一个元素不为空
2、当i的值和数组最大下标相等,在进入到添加时就先判断是否越界(此时leng要-1)
3、在添加成功后,i++之后,再判断下一次是否越界
*/
if (i >= nos.length) { // 注意这里不能-1,因为已经i++了,
// 扩容
// 新数组
int[] newNos = new int[nos.length + 2];
String[] newNames = new String[names.length + 2];
for (int j = 0; j < nos.length; j++) {
// 复制
newNos[j] = nos[j];
newNames[j] = names[j];
}
// 重新赋值
nos = newNos;
names = newNames;
}
break;
case "2": // 查询
// String n = scanner.next();
System.out.println("请输入要查询员工的工号:");
int enquire = scanner.nextInt();
// 根据工号查询
/*
* 先遍历是否存在,如果存在,拿到下标去找姓名
* */
int index = -1; // 不想让它重复输出,// 用 boolean b = false; 也可以
for (int j = 0; j < nos.length; j++) { // 遍历
if (enquire == nos[j]){ // 拿到下标
// System.out.println("工号" + nos[j] + "的姓名:" + names[j]);
index = j;
break;
// 如果
}
}
if (index != -1){
System.out.println("工号" + nos[index] + "的姓名:" + names[index]);
} else {
System.out.println("工号不存在!");
}
// 排序未实现
break;
case "3": // 修改
/*
* 修改两个操作:先输入工号,先查询工号在不在,如果不存在,提示错误
* 在的话,先显示出原有信息,请输入新名字
* */
index = -1;
System.out.println("请输入要修改的工号:");
int reno = scanner.nextInt();
for (int i1 = 0; i1 < names.length; i1++) {
if (reno == nos[i]) {
index = i1;
break;
}
}
if (index != -1) {
System.out.println("请输入新的姓名:");
String newName = scanner.nextLine();
names[index] = newName;
System.out.println("修改成功!");
}else {
System.out.println("该员工不存在!");
}
case "4":
/*
* 新建一个数组
* 赋值回去,0不要
*
* 输入工号时得先查询保证存在;
* */
index = -1;
System.out.println("请输入要修改的工号:");
int no1 = scanner.nextInt();
for (int i1 = 0; i1 < names.length; i1++) {
if (no1 == nos[i]) {
index = i1;
break;
}
}
if (index != -1) {
// 找到了就删除
nos[index] = 0;
names[index] = null;
int[] newNos = new int[nos.length];
String[] newNames = new String[nos.length];
for (int j = 0; j < nos.length - 1; j++) {
if (nos[j] == 0) {
newNos[j] = nos[j + 1];
nos[j + 1] = 0;
}else {
newNos[j] = nos[j];
}
if (names[j] == null) {
newNames[j] = names[j + 1];
newNames[j + 1] = null;
}else {
newNos[j] = nos[j];
newNames[j] = names[j];
}
}
nos = newNos;
names = newNames;
}else {
System.out.println("该员工不存在!");
}
/* 那删了之后,数组容量能变小吗?? */
default:
System.out.println("谢谢使用!");
}
}
}
}
/*员工信息要保存到数组里
* 1、工号
* 不能输入,自动生成的自动递增的一个数字1001
* 2、姓名
* 工号和姓名都保存到数组里
* int[] nos = new int[2]
* String[] names = new String[2]
* 要考虑扩容问题
* */
/*根据工号查询,有能力,做根据姓名查询(二分,线性),姓名可以重名*/
/*根据工号倒序(从大到小)排序*/
标签:10,07,16,int,System,names,println,工号,nos 来源: https://www.cnblogs.com/fulfill/p/16483997.html