基於文字介面的客戶資訊管理系統-純面向物件
一:專案介紹
介紹:模擬實現一個基於文字介面的——客戶資訊管理系- 類和物件(屬性、方法及構造器)
- 類的封裝
- 引用陣列
- 陣列的插入、刪除和替換
- 多物件協同工作
該簡易系統能夠實現對客戶物件的插入、修改和刪除(用陣列實現),並能夠列印客戶明細表
專案採用分級選單方式。
1、主選單如下:
-----------------客戶資訊管理軟體-----------------
1 添 加 客 戶
2 修 改 客 戶
3 刪 除 客 戶
4 客 戶 列 表
5 退 出
請選擇(1-5):_
2、新增功能:
……
請選擇(1-5):1
---------------------新增客戶---------------------
姓名:張三
性別:男
年齡:30
電話:010-56253825
郵箱:[email protected]
---------------------新增完成---------------------
3、修改功能:
……
請選擇(1-5):2
---------------------修改客戶---------------------
請選擇待修改客戶編號(-1退出):1
姓名(張三):<直接回車表示不修改>
性別(男):
年齡(30):
電話(010-56253825):
郵箱(
---------------------修改完成---------------------
4、刪除功能:
……
請選擇(1-5):3
---------------------刪除客戶---------------------
請選擇待刪除客戶編號(-1退出):1
確認是否刪除(Y/N):y
---------------------刪除完成---------------------
5、查/顯示全部功能:
……
請選擇(1-5):4
---------------------------客戶列表---------------------------
編號 姓名 性別 年齡 電話 郵箱
1 張三 男 30 010-56253825
2 李四 女 23 010-56253825 [email protected]
3 王芳 女 26 010-56253825 [email protected]
-------------------------客戶列表完成-------------------------
二:方法介紹
該專案主要涉及一下4個類:
1)、Customer.java
2)、CustomerView.java
3)、CustomerService.java
4)、CMUtility.java
1)、Customer為實體類,用來封裝客戶資訊
該類封裝客戶的以下資訊:
Int id:客戶編號
String name :客戶姓名
char gender :性別
int age :年齡
String phone:電話號碼
String email :電子郵箱
2)、CustomerService為Customer物件的管理模組,內部用陣列管理一組Customer物件
- 本類封裝以下資訊:
int total = 0 :記錄已儲存客戶物件的數量
- 該類至少提供以下方法:
- public Customer[] list():返回客戶的資訊陣列
- public boolean add(Customer customer):完成客戶新增的功能
- public boolean delete(int id):完成客戶刪除功能
- public boolean replace(int id ,Customer customer):完成客戶修改的功能
- public int findById(int id):先根據id找到要刪除/修改的id對應的customer物件,如果找到就返回下標對應的id,如果找不到就返回-1
3)、CustomerView為主模組,負責選單的顯示和處理使用者操作
- 本類封裝以下資訊:
CustomerService customerService = new CustomerService(10);
建立最大包含10客戶物件的CustomerList 物件,供以下各成員方法使用。
- 該類至少提供以下方法:
- public void mainMenu() :負責選單的顯示
- public void add()
- public void delete()
- public void replace()
4)、CMUtility為工具類,作為基礎專案野直接拿來用,也可以拿來學習
1.public static char readMenuSelection()
用途:該方法讀取鍵盤,如果使用者鍵入’1’-’5’中的任意字元,則方法返回。返回值為使用者鍵入字元。
2.public static char readChar() 和public static char readChar(char defaultValue)
用途:這兩個方法功能相同,均從鍵盤讀取一個字元,並將其作為方法的返回值。
引數: defaultValue — 如果使用者不輸入字元而直接回車,方法將以defaultValue 作為返回值。(提示:此方法可在修改客戶時呼叫)
3.public static int readInt() 和public static int readInt(int defaultValue)
用途:這兩個方法功能相同,均從鍵盤讀取一個長度不超過2位的 整數,並將其作為方法的返回值。
引數: defaultValue — 如果使用者不輸入字元而直接回車,方法將以defaultValue 作為返回值。
4.public static String readString(int limit)和public static String readString(int limit, String defaultValue)
用途:這兩個方法功能相同,均從鍵盤讀取一個長度不超過limit的字串,並將其作為方法的返回值。
引數:limit — 指定字串的最大長度
defaultValue — 如果使用者不輸入字元而直接回車,方法將以defaultValue 作為返回值。
5.public static char readConfirmSelection() :
用途:從鍵盤讀取‘Y’或’N’,並將其作為方法的返回值。
程式碼如下:
Customer.java
package com.basic.customermanage.bean;
public class Customer {
private int id;
private String name;
private char gender;
private int age;
private String phone;
private String email;
public Customer(String name, char gender, int age, String phone, String email) {
super();
this.name = name;
this.gender = gender;
this.age = age;
this.phone = phone;
this.email = email;
}
public Customer(int id, String name, char gender, int age, String phone, String email) {
super();
this.id = id;
this.name = name;
this.gender = gender;
this.age = age;
this.phone = phone;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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 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 getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getInfo() {
return this.id+"\t"+this.name+"\t"+this.gender+"\t"+this.age
+"\t"+this.phone+"\t"+this.email;
}
}
CustomerService.java
package com.basic.customermanage.bean.service;
import com.basic.customermanage.bean.Customer;
/**
* 功能 : 完成對客戶的管理操作(增刪改查 c[create]r[read]u[update]d[delete])
* @author Administrator
*
*/
public class CustomerService {
//1、定義一個客戶陣列
private Customer[] customers ;
//2、定義客戶的實際個數,每次執行的時候先預設存在一個客戶
private int customerNum = 1;
//構造一個長度len的陣列
public CustomerService(int len) {
super();
this.customers = new Customer[len];
//先建立一個customer物件
Customer customer = new Customer(1, "張三", '男', 34, "123455", "[email protected]");
this.customers[0] = customer;
}
//返回客戶的資訊陣列
public Customer[] list(){
// 使用一個笨方法,就是將customers陣列中,實際的人員拷貝到一個新陣列,將這個新陣列返回。
// Customer [] newCustomer = new Customer[customerNum];
// for (int i = 0; i < newCustomer.length; i++) {
// newCustomer[i] = customers[i];
// }
// return newCustomer;
return customers;
}
//完成客戶新增的功能
public boolean add(Customer customer){
//判斷是否陣列滿了
if (customerNum >=customers.length) {
return false;
}
//將初始化的客戶數量依次遞增
customers[customerNum++] = customer;
//同時將客戶的id進行依次遞增
customer.setId(customerNum);
return true;
}
//完成客戶刪除功能
public boolean delete(int id){
//先根據id去找到該客戶對應的下標
int index = findById(id);
//先判斷是否找到該id
if (index == -1) {
return false;
}
//將該id之後的元素依次往前移
for (int i = index + 1; i < customers.length; i++) {
customers[i-1] = customers[i];
}
//將最後一個元素置空
customers[customerNum--] = null;
return true;
}
//完成客戶修改的功能
public boolean replace(int id ,Customer customer){
int index = findById(id);
if (index == -1) {
return false;
}
customers[index] = customer;
return true;
}
//先根據id找到要刪除的id對應的customer物件
//如果找到就返回下標對應的id,如果找不到就返回-1
public int findById(int id){
int index = -1;
for (int i = 0; i < customerNum; i++) {
if (customers[i].getId() == id) {
index = id;
break;
}
}
return index;
}
}
CustomerView.java
package com.basic.customermanage.view;
import com.basic.customermanage.bean.Customer;
import com.basic.customermanage.bean.service.CustomerService;
import com.basic.customermanage.util.CMUtility;
/**
* CustomerView為主模組,負責選單的顯示和處理使用者操作
*
* @author Administrator
*
*/
public class CustomerView {
// -----------------客戶資訊管理軟體-----------------
//
// 1 添 加 客 戶
// 2 修 改 客 戶
// 3 刪 除 客 戶
// 4 客 戶 列 表
// 5 退 出
//
// 請選擇(1-5):_
public static void main(String[] args) {
new CustomerView().mainMenu();
}
// 定義一個屬性 控制選單顯示是否退出
private boolean loop = true;
// 定義一個變數,接收使用者輸入
private char key = ' ';
// 使用CMUtility 工具,我們定義一個物件,當然,裡面的方法都是靜態的,可以通過類名.方法的形式替代
// private CMUtility cmUtility = new CMUtility();
// 定義一個customerService屬性,主要完成對客戶資訊的各種操作
// 因為此專案僅僅是使用面向物件的知識完成的,所以使用陣列來完成,缺點是隻能完成指定大小的客戶資訊
// 當然也可以用集合,可以不用指定大小
private CustomerService customerService = new CustomerService(10);
public void mainMenu() {
// TODO Auto-generated method stub
do {
System.out.println("-----------------客戶資訊管理軟體-----------------");
System.out.println(" 1 添 加 客 戶");
System.out.println(" 2 修 改 客 戶");
System.out.println(" 3 刪 除 客 戶");
System.out.println(" 4 客 戶 列 表");
System.out.println(" 5 退 出");
System.out.print("請選擇(1-5):_");
key = CMUtility.readMenuSelection();
switch (key) {
case '1':
this.add();
break;
case '2':
this.replace();
break;
case '3':
this.delete();
break;
case '4':
this.list();
break;
case '5':
this.loop = false;
break;
default:
System.out.println("輸入錯誤");
break;
}
} while (loop);
System.out.println("你已退出客戶資訊管理系統。。");
}
public void list() {
Customer[] customerList = customerService.list();
System.out.println("---------------------修改客戶---------------------");
System.out.println("編號\t姓名\t性別\t年齡\t電話\t郵箱");
for (int s = 0; s < customerList.length && customerList[s] != null; s++) {
System.out.println(customerList[s].getInfo());
}
System.out.println("---------------------新增完成---------------------");
}
// ---------------------新增客戶---------------------
// 姓名:張三
// 性別:男
// 年齡:30
// 電話:010-56253825
// 郵箱:[email protected]
// ---------------------新增完成---------------------
public void add() {
System.out.println("---------------------新增客戶---------------------");
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(18);
System.out.print("郵箱:");
String email = CMUtility.readString(20);
// 根據使用者的輸入,建立一個Customer物件
Customer customer = new Customer(name, gender, age, phone, email);
// 判斷建立的customer物件是否新增進陣列
if (customerService.add(customer)) {
System.out.println("---------------------新增完成---------------------");
} else {
System.out.println("---------------------新增失敗---------------------");
}
}
//
// ---------------------刪除客戶---------------------
// 請選擇待刪除客戶編號(-1退出):1
// 確認是否刪除(Y/N):y
// ---------------------刪除完成---------------------
public void delete() {
System.out.println("---------------------刪除客戶---------------------");
System.out.println("請選擇待刪除客戶編號(-1退出):");
int id = CMUtility.readInt();
if (id == -1) {
return;
}
System.out.println("確認是否刪除(Y/N):");
char choice = CMUtility.readConfirmSelection();
if (this.customerService.delete(id)) {
System.out.println("---------------------刪除完成---------------------");
} else {
System.out.println("---------------------刪除失敗---------------------");
}
}
// ---------------------修改客戶---------------------
// 請選擇待修改客戶編號(-1退出):1
// 姓名(張三):<直接回車表示不修改>
// 性別(男):
// 年齡(30):
// 電話(010-56253825):
// 郵箱([email protected]):[email protected]
// ---------------------修改完成---------------------
public void replace() {
System.out.println("---------------------修改客戶---------------------");
System.out.println("請選擇待修改客戶編號(-1退出):");
int index = CMUtility.readInt();
Customer[] customeres = customerService.list();
for (int i = 0; i < customeres.length && customeres[i] != null; i++) {
System.out.println(customeres[i].getInfo());
System.out.println("customeres[i].getId()"+customeres[i].getId());
System.out.println("index"+index);
if (index == customeres[i].getId()) {
// String defaultValue=customeres[index].getName();
System.out.println("姓名:");
//String name = CMUtility.readString(10);
String name = CMUtility.readString(10, customeres[i].getName());
System.out.print("性別:");
char gender = CMUtility.readChar(customeres[i].getGender());
System.out.print("年齡:");
int age = CMUtility.readInt(customeres[i].getAge());
System.out.print("電話:");
String phone = CMUtility.readString(18, customeres[i].getPhone());
System.out.print("郵箱:");
String email = CMUtility.readString(20, customeres[i].getEmail());
// int id = CMUtility.readInt(defaultValue);
Customer customer = new Customer(i+1,name, gender, age, phone, email);
if (customerService.replace(index, customer)) {
System.out.println("---------------------修改完成---------------------");
} else {
System.out.println("---------------------修改失敗---------------------");
}
}
}
}
}
CMUtility.java
package com.basic.customermanage.util;
import java.util.*;
/**
*/
public class CMUtility {
private static Scanner scanner = new Scanner(System.in);
/**
* 功能:讀取鍵盤輸入的一個選單選項,值:1——5的範圍
* @return 1——5
*/
public static char readMenuSelection() {
char c;
for (; ; ) {
String str = readKeyBoard(1, false);//包含一個字元的字串
c = str.charAt(0);//將字串轉換成字元char型別
if (c != '1' && c != '2' &&
c != '3' && c != '4' && c != '5') {
System.out.print("選擇錯誤,請重新輸入:");
} else break;
}
return c;
}
/**
* 功能:讀取鍵盤輸入的一個字元
* @return 一個字元
*/
public static char readChar() {
String str = readKeyBoard(1, false);//就是一個字元
return str.charAt(0);
}
/**
* 功能:讀取鍵盤輸入的一個字元,如果直接按回車,則返回指定的預設值;否則返回輸入的那個字元
* @param defaultValue 指定的預設值
* @return 預設值或輸入的字元
*/
public static char readChar(char defaultValue) {
String str = readKeyBoard(1, true);//要麼是空字串,要麼是一個字元
return (str.length() == 0) ? defaultValue : str.charAt(0);
}
/**
* 功能:讀取鍵盤輸入的整型,長度小於2位
* @return 整數
*/
public static int readInt() {
int n;
for (; ; ) {
String str = readKeyBoard(2, false);//一個整數,長度<=2位
try {
n = Integer.parseInt(str);//將字串轉換成整數
break;
} catch (NumberFormatException e) {
System.out.print("數字輸入錯誤,請重新輸入:");
}
}
return n;
}
/**
* 功能:讀取鍵盤輸入的 整數或預設值,如果直接回車,則返回預設值,否則返回輸入的整數
* @param defaultValue 指定的預設值
* @return 整數或預設值
*/
public static int readInt(int defaultValue) {
int n;
for (; ; ) {
String str = readKeyBoard(2, true);
if (str.equals("")) {
return defaultValue;
}
try {
n = Integer.parseInt(str);
break;
} catch (NumberFormatException e) {
System.out.print("數字輸入錯誤,請重新輸入:");
}
}
return n;
}
/**
* 功能:讀取鍵盤輸入的指定長度的字串
* @param limit 限制的長度
* @return 指定長度的字串
*/
public static String readString(int limit) {
return readKeyBoard(limit, false);
}
/**
* 功能:讀取鍵盤輸入的指定長度的字串或預設值,如果直接回車,返回預設值,否則返回字串
* @param limit 限制的長度
* @param defaultValue 指定的預設值
* @return 指定長度的字串
*/
public static String readString(int limit, String defaultValue) {
String str = readKeyBoard(limit, true);
return str.equals("")? defaultValue : str;
}
/**
* 功能:讀取鍵盤輸入的確認選項,Y或N
*
* @return 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.print("選擇錯誤,請重新輸入:");
}
}
return c;
}
/**
* 功能: 讀取一個字串
* @param limit 讀取的長度
* @param blankReturn 如果為true ,表示 可以讀空字串。
* 如果為false表示讀取不大於limit長度的字串。
* 如果輸入為空,或者輸入大於limit的長度,就會提示重新輸入。
* @return
*/
private 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.print("輸入長度(不能大於" + limit + ")錯誤,請重新輸入:");
continue;
}
break;
}
return line;
}
}
效果圖:
....
相關推薦
基於文字介面的客戶資訊管理系統-純面向物件
很久沒寫部落格了,從現在開始記錄Java專案,從基礎開始慢慢的向上延伸,純粹作為本人的個人記錄,也順便拿出來分享一下,不喜勿噴,有錯請指正一:專案介紹介紹:模擬實現一個基於文字介面的——客戶資訊管理系類和物件(屬性、方法及構造器)類的封裝引用陣列陣列的插入、刪除和替換
文獻綜述三:基於JSP的商品資訊管理系統設計與開發
一、基本資訊 標題:基於JSP的商品資訊管理系統設計與開發 時間:2015 出版源:Computer Knowledge and Technology 檔案分類:jsp技術的系統開發 二、研究背景 通過了解公司產品人工現狀的一些管理方面的現狀和要求,運用計算機技術開發的商品資訊管理系統,能
基於express的學生資訊管理系統
基於express的學生資訊管理系統 專案地址 專案簡介 簡單的學生資訊管理系統,後臺基於express,資料庫mysql,前端用到了一點vue,這次的團隊專案我主要是負責後端的部分,所以這裡對於前端程式碼不再贅述,只介紹後端部分以及一點點前端的js程式碼。 後端部分 //server.js var
[原始碼和文件分享]基於JSP的停車場資訊管理系統設計與實現
1.1 專案背景 軟體系統的名稱是停車場管理系統。我們開發的系統將幫助停車場管理員和物業公司更加智慧化的管理停車場,省去很多的人力物力。方便隨時查詢停車場的情況,也有助於車主方便隨時查詢附近可以停車的停車場。 1.1.1使用者基本情況介紹 角色1:停車場管理員 檢視剩餘車位數量,
基於WEB的教師資訊管理系統,畢業設計java
**基於WEB的教師資訊管理系統,畢業設計java** 基於WEB的教師資訊管理系統mysql資料庫建立語句 基於WEB的教師資訊管理系統oracle資料庫建立語句 基於WEB的教師資訊管理系統sqlserver資料庫建立語句 基於WEB的教師資訊管理系統sprin
基於WEB的學生資訊管理系統,java畢業設計專案
**基於WEB的學生資訊管理系統,java畢業設計專案** 基於WEB的學生資訊管理系統mysql資料庫建立語句 基於WEB的學生資訊管理系統oracle資料庫建立語句 基於WEB的學生資訊管理系統sqlserver資料庫建立語句 基於WEB的學生資訊管理系統spr
請問Python適合用來開發一個基於B/S的資訊管理系統嗎?
肯定合適。OpenERP用的就是python。以下說的c/c++、java、python程式設計師,具有相同的開發能力、熟練程度。我們來做個比較: 1.開發時間,肯定比java、c/c++要快;2.安全性,看總體設計;3.單個程式設計師的費用,肯定要比java、c/
JSP小專案實戰---客戶資訊管理系統
function add(){ var url = path+"/jsps/input.jsp"; //var vReturnValue = window.showModalDialog(url,"","dialogWidth:400px;dialogHeight:200px
基於QT的學生資訊管理系統開發
1.首先建立工程檔案,在建立過程中新增主視窗類以及對應的ui檔案。 Mainwindow.ui的介面如下: 下面分別實現上圖中4個按鈕的功能。我們用MYSQL來對學生的註冊資訊進行儲存。 2.編寫與MYSQL相關程式 建立類過程如下: #ifndef MYSQL_H
project--客戶資訊管理系統
軟體設計分析 該軟體有三個模組組成:Customer CustomerList CustomerView Customer 為實體物件,用來封裝客戶資訊; CustomerList 為 Customer 物件的管理模組,內部用陣列管理一組Customer 物件,並提供相應的
《超市管理系統的面向物件分析》論文筆記
一、基本資訊 標題:超市管理系統的面向物件分析 時間:2016 來源:科技展望 關鍵詞:超市管理系統; 用例圖; 面向物件; 二、研究內容 1.主要內容: 基於中小型超市的特點:規模較小,庫存量不大。用面向物件的方法對超
*學生管理系統java面向物件版本
學生管理系統java面向物件版本 鑑於初學者都在用學生管理系統練習業務邏輯,本人也提供一個java寫的面向物件版本 技術能力有限,僅供新手學習參考。大神略過。 +++++++++學生類+++++++++++++ package studentmanag
Python-停車管理系統(面向物件)
這個管理系統可實現車輛入庫,按車牌號或者車型查詢車輛,修改車輛資訊,車輛出庫時實現計費,按車型統計車輛數和顯示全部車輛資訊的功能 (1)定義車輛類,屬性有車牌號、顏色、車型(小汽車、小卡、中卡和大卡)、到達的時間和離開的時間等資訊和相關的對屬性做操作的行為。 (
一步一步實現web程式資訊管理系統之一----登陸介面實現
一步一步實現web程式資訊管理系統 在web程式中特別是資訊管理系統,登陸功能必須有而且特別重要。每一個學習程式開發或以後工作中,都會遇到實現登陸功能的需求。而登陸功能最終提供給客戶或展現給客戶的最基本的就是2個文字框一個按鈕使用者名稱與密碼,外加一個登陸按鈕。本篇記錄一下登陸功能的前端介面的實現。 1.
基於C語言的課程資訊管理系統
一、 設計內容及要求 每門課程包含以下資訊項:課程編號,課程名稱,課程性質,學時,授課學時,實驗或上機學時,學分,開課學期。系統的主要功能包括: 建立課程資訊檔案,根據提示輸入課程的各項資訊,然後將課程資訊儲存到一個檔案中。 增加課程資訊,在原有課程資訊檔案的基礎上增加新的課程資
文獻綜述二十:基於UML技術的客戶關係管理系統實現
一、基本資訊 標題:基於UML技術的客戶關係管理系統實現 時間:2015 出版源:電子設計工程 檔案分類:uml技術的研究 二、研究背景 設計出可應用與銀行和儲戶之間溝通的客戶關係管理系統,從而實現對客戶管理的資訊化 ,提升了企業對客戶維護的能力。 三、具體內容 文獻的主要內容分為五個
基於springMVC、Java web、Mysql的B/S人口資訊管理系統(二)
經過不斷努力,環境基本搭建好了,由於接近1年多時間沒有碰Eclipse好多都忘記了,進度可能會有點慢。以及第一次接觸SpringMVC好多東西都不清楚,不過應該問題不大。鑑於網路的問題,現在還在下載MySQL,大致講一下環境已經已經做了的工作 。 JDK1.
基於java的現代物流資訊管理系統開發,javaweb畢業設計
**基於java的現代物流資訊管理系統開發,javaweb畢業設計** 基於java的現代物流資訊管理系統開發mysql資料庫建立語句 基於java的現代物流資訊管理系統開發oracle資料庫建立語句 基於java的現代物流資訊管理系統開發sqlserver資料庫建立語句
[原始碼和文件分享]基於JSP和SQL SERVER資料庫實現的圖書資訊管理系統
一、功能概述 圖書資訊管理系統是建立在資訊科技基礎上,以系統化的管理思想,為普通讀者和管理員提供圖書檢視,增加,刪除,修改圖書資訊功能的平臺,。它整合了回到首頁、普通使用者註冊,使用者登入,圖書基本資訊檢視,圖書的增加,圖書的刪除,和圖書的修改七個功能模組。圖書資訊管理系統以圖書資訊的管理為核心
JAVAEE案例: 基於javaweb、mysql的 學生資訊管理系統
此案例是基於JavaEE、mysql技術的學生資訊管理系統。 為了先對案例有個清楚的認識,這裡先貼上執行結果截圖: 1、索引頁面,進入系統。 2、主頁面: 3、點選新增: 4、刪除李琦琦一欄: 5、修改馬衍碩: 一、對資料庫的封裝: 在資料庫庫部分,通