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基礎)