一:人员详情
package conscription;
/**
*
* @author qiyu
*
*/
public class conscription {
private int sort; //排序
private String name; //姓名
private char gender;//性别
private String nation;//民族
private int age;//年龄
private String phone;//电话
private String mailbox;//邮箱
private String height;//身高
private int weight;//体重
public int getSort() {
return sort;
}
public void getSort(int sort) {
this.sort = sort;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public String getNation() {
return nation;
}
public void setNation(String nation) {
this.nation = nation;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getMailbox() {
return mailbox;
}
public void setMailbox(String mailbox) {
this.mailbox = mailbox;
}
public String getHeight() {
return height;
}
public void setHeight(String height) {
this.height = height;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public conscription(){
}
public conscription(String name,char gender,String nation,int age,String phone,String mailbox,String height,int weight) {
this.name = name;
this.gender = gender;
this.nation = nation;
this.age = age;
this.phone = phone;
this.mailbox = mailbox;
this.height = height;
this.weight = weight;
}
}
二:信息存储
package conscriptionconscriptionList;
import conscription.conscription;
/**
*
* @author qiyu
*
*/
public class conscriptionList {
private conscription[] conscriptions;//用来保留人员的数组
private int total;//用来记录已有人员
public void setConscriptions(conscription[] conscriptions) {
this.conscriptions = conscriptions;
}
/**
* 用来初始化conscriptions数组的构造器
* @param totalconscription:指定数组的长度
*/
public conscriptionList(int totalconscription) {
conscriptions = new conscription[totalconscription];
}
/**
*将指定的人员添加到数组中
* @param customer
* @return turn:添加成功 false:添加失败
*/
public boolean addconscription(conscription customer) {
if(total >= conscriptions.length) {
return false;
}else {
conscriptions[total++] = customer;
return true;
}
}
/**
* 修改指定人员的信息
* @param index
* @param cust
* @return turn:修改成功 false:修改失败
*/
public boolean replaceconscription(int index,conscription cust) {
if(index > 0 || index <= total) {
return false;
}else {
conscriptions[index] = cust;
return true;
}
}
/**
* 删除索引上的用户
* @param index
* @return turn:删除成功 false:删除失败
*/
public boolean deleteconscription(int index) {
for(int i = index; i < total - 1; i++) {
conscriptions[i] = conscriptions[i + 1];
}
if(index < 0 || index >= total) {
return false;
}else {
conscriptions[--total] = null;
return true;
}
}
/**
* 获取所有的人员信息
* @return
*/
public conscription[] getAllconscriptions() {
conscription[] custs = new conscription[total];
for(int i = 0; i < total; i++) {
custs[i] = conscriptions[i];
}
return custs;
}
/**
* 获取指定位置上的客户
* @param index
* @return 如果找到了就返回,没找到就返回null
*/
public conscription getCustomer(int index){
if(index < 0 || index >= total) {
return null;
}else {
return conscriptions[index];
}
}
/**
* 获取存储人员的数量
* @return
*/
public int getTotal() {
return total;
}
}
三:界面显示
package conscriptionView;
import CMUtility.CMUtility;
import conscription.conscription;
import conscriptionconscriptionList.conscriptionList;
/**
* 显示和用户操作
* @author qiyu
*
*/
public class conscriptionView {
private conscriptionList ConscriptionList = new conscriptionList(10);
//("姓名\t性别\t出生年\t民族\t电话\t邮箱\t身高\t体重");
public conscriptionView() {
conscription customer = new conscription("张三",'男',"汉族", 18,"13324342314","3558135213@qq.com","190",50);
ConscriptionList.addconscription(customer);
}
/**
* 显示界面
*/
public void enterMainMenu() {
boolean isFlag = true;
while(isFlag) {
System.out.println("\n----------------------------------------------------征兵信息管理软件----------------------------------------------------");
System.out.println();
System.out.println(" 1.添加人员");
System.out.println(" 2.修改信息");
System.out.println(" 3.删除人员");
System.out.println(" 4.人员列表");
System.out.println(" 5.退 出\n");
System.out.print(" 请选择(1-5):");
char menu = CMUtility.readMenuSelection();
switch(menu) {
case '1':
addNewconscription();
break;
case '2':
modifyconscription();
break;
case '3':
deleteconscription();
break;
case '4':
listAllconscription();
break;
case '5':
System.out.println("确认是否退出(Y/N)");
char isExit = CMUtility.readConfirmSelection();
if(isExit == 'Y') {
isFlag = false;
}
}
}
}
/**
* 添加人员信息
*/
private void addNewconscription() {
System.out.println("----------------------------------------------------添加人员----------------------------------------------------");
//排序\t姓名\t性别\t出生年\t民族\t年龄\t电话\t\t邮箱\t\t\t身高\t体重"
System.out.print("请输入您的姓名:");
String name = CMUtility.readString(10);
System.out.print("请输入您的性别:");
char gender = CMUtility.readChar();
System.out.print("请输入您的民族:");
String nation = CMUtility.readString(7);
System.out.print("请输入您的年龄:");
int age = CMUtility.readInt(2);
System.out.print("请输入您的电话:");
String phone = CMUtility.readString(11);
System.out.print("请输入您的邮箱:");
String mailbox = CMUtility.readString(30);
System.out.print("请输入您的身高(cm):");
String height = CMUtility.readString(3);
System.out.print("请输入您的体重(kg):");
int weight = CMUtility.readInt(3);
conscription Conscription = new conscription(name, gender,nation, age, phone, mailbox, height, weight);
boolean isSUccess = ConscriptionList.addconscription(Conscription);
if(isSUccess) {
System.out.println("添加成功");
}else {
System.out.println("人员已满,添加失败");
}
}
/**
* 修改人员信息
*/
private void modifyconscription() {
System.out.println("----------------------------------------------------修改人员----------------------------------------------------");
conscription cust;
int number;
for(;;) {
System.out.println("请选择修改人员的编号(-1退出):");
number = CMUtility.readInt(0);
if(number == -1) {
return;
}
cust = ConscriptionList.getCustomer(number -1);
if(cust == null) {
System.out.println("无法找到指定人员");
}else {//找到编号
break;
}
}
//修改信息
//排序\t姓名\t性别\t民族\t年龄\t电话\t\t邮箱\t\t\t身高\t体重"
System.out.print("姓名("+cust.getName()+"):");
String name = CMUtility.readString(10,cust.getName());
System.out.print("性别("+cust.getGender()+"):");
char gender = CMUtility.readChar(cust.getGender());
System.out.print("民族("+cust.getNation()+"):");
String nation = CMUtility.readString(7,cust.getNation());
System.out.print("年龄("+cust.getAge()+"):");
int age = CMUtility.readInt(cust.getAge());
System.out.print("电话("+cust.getPhone()+"):");
String phone = CMUtility.readString(11,cust.getPhone());
System.out.print("邮箱"+cust.getMailbox()+"):");
String mailbox = CMUtility.readString(30,cust.getMailbox());
System.out.print("身高("+cust.getHeight()+"):");
String height = CMUtility.readString(3,cust.getHeight());
System.out.print("体重("+cust.getWeight()+"):");
int weight = CMUtility.readInt(cust.getWeight());
conscription newCons = new conscription(name,gender,nation,age,phone,mailbox,height,weight);
boolean isRepalaced = ConscriptionList.replaceconscription(number - 1, newCons);
if(isRepalaced) {
System.out.println("修改成功");
}else {
System.out.println("修改失败");
}
}
/**
* 删除人员信息
*/
private void deleteconscription() {
System.out.println("----------------------------------------------------删除人员----------------------------------------------------");
int number;
for(;;) {
System.out.println("请选择修改人员的编号(-1退出):");
number = CMUtility.readInt(0);
if(number == -1) {
return;
}
conscription customer = ConscriptionList.getCustomer(number - 1);
if(customer == null) {
System.out.println("无法找到指定人员");
}else {
break;
}
}
System.out.print("确认是否删除(Y/N):");
char isDelectable = CMUtility.readConfirmSelection();
if(isDelectable == 'Y') {
boolean deleteSuccess = ConscriptionList.deleteconscription(number - 1);
if(deleteSuccess) {
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
}else {
return;
}
}
/**
* 显示人员信息
*/
private void listAllconscription() {
System.out.println("----------------------------------------------------人员显示----------------------------------------------------");
System.out.println();
int total = ConscriptionList.getTotal();
if(total == 0) {
System.out.println("到目前为止还没有人员记录噢");
}else {
System.out.println("排序\t姓名\t性别\t民族\t年龄\t电话\t\t邮箱\t\t\t身高\t体重");
conscription[] custs = ConscriptionList.getAllconscriptions();
for(int i = 0; i < custs.length; i++) {
conscription cust = custs[i];
System.out.println((i + 1)+"\t"+cust.getName()+"\t"+
cust.getGender()+"\t"+cust.getNation()+"\t"+
cust.getAge()+"\t"+cust.getPhone()+"\t"+cust.getMailbox()+
"\t"+cust.getHeight()+"\t"+cust.getWeight());
}
}
}
public static void main(String[] args) {
conscriptionView View = new conscriptionView();
View.enterMainMenu();
}
}
四:界面操作
package CMUtility;
import java.util.Scanner;
/**
* CMUtility 将不同的方法封装起来然后调用,无需考虑功能的具体实现细节
* @author qiyu
*
*/
public class CMUtility {
private static Scanner scanner = new Scanner(System.in);
/**
* 界面选择
*/
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' && c != '5') {
System.out.println("您输入的有误,请重新输入");
}else {
break;
}
}
return c;
}
/**
* 从键盘获取一个值,把它用于做返回值
*/
public static char readChar() {
String str = readKeyBoard(1, false);
return str.charAt(0);
}
/**
* 如果不输入而是直接回车,方法将以defaultValues作为返回值
*/
public static char readChar(char defaultValues) {
String str = readKeyBoard(1, true);
return (str.length() == 0) ? defaultValues : str.charAt(0);
}
/**
* 从键盘获取一个长度不超过2位的整数,并将其作为方法的返回值
* 如果用户不输入字符而是直接回车,方法将以defaultValues作为返回值
*/
public static int readInt(int defaultValues) {
int n;
for(;;) {
String str = readKeyBoard(2, true);
if(str.equals("")) {
return defaultValues;
}
try {
n = Integer.parseInt(str);
break;
}catch(NumberFormatException e) {
System.out.println("数字输入错误,请重新输入");
}
}
return n;
}
/**
* 从键盘获取一个长度不超过limit 的字符,并将其作为方法的返回值.
*/
public static String readString(int limit) {
return readKeyBoard(limit, false);
}
/**
* 从键盘获取一个长度不超过limit 的字符,并将其作为方法的返回值.
* 如果用户不输入字符而是直接回车,方法将以defaultValues作为返回值
*/
public static String readString(int limit,String defaultValues) {
String str = readKeyBoard(limit, true);
return str.equals("") ? defaultValues : str;
}
/**
* 用于确认选择的输入.该方法从键盘读取"Y"和"N",并将其方法作为返回值
*/
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.println("选择错误,请重新选择");
}
}
return c;
}
public 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.println("输入长度(不大于" + limit +")错误,请重新输入");
continue;
}else {
break;
}
}
return line;
}
}