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時同理如果不選擇中間的就...