类与对象(二)
[实验任务]职工信息管理系统
[任务介绍]
1.任务描述
编写一个职工类(Employee),包含的属性有职工号、姓名、性别、年龄等,将所有职工存储在一个数组中,编写职工信息管理程序实现如下操作:
- 增加一个职工;
- 根据职工号删除某位职工;
- 根据职工号修改职工的某些信息;
- 将所有职工年龄增加一岁;
- 将数组中顺序显示所有职工信息;
- 将所有职工按姓名排序输出。
备注:
- 编写三个类:职工类、职工操作类和测试类。
- 职工信息管理系统类的UML图如下所示:
2.运行结果
图1 主界面
图2 录入
图3 输出
图4 删除
图5 删除成功
图6 修改
图7 修改成功
图8 修改全部职工年龄
[任务目标]
- 学会分析“职工信息管理系统”程序的实现思路;
- 根据思路独立完成“职工信息管理系统”的源代码编写、编译和运行;
- 学会系统设计与分析;
- 学会对象数组和静态变量的使用;
- 掌握Java对象的使用以及对象引用概念;
- 掌握常用的排序算法。
[实现思路]
UML 图如下:
[实现代码及运行结果]
package javabean;
public class StudentT {
public String no,name,sex;
public static int num;
public int age;
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public StudentT(String no, String name, String sex, int age) {
super();
this.no = no;
this.name = name;
this.sex = sex;
this.age = age;
}
public StudentT() {
super();
// TODO 自动生成的构造函数存根
}
}
package dao;
import java.util.Scanner;
import javabean.StudentT;
public class StudentTDao {
Scanner reader=new Scanner(System.in);
StudentT[] emp=new StudentT[50];
int a,i,j,age;
String no,name,sex;
public void menu(){//菜单
int op;
while (true){
System.out.println("********职工信息管理系统********");
System.out.println("1.录入\t2.删除\t3.修改\t4.输出");
System.out.println("****************************");
System.out.print("请选择:");
op=reader.nextInt();
switch(op){
case 1:
insert();
break;
case 2:
delete();
break;
case 3:
update();
break;
case 4:
output();
break;
}
}
}
void insert(){//插入
while (true){
System.out.print("职工号:");
no=reader.next();
if (no.equals("000")) break;
else{
System.out.print("姓名:");
name=reader.next();
System.out.print("性别:");
sex=reader.next();
System.out.print("年龄:");
age=reader.nextInt();
emp[StudentT.num]=new StudentT(no,name,sex,age);
StudentT.num++;
}
}
}
void delete(){//删除
int k=0;
System.out.print("请输入要删除的职工号:");
no=reader.next();
for (i=0;i<StudentT.num;i++){
if (no.equals(emp[i].no)){
k=i;
break;
}
}
if (i>=StudentT.num) System.out.println("该职工不存在!");
else{
for (i=k;i<StudentT.num-1;i++){
emp[i].no=emp[i+1].no;
emp[i].name=emp[i+1].name;
emp[i].sex=emp[i+1].sex;
emp[i].age=emp[i+1].age;
}
StudentT.num-=1;
System.out.println("删除成功!");
}
}
void update(){//修改
while (true){
System.out.println("********修改********");
System.out.println("1.指定\t2.全部");
System.out.println("*******************");
System.out.print("请选择:");
a=reader.nextInt();
if (a==1){
System.out.print("请输入要修改的职工号:");
no=reader.next();
for (i=0;i<StudentT.num;i++){
if (no.equals(emp[i].no)){
System.out.print("姓名:");
name=reader.next();
emp[i].name=name;
System.out.println("修改成功!");
break;
}
}
if (i>=StudentT.num)
System.out.println("该职工不存在!");
}
else if (a==2){
for (i=0;i<StudentT.num;i++){
emp[i].age+=1;
}
System.out.println("修改成功!");
}
else break;
}
}
void output(){//输出
while (true){
System.out.println("********输出********");
System.out.println("1.原数组\t2.排序");
System.out.println("*******************");
System.out.print("请选择:");
a=reader.nextInt();
if (a==1){
System.out.println("************原数组如下:************");
System.out.println("职工号\t姓名\t性别\t年龄");
for (i=0;i<StudentT.num;i++){
System.out.println(emp[i].no+"\t"+emp[i].name+"\t"+emp[i].sex+"\t"+emp[i].age);
}
}
else if (a==2){
System.out.println("*******排序后数组如下:*******");
sort(emp,StudentT.num);
System.out.println("职工号\t姓名\t性别\t年龄");
for (i=0;i<StudentT.num;i++){
System.out.println(emp[i].no+"\t"+emp[i].name+"\t"+emp[i].sex+"\t"+emp[i].age);
}
}
else break;
}
}
void sort(StudentT[] ems,int n){
StudentT temp=new StudentT();
for (i=0;i<n;i++){
for (j=i+1;j<n;j++){
if (ems[i].name.compareTo(ems[j].name)>0){
temp=ems[i];
ems[i]=ems[j];
ems[j]=temp;
}
}
}
}
}
package com;
import dao.StudentTDao;
public class T {
public static void main(String[] args) {
// TODO 自动生成的方法存根
StudentTDao a=new StudentTDao();
a.menu();
}
}