14 7 新增職工

2021-10-08 02:35:22 字數 1626 閱讀 1726

1、功能分析

用乙個陣列去儲存所有使用者新增的職工,但我們知道,陣列裡只能存放相同型別的元素。多型技術正好滿足的這一需求。

例如,建立普通員工時可以這樣寫:

worker * worker =

new employee;

建立經理時可以這樣寫:

worker * worker =

new manager;

這樣,這個陣列裡儲存的其實都是worker *型別的資料了。

再分析一下,這個陣列應該建立再堆區,因為堆區的資料時由程式設計師手動釋放,這樣不會像區域性變數那樣乙個函式呼叫完就釋放掉了,而在整個程式執行期間,我們都可以隨時隨地使用這個陣列。

因為陣列裡儲存的資料型別是 worker * ,所以在定義這個陣列時要這樣定義:

worker *

* worker=

new worker*[32

];

陣列的長度可以先設定乙個值,當新增的職工數超過了初始值,可以再另開闢一段更大空間,重新記錄職工資訊。

2、在workermanager類中新增屬性並在建構函式中初始化:

#pragma once

#include

"worker.h"

using

namespace std;

class

workermanager

;

workermanager::

workermanager()

3、在workermanager.h中新增成員函式
//新增新職工

void

addemp()

;

4、在workermanager.cpp中實現成員函式
//新增職工

void workermanager::

addemp()

}//開始新增新資料

for(

int i =

0; i < addnum; i++)if

(worker !=

null)}

newspace[m_empnum + i]

= worker;

}delete

this

->m_emparray;

//更改新空間指向

this

->m_emparray = newspace;

m_empnum = newsize;

cout <<

"成功新增了"

<< addnum <<

"名新職工!"

<< endl;;}

else

}

這個功能較為複雜,仔細分析**,看看具體的實現原理。目前還沒涉及到檔案互動。

5、析構釋放資源

workermanager::

~workermanager()

}delete

this

->m_emparray;

this

->m_emparray =

null

;}

職工管理系統

時隔一年,找到了去年的課程設計,給學弟學妹白嫖了 include include include include struct worker 節點型別宣告 work 1000 int n 檔案讀寫模組 void read 讀入資料 fscanf fp,d n n while i n fclose f...

C 程式設計 147 執行緒基礎

啟動執行緒 threadstart ts newthreadstart method 建立委託例項 thread t newthread ts 建立執行緒 t.start 啟動執行緒 執行緒休眠 t.suspend 執行緒掛起 thread.sleep 1000 執行緒休眠 t.resume 執行緒...

ACWing 147 資料備份

選取k對大樓,使得每對距離之和最小,並且乙個大樓只會被鏈結一次 當k 1時肯定就是貪心的選取距離最小的那兩棟。當k 2時我們是否還要留著距離最小的那一對呢?如果沒有選擇距離最小的那一對,那肯定要選擇最小那一對的左右兩對,否則就可以將其中一對換成最小的那對,那樣會更小。當k 2時同理如果不選擇中間的就...