0%

javaSE基础学习day10

Eclipse的快捷键使用

快捷键 解释
alt + / 补全代码的声明
ctrl + 1 快速修复
ctrl + shift + o 批量导包
ctrl + / 使用单行注释
ctrl + shift + / 使用多行注释
ctrl + shift + \ 取消多行注释
ctrl + alt + down 或
ctrl + alt + up
复制指定行的代码
ctrl + d 删除指定行的代码
alt + up 或
alt + down
上下移动代码
shift + enter 切换到下一行代码空位
ctrl + shift + enter 切换到上一行代码空位
ctrl + 选中指定的结构
ctrl + shift + t
查看源码
alt + left 或
鼠标后侧键
退回到前一个编辑的页面
alt + right或
鼠标前侧键
进入到下一个编辑的页面(针对于上面那条来说)
ctrl + t 光标选中指定的类,查看继承树结构
ctrl + c 复制代码
ctrl + z 撤销
ctrl + y 反撤销
ctrl + x 剪切
ctrl + v 粘贴
ctrl + s 保存
ctrl + a 全选
ctrl + shift + f
(和繁简切换冲突,我已经自定义成 shift + f)
格式化代码
tab 选中数行,整体往后移动
shift + tab 选中数行,整体往前移动
ctrl + o 在当前类中,显示类结构,并支持搜索指定的方法、属性等
alt + shift + r 批量修改指定的变量名、方法名、类名等
ctrl + shift + x 选中的结构大小写切换(变成大写)
ctrl + shift + y 选中的结构大小写切换(变成小写)
alt + shift + s 调出生成getter/setter/构造器等结构
alt + enter 显示当前选择资源(工程 or 文件)的属性
ctrl + k 快速查找(参考选中的Word快速定位到下一个)
ctrl + w 关闭当前窗口
ctrl + shift + w 关闭所有窗口
ctrl + alt + g 查看指定的结构使用过的地方
ctrl + f 查找与替换
ctrl + m 最大化当前的View
home 直接定位到当前行的首位
end 直接定位到当前行的末位

项目二:客户信息管理软件

模拟实现基于文本界面的《客户信息管理软件》,该软件能够实现对客户对象的插入、修改和删除(用数组实现),并能够打印客户明细表。项目采用分级菜单方式,主菜单如下:

项目需求

📌 每个客户的信息被保存在Customer对象中。
📌 以一个Customer类型的数组来记录当前所有的客户。
📌 每次“添加客户”(菜单1)后,客户(Customer)对象被添加到数组中。
📌 每次“修改客户”(菜单2)后,修改后的客户(Customer)对象替换数组中原对象。
📌 每次“删除客户”(菜单3)后,客户(Customer)对象被从数组中清除。
📌 执行“客户列表 ”(菜单4)时,将列出数组中所有客户的信息。

“添加客户”的界面及操作过程如下所示:

“修改客户”的界面及操作过程如下所示:

“删除客户”的界面及操作过程如下所示:

“客户列表”的界面及操作过程如下所示:

软件设计结构

该软件由以下三个模块组成:

软件设计结构

CustomerView为主模块,负责菜单的显示和处 理用户操作。CustomerList为Customer对象的管理模块,内部用数组管理一组Customer对象,并提供相应的添加、修改、删除和遍历方法,供CustomerView调用。Customer为实体对象,用来封装客户信息。

enterMainMenu()的活动图

工具类CMUtility.java

项目二中提供了CMUtility.java类,可用来方便地实现键盘访问,该类提供了以下静态方法:

CMUtility.java类的静态方法
public static char readMenuSelection()
该方法读取键盘,如果用户键入’1’-’5’中的任意字符,则方法返回,返回值为用户键入字符。
public static char readChar() 和
public static char readChar(char defaultValue)
这两个方法功能相同,均从键盘读取一个字符,并将其作为方法的返回值。如果用户不输入字符而直接回车,方法将以defaultValue 作为返回值。(提示:此方法可在修改客户时调用)
public static int readInt()和
public static int readInt(int defaultValue)
这两个方法功能相同,均从键盘读取一个长度不超过2位的整数,并将其作为方法的返回值。如果用户不输入字符而直接回车,方法将以defaultValue 作为返回值。
public static String readString(int limit)和
public static String readString(int limit,String defaultValue)
这两个方法功能相同,均从键盘读取一个长度不超过limit的字符串,并将其作为方法的返回值。limit指定字符串的最大长度,如果用户不输入字符而直接回车,方法将以defaultValue 作为返回值。
public static char readConfirmSelection()
从键盘读取‘Y’或’N’,并将其作为方法的返回值。

类的设计

Customer类:

Customer类用来封装客户信息,该类封装客户的以下信息
String name :客户姓名
char gender :性别
int age :年龄
String phone :电话号码
String email :电子邮箱
提供各属性的get/set方法
提供所需的构造器

CustomerList类:

CustomerList类的成员 详细
属性 Customer[] customers :用来保存客户对象的数组
int total = 0 :记录已保存客户对象的数量
构造器 public CustomerList(int totalCustomer)
📌 用途:初始化customers数组;
📌 参数:totalCustomer:指定customers数组的最大空间。
方法 public boolean addCustomer(Customer customer)
📌 用途:将参数customer添加到数组中最后一个客户对象记录之后;
📌 参数:customer指定要添加的客户对象;
📌 返回:添加成功返回true;false表示数组已满,无法添加。
方法 public boolean replaceCustomer(int index, Customer customer)
📌 用途:用参数customer替换数组中由index指定的对象;
📌 参数:customer指定替换的新客户对象,
index指定所替换对象在数组中的位置,从0开始;
📌 返回:替换成功返回true;false表示索引无效,无法替换。
方法 public boolean deleteCustomer(int index)
📌 用途:从数组中删除参数index指定索引位置的客户对象记录;
📌 参数: index指定所删除对象在数组中的索引位置,从0开始;
📌 返回:删除成功返回true;false表示索引无效,无法删除。
方法 public Customer[] getAllCustomers()
📌 用途:返回数组中记录的所有客户对象;
📌 返回: Customer[] 数组中包含了当前所有客户对象,该数组长度与对象个数相同。
方法 public Customer getCustomer(int index)
📌 用途:返回参数index指定索引位置的客户对象记录;
📌 参数: index指定所要获取的客户在数组中的索引位置,从0开始;
📌 返回:封装了客户信息的Customer对象。
方法 public int getTotal()
📌 用途:返回total的值。

CustomerView类:

CustomerView类的成员 详细
属性 CustomerList customerList = new CustomerList(10);
创建最大包含10个客户对象的CustomerList 对象,供以下各成员方法使用。
构造器 public CustomerView()
📌 用途:创建一个名叫“张三”的Customer对象。
方法 public void enterMainMenu()
📌 用途:显示主菜单,响应用户输入,根据用户操作分别调用其他相应的成员方法(如addNewCustomer),以完成客户信息处理。
方法 private void addNewCustomer()
private void modifyCustomer()
private void deleteCustomer()
private void listAllCustomers()
📌 用途:这四个方法分别完成“添加客户”、“修改客户”、
“删除客户”和“客户列表”等各菜单功能。
方法 public static void main(String[] args)
📌 用途:创建CustomerView实例,并调用 enterMainMenu()方法以执行程序。

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public class Customer{
//属性
private String name; //姓名
private char gender; //性别
private int age; //年龄
private String phone; //电话号码
private String email; //电子邮箱
//构造器
public Customer(){
}
public Customer(String name,char gender,int age,String phone,String email){
this.name = name;
this.gender = gender;
this.age = age;
this.phone = phone;
this.email = email;
}
//方法
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setGender(char gender){
this.gender = gender;
}
public char getGender(){
return gender;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public void setPhone(String phone){
this.phone = phone;
}
public String getPhone(){
return phone;
}
public void setEmail(String email){
this.email = email;
}
public String getEmail(){
return email;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public class CustomerList{
//属性
private Customer[] customers;//用来保存客户对象的数组
private int total; //记录已保存客户对象的数量
//构造器
public CustomerList(){
}
public CustomerList(int totalCustomer){
customers = new Customer[totalCustomer];
}
//方法
public boolean addCustomer(Customer customer){
if(total >= customers.length){
return false;
}
customers[total++] = customer;//增加客户total要加一
return true;
}
public boolean replaceCustomer(int index,Customer customer){
if(index < 0 || index >= total){
return false
}
customers[index] = customer;
return true;
}
public boolean deleteCustomer(int index){
if(index < 0 || index >= total){
return false;
}
for(int i = index;i < total-1;i++){
customers[i] = customer[i+1];
}
customer[--total] = null;//最后一个元素要置为null
return true;
}
public Customer[] getAllCustomers(){
Customer customer = new Customer[total];
for(int i = 0;i < total;i++){
customer[i] = customers[i];
}
return customer;
}
public Customer getCustomer(int index){
if(index < 0 || index >= total){
return null;//customers数组的其他位置没有存数据,返回null
}
return customers[index];
}
public int getTotal(){
return total;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
public class CustomerView{
//属性
private CustomerList customerList = new CustomerList(10);//创建最大包含10个客户对象的CustomerList 对象
//构造器
public CustomerView(){
Customer customer = new Customer("张三","男",30,"010-56253825","abc@email.com");
customerList.addCustomer(customer);
}
//方法
public void enterMainMenu(){
boolean isFlag = true;
while(isFlag){
System.out.println("\n-----------------客户信息管理软件-----------------\n");
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':
addNewCustomer();
break;
case '2':
modifyCustomer();
break;
case '3':
deleteCustomer();
break;
case '4':
listAllCustomers();
break;
case '5':
System.out.println("\n确定是否退出(Y/N):");
char isExit = CMUtility.readConfirmSelection();
if(isExit == 'Y'){
isFlag = false;
}
}
}
}

private void addNewCustomer(){
System.out.println("\n---------------------添加客户---------------------");
System.out.print("姓名:");
String name = CMUtility.readString(10);
System.out.print("性别:");
char gender = CMUtility.readChar();
System.out.print("年龄:");
int age = CMUtility.readInt();
System.out.print("电话:");
String phone = CMUtility.readString(30);
System.out.print("邮箱:");
String email = CMUtility.readString(30);

Customer customer = new Customer(name,gender,age,phone,email);//将上述数据封装到对象中
boolean isAdd = customerList.addCustomer(customer);
if(isAdd){
System.out.println("---------------------添加完成---------------------");
}else{
System.out.println("----------------客户目录已满,添加失败---------------");
}
}

private void modifyCustomer(){
System.out.println("\n---------------------修改客户---------------------");
Customer customer;
int number;
for(;;){
System.out.print("请选择待修改客户编号(-1退出):");
number = CMUtility.readInt();
if(number == -1){
return;
}
customer = customerList.getCustomer(number - 1);
if(customer == null){
System.out.println("无法找到指定客户!");
}else{//找到了相应编号的客户
break;
}
}
//修改客户信息
System.out.print("姓名(" + customer.getName() + "):");
String name = CMUtility.readString(10,customer.getName());

System.out.print("性别(" + customer.getGender() + "):");
char gender = CMUtility.readChar(customer.getGender());

System.out.print("年龄(" + customer.getAge() + "):");
int age = CMUtility.readInt(customer.getAge());

System.out.print("电话(" + customer.getPhone() + "):");
String phone = CMUtility.readString(30,customer.getPhone());

System.out.print("邮箱(" + customer.getEmail() + "):");
String email = CMUtility.readString(30,customer.getEmail());

Customer = new Customer(name,gender,age,phone,email);
boolean isReplaced = customerList.replaceCustomer(number-1,Customer);
if(isReplaced){
System.out.println("---------------------修改完成---------------------");
}else{
System.out.println("---------------------修改失败---------------------");//其实是无法执行到这条语句的
}
}

private void deleteCustomer(){
System.out.println("\n---------------------删除客户---------------------");
int number;
Customer customer;
for(;;){
System.out.print("请选择待删除客户编号(-1退出):");
number = CMUtility.readInt();
if(number == -1){
return;//结束deleteCustomer()方法
}
customer = customerList.getCustomer(number-1);
if(customer == null){
System.out.println("无法找到指定客户!");
}else{
break;
}
}
//找到了指定的客户
System.out.println("确认是否删除(Y/N):");
char isDelete = CMUtility.readConfirmSelection();
if(isDelete == 'Y'){
boolean deleteCustomer = customerList.deleteCustomer(number-1);
if(deleteCustomer){
System.out.println("---------------------删除完成---------------------");
}else{
System.out.println("--------------无法找到指定客户,删除失败--------------");//其实是无法执行到这条语句的
}
}
}

private void listAllCustomers(){
System.out.println("\n---------------------------客户列表---------------------------");
int total = customerList.getTotal();
int number;//编号
if(total == 0){
System.out.println("没有用户记录");
}else{
System.out.println("编号\t姓名\t性别\t年龄\t\t电话\t\t邮箱");
for(int i = 0;i < total;i++){
number = i + 1;
String name = customerList.getCustomer(i).getName();
char gender = customerList.getCustomer(i).getGender();
int age = customerList.getCustomer(i).getAge();
String phone = customerList.getCustomer(i).getPhone();
String email = customerList.getCustomer(i).getEmail();
System.out.println(number + "\t" + name + "\t" + gender + "\t" + age + "\t\t" + phone + "\t" + email);
}
}
System.out.println("-------------------------客户列表完成-------------------------");
}
//main方法,程序的入口
public static void main(String[] args){
CustomerView custView = new CustomerView();
custView.enterMainMenu();
}
}
  • 本文作者: susin3x
  • 本文链接: https://susin3x.cn/posts/b0c21ab7.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!