第六章总结
通过第六章的学习,对类和对象有了自己的理解和感悟,逐渐将面向过程的编程思想转化为了面向对象的编程思想。
学习完了本章的内容,将其进行总结,将类的属性,方法,构造器,封装性,关键字的使用等知识点进行复习,把知识点放进同一个程序中,实现一个小的项目,实现增删该查的功能。
客户类Customer
//Customer 类用来封装用户的信息
public class Customer {
private String name;
private int age;
private int phone;
private String gender;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getPhone() {
return phone;
}
public void setPhone(int phone) {
this.phone = phone;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Customer ( String name,int age,int phone,String gender,String email){
this.age=age;
this.email=email;
this.gender=gender;
this.name=name;
this.phone=phone;
}
}
客户清单类Customerlist
/*
Customerlist为Customer类提供方法数组,用来进行管理Customer类的对象
提供能够进行遍历的方法等
*/
/*
构造这个类的思路是,我们使用类的嵌套,也就是在这个类中嵌套了一个Csutomer类,
并且使用这个类去定义了一个数组,数组的大小由使用者决定,这个数组属于该类的一
个属性,第二个属性是total,他的目的是为了进行判断此时数组中已经存储了多少个
元素,同时也可以实现索引等
*/
public class Customerlist {
private Customer customers[];
private int total;//记录已经保存的客户的数量
/*
totalcustomer 的作用是用来指定数组的长度
Customerd的是构造方法即是构造器
*/
public Customerlist(int totalcustomer){
customers=new Customer[totalcustomer];//对数进行初始化
}
/*
在Customer类中定义了一个方法叫做增加客户的方法,可以看到,此处的参数
类型是Customer类,也就是我们如果想要增加客户的花,可以在Customervie
中直接将参数传递进去,将指定的客户添加到数组中,若添加成功,则返回值为
true,否则返回值为false。
*/
public boolean addCustomer(Customer customer){
if(total>=customers.length)
{
System.out.println("成员已满,添加失败");
return false;
}
/*
此处的customer是一个参数,如果经过一定判断之后,还能够继续进行客户的增加,
那么在这个类中最开始定义的Customer类的数组的元素就会被赋值
*/
customers[total++]=customer;//total是存储在类中的,在使用之前没有进行定义,所以初始值是0
return true;
}
/*
输入想要取代的客户的序号,将该客户的所有信息替换成新录入的客户的信息
true:修改成功 false:修改失败
*/
public boolean replaceCustomer(int index,Customer customer){
if(index<0||index>=total){
System.out.println("想要修改的客户的信息不存在,请重新输入");
return false;
}
customers[index]=customer;
return true;
}
/*
输入想要删除的信息,通过参数的索引,将指定位置的客户进行删除
若删除成功true false:删除失败
*/
public boolean delete(int index){
if(index<0||index>=total)
{
System.out.println("想要删除的客户的信息不存在,请重新输入");
return false;
}
for(int i=index;i<total-1;i++){//total表示此时拥有的客户的数量,因为要删除其中的一个客户
// 因此需要total-1表示删除该客户之后的客户的数量
customers[i]=customers[i+1];
}
//最后有数据的位置需要变为空指针
customers[total-1]=null;
total--;//客户的数量减少
return true;
}
public Customer[] getAllCustomers(){
Customer cust[]=new Customer[total];
for(int i=0;i<total;i++){
cust[i]=customers[i];
}
return cust;
}
/*
获取指定位置上的客户
如果找到了该元素,就返回
否则,返回null
*/
public Customer getCustomer(int index){
if(index<0||index>=total)
{
return null;
}
return customers[index];
}
/*
获取存储的客户的数量
*/
public Customer[] getCustomers() {
return customers;
}
public void setCustomers(Customer[] customers) {
this.customers = customers;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
}
主界面类Customerview
/*
用来进行人机交互,显示菜单,执行某一种功能等
在这个类中构造主函数,进行
*/
import com.sun.deploy.security.SelectableSecurityManager;
import com.sun.javafx.tk.ScreenConfigurationAccessor;
import java.sql.SQLOutput;
import java.util.Scanner;
public class Customerview {
/*
首先new了一个customerlist,totalcustomer代表的是在Customerlist类中开辟的数组的大小,
在此处new对象的时候,树边将数组的大小进行了选择,此处输入了10,代表数组的最大能存储的客户的数量是10个
*/
private Customerlist customerlist=new Customerlist(10);//构造方法,同时也称之为构造器
//
//进入菜单函数(菜单页面)
public void enterMainMenu(){
boolean isFlag=true;
while (isFlag) {
System.out.println("*************************************" + "\n");
System.out.println("* 客户信息管理软件 *" + "\n");
System.out.println("*1.添加客户 2. 删除客户*" + "\n");
System.out.println("*3.修改客户 4. 客户列表*" + "\n");
System.out.println("* *" + "\n");
System.out.println("**************************************" + "\n");
System.out.println(" <输入0 退出系统> \n");
System.out.println("请输出想要选择的功能");
Scanner in = new Scanner(System.in);
int n = in.nextInt();
switch (n) {
case 1:
addCustomer();
break;
case 2:
modiCustomer();
break;
case 3:
deleteCustomer();
break;
case 4:
listCustomer();
break;
case 0:
System.out.println("请确认是否要退出?是请输入Y,否则输入N");
String s = in.next();
if (s.charAt(0) == 'Y') {
System.out.println("感谢你的使用!");
isFlag = false;
} else if (s.charAt(0) == 'N') {
enterMainMenu();
break;
}
}
}
}
//增加新的客户
private void addCustomer(){
/*
定义了几个局部变量,用来接收使用者通过键盘的输入,将这些值作为
使用构造器构造对象的时候传递的参数
*/
Scanner in=new Scanner(System.in);
System.out.println("--------------增加客户信息-------------");
System.out.printf("姓名:");
String name=in.next();
System.out.printf("性别: ");
String sex=in.next();
System.out.printf("年龄: ");
int age=in.nextInt();
System.out.printf("电话: ");
int phone =in.nextInt();
System.out.printf("邮箱:");
String email=in.next();
// 将上述定义的变量中存储的数据封装到对象中
Customer customer=new Customer(name,age,phone,sex,email);//每执行一次这个函数,都会录入用户所输入的
//同时将新new的customer作为函数的参数进行传递
boolean isadd=customerlist.addCustomer(customer);
if(isadd)
System.out.println("-----------添加成功-------------");
else
System.out.println("-------客户已满,添加失败--------");
}
//修改客户的信息
private void modiCustomer(){
Scanner in=new Scanner(System.in);
System.out.printf("请输入想要更改的客户的编号: ");
int n=in.nextInt();
n--;
System.out.println("请输入新的客户的信息: ");
System.out.printf("姓名:");
String name=in.next();
System.out.printf("性别: ");
String sex=in.next();
System.out.printf("年龄: ");
int age=in.nextInt();
System.out.printf("电话: ");
int phone =in.nextInt();
System.out.printf("邮箱:");
String email=in.next();
Customer customer=new Customer(name,age,phone,sex,email);
customerlist.replaceCustomer(n,customer);
System.out.println("修改成功!");
}
//删除客户
private void deleteCustomer(){
Scanner in=new Scanner(System.in);
System.out.println("请输入想要删除的顾客的编号: ");
int n=in.nextInt();
n--;
customerlist.delete(n);
System.out.println("删除成功!");
}
//显示所有的客户
private void listCustomer(){
System.out.println("-------------------------客户列表---------------------");
int total =customerlist.getTotal();
if(total==0)
System.out.println("没有客户记录");
else{
System.out.println("编号\t姓名\t性别\t年龄\t电话\t邮箱");
Customer custs[]=customerlist.getAllCustomers();
for(int i=0;i<custs.length;i++){
Customer cust=custs[i];
System.out.println((i+1)+" \t"+cust.getName()+" \t"+
cust.getGender()+" \t"+cust.getAge()+" \t"+cust.getPhone()+" \t"+
cust.getPhone()+" \t"+cust.getEmail());
}
}
System.out.println("-----------------------------------------------------");
}
public static void main(String[] args) {
Customerview main=new Customerview();
main.enterMainMenu();
}
}