1. 程式人生 > >JAVA基礎(一)&一個小專案的解決思想

JAVA基礎(一)&一個小專案的解決思想

本週我們對java基礎知識進行復習,首先把一些重要內容記錄下來:

 1.基本常識類:jdk安裝及環境配置;
                           註釋(單行、多行、文件)的分類及使用;
                           識別符號的命名規範;
                           表示式&語句塊;
                           java程式的結構;
  2.基礎知識類:資料型別(基本資料型別:4類8種,引用型別);
                          運算子;
                          變數(成員、區域性);
                          構造器;
                          流程控制(順序、分支、迴圈);
                          陣列(二維陣列、ArrayList:動態陣列,複合型陣列);
                          記憶體分配的具體過程;
                          訪問許可權符;
   3.核心知識類:面向物件的思維,面向物件程式設計(OOP);
                           類之間的關係(依賴、關聯、組合、聚合、繼承);

                           一個專案的設計模式(可分為三層:1.屬性類2.操作類3.介面)。

易忽略的點:流程控制中的迴圈除for,while, do while外,還包含forEach與遞迴。

一個小專案的解決思想:

  就拿用JAVA模擬一個員工管理系統來說,我們對此進行分析:

  員工管理系統主要功能便是對員工進行管理,該系統的管理物件是員工,還有具體操作(核心程式碼)以及操作介面,因此,將此分為三類:

1.員工類:包括員工屬性及get和set方法;

2.操作類:包括新增、刪除、查詢等方法;

3.介面類:由於是在控制檯輸出,因此將此單獨寫一類。

以下是程式碼:

/**
 * 員工屬性類
 * @author NIUXUYUAN
 *
 */
public class EmployeeNature {

	/**
	 * 工號
	 */
	private int id;
	/**
	 * 姓名
	 */
	private String name;
	/**
	 * 性別
	 */
	private String sex;
	/**
	 * 職位
	 */
	private String position;
	/**
	 * 月薪
	 */
	private double sal;
	
	public EmployeeNature(int id, String name, String sex, String position, double sal) {
		super();
		this.id = id;
		this.name = name;
		this.sex = sex;
		this.position = position;
		this.sal = sal;
	}
	
	public EmployeeNature() {
	}

	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 String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public String getPosition() {
		return position;
	}

	public void setPosition(String position) {
		this.position = position;
	}

	public double getSal() {
		return sal;
	}

	public void setSal(double sal) {
		this.sal = sal;
	}
	
	public void showInfo() {
		System.out.println(id+" "+name+" "+sex+" "+position+" "+sal);
	}
	
}

public class EmployeeManage {
	
	/**
	 * 員工操作
	 */
	private ArrayList<EmployeeNature> list = new ArrayList<EmployeeNature>();

	/**
	 * 員工入職(新增)
	 * @param id
	 * @param name
	 * @param sex
	 * @param position
	 * @param sal
	 */
	public void add(EmployeeNature en ) {
		list.add(en);
	}
	
	/**
	 * 調整相應工號員工月薪
	 * @param position
	 * @param newSal
	 */
	public void updateSal(int id,double newSal) {
		for(EmployeeNature e:list) {
			if(e.getId() == id) {
				e.setSal(newSal);
			}
		}
	}
	
	/**
	 * 顯示所有員工
	 */
	public void showAll() {
		for(EmployeeNature e:list) {		
			e.showInfo();
		}
	}
	
	/**
	 * 根據員工的工號顯示員工資訊
	 * @param id
	 */
	public void showAStaff(int id) {
		for(EmployeeNature e:list) {
			if(e.getId() == id) {			
				e.showInfo();
			}
		}
	}
	
	/**
	 * 刪除指定工號的員工
	 * @param id
	 */
	public void del(int id) {
		int index = -1;
		for(int i = 0;i < list.size();i++) {
			if(list.get(i).getId() == id) {
				index = i;
			}
		}
		if(index != -1) {
		list.remove(index);
		}
	}
	
	/**
	 * 統計一個月發放的總工資
	 */
	public void sumSal() {
		double sum = 0;
		for(EmployeeNature e:list) {
			sum += e.getSal();
		}
		System.out.println("一個月發放的總工資為:"+sum);
	}
	
	
}
import java.util.Scanner;
/**
 * 主介面
 * @author NIUXUYUAN
 *
 */
public class EmployTest {
	
	EmployeeManage em = new EmployeeManage();

	public void menu() {
		p("***********員工管理系統**********");
		p("***********【1】員工入職(新增)**********");
		p("***********【2】調整員工的月薪**********");
		p("***********【3】查詢所有員工**********");
		p("***********【4】查詢員工**********");
		p("***********【5】員工離職**********");
		p("***********【6】統計一個月發放的總工資**********");
		p("***********【0】退出**********");
		command();
	}

	private void command() {
		p("請輸入你的選擇:");
		Scanner sc = new Scanner(System.in);
		int op = sc.nextInt();
		switch(op) {
		case 1:
			addEmp();
			break;
		case 2:
			changeSal();
			break;
		case 3:
			findAll();
			break;
		case 4:
			showAEmp();
			break;
		case 5:
			delEmp();
			break;
		case 6:
			countSal();
			break;
		case 0:
			p("感謝您使用本系統,再見!");
			System.exit(0);
			break;
		   default:
			   System.err.println("輸入錯誤!請重新輸入:");
			    command();
			    break;
		}
		
	}
	
	private void countSal() {
		em.sumSal();
	}

	private void delEmp() {
		p("工號:");
		Scanner sc = new Scanner(System.in);
		int id = sc.nextInt();
		em.del(id);
		menu();
	}

	private void showAEmp() {
		p("工號:");
		Scanner sc = new Scanner(System.in);
		int id = sc.nextInt();
		em.showAStaff(id);
		menu();
	}

	private void findAll() {
		em.showAll();
	}

	private void changeSal() {
		p("工號:");
		Scanner sc = new Scanner(System.in);
		int id = sc.nextInt();
		p("月薪:");
		double sal = sc.nextDouble();
		em.updateSal(id, sal);
		p("員工"+id+"的新工資為:"+sal);
		menu();
	}

	public void p(String s) {
		System.out.println(s);
	}
	private void addEmp() {
		p("工號:");
		Scanner sc = new Scanner(System.in);
		int id = sc.nextInt();
		p("姓名:");
		String name = sc.next();
		p("性別:");
		String sex = sc.next();
		p("職位:");
		String position = sc.next();
		p("月薪:");
		double sal = sc.nextDouble();
		EmployeeNature en = new EmployeeNature(id, name, sex, position, sal);
		em.add(en);
		p("新增成功!");
		menu();
		
	}

	public static void main(String[] args) {
		
		new EmployTest().menu();

	}

}


相關推薦

JAVA基礎&一個專案解決思想

本週我們對java基礎知識進行復習,首先把一些重要內容記錄下來: 1.基本常識類:jdk安裝及環境配置;                           註釋(單行、多行、文件)的分類及使用;                           識別符號的命名規範;   

Java基礎異常處理關鍵字:try catch finally throw throws

cut main 5.1 模型 指針 str control 情況 實例   嗨咯,大家晚上好,我的博客首篇開始了 ,我們一起加油吧! 都說java 語言是非常健壯性 如:垃圾回收機制、內存模型、異常處理,強類型轉換、跨平臺,等等,使得Java語言的受到青睞。今天我們先來聊

java學習——java基礎之概念解析

userinfo shuf cdn pdm shu href ember sig lower 鵲拙崩系06凳q毫乙6http://docstore.docin.com/sina_6341933819 6j50uk佬詼4wn刮掖http://shequ.docin.com/

java基礎

any 1.8 安全性 安裝 普通 java語言 針對 編譯 關鍵字 Java語言概述   A:Java語言發展史     詹姆斯·高斯林(James Gosling)1977年獲得了加拿大卡爾加裏大學計算機科學學士學位,1983年獲得了美國卡內基梅隆大學計算機科學博士學位

JAVA基礎——代理模式

throws tle ddb 加載 dynamic pro return 描述 類加載 實現java代理一般分為靜態代理和動態代理(jdk代理和cglib代理) 代理模式 簡單的說就是對原有的業務進行代理,外界通過代理訪問真實對象,代理類似現在的中介機構,房產中介就是一個

Java基礎---方法的調用

沒有 使用方法 註意事項 nbsp pri 代碼 方法名 變量 三種 接上一篇方法的自定義,此篇簡介一下如何去調用一個方法。。。 方法的主要目的:實現代碼的復用 1.方法調用的格式:  方法名(參數); 註:如果方法需要參數(即所調用的方法的參數列表中存在參數),此時必

Java基礎---方法的自定義

自動類型轉換 數據 變量名 位置 小括號 ret 結束 打印 eth 方法:(Method) 1.概念:就是一段擁有特定功能的程序(在其他編程語言中稱為“函數”:Function) 2.特點:在方法名後面有小括號() 自定義方法: 1.位置: (1)類體中:即類名後的{

java基礎 for / while / do...while迴圈語句

開始學習jva基礎,做此筆記 三種迴圈的區別: 對於知道明確區間的需求,比如輸出1-10之間的奇數使用for迴圈 不明確區間的使用while 使用for迴圈,迴圈一結束變數就停止佔用記憶體 初始化變數如果在迴圈外還需要用建議用while do while迴

Java基礎方法

一.什麼是方法: 1.Java中的方法是用來解決一類問題的程式碼的有序組合,是一個功能模組在這裡插入程式碼片 2.包含在類或者物件中 3.在程式中被建立,在其他地方被引用 二.方法的定義: 方法包含一個方法頭部和方法體:名字第一個單詞以小寫字母作為開頭,後面的單詞則用大寫字母開頭寫

Java基礎Java本地方法

1、Java本地方法概念 Java中的方法分為兩種:Java方法和本地方法。 Java方法由Java語言編寫,編譯成位元組碼,儲存在class檔案中。 本地方法由其他語言編寫,編譯成與處理器相關的機器程式碼,本地方法儲存在動態連結庫(如ddl中)。 本地方法的存在的意義,主要在於Ja

Java面試題之Java基礎

1、Java的幾種基本型別? byte、short、int、long、float、double、char、boolean; 2、什麼是字串常量池?String為什麼是不可變的? 字串常量池即儲存在Java堆記憶體中的字串池;字串的分配會耗費高昂的時間與空間代價。JVM為

java基礎構造方法及其作用

一、搞清楚這幾個問題 1、為啥寫 2、不寫呢 3、寫帶引數的 二、簡單回答 構造方法作用就是對類進行初始化。 如果你沒有定議任何構造方法的形式,程式會為你取一個不帶任何引數的建構函式,那麼你產生類的對像時只能用不帶引數的方法。 三、進一步說明 在JAVA中如果不寫構造方法的話,會

java基礎:我對java的三個環境變數的簡單理解和配置

首先說說java的三個環境變數:java_home,classpath,path java_home:jdk的安裝路徑【你一層一層點開安裝路徑,直到當前目錄有一個bin目錄,然後在位址列裡面右鍵單擊複製地址就是jdk的安裝路徑(eg:D:\Java\jdk1.8.0_65)】,沒有其實也可以,在用到jdk的

Java基礎——JVM、JRE、JDK、Javac等

Life is like a box of chocolates,you never konw what you're going to get. 在大學的時候已經學習過java,但是對java瞭解的越多越發現自己越來越不瞭解java。這有點像自以為擁有了整

java基礎java語法基礎

前言 上個月本來打算跳槽去帝都,面了幾家公司,已經拿到offer,但是因為畢業設計的事情沒有離職成功,在面試過程中發現了自身的許多不足,尤其是java基礎這方面,所以打算把最近整理的一些java基礎知識(大部分來自畢向東老師的總結),放到部落格中,方便以後查閱

Java基礎----------Java基本資料型別ava

1.說明 Java資料型別分為2類:基本資料型別和引用資料型別。 此圖根據mzzcy部落格裡的圖,重新畫的。 2.基本資料型別 借鑑了Ideality_hunter的部落格。 此圖取自chancaoer的部落格。 2.1.整數型(byte、short、int、lo

JAVA基礎Java中的異常 (轉)

原文地址:https://mp.weixin.qq.com/s/YJlDgcjBRTSq216crd1-SQ

JAVA基礎過載和複寫

最近開始研究Android的設計模式,主要是感覺在已經能完成大部分功能型程式碼後,感覺到了框架結構的重要性,可是在研究過程中又發現了另一個問題。自己的JAVA基礎似乎並不是太好,很多東西都停留在表面,這樣就致使自己研究設計模式遇到了很大問題。就像地基沒有打好,往

BAT面試題集錦——Java基礎

一、java面試題 熟練掌握java是很關鍵的,大公司不僅僅要求你會使用幾個api,更多的是要你熟悉原始碼實現原理,甚至要你知道有哪些不足,怎麼改進,還有一些java有關的一些演算法,設計模式等等。 (一) java基礎面試知識點 java中==和e

java基礎

.class strong 創建 命令 語言 public 對象 企業 tex java基礎(一章) 1、 java是一種面向對象的高級編程語言。 2、 java包括: javase(java基礎)