@圖靈不吃蘋果 #C++ 人員管理
@圖靈不吃蘋果
C++ 人員管理(帶註釋)
設計某小型公司的 employee(人員)類
1、類
1)employee 類:
基本資訊:編號、姓名、性別、出生日期、職位等;
出生日期使用自定義的 Date(日期)類;
其中:基本資訊為 private 屬性,成員函式為public 屬性;
多個建構函式:預設建構函式、帶引數的建構函式、帶預設引數的建構函式;
可以從外部訪問類成員的友員函式;
2)Date 類:成員變數:年、月、日成員函式:SetYear(int year)、SetMonth(int month)、SetDay(int day)GetYear()、GetMonth()、GetDay()
2、基本功能:
1)職工資訊的錄入;
2)職工資訊的顯示;
3)用物件陣列儲存已輸入的職工物件;
4)可以修改人員的基本資訊,如:姓名、職位等;
5)可以通過編號或姓名進行人員查詢;
[實驗提示]
1、注意帶引數的建構函式和帶預設引數的建構函式的宣告與定義;
2、定義employee 類的成員變數時,應注意變數型別的宣告;
3、在查詢時,通過申明成employee 類的友元函式來訪問類的成員變數;
[測試資料]
1、編號:10001 姓名:jack 出生日期:80 年11 月1 日 職位:普通
2、編號:10002 姓名:andy 出生日期:75 年1 月9 日 職位:經理
3、編號:10003 姓名:alex 出生日期:81 年4 月3 日 職位:祕書
4、編號:10005 姓名:lili 出生日期:82 年10 月1 日 職位:技師
程式碼部分
<標頭檔案employee.>
本來想設計一下連結串列,但是後來老是出問題…就懶得弄了
#pragma once
#include <ostream>
using namespace std;
class Date {
public:
void setYear(int ye);
void setMonth(int mon);
void setDay(int da);
int getYear();
int getMonth();
int getDay();
friend ostream& operator<<(ostream& out, Date&a);
private:
int year;
int month;
int day;
};
class employee {
public:
employee();
employee(int i);
void setID(int i);
void setName(string n);
void setBirth(Date b);
void setSexual(char s);
void setJob(string j);
//employee* next;
// void setNext(employee* next);
// employee* getNext();
void print();
private:
int id;
string name;
Date birth;
char sexual;
string job;
friend int findID(employee& p,int i);
friend int findName(employee& p, string s);
};
/*class List {
public:
void Input(employee* s);
List();
void bianli();
private:
employee* head;
};
*/
#pragma once
<employee.cpp>
#include "employee.h"
#include <string.h>
#include <stdlib.h>
#include <iostream>
#include <chrono> //時間庫函式
void Date::setYear(int ye)
{
this->year = ye;
}
void Date::setMonth(int mon)
{
this->month = mon;
}
void Date::setDay(int da)
{
this->day = da;
}
int Date::getYear()
{
return this->year;
}
int Date::getMonth()
{
return this->month;
}
int Date::getDay()
{
return this->day;
}
employee::employee()
{
id = 0;
sexual = 'm';
cout << "預設引數構造完成" << endl;
}
employee::employee(int i=10)
{
this->id = i;
this->name = "zhang";
this->sexual = 'm';
this->job = "員工";
cout << "帶預設引數的函式構造完成" << endl;
}
void employee::setID(int i)
{
this->id = i;
}
void employee::setName(string n)
{
this->name = n;
}
void employee::setBirth(Date b)
{
this->birth = b;
}
void employee::setSexual(char s)
{
this->sexual = s;
}
void employee::setJob(string j)
{
this->job = j;
}
/*void employee::setNext(employee* n)
{
next = n;
}
employee* employee::getNext()
{
return next;
}
*/
void employee::print()
{
cout << "編號: " << id << " 姓名: " << name << " 性別: " << sexual << endl;
cout << "出生日期: "<<birth;
cout <<" 職位 : " << job << endl;
}
ostream& operator<<(ostream& out, Date& a)
{
out << a.year << "年" << a.month << "月" << a.day << "日" ;
return out;
// TODO: 在此處插入 return 語句
}
int findID(employee& p,int i)
{
if (p.id == i) { return 0; }
else return -1;
}
int findName(employee& p, string s)
{
if (p.name == s)return 0;
else return -1;
}
/*ostream& operator<<(ostream& out, Date a)
{
out << Date::year << "年" << month << "月" << day << "日" << endl;
return out;
// TODO: 在此處插入 return 語句
}*/
/*void List::Input(employee* s)
{
employee* p = head;
while (p->getNext() != NULL)
{
p = p->getNext();
}
p = p->setNext(s);
}
List::List()
{
head = new employee;
if (NULL == head)
{
cout << "NULL list" << endl;
}
}
void List::bianli()
{
employee* p = head;
while (p->getNext() != NULL)
{
p = p->getNext();
p->print();
}
}
*/
<main.cpp>
//本來想通過構造List將員工串起來
//但是發現這樣可能會報錯 而且修改太繁瑣 暫且依舊用陣列的形式儲存吧
//其中註釋掉的程式碼都是 當時準備用連結串列儲存 結果發現不行 就註釋了...
//員工的生日用了Date類
//初始化員工資訊的時候不用輸入id
//自動根據序列號生成id
//Date類裡重新構造了輸出流 讓生日的輸出可以更加方便簡潔
//修改員工資訊中可以通過id 或者 姓名進行定位
//findid和findname都用了友元函式
//友元函式感覺在程式裡理解就像是給外部程式一個介面
//可以不用通過類進行呼叫函式
//使用了一個迴圈
//同樣的為了體現預設建構函式完成 使用了列印“構造完成”這種字樣 來確認
#include <iostream>
#include "employee.h"
using namespace std;
int main()
{
//List mylist;
int num, idd;
int nian, yue, ri;
int swi, loc=-1;
string s;
char x;
Date d;
cout << "請輸入員工數:";
cin >> num;
employee em[10];
for (int i = 0; i < num; i++) {
//employee* p = new employee;
cout << "請輸入姓名:";
cin >> s;
em[i].setName(s);
cout << "請輸入性別:";
cin >> x;
//p->setSexual(x);
em[i].setSexual(x);
cout << "請輸入出生年/月/日:";
cin >> nian >> yue >> ri;
d.setYear(nian);
d.setMonth(yue);
d.setDay(ri);
em[i].setBirth(d);
cout << "請輸入職位:";
cin >> s;
// p->setJob(s);
em[i].setJob(s);
idd = 10000 + i + 1;
//p->setID(idd);
em[i].setID(idd);
//mylist.Input(p);
em[i].print();
}
cout << "-------------------------------------" << endl;
for (int i = 0; i < num; i++)
{
em[i].print();
}
cout << "-------------------------------------" << endl;
while (1)
{
cout << "要通過什麼查詢:1.姓名 2.編號 (選項0退出)" << endl;
cin >> swi;
switch (swi) {
case 1: {
cout << "請輸入要修改的成員姓名:";
cin >> s;
loc = -1;
for (int i = 0; i < num; i++)
{
if ((findName(em[i], s)) == 0) { loc = i; break; }
}
if (loc < 0)
{
cout << "沒有找到這個名字;" << endl;
}
break;
}
case 2: {
cout << "請輸入要修改的成員編號:";
cin >> idd;
loc = -1;
for (int i = 0; i < num; i++)
{
if ((findID(em[i], idd)) == 0) { loc = i; break; }
}
if (loc < 0) {
cout << "沒有找到這個id;" << endl;
}
break;
}
case 0: {
cout << "-------------------------------------" << endl;
for (int i = 0; i < num; i++)
{
em[i].print();
}
cout << "-------------------------------------" << endl;
//mylist.bianli();
return 0;
}
}
if (loc >=0)
{
cout << "要修改什麼:1.姓名;2.職位;3.生日;4.ID " << endl;
cin >> swi;
switch (swi)
{
case 1: {
cout << "輸入修改後的姓名:";
cin >> s;
em[loc].setName(s);
break;
}
case 2:
{
cout << "輸入修改後的職位:";
cin >> s;
em[loc].setJob(s);
break;
}
case 3:
{
cout << "輸入修改後的出生日期 年/月/日:";
cin >>nian>>yue>>ri ;
d.setYear(nian);
d.setMonth(yue);
d.setDay(ri);
em[loc].setBirth(d);
break;
}
case 4:
{
cout << "輸入修改後的ID:";
cin >> idd;
em[loc].setID(idd);
break;
}
default:break;
}
}
}
}
相關文章
- 資料從業人員圖靈參考圖書一覽表圖靈
- 圖靈社群新會員圖靈
- 我國靈活就業人員已達2億人就業
- 圖靈社群會員註冊協議圖靈協議
- 1.1.5 應用管理人員
- 蘋果應用開發人員的成功之道蘋果
- 圖靈機器人 python 試玩圖靈機器人Python
- C++如何開啟“開發人員命令提示”C++
- 亞馬遜使用機器人管理快遞員亞馬遜機器人
- Python 實現圖靈微信機器人Python圖靈機器人
- Rust 與 C++:現代開發人員的困境RustC++
- 軟體測試人員面試會遇到哪些靈魂提問?面試
- 公司銷售管理系統:公司銷售人員如何管理?
- RailsGirl若水:從學員妹子到Ruby教練(圖靈訪談)AI圖靈
- Johanna Rothman:專案管理之道(圖靈訪談)專案管理圖靈
- 蘋果裁撤自動駕駛專案員工200餘人蘋果自動駕駛
- 開發人員建立圖示工具:AssetsGen for MacMac
- 來到圖靈,喜歡圖靈圖靈
- 學生就業管理服務系統人員求職管理軟體就業求職
- "走出專案管理的泥沼”之“人員管理”話題之八專案管理
- 開發人員 vs 測試人員
- 開發人員的生產力管理框架:SPACE框架
- Discuz非創始人管理員程式碼執行
- 轉載:技術人員的管理思維觀
- 遠端伺服器管理:IT人員的魔法手杖伺服器
- 管理人員的開發規劃(轉載)
- 關於開發人員申請蘋果賬號相關事宜蘋果
- 讓高階管理人員明白專案管理的價值(轉)專案管理
- “走出專案管理的泥沼”之“人員管理”話題之七(轉)專案管理
- “走出專案管理的泥沼”之“人員管理”話題之六(轉)專案管理
- “走出專案管理的泥沼”之“人員管理”話題之四(轉)專案管理
- “走出專案管理的泥沼”之“人員管理”話題之三(轉)專案管理
- “走出專案管理的泥沼”之“人員管理”話題之一(轉)專案管理
- 用圖靈機器人實現的兩個機器人對話聊天圖靈機器人
- 運維人員春節放假如何管理伺服器?運維伺服器
- 運維人員如何高效管理千臺伺服器運維伺服器
- 運營人員使用什麼專案管理軟體?專案管理
- 企業管理銷售人員的方法和技巧分享